自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 多线程:6种状态及其转换条件

根据Thread类的源码,Java线程共有6种状态。

2025-10-06 00:05:19 475

原创 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数据结构:深入理解二叉树

欢迎回到小楊的频道,这篇博客我将为大家讲解JAVA数据结构中的二叉树结构,看完后相信你会有所收获。

2025-06-13 21:33:09 874

原创 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

原创 程序员新人报告

为头发担忧哈哈

2025-01-19 21:41:10 188

空空如也

空空如也

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

TA关注的人

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