自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 Netty线程模型

学习B站的视频的笔记 Netty线程模型是基于主从Reactor多线程模式做了一定的改进得来的 ●Netty抽象出两组线程池,BossGroup专门负责接收客户端的连接,WorkerGroup专门负责网络的读写 ●BossGroup和WorkerGroup类型的本质都是NioEventLoopGroup类型。 ●NioEventLoopGroup相当于一个线程管理器(类似于ExecutorServevice),它下面维护很多个NioEventLoop线程。 ●在初始化这两个Group线程组时,默认会在每个

2021-03-21 14:28:41 111 1

原创 Reactor模式笔记

目前存在的线程模型主要有: ●传统阻塞I/O服务模型 ●Reactor模式 传统阻塞I/O服务模型 模型特点: ●采用阻塞IO模式获取输入的数据 ●每个链接都需要独立的线程完成数据的输入,业务处理、数据返回。 存在的问题: ●当并发数很大,就会创建大量的线程,占用很大系统资源,所以它是没办法处理高并发的。 ●连接创建后,如果当前线程暂时没有数据可读,该线程会阻塞在read操作,造成线程资源浪费。 Reactor模式 Reactor 的叫法: 1. 反应器模式 2. 分发者模式(Dispatcher) 3.

2021-03-21 13:02:52 122

原创 线程小结

Java基础复习-线程创建线程的方式继承Thread类实现Runnable()接口实现Callable()接口使用线程池线程的优先级线程的生命周期线程的同步同步代码块同步方法Lock锁线程通信涉及的三个方法 创建线程的方式 继承Thread类 /*通过继承Thread类的方式创建线程 */ //1.创建一个子类继承Thread类 class Thread1 extends Thread{ //2.重写Thread类的run() @Override public void run()

2021-03-16 20:30:05 59

原创 HashMap小结

最近看了一下源码,怕忘了,来总结一下 底层数据结构 哈希值,键值对,下一个结点 final int hash; final K key; V value; Node<K,V> next; 扰动函数,它的目的是让key的Hash值高16位参与路由运算,重新Hash后得到的结果与高16位也有关系,从而减少碰撞。 static final int hash(Object key) { int h;

2021-03-16 20:27:55 45

原创 使用注解的方式来自动注册服务

在实现的RPC框架中,如果使用传统的方式来进行通信的话,那么服务启动端需要先手动创建一个提供服务的类的实例 HelloService helloService = new HelloServiceImpl(); 虽然在实现过程中只有这一个服务,好像并不会带来太大的问题,但如果有一堆服务对象的话,那有几个就得手动创建几个,这样肯定是不现实的,所以给框架加一个自动注册服务的方式是很有必要的。采用注解的方式来解决这个问题则是个很好的选择。 服务端肯定要有一个注解,当我们启动服务端后,原本是创建一个服务类的实例,

2021-03-12 22:56:48 403

原创 RPC框架引入Netty

之前实现了一个基于Socket传输的简单的框架,现在可以引入Netty进行传输。 将之前的Client和Server抽象成接口,方便以不同的方式来传输时都可以通用 public interface RpcClient { Object sendRequest(RpcRequest rpcRequest); } public interface RpcServer { void start(int port); } 自定义一个序列化接口,包括序列化,反序列化,获得序列化器的编号以及根据编号得

2021-03-03 13:27:15 164

原创 集合知识点

List接口 由于数组存储数据时大小定好以后不能改变,所以通常用List代替数组 List中的常用实现类有ArrayList,LinkedList,Vector。 三者都实现了List接口,都存储有序的,可重复的数据 ArrayList是线程不安全的,它的执行效率高,底层使用Object[] elementData存储 LinkedList底层使用双向链表存储。如果需要频繁插入删除,效率比ArrayList高 Vector是线程安全的,执行效率低,底层使用Object[] elementData存储 Ve

2021-02-22 22:45:26 103

原创 实现一个简单的RPC

开始尝试搭建一个RPC框架,先从最简单的写起。 RPC(Remote Procedure Call)远程过程调用,是一个节点请求另一个节点提供的服务。 如何实现呢,很简单,创建服务端和客户端,客户端通过网络传输,告诉服务端需要调用的接口,服务端接收到客户端发送来的请求后,执行这个接口的实现类,然后返回结果。这里直接假设客户端知道服务端的地址了,后面再进行更复杂的实现。 后面的代码主要放关键部分。 照着这个原理,首先要有客户端和服务端都能访问的接口,这个接口主要就是返回一些信息。 public interfa

2021-02-22 17:25:21 184

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除