自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL锁机制:行锁、表锁、间隙锁

按粒度:表锁(MyISAM/InnoDB DDL/间隙) vs 行锁(InnoDB 记录锁)按模式:共享锁 S(读锁) vs 排他锁 X(写锁)按实现:记录锁 Record / 间隙锁 Gap / 临键锁 Next-KeyS 锁兼容矩阵:S XS ✅ ❌X ❌ ❌ (S 和 S 兼容,X 和任何互斥)引擎锁粒度特点MyISAM表锁读读兼容,写写互斥;并发写差InnoDB行锁(+表锁兜底)支持事务 + 行级并发,默认 RR-- 共享锁(读锁,禁止别人改)

2026-11-09 10:26:30 197

原创 MVCC与事务隔离级别(脏读-幻读)

特性含义MySQL 靠什么保证A 原子性全做或全不做undo log(回滚)C 一致性事务前后数据约束成立应用层 + 约束I 隔离性并发事务互不干扰锁 + MVCCD 持久性提交后不丢redo log + binlog 双写级别脏读不可重复读幻读说明READ UNCOMMITTED(读未提交)❌有有有最弱READ COMMITTED(读已提交)无❌有有Oracle 默认REPEATABLE READ(可重复读)无无基本无(MVCC)MySQL 默认。

2026-11-09 10:25:54 219

原创 MySQL索引原理:B+树与聚簇索引

一句话:索引 = 排好序的数据结构,用空间换时间,让 MySQL 从「全表扫描 O(n)」变成「树查找 O(log n)」。InnoDB 索引的两个核心事实(背下来)数据以主键聚簇索引的 B+ 树组织存储(叶子节点=整行数据)。二级(非聚簇)索引叶子节点存的是「索引列值 + 主键值」。类型说明主键索引(聚簇)叶子 = 完整行;表只有一棵聚簇树唯一索引值唯一普通(二级)索引叶子 = 键值 + 主键联合索引多列组合,走最左前缀全文索引分词搜索哈希索引Memory 引擎;

2026-11-09 10:24:49 336

原创 JAVA OOM排查与JVM调优实战(jmap、jstack、jstat)

命令全名作用类比jps列出 Java 进程 PID找到「病人」jstat监控类加载、GC、内存各分区看「心电图」jmap堆快照、堆转储(dump/histo)做「CT 扫描」jstack打印线程栈做「神经检查」jcmd超级瑞士军刀(上面命令的新统一入口)综合排查排查铁律:先确认现象(GC 日志/指标)→ 快照现场(dump/full thread dump)→ 离线分析(MAT/在线平台)→ 定位代码 → 修复 + 验证。坑说明1生产高频手动 jmap。

2026-11-02 11:09:43 201

原创 JAVA 类加载机制与双亲委派模型

类加载器(ClassLoader)的作用:把.class文件(字节码)加载进 JVM,生成Class对象。类加载 = 类从字节码到「能 new 的对象」的过程。Bootstrap ClassLoader(启动类加载器,C++ 实现,无父)└── 加载 JDK 核心:rt.jar / java.lang.* / java.util.*Extension ClassLoader(扩展类加载器)└── 加载 JDK/ext 目录下的扩展类(jre/lib/ext)

2026-10-27 17:12:09 51

原创 JAVA 垃圾回收器:CMS、G1、ZGC对比

垃圾回收三件事:找垃圾(判断)+ 清垃圾(算法)+ 分场景选器(收集器)。方法原理缺陷引用计数法对象被引用 +1,=0 回收循环引用解决不了(A↔B 互相引用但外部无引用)可达性分析(JVM 用这个)从 GC Roots 出发,不可达 = 垃圾需要 STW 才能保证一致性快照算法做法优点缺点标记-清除标记垃圾,直接清快,不搬对象产生内存碎片复制存活对象拷到另一半无碎片,快只适合存活率低的年轻代标记-整理标记后把存活对象往一端搬无碎片慢,移动对象要改引用。

2026-10-27 17:11:35 192

原创 JAVA JVM内存结构与运行时数据区

JVM 内存(运行时数据区)├── 线程私有(随线程生死)│ ├── 程序计数器(PC)│ ├── 虚拟机栈(Stack)│ └── 本地方法栈(Native Method Stack)└── 线程共享(随 JVM 生死)├── 堆(Heap)├── 方法区(Metaspace/元空间)└── 直接内存(Direct Memory,堆外)记忆口诀:两栈一计线程有,一堆一区线程共。坑说明1-Xms不等于-Xmx堆动态伸缩,缩时卡顿 + FullGC 频繁2盲目增大堆。

2026-10-26 16:21:52 178

原创 JAVA CompletableFuture异步编程实战

get()会阻塞,等不到结果前干不了别的。无法「串联」多个异步任务(等 A 完成再用 A 的结果跑 B)。没有异常处理机制(异常只能从 get 抛出来,处理时机不可控)。CompletableFuture = Future + 回调(函数式串联)实现了接口,支持链式编排。JDK8 提供,底层线程调用 + 内部状态机(栈式依赖触发回调)。把「异步 + 回调 + 组合」从业务代码里解放出来,像写同步代码一样编排异步任务。坑说明1get()不带超时永久阻塞;一定要或orTimeout2。

2026-10-26 16:21:10 138

原创 JAVA ThreadLocal、伪共享与Disruptor

技术一句话亮点程度线程私有变量,每个线程一份拷贝必考,人人会伪共享CPU 缓存行失效导致的「假竞争」面试分水岭Disruptor无锁环形队列,LMAX 交易的超高吞吐队列简历亮点ThreadLocal 适用场景:JDBC 连接管理(一个线程一个连接)、Spring 的 RequestContext(一次请求的上下文贯穿 Controller→Service)、SimpleDateFormat 线程安全包装、会话上下文透传。坑说明1线程池里不 remove。

2026-10-22 14:43:37 88

原创 JAVA 线程池七大参数与四种拒绝策略

为什么要线程池对比每次 new Thread线程池创建/销毁开销每次都有复用,零额外开销线程数量无限制 → 资源耗尽有界,受控任务调度无队列缓冲、拒绝策略管理无监控、超时回收、优雅关闭记住一句话:不使用线程池直接 new Thread,在高并发下会产生「线程风暴」,几分钟打垮服务。坑说明1Executors 快捷方法无界队列/无限线程,OOM 元凶2队列和线程数都不限制双无界 = 挂3没给线程起名字故障时 jstack 无法定位是哪个池4忘了关线程池。

2026-10-22 14:38:01 154

原创 JAVA AQS与Lock实现原理(含CAS)

AQS(AbstractQueuedSynchronizer,抽象队列同步器):JUC 锁的基础框架。用「一个状态变量 state + 一个 FIFO 等待队列」管理所有线程的获取/释放资源的同步逻辑。// 同步状态// 内部类:CLH 变体双向队列(把抢不到锁的线程排成队)// 队里等着谁// 节点状态(-1=SIGNAL 要唤醒下一个)// 队首队尾AQS 提供两种模式独占模式(EXCLUSIVE):一把锁只有一个线程持有,如 ReentrantLock。共享模式(SHARED)

2026-10-21 17:30:50 142

原创 JAVA并发基础:线程生命周期与synchronized、volatile

问题表现解决手段原子性操作被中途打断(i++ 不是原子)可见性线程修改了变量,别的线程看不到有序性编译器/CPU 指令重排导致逻辑乱序volatile / synchronized(内存屏障)CPU多级缓存 → 缓存一致性(可见性问题)指令重排序 → 有序性问题多线程竞争 → 原子性问题状态触发条件说明NEW还没 startRUNNABLEstart()就绪+运行合并;wait 后也算 RUNNABLE 的等待,准确说 RUNNABLE 包含可运行和等待获取 CPUBLOCKED。

2026-10-21 17:30:15 80

原创 JAVA 泛型、反射、注解

概念一句话作用泛型编译期类型检查 + 类型参数化让集合/类/方法支持「类型安全复用」反射运行期动态获取类结构并操作框架动态代理、依赖注入、序列化注解粘在代码上的元数据(标签)替代 XML 配置,驱动框架行为注解只是标签,反射才是读标签、执行逻辑的机器手;泛型则是编译期保护,运行时已被擦除。String message() default "字段不能为空";String message() default "字段不能为空";

2026-10-20 16:25:08 116

原创 ConcurrentHashMap并发原理

容器线程安全方式性能适用场景Hashtable整个表一把锁(synchronized 修饰方法)极差,所有操作串行基本不用HashMap无最快单线程JDK7 分段锁 / JDK8 CAS+局部锁优秀并发读写的默认选择演进史(一句话):JDK7 用「大锁拆小锁(Segment)」,JDK8 用「更细的锁 + 无锁读」。坑说明1put 传 null直接 NPE,别把 HashMap 习惯带过来2误以为 get 强一致弱一致性,扩容/竞争期间的读可能不完整3。

2026-10-20 16:13:12 219

原创 HashMap源码深度剖析(JDK7-8、红黑树、扩容)

HashMap 是数组(桶)+ 链表 + 红黑树组成的哈希表,通过 key 的 hashCode 定位桶,冲突时用链表/红黑树解决,支持 null 键值,非线程安全。JDK7 vs JDK8 核心区别(必背对比表)对比项JDK7JDK8数据结构数组 + 链表数组 + 链表 + 红黑树链表转红黑树无链表长度 ≥ 8 且数组长度 ≥ 64树退化为链表无树节点 ≤ 6 时退化hash 扰动4 次异或1 次异或(高 16 位参与)冲突插入头插法尾插法扩容并发有死循环风险。

2026-10-20 16:12:27 320

原创 JAVA集合源码:ArrayList、LinkedList与扩容机制

Collection(单列)├── List(有序可重复) → ArrayList / LinkedList / Vector├── Set(无序不可重复) → HashSet / LinkedHashSet / TreeSet└── Queue(队列) → ArrayDeque / PriorityQueue / LinkedListMap(键值对)└── ConcurrentHashMap(并发专用,见第04篇)结构底层实现特点ArrayList动态数组(Object[])

2026-10-15 17:29:09 246

原创 JDK8新特性实战(Lambda、Stream、Optional)

新特性作用Lambda 表达式把「匿名内部类」的样板代码压缩为一行函数式接口Lambda 的「类型」载体Stream API用声明式方式处理集合,支持链式调用 + 并行流Optional优雅处理空指针(NPE)方法引用语法,进一步简化 Lambda接口默认方法/静态方法给接口增加方法而不破坏实现类新时间 API替代异步编程(第10篇详细讲)一句话总结:JDK8 让 Java 从「面向对象的语言」进化为「也能写出函数式风格的代码」的语言。坑说明1忘写终止操作。

2026-10-15 17:28:19 301

原创 Python 数据可视化实战入门教程

matplotlib是 Python 的 2D 绘图库,把数据画成期刊质量的静态图形,并支持导出 PNG/JPG/SVG/PDF。技巧代码大标题摆 2×2 图对齐间距一张出图颜色映射第三维scatter(c=数值, cmap=...)colorbar。

2026-10-12 10:24:14 172

原创 Python Pandas 数据处理实战入门教程

Pandas提供两个核心数据结构——Series(带索引的一列)和DataFrame(带列名的二维表格),外加全套数据读写清洗分析功能。

2026-10-12 10:23:32 164

原创 Python NumPy 数值计算实战入门教程

NumPy(Numerical Python)提供了ndarray——一个高性能的同类型多维数组对象,以及基于它的一整套数学函数库。形状不同的数组做运算时,NumPy 自动把小的扩展a + b# [14 25 36]] b 被"复制"成两行参与运算ufunc= Universal Function,对数组逐元素应用的函数。NumPy 有 200 多个,全都向量化。

2026-10-12 10:22:42 214

原创 Python REST API 实战入门教程

raise BusinessError(1002, '标题不能超过 100 字')import jwt# 把 token 返回给客户端,客户端后续请求带 Authorization: Bearer <token># 验证JWT 完整实战涉及登录、刷新、过期、黑名单,已超出本教程范围,可参考 Auth0 文档。

2026-10-10 16:25:20 137

原创 Python Web 后端实战入门教程

作者:wcy适用人群:已学完 Python 3 基础与《Python 数据库连接实战教程》,想用 Python 做一个能跑起来的网站后端的初学者版本说明:本教程基于(3.8+ 通用),核心库(最流行的轻量 Web 框架)

2026-10-10 16:24:35 331

原创 Python 爬虫实战入门教程

爬虫(Web Spider / Crawler)= 用程序自动下载网页 + 从中提取数据的脚本。┌────────────┐ 1.请求页面 ┌────────────┐│ 爬虫脚本 │ ────────────> │ 目标网站 │└────────────┘ 2.返回 HTML └────────────┘││ 3.解析 HTML,提取标题/价格/链接▼│ CSV/JSON │ 4.保存结构化数据。

2026-10-10 16:23:24 231

原创 食韵味简 —— 免费开源的中式菜谱 API 服务

食韵味简 是一个免费、开源的中式菜谱 API 服务,同时也是一个完整的落地网站。它将"菜谱数据"开放成标准 REST API,任何人都可以调用它来构建自己的菜谱应用。

2026-10-08 10:39:36 299

原创 Python网络请求实战教程

分类核心知识HTTP方法(GET/POST/PUT/DELETE)、状态码(2xx/4xx/5xx)、请求-响应模型基础参数params=(URL 查询)、headers=(请求头)、auth=(Basic)表单data=json=(JSON 体,自动设头)文件files=上传、流式下载、进度显示会话Session自动 Cookie、全局配置、with自动关闭健壮性必加 timeout、异常类型、重试 + 指数退避、Retry代理proxies=、SOCKS、跳过 SSL(仅测试)编码。

2026-09-21 10:26:14 352

原创 Python 数据库连接实战入门教程

"""提供自动关闭的连接:with db_session() as conn:"""try:yield conn # 把连接交给调用方conn.commit() # 正常结束:提交conn.rollback() # 异常:回滚raisefinally:conn.close() # 无论如何关连接# 使用cur.execute("INSERT INTO users (name, age) VALUES (%s, %s)", ("测试", 20))# 自动 commit + close。

2026-09-20 16:22:39 93

原创 Python Excel 自动化实战入门教程

分类核心知识基础Workbookwb.activews.titlewb.save单元格ws["A1"]append追加、max_rowmax_column行列区域ws[2]整行、ws["B"]整列、切片A1:C3工作表wb["name"]sheetnames样式Font(字体/颜色)、背景、边框对齐格式Alignment(¥/#,##0.00/%)、行高列宽条件格式(大于绿/小于红)合并、只写左上角、冻结公式字符串、相对/绝对引用($B$)、合计行数据验证下拉框、整数范围限制、错误提示图表。

2026-09-18 17:08:02 296

原创 Python 数据存储实战入门教程

datetime 不是 JSON 支持的类型"""把不支持的对象的转换规则写这里"""return obj.isoformat() # datetime → ISO 字符串return list(obj) # 集合 → 列表type。

2026-09-18 16:14:59 139

原创 Python 文件路径实战入门教程

分类核心知识路径概念绝对/相对路径、. / ..getcwdchdir、分隔符差异os.pathjoinnormpathpathlibPath对象、拼接、resolveopen模式r/w/a/x/+with自动关闭是金律seek/tell文本读写、追加a、逐行读大文件二进制rb/wbbytes与str的、分块拷贝编码UTF-8 默认、GBK 老系统、、BOM目录listdiros 文件操作stat信息、rename重命名、remove删除shutilmovermtree(危险!)、

2026-09-18 14:55:07 121

原创 Python 日期时间实战入门教程

分类核心知识概念时间戳(1970 纪元秒)、UTC vs 本地时间、对象/字符串/时间戳三方互转time 模块时间戳、localtime结构、strftimestrptimesleepdatetime 对象date(年月日)、time(时分秒)、datetime(两者)、timedelta(时间差)常用方法.replace()timedelta计算、.days.seconds比较== < >直接比较、是否过期判断、生成日期区间格式化strftime(对象→串)、strptime。

2026-09-18 14:53:41 151

原创 Python字符串与正则实战教程

Python 处理文本的能力极强,文本处理分为两大层次:字符串方法:str.split()、str.strip()、str.replace() 等,处理"规则简单、格式固定"的文本;正则表达式:re 模块,处理"模式复杂、有规律但无定形"的文本,是文本处理的终极武器。

2026-09-17 17:45:45 143

原创 Python数字方法实战教程

Python 处理数字的能力远超一般语言:内置三种数字类型(int / float / complex)、任意精度整数、标准库提供 math / random / statistics / decimal / fractions 五大数学模块,从日常四则运算到金融精算、统计分析、科学计算都能胜任。本教程聚焦"数字本身的方法与运算",不重复基础语法,重点解决三类问题:学完你将能:写出无误差的金融计算、做统计分析、控制随机数、精确处理分数与高精度小数。Python 3 内置三种数字类型,外加 bool 是 in

2026-09-17 17:01:40 191

原创 Python 3 实战入门教程

print("你好,欢迎!")print(f"你好,def greet() : print("你好,欢迎!") def greet_name(name) : print(f"你好, {name }!!")greet()passraise BalanceNotEnough("余额不足")try:print("提示:", e)get 值可能崩用 try/except,finally 天天打扫,raise 主动说明问题。健壮脚本必备。return "及格"return "不及格"

2026-09-17 10:53:24 250

原创 Python 实战入门教程

print "你好,欢迎!greet()greet()self.name = name # 属性def get_level(self): # 方法return "及格"return "不及格"s1 = Student("张三", 85)s2 = Student("李四", 45)print s1.name, s1.get_level() # 张三 及格print s2.name, s2.get_level() # 李四 不及格__init__是构造方法,创建对象时自动调用;

2026-09-16 16:48:04 70

原创 Vue 3 实战入门教程

你学 Vue 2 时已经体会到"数据一变、页面自动更新"的框架威力。而 Vue 3 是 Vue 的最新主流大版本,是目前新项目的首选。Vue 3 最大的变化是带来了 组合式 API(Composition API):把"同一件事相关的代码"放到一起组织,而不是像 Vue 2 选项式那样强制按 / / 分块。打开页面出现"你好,Vue 3!"。注意三处和 Vue 2 不同:、、。用 Vite 创建 Vue 3 工程(官方推荐、秒级启动):交互式回答问题(一般直接回车即可),然后浏览器打开 就能看到

2026-09-16 15:30:28 282

原创 Vue.js 实战入门教程(Vue 2)

前面我们用原生 JavaScript + DOM 做过不少交互,你会发现一个问题:每次数据变了,都要手动去找元素、改内容。代码一多,很容易乱。比如"点赞":Vue 就是把"数据"和"页面"打通的前端框架:你只管改数据,页面自动跟着变,不需要手动操作 DOM。这背后的魔法叫响应式(Reactive)——Vue 监听数据变化,自动重新渲染相关部分。Vue 2 最快的学习方式:用 CDN 在 HTML 里引入,无需安装构建工具。保存并打开,页面上会出现"你好,Vue!"——这不是写死的 HTML,而是 Vu

2026-09-16 11:08:50 36

原创 Bootstrap 4 实战入门教程

回顾一下你学过的两种写样式的方式:如果你不想从头设计,希望"拿来就能用一组现成的、好看又统一的样子"——这就是 Bootstrap 的定位。Bootstrap 是一个 CSS 组件框架:它把网页常用元素(按钮、导航栏、卡片、弹窗、表格、表单……)全部做好现成样式,你只需要在 HTML 里套用它的类名。Bootstrap 4 最快的使用方式:在 HTML 里引 CDN(官方提供的网络文件),无需下载安装。2.2 三样东西各管什么引入作用 meta 标签让手机端按设备宽度渲染(响应式前

2026-09-15 17:20:11 130

原创 Tailwind CSS 实战入门教程

回顾一下我们学 CSS 的方式:先给元素起个类名(、),再到 CSS 文件里写一堆样式规则。这种"先命名、再写样式"的方式叫 CSS 框架式(如 Bootstrap)。Tailwind CSS 走的是完全相反的路:用一套预先定义好的"工具类"直接在 HTML 里拼样式,基本不用写自定义 CSS。:背景色(blue 系 600 号色);:白色文字; / :左右/上下内边距;:圆角。几个类名,零自定义 CSS,效果和上面传统写法完全一样。如果你已经会基础 CSS(知道 、、 是什么),学 Ta

2026-09-15 16:04:32 377

原创 JSON实战教程

学 AJAX 时我们已经见过 JSON。它是前后端之间传递数据的"通用语言":JSON 全称 JavaScript Object Notation(JavaScript 对象表示法),是一种文本格式,用来描述"一组数据长什么样"。JSON 的语法只有四条铁律,记牢了就不会写错。对象(一对花括号):数组(一对方括号):2.2 六种数据类型类型示例说明字符串必须用双引号数字、、整数、小数、负数布尔值 / 只能这两个(小写)null空值对象

2026-09-15 15:45:12 115

原创 AJAX 实战入门教程

你已经会用 JavaScript 操作页面了。但到目前为止,所有数据都是你写在 JS 代码里的。真实世界的网页不是这样:AJAX 就是让网页不刷新页面,也能向服务器要数据、发数据的技术。AJAX 全称 Asynchronous JavaScript And XML(异步 JavaScript 和 XML)。名字里带 XML,但今天数据格式几乎都是 JSON——喊它"AJAX",其实指的就是那一整套"异步请求服务器"的机制。一次 AJAX 请求的旅程:需要用到的两种 APIAPI说明(

2026-09-15 14:59:31 326

html小游戏2048

使用html写的小游戏2048,打开就能玩,合并数字达到 2048

2026-09-20

空空如也

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

TA关注的人

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