- 博客(777)
- 资源 (2)
- 收藏
- 关注
原创 设计模式基础概念(创建型模式):单例模式(Singleton)
单例模式(Singleton)是一种创建型设计模式, 让你能够。单例 (Singleton) 类。。如果你的代码能够访问单例类, 那它就能调用单例类的静态方法。。
2025-06-12 07:00:00
343
原创 网络框架:Reactor模型
传统的IO模型 设计,每一个请求到来时,大致都会按照:请求读取->请求解码->服务执行->编码响应->发送答复 这个流程去处理Reactor模型核心思想是通过 机制,。Reactor模型中定义的三种角色:读取操作写入操作类似于读取操作,消息处理流程:是否Reactor线程select监听所有IO事件有就绪事件?分发事件到Handler执行读/写操作处理业务逻辑对于一些小容量应用场景,可以使用单Reactor单线程模型。但是对于高负载、大并发的应用场景却不合适,由此演进出单Reactor多线程模型。单Re
2025-06-11 06:15:00
10
原创 统一建模语言UML(7)部署图、类图
类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。类图的3个基本组件:类名、属性、方法。
2025-06-09 06:15:00
547
原创 统一建模语言UML(6)组件图(构件图)、用例图
用于描述系统功能需求的可视化工具,主要展示 系统与外界的交互关系用例图的构成元素:参与者(角色)、用例、系统边界、元素之间的关系。
2025-06-08 06:15:00
1013
原创 线程安全集合
在原始链表的基础上,我们增加一层索引链表,假如原始链表的每两个结点就有一个结点也在索引链表当中,由于索引链表的结点个数是原始链表的一半,查找结点所需的访问次数也就相应减少了一半,经过两次查询我们便找到。LinkedBlockingDeque 是一个双端队列,在它为空的时候,一个试图从中抽取数据的线程将会阻塞,无论该线程是试图从哪一端抽取数据。如果生产者线程需要在队列的两端都可以插入数据,消费者线程需要在队列的两端都可以移除数据,这个时候也可以使用 BlockingDeque。
2025-06-07 22:31:21
130
原创 java常用类:BigDecimal
java.math包中提供的API类BigDecimal,双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计算精度的数字,我们可以。所以开发中,如果我们需要精确计算的结果,则必须使用BigDecimal类来操作。
2025-06-07 06:15:00
998
原创 分表、分库、分片和分区基本概念
将同一个表的数据进行分块保存到不同的数据库中,来解决单表中数据量增长出现的压力。例如,将用户表中的基本信息和扩展信息分成两个子表,一个表包含基本信息的列,另一个表包含扩展信息的列。水平分表(Horizontal Partitioning):将表中的行分布到多个子表中,垂直分表(Vertical Partitioning):将表中的列分布到多个子表中,示例:将用户数据存入 user_db,订单数据存入 order_db。例如,将用户表按用户ID分成多个子表,每个子表包含特定范围的用户ID。
2025-06-06 06:15:00
631
原创 设计模式基础概念(行为模式):模板方法模式 (Template Method)
模板方法模式是一种行为设计模式, 它。是,模板方法模式的类结构图中,只有继承关系。。。钩子方法的名字应当以do开始。在模板方法模式中,首先。模板方法模式的,这会导致类的个数增加,系统更加庞大,设计也更加抽象,但是更加符合“单一职责原则”,使得类的内聚性得以提高。
2025-06-05 06:00:00
395
原创 统一建模语言UML(1)状态图
状态图用来。状态图要在需求分析阶段画,描述状态变迁的逻辑关系,在详细设计阶段也要画,这个时候,状态要用枚举值表示,以指导具体的开发。状态图基本要素:1、状态(States):描述了状态机所在对象动态行为的执行所产生的结果2、转移(Transitions)3、动作(State Actions)4、自身转移(Self-Transitions)5、组合状态(Compound States)6、进入节点(Entry Point)7、退出节点(Exit Point)
2025-06-04 06:00:00
911
原创 nginx的超时配置及超时现象和解决思路
nginx的超时配置,主要分为下面几类fill:#333;color:#333;color:#333;fill:none;YesNo启动Nginx配置校验解析配置文件客户端连接类超时校验代理服务类超时校验其他特殊超时校验模拟客户端行为模拟后端响应特殊场景模拟使用telnet/slowloris工具搭建延迟响应后端DNS延迟解析配置观察连接状态变化监控代理日志记录解析耗时记录error.log超时触发是否符合预期?标记校验通过定位配置错误调整nginx.conf。
2025-06-01 06:00:00
1878
原创 MYSQL:主从复制原理及简单实现
主从复制:指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中主服务器处理写操作以及实时性要求比较高的读操作,而从服务器处理读操作。主从复制,。
2025-05-31 06:00:00
764
原创 基本位运算、位逻辑运算符
位运算(Bitwise Operations)是直接对二进制位(0和1)进行操作的低级运算,常用于高性能计算、压缩、加密等场景。
2025-05-29 06:00:00
286
原创 JAVA网络编程
套接字 是操作系统提供的网络编程接口Java 通过 DatagramSocket 和 DatagramPacket 实现对 UDP 协议的支持。DatagramPacket:数据包类DatagramSocket:通信类对比项作用封装 UDP 数据包,包含数据内容、目标地址、目标端口等信息。表示 UDP 通信的端点(Socket),用于发送或接收 UDP 数据包。职责管理 UDP 通信的通道(绑定端口、收发数据包)封装具体的数据包(数据 + 地址/端口信息)生命周期。
2025-05-28 06:00:00
1002
原创 分布式算法:Paxos 、Zab、Raft、一致性hash
Paxos算法是一种基于消息传递的分布式一致性算法,用于在异步网络环境中,使多个节点就某个值(Value)达成一致。即一个分布式系统中的各个进程如何就某个值(决议)达成一致。自Paxos问世以来就持续垄断了分布式一致性算法,Paxos这个名词几乎等同于分布式一致性。
2025-05-24 06:00:00
795
原创 数据库:索引相关基本知识点
索引是一种。。。对于复合索引:Mysql从左到右的使用索引中的字段,。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .。
2025-05-23 06:00:00
944
原创 java属性映射工具:MapStruct
官方代码仓库:https://github.com/mapstruct/mapstruct官方文档:https://mapstruct.org/在开发过程中,我们。
2025-05-22 10:10:19
915
原创 计算机网络:常见的网络协议基本概念
对比维度客户端服务端定义发起请求或消费服务的终端设备或应用程序。接收请求、处理数据并返回响应的后台系统或程序。示例浏览器、手机App、智能设备Web服务器(Nginx)、数据库服务器角色定位请求的发起方请求的响应方资源依赖依赖服务端提供数据或功能提供数据、计算能力或存储资源运行环境用户终端(PC、手机、IoT设备)远程服务器(物理机、虚拟机、云服务)性能要求侧重交互体验(如响应速度、界面流畅度)侧重稳定性、并发处理能力、安全性典型技术栈。
2025-05-21 06:00:00
1037
原创 mysql和java数据类型的对应关系
BLOB:是MySQL中专门用于存储二进制大对象的数据类型,适合存储原始字节流数据。使用:JPA/Hibernate:通过@Lob注解声明大字段。:TEXT存储字符数据(有字符集),BLOB存储二进制数据。通俗点讲,就是看有多少个数字,,适合完全确定长度的数据(如邮编、固定编码)这只是举一个例子,来说明M,D是什么,,比如加、减,谁大谁小,这样的操作,会。,很可能在值比较的时候得到的结果有误。比如上面的5.6789 ,D就是4。比如,5.6789,M就是5。区别一:数值大小区别。
2025-05-20 06:00:00
583
原创 浏览器请求的整个缓存过程
当第一次请求的时候,浏览器本地缓存库没有缓存数据,会从服务器取数据,并且放到浏览器的缓存库中下次再进行请求的时候会根据缓存的策略来读取本地或者服务的信息。一般信息的传递通过 HTTP 请求头 Header 来传递。目前比较常见的缓存方式有两种,分别是:强制缓存、对比缓存HTTP 缓存主要是对静态数据进行缓存,把从服务器拿到的数据缓存到客户端/浏览器。
2025-05-19 06:00:00
620
原创 Caffeine:基本原理及使用
readBuffer 的类型是 BoundedBuffer,它的实现是一个 Striped Ring (条带隔离的 环形) 的 bufferBoundedBuffer它是一个 striped、非阻塞、有界限的 buffer,继承于StripedBuffer类。StripedBuffer设计的思想是跟Striped64类似的,通过扩展结构把分散操作热点(/竞争热点分离)。实现是这样的,StripedBuffer维护一个Buffer[]数组,每个元素就是一个RingBuffer,
2025-05-18 06:00:00
1028
原创 数据结构:树、二叉树(排序/查找/平衡)、红黑树、BTREE、B+TREE
简称BST(Binary Search Tree),也称为二叉查找树。其或是一棵空树,或是一棵具有下列特性的非空二叉树:1)若左子树非空,则左子树上所有结点关键字值均小于根结点的关键字值。2)若右子树非空,则右子树上所有结点关键字值均大于根结点的关键字值。3)左、右子树本身也分别是一棵二叉排序树。是一个递归的数据结构:左子树结点值 < 根结点值 < 右子树结点值后面直接将“结点关键值”简称为“结点值”
2025-05-17 06:00:00
636
原创 自平衡二叉查找树的旋转操作:左旋、右旋、左右旋、 右左旋
LL 旋转和 RR 旋转分别用于处理左左和右右失衡,LR 旋转和 RL 旋转则用于处理左右和右左失衡在使用 AVL 树时,每个树节点仅存储一个数据,而每次进行磁盘 IO 时只能读取一个节点的数据,如果需要查询的数据分布在多个节点上,那么就需要进行多次磁盘 IO。磁盘 IO 是一项耗时的操作,需要优先考虑如何最大限度地减少磁盘 IO 操作的次数。AVL树通过严格的平衡保证了高效的查询性能,适合读多写少的内存级数据管理场景。在需要更高写入效率或持久化存储时,红黑树或B+树通常是更优选择。
2025-05-16 06:00:00
273
原创 spring框架中的本地缓存:spring cache基本使用
自定义缓存过去时间等# 使用 Redis 作为缓存组件# 缓存过期时间为 3600s# 缓存的键的名字前缀# 是否使用缓存前缀# 是否缓存控制,防止缓存穿透在 @Cacheable 注解里面加上 key 的值 #root.method.name。这是一种特有的表达式,称作 SpEL 表达式,这里代表用方法名作为缓存 key 的名字如果按上述去配置的话,缓存的key的名称便是这个方法名可以自定义条件来决定是否将缓存功能关闭。
2025-05-15 06:00:00
1202
原创 Redis分布式锁实现
如果负责储存这个分布式锁的Redisson节点宕机以后,而且这个锁正好处于锁住的状态时,这个锁会出现锁死的状态。为了避免这种情况的发生,Redisson内部提供了一个监控锁的看门狗,它的作用是在Redisson实例被关闭前,不断的延长锁的有效期。默认情况下,看门狗的检查锁的超时时间是30秒钟,也可以通过修改Config.lockWatchdogTimeout来另行指定。另外Redisson还通过加锁的方法提供了leaseTime的参数来指定加锁的时间。超过这个时间后锁便自动解开了。
2025-05-14 06:00:00
1600
原创 Redis的持久化:RDB和AOF机制
Redis 提供,它们在数据安全性、性能、恢复速度等方面有显著差异。为什么要进行持久化?如果是大数据量的恢复,会有下述的影响。
2025-05-13 06:00:00
1002
原创 缓存(5):常见 缓存数据淘汰算法/缓存清空策略
TinyLFU 就是其中一个优化算法,专门为了解决 LFU 上的三个问题而被设计出来的。LFU 上的三个问题如下如何减少访问频率的保存,所带来的空间开销如何减少访问记录的更新,所带来的时间开销如果提升对局部热点数据的 算法命中率解决第1个问题/第2个问题是采用了 Count–Min Sketch 算法Count-Min Sketch算法将一个hash操作,扩增为多个hash,这样原来hash冲突的概率就降低了几个等级,且当多个hash取得数据的时候,取最低值,也就是Count Min的含义所在。
2025-05-11 17:29:35
941
原创 缓存(4):常见缓存 概念、问题、现象 及 预防问题
缓存穿透是**指用户查询数据,在数据库没有,自然在缓存中也不会有**。这样就导致用户查询的时候,在缓存中找不到对应key的value,每次都要去数据库再查询一遍,然后返回空(相当于进行了两次无用的查询)。这样请求就绕过缓存直接查数据库缓存穿透是指:用户查询数据,在数据库没有,自然在缓存中也不会有。这样就导致用户查询的时候,在 缓存中找不到,每次都要去数据库再查询一遍,然后返回空(相当于进行了两次无用的查询)。这样请 求就绕过缓存直接查数据库,这也是经常提的缓存命中率问题。缓存击穿与 缓存穿透的简单区别。
2025-05-11 16:25:50
1263
原创 缓存(3):本地缓存作用 及 数据一致性 实现策略
在分布式系统中,缓存和数据库同时存在时,如果有写操作的时候,「先操作数据库,再操作缓存」。读取缓存中是否有相关数据如果缓存中有相关数据value,则返回如果缓存中没有相关数据,则从数据库读取相关数据放入缓存中key->value,再返回如果有更新数据,则先更新数据库,再删除缓存为了保证第四步删除缓存成功,使用binlog异步删除如果是主从数据库,binglog取自于从库。
2025-05-11 15:49:12
1247
原创 缓存(2):数据一致性
在分布式系统中,。强一致性最符合用户直觉弱一致性缓存可以提升性能、缓解数据库压力,但是使用缓存也会导致数据不一致性的问题。
2025-05-09 00:37:18
1114
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人