- 博客(40)
- 收藏
- 关注
原创 ElasticSearch的高可用
尤其是在ELK实践中,通过ILM(Index Lifecycle Management)与分层存储策略,可以在不同阶段自动化的调整索引副本、分片数、硬件部署和归档方式,实现成本与性能的最佳平衡。ILM是ES自身提供的内置功能,由master节点自动执行各阶段动作(rollover、forcemerge、shrink、allocate、delete等)Elasticsearch从 Hot ➡️ Warm ➡️ Cold ➡️ Delete 四个阶段,对索引执行不同操作。-默认1副本,适合的主分片数。
2025-05-22 15:23:43
769
原创 Java基础知识点汇总
深拷贝是指复制对象时,不仅复制对象本身,而且会递归的复制它内部的所有引用类型字段(即对象引用指向的实际数据)。换句话说,深拷贝会复制整个对象图,不仅复制对象本身,还复制它的每个字段(包括对象指向的对象),确保原对象和拷贝对象之间没有共享的部分。浅拷贝是指复制对象时,只复制对象本身以及它的基本类型的字段,对于引用类型的字段(如对象、数组等)只复制它们的引用,而不复制它们所指向的实际数据。也就是说,浅拷贝会创建一个新的对象,但不会复制对象内部的复杂对象(如引用类型的字段)。
2025-02-18 15:26:57
222
原创 Java的本地缓存
Guava Cache是Google开发的一个高效、灵活的缓存实现,它是一个内存缓存,提供了一个灵活的机制来存储、管理和淘汰缓存中的数据,支持多种策略来确保缓存的高效实用。内存管理:Caffeine提供了更精细的内存管理,它通过采用Windows-style的缓存淘汰机制,并提供更为智能的内存回收策略,比Guava Cache更高效的使用内存。更精细的淘汰策略:Caffeine支持基于权重的淘汰机制,不仅可以设置最大条目数,还可以指定每个条目的权重,从而更细粒度的控制缓存空间。方法,后台异步刷新缓存数据。
2025-02-10 16:54:43
615
原创 JVM虚拟机
G1垃圾回收器是可以同时回收新生代和老年代的对象的,不需要两个垃圾回收器来协作,他一个人就可以搞定所有的垃圾回收。他最大的特点就是分区垃圾回收,就是把Java堆分成多个大小相等的Region。G1也会有新生代和老年代,不过只有逻辑上的概念。也就是说新生代包含了某些Region,老年代包含了某些Region。而且G1最大的一个特点就是可以让我们设置一个垃圾回收的预期停顿时间,这相当于我们可以直接控制垃圾回收对系统性能的影响。这里统一给捋一下。
2025-01-14 18:15:56
1173
原创 分布式架构
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。通俗的理解,所谓分布式系统,就是一个业务拆分成多个子业务,分布在不同的服务器节点,共同构成的系统称为分布式系统,同一个分布式系统中的服务器节点在空间部署上是可以随意分布的,这些服务器可能放在不同的机柜中,也可能在不同的机房中,甚至分布在不同的城市。分布式数据一致性,指的是数据在多份副本中存储时,各副本中的数据是一致的。
2025-01-14 11:40:37
1520
原创 ElasticSearch使用讲解
The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。Elaticsearch,简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个 Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。
2025-01-09 19:33:11
1546
原创 MySQL原理解析
Undo:意味撤销或取消,以撤销操作为目的,返回指定某个状态的的操作。Undo log:数据库事务开始之前,会将要修改的记录存放到Undo log日志中,当事务回滚时或数据库崩溃时,可以利用undo log日志撤销未提交事务对数据库的影响。Undo log产生和销毁:Undo log在事务开始之前产生,事务提交后,并不会立刻删除undo log,InnoDB会将该事务对应的undo log放入到删除列表中,后面会通过后台线程 purge thread 进行回收处理。
2025-01-09 15:11:55
1696
原创 SpringBoot源码剖析
从spring.factories配置文件中加载自动配置类;加载的自动配置类中排除掉@EnableAutoConfiguration注解的exclude属性指定的自动配置类;然后再用AutoConfigurationImportFilter接口去过滤自动配置类是否符合其标注注解(若有标注的话)@ConditionalOnClass、@ConditionalOnBean和@ConditionalOnWebApplication的条件,若都符合的话则返回匹配结果;
2025-01-08 19:22:17
874
原创 SpringMVC源码剖析
***/// 多部件解析器@Nullable/***/// 区域化国际化解析器@Nullable/***/// 主题解析器@Nullable/***/// 处理器映射器组件@Nullable/***/// 处理器适配器组件@Nullable/***/// 异常解析器组件@Nullable/***/// 默认视图名转换器组件@Nullable/***/// flash属性管理组件@Nullable/***/// 视图解析器。
2025-01-08 19:11:19
999
原创 Spring源码剖析
IoC(Inversion of Control:控制反转/反转控制),注意它是一个技术思想,不是一个技术。实现描述的事情:Java开发领域对象的创建、管理的问题。传统开发方式:比如类A依赖于类B,往往会在类A中new一个B的对象。IoC思想下开发方式:我们不用自己去new对象了,而是由IoC容器(Spring框架)去帮助我们实例化对象并且管理它,我们需要使用哪个对象,去问IoC容器要即可。我们丧失了一个权利(创建、管理对象的权利),得到了一个福利(不用考虑对象的创建、管理等一系列事情)。
2025-01-08 18:51:33
776
原创 MyBatis源码剖析
在二级缓存的设计上,MyBatis大量的运用了装饰者模式,如CacheExecutor,以及各种Cache接口的装饰器。二级缓存实现了sqlSession之间的缓存数据共享,属于namespace级别;二级缓存具有丰富的缓存策略;二级缓存可由多个装饰器与基础缓存组合而成;二级缓存工作由一个缓存装饰器CacheExecutor和一个事务型预缓存TransactionalCache完成。问题:在开发过程中很多时候我们并不总是需要在获取用户信息的时候加载订单信息,此时就是我们所说的延迟加载。
2025-01-08 14:58:24
1003
原创 Netty-NIO线程模型
IO多路复用地层主要用的Linux内核函数(select,poll,epoll)来实现,windows不支持epoll实现,windows底层基于winsock2的select函数实现的(不开源)。Epoll的事件轮询就是基于这三个底层函数来实现的(epoll_create、 epoll_wait、 epoll_ctl)事件通知方式,每当有IO事件就绪,系统注册的回调函数就会被调用,事件复杂度O(1)Linux版本的Redis底层的通信就是基于epoll的事件轮询机制实现的。
2025-01-08 11:36:18
731
原创 HTTP & HTTPS
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议。常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的www文件都必须遵守这个标准。设计HTTP的初衷就是为了提供一种发布和接收HTML页面的方法。版本产生时间内容HTTP/0.91991年不涉及数据包传输,规定客户端和服务器之间通信格式,只能GET请求HTTP/1.01996年传输内容格式不限制,增加PUT、PATCH、HEAD、OPTIONS、DELETE命令HTTP/1.11997年。
2025-01-07 17:31:33
379
原创 计算机网络架构
1、计算机网络概述以七层模型为例,高三层面向的是用户,低三层面向的是硬件。端到端与点到点通信区别在于:端口与节点,前者是传输层的通信;后者是网络层面(IP)的通信。 分层 作用 协议 物理层 通过媒介传输比特(比特Bit) RJ45、CLOCK、IEEE802.3(中继器、集线器) 数据链路层 将比特组装成帧(帧Frame)、点到点的传递
2025-01-07 17:29:11
713
原创 Java字符串
String 类中使用 final 关键字修饰字符数组来保存字符串,所以String 对象是不可变的。修正:我们知道被 final 关键字修饰的类不能被继承,修饰的方法不能被重写,修饰的变量是基本数据类型则值不能改变,修饰的变量是引用类型则不能再指向其他对象。因此,final 关键字修饰的数组保存字符串并不是 String 不可变的根本原因,因为这个数组保存的字符串是可变的(final 修饰引用类型变量的情况)。
2025-01-07 15:35:37
820
原创 Java值传递
如果参数是基本类型的话,很简单,传递的就是基本类型的字面量值的拷贝,会创建副本。如果参数是引用类型,传递的就是实参所引用的对象在堆中地址值的拷贝,同样也会创建副本。
2025-01-07 15:27:36
961
原创 ThreadLocal
ThreadLocal使用弱引用作为键和强引用作为值的设计是一种平衡,在自动清理不再使用的ThreadLocal对象和保持线程局部变量直到线程结束之间寻找平衡点。虽然这种设计可能导致内存泄漏,但通过合理使用和及时清理,可以有效避免这种情况。
2025-01-07 15:07:11
754
原创 Java I/O
IO 即 Input/Output,输入和输出。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。数据传输过程类似于水流,因此称为 IO 流。IO 流在 Java 中分为输入流和输出流,而根据数据的处理方式又分为字节流和字符流。Java IO 流的 40 多个类都是从如下 4 个抽象类基类中派生出来的。
2025-01-06 20:49:18
811
原创 Java锁
是一种思想,认为读多写少遇到并发的可能性低,获取时认为不会修改,更新时判断此期间是否有别的线程进行了修改如果有重新读-比较-写。Java中的乐观锁基本都是通过CAS原子操作实现的。
2025-01-06 20:36:53
565
原创 Java多线程
核心线程数,空闲时保持的最小线程数,不会被回收,除非显示设置了 allowCoreThreadTimeOut=true如果当前活动线程数少于corePoolSize,即使有空闲线程,线程池也会创建新的线程最大线程数,当任务超出核心线程数且任务队列已满,会创建非核心线程来处理直到达到maximumPoolSize如果任务队列未满,且核心线程足够,线程池不会创建非核心线程非核心线程的最大空闲时间,非核心线程超过该时间就会被销毁。
2025-01-06 20:27:17
1091
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人