- 博客(228)
- 收藏
- 关注

原创 MySQL 事务级别、事务传播特性
事务:本地事务@Transactional(rollbackFor = Exception.class)exception分为运行时异常和非运行时异常error是一定会回滚的非运行时异常是RuntimeException以外的异常,以及用户自定义的Exception异常。java编译器会强制要求对异常进行处理。传播特性作用于内层方法上,加在外层方法上是无效的;内层异常总会影响外层;PROPAGATION_REQUIRED:如果不存在外层事务,就主动创建事务(内层会单独回滚);否则使用外
2021-10-19 20:22:42
1249
1
原创 Java 控制台乱码解决 (高版本 JDK >=19)
在使用 jdk 21 的时候, 我发现之前展示正常的字符, 突然都变乱码了.猜测原因是, 之前一个参数就能正确设置编码 (JDK 17), 但 JDK 高版本 (JDK 21) 改为分别进行设置了实际原因是, JDK 19 新增了两个参数来替代之前的但之前的参数默认为空, 后面的参数被额外设置编码 GBK, 下面进行讲解.
2025-05-06 12:02:12
381
原创 Spring Boot 应用优雅关闭
写这篇文章是因为看到 “线程池在使用结束后应该正确关闭.” 那么如果我们的 Spring 应用都无法正确关闭, 那么线程池肯定也无从保障。
2025-04-22 15:16:57
390
原创 《Java 并发编程实践》阅读笔记(一):线程重要性
例如,喝早茶的动作可以被进一步细化为:打开橱柜,挑选喜欢的茶叶,将一些茶叶倒入杯中,看看茶壶中是否有足够的水,如果没有的话加些水,将茶壶放到火炉上,点燃火炉,然后等水烧开等等。在事件线程中执行的任务如果都是短暂的,那么界面的响应灵敏度就较高,因为事件线程能够很快地处理用户的动作。对每条被执行的指令,都有相应的“下一条指令”,程序中的控制流是按照指令集的规则来确定的。然而,在现代操作系统中,线程数量已得到极大的提升,这使得在某些平台上,即使有更多的客户端,为每个客户端分配一个线程也是可行的。
2025-04-17 22:08:32
555
原创 Java 业务开发错误收集
摘要:本文总结了Java开发中的9个实用技巧:(1)if操作优化建议反向判断提前返回;(2)通过ClassLoader.getResourceAsStream()检查资源文件存在性;(3)ClassLoader路径不要使用前导斜杠;(4)JdbcTemplate批量执行SQL的注意事项;(5)ObjectMapper构造JavaType的方法;(6)使用SpringBoot工具将JsonNode转为Map;(7)Ordered接口排序不生效的解决方案;(8)JsonNode判断null/空/缺失节点的正确方
2025-04-03 11:00:48
1018
原创 阅读笔记: 架构的发展历程
Conway's Law: Melvin Conway 于 1967 年提出的一个观察结果: "Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure."
2024-12-08 22:53:22
1102
原创 Jackson
Jackson is a suite of data-processing tools for Java (and the JVM platform), including the flagship streaming JSON parser / generator library.
2024-09-12 17:42:22
432
原创 类加载与双亲委派
Class loaders in the Application Server runtime follow a delegation hierarchyNote that the class loader hierarchy is not a Java inheritance hierarchy, but a delegation hierarchy. In the delegation design, a class loader delegates classloading to its paren
2024-08-12 13:17:26
1012
原创 Markdown 查询文章
这里写自定义目录标题初学Vue, 关于data内的数据not defined的问题新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文
2024-07-31 15:24:37
902
原创 PV 操作
信号量 S当S >= 0表示某资源的的可用数;当S < 0表示其绝对值表示阻塞队列中等待改资源的进程数;P 操作表示 申请一个资源V 操作表示 释放一个资源P 操作:S := S - 1若S >= 0, 则执行 P 操作的进程继续执行若S < 0, 则将执行该操作的进程置为阻塞状态, 并将其加入到 “阻塞队列”V 操作:S := S + 1若S > 0, V 操作继续若S <= 0, 则从阻塞队列唤醒一个进程, 并将其加入到 “就绪队列”
2024-06-11 23:12:53
1783
翻译 Write For Others But Mostly For Yourself 为别人写作,但主要是为自己
现在我不只是在博客上公开写作,而是在我的团队中私下写作,当主题是我不能公开分享的东西,或者是我认为对他人没有价值的东西。因为我确实和人们分享它,所以我的脑海中会自动检测到BS,它会告诉我什么时候我的想法是草率的或不可靠的。我知道,如果我不小心,或者确实对我写的东西不小心,我不仅会浪费人们的时间,而且我可能会在互联网上被公开嘲笑。写了一段时间博客后,我意识到它教会了我如何思考。它肯定会有所帮助,但首先也是最重要的是,它是一个工具,人们可以用它来提升自己的游戏,并把他们的知识和批判性思维提升到一个新的水平。
2024-05-18 00:09:23
95
翻译 该项目包含一个11,000行代码文件 The project with a single 11,000-line code file
代码遵循一个粗略的模式,即获取有关用户的一些数据,检查是否满足某些条件,然后执行一些重复了一千次左右的操作。程序的所有状态都基于用户的权限,所以我们可以模拟报告错误的人,这样我们就可以看到他们所看到的。如果我做了一个改变,导致其他一些“功能”中断,基本上有0%的机会,我会知道它,直到一个星期后,当杰夫在市场营销将报告一个错误。我发现有趣的是,一个变量可能会在200-210行使用,然后再次在8544行使用。很久以前,在我的第一份软件工作中,我收到了一份内部产品的错误报告,我甚至不知道它的存在。
2024-05-18 00:06:39
105
原创 Service 层在 MVC 框架中的意义和职责
mvc 框架由 model,view,controller 组成,执行流程一般是: 在 controller 访问 model 获取数据,通过 view 渲染页面。mvc 模式是 web 开发中的基础模式,采用的是分层设计,各层之间职责分明。然而事与愿违,当我们日积月累的基于 mvc 模式开发之后,会逐渐的感受到层与层之间存在粘连和职责模棱两可的地方,这就是 service 层出现的重要原因。
2024-05-13 22:58:58
711
原创 解决 Oracle 表锁
程序更新大量数据的时候, 由于时间太长, 页面刷新又重新提交了一次, 结果后续的任何变动都直接卡住, 一开始以为是代码问题, 使用 jstack 命令导出了当前堆栈, 结果发现有重复的语句卡在 update 上了, 看 sql 语句, 发现就是正常的 update, 那问题大概率就是出在表被锁身上了. 于是搜刮了一下 oracle 的方面的资料, 顺便也记录一下。
2024-04-26 20:29:55
635
1
原创 Spring
Bean 容器注册组件@Primary 主注解@DependsOn 组件之间声明依赖关系@Lazy 第一次使用时才创建@Scope 声明组件的作用范围 (原型/单例)@Configuration 识别为配置类, 替换以前的配置文件@Componenet 组件@Indexed 加速注解, 所有标记了的组件, 会直接启动快速加载@Order 数字越小优先级越高@ComponentScan 包扫描@Conditional 条件注入。
2024-04-16 13:16:19
662
原创 Java 主流的 Inputstream 转 String 的方法
【代码】Java 主流的 Inputstream 转 String 的方法。
2024-04-01 10:24:53
3511
1
翻译 [Upgrading GitHub.com to MySQL 8.0] GitHub 升级 MySQL 8
GitHub使用MySQL来存储大量的关系数据。这是我们如何无缝升级我们的生产集群到MySQL 8.0的故事。, and15年前,GitHub作为一个Ruby on Rails应用程序开始,只有一个MySQL数据库。从那时起,GitHub已经发展了其MySQL架构,以满足平台的扩展和弹性需求,包括构建高可用性,实现测试自动化和分区数据。今天,MySQL仍然是GitHub基础设施的核心部分,也是我们选择的关系数据库。这是我们如何将1200多台MySQL主机升级到8.0的故事。
2024-03-28 11:35:31
130
转载 支付宝定时任务怎么做?三层分发任务处理框架介绍
以五福定制三层分发任务处理框架为例,虽然日常业务中,因为机器数量不固定,依旧无法做到任务的平滑调用,但我们可以借鉴最大化利用集群机器资源这一点,同时开启A/B组的定时任务,从而实现任务调度真正的负载均衡,提高系统整体的稳定性。在待处理任务变多,或者集群机器扩缩容变化频繁的情况下,任务处理的峰值量级无法保证。由于在Loader层获取要处理的任务数,交由Executor层执行时,并不能限制任务执行的qps,同时待处理任务数变多时,整个集群任务的qps就变得很高,对DB和其他外围系统来说,存在稳定性风险。
2024-03-27 13:54:08
328
原创 分布式系统架构1
目前比较成熟的分布式架构技术包括: J2EE, CORBA 和 .NET (本书于 2020.05 出版), 书重点讲述 J2EE, 一个由 Sun 公司推出的一项中间件技术 (或平台). 用于和多层分布式应用系统开发和部署。
2024-01-12 18:10:41
665
原创 Win11 电脑密码忘记, 但还记得 pin 码, 直接设置新密码
【代码】Win 11 电脑密码忘记, 但还记得 pin 码, 直接设置新密码。
2023-12-20 23:53:04
3248
原创 Vim 系列 (一) Using Marks in Vim
Vim 的运动命令非常灵活,适用于一般用途。您可以转到行首、替换单词或更改句子。如果内容与文件相关,例如重要或错误的函数定义、应用程序的入口点或尝试跟踪的堆栈,该怎么办?对于这些,您可以使用标记(读作:“书签”)。这些是文件中的“保存点”,您可以设置、在它们之间跳转,甚至与命令一起使用。
2023-11-22 18:24:33
832
原创 Library source does notmatch the bytecode for class XXX
由于使用 Lombok 插件会造成 源码 和 编译后的 .class 存在差别, 而 idea 的自动匹配机制 (匹配仓库的源码和) 会警告不匹配的代码.
2023-10-17 14:37:14
529
原创 用 SQL 找出某只股票连续上涨的最长天数
通过多张中间表, 写出结果SQL 作为查询语言而发明, 名字叫 “结构化查询”(structured query), 数学基础是 “关系模型”, 没有考虑复杂计算 (与之相对的是离散数学, 把 “数据存储 + 数据计算” 做在一起)
2023-10-13 14:18:51
949
原创 高速公路代码
放射线(1开头)、纵线(2开头)、横线(3开头)、纵向联络线(4开头)、横向联络线(5开头)、环线(6开头)字母后第一位数字为 1 表示以北京为中心呈放射线的国道,2 表示南北走向,3 表示东西走向。(1: 放射 2: 上下 3: 左右)国道:以大写字母 G 开头,字母后面是。省道:以大写字母 S 开头,字母后面是。县道:以大写字母 X 开头,字母后面是。位数:(1,2,4)
2023-09-10 13:57:50
263
原创 Mysql 主从复制
单表超过 500 万行 或 容量超过 2GB, 才推荐分库分表. 如果预计三年后的数据量根本达不到这个级别, 请不要在创建表时就分库分表。
2023-09-05 10:45:50
233
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人