- 博客(18)
- 收藏
- 关注
原创 Spring IoC & DI 完全指南:从概念到实战
所谓程序(Program)程序 = 指令 + 指令要处理的数据狭义上,程序通常表现为一组文件。而最早的计算机编程,是真的要用 0 和 1 的——比如最早的微型电脑 Altair 8800,用户需要拨动开关,一个 bit 一个 bit 地把程序录入进去。如果今天还要求大家用二进制编程,那大家真的都要疯掉了(Σ(っ °Д °;)っ)。于是,编程语言应运而生。每个应用程序运行在现代操作系统之上时,操作系统会提供一种抽象:好像系统上只有这个程序在运行,所有硬件资源都被它在用。这种假象是通过进程。
2026-10-30 20:50:16
96
原创 HTML + CSS + JavaScript 前端基础完全指南
HTML(Hyper Text Markup Language),即超文本标记语言。超文本:比普通文本更强大,不仅包含文本,还可以包含图片、音频、视频以及交互式内容标记语言:由标签构成的语言,HTML的标签都是提前定义好的可以类比飞书文档或Word文档——选中文本点击"标题1",就会应用对应的样式。CSS(Cascading Style Sheet),层叠样式表,用于控制页面的样式。可以理解为"化妆术",实现结构与表现的分离。HTML是一种超文本标记语言,主要用于页面内容的显示和排版。
2026-07-27 12:37:25
211
原创 万字吃透 JVM 全套笔记:从虚拟机基础、内存分区、类加载到 GC 完整实战
JVM 全称 Java 虚拟机,是一套进程级虚拟机系统虚拟机:完整模拟 CPU 硬件指令,虚拟一整套硬件设备,占用资源极高;JVM 进程虚拟机:只专门解析 Java 字节码.class文件,只模拟程序运行需要的运行环境,轻量化运行。虚拟机基础:区分系统虚拟机 / 进程虚拟机,理解 Java 跨平台底层逻辑;运行时内存分区:5 大内存区域功能、线程私有 / 共享区分、各类 OOM 异常场景;类加载机制:class 文件结构、加载五阶段、四层类加载器、双亲委派模型与破坏场景;
2026-07-12 15:15:47
362
原创 【计算机网络】HTTPS协议详解
明文:要传输的原始的信息密文:通过一定的规则将明文变换后的内容加密:将明文变成密文解密:将密文变成明文密钥:在加密和解密的过程中,,往往需要一个或多个中间的数据来辅助该过程,这样的数据称为密钥为什么需要HTTPS,为什么需要加密?前几年有一个运营商劫持事件,由于我们通过网络传输的任何数据都会经过运营商的网络设备(路由器、交换机等),那么运营商的网络设备就可以解析出我们传输的数据内容,并进行篡改。
2026-07-10 15:50:34
257
原创 网络编程套接字万字详解
网络编程:网络中的不同主机,通过各自进程,以代码方式实现网络通信 / 数据传输。通信主体:不同主机的不同进程;特殊场景:同一台主机内的多个进程通过网络传输数据,也属于网络编程(开发测试常用);核心角色:一类进程负责获取网络资源(客户端),一类进程负责提供网络资源(服务端)。Socket(套接字)是操作系统提供的网络通信基础单元,基于 TCP/IP 协议簇实现,基于 Socket 开发网络程序,就是网络编程。
2026-06-11 20:02:48
238
原创 Java文件操作与IO详解
表格修饰符及类型属性说明依赖于系统的路径分隔符,String 类型的表示separator依赖于系统的路径分隔符,char 类型的表示表格修饰符及返回值类型方法签名说明intread()读取一个字节的数据,返回 -1 代表已经完全读完了int最多读取 b.length 字节的数据到 b 中,返回实际读到的数量;-1 代表已经读完了int最多读取 len 字节的数据到 b 中,放在从 off 开始位置,返回实际读到的数量;-1 代表已经读完了voidclose()关闭字节流。
2026-06-11 12:38:29
236
原创 Java 多线程高频面试题全解|锁、CAS、Synchronized、JUC、并发集合、死锁汇总
多线程是 Java 后端面试必考重难点,锁原理、CAS、Synchronized 底层、JUC 工具包、ConcurrentHashMap、死锁等问题频繁出现在校招与社招面试中。本文基于多线程进阶知识点,整理全量面试真题 + 标准答案,方便面试复习与日常查阅。读锁与读锁:不互斥,多线程可并发读取;写锁与写锁:互斥,同一时间只能一个线程写入;读锁与写锁:互斥,读写不能同时进行。,适合读多写少场景(如配置查询、教务系统查看数据),synchronized 不属于读写锁。
2026-06-04 13:33:43
219
原创 Java 多线程进阶:锁策略、CAS、Synchronized 原理与 JUC 核心组件
CAS 仅比较内存值,无法感知数据是否被修改过。初始值A,线程 1 读取值为A,准备修改为Z;线程 2 将值A改为B,再改回A;线程 1 执行 CAS,发现值还是A,误以为未被修改,直接更新为Z,导致数据异常。多个线程互相持有对方需要的锁,且都不释放,导致无限阻塞、程序卡死。类比两人互相要对方的酱油和醋,互不妥协,僵持不下。锁策略无优劣,乐观锁适合低冲突、悲观锁适合高冲突,自旋锁平衡开销与效率;CAS 是乐观锁基石,性能高但存在 ABA 问题,版本号可解决;
2026-06-03 21:42:19
489
12
原创 别在啃厚书了!线程知识点全在这里
线程是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作单位。一个进程可以包含多个线程,所有线程共享进程的资源(如内存、文件描述符等),但每个线程拥有独立的程序计数器、栈和寄存器组。⼀个线程就是⼀个 “执行流”. 每个线程之间都可以按照顺序执行自己的代码. 多个线程之间 “同时” 执行着多份代码,main()⼀般被称为主线程(Main Thread)。
2026-05-21 20:24:13
443
8
原创 一篇拿下MYSQL里的事务
MySQL 事务的核心价值是保障数据安全,ACID 四大特性中,原子性、持久性由底层日志实现,一致性由业务和数据库约束共同保障,隔离性则通过隔离级别和锁机制控制。掌握事务的控制语句和隔离级别,是编写高并发、高可靠业务系统的基础。
2026-05-17 22:02:08
519
10
原创 MYSQL索引全解
a ✅a+b ✅a+b+c ✅a + 范围 (b)+c → 只到 ba+c → 只到 ab /c/b+c → ❌ 全失效回表 = 两次索引查询第一步:查二级索引利用二级索引(普通 / 唯一 / 复合索引)快速定位,在叶子节点拿到主键值(如id第二步:回表查聚集索引拿着主键值,去主键索引(聚集索引)中查询,获取完整的行数据。这第二次查询聚集索引的过程,就叫回表。表格查询方式是否回表核心原因直接查主键❌ 不回表走聚集索引,叶子节点就是完整数据。
2026-05-13 18:10:17
418
9
原创 深入理解 Java Map、Set 与哈希表:原理 + 手写代码 + 实战
在 Java 开发与面试中,Map 和 Set是永远绕不开的核心集合。二叉搜索树 / 红黑树哈希表(哈希桶)本文从零开始,带你吃透原理、手写代码、掌握场景,彻底搞定 Map/Set。二叉搜索树(Binary Search Tree,BST)也叫二叉排序树左子树所有节点值根节点值右子树所有节点值根节点值左右子树也必须是二叉搜索树java运行/*** 自定义哈希桶(数组 + 链表)* 实现:put、get、扩容、负载因子控制*/// 链表节点int key;int value;
2026-04-26 15:35:02
410
原创 二叉树高频题型解析与实现
本文覆盖了二叉树从基础创建、遍历到高级结构判断、变换的全场景解法,核心思路以 “递归” 为主 —— 二叉树的天然递归结构决定了递归是最直观、最易实现的解法。递归终止条件是避免栈溢出的关键,需精准判断 “空节点”“目标层” 等边界;子问题思路(分治)是解决节点统计、高度计算的核心,可减少全局变量的使用;时间复杂度优化(如平衡二叉树的 O (N) 解法)需结合 “边计算边校验” 的思想,避免重复操作。建议结合实际测试用例调试代码,理解每一步递归的执行流程,加深对二叉树逻辑的理解。
2026-04-21 17:48:00
375
原创 继承和组合
在 Java 中,用类描述现实实体时,不同类往往包含大量重复代码。例如:狗和猫都有 name、age、weight 属性,都有 eat ()、sleep () 方法。为了,Java 提供了继承机制。
2026-04-15 18:24:18
337
原创 类和对象(一)
类是对象的模板 / 设计图,描述对象的属性(成员变量)和行为(成员方法)。java运行// 类名:大驼峰命名法// 成员变量(属性)修饰符 数据类型 变量名;// 成员方法(行为)修饰符 返回值类型 方法名(参数列表) {// 方法体java运行/*** 手机类:描述属性与行为*/// 成员变量(属性)// 品牌// 价格// 颜色// 成员方法(行为)System.out.println(brand + " 手机正在打电话");
2026-04-14 14:07:20
320
原创 qsort函数的讲解及其变式
/ int (*compar)(const void*, const void*)//函数指针:指向了不同类型数据的比较函数,这个比较函数是使用qsort的程序员自己准备的。// size_t size, //待排序的数据中,一个元素的大小,单位是字节。// size_t num, //待排序的数据的元素个数。//void qsort(void* base, //待排序的数据的起始位置。////这个函数只能用来排序整型数据。
2026-01-19 16:50:44
336
【Java Web开发】基于Spring MVC的Web应用设计:MVC架构与三层模型协同的RESTful服务实现
2026-07-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅