Java
文章平均质量分 77
Java
思静鱼
大道至简,行稳致远
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
单体服务迁移到微服务
单体服务迁移到微服务,不能一口吃个胖子,而是要循序渐进,有明确的和 **演进路线。原创 2025-09-03 10:32:00 · 556 阅读 · 0 评论 -
springboot 把依赖包不打到web包里面 maven 怎么配置插件
你的目标配置核心构建"胖"Jar (可执行)配置的repackagegoal,不设置<includes>。构建"瘦"Jar (依赖分离)配置的<includes>为一个不存在的依赖,并配合使用复制依赖到外部目录。这种"依赖分离"的方式在传统部署到外部Tomcat(War包)或某些定制化部署环境中非常有用。原创 2025-09-02 17:34:55 · 444 阅读 · 0 评论 -
POC项目
POC项目是一个战略性的风险控制工具。它用一种科学、低成本的方式,在项目全面启动之前,探索未知领域,验证关键假设,为后续的重大决策提供坚实的数据和事实基础,是现代软件工程中不可或缺的一环。原创 2025-09-02 16:02:51 · 1146 阅读 · 0 评论 -
微服务 token 鉴权的7种方案
图片多个服务无法共享Session。重复认证,导致系统性能严重下降。2023年某电商平台发送安全事故:黑客通过XSS攻击窃取此Token后,在2小时内盗取5万用户余额,暴露三大漏洞:• Token未绑定IP/设备指纹• 敏感操作未二次认证• 无异常行为检测机制2.常见的Token鉴权方案。原创 2025-09-01 11:35:01 · 903 阅读 · 0 评论 -
什么是技术债务
技术债务(Technical Debt)是由Ward Cunningham提出的一个隐喻,它指代软件开发中,为了短期利益(如更快地发布版本、满足紧急截止日期)而采取的一种妥协方案,这种方案会在未来带来额外的维护和重构成本,就像金融债务需要支付利息一样。就像刷信用卡消费。今天你可以方便地买到想要的东西(快速实现功能),但如果你不及时还款(不重构代码),未来就需要偿还本金+高额利息(未来开发效率降低、Bug频发、修复成本剧增)。积极的一面:当被主动、明智地。原创 2025-08-29 16:26:39 · 783 阅读 · 0 评论 -
JDK 21虚拟线程
虚拟线程是JDK 19 引入预览(Preview),JDK 21 正式 GA(General Availability)的重大特性之一。它属于,旨在解决 Java 传统线程(基于 OS 内核线程)的高内存和高调度开销问题。传统线程:每个线程绑定一个操作系统线程(1:1 映射),受限于内存和内核调度。一般几千个就可能瓶颈。虚拟线程:由JVM 管理和调度,不再与操作系统线程一一绑定,而是成千上万的虚拟线程复用少量 OS 线程(Carrier Threads)。传统线程 = “笨重卡车”原创 2025-08-26 15:34:19 · 528 阅读 · 0 评论 -
Java 批量处理
Java 里“批量处理”其实是一个非常常见的需求(数据库、文件、消息、集合运算),不同的场景会有不同的实现方式。我帮你总结一下常用的。原创 2025-08-26 14:44:28 · 579 阅读 · 0 评论 -
Java 探针
特性描述本质一个利用修改JVM类字节码的Jar包。核心机制通过在类加载时拦截并转换字节码。加载方式启动时-javaagent)和运行时核心价值无侵入性地对应用进行监控、诊断、增强。关键技术常见应用APM监控(SkyWalking)、诊断工具(Arthas)、热部署、RASP安全。Java探针技术是Java生态中高级开发和运维的利器,它让我们能够以一种极其底层且强大的方式与JVM交互,实现许多传统编程方式无法完成的任务。原创 2025-08-25 17:45:21 · 982 阅读 · 0 评论 -
Java 探针的原理
Java 探针原理= JVM 的字节码增强技术。关键点通过-javaagent在 JVM 启动时加载。修改类字节码,在方法前后插入探针逻辑。适合做性能监控、安全防护、诊断。原创 2025-08-25 17:42:02 · 454 阅读 · 0 评论 -
Nginx 作为反向代理时设置的请求头
Header 配置作用典型用途保留客户端访问的域名和端口后端根据域名/端口做路由或多租户传递客户端真实 IP后端日志、风控、限流传递完整代理链路上的客户端 IP 列表追踪用户来源、防攻击分析在实际项目里,Spring Boot 里要拿到真实客户端 IP的第一个 IP如果没有,就取X-Real-IP否则再 fallback 到。原创 2025-08-20 14:58:36 · 512 阅读 · 0 评论 -
Nginx 启动创建多个进程
Nginx启动时至少有 2 个进程:1 个 Master + 至少 1 个 Worker。Master 管理,Worker 干活。Worker 数量可调,建议与 CPU 核心数一致(或autoNginx Master-Worker 进程模型示意图。原创 2025-08-20 14:33:54 · 350 阅读 · 0 评论 -
Nginx 中配置两个 server
● Minio 服务 地址:http://172.31.51.172:9000 和 http://172.31.51.173:9000。● Web 服务 地址:http://172.31.51.170:8080 和 http://172.31.51.171:8080。原创 2025-08-20 14:04:19 · 640 阅读 · 0 评论 -
Nginx 配置中location root和alias的区别
在 Nginx 配置中,root 和 alias 都是用来指定文件的实际位置,但它们的行为有所不同。原创 2025-08-20 14:01:23 · 1119 阅读 · 0 评论 -
Ubuntu apt安装nginx
在中,如果你不想用源码 tar 包编译,而是直接用。原创 2025-08-20 11:18:10 · 285 阅读 · 0 评论 -
Ubuntu 系统 tar 包源码安装 Nginx
在里如果你不用,而是通过,步骤要自己编译和配置。原创 2025-08-20 10:47:30 · 550 阅读 · 0 评论 -
Tomcat里catalina.sh详解
在 Tomcat 中,catalina.sh(Linux/macOS)或 catalina.bat(Windows)是,用于控制 Tomcat 服务器的运行。它是 Tomcat 的“主控脚本”,负责设置环境变量、启动/关闭 JVM 进程,并传递参数给 Tomcat 的核心组件。原创 2025-08-19 16:16:30 · 551 阅读 · 0 评论 -
POST 请求内容类型
【代码】POST 请求内容类型。原创 2025-08-13 13:57:57 · 1018 阅读 · 0 评论 -
application/x-www-form-urlencoded详解
是一种编码格式,用于将表单数据编码为键值对,并通过 HTTP 请求发送到服务器。原创 2025-08-13 13:55:14 · 907 阅读 · 0 评论 -
接口为什么要设计出v1和v2
接口设计出这样的版本号,主要是为了。简单说,就是给接口一个“时间维度的名字”,方便未来平稳迭代。原创 2025-08-08 17:32:46 · 629 阅读 · 0 评论 -
Hutool 工具包详解
Hutool 是一个开源的 Java 工具包,提供了丰富的工具类和方法,用于简化 Java 开发中的各种常见任务。它的设计目标是简洁、易用、高效,旨在提升 Java 开发者的开发效率。,封装了 JDK 底层操作(如文件IO、HTTP请求、加密解密等),目标是替代 Apache Commons、Guava 等工具库,成为 Java 开发的 “瑞士军刀”。通过合理使用 Hutool,可将 Java 开发效率提升 30% 以上,尤其适合中小型项目和工具类开发。Hutool 是一个 Java 工具库,提供。原创 2025-08-08 10:12:37 · 1726 阅读 · 0 评论 -
Swagger详解API 文档
3、根据Controller类中的Swagger注解生成接口文档,启动项目,访问项目虚拟路径/swagger-ui,查看生成。只需要少量的注解,Swagger 就可以根据代码自动生成 API 文档,很好的保证了文档的。而 Swagger 给我们提供了一个全新的维护 API 文档的方式,只要项目发布,就能够自动更新,而且可以。同步到线上,使用者只需要记住一个固定的网址,实时刷新就能访问到最新版本的API文档了。3)提供交互式的UI,我们可以直接在文档页面调试 API,省去了准备复杂的调试参数的过程。原创 2025-07-25 10:42:31 · 1311 阅读 · 0 评论 -
捕获(Catch) 和 抛出(Throw)的区别
通过合理使用捕获和抛出,可以构建健壮且易维护的异常处理体系。(向上传递或自定义异常),由调用者处理。,防止程序因异常中断。原创 2025-07-10 11:45:52 · 590 阅读 · 0 评论 -
常见 Web 服务器
静态网站推荐Nginx,Java 项目推荐Tomcat,微服务推荐Spring Boot + 内嵌 Jetty/Undertow,企业级项目可选WildFly或GlassFish。原创 2025-06-19 10:16:00 · 844 阅读 · 0 评论 -
数据同步选择推Push还是拉Pull
数据同步选择“推”(Push)还是“拉”(Pull”,要根据实际场景、系统架构和对实时性、资源消耗、安全性的需求来决定。原创 2025-05-09 14:09:18 · 716 阅读 · 0 评论
分享