java
文章平均质量分 90
大头讲架构
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
用户状态(UserStatus) 和 用户类型(UserType) 应该如何在领域模型中表达?
本文探讨了在领域驱动设计(DDD)中如何正确表达用户状态和用户类型。传统使用Integer类型存在可读性差、安全性低、违反封装等问题。最佳实践是将它们建模为值对象(Value Object),这种方式能提供明确的领域语义、不变性控制和合法性验证。文章进一步提出了"枚举+值对象"的混合建模方案,既保持了类型安全又增强了语义表达,并展示了如何在MyBatis中实现持久化映射。这种建模方式能更好地将业务概念映射到代码实现中,符合DDD的领域建模思想。原创 2025-07-28 14:26:10 · 582 阅读 · 0 评论 -
10分钟理解如何进行DDD领域建模,实操设计企业级项目,从零开始划分领域和聚合
本文介绍了如何使用领域驱动设计(DDD)方法构建记账软件。首先通过事件风暴分析识别出核心命令、业务流和事件;然后进行领域建模,划分出用户、账本、收支记录等实体和值对象;接着将相关对象组合成用户聚合、账本聚合等4个聚合;最后将聚合划分为用户领域和记账领域两个领域。文章详细讲解了DDD中的核心概念如聚合根、实体、值对象等,并强调实践的重要性,为读者提供了从零开始构建DDD项目的完整思路。下一篇文章将演示如何将领域模型转换为代码实现。原创 2025-07-28 14:24:44 · 547 阅读 · 0 评论 -
值得每个技术人学习的大厂Code Review规范
本文通过朋友聚会闲聊引出大厂代码审查(Code Review)存在的问题。文章指出代码审查在实际执行中往往流于形式,主要原因包括增加工作量、担责风险等因素。作者分享了大厂在代码审查流程上的优化方案,详细说明了提交人和审查人的角色职责及具体工作流程,并列出常见问题解答(FAQ)。文章最后指出,代码审查的长期收益与个人短期工作负担之间的矛盾,是导致该流程难以有效执行的根本原因,并邀请读者分享各自公司的代码审查实践。原创 2025-07-22 11:20:55 · 851 阅读 · 0 评论 -
干货分享|JAVA面试必问,80%程序员都回答不上来,Spring Cloud GateWay底层如何实现的,零基础一个小时从零实现网关,图文并茂,实操教程
刚入行的男大学生程序员,课程里涉及网关实现,一脸懵,成绩受影响。别人靠死记硬背,咱得真正掌握。搞懂从零实现网关,竞赛、实习都能脱颖而出,未来求职更有底气,别让机会溜走。掌握从零实现网关后,咱在团队里可就牛了!别人还在为网关问题抓耳挠腮,咱轻松搞定,项目推进顺利,老板猛夸,加薪升职指日可待,收入直奔 30 万,成为团队核心人物。有经验的男程序员用从零实现的网关优化项目,市场上同类项目几十种,咱的凭借高性能、稳定的网关吸粉无数,客户订单不断,同行只能干瞪眼,名利双收超爽。原创 2025-01-03 18:48:58 · 1080 阅读 · 0 评论 -
你知道ArrayList为什么总是比LinkedList好吗?有了LinkedList为什么还要有ArrayList?
接口就是Interface,也可以是ADT(Abstract Data Tructure), 当定义一个接口的时候,实际上是一种规范,一种约束。接口定义了一些方法,也就是支持哪些操作。这里拿Java的List接口举个例子。Listadd(E element): 表示List接口支持add操作,将一个元素添加到list中,至于如何实现,不重要。remove(E element): 表示List接口支持remove操作,将一个元素从list中移除,至于如何实现,不重要。原创 2025-01-03 18:41:13 · 608 阅读 · 0 评论 -
手把手带你一个小时学会手写netty框架,性能比netty还高!netty原理解析,从零开始学习netty,手撕netty框架
今天,小白的老师让小白写一个服务器,小白学艺不精,过来向大头求救了。那么socket究竟是什么呢?套接字接口(socket interface)是一组函数,它们和Unix I /O函数结合起来,用以创建网络应用。从Linux内核的角度来看, 一个套接字就是通信的一个端点。从Linux程序的角度来看,套接字就是一个有相应描述符的打开文件。下图来源于CSAPP的书。原创 2024-12-24 10:14:27 · 1112 阅读 · 0 评论 -
java gc横向测评,如何选择合适的GC策略?
从GC的发展历史来看,目标是两个尽可能减少停顿时间,不影响业务。尽可能减少GC时间,让GC更快。通过以上的对比可以发现,堆的大小不能设置的太小导致OOM,同样当堆设置的过大对于性能也并没有什么提升,比如2g对比1g内存,就没什么提升。从512m和1g内存对比上来看,ZGC最优,不仅减少了GC次数,性能也很好。而G1GC的优化最好,因为它的GC次数最多,但是性能同样强大。从结果来看最好的是ZGC,其次可以选择G1GC或者并行GC。原创 2024-12-05 15:06:07 · 1245 阅读 · 0 评论 -
你不知道的JVM原理
从GC的发展历史来看,目标是两个尽可能减少停顿时间,不影响业务。尽可能减少GC时间,让GC更快。基本上G1 GC是通用的,如果条件允许上ZGC或Shenandoah。JDK8的默认GC是Parallel GC,JDK9后一直都是G1 GC。从这里也能看出G1 GC性能更好。更通用。如果系统考虑吞吐优先,CPU资源用来处理业务,用Parallel GC如果系统考虑低延迟优先,每次GC时间尽量短,用CMS GC如果系统内存堆大,平均GC时间可控,使用G1 GC。原创 2024-11-28 08:11:05 · 775 阅读 · 0 评论 -
手把手带你读java源码之JAVA-stream结果态操作(万字图文详解)
方法在创建结果态的时候增加的,代码在下面,一起回顾一下。这个方法很简单,就是看collector的characteristics是否无序。最后,回到开始的collect方法中。作为结果态方法,不再返回stream类型的对象。这是在中间态节点生成的时候,创建无状态对象的时候添加的。这是在中间态节点生成的时候,创建无状态对象的时候添加的。构造一个结果态对象,对引用类型的值执行可变的计算,规约。预估管道的结果态操作并产生一个结果。创建完结果态对象以后,将结果态对象传入。类型的对象作为参数。原创 2024-11-27 15:33:41 · 555 阅读 · 0 评论 -
spring Cloud Stream 实战应用深度讲解
spring cloud stream是一个框架,用于构建与共享消息传递系统连接的高度可扩展的事件驱动微服务。该框架提供了一个灵活的编程模型,该模型建立在已经建立和熟悉的 Spring 习惯用语和最佳实践之上,包括对持久发布/订阅语义、消费者组和有状态分区的支持。核心模块。原创 2024-01-23 11:44:35 · 3113 阅读 · 3 评论 -
手把手带你读java源码之JAVA-stream数据结构和初始化源码详解(万字长文详解)
这篇文章主要介绍了JAVA8新增的stream流,作为最常用的一个工具,你是否常常不会用或者用错呢?本文自顶向下一步步的手把手带你通读它的源码,做到不仅会用,还可以用好,甚至学习其中的精妙之处以后自己也可以实现。本文章属于手把手带你读java源码系列文章,做到每一行源码都有注释,告诉你其中的原理和为什么要这么做。无论你是小白,新手还是高手,相信本文都会为你带来一些收获。跟着本系列文章通读所有java源码,用大白话告诉你,源码并不难。我可以,你也可以。原创 2023-02-16 17:12:24 · 1200 阅读 · 0 评论 -
JAVA-LocalDateTime时间格式化,转换时间戳和源码分析(万字长文详解)
这篇文章主要介绍了JAVA8新增的LocalDateTime时间的格式化,和时间戳的互相转换。以及对应的源码分析,有这完整的源码调用链。源码的执行分析。逐行对源码进行了注释,方便大家看懂。万字长文带图带代码示例,一文带你彻底了解时间类型。看完本篇文章,你将获得源码技术++,源码阅读量++,JAVA水平++。对于JAVA源码的解析希望能给你帮助。并提升阅读源码的思维。原创 2022-12-01 22:55:01 · 41119 阅读 · 2 评论 -
spring框架中的IOC实现
但是呢,我们这里说的是`面向对象编程中的一种设计原则`。他的全称是`Inversion Of Control`即控制反转。这里有两个单词`控制`和`反转`。这两个单词单独拿出来会发现,都缺少主语。比如- 谁控制了谁?- 什么东西发生反转了呢?原创 2022-11-14 19:07:17 · 525 阅读 · 0 评论
分享