- 博客(8)
- 收藏
- 关注
原创 分布式系统的个人理解
说到分布式,个人认为这个其实对于应届生来说很陌生,分布式设计经验很多时候在实习的时候才能慢慢去接触和理解。但是随着就业人数的越来越多,对于java后端的面试,分布式已经是绕不开的话题。本文从理论层面来熟悉一下分布式的相关内容。
2025-09-13 13:40:21
763
原创 从单例模式中理解volatile和synchronized
单例模式是一种,确保一个类,并提供一个供其他对象获取该实例。比如 Spring 框架中的@Service注解标记的类,默认就是单例的(Singleton 作用域)。其实现有两种关键问题需要解决:和有没有想过,为啥第一种方式不用加volatile关键字呢,为啥第二种就需要加?如果面试回答说因为sync关键字作用域不同,第一个加在方法上,第二个加在代码块上。会显得比较浅显。从JVM角度来看,instance = new Singleton()这个操作实际上分为malloc。
2025-07-24 22:09:23
852
原创 如何理解哈希表?(结合java)
哈希表(hash table),或者说散列表,本质上是一种数据结构,通过建立key与值value之间的映射,实现高效的元素查询,如图1所示。查询方式是通过哈希函数(java中的hashCode()方法),也就是说使用哈希函数将关键字(key)映射到一个存储位置,而value就是与之关联的数据。Key → 邮箱编号(如 “101 号信箱”),通过编号(哈希函数计算)找到对应的信箱位置。Value → 信箱中的信件(如具体的信件内容),存储在该编号对应的信箱中。6.1 哈希表 - Hello 算法。
2025-06-01 18:41:14
793
原创 软件设计的八大原则(java示例)
是抽象的指导方针,设计模式是具体的解决方案。:设计模式是设计原则的实践体现,设计原则为设计模式提供了理论依据。
2025-05-22 15:40:02
996
原创 如何理解tcp的三次握手中的seq消耗一个序号?
这意味着 TCP 并不关心应用程序数据的具体结构和含义(就是说他不关心应用层交给他的具体细节,他只负责打包,这也是软件分层解耦思想的体现),它只是按照字节的顺序来处理和传输数据。首先看第1点,对于这个初始序号seq,他虽然不携带数据,但是有些资料说的是随机生成,具体的实现原理还点小复杂,不过可以确定的是,肯定不是每次都是从0开始,他具体是啥作用呢?,如果说对方同意连接,响应的头部报文段中SYN = 1, ACK =1表示这是一个响应报文,同时可以观察到,ack = x + 1,也就是说确认客户端序列号的。
2025-03-21 15:42:29
976
原创 leecode15题三数之和
虽然,这样的写法最后没有通过测试,但是可以一起复习组合问题和全排列问题,同时能意识到组合问题和排列问题,只能通过回溯法求解,正如卡哥说的:“因为没得选,一些问题能暴力搜出来就不错了,撑死了再剪枝一下,还没有更高效的解法。但写出来发现,这是要选用三个数,因此得用三层for循环,时间复杂度会变得十分高,如果是面试现场,我想面试官不会想看到这样的答案。之前一直搞不懂,现在可以这样理解:递归就是“递”和“归”,在递的时候其实就是+i,返回这个函数调用点的时候就是回溯“归”了。灵神的讲的不错,还没有悟透,先水水。
2024-10-18 16:00:55
507
原创 寻找存在的路径
代码随想录 图论章节的题目, 卡哥是用并查集做的,当然并查集适用于查找两个元素是否在同一集合下,笔者这里给出自己用深度优先算法写的,结合了gpt的一些帮助。
2024-09-12 17:14:20
138
原创 0-1背包问题之dp实现,要不要初始化
最近再用代码随想录刷题,刷到0-1背包问题时,卡哥说初始化很重要, 笔者在刷题时没有注意到这一点,导致结果不正确。另外gpt 给出另外一种版本,笔者认为不是很好理解,虽然代码正确,但不是很好理解。如下: 对于 dp[i][j]的赋值 与value[i-1] 有关系。没有这一步,会导致dp[0][0] 到 dp[0][j] 全为0。
2024-08-23 20:23:30
236
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅