- 博客(1513)
- 收藏
- 关注
原创 阿里架构师:天天高并发,这个时代达不到百万以上的并发量都不叫高并发!!!
对象的共享对象的组合基础构建模块第二部分介绍了并发应用程序的构造理论,包括应用程序中并行语义的分解及其与逻辑任务的映射,任务的取消与关闭等行为的实现,以及Java线程池中的一些高级功能,此外还介绍了如何提高GUI应用程序的响应性。任务执行取消与关闭线程池的使用图形用户界面应用程序第三部分介绍了并发编程的性能调优,包括如何避免活跃性问题,如何提高高并发代码的性能和可伸缩性以获得理想的性能,以及在测试并发代码正确性和性能时的一些实用技术。避免活跃性危险性能与可伸缩性并发程序员的测试。
2024-04-17 14:46:42
1649
原创 阿里Java面试手册-Java面试题总结(附答案)——互联网大厂都在问的Java面试题,而你从没看过!
索引是一种数据结构,用于加快数据库的查询速度。在MySQL中,可以使用CREATE INDEX语句来创建索引。例如,CREATE INDEX idx_name ON table_name (column_name);可以创建名为idx_name的索引,它将基于table_name表中的column_name列。Spring cloud流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。
2024-04-13 19:29:51
1001
原创 Java程序员真的还有未来吗?如何备战2024春招Java面试?并狂拿大厂offer?(java高级岗)
嘿,小伙伴们,你们有没有想过Java程序员还有没有未来?哈哈,别担心,我这就来给你们答疑解惑!首先,让我们来看看Java的发展历程。自从Java诞生以来,它就一直是编程界的一颗璀璨明星。从Web应用到企业级应用,再到移动应用,Java无处不在。那么,现在呢?现在,随着人工智能、大数据和云计算的兴起,Java依然发挥着重要的作用。这些领域都需要大量的Java程序员来支持它们的发展。那么,有人会说:“哎呀,现在出现了那么多新的编程语言和框架,Java程序员会不会被淘汰啊?”哈哈,别担心,Java程序员们。
2024-04-11 19:32:01
1853
原创 Java面试还问八股文吗?什么是八股文?什么是场景题?春招也太难了!该如何快速储备突击?
类比科举的固定格式考题,Java 面试的八股文是行业内形成的、高频且固定范围的基础知识点考题,是 Java 开发的通用基础门槛,核心考察候选人的技术基本功是否扎实,无项目经验的校招生是考察重点。核心考察范围。
2026-02-03 13:29:57
1473
原创 从 0 到 1 用 Spring Boot 3 + Redis 打造一个生产级通用幂等与防重中间件(含图解 + 代码 + 案例)
通过Redis的原子操作 + 唯一Token + AOP注解,我们实现了一个轻量级、高可用的幂等与防重中间件。代码已适配Spring Boot 3,可直接集成到生产环境!
2026-02-03 13:15:03
342
原创 SpringBoot 秒实现在线 Word 编辑、协同、转化等功能
最近有个项目需求是实现前端页面可以对word文档进行编辑,并且可以进行保存,于是一顿搜索,找到开源第三方onlyoffice,实际上onlyOffice有很多功能,例如文档转化、多人协同编辑文档、文档打印等,我们只用到了文档编辑功能。开始敲黑板了。
2026-02-03 13:11:51
728
原创 Redis宕机了,如何恢复数据?
Rdb、Aof两种持久化机制各有优缺点,需要根据自己的实际业务来衡量,到底使用哪种机制,最能满足当下业务,我的建议数据不能丢失时,内存快照和 AOF 的混合使用是一个很好的选择;如果允许分钟级别的数据丢失,可以只使用 RDB;如果只用 AOF,优先使用 everysec 的配置选项,因为它在可靠性和性能之间取了一个平衡。
2026-02-03 13:11:02
795
原创 记录一次MySQL+Redis实现优化百万数据统计的方式
经过短暂的思考后,决定以归档的方式进行数据处理,即在存储日志前,先对日志数据进行分门别类的处理,比如需要统计每个时段的事件访问量,那么就以小时和事件状态为标识进行存储,假设在12:30分有一条异常的访问,那么在消费端接收到消息后,先查询数据库中是否存在12点且访问异常的数据,如果存在,那么次数加一,否则将该数据插入到数据库中,这样在一小时内统一时间状态只会存在一条数据。上面的搞完后,我突然又发现,如果要统计24小时内的数据,那前23小时的数据肯定都已经固定了,不会在发生变化了。
2026-02-03 13:10:23
506
原创 美团动态线程池,真香啊!
在 Java 开发中,想要提高系统性能,线程池已经是一个 90%以上的人都会选择使用的基础工具项目中可能会创建很多线程池,既有 IO 密集型的,也有 CPU 密集型的,但线程池的参数并不好确定;需要有套机制在运行过程中动态去调整参数线程池运行过程中的各项指标一般感知不到;需要有套监控报警机制在事前、事中就能让开发人员感知到线程池的运行状况,及时处理配置变更需要及时推送到客户端;需要有高可用的配置管理推送服务,配置中心是现在大多数互联网系统都会使用的组件,与之结合可以大幅度减少开发量及接入难度。
2026-02-03 13:09:47
840
原创 别再乱写了,Controller 层代码这样写才足够规范!
本篇主要要介绍的就是controller接口地址(也就是URL地址)、2.请求方式(一般就是get、set,当然还有put、delete)、3.请求数据(request,有head跟body)、4.响应数据(response)当接收到请求时,如何优雅的校验参数;返回响应数据该如何统一的进行处理;接收到请求,处理业务逻辑时抛出了异常又该如何处理;
2026-02-03 13:08:59
755
原创 从3s到25ms!看看人家的接口优化技巧,确实很优雅!!
关于锁粒度:就是你要锁的范围有多大,不管是 synchronized 还是 redis 分布式锁,只需要在临界资源处加锁即可,不涉及共享资源的,不必要加锁,就好比你要上卫生间,只需要把卫生间的门锁上就可以,不需要把客厅的门也锁上。我们都用过数据库连接池,线程池等,这就是池思想的体现,它们解决的问题就是避免重复创建对象或创建连接,可以重复利用,避免不必要的损耗,毕竟创建销毁也会占用时间。也就是预取思想,就是提前要把查询的数据,提前计算好,放入缓存或者表中的某个字段,用的时候会大幅提高接口性能。
2026-02-03 13:08:08
619
原创 从夯到拉,锐评13个 Java Web 框架
约定优于配置、自动装配机制、微服务全家桶(Spring Cloud)、文档极其完善、招人容易。以下评价基于技术特性、生态成熟度、市场采用情况等客观维度,不代表对任何框架的贬低。:老牌微服务框架,整合了Jetty、Jersey、Jackson等成熟组件。:Kubernetes环境、Serverless、微服务、追求极致性能。:模块化设计、响应式支持、GraalVM原生、文档规范。:启动快、内存低、支持GraalVM、响应式编程友好。:事件驱动、Reactor模式、性能极致、支持多语言。
2026-02-03 13:07:15
642
原创 告别登录逻辑混乱!基于 SpringBoot 工厂+策略模式统一多端登录
/ 登录类型标识,如"password"、"wechat"// 登录方法,参数用Map传递不同登录方式的参数回顾三年前的面条代码,再看现在的实现,最大的感受是:好的设计模式能让代码在需求变化面前保持优雅。工厂模式和策略模式的组合,就像给登录模块装了一个 "热插拔" 接口,新增功能时不用改核心逻辑,只需要添加新的 "插件"。最后送大家一句口诀:登录逻辑别硬刚,策略模式来帮忙,工厂负责创实例,开闭原则记心上,Spring Boot 搭舞台,依赖注入真叫爽,需求万变不用慌,代码优雅没商量!
2026-02-03 13:06:16
240
原创 卷王必备!SpringBoot极简审批流:1行代码搞定请假系统,摸鱼时间翻倍
表示Activiti工作流引擎的入口,用于获取各种管理API操作的对象。用于管理流程定义的API,包括流程的部署和删除等操作。用于管理流程实例的API,包括启动、暂停和删除流程实例等操作。用于管理任务的API,包括创建、完成和查询任务等操作。用于查询历史记录的API,包括查询已完成的任务、流程实例和变量等信息。这5个Service我们已经很熟悉了,现在跟大家介绍这部分API,大家应该更容易理解了。其中我们用来获取各类Service类,用来部署流程图,用来创建流程图实例、用来查询任务和完成任务;
2026-01-29 21:40:06
548
原创 牛掰,MySQL 8.2 支持读写分离了!
在规模上,我们在副本之间分配读取,但这必须在应用程序中以某种方式进行管理:指向在某个地方写入并在其他地方读取。在 MySQL 8.2 中,MySQL Router 现在能够识别读取和写入,并将它们路由到主实例(如果是 InnoDB 集群),或者路由到异步复制源以进行写入,将其路由到辅助实例或副本以进行读取。我们可以看到,默认情况下,如果执行读操作,我们将访问到副本,但如果启动事务,我们将到达复制源(主),而无需更改端口并使用相同的连接。我们一直在等待的 MySQL 读/写分离功能 现在终于可以使用了!
2026-01-29 21:38:56
164
原创 SpringBoot 秒实现在线 Word 编辑、协同、转化等功能
最近有个项目需求是实现前端页面可以对word文档进行编辑,并且可以进行保存,于是一顿搜索,找到开源第三方onlyoffice,实际上onlyOffice有很多功能,例如文档转化、多人协同编辑文档、文档打印等,我们只用到了文档编辑功能。开始敲黑板了。
2026-01-29 21:37:39
848
原创 记录一次MySQL+Redis实现优化百万数据统计的方式
经过短暂的思考后,决定以归档的方式进行数据处理,即在存储日志前,先对日志数据进行分门别类的处理,比如需要统计每个时段的事件访问量,那么就以小时和事件状态为标识进行存储,假设在12:30分有一条异常的访问,那么在消费端接收到消息后,先查询数据库中是否存在12点且访问异常的数据,如果存在,那么次数加一,否则将该数据插入到数据库中,这样在一小时内统一时间状态只会存在一条数据。上面的搞完后,我突然又发现,如果要统计24小时内的数据,那前23小时的数据肯定都已经固定了,不会在发生变化了。
2026-01-29 21:36:27
543
原创 Redis宕机了,如何恢复数据?
Rdb、Aof两种持久化机制各有优缺点,需要根据自己的实际业务来衡量,到底使用哪种机制,最能满足当下业务,我的建议数据不能丢失时,内存快照和 AOF 的混合使用是一个很好的选择;如果允许分钟级别的数据丢失,可以只使用 RDB;如果只用 AOF,优先使用 everysec 的配置选项,因为它在可靠性和性能之间取了一个平衡。
2026-01-29 21:35:43
918
原创 AI大模型这么火爆!程序员有必要学习吗?大厂面试官都在问了!
这是一个值得深入探讨的问题。在过去,程序员的工作主要集中在传统的软件开发、编程代码的编写与调试等方面。然而,随着AI大模型的崛起,软件开发的模式和需求正在发生着深刻的变化。从技术发展的趋势来看,AI大模型代表了未来科技发展的一个重要方向。它拥有强大的语言理解、生成和推理能力,能够处理复杂的自然语言任务,如文本生成、机器翻译、问答系统等。这意味着在未来的软件开发中,结合AI大模型的技术将变得越来越普遍。
2026-01-29 21:31:02
915
原创 精准突击2026金三银四Java面试题及学习储备计划,稳拿大厂offer
刷题平台的选择与使用如今有许多知名的算法刷题平台,如 LeetCode、牛客网、HackerRank 等。LeetCode 上收集了大量的面试算法题,涵盖了各种难度级别和类型,并且有很多用户分享的解题思路和代码,比较适合准备大厂面试的开发者。我们可以根据自己的水平选择合适难度的题目开始练习,从简单题入手,逐步提高解题能力和信心。牛客网则有很多针对国内大厂的真题和模拟题,并且提供了在线测试和交流社区,方便我们了解大厂的面试风格和考察重点。
2026-01-29 21:25:25
510
原创 AI大模型冲击之下,Java程序员还有机会吗?如何突击Java面试?
保持积极心态“金三银四”期间面试机会较多,但竞争也激烈,可能会遇到多次面试失败的情况。这时候,要保持积极乐观的心态,将每次面试都看作是一次学习和成长的机会。不要因为一次面试的失利而气馁,而是要从失败中吸取教训,不断完善自己。相信自己的能力,相信通过持续的努力和积累,最终一定能够获得理想的工作机会。可以在面试前后进行一些放松的活动,如听音乐、散步等,缓解面试带来的压力。总结反思经验每完成一次面试,都要及时进行总结反思。除了回顾自己在知识和表达上的问题外,还可以思考面试官的提问角度和关注点。
2026-01-29 21:19:28
718
原创 当下环境Java程序员究竟有多难?该如何改变现状?春招有希望了!
在当今科技飞速发展的时代,软件行业的竞争愈发激烈,而作为软件开发领域中占据重要地位的 Java 程序员,他们在当下的环境中究竟面临着怎样艰难的处境呢?又该通过何种方式来改变这一现状呢?随着春招季的临近,这是否能为他们带来新的希望呢?
2026-01-29 21:17:21
876
原创 求求你别再手动部署jar包了,太low了!动态上传热部署真的太爽了!
如果用户上传的jar包含了spring的上下文,那么就需要扫描jar包里的所有需要注入spring容器的bean,注册到当前系统的spring容器中。接下来系统要把上传的jar包加载到当前线程的类加载器中,然后通过完整类名,加载得到该实现的Class对象。近期开发系统过程中遇到的一个需求,系统给定一个接口,用户可以自定义开发该接口的实现,并将实现打成jar包,上传到系统中。考虑到用户实现接口的两种方式,使用spring上下文管理的方式,或者不依赖spring管理的方式,这里称它们为注解方式和反射方式。
2026-01-26 13:21:38
41
原创 SpringBoot在一次http请求中耗费了多少内存?
当知道 1 次 RPC 请求和 Http 请求需要的堆内存大小后,你可以精确地计算:指定的并发量之下,系统需申请多少堆内存。Jmeter 调用 20000 次 Http 接口以后,通过手动 GC 的方式触发 GC,通过 GC 详细日志计算压测期间新生代堆内存增长量。我们希望 1 次 Rpc、Http 请求申请堆内存足够少,这样可减少 GC 导致的系统停顿,提高系统性能,单机可以支撑更高的并发量。举例来说,在我司的线上环境中, 单次RPC请求的内存消耗在 0.5MB 到 1MB 之间 ,内存占用量相对较大。
2026-01-26 13:20:44
341
原创 MyBatis-Flex来了!完爆MyBatis-Plus?
我们可以轻松的使用 Mybaits-Flex 链接任何数据库,其内置的 QueryWrapper^亮点 帮助我们极大的减少了 SQL 编写的工作的同时,减少出错的可能性。同时,在执行的过程中,没有任何的 Sql 解析(Parse)轻运行。整体来讲,这个框架是Mybatis的增强版,几乎集成了mybatis plus、jooq、fluent mybatis的所有优点,大家可以探索一番。MyBatis-Flex 支持的数据库类型,如下表格所示,我们还可以通过自定义方言的方式,持续添加更多的数据库支持。
2026-01-26 13:20:10
537
原创 禁止血压飙升:阿里大佬写的Controller太优雅了!
不是很明白为什么有些喜欢在 controller 写业务逻辑的,曾经有个同事问我(就是喜欢在 controller 写业务的),你这个接口写在那里,我需要调一下你这个接口。我满脸问号??不是隔壁的模块吗,为什么要调我的接口?直接引用的我的 service 去调方法就好了。这个就是痛点,各写各的,冗余代码一堆。曾经看到一个同事写一个保存的方法,虽然逻辑挺多,我滑动了好久都还没有方法还没有结束。一个方法整整几百行……
2026-01-26 13:19:34
422
原创 阿里跳槽来的工程师,写个try catch的方式都这么优雅!
Slf4j@Component/*** 生产环境*/@Autowired/*** 当前环境*//*** 获取国际化消息* @param e 异常* @return*//*** 业务异常* @param e 异常* @return 异常结果*//*** 自定义异常* @param e 异常* @return 异常结果*//*** Controller上一层相关异常* @param e 异常* @return 异常结果*/})
2026-01-26 13:19:00
364
原创 接口防刷处理,这样实现更优雅!
咋说呢就是通过自定义注解中定义 x 秒内 y 次访问次数,禁用时长为 z 秒自定义注解 + 在需要进行防刷处理的各个接口方法上在拦截器中通过反射获取到各个接口中的x, y, z值即可达到我们想要的接口自由目的。
2026-01-26 13:18:13
358
原创 自己写一个分布式定时任务框架+负载均衡+OpenAPI异步调用!
其实一开始用powerjob作为项目中的中间件,业务中的任务操作使用其openAPI。主流框架往往为了适配更多的场景,支持足够多的功能,往往体积大,且不易动态扩展,为了对项目有最大的控制,在解决以上业务场景的前提下,进行部分功能的修剪,也希望能更好的从中学习主流框架的设计思想,于是决定重写一个定时任务框架。对于producer,前面提到,为了应对大量定时任务的场景,对于任务的操作,应全部是异步的,我们引入超时机制即可,当超过一定的时间未收到ack,或者返回错误响应,选择下一个server发起重试。
2026-01-26 13:17:19
514
原创 公司弃用 Nginx,选择这款工具!
今天,我们很高兴有机会在此介绍 Pingora,这是我们使用 Rust 在内部构建的新 HTTP 代理,它每天处理超过 1 万亿个请求,提高了我们的性能,并为 Cloudflare 客户带来了许多新功能,同时只需要我们以前代理基础架构的三分之一的 CPU 和内存资源。随着 Cloudflare 规模的扩大,我们已经超越了 NGINX 的处理能力。多年来它一直运作良好,但随着时间的推移,它在我们规模上的局限性意味着我们有必要构建一些新的东西。
2026-01-26 13:16:35
525
原创 如何加快 SQL 查询速度的同时保持 SQL 的简洁性?
在本文中,我们介绍了优化 SQL 查询的一些技巧。通常,对查询速度产生最大影响的因素是正确使用索引。希望本文中的内容能帮助到你。
2026-01-26 13:15:58
558
原创 AI大模型冲击之下,Java程序员还有机会吗?是该拥抱AI大模型,还是保持现状?金三银四如何突击Java面试?
当前AI大模型主要冲击的是$$ \text{Java岗位价值} = \frac{\text{系统复杂度} \times \text{业务定制需求}}{\text{标准化程度}} $$
2026-01-26 13:13:03
1082
原创 SpringBoot接口防抖(防重复提交)的一些实现方案
设置额外选项:过期时间和SET_IF_ABSENT选项”,有些同学可能不太清楚SET_IF_ABSENT是个啥,这里我解释一下:SET_IF_ABSENT是 RedisStringCommands.SetOption 枚举类中的一个选项,用于在执行 SET 命令时设置键值对的时候,如果键不存在则进行设置,如果键已经存在,则不进行设置。从测试的结果上看,防抖是做到了,但是随着缓存消失、锁失效,还是可以发起同样的请求,所以要真正做到接口幂等性,还需要业务代码的判断、设置数据库表的UK索引等操作。
2026-01-25 19:47:17
207
原创 牛掰,MySQL 8.2 支持读写分离了!
在规模上,我们在副本之间分配读取,但这必须在应用程序中以某种方式进行管理:指向在某个地方写入并在其他地方读取。在 MySQL 8.2 中,MySQL Router 现在能够识别读取和写入,并将它们路由到主实例(如果是 InnoDB 集群),或者路由到异步复制源以进行写入,将其路由到辅助实例或副本以进行读取。我们可以看到,默认情况下,如果执行读操作,我们将访问到副本,但如果启动事务,我们将到达复制源(主),而无需更改端口并使用相同的连接。我们一直在等待的 MySQL 读/写分离功能 现在终于可以使用了!
2026-01-25 19:46:45
56
原创 零停机更新代码:SpringBoot新技能,太6了~
在个人或者企业服务器上,总归有要更新代码的时候,普通的做法必须先终止原来进程,因为新进程和老进程端口是一个,新进程在启动时候,必定会出现端口占用的情况,但是,还有黑科技可以让两个SpringBoot进程真正的共用同一个端口,这是另一种解决办法,我们下回分解。那么就会出现一个问题,一种简单办法是,新代码先用其他端口启动,启动完毕后,更改nginx的转发地址,nginx重启非常快,这样就避免了大量的用户访问失败,最后终止老进程就可以。
2026-01-25 19:46:10
371
原创 曾经的王,突然 MySQL 倒下了!!!
在使用或计划使用 AI 工具的人中,只有不到 3% 高度信任它们的准确性,而有两倍多的人(大约 6%)非常不信任。ChatGPT 是最受欢迎的 AI 搜索工具,被 83% 的受访者使用,其次是 Bing AI (20%)、WolframAlpha (13%) 和 Google Bard AI (10%)。GitHub Copilot 是最受欢迎的 AI 开发工具,被 55% 的受访者使用,其次是 Tabnine (13%) 和 AWS CodeWhisperer (5%)。
2026-01-25 19:45:33
219
原创 真狠,为了干掉 HTTP ,Spring团队又开源nohttp了!
另一方面,ROB 表示 Spring 团队已更新所有主机以确保使用 HTTPS,每个站点都支持 HTTPS、重定向到 HTTPS,并使用 Strict Transport Security。如果你近期准备面试跳槽,建议在ddkk.com在线刷题,涵盖 一万+ 道 Java 面试题,几乎覆盖了所有主流技术面试题,还有市面上最全的技术五百套,精品系列教程,免费提供。但是有些情况下确实无法使用 HTTPS,例如,Spring 链接的某些站点不支持 HTTPS、XML 命名空间标识符必须与文档中的标识符匹配等。
2026-01-25 19:44:47
282
原创 把接口加速10倍:SpringBoot 3 + 本地缓存「金字塔」实战,实现碾压级性能提升!
接口 RT 300 ms → 优化到 30 ms”的常见路径:把数据库 IO 砍掉 → 用缓存把网络 IO 砍掉 → 本地缓存把序列化砍掉 → 零拷贝远程 Redis 一次往返 1-2 ms 看似不多,高并发下CPU 上下文 + 序列化 + 网络抖动会放大到 5-10 ms;而本地缓存命中时只有几十纳秒。本文用 Spring Boot 3 搭建「三级金字塔」:L1 Caffeine本地 → L2 Redis远程 → L3 DB。
2026-01-25 19:43:54
248
原创 Spring6.0+Boot3.0:秒级启动、万级并发的开发新姿势
虚拟线程的资源管理策略、GraalVM的反射配置优化、OAuth2授权服务器的定制扩展等深度实践方向。对比GraalVM原生镜像与传统JAR包运行指标。本次升级标志着Spring生态正式进入云原生时代。轻量级线程支持高并发场景(需JDK 19+)启动时间缩短至毫秒级,内存占用降低50%+启动时间2.3s | 内存占用480MB。启动时间0.05s | 内存占用85MB。电商秒杀系统、实时聊天服务等高并发场景。类似Feign的声明式REST调用。声明式客户端简化服务间调用。统一API错误响应格式。
2026-01-25 19:43:19
213
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅