- 博客(28)
- 收藏
- 关注
原创 JVM:垃圾回收机制(GC)
核心思路是:从“根对象”出发,遍历所有可达对象,未被遍历到的就是垃圾。- 方法区(Method Area):存储类信息、常量、静态变量等,回收频率极低(主要回收废弃常量和无用类),不是GC的重点;3. 遍历结束后,未被标记为“可达”的对象,就是“垃圾对象”(因为没有任何根对象能访问到它们,后续无法再使用)。2. 递归遍历可达对象的所有引用(比如对象的成员变量、数组元素),将被引用的对象也标记为“可达”;- 最终, a 原引用的对象被标记为“不可达”(垃圾), b 引用的对象被标记为“可达”(保留)。
2025-11-25 16:53:09
619
原创 网络原理:HTTPS加密流程
HTTPS不仅仅是地址栏中的那个小锁图标,它背后是一套精心设计的加密体系。从非对称加密到对称加密,从证书验证到密钥交换,每个环节都为确保我们的网络安全而设计。下次当你在线购物或登录银行账户时,可以放心地知道:你的数据正在安全的加密通道中传输,就像在专属的装甲车中旅行一样安全。
2025-10-29 00:22:23
811
原创 网络原理:数据链路层、NAT与网页加载
当你的电脑( MAC: 11:22:33:44:55:66 )想给同一局域网中的打印机( MAC: AA:BB:CC:DD:EE:FF )发送打印任务时,数据链路层会创建一个帧,目标地址填打印机的MAC,源地址填自己的MAC,然后把数据装进去。| 目标MAC地址 (6字节) | 源MAC地址 (6字节) | 类型 (2字节) | 数据 (46-1500字节) | 帧校验序列 (4字节) |交换机是数据链路层的核心设备,它有一个MAC地址表,记录着每个端口连接的设备MAC地址。
2025-10-27 23:24:07
782
原创 网络原理:IP协议
IP(Internet Protocol,互联网协议)是互联网通信的基础协议,属于TCP/IP协议族中的网络层核心协议。简单来说,IP协议负责将数据包从源设备发送到目标设备,就像邮局系统负责将信件从寄件人送到收件人手中一样。IP协议的主要特点是无连接和不可靠——它不预先建立连接,也不保证数据包一定能到达目的地,这些高级功能由上层协议(如TCP)来补充。IP地址:互联网上的“门牌号”
2025-10-21 20:11:17
863
原创 网络原理:TCP协议
TCP协议通过面向连接、可靠传输、流量控制和拥塞控制等机制,为互联网应用提供了稳定可靠的数据传输服务。虽然有一定的开销和延迟,但在需要可靠通信的场景中,TCP仍然是不可替代的选择。
2025-10-21 20:02:32
870
原创 网路原理:UDP协议
UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输层协议。它不保证数据包的顺序、不重传丢失的包,也不提供拥塞控制机制,但其优点是‘传输效率高、延迟低‘,适用于实时应用如视频流、语音通话、DNS 查询等。---UDP 是一种轻量、快速但不可靠的传输协议。它的报文结构简单,头部固定为 8 字节,适用于对实时性要求高、可容忍部分数据丢失的场景。在使用 UDP 时,开发者通常需要在应用层实现可靠性机制(如重传、排序)来满足业务需求。
2025-10-14 23:06:24
486
原创 网络原理:网络通信基础概念全面整理
IPv6:如 `2001:0db8::ff00:0042:8329`,由128位二进制数表示,解决IPv4地址不足的问题。- IPv4:如 `192.168.1.1`,由32位二进制数表示,通常以点分十进制形式书写。发送数据时,从上至下逐层添加头部(和尾部)信息,形成最终在网络中传输的数据帧。为了降低网络设计的复杂性,网络协议通常被分为多个层次,每一层负责不同的功能。接收数据时,从下至上逐层解析并移除头部信息,最终将数据交给目标应用程序。4. 数据链路层:添加MAC头,形成数据帧,通过物理设备发送。
2025-10-14 22:49:23
496
原创 多线程:三大集合类
在Java开发中,HashTable、HashMap和ConcurrentHashMap是三个常用的键值对存储集合,它们在面试和实际开发中都扮演着重要角色。
2025-10-07 23:35:07
824
2
原创 多线程:synchronized(锁)
在多线程编程中,当我们有多个线程同时访问共享资源时,就会出现数据竞争的问题。想象一下,你和家人共享一个银行账户,如果你们同时在不同ATM机上取钱,系统该如何保证余额的正确性?为了解决上述问题,synchronized出现了,它是Java中解决多线程并发问题最常用、最基础的同步机制,你也可以称呼它为锁机制。
2025-10-07 16:27:45
864
原创 多线程:安全问题
什么是线程安全问题?简单来说,当多个线程同时访问共享资源时,如果最终的结果取决于线程的执行顺序,就会出现线程安全问题。这会导致数据不一致、程序崩溃等不可预知的后果。线程安全问题的根本原因。
2025-10-06 00:50:00
530
原创 MySQL:每个查询的定义与用法
- 在3000-6000之间。COALESCE(commission_pct, 0) AS commission -- 如果commission_pct为NULL则返回0。WHERE (salary > 5000 OR commission_pct IS NOT NULL) -- 括号优先执行。
2025-09-27 20:33:58
559
原创 多线程:Thread类基本用法(JAVA)
多线程编程是现代软件开发中不可或缺的一部分,它允许程序同时执行多个任务,大大提高应用程序的效率和响应能力。
2025-09-20 22:41:14
732
原创 多线程:进程和线程
进程可以理解为正在执行的程序。当我们启动一个应用程序(如浏览器、文本编辑器等)时,操作系统会为其创建一个进程。更专业地说,进程是操作系统进行资源分配和调度的基本单位。每个进程都有自己独立的内存空间、数据栈以及其他系统资源(如打开的文件、信号处理等)。进程的特点:1. 独立性:每个进程拥有独立的地址空间,一个进程崩溃不会直接影响其他进程2. 资源开销大:创建和销毁进程需要分配和回收大量资源3. 通信复杂:进程间通信(IPC)需要特殊机制,如管道、消息队列、共享内存等。
2025-09-16 11:57:02
316
原创 MySQL:数据库增删改查操作详解
MySQL作为最流行的关系型数据库管理系统之一,其核心操作就是增(Insert)、删(Delete)、改(Update)、查(Select),简称CRUD。在开始之前,我们先创建一个简单的示例表:这个users表包含用户ID、姓名、邮箱、年龄和创建时间字段。
2025-09-16 11:41:03
297
原创 Java哈希表详解:原理、实现与应用
哈希表是一种通过哈希函数将键(key)映射到表中特定位置来访问记录的数据结构,这种映射关系可以加快查找速度。### 基本概念- **键(Key)**:用于查找的唯一标识- **值(Value)**:与键关联的数据- **哈希函数(Hash Function)**:将键转换为数组索引的函数- **哈希冲突(Hash Collision)**:不同键映射到相同索引的情况哈希表是Java中最高效的数据结构之一,理解其工作原理对于编写高性能Java代码至关重要。
2025-07-19 23:48:55
830
原创 JAVA数据结构:栈和队列
栈和队列作为基础数据结构,其思想渗透在各种算法中。理解要点:1. 掌握两种结构的**操作特性**和**实现原理**2. 根据场景选择合适结构(如需要反向处理优先选栈)3. 实际开发优先使用标准库实现(如Deque)
2025-05-16 22:31:17
954
原创 Java实现数据结构:顺序表与链表详解
数据结构是计算机存储、组织数据的方式,它决定了数据的逻辑关系、存储方式以及操作效率。在Java中,我们可以通过类和对象来实现各种数据结构。本文将重点介绍两种基础的线性数据结构:顺序表(基于数组实现)和链表。顺序表和链表是最基础的两种线性数据结构,各有优缺点。理解它们的实现原理和性能特点,能够帮助我们在实际开发中做出合理的选择。Java集合框架提供了这两种数据结构的成熟实现,但了解其底层原理对于编写高效、可靠的代码至关重要。
2025-05-02 22:47:49
931
原创 JAVA世界中的交通事故:异常
异常处理就像城市交通管理,需要预防、处理和善后的完整体系。记住:好的异常处理能让程序像经验丰富的老司机,即使遇到突发状况也能优雅应对。当你在代码中看到异常时,不要惊慌,它正是程序在向你发送求救信号。掌握这些技巧,你将成为代码世界的超级交警!希望大家在Java世界通行的时候能记住今天小楊教给大家的交通规则,大家也可以分享一下遇到的交通事故哦!
2025-04-15 17:14:02
777
原创 JAVA继承与多态深度解析
继承构建层次,多态实现弹性。好的面向对象设计应该像生态系统——各类生物(对象)各司其职,通过遗传(继承)保持共性,通过变异(多态)展现个性,最终形成稳定而富有生命力的代码生态。!
2025-03-21 21:01:19
935
原创 Java类和对象完全解析
面向对象编程不是简单的语法使用,而是培养"对象思维"。试着用程序世界的眼睛观察现实:每个路灯都是Light类的实例,每辆汽车都是Car对象在运行,整个城市就是一个庞大的对象协作系统。当你开始用这种视角思考,就真正步入了OOP的殿堂。
2025-03-19 21:33:06
847
原创 JAVA的基本数据类型详解
Java的基本数据类型共有八种,分为四类:1. **整数类型**:`byte`、`short`、`int`、`long`2. **浮点类型**:`float`、`double`3. **字符类型**:`char`4. **布尔类型**:`boolean`这些数据类型在内存中占用的空间和表示的范围各不相同,下面我们将逐一介绍。Java的八种基本数据类型是编程的基础,理解它们的特点和使用场景对于编写高效、可靠的代码至关重要。
2025-03-05 21:27:54
910
原创 陷阱指针--野指针
*野指针**是指指向无效内存地址的指针。这些指针可能指向已经被释放的内存区域,或者从未被初始化的内存地址。使用野指针会导致程序行为不可预测,甚至引发严重的运行时错误。### 野指针的常见表现形式1. **未初始化的指针**:指针变量声明后未初始化,其值是一个随机地址,指向未知的内存区域。```cint *p;// 未初始化*p = 10;// 危险!
2025-03-03 12:46:32
953
原创 指针的理解(c语言)
指针是一个变量,其值为另一个变量的地址。简单来说,指针就是内存地址的别名。通过指针,我们可以直接访问和操作内存中的数据。### 指针的声明在C语言中,指针的声明格式如下:```c数据类型 *指针变量名;```例如:```cint *p;// 声明一个指向int类型变量的指针p```这里,`int *p` 表示 `p` 是一个指向 `int` 类型变量的指针。指针是C语言中最强大的工具之一,掌握指针的使用对于编写高效、灵活的C语言程序至关重要。
2025-03-01 22:34:32
988
原创 扫雷游戏:从代码到实现的全面解析
通过这段代码,我们实现了一个简单的扫雷游戏。虽然功能相对基础,但它涵盖了扫雷游戏的核心逻辑。你可以在此基础上进行扩展,例如增加难度选择、计时功能、排行榜等,进一步提升游戏的可玩性。希望这篇博客能帮助你理解扫雷游戏的实现原理,并激发你编写更多有趣的游戏的兴趣。如果你对代码有任何疑问或建议,欢迎在评论区留言讨论!---!
2025-02-18 14:22:29
799
原创 探索C语言中的分支与循环语句
Hi,大家好,又见面了,见字如面哈哈,没有发博客的这段时间都有在好好学习代码哦,期间也给自己的博客账号想了一个名字,叫做“小楊++”如何呢,小楊是因为本人姓杨,++嘛懂的都懂咯嘿嘿。好了,废话不多说,这篇博客主要是总结一下小楊这段时间的学习成果,今天要分享的是C语言中的分支与循环语句。
2025-02-11 23:45:15
893
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅