自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

geminigoth的博客

夫唯不争,故天下莫能与之争

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

原创 Spring Boot 系统学习第二天:Spring依赖注入类型 备份

依赖注入是Spring 框架提供的核心功能之一,也是开发人员使用Spring Boot框架的基本手段。通过控制反转(IoC)机制获得所需的各种Bean。这中间存在一些最佳实践和值得注意的开发技巧。选择合适的依赖注入类型可以提升系统性能,解决因为使用不到导致的Bean注入问题。试想一下,在开发过程中,如果两个Bean之间存在循环依赖关系,那么选择的依赖注入类型是否合适就直接决定了Bean能否创建成功。

2024-05-22 16:45:00 495

原创 Spring Boot 系统学习第二天:Spring依赖注入类型

依赖注入是Spring 框架提供的核心功能之一,也是开发人员使用Spring Boot框架的基本手段。通过控制反转(IoC)机制获得所需的各种Bean。这中间存在一些最佳实践和值得注意的开发技巧。选择合适的依赖注入类型可以提升系统性能,解决因为使用不到导致的Bean注入问题。试想一下,在开发过程中,如果两个Bean之间存在循环依赖关系,那么选择的依赖注入类型是否合适就直接决定了Bean能否创建成功。

2024-05-22 12:28:10 782

原创 Spring Boot 系统学习第一天:Spring Boot核心内容介绍 备份

本文将系统梳理Spring Boot实战内容,并把这些内容划分为核心容器、Web服务、数据访问、内置缓存、并发编程、监控和扩展六大主题。

2024-05-21 16:45:00 1070

原创 Spring Boot 系统学习第一天:Spring Boot核心内容介绍

本文将系统梳理Spring Boot实战内容,并把这些内容划分为核心容器、Web服务、数据访问、内置缓存、并发编程、监控和扩展六大主题。

2024-05-21 12:32:11 912

原创 代码生成工具2 ——根据表名生成代码 备份

【代码】代码生成工具2 ——根据表名生成代码 备份。

2024-05-09 15:00:00 178

原创 代码生成工具2 ——根据表名生成代码

【代码】代码生成工具2 ——根据表名生成代码。

2024-05-09 10:30:00 250

原创 代码生成工具1 ——项目简介和基础开发 备份

代码生成工具——通过读取数据库的表,生成bean

2024-05-08 14:00:00 1215

原创 代码生成工具1 ——项目简介和基础开发

代码生成工具——通过读取数据库的表,生成bean

2024-05-08 08:51:37 1033

原创 centos 7 安装 JDK 和Rockmq 备份

CentOS版本:使用cat /etc/redhat-release 命令查看centos版本。本次版本是:CentOS Linux release 7.9.2009 (Core)JDK版本是:jdk-8u401-linux-x64.tar.gzRockeqMQ版本:rocketmq-all-4.9.2-bin-release.zipRockeqMQ dashboard 版本是:rocketmq-dashboard-rocketmq-dashboard-1.0.0。

2024-04-29 15:00:00 648

原创 centos 7 安装 JDK 和Rockmq

CentOS版本:使用cat /etc/redhat-release 命令查看centos版本。本次版本是:CentOS Linux release 7.9.2009 (Core)JDK版本是:jdk-8u401-linux-x64.tar.gzRockeqMQ版本:rocketmq-all-4.9.2-bin-release.zipRockeqMQ dashboard 版本是:rocketmq-dashboard-rocketmq-dashboard-1.0.0。

2024-04-29 10:00:00 2001

原创 win10 VMware 安装centos 7 (图文) 备份

VMware安装centos

2024-04-28 14:00:00 289

原创 win10 VMware 安装centos 7 (图文)

window 10 使用VMware 安装centos系统

2024-04-28 10:00:00 308

原创 Netty学习——实战篇9 实现dubbo RPC 备份

模仿dubbo,消费者和提供者约定接口和协议,消费者远程调用提供者,提供者返回一个字符串,消费者打印提供者返回的数据。底层网络通信使用 Netty 4.X。

2024-04-25 15:00:00 188

原创 Netty学习——实战篇9 实现dubbo RPC

模仿dubbo,消费者和提供者约定接口和协议,消费者远程调用提供者,提供者返回一个字符串,消费者打印提供者返回的数据。底层网络通信使用 Netty 4.X。

2024-04-25 10:00:00 525

原创 Netty学习——实战篇8 Handler链调用、TCP粘包和拆包 备份

/长度//内容@[email protected]("MyMessageEncoder 的 encode 方法被调用");/*自定义解码器,把二进制字节码转换成 MessageProtocol对象*/@[email protected]("MyMessageDecoder 的 decode方法被调用");//封装成MessageProtocol对象//把 MessageProtocol对象放入list中。

2024-04-24 14:30:00 907

原创 Netty学习——实战篇8 Handler链调用、TCP粘包和拆包

/长度//内容@[email protected]("MyMessageEncoder 的 encode 方法被调用");/*自定义解码器,把二进制字节码转换成 MessageProtocol对象*/@[email protected]("MyMessageDecoder 的 decode方法被调用");//封装成MessageProtocol对象//把 MessageProtocol对象放入list中。

2024-04-24 10:00:00 1128

原创 Netty学习——实战篇7 ProtoBuf实战-多类型数据 备份

1、客户端可以随机发送Student POJO 、Worker POJO 对象到服务器(通过protobuf编码)2、服务端能接收 Student POJO 、Worker POJO 对象(需要判断是哪种类型),并显示信息(通过ProtoBuf解码)

2024-04-23 14:30:00 544

原创 Netty学习——实战篇7 ProtoBuf实战-多类型数据

1、客户端可以随机发送Student POJO 、Worker POJO 对象到服务器(通过protobuf编码)2、服务端能接收 Student POJO 、Worker POJO 对象(需要判断是哪种类型),并显示信息(通过ProtoBuf解码)

2024-04-23 10:00:00 501

原创 Netty学习——实战篇6 ProtoBuf实战-单类型数据 备份

编程程序,使用ProtoBuf完成如下功能1、客户端发送一个Student POJO对象到服务器(通过ProtoBuf编码)2、服务端能接收Student POJO对象,并显示信息(通过ProtoBuf解码)

2024-04-22 15:00:00 236

原创 Netty学习——实战篇6 ProtoBuf实战-单类型数据

编程程序,使用ProtoBuf完成如下功能1、客户端发送一个Student POJO对象到服务器(通过ProtoBuf编码)2、服务端能接收Student POJO对象,并显示信息(通过ProtoBuf解码)

2024-04-22 10:00:00 875

原创 Netty学习——实战篇5 Netty 心跳监测/WebSocket长连接编程 备份

MyServer.javaMyServerHandler.java NettyChatClient.java NettyChatClientHandler.java服务端运行结果: (1)Http协议是无状态的,浏览器和服务器之间的请求响应一次,下一次会重新创建连接。 (2)实现基于webSocket的长连接的全双工的交互。 (3)改变Http协议多次请求的约束,实现长连接,服务端可以发送消息给浏览

2024-04-18 15:00:00 384

原创 Netty学习——实战篇5 Netty 心跳监测/WebSocket长连接编程

(4)客户端浏览器和服务端会相互感知,比如服务器关闭了,浏览器会感知,同样浏览器关闭了,服务端也会感知。(1)Http协议是无状态的,浏览器和服务器之间的请求响应一次,下一次会重新创建连接。(3)改变Http协议多次请求的约束,实现长连接,服务端可以发送消息给浏览器。自定义Handler:MyTextWebSocketFrameHandler.java。(2)实现基于webSocket的长连接的全双工的交互。服务端代码:MyServer.java。客户端代码:hello.html。

2024-04-18 10:00:00 709

原创 Netty学习——实战篇4 Netty开发Http服务实战、ByteBuf使用、开发群聊系统 备份

(1)Netty服务器监听8000端口,浏览器发出请求“http://localhost:8000”(2)服务器可以回复消息给客户端,“你好,我是服务器”,并对特定请求资源进行过滤。

2024-04-17 15:15:00 243

原创 Netty学习——实战篇4 Netty开发Http服务实战、ByteBuf使用、开发群聊系统

(1)Netty服务器监听8000端口,浏览器发出请求“http://localhost:8000”(2)服务器可以回复消息给客户端,“你好,我是服务器”,并对特定请求资源进行过滤。

2024-04-17 10:15:00 997

原创 Netty学习——实战篇3 BIO与NIO零拷贝 和 Netty入门实战 备份

【代码】Netty学习——实战篇3 BIO与NIO零拷贝 和 Netty入门实战 备份。

2024-04-16 15:15:00 235

原创 Netty学习——实战篇3 BIO与NIO零拷贝 和 Netty入门实战

【代码】Netty学习——实战篇3 BIO与NIO零拷贝 和 Netty入门实战。

2024-04-16 10:00:00 234

原创 Netty学习——实战篇2 NIO 群聊系统(简单版) 备份

log.info("用户,{}",socketChannel.getRemoteAddress(),"已上线");log.info("来自客户端:{}, 的消息是:{}",socketChannel.getRemoteAddress(),msg);log.info("{}",socketChannel.getRemoteAddress(),":已下线");//log.info("用户:{},说:{}",username,message);log.info("{},客户端初始化完成",username);

2024-04-15 15:15:00 594

原创 Netty学习——实战篇2 NIO 群聊系统(简单版)

log.info("用户,{}",socketChannel.getRemoteAddress(),"已上线");log.info("来自客户端:{}, 的消息是:{}",socketChannel.getRemoteAddress(),msg);log.info("{}",socketChannel.getRemoteAddress(),":已下线");//log.info("用户:{},说:{}",username,message);log.info("{},客户端初始化完成",username);

2024-04-15 10:30:00 1181

原创 Netty学习——实战篇1 BIO、NIO入门demo 备注

运行结果。

2024-04-11 15:42:22 972

原创 Netty学习——实战篇1 BIO、NIO入门demo

运行结果。

2024-04-11 10:00:00 1201

原创 Netty学习——高级篇2 Netty解码技术 备份

本章继续介绍Netty的其他解码器。

2024-04-10 15:00:00 933

原创 Netty学习——高级篇2 Netty解码技术

本章继续介绍Netty的其他解码器。

2024-04-10 10:00:00 909

原创 Netty学习——高级篇1 拆包 、粘包与编解码技术 备份

当Server在读取客户端数据的时候,如果一次读取不完整,就会触发channelRead事件,那么Netty是如何处理这类问题的?本节会详细讲解。

2024-04-09 15:00:00 826

原创 Netty学习——高级篇1 拆包 、粘包与编解码技术

当Server在读取客户端数据的时候,如果一次读取不完整,就会触发channelRead事件,那么Netty是如何处理这类问题的?本节会详细讲解。

2024-04-09 10:00:00 986

原创 Netty学习——源码篇13 命中缓存的分配 备份

以 tinySubPageDirectCaches[1]为例(下标选择1是因为下标为0代表的规格是0Byte,其实就代表一个空的缓存),在tinySubPageDirectCaches[1]的缓存对象中所缓存的ByteBuf的缓冲区大小是16Byte,在tinySubPageDirectCaches[2]中缓存的ByteBuf的大小为32Byte,以此类推,tinySubPageDirectCaches[31]中缓存的ByteBuf大小事496Byte。具体类型规则的配置如下。现在分析命中缓存的相关逻辑。

2024-04-08 15:00:00 687

原创 Netty学习——源码篇13 命中缓存的分配

以 tinySubPageDirectCaches[1]为例(下标选择1是因为下标为0代表的规格是0Byte,其实就代表一个空的缓存),在tinySubPageDirectCaches[1]的缓存对象中所缓存的ByteBuf的缓冲区大小是16Byte,在tinySubPageDirectCaches[2]中缓存的ByteBuf的大小为32Byte,以此类推,tinySubPageDirectCaches[31]中缓存的ByteBuf大小事496Byte。具体类型规则的配置如下。现在分析命中缓存的相关逻辑。

2024-04-08 10:00:00 1292

原创 Netty学习——源码篇12 Netty池化内存管理机制 备份

现在来分析池化内存的分配原理。首先找到AbstractByteBufAllocator的子类PooledByteBufAllocator实现分配内存的两个方法:newDirectBuffer和newHeapBuffer方法。观察发现,这两个方法大体结构是一样的,以newDirectBuffer为例,简单分析一下。首先,通过threadCache.get()方法获得一个类型为PoolThreadCache的cache对象,然后,通过cache获得directArena对象;

2024-04-07 14:00:00 792

原创 Netty学习——源码篇12 Netty池化内存管理机制

首先调用leastUsedArena()方法分别获得类型为PoolArena的heapArena和directArena对象。那么heapArena和directArena对象是在哪里初始化呢?其实就是创建了一个固定大小的PoolArena数组,数组大小由传入的参数nHeapArena和nDirectArena决定。发现nHeapArena和nDirectArena是通过DEFAULT_NUM_HEAP_ARENA, DEFAULT_NUM_DIRECT_ARENA 这两个常量默认赋值的。

2024-04-07 10:30:00 1694

原创 Netty学习——源码篇11 Netty非池化内存分配 备份

现在来看UnpooledByteBufAllocator的内存分配原理。通过调用PlatformDependent.hasUnsafe()方法来判断操作系统是否支持Unsafe,如果支持Unsafe则创建UnpooledUnsafeHeapByteBuf类,否则创建UnpooledHeapByteBuf类。

2024-04-03 14:00:00 909

原创 Netty学习——源码篇11 Netty非池化内存分配

现在来看UnpooledByteBufAllocator的内存分配原理。通过调用PlatformDependent.hasUnsafe()方法来判断操作系统是否支持Unsafe,如果支持Unsafe则创建UnpooledUnsafeHeapByteBuf类,否则创建UnpooledHeapByteBuf类。

2024-04-03 10:00:00 1098

空空如也

空空如也

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

TA关注的人

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