<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ZERO]]></title><description><![CDATA[&emsp;&emsp;写程序归根到底就是做两件事---算法实现和错误处理]]></description><link>https://blog.youkuaiyun.com/zero__007</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zero__007]]></copyright><item><title><![CDATA[深入mybatis:Creating a new SqlSession到查询语句耗时长问题]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/139211481</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/139211481</guid><author>zero__007</author><pubDate>Sun, 26 May 2024 10:12:49 +0800</pubDate><description><![CDATA[转载自:https://guisu.blog.youkuaiyun.com/article/details/136236476?]]></description><category></category></item><item><title><![CDATA[Spring Gateway下的GC停顿排查之旅]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/139194434</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/139194434</guid><author>zero__007</author><pubDate>Sat, 25 May 2024 11:10:39 +0800</pubDate><description><![CDATA[查看容器实例，发现的确会打印出大量的日志文件，几乎一个小时就有十几个文件，在查看下logback的配置xml，发现目前的配置是每100M一个文件，所以会产生很多FileOutputStream是可以解释的。特别是，我们的容器配置是2核4G的低配实例，即使开启了并行处理，也只是多了一个线程，减少耗时的程度有限，只能缓解问题，但并未根治。在通过对比前后两星期的dump文件发现，随着程序的运行，越来越多的FileOutputStream出现，而这些都是用来打日志的，并且都是同名的日志文件出现了几千次。]]></description><category></category></item><item><title><![CDATA[Java 逃逸分析]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/139120267</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/139120267</guid><author>zero__007</author><pubDate>Wed, 22 May 2024 14:54:08 +0800</pubDate><description><![CDATA[关于 Java 逃逸分析的定义：逃逸分析（Escape Analysis）简单来讲就是，Java Hotspot 虚拟机可以分析新创建对象的使用范围，并决定是否在 Java 堆上分配内存的一项技术。开启逃逸分析：-XX:+DoEscapeAnalysis关闭逃逸分析：-XX:-DoEscapeAnalysis显示分析结果：-XX:+PrintEscapeAnalysis逃逸分析技术在 Java SE 6u23+ 开始支持，并默认设置为启用状态，可以不用额外加这个参数。]]></description><category></category></item><item><title><![CDATA[干货 | 1分钟售票8万张！门票抢票背后的技术思考]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/138807446</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/138807446</guid><author>zero__007</author><pubDate>Mon, 13 May 2024 16:09:07 +0800</pubDate><description><![CDATA[商品上线的时候将库存写入Redis，在活动扣减库存时，使用incrby原子扣减成功后将扣减消息MQ发出，在Consumer端消费消息执行DB扣减库存，若下单失败，执行还库存操作，也是先操作Redis，再发MQ，在Consumer端，执行DB还库存，如果未查询到扣减记录（可能扣库存MQ有延迟），则延时重试，并通过埋点与监控检测核心指标是否有异常。例如：商品描述信息，以前缓存过期时间为5min，现在缓存过期时间为24H，被动刷新时间为1min，用户每次请求都返回上一次的缓存，但每1min都会异步构建一次缓存。]]></description><category></category></item><item><title><![CDATA[记一次生产事故]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/138521113</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/138521113</guid><author>zero__007</author><pubDate>Tue, 07 May 2024 09:56:41 +0800</pubDate><description><![CDATA[转载自：https://juejin.cn/post/7311167273650454580。]]></description><category></category></item><item><title><![CDATA[毕玄：稳定性，难的不是技术，而是……]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/137753889</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/137753889</guid><author>zero__007</author><pubDate>Sun, 14 Apr 2024 20:36:22 +0800</pubDate><description><![CDATA[只有把稳定性当成业务的功能实现一样，有相应的人员配备和投入，例如做一个业务可能需要多少人，相应的稳定性这块也固定投入多少人，你说到底多少比例合理呢，其实也说不太清楚，但这种简单粗暴的方式其实是最有效的，当然，是不是要把稳定性上升到这样的高度，也需要根据业务的性质、业务所处的阶段来具体判断，以及有这样的投入的情况下，怎么去评判相应职责的团队也仍然是个很复杂的话题。很多做过稳定性这事的人都知道，做这个事情最麻烦的是很难被认可，做的好，不出问题，不懂的人不知道你做了什么，出了问题的时候觉得你到底做了什么，]]></description><category></category></item><item><title><![CDATA[java.net.Socket异常场景及解决方案]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/137092449</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/137092449</guid><author>zero__007</author><pubDate>Wed, 27 Mar 2024 22:56:00 +0800</pubDate><description><![CDATA[转载自：https://blog.youkuaiyun.com/hzp666/article/details/96854876。]]></description><category></category></item><item><title><![CDATA[Mybatis在SpringBoot中是如何被加载执行]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/137073254</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/137073254</guid><author>zero__007</author><pubDate>Wed, 27 Mar 2024 12:00:38 +0800</pubDate><description><![CDATA[由于MapperScannerConfigurer这个类实现了BeanDefinitionRegistryPostProcessor，所以它就会被生成bean之前加载，调用它的postProcessBeanDefinitionRegistry方法，postProcessBeanDefinitionRegistry里面就会scan我们指定的package里的@Mapper类。里会返回代理对象，对象的类型即 构造函数里传进来的 mapperInterface。]]></description><category></category></item><item><title><![CDATA[Spring事务源码解析]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/136044047</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/136044047</guid><author>zero__007</author><pubDate>Mon, 05 Feb 2024 22:15:00 +0800</pubDate><description><![CDATA[通过这个接口，Spring为各个平台如JDBC、Hibernate等都提供了对应的事务管理器，但是具体的实现就是各个平台自己的事情了。从上面可知，方法级别上的注解会覆盖类级别上的注解，两个findTransactionAttribute方法都在AnnotationTransactionAttributeSource实现，Spring并不直接管理事务，而是提供了多种事务管理器，它们将事务管理的职责委托给JDBC或者JTA等持久化机制所提供的相关平台框架的事务来实现。Spring的事务属于逻辑事务。]]></description><category></category></item><item><title><![CDATA[通过SQL分析数据库加锁]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/136039185</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/136039185</guid><author>zero__007</author><pubDate>Mon, 05 Feb 2024 22:00:00 +0800</pubDate><description><![CDATA[转载自：https://blog.youkuaiyun.com/fedorafrog/article/details/104249140。]]></description><category></category></item><item><title><![CDATA[InnoDB的MVCC原理]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/135977915</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/135977915</guid><author>zero__007</author><pubDate>Thu, 01 Feb 2024 22:00:00 +0800</pubDate><description><![CDATA[MVCC (Multi-Version Concurrency Control) 是一种基于多版本的并发控制协议，只有在InnoDB引擎下存在。MVCC是为了实现事务的隔离性，通过版本号，避免同一数据在不同事务间的竞争，可以把它当成基于多版本号的一种乐观锁。当然，这种乐观锁只在事务级别未提交锁和已提交锁时才会生效。MVCC最大的好处，读不加锁，读写不冲突。在读多写少的OLTP应用中，读写不冲突是非常重要的，极大的增加了系统的并发性能。]]></description><category></category></item><item><title><![CDATA[一次彻底解决因数据库全表扫描引发系统卡顿问题的实践]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/135930055</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/135930055</guid><author>zero__007</author><pubDate>Tue, 30 Jan 2024 21:15:00 +0800</pubDate><description><![CDATA[思路比解决方案更重要。]]></description><category></category></item><item><title><![CDATA[Spring Boot微服务性能降九成！用Arthas定根因]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/135868748</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/135868748</guid><author>zero__007</author><pubDate>Fri, 26 Jan 2024 16:08:31 +0800</pubDate><description><![CDATA[大家在自定义 Feign 的编解码器时，如果用到了 SpringEncoder / SpringDecoder，应避免 HttpMessageConverters 的重复初始化。如果不需要使用那些默认的 HttpMessageConverter，可以在初始化 HttpMessageConverters 时将第一个入参设置为 false，从而不初始化那些默认的 HttpMessageConverter。另外，应该了解不同的部署方式在类加载器频繁查找和加载资源时是存在性能差异的。]]></description><category></category></item><item><title><![CDATA[JVM stop the world]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/135484450</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/135484450</guid><author>zero__007</author><pubDate>Tue, 09 Jan 2024 23:00:00 +0800</pubDate><description><![CDATA[转载自：https://zhuanlan.zhihu.com/p/91937583。]]></description><category></category></item><item><title><![CDATA[Spring Boot 中自定义异常处理]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/135149519</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/135149519</guid><author>zero__007</author><pubDate>Fri, 22 Dec 2023 22:00:00 +0800</pubDate><description><![CDATA[转载自：https://blog.youkuaiyun.com/u013360850/article/details/93101903Spring Boot 中提供了默认的异常处理，但是对于应用来说，这些信息并不应该直接返回或者不够明确，需要结合自己的情况进行定制。当两种方式都实现时，HandlerExceptionResolver要先于ControllerAdvice执行。]]></description><category></category></item><item><title><![CDATA[Kafka索引的二分查找算法]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/134731070</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/134731070</guid><author>zero__007</author><pubDate>Fri, 01 Dec 2023 23:00:00 +0800</pubDate><description><![CDATA[转载自：https://baijiahao.baidu.com/s?]]></description><category></category></item><item><title><![CDATA[分布式系统的SLA]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/134666302</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/134666302</guid><author>zero__007</author><pubDate>Thu, 30 Nov 2023 00:00:00 +0800</pubDate><description><![CDATA[服务等级协议，是指系统服务提供者（Provider）对客户（Customer）的一个可量化的服务承诺，常见于大型分布式系统中，用于衡量系统服务是否稳定健康的常见方法。]]></description><category></category></item><item><title><![CDATA[java的几把锁]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/134665934</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/134665934</guid><author>zero__007</author><pubDate>Wed, 29 Nov 2023 23:45:00 +0800</pubDate><description><![CDATA[转载自：https://blog.youkuaiyun.com/u013256816/article/details/104912386。]]></description><category></category></item><item><title><![CDATA[C10K场景解决方案]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/134653236</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/134653236</guid><author>zero__007</author><pubDate>Tue, 28 Nov 2023 00:00:00 +0800</pubDate><description><![CDATA[总结以上造成交易超时的原因有两个：**1、心跳机制导致 netty worker 线程忙碌。**在每个心跳任务中，提供方向所有 1 个心跳周期内未收发过报文的消费方发送心跳；消费方向所有 1 个心跳周期内未收发过报文的提供方发送心跳。提供方上所连接的消费方较多，导致心跳报文堆积；同时，处理心跳过程消耗较多 CPU，影响了业务报文的处理时效。**2、全连接队列容量不足。**在提供方重启后该队列溢出，导致大量单边连接产生。单边连接下首笔交易大概率超时失败。下一步思考。]]></description><category></category></item><item><title><![CDATA[记一次线上数据库死锁定位]]></title><link>https://blog.youkuaiyun.com/zero__007/article/details/132064441</link><guid>https://blog.youkuaiyun.com/zero__007/article/details/132064441</guid><author>zero__007</author><pubDate>Sat, 05 Aug 2023 13:15:00 +0800</pubDate><description><![CDATA[有些批量操作可以利用multiquery更新数据库，但有些不可，例如对于同一张表不同字段的多行更新。批量更新，并且每个dao可以多线程更新（在不同事务内同时请求更新），而且没有按照一定顺序。例如事务1更新id为1，2，3的数据，事务2更新id为3，2，1的数据，这样就会发生死锁。转载自：https://zhanghaoxin.blog.youkuaiyun.com/article/details/78255670。按顺序更新，例如把入参改为TreeSet，并且dao对象实现Comparable接口。]]></description><category></category></item></channel></rss>