自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (4)
  • 收藏
  • 关注

原创 如何解决Netty沾包与半包

摘要:本文针对Netty框架中的粘包/半包问题,通过案例重现了TCP流式协议导致的消息边界丢失现象,并详细解析了两种解决方案:1)固定长度解码器(FixedLengthFrameDecoder),通过预设包长实现高效处理,适用于定长消息场景;2)分隔符解码器(DelimiterBasedFrameDecoder),使用特殊符号标记消息边界,适合变长文本协议。文章对比了两种方案的优缺点,并推荐LengthFieldBasedFrameDecoder作为更优解,为网络通信开发提供了实用指导。(149字)

2025-12-17 16:23:37 463

原创 WebSocket 对比 MQTT通信优势

本文以充电桩物联网系统为例,对比分析了MQTT和WebSocket协议的适用场景。充电桩终端采用MQTT协议,因其轻量高效、支持QoS可靠传输,适合资源受限设备的数据上报;微信小程序使用WebSocket,因其与浏览器深度集成,能实现实时数据推送。二者可通过"MQTT over WebSocket"架构协同工作:充电桩通过MQTT发布数据,服务器通过WebSocket将数据实时推送给小程序。最终建议设备通信选MQTT,Web端实时交互选WebSocket。

2025-12-17 16:06:50 287

原创 底层通信架构GRPC

摘要:该系统采用protobuf编码和Netty传输框架,实现Java客户端与GO服务端之间的GRPC远程调用。使用proto文件作为统一接口标准,底层基于Netty长连接协议,利用NIO非阻塞特性提升性能。protobuf二进制编码相比JSON/XML具有更高压缩率和传输效率,显著提升系统整体性能表现。该架构充分发挥了protobuf和Netty的技术优势,实现了高效跨语言通信。

2025-12-15 17:08:38 124

原创 Spring 解决循环依赖是否需要第三级缓存?

三级缓存机制是Spring解决循环依赖问题的核心设计,特别针对AOP代理场景。二级缓存能处理普通Bean的循环依赖,但无法确保代理对象的正确性,可能导致AOP增强失效。三级缓存通过ObjectFactory延迟代理创建决策,仅在循环依赖时提前生成代理对象,既维护了标准生命周期(代理应在初始化后创建),又确保了依赖注入的一致性。这种设计还通过二级缓存避免重复创建代理对象,完美平衡了框架原则与实际需求,是Spring优雅解决复杂依赖问题的关键创新。

2025-12-15 16:51:09 346

原创 Vue Vuex自带响应式特性

Vuex结合SessionStorage实现持久化状态管理 摘要:本文介绍了使用Vuex管理全局状态的优势,特别是其响应式特性。通过创建store模块并定义member状态,实现了登录状态的保存。为解决页面刷新数据丢失问题,整合了SessionStorage进行持久化存储。具体实现包括:1)创建Vuex store管理用户数据;2)使用mutations更新状态;3)集成SessionStorage在index.js中实现状态持久化;4)在组件中通过store.state访问全局数据。这种方案确保了用户登录

2025-12-05 09:33:09 148

原创 JAVA Jwt 封装工具类

摘要:JwtUtil是一个基于Hutool工具集的JWT工具类,提供创建、验证和解析JWT令牌的功能。主要方法包括:createLoginToken()生成24小时有效期的登录令牌,createToken()支持自定义有效期的令牌生成,validate()验证令牌有效性,getJSONObject()解析令牌内容。该类使用HS256算法,密钥为"JavaNLS",并在令牌中自动添加签发时间、过期时间和生效时间等标准字段。通过全局日志记录各操作过程,便于调试和问题排查。

2025-12-04 16:33:04 189

原创 Vue 前端Md5加密

本文介绍了一个前端MD5加密的实现方法。通过引入md5.js文件,在注册页面使用hexMd5函数对用户密码进行加密处理。代码中定义了盐值KEY为"562!@#$*&^%nlsxxxxx",并提供了多种MD5加密函数,包括hexMd5、b64_md5等。核心加密算法采用标准的MD5运算流程,包含填充、分组处理、循环运算等步骤。此外还实现了HMAC-MD5算法用于消息认证。该方案可以方便地在前端实现密码的安全加密传输,只需在表单提交时调用hexMd5函数即可完成密码加密。

2025-12-04 13:48:57 512

原创 vue 前端调用验证码

本文介绍了一个JavaScript工具对象Tool的实现及其应用。Tool包含多个实用方法:isEmpty/isNotEmpty判断对象是否为空、copy深拷贝对象、array2Tree将数组转为树形结构、uuid生成随机ID、formatSecond格式化秒数为时间格式、prefixInteger数字补零等。在示例中,Tool被用于生成图形验证码:通过uuid方法生成随机token,拼接URL获取验证码图片,并集成到Ant Design表单组件中。表单包含验证规则,确保用户必须输入验证码才能提交。该工具集

2025-11-28 11:20:53 165

原创 kaptcha 图形验证码java后端

本文介绍了基于Spring Boot集成Kaptcha验证码的实现方案。主要内容包括:1)通过Docker搭建Redis服务,配置Spring Data Redis连接;2)引入Kaptcha和JHLabs依赖,处理JDK17兼容性问题;3)自定义Kaptcha配置类,设置验证码样式参数;4)实现透明背景和水波纹特效的验证码生成逻辑;5)开发验证码控制器,将生成的验证码存入Redis并返回图片响应。该方案通过自定义BackgroundProducer和GimpyEngine实现了带水波纹特效的无背景验证码,

2025-11-28 10:58:03 186

原创 Ant Design Vue 短信验证码读秒按钮

这段代码实现了一个短信验证码发送功能。前端使用Ant Design Vue的表单项和输入搜索组件,包含验证码输入框和发送按钮。当用户点击发送按钮时,会触发sendRegisterSmsCode方法向服务器发送请求。发送成功后启动5秒倒计时(setTime方法),期间按钮显示剩余时间并禁用。代码还包含表单验证规则,确保验证码必填。整个流程包括请求处理、成功/失败回调、倒计时控制等完整功能。

2025-11-24 17:04:15 15

原创 Nacos配置中心 @RefreshScope那些坑

摘要:使用@RefreshScope注解时需注意:1)避免与定时任务混淆;2)不要在service层使用,以免配置变更导致重复初始化;3)高并发场景下会产生性能问题,销毁配置Bean时的锁机制会导致线程阻塞;4)任一配置变更都会触发所有@RefreshScope实例的销毁。这些情况可能引发系统性能下降和稳定性问题。

2025-11-13 15:00:18 79

原创 IDEA 插件快速一键调用对象的所有set方法,get方法等

摘要:推荐一款Java开发高效插件GenerateAllSetter,可一键生成对象的所有set/get方法,支持对象属性转换。该插件能提升开发效率,减少重复代码编写。更多功能详见GitHub项目页:https://github.com/gejun123456/intellij-generateAllSetMethod。欢迎开发者留言分享更好的工具方案。

2025-11-10 16:28:33 166

原创 前端增加拦截器axios 方便调试

摘要:这段代码展示了如何为axios添加请求和响应拦截器。请求拦截器可以在发送请求前打印请求参数,响应拦截器则能处理返回结果和错误。代码中还预留了添加token验证和401未登录状态跳转的功能(目前被注释)。该拦截器配置需要添加到main.js文件中使用。

2025-11-07 09:31:02 198

原创 解决Ant Design Vue 图标全局加载问题

摘要 本文介绍了一种在前端开发中全局引入Ant Design图标的方法。通过安装@ant-design/icons-vue包并在main.js文件中批量注册所有图标组件,可以避免每次使用图标时都需单独引入的麻烦。具体实现方式是使用import * as Icons导入所有图标,然后通过循环将它们注册为全局组件,这样在页面中就可以直接使用官方图标名称,无需重复执行引入命令。

2025-11-06 13:59:07 159

原创 java后端解决浏览器CORS跨域问题

本文介绍了后端Java解决前端Vue3.0+跨域访问问题的方法。通过创建CorsConfig配置类实现WebMvcConfigurer接口,使用@Configuration注解标记为配置类。该配置允许所有来源(*)、所有请求头、所有HTTP方法,并设置凭据许可和3600秒的缓存时间。注释中提供了一个完整的跨域配置方法示例,可解除前端调用后端接口时浏览器控制台报出的跨域限制问题。

2025-11-06 13:45:50 92

原创 java项目初始化配置

本文摘要:介绍SpringBoot项目配置优化的四个关键点:1)将编码统一设置为UTF-8;2)开启autoimport自动导入功能;3)通过引入spring-boot-devtools依赖并配置automake实现热部署;4)Logback日志框架配置方案。其中Mac系统热部署需通过快捷键调出Registry界面搜索auto-makcompiler进行设置。

2025-10-31 14:03:25 144

原创 每秒处理10万并发是电商系统的一个重要性能目标

高并发系统设计关键点:1.微服务架构拆分解耦,分库分表分散数据库压力;2.多级缓存策略(Redis+Caffeine)减少数据库访问,预加载热点数据并防止缓存雪崩;3.异步处理(MQ)削峰填谷,核心链路同步快速响应;4.分布式限流和熔断降级保护系统稳定性;5.数据库连接池优化、索引优化和短事务控制;6.JVM调优减少GC停顿;7.Nginx负载均衡实现流量均衡分发。通过架构分层、缓存策略、异步处理和限流机制实现高性能。

2025-09-17 09:21:02 553

原创 JDK17新特性-那些事

JDK17新特性-那些事

2023-03-24 09:17:06 309

原创 安装HBase

但是我们在Windows或者MacOS系统上面,用客户端软件远程登录Phoenix,有更简单的办法,就是给设置系统环境变量即可。为了验证HBase是否启动成功,我们可以打开浏览器,访问Linux系统的16010端口,能看到HBase状态画面就说明启动成功了。文件,然后修改文件的内容。就可以了,MacOS系统设置亦是如此(与设置JAVA_HOME环境变量类似,大家自行百度)。在文件的126行,把参数设置成false,这样就可以使用外部的Zookeeper了。文件,然后把该文件内容全部删除,填写上下面的内容。

2023-03-10 11:33:19 246

sun.misc.BASE64Decoder

sun.misc.BASE64Decoder

2022-04-14

ezdml_setup_win64_v311

ezdml_setup_win64_v311

2022-04-12

空空如也

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

TA关注的人

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