自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 CSS 选择器的常见用法

分类选择器示例说明基础标签p选中所有 p 标签类.box选中 class 为 box 的元素ID#app选中 id 为 app 的元素(唯一)通配符选中所有元素关系后代div pdiv 内所有 p(含子孙)子代div > pdiv 的直接子元素 p相邻兄弟h1 + ph1 后面的第一个 p通用兄弟h1 ~ ph1 后面的所有 p属性等于属性值完全匹配包含属性值包含特定字符串状态伪类悬停:hover鼠标悬停状态结构第 n 个子元素排除排除某个选择器伪元素前后插内容::before。

2026-10-31 19:02:45 216

原创 深入理解 JVM 垃圾回收(GC)

垃圾回收是 JVM 最耀眼的明珠之一。为什么回收:防止内存泄漏和溢出,把程序员从内存管理中解放出来。回收哪里:重点是共享的堆(新生代/老年代)和方法区。怎么标记:采用可达性分析算法,从GC Roots向下搜索,不可达的即判死刑。怎么回收:实行分代收集。新生代存活率低,用复制算法老年代存活率高,用标记-清除/整理算法。谁来回收:从早期的单线程 Serial,到多线程的 Parallel,再到重低延迟的 CMS,最终进化到目前的王者 G1 收集器。

2026-10-30 23:19:17 652

原创 深入理解 Java 类加载机制与双亲委派模型

双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器。当一个类加载器收到类加载的请求时,它不会自己先去尝试加载,而是把这个请求委派给父类加载器去完成。每一层都是如此。只有当父类加载器反馈自己无法完成这个加载请求时,子加载器才会尝试自己去加载。自定义类加载器(委派请求) ---> 应用程序类加载器(委派请求) ---> 扩展类加载器(委派请求) ---> 启动类加载器[找到] <---------------------------------- (尝试加载)

2026-10-30 20:06:03 377

原创 HTTPS 的加密流程

原理:通过单向散列函数(如 SHA-256),将任意长度的数据变成固定长度的摘要。数据变一点点,摘要就完全不同。作用:验证数据的完整性,防止被篡改。机制使用场景解决的问题对称加密实际的 HTTP 数据传输解决加密解密的性能问题非对称加密握手阶段加密传输 Pre-Master Secret解决对称密钥安全交换的问题数字证书验证服务器身份解决公钥被中间人调包的问题摘要算法计算随机数、校验报文保证数据的完整性。

2026-10-29 23:39:02 490

原创 HTTP 协议的基本格式和 fiddler 的用法

维度核心要点请求格式请求行(方法 + URI + 版本)+ 头部 + 空行 + 请求体响应格式状态行(版本 + 状态码 + 原因)+ 头部 + 空行 + 响应体头部规则键值对、冒号分隔、不区分大小写、慎用下划线Fiddler 定位本地代理,截获、查看、修改、重放 HTTP/HTTPS 流量必做配置信任根证书,开启 HTTPS 解密核心面板。

2026-10-29 12:17:03 198

原创 深入理解数据链路层:以太网、MAC 地址与交换机

MAC 地址(物理地址/硬件地址):是烧录在网卡(NIC)上的全球唯一标识符。格式:长度为48 位(6 个字节),通常用十六进制表示,如。前 24 位是厂商识别码,后 24 位是厂商自行分配的序列号。广播 MAC 地址。当目的地址为全 F 时,局域网内的所有设备都会接收并处理该帧。IP 地址是逻辑地址,描述你所处的网络位置(像“小区门牌号”),会随着你连接不同网络而改变。MAC 地址是物理地址,标识你这台物理设备(像“身份证号”),不可更改。以帧为单位。

2026-10-28 20:43:16 474

原创 IP 协议的相关特性

数据链路层(如以太网)对帧的最大长度有限制,这个限制称为MTU(Maximum Transmission Unit,最大传输单元)。以太网的默认 MTU 是1500 字节。由于 IPv4 只有 32 位(约 43 亿个地址),早已分配殆尽。128 位地址:号称可以为地球上每一粒沙子分配一个 IP。简化首部:去掉了首部校验和,取消了分片(交由源端处理),提高了路由器转发效率。支持即插即用:无需 DHCP 即可自动配置。内置安全:强制支持 IPSec。IP 协议作为网络层的核心,是构建整个互联网的基石。

2026-10-28 20:06:07 486

原创 TCP 协议的相关特性

三次握手、四次挥手实现了安全的连接管理。序列号、确认应答、超时重传保证了可靠性。滑动窗口实现了流量控制,避免压垮接收方。慢启动、拥塞避免实现了拥塞控制,避免压垮网络。面向字节流的特性要求我们在应用层处理好粘包/拆包问题。深刻理解 TCP 的这些特性,不仅有助于应对面试,更是编写高性能、高可靠网络程序(如 RPC 框架、网关、消息队列)的基石。

2026-10-27 18:28:31 412

原创 UDP 报文结构与注意事项总结

UDP 是一种简单、高效的传输层协议,其报文结构固定为 8 字节首部,包含源端口、目的端口、长度和校验和。它无连接、不可靠、面向报文,适合实时性高、能容忍丢包的场景。应用层要自己处理丢包、重复、乱序。控制数据大小,避免 IP 分片。合理设置缓冲区,及时读取。了解校验和、端口、广播/多播等机制。在需要可靠性时,可基于 UDP 构建可靠协议(如 QUIC)。掌握 UDP 的报文结构和注意事项,有助于在实际开发中正确选择传输层协议,并编写出高效、稳定的网络程序。

2026-10-12 20:36:37 92

原创 计算机网络基础概念总结

概念核心要点IP 地址网络层逻辑地址,标识主机端口号传输层标识,区分应用进程协议通信规则,语法、语义、时序协议分层OSI 七层 / TCP/IP 四层,各司其职封装从上到下添加首部分用从下到上移除首部并分发客户端主动请求方服务器被动响应方请求/响应典型的通信交互模式通信流程封装 → 传输 → 分用,逐层处理理解这些基本概念,是深入学习网络编程、分布式系统和后端开发的基础。希望本文能帮助你建立清晰的网络知识框架。

2026-10-06 22:05:41 220

原创 Java IO 核心总结:File 类、字节流与字符流详解

类别核心类用途关键点文件抽象File描述文件或目录元信息对象存在不代表文件真实存在字节输入读取字节数据read()返回 -1 表示读完字节输出写入字节数据write()写入,flush()刷新字符输入Reader读取字符数据按行读取字符输出Writer写入字符数据换行转换流字节流转字符流可指定字符集,解决乱码资源管理自动关闭流避免资源泄漏掌握File、字节流、字符流的基本用法,是 Java 文件编程的基础。操作文件元信息使用File;读写二进制文件使用;读写文本文件使用。

2026-10-03 22:56:08 371

原创 Java IO、存储、硬盘与文件系统深度总结

维度核心知识点物理存储硬盘、盘片、磁道、持久化存储文件系统树形结构、目录、绝对/相对路径、文件类型、权限系统Java 抽象(元信息操作,不代表真实存在)字节 IO(按字节读写)字符 IOScanner(按字符读写)资源管理自动关闭流理解文件系统的底层逻辑,掌握 Java IO 的字节与字符流操作,能够帮助我们在实际开发中游刃有余地处理各类文件读写需求。无论是简单的配置文件读取,还是复杂的文件扫描与复制,都能写出高效、健壮的代码。

2026-10-01 13:10:01 223

原创 Java 锁策略、CAS 与 synchronized 优化过程总结

V:内存位置(变量的内存地址)A:预期原值B:新值当且仅当 V 的当前值等于 A 时,才将 V 更新为 B,否则不做任何操作。整个比较和交换是一个原子操作。V = B;锁策略核心思想优点缺点悲观锁先加锁再操作保证一致性并发度低乐观锁先操作再检查并发度高ABA 问题、自旋开销自旋锁循环重试避免线程切换消耗 CPU偏向锁记录线程 ID无竞争时开销极低竞争时需撤销轻量级锁CAS + 自旋竞争不激烈时性能好自旋失败会升级重量级锁操作系统互斥量。

2026-09-28 23:59:36 155

原创 Java 线程池总结

工作流程:核心线程 → 队列 → 非核心线程 → 拒绝策略。Executors提供了快捷创建线程池的方法,但存在资源耗尽风险。推荐手动创建,使用有界队列和合理的拒绝策略。根据任务类型(CPU 密集型、IO 密集型)合理设置线程数,通常 CPU 密集型设为CPU 核数 + 1,IO 密集型设为2 * CPU 核数或更多。合理使用线程池,能够显著提升系统性能和稳定性。

2026-09-28 18:04:25 384

原创 Java 死锁总结:原因、排查与预防

死锁指的是:两个或多个线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉,它们都将无法推进下去。线程 A 持有锁 1,等待锁 2;线程 B 持有锁 2,等待锁 1;两者都在等待对方释放锁,结果谁也拿不到,程序永久卡死。场景说明加锁顺序不一致线程 A 先锁 1 再锁 2,线程 B 先锁 2 再锁 1嵌套锁持有锁 A 时请求锁 B,持有锁 B 时请求锁 A数据库事务两个事务互相等待对方持有的行锁线程池与任务依赖。

2026-09-25 15:10:41 154

原创 线程安全问题的原因和解决方案

线程安全可以简单理解为:当多个线程同时访问同一个对象或资源时,如果不需要额外的同步措施,程序仍然能够得到正确的结果,并且对象的状态保持一致,那么这个对象就是线程安全的。多个线程共享同一个可变状态;多个线程同时读写这个状态;没有正确的同步机制。线程安全问题的根源 = 共享可变状态 + 缺乏同步。多个线程共享了可变状态,并且没有正确同步。原子性:操作不可分割;可见性:一个线程的修改能被其他线程看到;有序性:指令执行顺序符合预期。不共享:无状态、局部变量、;final、不可变对象;

2026-09-19 00:08:07 313

原创 Java 线程的几种状态

NEWRUNNABLEBLOCKEDWAITINGTERMINATEDNEW是刚创建但未启动。RUNNABLE表示可运行,包含就绪和运行。BLOCKED表示等待锁。WAITING表示无限等待。表示限时等待。TERMINATED表示线程已经结束。理解线程状态以及它们之间的切换条件,有助于分析多线程程序的执行流程、死锁问题和性能问题。

2026-09-18 17:24:22 187

原创 Thread 类的基本用法

本文总结 Java Thread 类的基本用法,涵盖线程创建(继承 Thread 或实现 Runnable)、中断机制(interrupt()、isInterrupted())、线程等待(join())、休眠(sleep())及获取线程实例。强调正确使用 start() 启动线程,通过协作式中断安全停止任务,利用 join() 等待线程结束,注意 sleep() 不释放锁且可能抛出 InterruptedException。示例展示线程状态查询与综合应用,帮助掌握并发编程基础。

2026-09-18 17:18:55 42

原创 进程与线程的区别和联系

进程和线程是操作系统中非常核心的概念,也是面试高频考点。很多人容易混淆两者。进程是资源分配的最小单位,线程是CPU调度的最小单位。本文结合操作系统底层原理,梳理进程、线程的概念、联系、区别,以及优缺点与使用场景。前置知识回顾进程:操作系统对运行中程序的抽象,程序的一次运行实例。操作系统以进程为单位分配内存、文件句柄等系统资源。PCB(进程控制块):操作系统管理进程的数据结构,记录PID、内存映射、打开文件、信号、进程状态等信息。进程调度:单核CPU依靠时间片轮转,切换不同进程,实现宏观并发;

2026-09-10 15:47:41 259

原创 进程调度的基本过程总结

在现代操作系统中,同一台计算机可以同时运行大量应用程序,给用户造成“多个程序同时在CPU上并行运行”的错觉。但在单核CPU场景下,同一时刻CPU只能执行一条指令,只能运行一个进程。实现多程序“同时运行”的核心机制就是进程调度。本文基于计算机底层原理,梳理进程调度完整过程、相关概念与工作逻辑。进程:操作系统对正在运行程序的抽象,是程序的一次运行实例,也是操作系统资源分配的基本单位。PCB(进程控制块):操作系统用来描述、管理进程的数据结构,保存进程PID、程序信息、占用资源、调度状态等全部信息;

2026-09-06 13:24:42 230

原创 String类

String属于java.lang包,是 Java 中的引用类型。它内部并不直接存储字符串本身,而是通过一个数组来保存字符数据(JDK 9 之后改为byte[]String类被final修饰,不能被继承。字符串内容不可变,所有修改操作都会产生新的 String 对象。在 Java 中,""引起来的字符串字面量也是 String 类型的对象。// 打印字符串字面量(String对象)的长度// 输出 5由于 String 的不可更改特性,为了方便字符串的修改,Java 中提供了和类。

2026-08-18 03:07:35 208

原创 抽象类和接口

接口中的方法会被隐式指定为(只能是,其他修饰符都会报错)。// Error:(4, 18) java: 此处不允许使用修饰符privateObject 是 Java 默认提供的一个类。Java 里面除了 Object 类,所有的类都是存在继承关系的,默认会继承 Object 父类。所有类的对象都可以使用 Object 的引用进行接收。// 执行结果:所以在开发之中,Object 类是参数的最高统一类型。但是 Object 类也存在有定义好的一些方法。

2026-08-18 03:05:57 400

原创 用 Java 写一个图书管理系统

这是一个运行在控制台的图书管理系统管理员:查找图书、新增图书、删除图书、显示图书、退出系统普通用户:查找图书、借阅图书、归还图书、退出系统不同身份登录后会看到不同的菜单,执行不同的操作。整个系统围绕「书架」这一数据结构展开,所有操作都作用在同一个BookList上。这个图书管理系统本身不复杂,但它把面向对象的三大特性都用上了,并且体现了一种很实用的设计思路——「把行为抽象成对象,用数组管理行为」。

2026-08-14 17:17:45 337

原创 继承和多态

Java中使用类对现实世界中实体来进行描述,类经过实例化之后的产物对象,则可以用来表示现实中的实体,但是 现实世界错综复杂,事物之间可能会存在一些关联,那在设计程序是就需要考虑。那能否将这些共性抽取呢?

2026-06-29 23:28:44 166

原创 Java里的类和对象

本文介绍了面向对象编程(OOP)的基本概念和Java中的实现方式。主要内容包括: 面向对象与面向过程的区别,前者关注对象交互,后者注重过程步骤。 类的定义和使用,通过class关键字描述实体的属性和方法。 类的实例化过程,使用new关键字创建对象。 this引用的作用和特性,解决成员变量与参数同名问题。 构造方法的概念与特性,用于对象初始化。 对象的默认初始化和就地初始化方式。

2026-06-28 23:12:58 175

原创 数据类型与变量及运算符

注意事项:1. 变量在使用前必须要赋初值,否则编译报错2.Java中使用 单引号+单个字母 的形式表示字符字面值3.Java的boolean类型和int不能相互转换,

2024-08-31 14:48:38 318

原创 数组和函数的实践——扫雷游戏的创作

扫雷游戏是一个很经典的电脑小游戏了,相信大家在童年的时候都有玩过,是绞尽脑汁然后通关,还是每次都被炸弹杀死,不管怎样,相信这个游戏都给大家留下了深刻的印象,那么接下来我将介绍如何来写一个9*9的基本扫雷游戏回忆我们的童年。

2024-01-25 08:00:00 923

原创 C语言中的查找算法

顺序查找是一种最简单的线性查找方法。其基本思想是:从表的一端开始,顺序扫描,依次将扫描到的关键字和给定值k相比较,若当前扫描到的关键字与k相等,则查找成功;若扫描结束后,仍未找到关键字等于k的记录,则查找失败。顺序查找是最基本的查找算法。由此可见,顺序查找的效率十分低下,这只是10个数字,倘若有十万千万个,这个程序就会变得十分的繁琐。所以我接下来要介绍另一种查找算法——二分算法这张图就很好地表现了顺序查找和二分查找的区别,以及二分查找的简便性。废话不多说,接下来就让我介绍二分查找吧。

2024-01-23 08:30:00 1451 1

原创 猜数字游戏

1.自动生成1~100的随机数2.玩家进行猜数字的游戏,在过程中,根据猜测数字的大小与正确数字进行比较,给出反馈,直到猜对,游戏结束。

2023-11-21 00:17:20 420

原创 C语言 循环结构

使用方法:while(表达式)循环语句;

2023-11-20 13:09:11 492 1

原创 C语言 分支语句(选择结构)

使用方法:if (表达式)语句其流程图如下:即若if中的表达式成立,则执行语句;若表达式不成立,则不执行语句。

2023-11-18 14:21:07 387 1

原创 素数的判断和输出

输出一定范围内所有的素数。下面拿100~200来举例子。

2023-11-17 22:37:10 202 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除