- 博客(57)
- 资源 (1)
- 收藏
- 关注

原创 使用docker、Jenkins、gitlee、springboot、搭建个人博客网站 并实现CI/CD 外加机器人提醒
前言: 服务器用的是云服务器买的阿里的linux、jdk1.8、docker服务端使用的为阿里的docker镜像仓库、mysql使用5.7版本的、redis使用最新版即可、文件服务使用的阿里的oss.
2020-06-16 20:22:46
1454
原创 【企业级Java Agent实现】完整包结构与核心代码详解 ——基于Maven多模块的标准化Agent开发框架
本文详细解析了基于 Java 构建企业级 Agent 系统 的完整方案,采用 Maven 多模块架构 和 Vert.x 响应式框架,提供从核心抽象到分布式落地的全流程指南。通过 com.example.agent 标准化包结构设计,实现了 Agent 基类、监控模块、调度中心的代码规范,结合 Hazelcast 集群方案与一致性哈希分片策略,支撑高并发场景。文章提供 Spring Boot 整合示例、Docker 部署配置 及 Prometheus 监控方案,涵盖性能优化指标(单节点吞吐达 15k TPS)
2025-03-12 19:40:04
152
原创 【性能革命】全面拥抱WebClient:Spring官方推荐的异步非阻塞HTTP客户端实战 ——从RestTemplate迁移到WebClient的全链路方案与性能对比
本文全面解析了从 RestTemplate 迁移到 WebClient 的技术方案,重点对比了两者的性能差异与适用场景。WebClient 作为 Spring 官方推荐的异步非阻塞 HTTP 客户端,支持 HTTP/1.1、HTTP/2 和 WebSocket,深度集成 Reactive Streams,显著提升高并发场景下的资源利用率。文章提供了从依赖配置、代码迁移到复杂场景适配的完整指南,涵盖文件上传、流式下载、请求重试等高级特性,并分享了性能调优与监控实践。通过电商平台案例,展示了 WebClient
2025-02-28 09:19:59
297
原创 【技术升级指南】JDK 17 + Spring Boot 3 全栈革命:深度解析新特性与迁移实战 ——从Lambda到Record,从Spring 5到Native Image的跨越式升级
1 . 语法糖革新(开发者体验升级)2 . 性能飞跃(基准测试数据)3 . 关键API增强。
2025-02-25 16:12:48
941
原创 【深度解析】Java接入DeepSeek大模型:从零实现流式对话+多轮会话管理(完整项目实战) —— SpringBoot整合、API安全封装、性能优化全攻略
新建POST请求:http://localhost:8080/deepseek/chat-stream。1 . File → New → Project 选择Spring Initializr。3 . 点击Generate下载并导入项目。1 . 增强型流式控制器(支持异常重试)2 . 前端交互示例(HTML+SSE)1 . 使用Postman测试流式接口。2 . 流式响应性能优化方案。点击Send观察实时返回结果。1 . 多轮对话会话管理。2 . 监控指标埋点。1 . 安全防护方案。2 . 成本控制策略。
2025-02-23 20:45:44
2377
原创 手机内存不够了,搭建一个自己的私服相册吧?
手机内存总是不够用?别再花钱换手机了!搭建私有相册服务器,既能释放空间,又能安全保存所有回忆。本文对比 MT Photos 和 Immich,教你轻松实现照片自动备份、智能分类和随时访问。
2025-02-19 11:45:57
723
原创 public or static包下的 html 丢了(404)? 你快回来! 我一人承受不来
Spring Boot 默认会自动配置 /public 目录下的静态资源文件,使其可以通过 / 根路径访问。这是通过 WebMvcAutoConfiguration 类中的 addResourceHandlers 方法实现的。该方法会注册一个资源处理器,处理默认路径下的静态资源文件,包括 classpath:/public/。如果你在 src/main/resources/public 目录下放置了静态资源文件,Spring Boot 会自动配置一个资源处理器来处理这些文件的请求。
2024-11-13 11:58:06
1318
原创 啊?马上要国庆了生产又崩溃了?一个生产问题记录
马上就要国庆啦~ 辛苦工作这么久就想要好好过个假期呀!!! 问题退散,问题退散,问题退散 🙏🙏🙏🙏...
2024-09-25 11:56:51
751
原创 一个事务传播机制带来的生产事故
一个事务传播机制带来的生产事故,保存数据始终保存不成功,又又又一起密室杀人案件?让我福尔摩斯🐟来看看是什么问题!!!
2024-07-26 10:14:56
515
原创 Spring 使用SSE(Server-Sent Events)学习
SSE 即服务器发送事件(Server-Sent Events),是一种服务器推送技术,允许服务器在客户端建立连接后,主动向客户端推送数据。SSE 基于 HTTP 协议,使用简单,具有轻量级、实时性和断线重连等特点。它在一些需要实时数据更新的场景中非常有用,如股票行情、实时通知等。与传统的轮询方式相比,SSE 可以减少不必要的网络请求,提高数据传输效率。SSE 的主要优点包括:实时性:服务器可以实时推送数据到客户端,无需客户端不断轮询。
2024-06-05 14:09:05
2211
原创 哇哦,一个超级牛逼的图片格式!!使用它之后我们系统加载图片快了一倍!!! 图片格式转换webp学习!
WebP 格式是一种图像文件格式。它是由谷歌开发的,旨在提供一种高效的图像压缩方式,同时保持较好的图像质量。WebP 格式具有较小的文件体积,能够在一定程度上减少网络传输的数据量,提升网页加载速度。它支持有损压缩和无损压缩两种模式。
2024-05-10 11:48:32
479
原创 java JMH 学习
JMH(Java Microbenchmark Harness)是一款专用于代码微基准测试的工具集,其主要聚焦于方法层面的基准测试,精度可达纳秒级别。此工具由 Oracle 内部负责实现 JIT 的杰出人士编写,他们对 JIT 及 JVM 在基准测试方面的影响有着深刻的理解。JMH 不仅能够对 Java 语言进行基准测试,还能对运行在 JVM 上的其他语言开展基准测试。当热点方法被确定,且希望进一步提升方法性能时,可借助 JMH 对优化后的结果进行量化分析。
2024-05-07 16:07:50
526
原创 OMG 一个方法的调用改动居然优化了一倍性能!!! ConcurrentHashMap.computeIfAbsent 学习
1、升级JDK(1.9之后JDK已经处理了此问题)2、主动调优通过util方法来处理 computeIfAbsentsuper K,?
2024-04-30 17:09:23
197
1
原创 啊? 又要洗数据啦!! 还是两个key决定一个表! 二维Map学习,基于guava的HashBasedTable
表设计如下:通过map的话 就没办法很好的实现了,需要通过两个key 来确定一个 v 此时就想到了之前摸鱼看到过二维数组!!不得不说 该摸鱼就得摸!有了 HashBasedTable 就能很优雅的实现 取V的逻辑了!代码!运行结果:
2024-04-25 11:35:30
315
原创 java实现论文查重,文本查重方案 采用 ansj 分词法
Ansj 是一个开源的 Java 中文分词工具,基于中科院的 ictclas 中文分词算法,采用隐马尔科夫模型(HMM),比其他常用的开源分词工具(如 MMseg4j)的分词准确率更高。作者为孙健(ansjsun),目前实现了中文分词、中文姓名识别、用户自定义词典、关键字提取、自动摘要、关键字标记等功能,适用于对分词效果要求高的各种项目。
2024-04-16 10:44:57
1253
原创 使用 java 进行微信机器人搭建桥接
官方网站:http://pad-local.com/#/learngit地址:https://github.com/wechaty/puppet-padlocal使用pad loacl安装 Node推荐安装 Node 16 LTS (16.16.0),具体安装方法可以访问 Node 主页。从 github 上 clone 项目如果不能访问 github,可以从 gitee 下载。安装项目依赖。
2024-01-30 11:39:20
1005
3
原创 记一次接口远程调用异常排查链路 Remote peer closed connection before all data could be read
记一次接口远程调用异常排查链路 Remote peer closed connection before all data could be read
2023-03-07 10:45:06
4358
2
原创 Sharding-Jdbc 基础使用分享
逻辑表水平拆分的数据库(表)的相同逻辑和数据结构表的总称。例:订单数据根据主键尾数拆分为10张表,分别是t_order_0到t_order_9,他们的逻辑表名为t_order。真实表在分片的数据库中真实存在的物理表。即上个示例中的t_order_0到t_order_9。数据节点数据分片的最小单元。由数据源名称和数据表组成,例:ds_0.t_order_0。绑定表分片规则一致的主表和子表。例如:t_order表和t_order_item表,均按照order_id分片,则此两张表互为绑定表关系。绑定表之间的
2022-07-13 13:55:04
1125
原创 sharding-jdbc 分库分表 跨库查询逻辑 * 出现 null 数据问题记录
公司业务库有多个库,服务拆分细粒度不够,避免不了查询多个业务库。假设我们有库 A、Bsharding-jdbc 默认库为 A此时执行下方查询 B 的查询语句 返回的数据为 nullselect * from users
2022-07-12 22:15:36
2879
原创 xxl-job 2.2.0 魔改自动主动执行器以及任务
xxl-job 需要手动在控制台注册任务和执行器,操作麻烦。增加操作复杂性。魔改2.2.0版本 自动注册~让我们释放双手
2022-06-08 18:13:59
1105
8
原创 Mysql 存在则修改 不存在则新增的两种实现方法
假设有一张demo表,主键为id,唯一索引是codecreate table demo( id int auto_increment, name int null, gender int null, age int null, code int null, constraint demo_pk primary key (id));create unique index demo_code_uindex on demo (code);方法一 replace intorepla
2021-12-31 10:34:54
9651
原创 使用spring aop简单进行操作日志的记录
简单记录操作日志即:谁什么时间做了什么事情。实现第一步创建一个@Log注解类@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Log { /** * 操作类型 */ String operationType() default "add"; /** * 操作记录静态记录 * @return 操作记录
2021-12-29 17:08:38
386
原创 单体架构拆分微服务二
微服务架构UML优势服务可靠性高、可用性高、可扩展性高将之前的多种模块拆成了多个服务,即使某个服务挂掉了也不会影响到其他服务,比如订单服务挂了,不会影响到客户继续逛商场,不会影响添加购物车。每个服务可以用不同的技术栈实现,提现各个技术栈的优势。每个服务都可 X、Y、Z轴扩展,根据不同服务的特性有不同的扩展方案。X轴:水平复制,即在负载均衡服务器后增加多个web服务器。Y轴:根据服务的职责/功能,拆分服务。Z轴:对数据库的扩展,即分库分表(分库是将关系紧密的表放在一台数据库服务器
2021-10-24 12:47:55
256
原创 单体架构拆分微服务一
单体架构UML优势快速迭代刚开始搭建项目时能够快速迭代需求,不需要多个服务反复切换开发,多方配合处理。部署便利部署只需要部署一个服务即可。技术栈单一开发只需要会一种技术栈就能独立的完成开发用人成本低往往一个开发就能独立完成从业务逻辑处理到DB的整个流程劣势维护困难当开发逻辑越堆越多,逻辑耦合在一起就很难接手维护,通常可能维护摸一个模块的人,可能需要去理解熟悉大多数响应场景逻辑。测试困难如只需要测试一个小模块时,因为单体服务的原因可能需要吧涉及到的业
2021-08-21 15:54:18
305
原创 SpringBoot实现接口版本管理控制
前言因为现在开发都是前后端分离。前端如果是小程序或者App开发的时候,由于前端有版本控制而后端没有导致的问题,此时如果接口要修改之前的,那么后端没办法判断当前客户用的小程序版本只能让前端多传递一个参数了,这样的判断是不是不够优雅呢?是的没错,优雅的方式来啦~实现逻辑实现逻辑主要运用到了两个类org.springframework.web.servlet.mvc.condition.RequestConditionorg.springframework.web.servlet.mvc.method.
2021-06-18 15:58:43
2481
1
原创 mysql索引下推理解
1、回表什么是回表?首先我们需要知道mysql的B+Tree数据结构并理解。大家都知道B+Tree是底层存储data的,那么非主键索引呢?底层是存储主键id的如下图所示此时如果查询user表并且列指定为*,此时就会发生回表操作了。索引下推那么什么是索引下推呢?索引下推(index condition pushdown )简称ICP,在Mysql5.6的版本上推出,用于优化查询。在不使用ICP的情况下,在使用非主键索引(又叫普通索引或者二级索引)进行查询时,存储引擎通过索引检索到数据
2021-06-17 16:51:44
168
2
原创 事务理解(ACID)
有些人抱怨,常用的两阶段提交在性能和可用性方面代价太高 而我们认为 事务滥用和过度使用所引入的性能瓶颈应该主妥由应用层未解决,而不是简单的抛弃事务。一-James Corbett 等, Spanner:来自 Google 的全球分布式数据库( OSDI2012)什么是事物?在一个严格要求数据准确性的环境中,会有许多可能出错的情况,如:服务器处理业务时报错,出现异常数据库软件异常,导致增删改出错服务器宕机服务器和数据库之间连接中断。多个客户端同时写入数据,导致数据覆盖客户端读到一些无
2021-06-01 10:07:04
420
1
原创 Gradle Mac idea 安装使用
Gradle安装Gradle下载地址 戳我~~进入到下载页面后我们下载所需版本-bin.zip下载完后将zip文件进行解压在本地新建.bash_profile 用于mac读取,不过我是放在zsh中的。这里就以zsh为例~如果使用.bash_profile的同学可以直接编辑 .bash_profile文件即可export 导入我们的gradle地址。export GRADLE_HOME=/Users/aaa/Desktop/midongtools/gradle-7.0.2export P
2021-05-15 10:39:44
538
原创 Mybatis-plus Lambda自动填充 MetaObjectHandler 失效 解决方案
关于使用lambdaUpdate()导致updateAt不更新问题解决方案很苦恼,为啥使用lambdaUpdate()会导致updateAt不更新呢,明明我也标明了注解。明明我也有对应的config处理类进行自动填充但是为什么就是不更新呢???这是因为:MyBatis-Plus 字段填充是必须依赖于实体对象,通过实体对象进行自动插入,如果参数中不包含实体对象,则无法触发字段自动填充如下图所示 我们执行的方法:然后通过一层层跟进去到源码处理层的时候我们会发现实体类为null是不处理的固不会
2021-05-08 11:11:12
3402
2
原创 BloomFilter(布隆过滤器)结合redis使用---可解决集群数据问题~
前言Bloom Filter是一个占用空间很小、效率很高的随机数据结构,它由一个bit数组和一组Hash算法构成。可用于判断一个元素是否在一个集合中,查询效率很高(1-N,最优能逼近于1)。布隆过滤器概念详解可参考:https://blog.youkuaiyun.com/jiaomeng/article/details/1495500常见使用场景1、缓存击穿将已存在的缓存放到布隆中,当黑客访问不存在的缓存时迅速返回避免缓存及DB挂掉比如说:活动详情接口,我们可以缓存所有活动id,每一次调用活动详情接口时先
2021-03-18 16:38:51
675
原创 降维打击代码生成器,更快的开发后台管理系统
代码生成器的本质还是生成繁琐的后台代码,一旦修改后期生成的代码很难合并,虽然减轻部分工作,但解决方式并非最佳,后台管理系统开发是否还有更好的解决方案?框架简介Erupt Framework通用的后台管理框架,零前端代码,零CURD,快速开发企业级管理后台 !无需创建 template 、 controller 、 service 、 dao 、 entity 、 mapper 效率提升1000%无需生成任何代码,仅需单个实体类文件,配合erupt所提供的注解,就可快速开发完成后台管理功能 !支持数
2020-12-14 12:41:52
396
原创 使用Nacos配置中心、Springboot实现动态任务调度
众所周知SpringBoot中通过@Scheduled即可使用定时任务,但是我们有需求需要动态的定时导出报表这可怎么办呢,当然市面上还有很多的任务调度器也是不错的.本文主要教大家使用Nacos配置中心和SpringBoot实现动态任务调度.话不多说,代码奉上.public interface AbstractDynamicSchedule extends Runnable { /** * 任务名称 * @return 返回执行任务名称用于打日志 */ St
2020-08-07 15:14:14
3187
1
原创 SpringBoot非对称加解密---RSA、通过注解自动化实现
rsa-body-spring-boot使用方式源码地址:https://github.com/Barcke/rsa-body-spring-boot/tree/master导入对应的MAVEN包: <dependency> <groupId>com.barcke.y</groupId> <artifactId>rsa-body-spring-boot</artifactId> <version&g
2020-07-27 20:43:20
1247
5
原创 SpringBootMail JavaMailSender 发送邮件
前言: springboot中不需要在写复杂的email工具类啦 强大的Spring有提供JavaMailSender进行邮件发送.首先导包: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId></dependency>
2020-07-14 19:04:41
204
原创 docker搭建nacos1.3.0
1、简历nacos的数据库 数据库名称 nacos_config 用户名密码nacos nacos数据库脚本:/******************************************//* 数据库全名 = nacos_config *//* 表名称 = config_info *//******************************************/CREATE TABLE `config_info` ( `id` bigint(20) NO
2020-07-03 18:35:31
4866
2
原创 使用docker安装nginx并配置ssl证书实现https方式登录
前言: 本人的ssl证书是申请的阿里的免费ssl 上阿里云控制台ssl证书申请即可.1.首先定义nginx.conf的文件为了方便我们定义对应的负载和ssl证书配置并将配置挂在到docker容器中我的nginx.conf配置如下:worker_processes 1;events { worker_connections 1024;}http { include mime.types; default_type application/octet-s
2020-07-03 14:11:33
2408
4
原创 使用yapi、idea提供api文档整体操作流程
前言: Swagger-ui代码侵入型太强固使用yapi来做api文档提供工具.搭建yapi在idea中下载yapi的插件下载yapi插件后在msic.xml文件中加入如下配置 <component name="yapi"> <option name="projectToken">${token}</option> <option name="projectId">${id}</option> <opt
2020-07-01 15:38:49
1348
原创 通过docker搭建yapi1.8.5
启动 MongoDBdocker run -d --name mongo mongo获取yapi镜像 这里的yapi是本人通过dockerfile生成版本为1.8.5docker pull registry.cn-zhangjiakou.aliyuncs.com/barcke-util/yapi初始化数据库索引及管理员账号docker run -it --rm \ --link mongo:mongo \ --entrypoint npm \ --workdir /ap.
2020-07-01 15:30:22
269
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人