本文为原创内容,转载请注明出处并附带原文链接。感谢您的尊重与支持!
你必须非常努力,才能看起来毫不费劲。
引言TCP 是一个非常复杂且伟大的协议,它通过许多机制来确保传输的可靠性。为了实现这一目标,TCP需要处理各种问题,比如数据损坏、丢包、重复数据以及分片顺序混乱等。如果这些问题得不到解决,可靠传输就无从谈起。
众所周知,TCP 是一个可靠传输的协议,那么它是如何实现这种可靠性的呢?
为了实现可靠传输,需要考虑许多方面的问题,例如数据的破坏、丢包、重复传输以及分片顺序的混乱等。如果这些问题得不到解决,可靠传输就无从谈起。
TCP 是通过以下机制来实现可靠传输的:序列号、确认应答、重传控制、连接管理以及窗口控制。
今天,我们将重点介绍 TCP 的重传机制、滑动窗口、流量控制和拥塞控制。
重传机制TCP 实现可靠传输的一种方式是通过使用序列号和确认应答。
在 TCP 协议中,当发送端的数据到达接收端时,接收端会发送一个确认应答消息,表示已经成功接收到数据。
然而,在复杂的网络环境中,数据传输并不总是那么顺利。如果数据在传输过程中丢失了怎么办?
为了应对数据包丢失的情况,TC ...
JAVA面经
未读本文为原创内容,转载请注明出处并附带原文链接。感谢您的尊重与支持!
你必须非常努力,才能看起来毫不费劲。
面试官: 数据库的三大范式候选人:
每个列都不可拆分
在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分
在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键列
面试官: 说一下外键约束候选人:
外键约束的作用是维护表与表之间的关系,确保数据的完整性和一致性。让我们举一个简单的例子:
假设你有两个表,一个是学生表,另一个是课程表,这两个表之间有一个关系,即一个学生可以选修多门课程,而一门课程也可以被多个学生选修。在这种情况下,我们可以在学生表中定义一个指向课程表的外键,如下所示:
123456CREATE TABLE students ( id INT PRIMARY KEY, name VARCHAR(50), course_id INT, FOREIGN KEY (course_id) REFERENCES courses(id));
这里,students表中的course_id字段是一个外键,它指向courses表中的id ...
数据结构与算法
未读本文为原创内容,转载请注明出处并附带原文链接。感谢您的尊重与支持!
你必须非常努力,才能看起来毫不费劲。
前言阅读完本篇文章,你可以在力扣顺便解决以下题目:
121. 买卖股票的最佳时机(简单)
122. 买卖股票的最佳时机 II(中等)
123. 买卖股票的最佳时机 III(困难)
188. 买卖股票的最佳时机 IV(困难)
309. 买卖股票的最佳时机含冷冻期(中等)
714. 买卖股票的最佳时机含手续费(中等)
👊虽然在处理某些股票相关的问题时,直接使用简单的方法可能看起来更直接也更容易实现,但我希望通过采用一种更为通用的方法——比如动态规划来解决问题,即便这在开始时可能会让人觉得有些复杂或繁琐。实际上,使用如贪心算法等方法可能在解决这类问题时更加直观且效率更高。然而,我们的目标是通过动态规划这种更具普遍性的策略,帮助大家建立起解决这类问题的能力,使得在未来面对更多类似挑战时可以更加从容不迫,并且能够用最少的记忆负担应对更多的题目类型。这样做是为了长远考虑,帮助积累解决问题的通用技巧,而不是仅仅针对单一问题寻找捷径。
💪接下来,让我们探讨一下如 ...
本文为原创内容,转载请注明出处并附带原文链接。感谢您的尊重与支持!
你必须非常努力,才能看起来毫不费劲。
目录1. 常见的五种单例模式的实现⽅式2. 约瑟夫环 (递归)3. 交替打印奇偶数 (Semaphore、synchronized搭配wait、notify)4. 交替打印 ABC (Semaphore)5. 三个线程交替打印 1 到 99 (Semaphore、AtomicInteger)6. 实现⼀个线程安全的计数器 (ThreadPool、AtomicInteger / LongAdder)7. 控制三个线程的执⾏顺序 (CountDownLatch、join)8. 五⼈赛跑裁判 (ThreadPool、AtomicInteger、CountDownLatch)9. LRU缓存(升级版:带缓存过期时间)
常见的五种单例模式的实现⽅式1、枚举(推荐):123456public enum Singleton { INSTANCE; public void doSomething(String str){ Syste ...
JAVA面经
未读本文为原创内容,转载请注明出处并附带原文链接。感谢您的尊重与支持!
你必须非常努力,才能看起来毫不费劲。
1 Java常见的集合类面试官:说一说Java提供的常见集合?(高频)候选人:
在java中提供了量大类的集合框架,主要分为两类:
第一个是Collection 属于单列集合,第二个是Map 属于双列集合
在Collection中有三个子接口List、Set和Queue。在我们平常开发的过程中用的比较多像list接口中的实现类ArrarList和LinkedList。 在Set接口中有实现类HashSet和TreeSet。在Queue接口中有实现类PriorityQueue等。
在map接口中有很多的实现类,平时比较常见的是HashMap、TreeMap,还有一个线程安全的ConcurrentHashMap
面试官:说说List,Set,Map三者的区别?候选人:
List (对付顺序的好帮⼿): 存储的元素是有序的 、可重复的。
Set (注重独⼀⽆⼆的性质): 存储的元素是**⽆序的**、不可重复的。
Map (⽤ Key 来搜索的专家): 使⽤键值对 ...
JAVA面经
未读本文为原创内容,转载请注明出处并附带原文链接。感谢您的尊重与支持!
你必须非常努力,才能看起来毫不费劲。
面试官: Spring,Spring MVC,Spring Boot 之间什么关系?Spring MVC 是 Spring 中的一个很重要的模块,主要赋予 Spring 快速构建 MVC 架构的 Web 程序的能力。MVC 是模型(Model)、视图(View)、控制器(Controller)的简写,其核心思想是通过将业务逻辑、数据、显示分离来组织代码。
使用 Spring 进行开发各种配置过于麻烦比如开启某些 Spring 特性时,需要用 XML 或 Java 进行显式配置。于是,Spring Boot 诞生了!Spring Boot 只是简化了配置,如果你需要构建 MVC 架构的 Web 程序,你还是需要使用 Spring MVC 作为 MVC 框架,只是说 Spring Boot 帮你简化了 Spring MVC 的很多配置,真正做到开箱即用!
面试官:@RestController vs @Controller候选人:
@Controller + @Respo ...
JAVA面经
未读本文为原创内容,转载请注明出处并附带原文链接。感谢您的尊重与支持!
你必须非常努力,才能看起来毫不费劲。
面试官: 面向对象(OOP)和面向过程(POP)的区别(高频)候选人:
⾯向过程 :⾯向过程性能⽐⾯向对象⾼。 ⽐如单⽚机、嵌⼊式开发、Linux/Unix 等⼀般采⽤⾯向过程开发。以函数为中心,强调逻辑流程。
⾯向对象 :⾯向对象易维护、易复⽤、易扩展。 因为⾯向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,⾯向对象性能⽐⾯向过程低。以对象为中心,强调数据和行为的封装。
拓展:为什么⾯向过程性能⽐⾯向对象⾼?
⾯向过程也需要分配内存,计算内存偏移量,Java 性能差的主要原因并不是因为它是⾯向对象语⾔,⽽是 Java 是半编译语⾔,最终的执⾏代码并不是可以直接被 CPU 执⾏的⼆进制机械码。⽽⾯向过程语⾔⼤多都是直接编译成机械码在电脑上执⾏。
面试官:Java的基本数据类型候选人: Java 语言一共提供了八种原始的数据类型(byte、short、int、long、float、double、cha ...
个人碎碎念
未读本文为原创内容,转载请注明出处并附带原文链接。感谢您的尊重与支持!
你必须非常努力,才能看起来毫不费劲。
🎉 Hello, World!欢迎来到我的个人网站!这是一个承载思考与创意的空间,也是我与世界对话的窗口。从构思到上线,这个小小的角落凝聚了我的热情与心血。
🌿 为什么是“Hello, World”?“Hello, World!” 是程序员的第一课。它不仅是一句简单的问候,更象征着探索与创造的开始。每一个程序员在学习一门新语言时,都会用它来向世界宣告自己的到来。
而我的个人网站,也像是一次数字世界的问候。它不仅代表着技术上的实现,更是我向世界展示自我的方式。在这里,我记录思考、分享作品、交流想法。这个名字承载了我对新起点的期待,也寄托着我不断学习和成长的决心。
🌿 关于这里在这里,你会找到:
📝 日常分享:记录生活中的点滴瞬间,感悟万物之美。
🎨 绘画作品:用色彩描绘内心世界,捕捉灵感的瞬间。
💡 技术探索:分享我的学习笔记和项目经验,共同成长。
💬 与我互动每一篇文章、每一幅作品,都是我世界的一部分。我希望你在这里找到共鸣,也欢迎留下你的想法和故事。
...