Fork me on GitHub
摘要: 聊一聊领域驱动与贫血模型 写在前面 前段时间跟领导讨论技术债概念时不可避免地提到了代码的质量,而影响代码质量的因素向来都不是单一的,诸如项目因素、管理因素、技术选型、人员素质等等,因为是技术债务,自然就从技术角度来分析,单纯从技术角度来看代码质量,其实又细分很多原因,如代码设计、代码规范、编程技巧等等,但我个人觉得这些都是技 阅读全文
posted @ 2024-07-03 21:01 糖拌西红柿 阅读(627) 评论(5) 推荐(8) 编辑
摘要: ElasticSearch性能原理拆解 逐层拆分ElasticSearch的概念 Cluster:集群,Es是一个可以横向扩展的检索引擎(部分时候当作存储数据库使用),一个Es集群由一个唯一的名字标识,默认为“elasticsearch”。在配置文件中指定相同的集群名,Es会将相同集群名的节点组成一个集群。 Node:节点,集群中的任意一 阅读全文
posted @ 2024-06-04 21:12 糖拌西红柿 阅读(416) 评论(0) 推荐(3) 编辑
摘要: SpringBoot实现轻量级动态定时任务管控及组件化 以 AbstractBaseCronTask类为基础,定义一个固定的子类BaseMethodLevelTask,并在其内部限定任务的执行方式,扫描所有标注了@MethodJob的方法及其所属的Bean,连同Bean及方法的反射类作为构造函数,生成BaseMethodLevelTask对象,因为BaseMethodLevelTask也是AbstractBaseCronTask的子类,则可以以类级别定时任务的方式,将其生成定时任务,并进行管理。 本质还是管理的AbstractBaseCronTask子类在线程池中的具体对象,不同的地方是类级别定时任务是一个具体的任务类仅生成一个对象,class路径即是唯一的标识,而方法级别的定时任务均基于BaseMethodLevelTask生成无数个对象,具体标识则是构造函数传入的Bean的反射对象和方法名。 阅读全文
posted @ 2024-11-22 21:29 糖拌西红柿 阅读(214) 评论(0) 推荐(2) 编辑
摘要: MySQL的索引原理及使用 B+树的最底层叶子节点包含了所有的索引项。从图上可以看到,B+树在查找数据的时候,由于数据都存放在最底层的叶子节点上,所以每次查找都需要检索到叶子节点才能查询到数据。所以在需要查询数据的情况下每次的磁盘的IO跟树高有直接的关系,但是从另一方面来说,由于数据都被放到了叶子节点, 阅读全文
posted @ 2024-09-01 10:00 糖拌西红柿 阅读(483) 评论(3) 推荐(2) 编辑
摘要: SpringBoot优雅开发REST API最佳实践 接口服务主要由两部分组成,即参数(输入)部分,响应(输出)部分。其中在SpringBoot中主要是Controller层作为API的开发处,其实在架构层面来讲,Controller本身是一个最高的应用层,它的职责是调用、组装下层的interface服务数据,核心是组装和调用,不应该掺杂其他相关的逻辑。这里统一用一系列Controller的封装处理来提供优化思路。优雅且规范的开发REST API需要做以下几步:接口版本控制、参数校验、异常捕获处理、统一响应封装、接口文档的维护和更新 阅读全文
posted @ 2024-08-13 08:34 糖拌西红柿 阅读(969) 评论(2) 推荐(7) 编辑
摘要: 面向对象的编码设计原则 简单讲过程思维是数据结构加操作;对象思维则是一个整体,既包含数据结构又包含操作,也就是面向对象中的属性和行为。 在进行面向对象设计和编码的道路上,众多知名前辈结合自己的实践和认知高度抽象概况出了具有指导思想意义的设计原则。这里的每个原则细细品来都是意味深长,但是需要注意的是,就像数据库范式一样,它是个指导思想,并不是需要一板一眼遵守的“准则”。 阅读全文
posted @ 2024-08-05 08:48 糖拌西红柿 阅读(403) 评论(0) 推荐(7) 编辑
摘要: 技术资产建设 企业里的研发部门、技术团队其实更多的是软件/互联网公司的生产部门,好比实体产业的生产车间。生产车间可以通过更新车床、设备来提高生产力,这里的车床、设备即是“资产”,那么研发部门的“资产”类比一下就出来了,就是部门级的技术标准、工具。 对于团队人效来说,统一的技术库、技术组件能够形成有效的技术隔离带,节省很多二次学习成本。 阅读全文
posted @ 2024-08-03 10:38 糖拌西红柿 阅读(246) 评论(0) 推荐(2) 编辑
摘要: 设计模式:代理、装饰和适配器模式的区别 适配器模式、代理模式、装饰模式 阅读全文
posted @ 2024-07-28 18:14 糖拌西红柿 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 需求场景 按着惯例,还是以一个应用场景作为代理模式的切入点。现在有一个订单系统,要求是:一旦订单被创建,只有订单的创建人才可以修改订单中的数据,其他人则不能修改。 基本实现思路 按着最直白的思路,就是查询数据库中订单的创建人和当前Session中的登录账号ID是否一致。 class Order { 阅读全文
posted @ 2024-07-16 10:39 糖拌西红柿 阅读(507) 评论(1) 推荐(2) 编辑
摘要: 关于COLA框架的一些总结和思考 写在前面: 其实之前一直想汇总一篇关于自己对于面向对象的思考以及实践的文章,但是苦于自己的“墨迹”,一延再延,最近机缘巧合下仔细了解了一下COLA的内容,这个想法再次被勾起,所以这次一鼓作气,准备好好梳理一篇。至于标题,因为是被DDD和COLA唤起的,索性就叫这个吧。 思维:面向对象和面向过程 领域 阅读全文
posted @ 2024-05-10 14:00 糖拌西红柿 阅读(1138) 评论(1) 推荐(4) 编辑