Fork me on GitHub

随笔分类 -  响应式系统

摘要:简介 在现代计算机系统中,可以有多个CPU,每个CPU又可以有多核。为了充分利用现代CPU的功能,JAVA中引入了多线程,不同的线程可以同时在不同CPU或者不同CPU核中运行。但是对于JAVA程序猿来说创建多少线程是可以自己控制的,但是线程到底运行在哪个CPU上,则是一个黑盒子,一般来说很难得知。 阅读全文
posted @ 2022-05-11 15:36 flydean 阅读(1554) 评论(2) 推荐(0) 编辑
摘要:简介 什么是callback呢?简单点说callback就是回调通知,当我们需要在某个方法完成之后,或者某个事件触发之后,来通知进行某些特定的任务就需要用到callback了。 最有可能看到callback的语言就是javascript了,基本上在javascript中,callback无处不在。为 阅读全文
posted @ 2022-05-10 14:35 flydean 阅读(978) 评论(0) 推荐(0) 编辑
摘要:简介 前面我们讲到了JNA中JAVA代码和native代码的映射,虽然可以通过TypeMapper来将JAVA中的类型和native中的类型进行映射,但是native中的数据类型都是基础类型,如果native中的数据类型是复杂的struct类型该如何进行映射呢? 不用怕,JNA提供了Structur 阅读全文
posted @ 2022-05-09 16:27 flydean 阅读(1787) 评论(1) 推荐(0) 编辑
摘要:简介 我们知道在native的代码中有很多指针,这些指针在JNA中被映射成为Pointer。除了Pointer之外,JNA还提供了更加强大的Memory类,本文将会一起探讨JNA中的Pointer和Memory的使用。 Pointer Pointer是JNA中引入的类,用来表示native方法中的指 阅读全文
posted @ 2022-05-05 14:07 flydean 阅读(1730) 评论(0) 推荐(0) 编辑
摘要:简介 现在是互联网的世界,大家从各种网站中获取各类资源和信息,通常我们只需要牢记一个网站地址即可,至于这个网站后台的服务器在什么地方,我们并不需要关心。当我们的请求指向这个网址之后,接下来就只需要等待请求被转发到该网址的后端服务器上,得到返回的处理结果即可。 这个将网站名称解析成为服务IP地址的服务 阅读全文
posted @ 2022-04-29 13:51 flydean 阅读(590) 评论(1) 推荐(0) 编辑
摘要:简介 netty中的数据是通过ByteBuf来进行传输的,一个ByteBuf中可能包含多个有意义的数据,这些数据可以被称作frame,也就是说一个ByteBuf中可以包含多个Frame。 对于消息的接收方来说,接收到了ByteBuf,还需要从ByteBuf中解析出有用而数据,那就需要将ByteBuf 阅读全文
posted @ 2022-04-28 13:52 flydean 阅读(714) 评论(0) 推荐(0) 编辑
摘要:简介 netty提供了一个从ByteBuf到用户自定义的message的解码器叫做ByteToMessageDecoder,要使用这个decoder,我们需要继承这个decoder,并实现decode方法,从而在这个方法中实现ByteBuf中的内容到用户自定义message对象的转换。 那么在使用B 阅读全文
posted @ 2022-04-27 13:50 flydean 阅读(627) 评论(0) 推荐(0) 编辑
摘要:简介 我们知道netty中数据传输的核心是ByteBuf,ByteBuf提供了多种数据读写的方法,包括基本类型和byte数组的读写方法。如果要在netty中传输这些数据,那么需要构建ByteBuf,然后调用ByteBuf中对应的方法写入对应的数据,接着套用netty中标准的模板即可使用。 对于byt 阅读全文
posted @ 2022-04-25 13:49 flydean 阅读(1718) 评论(1) 推荐(0) 编辑
摘要:简介 在netty中我们需要传递各种类型的消息,这些message可以是字符串,可以是数组,也可以是自定义的对象。不同的对象之间可能需要互相转换,这样就需要一个可以自由进行转换的转换器,为了统一编码规则和方便用户的扩展,netty提供了一套消息之间进行转换的框架。本文将会讲解这个框架的具体实现。 框 阅读全文
posted @ 2022-04-18 13:56 flydean 阅读(1020) 评论(1) 推荐(0) 编辑
摘要:简介 JNA提供JAVA类型和native类型的映射关系,但是这一种映射关系只是一个大概的映射,我们在实际的应用中还有很多需要注意的事项,本文将会为大家详细讲解在使用类型映射中可能会出现的问题。一起来看看吧。 String 首先是String的映射,JAVA中的String实际上对应的是两种nati 阅读全文
posted @ 2022-04-15 14:43 flydean 阅读(1286) 评论(0) 推荐(0) 编辑
摘要:简介 JNA中有很多种映射,library的映射,函数的映射还有函数参数和返回值的映射,libary和函数的映射比较简单,我们在之前的文章中已经讲解过了,对于类型映射来说,因为JAVA中的类型种类比较多,所以这里我们将JNA的类型映射提取出来单独讲解。 类型映射的本质 我们之前提到在JNA中有两种方 阅读全文
posted @ 2022-04-14 15:12 flydean 阅读(719) 评论(0) 推荐(0) 编辑
摘要:简介 什么是Base64编码呢?在回答这个问题之前,我们需要了解一下计算机中文件的分类,对于计算机来说文件可以分为两类,一类是文本文件,一类是二进制文件。 对于二进制文件来说,其内容是用二进制来表示的,对于人类是不可立马理解的。如果你尝试用文本编辑器打开二进制文件,可能会看到乱码。这是因为二进制文件 阅读全文
posted @ 2022-04-08 18:06 flydean 阅读(606) 评论(0) 推荐(0) 编辑
摘要:简介 之前的文章我们讲到了Socket中的Stream Socket和Datagram Socket,这两种Socket通常分别是基于tcp和udp协议来进行数据的传输。这两种Socket都有一个共同的特点,那就是需要一个IP地址和端口来建立客户端和服务器端的连接。 那么今天我们会来讲解一个特殊的s 阅读全文
posted @ 2022-04-06 15:06 flydean 阅读(1622) 评论(1) 推荐(1) 编辑
摘要:简介 不管是在普通的网络编程中还是在netty中,都经常会提到一个词叫做socket,好像socket是一个神奇的东西,使用socket我们可以建立客户端到服务器端的连接,并且和进行客户端和服务器端的通讯,那么socket到底是什么呢?它有哪些分类呢?一起来看看吧。 Socket是什么 socket 阅读全文
posted @ 2022-03-30 20:39 flydean 阅读(1281) 评论(1) 推荐(1) 编辑
摘要:简介 JAVA是可以调用本地方法的,官方提供的调用方式叫做JNI,全称叫做java native interface。要想使用JNI,我们需要在JAVA代码中定义native方法,然后通过javah命令创建C语言的头文件,接着使用C或者C++语言来实现这个头文件中的方法,编译源代码,最后将编译后的文 阅读全文
posted @ 2022-03-28 20:23 flydean 阅读(4032) 评论(1) 推荐(0) 编辑
摘要:简介 channel是连接客户端和服务器端的桥梁,在netty中我们最常用的就是NIO,一般和NioEventLoopGroup配套使用的就是NioServerSocketChannel和NioSocketChannel,如果是UDP协议,那么配套使用的就是NioDatagramChannel,如果 阅读全文
posted @ 2022-03-16 09:47 flydean 阅读(857) 评论(0) 推荐(0) 编辑
摘要:简介 netty为什么快呢?这是因为netty底层使用了JAVA的NIO技术,并在其基础上进行了性能的优化,虽然netty不是单纯的JAVA nio,但是netty的底层还是基于的是nio技术。 nio是JDK1.4中引入的,用于区别于传统的IO,所以nio也可以称之为new io。 nio的三大核 阅读全文
posted @ 2022-03-09 18:50 flydean 阅读(3376) 评论(0) 推荐(0) 编辑
摘要:简介 在netty中不管是服务器端的ServerBootstrap还是客户端的Bootstrap,在创建的时候都需要在group方法中传入一个EventLoopGroup参数,用来处理所有的ServerChannel和Channel中所有的IO操作和event。 可能有的小伙伴还稍微看了一下nett 阅读全文
posted @ 2022-03-07 21:17 flydean 阅读(904) 评论(1) 推荐(0) 编辑
摘要:简介 netty作为一个异步NIO框架,多线程肯定是它的基础,但是对于netty的实际使用者来说,一般是不需要接触到多线程的,我们只需要按照netty框架规定的流程走下去,自定义handler来处理对应的消息即可。 那么有朋友会问了,作为一个NIO框架,netty的多线程到底体现在什么地方呢?它的底 阅读全文
posted @ 2022-03-04 13:50 flydean 阅读(923) 评论(1) 推荐(1) 编辑
摘要:简介 我们知道ChannelHandler有两个非常重要的子接口,分别是ChannelOutboundHandler和ChannelInboundHandler,基本上这两个handler接口定义了所有channel inbound和outbound的处理逻辑。 不管是ChannelHandler还 阅读全文
posted @ 2022-03-02 14:05 flydean 阅读(2543) 评论(1) 推荐(0) 编辑