自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Luffyu的博客

学习笔记

  • 博客(15)
  • 收藏
  • 关注

原创 Netty学习——ChannelHandler、ChannelHandlerPipeline和ChannelHandlerContext

一:关于ChannelHandlerChannelPipeline 提供了ChannelHandler链路的容器,并定义了用于在该链上传播入站和出站事件溜的API。来自《Netty实战》ChannelHandler充当了处理入站 和 出战 数据的应用程序逻辑的容器。例如实现ChannelInBoundHandler接口,可以接收入站事件和数据。二:关于ChannelPipelineChannelPipeline 提供了ChannelHandler链路的容器,并定义了用于在该链上传播入

2020-06-02 17:28:10 216

原创 Netty学习——实现简单的聊天室

一:定义服务端定义服务端的启动代码public static void main(String[] args) throws InterruptedException { //链接监听组 EventLoopGroup boosLoop = new NioEventLoopGroup(1); //工作组 EventLoopGroup workerLoop = new NioEventLoopGroup(8); try {

2020-05-11 20:48:42 211

原创 业务日记——延时队列/延时消费

一、基本定义延时/定时消息是指生产者(producer)发送消息到server后,server并不将消息立即发送给消费者(consumer),而是在producer指定的时间之后送达。二、常用的使用场景任务超时处理。例如 订单系统中,如果某个用户在 30分钟内没有支付,则订单自动进行过期处理任务延时处理。例如订餐系统中,下单成功60s之后 给用户发短信通知定时任务。例如现在通过手机...

2020-05-11 19:58:20 1122

原创 Netty学习—概述和核心组件

一 netty概述1.1 为什么有了NIO还有NettyNIO的缺点JDK 的 NIO 底层由 epoll 实现,该实现饱受诟病的Selector 空轮询 bug 会导致 cpu 飙升 100%NIO的API繁杂,使用麻烦,必须熟练掌握Selector、Channel、Buffer等相关API。并且需要熟练Java多线程编程和网络编程,才能写出高质量的NIO代码。开发工作量和难度都...

2020-04-23 17:07:29 163

原创 Netty学习——Reactor线程模型

一 netty概述1.1 为什么有了NIO还有NettyNIO的缺点JDK 的 NIO 底层由 epoll 实现,该实现饱受诟病的Selector 空轮询 bug 会导致 cpu 飙升 100%NIO的API繁杂,使用麻烦,必须熟练掌握Selector、Channel、Buffer等相关API。并且需要熟练Java多线程编程和网络编程,才能写出高质量的NIO代码。开发工作量和难度都...

2020-04-21 20:49:49 246

原创 Netty学习——NIO的零拷贝

NIO的零拷贝零拷贝 指不是不拷贝,而且不是使用CPU拷贝。带来了更少的数据复制,更新的上下文切换,更少的CPU缓存等详细参考 NIO和零拷贝传统I/O拷贝当执行read() 和 write() 操作的时候 如何使用变化的(切换)当执行read操作的时候,会从 用户态(user context) 切换成 内核态(kernel context)(拷贝)然后通过DMA(Dire...

2020-04-21 14:35:08 234

原创 Netty学习——BIO、NIO、AIO的总结

一、简介Java中的BIO、BIO和AIO都可以理解为 Java对操作系统各种IO模型的封装。无需关心操作系统层面的知识,只需要使用Java的API就可以了.首先需要了解一下几个基本概念:同步和异步,阻塞和非阻塞同步和异步同步:同步是致发起一个调用后,被调用折不处理完请求,比返回异步:表示发起一个调用后,会立即收到被调用者的反馈,表示已经接受到信息来,但是并没有返回结果。此时我们可...

2020-02-24 20:04:03 257

原创 Netty学习——Java中的IO

Java中的IO结构一:Java IO中常用的类主要的类如下:File(文件特征与管理):用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等。InputStream(二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征。OutputStream(二进制格式操作):抽象类。基于字节的输出操作。是所有输出流的父...

2020-02-24 17:39:28 139

原创 《Java并发编程的艺术》——线程池

关于线程池

2020-01-11 15:52:48 154

原创 《Java并发编程的艺术》——HashMap和ConcurrentHashMap

介绍HashMap在并发执行put操作的时候,会引发死循环,是因为在多线程下会导致HashMap的Entry链表形成环形数据结构。

2020-01-07 20:12:07 100

原创 《Java并发编程的艺术》——什么是锁(一)

一 什么是锁锁,是用来控制多个线程访问共享资源的一种方式,一般来说,一个锁能够防止多个线程同时访问共享资源,(但是有些锁也可以允许多个线程的访问贡献资源,例如读写锁)。在Java 1.5之前 只有靠 synchronized关键字来实现锁功能,但是在Java1.5之后,提供了和synchronized有着同样功能的Lock接口是实现锁。同时具有 锁获取和释放的可操作、可中断以及超时获取锁等...

2020-01-03 19:57:04 191

原创 《Java并发编程的艺术》学习 ——线程间的通信

线程之间的通信1 volatile 和 synchronize 关键字java支持多个线程同时访问一个对象或者对象的成员变量。但是每个线程由都可以拥有这个变量的拷贝对象,也就是缓存。这样做的目的是为了加快程序的执行速度。但是在一个多核处理器中,这个变量在各个线程的缓存中可能不是最新的。因为主内存中的值可能已经被其他线程修改了。volatile(点击查看详情描述)关键字volatile可以...

2019-12-10 20:40:11 107

原创 《Java并发编程的艺术》学习 ——多线程基础

什么是线程操作系统启动一个Java程序,就会创建一个Java进程。而一个进程里面有多个java线程。线程是操作系统中的最大调度单元,也是轻量级进程。每个线程都有自己的程序计数器,堆栈和局部变量的属性,并且都能够访问共享的内存变量。为什么要用多线程更多的处理器核心现在处理器的核心数越来越多,比如各种2核、4核、8核处理器。而程序运行过程中能够创建多个线程,但是一个线程在一个时刻只能运行在一...

2019-11-30 16:30:29 152

原创 《Java并发编程的艺术》学习 ——synchornized

一、synchornized 的实现原理和应用1.1 Java的对象头在上面介绍的线程要访问同步方法、代码块的时候,那首先是要获取到锁。那锁到底是什么有存储在什么地方呢?这个和java对象的组成有关。java对象分成3块区域:对象头储存对象的运行时数据(Mark Word)哈希码、锁的状态、持有的锁、GC分代年纪,对象分代年纪、偏向线程ID、偏向时间戳。Mark Word的结构不...

2019-11-30 13:16:06 209

原创 《Java并发编程的艺术》学习 ——volatile

一、关于Volatile简介1.1、关于volatile的定义Java编程语言允许线程访问的共享变量,为了确保共享变量能够被准确和一致性的更新,线程应该确保通过排他锁单独获取到某个变量。如果一个字段被声明成了volatile,那么他在Java线程的内存模型里面就可以被所有线程看到这边变量的一致性。二、Volatile原理2.1、volatile启动了什么作用呢?被volatile修...

2019-11-30 13:15:05 132

空空如也

空空如也

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

TA关注的人

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