自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java 逃逸分析详解

java逃逸分析详解

2025-11-26 16:51:00 381

原创 全网最强的自定义注解实现VO/DTO的Id到name的自动绑定功能

全网最强Id到name的自动绑定

2025-11-23 13:48:31 712

原创 通用 List 分批切割并循环查询数据库工具类

通用分页查询工具类

2025-11-18 16:04:04 391

原创 对外HTTP 接口安全设计全流程指南

对外http接口安全设计全流程指南

2025-11-17 05:29:39 977

原创 一篇文章通关聚合支付设计模式详细设计

聚合支付设计模式详细设计

2025-11-14 09:31:37 782

原创 使用责任链模式设计电商下单流程(Java 实战)

责任链设计模式

2025-11-13 09:43:55 688

原创 自定义限流方案(基于 Redis + 注解)

*** 限流的时间窗口,单位:秒* 比如 60 就是 60 秒内最多 N 次*//*** 时间窗口内允许的最大访问次数*//*** 限流的 key,默认空表示自动生成(类名#方法名)* 可以写上 "#ip" 表示按 IP 限流(在切面里处理)*//*** 是否按 IP 维度限流*/

2025-11-12 09:27:49 476

原创 # 钉钉第三方登录(网页免登 / OAuth2 授权)实战指南

说明:下面的步骤以。你可以按需要替换成自己语言,这里给出一份常见的。

2025-11-10 15:32:18 1095

原创 Zookeeper 分布式锁实战版

想快:用 Curator 的想懂:看原生“临时顺序节点 + 监听前驱”想稳:锁路径分业务 + finally 释放 + 超时兜底。

2025-11-09 08:53:33 1382

原创 统一发包管理(Maven 仓库)详细步骤

适用于希望在公司/团队内部统一管理 Java 构件(JAR、POM、源码包)、实现统一依赖来源、防止“本地有但别人拉不到”的情况,并方便与 CI/CD 对接的场景。下面以为例说明,也可替换为 JFrog Artifactory、阿里云制品库等。

2025-11-08 08:14:57 678

原创 IntelliJ IDEA 插件开发指南,编写你的第一个IDEA插件

IntelliJ IDEA插件开发指南

2025-11-07 09:38:35 1075

原创 一篇文章让你打通nginx的任通二脉

Nginx(Engine X)是一款高性能的 Web 服务器、反向代理服务器及邮件代理服务器。以轻量、高并发、稳定著称,被广泛用于网站架构中。

2025-11-06 12:55:01 420

原创 MybatisPlus优雅实现多租户数据隔离(自定义字段)

优雅实现多租户数据隔离

2025-11-03 03:52:03 698

原创 Spring Boot 项目集成MapStruct 看这一篇就够了(超详细步骤)

Mapstruct 详细使用步骤,这一篇文章就够了

2025-11-02 08:20:18 1337

原创 优雅实现Java 幂等性组件

Java优雅实现幂等

2025-11-01 10:00:00 1028

原创 实现国际化(i18n)看这一篇文章就够了

springboot 实现国际化

2025-10-30 10:30:00 301

原创 Spring Boot 统一异常处理,这样写才优雅!

统一异常处理不是简单捕获,而是构建"可维护、可追踪、可演化"的错误体系。优雅的开发者,不仅要让代码能跑,还要让错误能"说话"。🚀。

2025-10-29 09:00:00 826

原创 annotation-logging-guide

Loggable/** 是否记录入参 *//** 是否记录返回值 *//** 业务标签,便于筛选 */可作用于类或方法;方法优先级高于类。

2025-10-28 18:08:16 781

原创 SpringBoot两级缓存实现

本方案实现: - ✅ 高性能读写路径(Caffeine + Redis)\✅ 简洁无侵入整合 Spring Cache\✅ 支持多实例缓存一致性广播\✅ 可自由扩展到多级缓存或多数据源缓存场景推荐使用场景:高并发读多写少的服务,如用户资料、配置中心、商品详情、字典表等。标签:Spring Boot|Redis|Caffeine|缓存一致性|分布式缓存。

2025-10-25 09:47:36 203

原创 SpringBoot2_Nacos_DynamicTp教程

基于 Spring Boot 2.x + Nacos 的 DynamicTp(Dromara)详细接入步骤,按“依赖 → Nacos 配置 → 应用配置 → 启动注解/代码使用 → 监控与告警 → 常见坑”组织。所用版本与示例均以官方文档的最新稳定说明为准(1.2.2 线)

2025-10-25 06:31:40 679

原创 ELK(Elasticsearch + Logstash + Kibana + Filebeat)采集方案

≥ 20.x、命令)里边有你的 Logback JSON 文件,如:(行级 JSON,包含字段)如果你用的是我上一条给的 Spring Boot + Logback 配置,只要确定它的 JSON 日志落在这个目录即可。

2025-10-24 14:34:38 190

原创 IO模型详解

假设应用程序的进程发起IO调用,但是如果内核的数据还没准备好的话,那应用程序进程就一直在阻塞等待,一直等到内核数据准备好了,从内核拷贝到用户空间,才返回成功提示,此次IO操作,称之为阻塞IO。如果内核数据还没准备好,可以先返回错误信息给用户进程,让它不需要等待,而是通过轮询的方式再来请求。这就是非阻塞IO,流程图如下:非阻塞IO的流程如下:非阻塞IO模型,简称NIO,。它相对于阻塞IO,虽然大幅提升了性能,但是它依然存在性能问题,即频繁的轮询,导致频繁的系统调用,同样会消耗大量的CPU资源。可以考虑IO复用

2024-06-23 07:55:52 1105 1

原创 RabbitMQ延时队列(实现定时任务)

消息的TTL(Time To Live)就是消息的存活时间。RabbitMQ可以对队列和消息分别设置TTL。对队列设置存活时间,就是队列没有消费者连着的保留时间。对每一个单独的消息单独的设置存活时间。超过了这个时间,我们认为这个消息就死了,称之为死信。如果队列设置了TTL,消息也设置了,那么会取小的。所以一个消息如果被路由到不同的队列中,这个消息死亡的时间有可能不一样(不同的队列设置)。这里单讲单个消息的TTL,因为它才是实现延迟任务的关键。

2024-06-23 07:17:40 961

原创 RabbitMQ如何保证消息可靠

消息不会丢失,会重新变为Ready,下一次有新的Consumer连接进来就发给他。* 我们收到很多消息,自动回复给服务器ack,只有一个消息处理成功,宕机了。* @param correlationData 当前消息的唯一关联数据(这个是消息的唯一id)* 1、默认是自动确认的,只要消息接收到,客户端会自动确认,服务端就会移除这个消息。* 3、消费端确认(保证每个消息被正确消费,此时才可以broker删除这个消息)。* 只要消息没有投递给指定的队列,就触发这个失败回调。

2024-06-23 06:16:09 1270

原创 如何写出高效的代码?

Arrays.asList 返回的 List 并不是我们期望的 java.util.ArrayList,而是 Arrays 的内部类ArrayList。内部类的ArrayList没有实现add方法,而是父类的add方法的实现,是会抛出异常的呢。就是不同的关键业务,分配不同的线程池,然后线程池参数也要考虑恰当哈。之前写过几篇线程池的,觉得还不错,有兴趣的朋友可以看一下哈。或者说,只是一个字符串变量,直接初始化字符串常量就可以了,没有必要愣是要new String().rollbackFor属性设置错误。

2024-06-23 05:57:22 721

原创 设计模式之单例模式

1.单例模式的定义    保证一个类仅有一个实例,并提供一个访问它的全局访问点。    这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象      的方式,可以直接访问,不需要实例化该类的对象。1.非线程安全懒汉模式public class SingletonDemo {    private static Sin...

2018-11-13 11:09:40 264

原创 MQ如何实现消息延时

一、缘起很多时候,业务有“在一段时间之后,完成一个工作任务”的需求。例如:滴滴打车订单完成后,如果用户一直不评价,48小时后会将自动评价为5星。一般来说怎么实现这类“48小时后自动评价为5星”需求呢? 常见方案:启动一个cron定时任务,每小时跑一次,将完成时间超过48小时的订单取出,置为5星,并把评价状态置为已评价。假设订单表的结构为:t_order(oid, finish...

2018-11-03 14:17:43 1470

原创 什么时候用MQ

1.起因引入一个技术之前,首先应该解答的问题是,这个技术解决什么问题。就像微服务分层架构之前,应该首先回答,为什么要引入微服务,微服务究竟解决什么问题2.MQ是干嘛的消息总线(Message Queue),后文称MQ,是一种跨进程的通信机制,用于上下游传递消息。 在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只...

2018-10-31 08:51:50 1449 2

原创 DNS轮询

经常有人会说DNS轮询是过时的技术,是可以被其他方案替代的,nginx前端加入lvs和keepalived可以替代“DNS轮询”,F5能搞定接入层高可用、扩展性、负载均衡,可以替代“DNS轮询”,“DNS轮询”究竟是不是过时的技术,是不是可以被其他方案替代,接下来本文将要做细致讨论。1.面临的问题nginx、lvs、keepalived、f5、DNS轮询,每每提到这些技术,往往讨论的是接入...

2018-10-29 14:20:58 8652 4

原创 架构 秒杀系统优化思路

1.秒杀为什么难做?1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息);2)微博系统,每个人读你关注的人的数据,一个人读多个人的数据;3)秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万。又例如:12306抢票,票是有限的,库存一份,瞬时流量...

2018-10-26 21:38:59 279

原创 企业高并发成熟解决方案思考

要想解决高并发的问题,先需要弄清楚企业整体架构高并发发生在二处:1.负载均衡  2.数据库处分析完企业整体架构之后 1:开始搭建负载均衡服务器 2:演示负载均衡服务器的效果第一种:解决方案    DNS场景:我说的大数据量处理是指同时需要对数据进行检索查询,同时有高并发的增删改操作; 大数据量的处理例如腾讯,盛大,动辄数以亿计的帐号,怎么能这...

2018-09-18 14:29:23 1110

原创 关于分布式集群间实现Session共享的思考

1.开篇针对企业,为了应对庞大的用户访问压力,目前大多数大型网站服务器都采用集群部署的方式;针对个人,仅一台服务器而言,也会安装多个tomcat进行错时更新,保证更新后台业务时服务不断开,即模拟了集群的运行方式。在此集群中,我们就不得不考虑一个用户鉴权的问题,即在不同服务上如何保证用户均已登录,并能获取相同的用户登录信息。2.java web 公认的用户鉴权机制说此部分之前先了解几个概念: 1.请...

2018-04-02 20:21:14 778

原创 Java Spring WebSocket实现后端消息主动推送

这篇文章将介绍如何构建一个简单的WebSocket消息推送Demo使用eclipse建立maven项目后引入相关的依赖jar包,如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/X...

2018-03-30 14:54:53 15395 1

原创 Tomcat实战-调优方案

最近项目跑着发现速度有点慢,然后就分析了一下原因,发现tomcat采用的都是默认配置,于是决定对tomcat调优。我们可以通过优化tomcat以此来提高网站的并发能力。提高Tomcat的性能可以分为两个方向。1.服务器资源:服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响,所以说服务器性能牛B,Tomcat也不会太差。当然提高服务器的硬件配置,是需要大量RMB的支持的。所以不到万不得已...

2018-03-19 19:56:57 667

原创 生活感悟

已经差不多1年没有写过博客了,这一年工作也比较忙,这一年还是把主要精力发在了生活上,这一年已经慢慢适应了南昌的生活,从北京回到南昌这样一个生活节凑相对慢的城市,但是技术还是需要不断学习啊,革命需要继续,所以从下周开始,决定开始重新写写博客了....................

2018-03-17 21:09:16 284

转载 Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

今天工作任务比较轻松,研究了一下Dubbo中间件Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)标签: Dubbospringmvczookeeper负载均衡2014-11-14 08:14 56411人阅读 评论(48)收藏举报分类: SpringMVC(10)

2017-02-24 17:19:26 795 1

原创 JVM调优:基本垃圾回收算法

我们可以从不同的的角度去划分垃圾回收算法:按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep):

2017-02-16 06:43:58 375

原创 JVM调优总结概念

数据类型Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,return

2017-02-16 05:53:33 385

原创 java八大排序算法之冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。  冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作

2017-02-15 06:16:03 414

原创 java并发基础

当一个对象或变量可以被多个线程共享的时候,就有可能使得程序的逻辑出现问题。 在一个对象中有一个变量i=0,有两个线程A,B都想对i加1,这个时候便有问题显现出来,关键就是对i加1的这个过程不是原子操作。要想对i进行递增,第一步就是获取i的值,当A获取i的值为0,在A将新的值写入A之前,B也获取了A的值0,然后A写入,i变成1,然后B也写入i,i这个时候依然是1. 当然java的内存模型没有上面这么

2015-09-11 11:11:30 429

Struts+hibernate经典的分页代码

比较好的实现了分页效果,非常适合初学者。

2012-09-27

空空如也

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

TA关注的人

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