- 博客(17)
- 收藏
- 关注
原创 ETCD学习之路
etcd 使用 Go 语言实现,是分布式系统中重要的基础组件,etcd 可以用来构建高可用的分布式键值数据库,根据官网介绍,总结来说有如下的特点:etcd 是一个分布式键值存储数据库,支持跨平台,拥有强大的社区。etcd 的 Raft 算法,提供了可靠的方式存储分布式集群涉及的数据。etcd 广泛应用在微服务架构和 Kubernates 集群中,不仅可以作为服务注册与发现,还可以作为键值对存储的中间件。从业务系统 Web 到 Kubernetes 集群,都可以很方便地从 etcd 中读取、写入数据。etcd
2025-07-30 14:28:59
1041
原创 图解计算机网络
最上层的,也是我们能直接接触到的就是应用层(Application Layer),我们电脑或手机使用的应用软件都是在应用层实现。那么,当两个不同设备的应用需要通信的时候,应用就把应用数据传给下一层,也就是传输层。所以,应用层只需要专注于为用户提供应用功能,比如 HTTP、FTP、Telnet、DNS、SMTP等。应用层是不用去关心数据是如何传输的,就类似于,我们寄快递的时候,只需要把包裹交给快递员,由他负责运输快递,我们不需要关心快递是如何被运输的。
2025-07-30 09:16:55
1085
原创 计算机网络——OSI七层模型、TCP/IP四层模型
各种应用程序协议:HTTP(超文本传输协议) FTP(文本传输协议) TFTP(简单文件传输协议) SMTP(简单邮件传输协议) SNMP(简单网络管理协议) DNS(域名系统) TELNET(远程终端协议) HTTPS(超文本传输安全协议) POP3(邮局协议版本3 ) DHCP(动态主机配置协议)协议有:ICMP(互联网控制信息协议) IGMP(组管理协议) IP(IPV4 IPV6)(互联网协议)安全协议、路由协议(vrrp虚拟路由冗余)安全协议:SSL(安全套接字层协议)、TLS(安全传输层协议)
2025-07-22 10:40:07
925
转载 LeetCode(03) 三数之和 双指针
(1)当nums[k] > 0 时直接break跳出:因为 nums[j] >= nums[i] >= nums[k] > 0,即 3 个元素都大于 0 ,在此固定指针 k 之后不可能再找到结果了。(2)当 k > 0且nums[k] == nums[k - 1]时即跳过此元素nums[k]:因为已经将 nums[k - 1] 的所有组合加入到结果中,本次双指针搜索只会得到重复组合。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。,判断是否存在三元组。
2024-09-13 10:58:55
602
原创 LeetCode(2)两数相加【链表】【中等】
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]本题的基本思路就是: 模拟两数加法的过程 + 构建新链表。的链表,表示两个非负的整数。它们每位数字都是按照。解释:342 + 465 = 807.的方式存储的,并且每个节点只能存储。,并以相同形式返回一个表示和的链表。输出:[7,0,8]
2024-09-04 16:32:21
520
原创 LeetCode(01)环形链表【链表】【简单】
指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。来表示链表尾连接到链表中的位置(索引从 0 开始)。如果链表中有某个节点,可以通过连续跟踪。仅仅是为了标识链表的实际情况。,判断链表中是否有环。给你一个链表的头节点。
2024-09-04 08:34:44
456
原创 JVM虚拟机(五)JVM调优的常用参数
Java命令行参数可以根据其类型和作用范围大致分为以下三种类型:标准选项(Standard Options)示例-version-help-classpath等。描述:这些选项是Java语言规范中定义的标准参数,跨不同JDK版本和实现保持一致,用于设置基本的Java运行环境、类路径、系统属性、日志级别、JAR包代理、启动画面等。它们通常以单个短横线()开头,不带有额外的前缀。非标准(或扩展)选项(Non-standard / Extended Options)示例-Xms<size>
2024-09-03 15:10:24
1239
原创 JVM虚拟机(四)强引用、软引用、弱引用、虚引用
强引用:比较常见,只要 GC Root 能关联到,就不会被回收。软引用:需要配合 SoftReference 使用,当垃圾被多次回收,内存依然不够的时候会回收软引用对象。弱引用:需要配合 WeakReference 使用,只要进行了垃圾回收,就会把弱引用对象回收。虚引用:必须配合引用队列使用,被引用对象回收时,会将虚引用入队,由 Reference Handler 线程调用虚引用相关方法释放直接内存等外部资源。
2024-08-22 16:09:50
1336
原创 JVM虚拟机(三)垃圾回收算法、分代回收、垃圾回收器种类、G1垃圾回收器
垃圾回收主要指的是回收堆中的对象。堆是一个共享区域,我们创建的对象和数组都存储在当前的堆里。但是我们也不能无限地去创建对象,也不是所有的对象都需要一直存在,如果说不进行垃圾回收的话,内存迟早都会被耗尽的,所以说及时的垃圾回收就显得非常有必要了。那什么对象才能被回收呢?简单一句话就是:如果一个或多个对象没有任何的引用指向它了,那么这个对象现在就可能会被垃圾回收器回收。定位什么样的对象是垃圾有两种方式:第一个是引用计数法,第二个是可达性算法。标记清除算法。
2024-08-21 16:51:56
1329
原创 JVM虚拟机(二)类加载器、双亲委派模型、类装载的执行过程
双亲委派模型Parent Delegation Model,这里的 “双亲” 实际指的是父级。加载某一个类,先委托上一级的加载器进行加载,如果上级加载器也有上级,则会继续向上委托,如果该类委托上级没有被加载,子加载器再尝试加载该类。
2024-08-20 16:34:22
984
原创 JVM虚拟机(一)基本介绍
JVM,全称JavaVirtualMachine,是Java程序的运行环境。比如说我们自己写的代码想要运行的话,都必须在 JVM 中才能运行。当然严格来说,是 Java 的二进制字节码的运行环境。ava 代码想要运行的话,就必须先经过编译之后,编译成 .class 文件才能运行。JVM 就是 .class 二进制字节码的运行环境。JVM 的好处:Java 是一个跨平台的语言,它是怎么跨平台呢?就是因为JVM 给我们屏蔽了操作系统的差异。别管是在 Windows 或者是Linux。
2024-08-19 17:13:45
876
原创 设计模式(代理模式)
为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象,这样可以在目标对象实现的基础上 , 增强额外的功能操作, 即扩展目标对象的功能。被代理的对象可以是远程对象创建开销大的对象或需要安全控制的对象。代理模式有不同的形式 , 主要有三种静态代理动态代理(JDK代理、接代理和Cglib代理可以在内存动态的创建对象,而不需要实现接口, 他是属于动态代理的范畴。
2024-08-16 15:54:38
1383
原创 设计模式(单例模式)
使用双检锁单例模式来管理 JSON 格式化处理对象,确保在整个项目中只有一个 JsonFormatter 实例存在,避免了重复创建对象的开销,同时提供了一个便捷的方式来操作 JSON 数据的格式化。需要在单例类中实现Serializable序列化接口,并且实现readResolve()方法,这是序列化和反序列化的一个协议,为了序列化后的对象能够重复利用,可以实现readResolve()方法,而这个方法是由JVM自动调用的。在懒汉模式下,实例在第一次使用时才进行创建,因此称为“懒汉”——直到需要才“吃”。
2024-08-15 16:20:44
1273
原创 设计模式(工厂模式)
抽象工厂模式是工厂方法模式的进一步延伸,由于它提供了功能更为强大的工厂类并且具备较好的可扩展性,在软件开发中得以广泛应用,尤其是在一些框架和 API 类库的设计中,例如在 Java 语言的 AWT(抽象窗口工具包)中就使用了抽象工厂模式,它使用抽象工厂模式来实现在不同的操作系统中应用程序呈现与所在操作系统一致的外观界面。抽象工厂模式也是在软件开发中最常用的设计模式之一。
2024-08-14 17:22:26
810
原创 JAVA8 Stream流式编程的去重、过滤、映射(map)、分组、统计(sum、max、min、avg)、分页
Stream提供了两种类型的操作——中间操作和终端操作。中间操作用于链式调用,并可以有多个,而终端操作是触发计算的地方。Stream流的实现原理主要基于迭代器和函数式编程的思想。在内部迭代的过程中,流通过一系列操作进行链式处理,将每个元素传递给下一个操作,并最终生成结果。方法一核心代码:list = list.stream().filter(o -> o.getName()!= null).collect(在并行流的情况下,流将输入数据分成多个小块,分配给不同的线程并行处理。处理完后,再合并结果并返回。
2024-08-13 11:01:36
1559
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1