<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[BigBug_500的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/BigBug_500</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; BigBug_500]]></copyright><item><title><![CDATA[事务、分布式事务常见解决方案与对比]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/138973384</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/138973384</guid><author>BigBug_500</author><pubDate>Thu, 16 May 2024 19:56:44 +0800</pubDate><description><![CDATA[从 CPU 到内存、到磁盘、到操作系统、到网络，计算机系统处处存在。工程师和科学家努力使用各种软硬件方法对抗这种不可靠因素，保证数据和指令被正确地处理。在网络领域有 TCP 可靠传输协议、在存储领域有 Raid5 和 Raid6 算法、在数据库领域有基于 ARIES 算法理论实现的事务机制……本文将从实际场景出发（Trade、Fund），介绍传统事务下的并发操作问题、分布式场景下操作多数据源面临的问题，然后给出一些常用的解决方案。]]></description><category></category></item><item><title><![CDATA[Kafaka核心设计与实践原理（第一部分）]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/136241426</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/136241426</guid><author>BigBug_500</author><pubDate>Thu, 22 Feb 2024 19:01:00 +0800</pubDate><description><![CDATA[(系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等)（由此也可以把 Kafka 作为长期的数据存储系统来使用，只需要把对应的数据保留策略设置为“永久”或启用主题的日志压缩功能即可）Kafka的设计目标是高吞吐量，所以他的一些特性都和这个目标相关，如。]]></description><category></category></item><item><title><![CDATA[实现领域驱动设计-实体、领域服务]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/134540175</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/134540175</guid><author>BigBug_500</author><pubDate>Mon, 27 Nov 2023 19:37:59 +0800</pubDate><description><![CDATA[当领域中的某个操作过程或转换过程不是实体或者值对象的职责时，我们应该将该操作放在一个单独的接口中，即领域服务。请确保该领域服务和业务、技术通用语言是一致的；并且保证它是无状态的；并且能够明确地表达限界上下文中的通用语言。另外一种解释：在战术建模当中，并非所有模型都是事物。有些模型是对领域中的一些行为操作进行建模。此类模型我们称之为领域服务。我们希望在领域设计当中统一用模型对象进行交互。此时领域服务使用细粒度的领域对象如实体或者值对象进行交互，在服务内部描述领域知识得出结果并将其返回（]]></description><category></category></item><item><title><![CDATA[实现领域驱动设计-应用结构]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/134497548</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/134497548</guid><author>BigBug_500</author><pubDate>Mon, 20 Nov 2023 23:11:39 +0800</pubDate><description><![CDATA[符合REST原则的系统具有更好的松耦合性和可伸缩性，基于REST的系统被分为很多较小的资源块，每一个资源块都可以独立地测试和调试，并且每一个资源块都表示了一个可重用的入口点。HTTP设计本身以及URI成熟的重写与缓存机制使得RESTful HTTP成为一种不错的架构。CQRS(Command Query Responsibility Segregation)，Command 与 Query 分离的一种模式。Command：命令则是对会引起数据发生变化操作的总称，即新增，更新，删除这些操作，都是命令。]]></description><category></category></item><item><title><![CDATA[技术人生的发展与问题思考]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/132460049</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/132460049</guid><author>BigBug_500</author><pubDate>Fri, 06 Oct 2023 22:36:54 +0800</pubDate><description><![CDATA[是负责使用技术能力解决业务问题，提供稳定可靠的技术支撑，确保业务安全合规低风险地健康发展，并通过技术或业务创新来推动业务发展；负责向业务各方提供各种必要的技术支撑，通过合理的数据分析为业务决策提供依据；通过对技术领域的积累和发展，通过业务领域的理解和落地影响业务决策；负责构建梯队完整、能力全面、制度完善的技术团队来支撑业务发展。总结：对一个具体的业务而言，自己是否处在技术领域责任链的最顶端。即是否为最终责任人。]]></description><category></category></item><item><title><![CDATA[定时任务方案实现与对比]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/130457046</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/130457046</guid><author>BigBug_500</author><pubDate>Tue, 02 May 2023 17:20:51 +0800</pubDate><description><![CDATA[ScheduledExecutorService 继承线程池，也是把任务提交给线程池执行，只不过它的任务类进行了扩展。ScheduledExecutorService 自定义了阻塞队列 DelayedWorkQueue 给线程池使用，它可以根据 ScheduledFutureTask 的下次执行时间来阻塞 take 方法，并且新进来的 ScheduledFutureTask 会根据这个时间来进行排序，最小的最前面。]]></description><category></category></item><item><title><![CDATA[Java Memory Model]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/130253759</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/130253759</guid><author>BigBug_500</author><pubDate>Sun, 30 Apr 2023 11:57:45 +0800</pubDate><description><![CDATA[简单来说就是系统在执行代码的时候并不一定是按照你写的代码的顺序依次执行。]]></description><category></category></item><item><title><![CDATA[ABTEST平台建设思路与方案]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/129873555</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/129873555</guid><author>BigBug_500</author><pubDate>Sun, 30 Apr 2023 11:56:47 +0800</pubDate><description><![CDATA[可将实验分为互斥流量实验和正交流量实验，分别对应下图中的实验1和实验2。实验类型一句话特点介绍优点缺点互斥流量实验（随机实验）将流量随机的分配到某个组上进行实验1.请求只会获得到一个组的结果 2. 可认为是只有一层的正交流量实验1. 实验简单，在做数据分析时，只需要对比所有互斥实验即可1.由于组之间流量互斥，100的流量所分的组是有限的。2. 若所有运行中实验把流量占满后， 将无法在同一个流量入口下再新增实验，将影响业务的AB推进正交流量实验。]]></description><category></category></item><item><title><![CDATA[DDD系列：五、实际项目应用]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/129836131</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/129836131</guid><author>BigBug_500</author><pubDate>Sun, 30 Apr 2023 11:53:28 +0800</pubDate><description><![CDATA[Domain-Driven Design 是一种软件/应用结构设计方法论，它把，用于应对复杂且多变的业务。DDD的设计目标是，将，同时，提高软件的设计质量。同时，优先设计业务领域模型，屏蔽掉了大部分数据模型、技术实现细节，让开发者和上游下游的业务沟通上，减少gap。]]></description><category></category></item><item><title><![CDATA[DDD系列：四、领域层设计规范]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/129827795</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/129827795</guid><author>BigBug_500</author><pubDate>Sun, 30 Apr 2023 11:50:34 +0800</pubDate><description><![CDATA[在接口层面，当把多个类似的业务，做到同一个接口中时，容易出现参数膨胀，所以在设计接口时，考虑Single Responsibility Principle，若不同的接口有相同的一些操作，需要下沉到Application Service层中去。接口层直接对接业务，可以快速的变化，但我们希望ApplicationService层的调整比较小，Domain层几乎没有变化。]]></description><category></category></item><item><title><![CDATA[DDD系列：三、Repository模式]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/129827770</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/129827770</guid><author>BigBug_500</author><pubDate>Sun, 30 Apr 2023 11:50:01 +0800</pubDate><description><![CDATA[​。]]></description><category></category></item><item><title><![CDATA[DDD系列：二、应用架构设计演变]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/129827639</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/129827639</guid><author>BigBug_500</author><pubDate>Sun, 30 Apr 2023 11:49:42 +0800</pubDate><description><![CDATA[​    通过规定一个固定的架构设计，可以让团队内有一个统一的开发规范，降低沟通成本，提升效率和代码质量。目标。]]></description><category></category></item><item><title><![CDATA[DDD系列：一、 Domain Primitive]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/129827596</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/129827596</guid><author>BigBug_500</author><pubDate>Sun, 30 Apr 2023 11:48:12 +0800</pubDate><description><![CDATA[​    软件开发中，是一个永恒的挑战。如使用一些设计模式或范例，从偏技术的角度来降低软件复杂度，而 DDD 的目标是对业务设计提出一种架构思想，进而降低复杂度。​​    在一个特定领域里，拥有精准定义的、可自我验证的、拥有行为的 Value Object。]]></description><category></category></item><item><title><![CDATA[多级缓存建设方案]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/129741867</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/129741867</guid><author>BigBug_500</author><pubDate>Sat, 29 Apr 2023 11:31:26 +0800</pubDate><description><![CDATA[xx系统中对容量和耗时有较高要求，以支付优惠立减为例，每个用户咨询可用立减时，都会过一遍全量生效活动。目前日常活动数3000+，目标2w+；日常秒级咨询量1w+，大促22w+。所以如何支撑日常和大促的业务非常具有挑战性。对此我们做了很多优化，其中缓存是整个优化的基石。本次缓存设计参考自yy系统，其代码经过了长时间的验证，所以我们希望输出一套缓存标准化方法，尽量满足当前已有业务场景，经过验证后能推广至其他系统，帮助大家夯实缓存系统，为业务发展保驾护航。]]></description><category></category></item><item><title><![CDATA[业务维度digest日志的记录与监控方案]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/129433273</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/129433273</guid><author>BigBug_500</author><pubDate>Sat, 29 Apr 2023 11:24:35 +0800</pubDate><description><![CDATA[满足从业务整体的维度，对于一个业务接口，记录一行请求日志，并通过某个 Unique Id（如UserId、OrderId）将多行日志关联起来，最终产出一批和业务强相关的数据，帮助业务或管理层更加清晰、及时的了解到业务变化情况，做出更合理的业务发展判断。​		   描述的需求中，涉及到了digest日志记录、日志数据清洗、日志数据呈现方式等，但在本文档中，我们重点讨论项目中digest日志的记录方案。]]></description><category></category></item><item><title><![CDATA[如何提高代码质量]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/129318131</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/129318131</guid><author>BigBug_500</author><pubDate>Mon, 06 Mar 2023 14:27:00 +0800</pubDate><description><![CDATA[好和坏是一个比较笼统的概率，代码质量高低是一个综合各种因素得到的结论，并不能通过单一的维度去评价一段代码写的好坏。对一段代码的质量评价，常常有很强的主观性。比如，怎么样的代码才算可读性好，每个人的评判标准都不大一样。定义解释可维护性、可扩展性能够在不修改或少量修改原有代码的情况下，通过扩展的方式添加新的功能代码。（对修改关闭，对扩展开放）可读性、简洁性思从深而行从简，目的是让他人可以轻松读懂你的代码。列如命名是否规范、注释是否详尽、函数长度是否合适等可复用性。]]></description><category></category></item><item><title><![CDATA[多线程系列：附、基于生产者消费者多线程模式的分组排序取top]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/120046967</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/120046967</guid><author>BigBug_500</author><pubDate>Wed, 01 Sep 2021 19:29:14 +0800</pubDate><description><![CDATA[场景：
   生产者消费者都分别使用多线程，生产者多个线程不断产生以下分学课数据，由消费者多个线程处理数据，并输出处理每条数据时的当前科目的平均分、top3的学生名和分数。

//张1  数学 50
//张1  语文 70
//张1  英语 60
//张2  数学 20
//张2  语文 40
//张2  英语 20
//张3  数学 50
//张3  语文 60
//张3  英语 55
//张4  数学 22
//张4  语文 11
//张4  英语 70
//张4  **科 		74
//张5  **科]]></description><category></category></item><item><title><![CDATA[InnoDB 中锁的实际应用（KeyWord:MVCC / 一致性[非]锁定读）]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/119791517</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/119791517</guid><author>BigBug_500</author><pubDate>Mon, 30 Aug 2021 21:31:37 +0800</pubDate><description><![CDATA[DB中锁的概念：
锁的存在，是为了保证数据的完整一致等特性；而加锁的方式将决定 DB 处理并发的能力。以下对锁的一些介绍，是为了在使用的 MySQL 时，避免出现重量级锁降低 DB 的并发性能。
InnoDB下的锁（属于悲观锁）:


行级锁：排他锁（x）、共享锁(s)。如InnoDB存储引擎使用。


页面锁。如BerkeleyDB存储引擎使用。


表级锁：意向排他锁(ix)、意向共享锁(is)。如MyISAM，Memory等非事务性存储引擎在使用。


允许行级、表级锁共存。在获取两种行级锁之前，必须]]></description><category></category></item><item><title><![CDATA[Kafka生产者、消费者的消息可靠性方案实现]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/119700448</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/119700448</guid><author>BigBug_500</author><pubDate>Sat, 21 Aug 2021 20:18:25 +0800</pubDate><description><![CDATA[以下代码基于SpringKafka 2.3.13.RELEASE 实现
Producer 消息的可靠性
Consumer 消息的可靠性
实现方案：手动提交 offset + 重试机制（监控） + 死信队列（告警） + 死信队列人工处理
#kafka配置，更多配置请参考：KafkaProperties
spring.kafka:
#消费者的配置，可参考：org.apache.kafka.clients.consumer.ConsumerConfig
  consumer:
    #暂不用提供clientId]]></description><category></category></item><item><title><![CDATA[Spring MVC架构中的监听器，过滤器，拦截器]]></title><link>https://blog.youkuaiyun.com/BigBug_500/article/details/119644080</link><guid>https://blog.youkuaiyun.com/BigBug_500/article/details/119644080</guid><author>BigBug_500</author><pubDate>Thu, 12 Aug 2021 15:29:06 +0800</pubDate><description><![CDATA[三者执行顺序如下：

Listener（监听器）：

监听 web 服务器中某一个事件操作，并触发注册的回调函数。如application，session，request 对象的 创建/消亡 或者 增删改 属性时，自动触发对应的函数功能。
在 Listener 中，可以通过 ServletContext  设置全局变量，并在后续的 HttpServletRequest 中获取对应的值。

Filter（过滤器）：


过滤器是基于servlet容器实现的，先于拦截器执行，先于 SpringMVC.Dispa]]></description><category></category></item></channel></rss>