- 博客(25)
- 收藏
- 关注
原创 HTTP协议详解Fiddler的安装与使用
平时我们俗称的”网址“,其实就是 URL(Uniform Resource Locator),翻译为统一资源定位符互连网上的每个文件都有一个唯一的 URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
2026-01-24 22:18:24
274
原创 从输入URL到页面展示:完整过程拆解
从输入URL到页面展示,本质是“客户端与服务器的通信+资源解析渲染”的过程,涉及DNS、TCP、HTTP、浏览器渲染等多个技术点。看似简单的一次网页访问,背后是计算机网络、前端渲染等多领域知识的协同作用。
2026-01-22 21:14:14
569
原创 NAT机制工作流程全解析:从内网到公网的“翻译官”
由于NAT依赖这个转换表,所以有诸多限制:1. 无法从NAT外部向内部服务器建立连接;2. 转换表的生成销毁都需要额外开销;3. 通信过程中一旦NAT设备异常, 即使存在热备,所有的TCP连接也都会断开;但是NAT有一个最大的优点就是: 不需要更新硬件设备, 只更新软件, 就可以解决IP地址和不够用的问题!
2026-01-21 10:30:00
323
原创 深入理解TCP/IP协议栈:数据链路层核心知识点解析
数据链路层的核心是“解决同一链路内的数据传输问题”,其知识点可归纳为以下几点,也是考试和面试的高频考点:1. 核心作用:实现直接相连设备间的帧传输,为网络层提供链路服务;2. 核心技术:以太网是主流标准,定义了帧格式、传输介质等规范;3. 设备标识:MAC地址是链路内唯一标识,固化于网卡,作用范围仅限链路内;4. 地址映射:ARP协议实现IP与MAC的映射,通过广播请求、单播应答完成;希望对你有帮助!
2026-01-20 14:37:42
531
1
原创 IP协议的相关特性
对于ftp这样的程序,最大吞吐量比较重要。13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移,其实就是在表示当前分片在原报文中处于哪个位置,分片偏移的单位是8字节,即如果分片偏移是100,那么实际偏移字节数就是100 * 8 = 800。4位头部长度(header length):IP头部的长度,基本单位是4字节,也就是length * 4的字节数。16位标识(id):唯一的标识主机发送的报文,如果IP报文在数据链路层被分片了,那么每一片里的标识都是相同的。
2026-01-20 00:14:11
566
原创 深入理解TCP协议
TCP协议的设计核心是“在不可靠网络中提供可靠服务”,通过连接管理、可靠传输、性能优化三大模块,兼顾了通信的稳定性与效率。从三次握手建立连接、四次挥手释放连接,到通过序列号、ACK保障数据可靠,再到滑动窗口、拥塞控制提升吞吐量,每一个机制都体现了“折中”的设计思想。而Java代码实现则让我们看到,TCP协议的复杂底层逻辑已被高度封装,开发者通过`Socket`和`ServerSocket`即可快速实现TCP通信,只需关注数据读写与业务逻辑。
2026-01-18 00:00:03
733
1
原创 Java.基于UDP协议的核心内容
UDP是TCP/IP协议簇中的传输层协议。基于UDP的网络通信通过数据报套接字实现,在Java中对应DatagramSocket类(用于创建数据报套接字)和DatagramPacket类(作为发送或接收的UDP数据报载体)。
2026-01-09 00:19:06
848
原创 一文读懂网络通信核心:从IP到通信流程的全解析
其实整个网络通信的核心逻辑很简单:1. 用IP地址定位“设备”,用端口号定位“设备上的应用”,确保数据能精准送达;2. 用协议和协议分层明确“分工规则”,让数据传输有序、高效;3. 用封装和分用完成“数据打包-拆包”,适配不同层级的传输需求;4. 客户端发起请求、服务器响应请求,再通过完整的路由传输,最终完成一次通信。
2026-01-06 09:30:00
646
原创 一篇理清 IO、存储、硬盘与文件系统
IO是数据传输动作,存储是数据存放功能,硬盘是物理载体,三者是“动作-功能-载体”的关系。文件系统是连接硬盘物理存储和用户逻辑使用的桥梁,核心作用是管理文件结构、分配存储空间、记录文件元信息。常见文件系统:NTFS(Windows)、APFS(macOS)、ext4(Linux)、FAT32(兼容但有4GB文件限制)、exFAT(跨系统大容量首选)。inode记录文件元信息和数据块位置,数据块存储文件内容,是文件系统的核心底层结构。格式化的核心是安装文件系统,而非单纯删除数据。
2026-01-05 15:45:15
812
原创 Java IO基础核心:File类与字节流(InputStream/OutputStream)用法全解析
File类:管“文件/目录本身”,负责定位、创建、删除、判断状态,不处理数据读写。:管“读数据”,从外部(文件)读入程序,核心方法read(),常用子类FileInputStream。:管“写数据”,从程序输出到外部(文件),核心方法write(),常用子类FileOutputStream。关键注意点流资源必须关闭:优先用try-with-resources语法,自动关闭。字节流适合所有文件类型,字符流(如Reader/Writer)适合文本文件(避免中文乱码更方便)。
2026-01-04 22:37:42
798
原创 深度解析:HashTable、HashMap、ConcurrentHashMap的区别
线程安全与性能:HashTable线程安全但性能差;HashMap性能高但线程不安全;ConcurrentHashMap兼顾线程安全与高性能,是高并发场景的首选;功能特性:HashMap允许null键/值,无序;HashTable和ConcurrentHashMap不允许null键/值;ConcurrentHashMap支持原子性操作;底层结构:JDK8后,HashMap和ConcurrentHashMap都采用数组+链表+红黑树,HashTable仍为数组+链表;适用场景。
2026-01-03 21:27:22
1085
原创 深入理解synchronized:特性、使用、锁机制及与ReentrantLock的区别
synchronized是Java并发编程的基础同步机制,通过保证原子性、可见性、有序性和可重入性,有效解决线程安全问题。其使用方式灵活,支持修饰实例方法、静态方法和代码块,对应不同的锁对象。Java 6及以后的锁机制优化(偏向锁、轻量级锁、重量级锁)大幅提升了synchronized的性能,使其在低竞争场景下表现优异。与ReentrantLock相比,synchronized的优势在于简单易用、无需手动管理锁的释放,而ReentrantLock则提供了更多高级功能和更好的高竞争场景性能。
2026-01-02 22:17:05
754
原创 一篇说明白Java线程池(超详细)
直接使用构造方法,可灵活配置7个核心参数,避免Executors的OOM风险,适合实际开发的复杂场景。// 1. 自定义线程工厂(统一线程命名)@Override// 2. 自定义拒绝策略(此处用CallerRunsPolicy,主线程执行拒绝任务)// 3. 创建自定义线程池2, // 核心线程数4, // 最大线程数60, // 非核心线程空闲存活时间TimeUnit.SECONDS, // 时间单位。
2025-12-31 15:42:23
722
原创 Java阻塞队列全解析:原理、应用与模拟实现
阻塞队列是一种特殊的队列,同样遵循“先进先出”的原则,支持入队操作和出队操作。在此基础上,阻塞队列会在队列已满或队列为空时陷入阻塞,使其成为一个线程安全的数据结构,它具有如下特性:当队列为空, 尝试出队列, 产生阻塞;直到队列不空当队列为满, 尝试入队列, 产生阻塞;直到队列不满阻塞队列的核心是“阻塞特性”与“线程安全”,其底层依赖队列存储(如数组、链表)+ 锁(synchronized/ReentrantLock)+ 等待/唤醒机制(wait/notify)实现。
2025-12-30 10:00:00
1010
原创 Java深入理解单例模式:饿汉与懒汉的线程安全实现。
饿汉模式利用 JVM 类加载的天然同步机制,实现简单且天生线程安全,但存在预加载的资源浪费问题,适合单例实例创建成本低、必然会被使用的场景;懒汉模式通过“双重检查”优化锁粒度,结合“volatile 禁止指令重排序”解决原子性和有序性问题,实现了按需加载和高效并发,是日常开发中更推荐的懒加载实现方式,但需要注意 volatile 关键字的正确使用。
2025-12-29 10:30:00
1289
原创 Java中wait和sleep的核心区别
误区1:wait()和sleep()都会释放锁?—— 错!只有wait()会释放锁,sleep()不会。误区2:wait()可以在非synchronized环境中使用?—— 错!会抛出IllegalMonitorStateException异常。误区3:notify()会立即释放锁?—— 错!notify()只是唤醒线程,锁会在当前synchronized代码块执行完毕后才释放。误区4:sleep(0)没有意义?—— 错!
2025-12-28 21:22:20
965
原创 Java线程安全问题深度解析:原因与解决方案
Java线程安全问题的产生,是操作系统线程调度随机性、多线程操作共享变量、修改操作非原子性、内存可见性与指令重排序这四大因素共同作用的结果。解决线程安全问题的核心思路是“消除不确定性”,具体可通过保证操作原子性(synchronized、原子类)、保证内存可见性(volatile、synchronized)、禁止指令重排序(volatile、synchronized、final)、避免共享变量(无状态设计)等方式实现。
2025-12-27 12:07:58
863
原创 一篇说明Java.线程状态全解析
Java线程的6种状态构成了线程的完整生命周期,从NEW创建,到start()进入RUNNABLE就绪,再到CPU调度进入RUNNING运行,期间可能因为等待锁进入BLOCKED,或因为调用特定方法进入WAITING,最终通过run()执行完毕或异常终止进入TERMINATED。
2025-12-25 22:54:38
542
原创 Java Thread 类基本用法全总结
本文梳理了 Thread 类的 5 个核心基本用法,总结如下:线程创建:共五种核心方式——继承 Thread 类、实现 Runnable 接口、匿名内部类 Thread 方式、匿名内部类 Runnable 方式、Lambda 表达式方式;核心是定义任务,通过 start() 启动线程,其中 Lambda 是最简洁的推荐写法;线程中断:通过 interrupt() 发信号,isInterrupted() 判断状态,线程自身响应中断;线程等待:join() 让当前线程等待目标线程完成,控制执行顺序;
2025-12-25 09:00:00
518
原创 深入理解Thread类:run与start方法的核心区别
对比维度start() 方法run() 方法核心作用启动新线程,触发线程创建和调度执行线程任务,普通方法调用是否创建新线程是否执行方式异步执行(新线程与当前线程并行)同步执行(在当前线程中顺序执行)底层实现native方法,调用操作系统API普通Java方法,由用户或默认实现调用限制同一Thread实例只能调用一次,重复调用抛异常可重复调用,无限制执行时机调用后线程进入就绪状态,等待CPU调度后执行run()调用时立即执行,无需等待。
2025-12-24 23:14:33
721
原创 一篇说明Java中进程与线程的区别与联系
进程进程是操作系统进行资源分配和调度的基本单位,是一个正在运行的程序的实例。简单来说,当你双击运行一个java程序(比如执行java-jar命令),操作系统就会为这个程序创建一个进程,同时分配对应的内存资源(如堆内存,文件描述符等),每个进程都拥有独有的地址空间。线程线程是进程内部的一个执行单元,是操作系统进行任务调度和执行的基本单位。一个进程可以包含多个线程,这些线程共享进程所拥有的全部资源(如内存空间、文件句柄等),同时每个线程有自己独立的程序计数器、虚拟机栈和本地方法栈。
2025-12-24 01:02:34
912
原创 Java三大特性:封装、继承、多态精讲
封装、继承、多态三者不是孤立的,而是相互配合、相辅相成的:封装是基础:隐藏对象细节,保证数据安全,为继承和多态提供了稳定的基础;继承是前提:通过继承实现代码复用,同时为多态提供了“父类-子类”的层级关系;多态是延伸:基于继承和方法重写,实现代码的灵活扩展和解耦,是面向对象编程的核心价值体现。理解这三大特性,不仅能帮助我们写出更优雅、更易维护的代码,也是后续学习Java集合、框架(如Spring)等知识的基础。建议大家多动手写实例,通过实践加深理解——毕竟编程是练出来的,不是看出来的~
2025-12-21 22:47:17
991
原创 “探索C语言:编程世界的开端” NO.2 C语言----常见概念
我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆ 进制存储的呢?为了不再重复实现常见的代码,让程序员提升开发效率,C语言标准规定一组函数,这些函数再有不同的编译器厂商根据标准进行实现,提供给程序员使用。一系列的库函数一般会声明在同一个文件中,所以库函数的使用,要包含对应的头文件。在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为。,C语⾔中字符是⽤单引号 括起来的,如:'a','b','@'。,C 语⾔中的字符就遵循了 ASCII 编码的⽅式。
2024-01-21 14:40:20
1144
原创 “探索C语言:编程世界的开端“ NO.1 C语言----编译器选择与快捷键
整体考虑,推荐⼤家安装 VS2022 的社区版本学习,免费,使⽤⽅便,⼯作中常⻅。前言:C语言是每一位程序员的第一门课,接下来我将更新C语言这门基本课程,可以的话点个关注,跟上我的脚步一起学习C语言从基础到精通。⽬前已知已经有上千种计算机语⾔,⼈们是通过计算机语⾔写的程序,给计算机下达指令,让计算机 ⼯作的。• DevC++ 集成了gcc(⼩巧,但是⼯具过于简单,对于代码⻛格的养成不好,⼀些竞赛使⽤)• 默认界⾯是中⽂的,初学者友好 缺点: • 功能丰富,安装包⼤,占⽤空间多。编译,不运行所有项目。
2024-01-19 14:30:51
694
1
原创 CSDN NO.1
找志同道合队友,开始刷题学算法(OI WIKI 学算法;洛谷,牛客竞赛(刷专题);了解RALL,SFINAE—看effective modern c++;可以的话跟到老师做项目 出去打比赛;简历模板 (写上GitHu、blog、Email地址);去大厂实习 继续丰富自己的简历 并且对代码更熟练;"刷题"—博客写题解(尽量一两周一篇);:本人来自一所双非本科 网络工程专业。继续刷题目 去力扣 牛客找题目;学c++primer,STL;"刷题"—牛客多校训练;我最想进的公司:米哈游;
2024-01-16 22:05:16
837
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅