- 博客(391)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 一次性下发100w个优惠卷/短信/二维码,技术架构如何设计?
分片+异步+MQ:避免单点压力,提升系统弹性。幂等:防止重复发放。批量+限流:防止下游接口被打爆。失败补偿:保证最终一致性。全链路监控:保障可观测、可追溯。一次性下发百万级券/短信/二维码,建议采用“分片+异步+消息队列+幂等+监控+补偿”架构,确保高可用、高性能、强一致性和可观测性。如需某一环节详细设计、代码实现、性能瓶颈分析,欢迎继续追问!
2025-06-21 18:21:37
840
原创 设计模式-六大基本原则
掌握这些原则,能显著提升代码质量,构建易于维护和扩展的软件系统!子类必须能够替换其父类,且不影响程序正确性。高层模块不应依赖低层模块,二者都应依赖抽象。一个类(或模块)应仅有一个引起变化的原因。:通过抽象和继承实现扩展,而非修改源码。一个对象应尽可能少地与其他对象发生交互。软件实体应对扩展开放,对修改关闭。客户端不应依赖它不需要的接口。:面向接口编程,解耦模块依赖。:减少耦合,避免“链式调用”。:继承关系应确保行为兼容性。:高内聚,避免“上帝类”。:避免臃肿接口,按需拆分。
2025-06-16 17:45:43
594
原创 【ChatGPT应用篇-1】助力Beauty代码的初体验
看雪 :https://zhuanlan.kanxue.com/article-23255.htm。掘金:https://juejin.cn/post/7233572338968231991/开发者头条:https://toutiao.io/posts/sm3x9qi。墨天轮:https://www.modb.pro/db/628560。
2023-06-12 17:42:09
328
原创 【ChatGPT散文篇】ChatGPT-清华大学的讲座要点
刚听了清华大学关于ChatGPT的讲座,总结几个要点:1、AI有可能成为地球上最初的硅基生命。2、AI已迭代至博士研究生的智力水平。3、以后将不存在学科和专业的概念,也不存在文科理科的区分,将是学科大融合。因为一个文科生哪怕不懂代码,只要会向AI提问,就能编程。至于给孩子选专业,现在不要再选绘画、翻译和计算机专业。4、人类绘画的版权是彻底保不住了,人类创造的文字版权也许还能挣扎一下,已有科研团队在研究版权保护的最小单元,算是濒死前再拯救一下。5、主讲人用AI半个小时写了1万4千字科幻小说。6、平庸的脑力劳
2023-06-10 17:12:14
2072
原创 hibernate-validator 源码导入 IDEA Compile error!
最近项目想使用 hibernate-validator,于是想看看其源代码。1、遇到的问题: 帮助文档:https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#validator-gettingstarted-createmodel 从gitHub上找到了源码库,源码地址:https://
2017-12-04 12:52:45
1235
原创 Idea 自动生成变量set方法插件
开发了一款简单的自动生成变量set方法插件可以访问:https://github.com/wangyingjie/generate-set/tree/master/zip在该文件夹下面有一个:Auto-generate-set.wmv 安装使用说明该插件是依赖 idea2017.2.6版本开发,目前支持2017.3,低版已测试不支持!插件效果:https://github.com/wangying
2017-11-29 16:42:16
15284
2
原创 IDEA JRebel热部署插件免费使用方法
IDEA 2017.2.5版本,先在File->Settings->Plugins->Browse Repositories,然后搜索JRebel,安装JRebel for Intellij。Rebel有一个免费获得永久使用权的方法(不是破解),登录https://my.jrebel.com这个网站,然后用Twitter或者Facebook账号登录这个网站,就能获得免费的激活码;特别注意:登录Fac
2017-10-28 15:13:50
1329
原创 阿里Java开发规范IDEA开发插件
初次体验阿里Java开发规范IDEA开发插件,这个规范插件真的Java开发人员必备的工具,值得点赞!1、下载安装插件Settings >> Plugins >> Browse repositories…2、重启IDEATools >> Alibaba Coding Guidelines3、代码分析检查单Settings >> inspections >> All-Check 代码检查单4、代码检
2017-10-15 12:05:45
9405
原创 《阿里巴巴Java开发手册(终极版)》
今天《阿里巴巴Java开发手册(终极版)》出炉……1、新版本历程 10月份阿里会出炉针对开发规范开发的IDE插件,值得期待!2、新版本下载地址: https://pan.baidu.com/s/1c1UQM7Q
2017-09-25 09:55:22
35389
原创 Java8优化优先检索缓存的代码
1、模拟Redis的缓存客户端 提供优化首先从缓存获取、缓存取不到则从数据获取并更新缓存的方法。import java.util.HashMap;import java.util.Map;import java.util.Objects;import java.util.function.Supplier;/** * @author: wangyingjie1 * @versi
2017-09-21 11:15:17
568
原创 方便好用的 Idea mybatis 插件 MyBatisCodeHelper
给大家推荐一个 idea mybatis的插件:MyBatisCodeHelper 源码gitHub地址:https://github.com/gejun123456/MyBatisCodeHelper 优点: 1、mapper文件(即表对应的dao)与xml文件自由切换,方便代码评审; 2、自动代码生成功能提供开发效率
2017-03-30 11:49:15
26519
原创 Tomcat源码导入Idea2016.2.3
想研究一下Tomcat源码,并把它导到IDE中,以方便调试,参考了网上的一些资料,再结合自己的实际操作,现将已导入Ide并调试通过的Tomcat源码包放到了 gitHub上,有需要的朋友可以直接下载导入Ide直接进行调试运行,具体操作步骤如下:1、准备工作(1)、本地安装 jdk1.7 以上版本,配置好环境变量 (2)、官网下载安装 idea2016.2.3 (3)、安装 git
2016-12-06 21:25:01
3978
原创 本地代码提交至gitHub远程仓库的方法
本地代码提交至gitHub远程仓库的方法1、创建gitHub代码库本文以导入 Struts2 源代码为例,http://git.apache.org/struts.git 可下载源代码。(1)、首先你需要注册一个gitHub账号;登录该账号创建代码库空间,如下截图: (2)、创建好的gitHub代码库如下图所示: 2、下载Struts2 源代码由于想研究一下 Structs2 的源代码,所以下载
2016-11-28 14:08:10
3030
原创 Spring 注解事务处理流程源码分析
声明:本文是自己在学习Spring注解事务处理源代码时所留下的笔记; 难免有错误,敬请读者谅解!!!1、事务注解标签 <tx:annotation-driven />2、tx 命名空间解析器 事务tx命名空间解析器TxNamespaceHandler org.springframework.transaction.config.TxNamespaceHandler#init3、A
2016-11-17 18:26:59
4379
原创 如何打乱List 或 Array元素的顺序
如何打乱List 或 Array元素的顺序打乱List或者Array数据元素的顺序,其实就是让集合中的元素变得随机,举个例子,有如下一个Array数据: 其中存储了 1, 2, 3, 4, 5 一共五个元素,经过程序随机排序后得到另外一个随机乱序的数组。其Java实现代码如下: public class ArrayRandomUtils { public static void main(
2016-08-10 12:28:38
10597
原创 分布式任务(Worker)处理方案
以下分别给出了3种实现抢宝分布式Worker的方案,其中第3种方案,是种前两种方案的一个整合实现。1. 方案1:服务化Worker设计基于soa基础服务实现分布式worker,通用性强,扫描的worker只负责扫描待执行的任务做分发,具体的任务处理交给soa服务端任务处理线程池;目前的Worker配置策略保留,将现有的worker执行方式作为Soa服务化Worker执行流程的降级方法1.1.部署图
2016-07-18 08:22:18
5071
转载 京东一元抢宝业务分库分表实现策略
1、 京东一元抢宝 以下分享的链接为我在京东参与的主要的业务系统; 有幸参与了这个项目的始终,一个从无到有的过程; 原文是我的leader写的。 2、 上一张设计图 3、 原文访问地址 http://mp.weixin.qq.com/s?__biz=MzIwODA4NjMwNA==&mid=2652897827&idx=1&sn=0d72e65
2016-07-17 17:30:14
2096
原创 ElasticSearch2.2.3 安装文档
软件准备 下载jdk 1.7 以上版本的jdkhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载 ES 2.2.3版本https://www.elastic.co/thank-you?url=https://download.elastic.co/elasti
2016-07-09 20:23:28
1906
转载 【转】JVM实战-G1参数调优
当在进行混合回收的过程中,由于无论是新生代还是老年代都是基于复制算法进行的,都需要将各个Region中的存活对象拷贝到别的Region中,此时如果一旦出现拷贝的过程中发现没有空闲的Region可以进行存储了,就会触发一次失败!在运行过程中,G1收集器会调整新生代和老年代的Region数量,主要是通过adapt代的大小来调整对象晋升的速度和年龄,从而达到为收集器设置的暂停时间目标,因此不建议手动设置新生代和老年代的大小,只要设置整个堆的大小即可。#设置新生代大小,默认5%,默认最大60%。
2025-10-11 14:04:29
171
原创 JVM实战-G1参数调优
当在进行混合回收的过程中,由于无论是新生代还是老年代都是基于复制算法进行的,都需要将各个Region中的存活对象拷贝到别的Region中,此时如果一旦出现拷贝的过程中发现没有空闲的Region可以进行存储了,就会触发一次失败!在运行过程中,G1收集器会调整新生代和老年代的Region数量,主要是通过adapt代的大小来调整对象晋升的速度和年龄,从而达到为收集器设置的暂停时间目标,因此不建议手动设置新生代和老年代的大小,只要设置整个堆的大小即可。#设置新生代大小,默认5%,默认最大60%。
2025-09-21 15:07:55
1060
原创 Spring、SpringBoot 本身为什么不提供 Bean 的异步初始化
Spring官方不直接支持Bean级异步实例化,是为了保证依赖可用性、生命周期一致性、异常可控性和容器的可预测性。异步实例化的核心思想:Bean本身快速注册,重型任务交给异步线程,业务代码可感知就绪状态。适用场景:大数据加载、远程预热、慢资源初始化等。业务权衡:异步初始化的需求极少数场景才有推荐通过懒加载或业务异步实现,如果必须异步,建议将耗时任务下沉到业务逻辑层,Bean初始化阶段尽量轻量。
2025-07-02 11:43:50
1148
原创 避免 Java NPE 异常的 10 大优化手段(附代码示例)
在方法入口处显式校验参数,快速失败(Fail-Fast),避免空值传递到下游逻辑。避免调用方因未判空导致 NPE,遵循 “返回空集合而不是 null” 原则。Apache Commons 或 Guava 提供安全的空值处理工具。通过代码规范、语言特性、工具约束,将 NPE 消灭在编码阶段。结合 IDE 或 Lombok 在编译期检查空值风险。通过工具在编译期或代码审查阶段发现潜在 NPE。强制调用方处理空值场景,减少遗漏检查的风险。)的自动拆箱可能引发 NPE。,避免条件分支判断。
2025-07-01 15:21:24
612
原创 【转】深入理解分布式系统的 7 种数据分片策略
数据分片是将全量数据按照某种规则分散存储在多个数据存储上的一种技术,用于平衡系统的存储压力和读写压力,并实现数据存储和系统性能的线性扩展能力。常见的数据中间件如MySQL、Redis、HBase、ElasticSearch、Kafka、Hive等,都会使用一种或多种数据分片方式。以下是七种常见的数据分片方式:Hash取余分片:根据数据的哈希值进行取余操作,将数据分配到不同的存储节点上。一致性Hash分片:根据数据的哈希值在哈希环上进行映射,将数据分配到与其哈希值最近的节点上,以实现负载均衡。
2025-06-30 11:18:04
1098
原创 【缓存技术】深入分析如果使用好缓存及注意事项
核心高频数据用 Kryo,边缘数据用 JSON,并通过统一接口封装,实现灵活切换。:某社交平台用户服务缓存 1 千万用户数据,需降低内存占用并提升吞吐量。:明星离婚新闻导致热点文章缓存失效,DB被击穿。:攻击者频繁请求不存在的数据(如负库存ID)。:用户下单时需实时检查库存,库存服务独立部署。:瞬时 10 万订单创建,DB 写入压力大。:北京、法兰克福、北美区域库存数据实时同步。:随机过期时间 + 永不过期结合异步更新。适用场景:高吞吐写入,允许短暂数据丢失。:促销活动结束,大量优惠券缓存同时过期。
2025-06-26 21:08:56
1209
原创 AI如何让你编码天赋异禀-任督二脉打通术
Talk is cheap, show me the code.” 鼓励多写代码,少空谈;“Code is cheap, show me the talk.” 鼓励多思考、多交流、深度理解。两者结合,才是优秀技术人的全面素养!
2025-06-24 17:33:24
697
原创 转载-秒杀系统—1.架构设计和方案简介
为了保证不出现超卖,就要舍弃A,保证CP。因为在七层协议上进行负载均衡的性能远不如LVS,而仅仅在四层协议上进行负载均衡的LVS又不能进行一些高阶的转发,也就是没有办法根据HTTP请求的内容去进行一些高阶的功能和转发。接着,从内核空间切换到用户空间,将HTTP协议请求交给用户空间运行的一个负载均衡技术去处理,也就是根据请求里的一些内容来将请求转发给真实的后端服务器。请求报文的目标端口改写成选定服务器的相应端口(RS提供的服务端口),最后将修改后的报文发送给选出的服务器RS(Real Server)。
2025-06-24 16:55:27
1202
原创 【转】如何画好架构图:架构思维的三大底层逻辑
数据结构“(这里指广义的数据结构,不是大学教科书上的数据结构),是任何一个软件的基石,其重要性怎么强调都不过分,系统的性能、复用性、扩展性、维护性、数据一致性等,往往都和“数据结构“密切相关。泳道中的每1列,是一个跨团队的其他人的系统,还是自己系统内部的一个子系统,还是一个逻辑模块,还是一个用户?有了物理部署,才能和上面的系统架构图对应起来,让人明白,上面的每个方块,是一个集群,还是单机版的进程?备注:这里说的系统/子系统,在物理上对应了一个集群(一个微服务的集群,或者一个独立部署的系统)。
2025-06-21 18:09:37
705
原创 IDEA智能编码AI插件-codegeex
指导手册:https://zhipu-ai.feishu.cn/wiki/CcduwOpcFiXh4skCQxfc7Ahgnmc官网地址:https://codegeex.cn/
2025-06-17 09:44:14
142
原创 Stream 超级好,Map 也很酷,但一定要注意 toMap() 的坑
【代码】Stream 超级好,Map 也很酷,但一定要注意 toMap() 的坑。
2025-06-16 21:29:33
356
原创 设计模式-迪米特法则(Law of Demeter, LoD)
一个对象应尽可能少地与其他对象发生交互,只与直接的朋友(成员变量、方法参数、方法返回值中的对象)通信,避免依赖间接的类。,适用于任何需要降低依赖关系的场景,尤其在大型系统或模块化架构中价值显著。:最少知识原则(Least Knowledge Principle)的调用形式,这种“火车残骸式”代码会增加耦合性。迪米特法则通过限制对象间的交互范围,推动代码向。
2025-06-16 17:49:33
515
原创 设计模式-单一职责原则(Single Responsibility Principle, SRP)
通过合理应用 SRP,可以显著降低代码的复杂度,为后续扩展和维护奠定坚实基础。:通过职责分离,提高代码的内聚性,降低耦合度,增强可维护性和可扩展性。:一个类(或模块、方法)应仅有一个引起其变化的原因。
2025-06-16 17:42:16
429
原创 设计模式-开闭原则(Open/Closed Principle, OCP)
通过抽象化和多态性设计,使系统在不修改已有代码的前提下,通过扩展实现新功能,提升可维护性和稳定性。通过遵循 OCP,可以构建高内聚、低耦合的系统,显著提升软件的可维护性和生命周期。系统需支持多种支付方式(信用卡、支付宝),未来可能接入微信支付。系统需支持绘制多种形状(如圆形、矩形),未来可能新增三角形。:软件实体(类、模块、函数等)应对扩展开放,对修改关闭。开闭原则是设计模式的核心原则之一,强调。
2025-06-16 17:41:42
567
原创 设计模式-里氏替换原则(Liskov Substitution Principle, LSP)
通过接口定义行为契约、避免继承滥用、编写兼容性测试,可有效提升代码的健壮性和可维护性。:子类必须能够替换其父类,且替换后程序的正确性不受影响。:确保继承关系的合理性,避免子类破坏父类的行为契约。里氏替换原则是面向对象设计的基石之一,强调。
2025-06-16 17:41:12
345
原创 设计模式-接口隔离原则(Interface Segregation Principle, ISP)
通过拆分臃肿的接口为更小、更具体的接口,减少不必要的依赖,提高系统的灵活性和可维护性。在微服务、插件化系统和 API 设计中,ISP 是确保模块独立性和可复用性的关键原则。,推动系统向高内聚、低耦合的方向演进。:客户端不应被迫依赖它们不使用的接口方法。
2025-06-16 17:40:42
496
如何获取mybatis 执行 的 sql
2016-07-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅