02.并发编程之线程的创建

[TOC]前期准备(1)创建Maven项目(2)在pom.xml中引入如下依赖<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <versio...

Java 2022-10-03 PM 938次 0条

01.并发编程之进程与线程概述

[TOC]一、进程和线程1.1 进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的...

Java 2022-10-02 PM 1312次 0条

04.Netty源码分析之启动流程分析

[TOC]一、NIO启动流程Netty底层是NIO,从对NIO的组件封装开始进行分析。本次对Netty的分析主要是在源码中找到下方NIO的方法,来看看netty中对下面的代码是怎样进行处理的//1 netty 中使用 NioEventLoopGroup (简称 nio boss 线程)来封装线程和 selector //可以同时监听多个channel上的读和写事件 Selector sele...

Java 2022-06-24 PM 1474次 0条

03.Netty搭建RPC框架

[TOC]一、概述RPC的目的,让分布式或者微服务系统中不同服务之间的调用(远程调用)像本地调用一样简单,调用者感知不到远程调用的逻辑。二、目的客户端向服务端发送请求,调用HelloService接口中的sayHello方法,最后服务端将结果返回给客户端HelloService接口public interface HelloService { String sayHello(Stri...

Java 2022-06-23 PM 1549次 0条

02.Netty优化之参数调优

[TOC](1) CONNECT_TIMEOUT_MILLIS属于 SocketChannal 的参数用在客户端建立连接时,如果在指定毫秒内无法连接,会抛出 timeout 异常注意:Netty 中不要用成了SO_TIMEOUT 主要用在阻塞 IO,而 Netty 是非阻塞 IO示例import io.netty.bootstrap.Bootstrap; import io.netty.ch...

Java 2022-06-22 PM 1897次 0条

01.Netty优化之扩展序列化算法

[TOC]一、概念序列化最终的目的是为了对象可以跨平台存储和进行网络传输,而一般进行跨平台存储和网络传输的方式就是 IO,而 IO 支持的数据格式就是字节数组。将对象转成字节数组的时候需要制定一种规则,这种规则就是序列化机制。序列化和反序列化概述序列化:就是把对象转化为可传输的字节序列过程;反序列化:就是把字节序列还原为对象的过程。二、常见序列化方式序列化只是定义了拆解对象的具体规则,那这种...

Java 2022-06-21 PM 1514次 0条

07.Netty进阶之聊天室案例

[TOC]一、聊天室业务介绍用户管理接口/** * 用户管理接口 */ public interface UserService { /** * 登录 * @param username 用户名 * @param password 密码 * @return 登录成功返回 true, 否则返回 false */ boole...

Java 2022-06-20 PM 1553次 0条

06.Netty进阶之Sharable注解

[TOC]一、@Sharable概述表示可以将带注释的 ChannelHandler 的同一个实例多次添加到一个或多个 ChannelPipelines 中,而不会出现竞争条件。如果未指定此注解,则每次将其添加到管道时都必须创建一个新的处理程序实例,因为它具有成员变量等非共享状态。(这个是Netty的官方给的说明)简单的理解:@Sharable是用来修饰ChannelHandler的Chan...

Java 2022-06-20 AM 1478次 0条

05.Netty进阶之自定义协议

[TOC]一、网络协议基本要素魔数魔数是通信双方协商的一个暗号,通常采用固定的几个字节表示。魔数的作用是防止任何人随便向服务器的端口上发送数据。服务端在接收到数据时会解析出前几个固定字节的魔数,然后做正确性比对。如果和约定的魔数不匹配,则认为是非法数据,可以直接关闭连接或者采取其他措施以增强系统的安全防护。魔数的思想在压缩算法、Java Class 文件等场景中都有所体现,例如 Class ...

Java 2022-06-16 PM 1618次 0条

04.Netty进阶之协议设计与解析

[TOC]前言小故事很久很久以前,一位私塾先生到一家任教。双方签订了一纸协议:“无鸡鸭亦可无鱼肉亦可白菜豆腐不可少不得束修金”。此后,私塾先生虽然认真教课,但主人家则总是给私塾先生以白菜豆腐为菜,丝毫未见鸡鸭鱼肉的款待。私塾先生先是很不解,可是后来也就想通了:主人把鸡鸭鱼肉的钱都会换为束修金的,也罢。至此双方相安无事。年关将至,一个学年段亦告结束。私塾先生临行时,也不见主人家为他交付束修金,...

Java 2022-06-16 PM 1308次 0条