摘要: 一、充血模型和失血模型 1. 充血模型的优势 充血模型更加OOP 充血模型代码可读性更好 1.1 充血模型伪代码 var messageDto = controller.ReadDto(); var message = messageDto.ToEntity(); message.Save(); 1 阅读全文
posted @ 2025-10-04 09:38 xiangji 阅读(247) 评论(0) 推荐(2)

2025年11月7日

摘要: 话说上次《手搓》TaskFactory就原地起飞了 网友@舟翅桐和@0611163说飞得还不错,但你能不能拽着点,我恐高 于是有了这次的重构和优化 阅读全文
posted @ 2025-11-07 08:46 xiangji 阅读(166) 评论(0) 推荐(2)

2025年11月5日

摘要: 网友@舟翅桐和@0611163建议Task清退机制 多次尝试不能很好实现清退 使用异步"伪线程"推倒重构《手搓》线程池重见光明 阅读全文
posted @ 2025-11-05 09:32 xiangji 阅读(187) 评论(0) 推荐(2)

2025年10月28日

摘要: 《手搓》线程池实现了完美的指数递进关系 异步并发测试一发入魂,开局即是高潮带来了困惑 沉着思考后连夜优化 阅读全文
posted @ 2025-10-28 09:27 xiangji 阅读(202) 评论(4) 推荐(3)

2025年10月27日

摘要: 一、TaskFactory也能手搓 是的TaskFactory也能手搓 而且效果是杠杠的 二、现在继续说程序优化的事情 1. 话说产品经理小马给工程师小牛提了需求批量获取产品详情 小牛三下五除二就干上线了 代码那是写的干净又漂亮,没有一行多余的代码 只是性能有一点点瑕疵 每个商品获取要0.1秒,获取 阅读全文
posted @ 2025-10-27 10:42 xiangji 阅读(525) 评论(18) 推荐(11)

2025年10月25日

摘要: 一、什么是《手搓》线程池 手搓线程池并不是用来完全代替系统线程池的 你可以把手搓线程池看做系统线程池的一部分 就好比在东海用集装箱搞养殖 一个集装箱里养鱼 另一个集装箱里养虾 搞好隔离,鱼虾都不耽搁 二、最常用线程池的场景是什么 当然是Task,是用TaskFactory.StartNew方法创建T 阅读全文
posted @ 2025-10-25 11:50 xiangji 阅读(213) 评论(3) 推荐(1)

2025年10月24日

摘要: 一、MediatR .NET事件总线一般使用MediatR 或者基于MediatR二次封装 笔者手搓事件总线和MediatR对比一下 二、事件处理的基本概念 1. 事件 表示已经发生的事情,需要通知其他模块进行处理 2. 事件发布器 负责发布事件的对象 3. 事件处理器 实际接收到通知并处理事件的对 阅读全文
posted @ 2025-10-24 08:53 xiangji 阅读(581) 评论(4) 推荐(10)

2025年9月28日

摘要: 一、什么是循环引用 循环引用就是类型相互依赖 1. 比如A类有B类的属性,B类也有A类的属性 这有什么问题呢? 编写生成A的代码需要遍历A的所有属性 构造B类型属性是A代码的一部分,B代码又含有A类型属性 这就是一个编译死循环 2. 其他循环引用的例子 链表结构只有一个类型也是类型循环引用 A-B- 阅读全文
posted @ 2025-09-28 00:10 xiangji 阅读(286) 评论(2) 推荐(0)

2025年9月6日

摘要: 微软.net表达式编译问题困扰本人很久了, 为此我整理了以下case给大家分享 1. 可行性调研 用表达式把对象转化为另一个类型的对象 当一个类含有多个同类型属性时,把相同类型转化提取为公共方法 LambdaExpression可以用来定义复用的公共方法 一切看起来都很完美,但是居然翻车了!!! 2 阅读全文
posted @ 2025-09-06 18:11 xiangji 阅读(957) 评论(8) 推荐(2)

2025年8月28日

摘要: PocoEmit使用比较简单对于大部分转化是不需要手动配置 可以替代AutoMapper的大部分工作,实现精简代码,提高性能 一、获取Mapper实例 1. 获取Mapper默认实例 Default是一个静态延迟初始化的默认实例 IMapper mapper = PocoEmit.Mapper.De 阅读全文
posted @ 2025-08-28 16:31 xiangji 阅读(483) 评论(0) 推荐(2)

导航