自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (5)
  • 收藏
  • 关注

原创 TCP拥塞控制算法原理详解

TCP(Transmission Control Protocol,传输控制协议)是互联网中最核心的通信协议之一。当你打开网页、发送消息、下载文件时,你的设备和服务器之间传输数据,底层很多时候用的就是 TCP。可靠传输。也就是说,它要保证你发出去的数据,对方一定能完整地、按顺序地收到。如果中间有数据丢失了,TCP 会负责重新发送,直到对方收到为止。ACK 是 Acknowledgement 的缩写,中文意思是"确认"。

2026-04-09 01:24:37 451

原创 Filter和Interceptor的工作原理

/ 初始化方法,Web 容器启动时调用一次// 核心方法,每次请求经过这个 Filter 时都会调用// 销毁方法,Web 容器关闭时调用一次我们重点看doFilterrequest:代表当前的 HTTP 请求,你可以从中读取请求的各种信息(URL、参数、请求头等)。response:代表当前的 HTTP 响应,你可以向其中写入响应数据。chain:代表"过滤器链",调用就意味着"让请求继续往下走,交给下一个 Filter 或最终的 Servlet 处理"。

2026-04-08 03:20:31 373

原创 Lombok注解底层原理

你写的 Java 源代码,在你眼中是一行行的文字。但在编译器眼中,它需要被转换成一种结构化的数据表示,才能被程序化地处理。这种结构化的表示就是抽象语法树(Abstract Syntax Tree,简称 AST)。什么意思呢?我们来看一个具体的例子。ClassDeclaration(类声明节点)├── 修饰符: public├── 类名: User├── 字段列表│ └── FieldDeclaration(字段声明节点)│ ├── 修饰符: private。

2026-04-08 02:56:59 373

原创 Java注解的底层原理

interface假设你要定义一个自己的注解,叫这段代码你一定不陌生。@interface这个关键字是什么意思?和看起来像方法声明,但它们到底是什么?为什么调用注解属性的时候用的是这种赋值语法,而不是调用方法的语法?你用@interface定义注解时,编译器会自动让它继承接口。注解中的每一个"属性",本质上就是接口中的一个抽象方法。注解本身就是一个接口,它只描述了"有哪些属性",不包含任何实现。如果你对"动态代理"这个概念不熟悉,我先用最简单的方式解释一下。

2026-04-08 02:53:32 396

原创 需要按插入顺序遍历?LinkedHashSet 与 LinkedHashMap

每个节点除了存储自己的数据之外,还额外记住"谁是我的前一个"和"谁是我的后一个"。如果每个节点既记录了前一个节点,又记录了后一个节点,就叫做双向链表。节点A <——> 节点B <——> 节点C节点A知道:我的下一个是B节点B知道:我的上一个是A,我的下一个是C节点C知道:我的上一个是B通过这种方式,我们可以按照链表的顺序,从头到尾依次访问每个节点。// 双向链表的前驱和后继它继承自HashSet,但内部使用作为底层存储,而不是普通的HashMap。对比维度HashMap继承关系。

2026-04-06 19:53:03 325

原创 为什么视频直播平台实际上在用 TCP 而非 UDP?

"直播用 UDP"这句话来源于实时互动通信场景(视频会议、连麦),在那些场景下,极低延迟比数据完整性更重要,所以用 UDP。在 B 站等平台观看的直播,属于"大规模单向直播分发"场景。这个场景的核心需求是:画质清晰、播放流畅、能支撑百万级并发观看。延迟在几秒之内是可以接受的。HLS/DASH 协议把直播流切成小文件,通过普通的 HTTP 请求分发。这样做可以直接复用全球成熟的 CDN 基础设施,穿透各种防火墙和网络限制,支持自适应码率,保证数据完整性。HTTP 跑在 TCP 上,所以看到的就是 TCP。

2026-04-06 18:32:02 458 1

原创 日本新干线的前世今生

新干线的列车被称为"电动车组",每一代车型都有一个"系"的编号。下面我们按照历史顺序和所属线路,逐一介绍主要的车型。从1964年0系列车首次驰骋在东海道上,到今天N700S以285公里时速穿梭于东京和大阪之间、E5系以320公里时速疾驶在东北大地上,新干线在六十年间完成了多次技术迭代。每一代列车都在速度、舒适性、安全性和节能方面取得了显著进步。面向未来,日本还在推进更为激进的项目——中央新干线(磁悬浮)。

2026-04-06 18:03:24 324

原创 TLS 连接中客户端验证证书的完整流程

证书本质上就是一个电子文件,里面记录了一些关键信息。你可以把它理解为一个"身份证明文件"。持有者信息:比如这个证书是颁发给这个域名的。持有者的公钥:服务器的公钥会被写在证书里面。颁发者信息:谁签发了这张证书,也就是哪个 CA(Certificate Authority,证书颁发机构)颁发的。有效期:证书的起始时间和过期时间。签名算法:颁发者用什么算法对这张证书进行签名的。数字签名:颁发者对这张证书内容计算出来的签名值。数字签名是一种保证数据"没有被篡改"且"确实是某人发出"的技术手段。

2026-04-06 18:02:01 278

原创 用初中物理+大学数学登上月球?阿耳忒弥斯 2 号的数理原理有多简单?带你六个方程走完三十八万公里

发射与上升段:火箭从地球表面(肯尼迪航天中心)起飞,穿过大气层,进入地球轨道。地球停泊轨道:飞船在距离地面约两百公里高的圆形轨道上暂时运行,进行系统检查。跨月注入(Trans-Lunar Injection, TLI):发动机再次点火,将飞船加速到足够高的速度,使其飞向月球。地月转移轨道:飞船在地球与月球之间的空间中滑行,大部分时间不需要开发动机。绕月飞越(Lunar Flyby):飞船从月球背面飞过,利用月球引力改变方向。返回轨道:飞船沿新的轨道飞回地球方向。再入与溅落。

2026-04-06 02:43:27 602

原创 磁悬浮列车的前世今生

磁悬浮列车利用电磁力实现三大功能——悬浮(克服重力)、导向(保持轨道居中)、驱动(直线电机推进)。三大功能全部依靠电和磁的相互作用实现,没有任何机械接触。两大技术路线:EMS(电磁悬浮):靠电磁铁的吸引力悬浮,间隙小(~10mm),需要精密主动控制,静止即可悬浮。代表:德国Transrapid、上海磁浮。EDS(电动悬浮):靠超导磁铁运动产生的排斥力悬浮,间隙大(~100mm),具有自稳定性,但需要一定速度才能悬浮。代表:日本SCMaglev。

2026-04-04 16:00:50 1129

原创 MySQL一个简单概念:索引下推和索引查询流程

索引下推主要发生在联合索引的场景下,所以我们必须先搞清楚联合索引是什么。联合索引,就是把多个列组合在一起建立的索引。比如我们有一张用户表usersage INT,我们在name和age步骤无索引下推有索引下推索引扫描扫描 3 条索引项扫描 3 条索引项在索引层过滤 age❌ 不过滤✅ 过滤掉 2 条回表次数3 次1 次返回给 Server 层3 行完整数据1 行完整数据Server 层过滤过滤后剩 1 行直接就是 1 行。

2026-04-03 13:48:10 380

原创 冒泡排序的面试话术和写法解析

变量类型作用nint数组长度iint外层轮次计数,同时代表末尾已排好的元素个数jint内层遍历下标,用来比较arr[j]和arr[j+1]swappedboolean优化标志,本轮是否发生过交换tempint交换时的临时变量,防止值被覆盖。

2026-04-03 13:39:30 302

原创 Spring 为什么要用三级缓存?

级别名称类型存放内容作用一级缓存完整的成品 Bean(可能是代理对象)对外提供完整可用的 Bean二级缓存HashMap早期暴露的对象(可能是代理对象)存放已提前暴露的半成品,避免重复调用工厂三级缓存HashMap工厂对象存放生成早期暴露对象的工厂,是提前暴露的"入口"一级缓存()的必要性:存放完整成品 Bean,是对外提供服务的最终缓存,保证了 Bean 的单例性和完整性。二级缓存()的必要性:成品和半成品必须隔离存放,防止外部拿到未初始化完毕的 Bean。

2026-04-02 11:40:37 219 1

原创 ZGC 深度讲解:染色指针与读屏障的完整原理

这里的obj变量,本质上是一个指针(Java 中通常叫"引用")。它是一个数值,这个数值就是创建出来的那个对象在内存中的起始地址。当程序要访问这个对象的某个字段时,Java 虚拟机会先读取obj这个指针的值(得到内存地址),然后根据这个地址去内存中找到对象,再读取对象头信息(知道对象的布局),最后才能读到目标字段的值。所以,指针 = 内存地址 = 一个数字。在特定的内存操作(读或写)发生时,由 JIT 编译器自动插入的一段额外代码,用于维护 GC 所需的不变量。写屏障(Write Barrier)

2026-04-02 10:41:03 263

原创 IO 多路复用:从零开始的完整讲解(长文)

IO 是 Input/Output 的缩写,中文叫"输入/输出"。在计算机的世界里,CPU 是负责计算的核心部件,而 CPU 要计算,就需要数据。数据从哪里来?数据要到哪里去?这就是 IO 要解决的问题。Input(输入):数据从外部进入到程序中。用户从键盘敲了一行字,这行字被程序读取到了——这是输入。程序从硬盘上的一个文件里读取了内容——这是输入。程序从网络上接收到了另一台电脑发来的数据——这也是输入。Output(输出):数据从程序内部传递到外部。程序把计算结果显示到屏幕上——这是输出。

2026-04-02 09:58:35 326

原创 死锁:从产生到解除的完整讲解

这四个条件是死锁发生的充分必要条件条件描述核心作用互斥资源不可共享制造了"等待"的可能性占有并等待拿着一个等另一个制造了"占用资源同时等待"的状态非抢占资源不能被强夺使得等待无法被外力打破循环等待等待形成闭环使得等待永无终结只有当这四个条件同时成立,死锁才会发生。

2026-04-01 21:07:58 386

原创 Java 进程 CPU 飙高排查全流程详解

第一步:top↓ 找到 CPU 高的进程 PID(如 12345)第二步:top -H -p 12345↓ 找到 CPU 高的线程ID(十进制,如 12350)第三步:printf "%x\n" 12350↓ 转换为十六进制(如 302e)第四步:jstack 12345 | grep 302e↓ 找到问题线程正在执行的代码位置第五步:打开源代码,定位到对应行↓ 分析是死循环还是死锁第六步:修复代码,解决问题整个排查过程的本质,就是。

2026-04-01 21:07:17 422

原创 Java 原子类详解

在多线程环境下,如何高效且安全地操作共享变量。它的实现思路是:不依赖操作系统层面的锁机制,而是直接利用 CPU 提供的原子指令(通过 Unsafe 类调用),以 CAS 的方式实现"无锁编程"。当多个线程同时修改同一个变量时,CAS 机制保证只有一个线程能成功,其他线程检测到冲突后自动重试,最终所有操作都能被正确执行。简单、高效、安全——代码简洁,没有锁的阻塞开销,同时在多线程下数据始终正确。因此,在需要对单个变量进行线程安全操作(如计数器、统计量)的场景下,原子类是比和Lock更合适的选择。

2026-04-01 21:06:03 407

原创 Java 内部类详解

成员内部类是最基础的内部类,定义在外部类的成员位置(和成员变量、成员方法平级)。private String name = "外部类的name";// 成员内部类private String name = "内部类的name";// 内部类可以直接访问外部类的私有成员System.out.println("外部类的age: " + age);// 如果内部类和外部类有同名变量,用 外部类名.this.变量名 区分。

2026-04-01 21:05:18 427

原创 反射在 JVM 层面的实现原理

正常情况下,我们写 Java 代码时,在编译阶段就已经确定了要调用哪个类、哪个方法。编译器在编译这段代码时就知道:你要创建一个String对象,然后调用它的length()方法。一切都是确定的、写死的。但反射不同。反射是一种在程序运行时,才去动态地获取类的信息、创建对象、调用方法的能力。Class<?这段代码做的事情和上面一模一样——调用字符串的length()方法。你可以把和"length"换成任何字符串变量,在程序运行时才决定要操作哪个类、哪个方法。

2026-04-01 21:04:36 427

原创 CSU计算机学院2021年C语言期末题目思路分享(后两道题)

历年期末题思路分享

2023-12-31 00:08:32 1351 1

原创 CSU计算机学院2023秋C语言期中题目思路分享(前三道题)

题目:中南大学计算机学院2023秋季C语言期中考考题(共六道,本文分享前三道的思路)旨在分享自己的思考过程和一点经验,并给出一种输出正确的答案供大家讨论批判,有任何批评、问题可以直接在评论区留言或者直接私信告诉我,大家共同进步。

2023-12-06 19:06:48 971 1

原创 记一次E5开发者Office 365下的OneNote多端同步配置过程

也不是完全显示作者姓名,只有在手机端编辑笔记的时候,在iPad和电脑端都能看到,手机端添加笔记的旁边有我的名字,说来也怪,众所周知,显示作者名字是多人协同时使用的功能,然而我三端都是同一个账号,同一个名字,为何还会出现这种情况?分为内地版本和谷歌版本,在小米应用商店、应用宝之类地方下载的是内地的版本,在Play商店上下载的是谷歌版,两者区别还是有的,一个是界面,谷歌版明显舒服很多,还有一个是笔记编辑,内地版本居然不能在任意位置插入笔记,这还是OneNote吗?一个笔记同步了十几分钟还卡在那里。

2023-07-26 03:37:10 959 1

原创 小米手表如何优雅听歌?

小米手表上传音乐教程目录( •̀ ω •́ )✧小米手表上传音乐教程前言写作目的启发与应用你需要以下东西:第一种方案(推荐):开始吧!——用手机!手表操作1. 打开开发者模式2. 打开ADB调试和网络调试手机操作1. 下载Wear OS工具箱,连接手表,给手表安装抬腕听歌2. 上传音乐第二种备用方法(不推荐):用电脑!注意事项和后记前言写作目的看到很多同学买了小米手表,在自带应用市场下载网易云音乐,发现只能下载一些特定的歌,很多歌因为“版权问题”只能在线播放,对没有流量的同学们造成了一定的麻烦。

2021-09-21 17:06:58 12253

原创 解决Pycharm挂代理后依旧插件下载慢

首先要挂代理,但是还不够

2021-08-07 00:02:48 2263

原创 双击PyCharm没反应打不开的解决办法

双击PyCharm没反应打不开的解决办法将C:\Users(你的用户名)\AppData\Roaming中的JetBrains文件夹删掉即可参考:https://www.cnblogs.com/lansan0701/p/10411013.html

2021-08-06 22:40:56 1712

原创 钉钉直播回放下载解决方案

钉钉直播回放下载解决方案要开学了再写这些是不是没什么用了…≧ ﹏ ≦目录( •̀ ω •́ )✧钉钉直播回放下载解决方案关于这篇文章为什么要看回放、和一些网课学习建议当然也有一些弊端方案一——一路顺风(钉钉自带下载)准备工作:轻松开始但是...方案二——迫不得已(手机抓包+电脑下载)不要怕,你只需要:准备开始如果你有好奇心首先在手机上操作(描述起来很麻烦,其实非常简单!)一、配置软件二、开始抓...

2020-04-06 13:21:54 48215 111

原创 关于MySQL服务启动失败的解决方案

关于MySQL服务启动失败的解决方案问题> net start mysql mysql服务正在启动.. mysql服务无法启动 服务没有报告任何错误解决被这个搞得晕头。。找到了最简单有效的解决方法:在mysql.exe所在目录下,执行mysqld --initialize-insecure即可我的目录:C:\Program Files\MySQL\MySQL Ser...

2019-05-03 11:37:36 2852

原创 Wordpress修改php文件中文乱码问题

起因最近搞了一个Wordpress网站,换了个主题,因为主题的许多按钮是英文的,我就想着换成中文看得舒服些。就这样开始了…问题先用Filelocator(一个文件内容搜索工具,可以直接搜索文件内容,用它来搜索php文件)搜索相应的英文字符串,搜索的很顺利,找到了两个文件,我先试着把英文改成另一个英文字符串,试验可行性,文件丢上去替换,很顺利。接下来我要改成中文,问题来了,要不乱码,要不不显...

2019-03-16 22:14:18 1385

原创 云服务器建站教程——Apache和IIS搭建WordPress和其他Web项目

WordPress的使用一、简述首先,我使用的是以下这些东西腾讯云学生服务器(10元每月)WordPressXamppFileZilla(传文件用)域名(可选)二、服务器我使用的是腾讯云的云+校园活动中10元每月的云服务器,真的便宜。但是只可以买一次续费两次,依次最多买一年120元,最多就买三年360块,很划算了,360大洋平常也只能买几个月吧。传送门:腾讯 云+校园另外...

2019-03-16 10:50:49 2087 2

原创 Android Studio的安装与基本配置

一、下载 解压前往 http://www.android-studio.org/ 下载安装程序或者免安装版选择自己电脑合适的版本下载。我选择的是Windows 64位免安装版。点击蓝字下载就行。下载后解压,得到以下这个目录打开bin文件夹,找到studio64.exe,这就是主程序了。可以右键发送桌面快捷方式弄个快捷方式。这样算是基本安装好了,接下来要进行一些配置。第一个项目...

2019-03-16 10:49:48 1004

原创 解决WordPress使用PHP7时WPTouch报错

WPtouch是显示移动端Wordpress的插件,挺好用的。Wordpress最近都用上了PHP7,但是这一用WPtouch就报错!报啥错呢:Warning: count(): Parameter must be an array or an object that implements Countable后来一翻文件,发现是count方法在PHP7中严格使用,传入数据必须是数组,不是数组就...

2019-01-24 22:31:20 665

原创 Python学习笔记—— if 语句

 if 语句总述与例子条件测试是否相等(==)是否不相等(!=)比较数字是否相等是否不相等数字的其他比较判断多个条件(and 与 or)检查列表中的值检查特定值是否包含在列表中(in)检查特定值是否不包含在列表中(not in)布尔表达式if 语句简单的if语句if - else 语句if - elif - else 语句省略 else 代码块...

2018-07-25 11:04:32 677

原创 Python学习笔记——操作列表

操作列表遍历列表——for循环数值列表数字列表的基本操作数字列表的计算列表解析使用列表的一部分列表切片遍历切片复制列表元组操作列表遍历列表——for循环最简单magicians = ['alice', 'david', 'carolina']for magician in magicians: print(magi...

2018-07-17 21:04:22 468

原创 Python学习笔记——操作列表元素

列表操作修改motorcycles = ['honda', 'yamaha', 'suziki']motorcycles[0] = 'ducati'添加末尾添加motorcycles = ['honda', 'yamaha', 'suziki']motorcycles.append('ducati') # 末尾添加一个任意位置插入moto...

2018-07-14 15:19:13 407

屏幕文字识别软件

利用百度文字识别(OCR)的API,完全免费,使用方便。资源来自网络,侵权请联系删除

2019-01-06

Open Gapps arm64 7.1 pico

在mokee官网下载的open gapps,用于arm64架构处理器、安卓7.1机型

2018-10-08

FL Studio汉化工具

从所谓的“fl中文网”搬运的,网站需要vip才能下载。不做使用说明。(软件名称:FL Studio 软件版本:12.5)

2018-10-08

V4W音效增强工具

v4a是安卓版,这个其实就是v4a的电脑版,使用有点麻烦。。

2018-10-08

Chrome官方安装包

Google官网下载的联网安装包。非离线安装包,但是可以使用。

2018-10-08

空空如也

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

TA关注的人

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