- 博客(16)
- 收藏
- 关注
原创 DDD实践总结
具有唯一标识(ID)的领域对象,其身份区别于属性值是否相同。即使两个实体的属性完全相同,只要标识不同,它们也被视为不同对象。实体通常有自己的生命周期,在生命周期内状态可能变化,但其标识始终不变。比如物流系统中的“订单”具有唯一订单号,即使内容相同,不同订单号代表不同订单实体。:不以唯一标识区分,而是通过属性值判断相等的对象。值对象仅用于描述事物的特性,没有独立身份且应设计为不可变。当值对象的信息变化时,一般是用一个新对象替换旧对象,而非修改原对象。
2025-05-04 15:39:18
1066
原创 并发编程、Mysql、Redis、RocketMQ学习清单
Java 并发编程:线程池、CAS、AQS、锁机制(synchronized, ReentrantLock)、volatile 原理。JVM 基础与调优:类加载过程、GC机制(G1/ParNew/FullGC)、JVM调优参数(如堆内存设置)面试官一定会追问你用到的乐观锁、缓存方案具体怎么实现的,提前准备好回答。限流、熔断、降级常见模式(如滑动窗口限流、令牌桶、漏桶)索引底层(B+树、回表、覆盖索引、索引下推)分布式一致性(CAP理论、BASE理论)关键技术挑战在哪里?数据结构(跳表、哈希表、压缩列表)
2025-04-26 20:40:40
215
原创 Spring Cloud Eureka 服务注册中心和配置中心搭建指南
的搭建,并实现配置的集中管理与动态刷新。在实际项目中,根据需要还可以引入网关、负载均衡、熔断等组件,但有了注册中心和配置中心,已经为微服务体系奠定了基础。若填写,则 Config Server 将自身作为客户端注册到 Eureka 服务中心,方便其它微服务通过服务发现找到配置中心(需配合客户端的 discovery 配置,后文介绍)。搭建好 Config Server 后,微服务(Config Client)需要从配置中心获取其配置,而不是使用本地的 application.yml 中硬编码配置。
2025-04-26 14:38:38
1679
原创 Redis原理、源码分析
master由于网络原因与多数sentinel失联了,就会选举出新的master,此时两个master会同时进行写操作,当网络恢复后其中一个master会变为slave,就会丢失自身的数据。内存满了,想保证功能可用只能去淘汰些数据腾出空间,也是redis会丢数据的一个场景,redis不会背锅,所以默认淘汰策略会报错,可读不可写,还有其他的的策略:LRU、LFU、TTL、随机。AOF:以追加命令的方式保存数据,数据丢失的风险小默认丢失1秒的数据,但会导致文件特别大,所以后面做了优化会重写aof文件。
2025-01-30 20:24:04
346
原创 线程、J.U.C源码分析
Thread在类加载时会调用registerNatives()方法,向JVM注册线程有关的方法信息映射,并建立Java 线程类中本地方法与 JVM 中对应的 C/C++ 实现之间的映射。
2024-12-01 23:49:49
409
1
原创 【Java技术栈】
设计模式1.七大软件设计原则与实践2.设计模式总结及工厂模式3.单例模式的详解4.深度分析代理模式5.原型、建造者、适配、委派、策略、模板方法模式Spring并发编程MybatisRedisMysqlJavaVirtualMachineMQSpringBootSpringCloud Alibaba
2024-08-18 22:14:46
251
原创 IO流应用及原理分析
RPC(Remote Procedure Call)远程过程调用,是通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。一般用来实现部署在不同机器上的系统方法的调用,通过网络传输使程序能够像访问本地资源一样访问远端系统资源。select/poll:单个进程可以同时处理多个客户端的网络IO连接,缺点:会扫描所有的连接,造成系统开销、响应延时,jdk1.6前的NIO使用的是这种模型。input、output输入和输出,而‘流’是一种抽象的概念,表示的是数据的五结构化传递。
2024-07-23 21:58:10
284
原创 Java网络编程
发送方可以连续发送多个Frame(帧),但接收方发现错误后会要求重传错误帧及其之后的所有帧。这种方法比停止等待更有效,但在错误率高时重传代价较大。从起点发送Frame(帧)到终点,如果收到了就返回一个Ack,起点会等待收到上一个Frame的ack才回去发送下一个Frame。发送方可以连续发送多个帧,接收方仅请求重传出错的帧,而不是所有后续帧。这种方法比Go-Back-N更高效,因为只需重传出错的帧。基于停止等待流控的算法,每次发送一个帧并等待确认,如果未收到确认或收到错误确认,则重传该Frame(帧)。
2024-07-08 21:39:10
244
原创 每日算法
为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。输出:[1,2,2,3,5,6]
2024-06-15 23:57:54
381
原创 深入解析Java多线程与高并发
索引覆盖指的是:所有要查询的字段都可以通过索引来获得,回表扫描指的是:索要查询的字段无法直接通过非聚簇索引获取,要经过二次查询。多版本并发控制,通过undo log日志实现,每次事务提交后都会存储到undo log日志中,包含事务ID、上一版本ID,多条记录构成一个版本链。
2024-05-15 23:45:20
1150
1
原创 JVM构成
改变加载源字节码进行加密、解密扩展加载模型(打破双亲委派机制)继承ClassLoader并重写方法findClass()、loadClass()方法。
2024-04-28 22:25:40
371
原创 JVM虚拟机产品分析
JVM是Java虚拟机,是能够运行Java程序的软件,为Java语言实现跨平台提供主要保障,它能够解释并执行Java字节码(.class)文件。
2024-04-27 19:57:58
355
1
原创 SQL调优
2、大数据量场景,第一、由于底层索引导致,数据量大会导致索引树十分庞大,以MySQL来说,底层索引使用的是B+Tree,单表数据量应该避免超过2000万,原因是当数据超过两千万的话,树的高度就为3了,影响查询效率;分表分库,以MySQL来说,底层索引使用的是B+Tree,单表数据量应该避免超过2000万,原因是当数据超过两千万的话,树的高度就为3了,影响查询效率。就是将原表中的字段拆分成多个表,或者多个库上去。缺点:大部分的请求,访问的可能都是最新的数据,所以有可能绝大部分请求还是达到了最新的表、库上了。
2024-04-25 13:28:35
688
原创 ElasticSearch学习过程问题整理
docker run -p 9800:9800 -di --name=elasticHD --link elastic:es containerize/elastichd("--link"连接两个容器使其通信,”elastic“要链接的容器名称,”es“为连接容器起的别名 )中指定的主机列表来尝试发现其他节点。这个参数告诉节点去哪里寻找其他可能存在的节点,从而加入到同一个集群中。在 Elasticsearch 启动时,节点会通过。可能是elasticsearch服务没有配置跨域。数据卷路径要对应的上。
2024-04-16 21:09:31
355
3
原创 中间件Redis面试题
AOF存储方式会将每次执行的写命令追加到一个文件夹的后面,服务重启时会自动读取该文件夹中的命令并且执行来恢复数据,如果不小心执行了flushall,在这种持久化方式下,只需要关闭服务,找到对应文件将末尾的fluashall命令删除重启启动服务即可。缓存穿透指的是,缓存中没有改请求数据的缓存,从而让请求直接打到数据库中,而数据库中也不存在改数据也无从缓存,如果有大量的这类请求,会给数据库造成极大压力甚至冲垮。缓存雪崩指的是,某一时刻有大量的缓存数据同时失效,导致有大量并发请求进入数据库造成冲击。
2024-04-11 09:54:24
344
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅