Topic交换机(自行测试)
Topic交换机支持通配符匹配RoutingKey,实现灵活路由。BindingKey用`.`分隔,`*`匹配一个词,`#`匹配零个或多个词。相比Direct交换机,Topic更适用于复杂路由场景。
RabbitMQ入门
RabbitMQ是基于Erlang开发的开源消息中间件,支持AMQP协议,实现应用间解耦与异步通信。其核心组件包括生产者、消费者、队列、交换机和虚拟主机,可通过Docker快速部署并结合SpringAMQP实现消息收发。
认证源码分析与自定义后端认证逻辑
本文深入分析Spring Security认证流程,从UsernamePasswordAuthenticationFilter到AuthenticationManager、AbstractUserDetailsAuthenticationProvider,层层解析认证机制。重点讲解自定义UserDetailService实现、权限封装及Security配置,结合源码与实践,帮助开发者掌握自定义数据库认证逻辑的完整实现,并提供GitHub代码仓库供学习参考。
一场FullGC故障排查
本文记录了一次Java应用CPU使用率异常升至104%的问题排查过程。通过分析发现,问题根源为频繁Full GC,而Full GC由内存中多个大List对象(近900MB)导致,这些对象因处理Excel样本数据时结构设计不合理而长期驻留JVM堆内存,造成空间不足。借助JProfiler分析堆快照定位到大对象后,提出“治本”与“治标”两类解决方案:一是将大数据移出JVM内存存入Redis;二是优化数据结构、及时清理无用字段以减少内存占用。最终总结了线上高CPU问题的排查思路:优先检查JVM GC情况,结合工具分析堆内存,定位代码逻辑并验证推测,强调需区分机器监控与JVM监控差异,避免误判。
common-lang3
避免三目运算符引发的Java自动拆装箱异常,推荐使用ObjectUtils.defaultIfNull方法替代。该方式更安全,可有效防止null值导致的运行时错误,提升代码健壮性。
Thread.sleep(0) 到底有什么用(读完就懂)
Thread.Sleep用于暂停线程执行,Sleep(1000)不保证精确唤醒时间,受系统调度影响;Sleep(0)则触发立即重新进行CPU竞争,让出执行机会,避免界面假死。
认识SpringSecurity
SpringSecurity 是功能强大的安全框架,核心包括认证、鉴权及防护机制。支持表单、OAuth2、SAML 等多种认证方式,基于过滤器链实现请求控制,通过 FilterChainProxy 与 DelegatingFilterProxy 集成,提供异常处理与 CSRF 防护,保障 Web 应用安全。
Eclipse运行SSM/SSH项目教程
本文介绍了如何在Eclipse中配置并运行Java Web项目,包括JDK、Tomcat等基础软件的安装与版本要求,详细演示了项目导入、Maven项目识别、工作空间设置等步骤,并重点讲解了Eclipse中绑定Tomcat服务器的全过程,涵盖版本选择、本地路径配置及项目部署。同时提供了常见错误解决方案,如数据库连接失败、密码错误等,并附有实际案例系统(如图书馆管理系统)的访问与配置说明,帮助开发者快速搭建和运行项目。
Ribbon负载均衡
本文深入讲解Spring Cloud中Ribbon实现客户端负载均衡的原理,涵盖@LoadBalanced注解作用、负载均衡分类与算法、Ribbon自定义策略配置及饥饿加载优化,并对比服务端负载均衡方案,帮助读者全面理解微服务架构中的流量分发机制。
EFC&CTO:缓存引发数据不一致问题排查与深度解析
EFC客户端在NAS场景下因缓存版本号回退,导致读取旧数据并写坏文件系统。通过日志分析与复现实验,发现buffer write先读pagecache、慢请求致dv回退是根因,修复后验证问题解决。
[Blog]三层架构:代码本地运行(☆)
本任务要求掌握SpringBoot、MySQL、Maven等技术,用时约2小时。需将项目本地运行,解决JDK、Maven、Idea版本等问题,并修复因数据库未导入、名称不一致导致的BUG,最终访问localhost:8080完成博客系统调试与问题排查。
Thread.sleep(0) 到底有什么用(读完就懂)
Thread.Sleep用于暂停线程执行,Sleep(1000)不保证精确唤醒时间,因CPU调度受优先级和竞争影响;Sleep(0)则触发立即重新调度,让出CPU给其他线程,避免界面假死。二者作用显著不同。
Jmeter快速入门
JMeter是基于JDK的性能测试工具,需先安装并配置JDK。从官网下载zip包解压后,通过bin目录下的脚本启动(如jmeter.sh),启动较慢且依赖黑窗口运行。可设置中文语言,修改jmeter.properties文件实现永久生效。基本使用包括创建线程组、添加HTTP取样器及各类监听器,用于发送请求并查看结果树与汇总报告,快速完成接口性能测试。
Java泛型类型擦除以及类型擦除带来的问题
Java泛型在编译时会进行类型擦除,所有泛型信息被移除,替换为原始类型(如Object或限定类型)。例如,List<String>和List<Integer>在运行时均为List。类型检查在编译期完成,基于引用而非实际对象。擦除导致反射可绕过泛型限制、无法使用基本类型、instanceof失效等问题,并影响多态实现,需通过桥方法等机制解决。静态成员不能使用类的泛型参数,因其实例化依赖对象创建,而静态上下文无此支持。
网站开发之图片格式对比与选择
本文介绍了网页常用图片格式的特点与优化策略,涵盖位图(如JPEG、PNG、GIF)和矢量图(如SVG)的原理、优缺点及适用场景,并提供WebP等新型格式对比。同时总结了图像压缩、响应式加载、雪碧图、Base64内联等前端优化技巧,帮助在保证视觉效果的前提下提升网页性能。
厌倦JavaScript 框架桎梏?Still.js:用原生之力,解遗留系统之困
开发者Nakassony Bernardo因挑战老旧系统升级难题,创立Still.js——一个无需构建工具、兼容原生JavaScript的轻量框架。它不颠覆旧架构,而是以最小代价为陈年系统注入现代交互,实现“优雅进化”。在拒绝重写的现实困境中,Still.js用三百行代码点亮十五年的老系统,证明:真正的现代化,是传承中的革新。(238字)
隐形刺客:解析 JavaScript 中 String 类型的“安静”与“危险”
JavaScript中,String看似简单,却因隐式转换、不可变性、Unicode陷阱及“字符串化类型”成为Bug温床。它静默容错,吞噬逻辑,消耗内存,扭曲长度,误导架构。唯有防御性编程、显式转换与类型系统,才能驯服这头温柔而危险的猛兽。
为什么网站图标要使用 ICO 格式?
ICO 是专为图标设计的文件格式,支持多尺寸、多色深与透明度,广泛用于网站 favicon。凭借出色的浏览器兼容性、自动识别机制及单文件多尺寸特性,ICO 仍是网页图标首选,推荐结合 PNG、SVG 共同使用以兼顾兼容性与现代体验。(238 字)
什么是 ws 和 wss
本文深入解析 WebSocket 协议中 `ws` 与 `wss` 的区别,从原理、握手过程到 Node.js 实战部署,涵盖协议升级、TLS 加密、Nginx 反向代理及安全实践,助你构建稳定可靠的实时通信应用。
全面解读 SonarQube 8.9 LTS 到 2025.4 的特性变化
本文全面解读SonarQube从8.9 LTS到2025.4 LTA的演进历程,涵盖产品线命名简化、发布周期调整、AI赋能的代码分析升级及安全合规强化,重点解析多质量规则模式、AI代码溯源与修复、SCA依赖风险管控等核心特性,助力企业实现高质量交付。
基于code-server的云端编程环境部署
本文档描述如何在 Ubuntu 主机上部署 code-server(即“网页版 VS Code”),并通过 autossh 将服务反向隧道到跳板机、使用 Nginx 反向代理域名访问、以及使用 certbot 配置 HTTPS。适合在多设备间共享同一开发环境、并解决个人主机动态公网 IP 的访问问题。
云效DevOps
云效,企业级一站式研发协同平台,数十万企业都在用。支持公共云、专有云和混合云多种部署形态,通过云原生新技术和研发新模式,助力创新创业和数字化转型企业快速实现研发敏捷和组织敏捷,打造“双敏”组织,实现多倍效能提升。