自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用cxf发布WebService的方法及一些注意事项

使用cxf发布WebService

2024-01-03 17:23:34 483 1

原创 报错:java.lang.IllegalArgumentException

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986。relaxed-query-chars

2023-10-17 14:32:29 2369

原创 Java实现AES,SM4等对称加密算法,Linux环境解密失败,SecureRandom生成密钥不一致

实现的加密解密算法在本地window环境运行正常,加密后解密可以得到原始文本,但是部署到linux测试环境之后报错,解密失败。

2023-10-12 16:52:35 644

原创 《Redis实战 - 第一章 初始Redis》 读书笔记

Redis简介

2023-05-19 14:43:20 120 1

原创 异步回调机制(Netty 学习七)

FutureTask,基础异步回调框架Runnable接口的run方法是无返回值的,为了获取线程运行的返回值,java引入了Callable接口,用来弥补这个缺憾。代码实例: FutureTask<Boolean> futureTask = new FutureTask(new Callable<Integer>() { @Override public Integer call() throws Exception {

2020-11-02 17:46:29 738

原创 多线程Reactor反应器(Netty 学习六)

多线程Reactor反应器上一篇介绍了单线程Reactor反应器模式的代码实例。虽然利用NIO模式减少了创建线程的性能损耗,但是由于是单线程,单个反应器内部是阻塞式的。为了加强服务端性能,我们引入多线程模式。引入两个Selector,两个Reactor。代码如下:public class MultiReactor { AtomicInteger post = new AtomicInteger(0); Selector [] selectors = new Selector[2];

2020-10-11 23:03:01 142

原创 Reactor反应器模式(Netty 学习五)

什么是Reactor反应器模式由Reactor反应器(线程)来负责响应IO事件,分发事件,由Handler处理器(线程)来负责处理事件。Reactor和若干的Handler组成了反应器模式。传统的OIO是采用一个线程处理一个网络连接的方式来增加吞吐量,Reactor模式与传统的OIO类似,换成了NIO模型,相应的增加了Reactor来监听分发事件,Handler由原来的处理链接,变成对监听事件的处理。单线程Reactor示例知道了Reactor模式的定义,来写一个实例,从单线程Reactor反应器开始

2020-09-13 21:17:20 114

原创 DatagramChannel简述(Netty 学习四)

DatagramChannel前面介绍了TCP协议的SocketChannel,接下来介绍一下UDP协议的DatagramChannel。DatagramChannel类也支持非阻塞式IO,同时支持数据的发送与接收,发送用send方法,接收用receive方法。因为前面SocketChannel做基础,这里不做过多解释,直接看代码示例。服务端NIO模式代码: try { //打开选择器 Selector selector = Selector.open

2020-09-01 20:19:41 814 2

原创 SocketChannel解密Java的NIO模型 (Netty 学习三)

阻塞IO网络IO提供了阻塞和非阻塞两种模式,首先我们来看一下阻塞IO的代码示例。服务端: try { //打开服务端通道 ServerSocketChannel ssc = ServerSocketChannel.open(); //绑定地址端口号 ssc.bind(new InetSocketAddress(7890)); //循环接收 while(true

2020-08-20 20:08:23 88

原创 Buffer和FileChannel (Netty 学习二)

Java的NIO类之BufferBuffer是一个抽象类,Java的基础类型都有相应的具体实现,初始化一个对应的Buffer就是分配相应的一段内存,底层的数据结构是数组,然后做了对应的封装。内部主要通过四个成员变量控制,capacity(容量),limit(限量),position(位置),mark(标记)。分别提供初始化、读写以及其他的便捷操作。下面是示例代码及注释(以IntBuffer为例): //Buffer初始化,分配一段可以容纳5个int值的内存,capacity = 5

2020-08-17 16:27:46 183

原创 IO浅析(Netty 学习一)

IO基本原理要讲IO,首先我们要了解一下底层read和write系统,上层程序的IO读写都是依赖它们的。read读操作:将内核缓存区指定的数据复制到用户进程缓存区;write写操作:将用户内存缓冲区的数据写到内核缓存区。由此可见,read&write是不操作磁盘的,原因是避免频繁的磁盘读取(磁盘读取会影响操作系统的性能,具体原因不在这里做解释)。那么以Java的IO为例,一个读操作的流程如下图参考文档#mermaid-svg-HYWKdIasnhI4XyQl .label { f

2020-08-11 21:06:43 112

原创 Java位运算及逻辑运算符

Java位运算及逻辑运算符位运算符逻辑运算符位运算符int a = 6&1;“&”:位与运算,同位全部为1,结果为1,否则为0。上面的例子a的值为0;int a = 6|1;“I”:位或运算,同位有一个值为1,结果为1,否则为0。上面的例子a的值为7;int a = ~1;“~”:位非运算,值为1,返回0,值为0,结果为1。上面的例子a的值为-2(八位二进制:11111110,补码算法,首位1为符号表示,表示负数,1111110取反加1,0000001+1 = 2,最后结

2020-08-05 20:16:19 227

原创 JDK1.8的新特性

Lambda表达式Lambda是1.8中新加的语法糖(不是内部类,匿名类的语法糖),Lambda表达式逻辑上可以理解成实现一个匿名类,这个类只定义了一个方法。Lambda有两个好处:1.编码简洁;2.配合1.8中的新编程方式:函数式接口(FunctionalInterface);Lambda表达式的格式:(parameters) -> expression,Comparable实现...

2019-12-18 21:29:26 101

空空如也

空空如也

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

TA关注的人

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