自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【git原理与使用】git基本操作及底层原理(二)

此时我们发现,现在这个目录下就只有readme这一个文件了,并且readme里面的内容也只有最初的第一行了(因为工作区也回退了),git log也只打印了第一次的提交了!当前我们的版本库中是没有更新readme的这次修改的,所以当前版本库的这个版本就是没有发生修改的版本,那不这次readme文件修改之前的版本嘛。通过上一篇文章的学习,我们知道了 Git 有工作区、暂存区和版本库。如果有一天你发现之前的工作做的出现了很大的问题,需要在某个特定的历史版本重新开始,这个时候,就需要版本回退的功能了。

2026-11-11 16:41:36 3

原创 一个远程窗口装下四个 Shell——ToDesk、向日葵、UU远程终端全维度横评

这次比四件事。一个窗口里能不能开齐四种 Shell,开完认不认得出哪条是哪条,手机上能不能把命令敲准,显示会不会出错。ToDesk每项都做到了。向日葵的终端只有一个 CMD,换 shell 要敲命令,退出不保留会话,Bash 是单色的,CMD 还要会员。UU 的界面完整,底部功能栏也有想法,问题出在字符缺失和错位。跑 vim、htop 这类整屏刷新的程序时最明显。按场景分。经常在 Git Bash、PowerShell、cmd、WSL 之间切换,用ToDesk。

2026-11-10 21:27:29 189

原创 【git原理与使用】git基本操作及底层原理(一)

现在,我们已经在 Git 的底层建立了一个完美的时间线闭环:第一步:git add 时发生了什么?当我们执行 git add 时,Git 会把工作区里的文件内容压缩打包,生成一个 Blob 对象 存放在 objects 库中。同时,暂存区(index)更新,记录下文件的名称、权限,以及指向这个 Blob 内容对象的索引(哈希值)。第二步:git commit 时又发生了什么?

2026-11-02 20:39:56 281

原创 【git原理与使用】git初识与安装

之前Linux系统编程专栏中,我们通过一篇文章简单介绍过git的基本使用,本专栏我们将来正式全面深入地学习git,本专栏目标:掌握 Git 企业级应用,深刻理解Git操作过程与操作原理,理解工作区,暂存区,版本库的含义• 技术目标: 掌握 Git 版本管理,自由进行版本回退、撤销、修改等Git操作方式与背后操作原理• 技术目标: 掌握 Git 分支管理,从分支创建,切换,合并,删除的整个生命周期,灵活进行各种场景下的分支管理,学习常见分支管理策略。

2026-10-29 15:03:30 239

原创 【Linux系统编程】Ext 系列文件系统(3):软硬链接

思考一个问题:我们看到,新建一个文件,默认的硬链接数是1(这当然没问问题);但是新建一个目录,默认的硬链接数却是2!这是为什么呢?我们之前学cd命令的时候讲过,代表当前目录啊!可以看到,和当前link这个目录的inode号是一样的。所以为什么就是当前目录?本质是就是当前目录的一个硬链接那同样的,..就是上一级目录的硬链接那现在为什么新建一个目录它的硬链接数是2,相信大家就明白了。再来看一个现象:请问为什么?

2026-10-28 21:27:11 216

原创 【Linux系统编程】Ext 系列文件系统(2):Ext2文件系统

记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。🆗,目录里面不是存了文件名 → inode 号的映射嘛,所以通过文件名就可以找到文件的inode号,那进而就可以在inode table中找到文件的inode,那文件的属性和内容不就都可以拿到了嘛。每一个比特位的位置就代表了不同的数据块,该比特位的值是1 表示已用,0 表示空闲。

2026-10-23 12:03:01 156

原创 关于论文《保护机密虚拟机免受硬件性能计数器侧信道攻击》中差分隐私机制的理解

拉普拉斯分布就是一套"随机改数字的规则"。想象你有一个特殊的骰子,这个骰子不是出 1~6,而是出"要加多少噪声"(可以是正数、负数、0)。中间高,两边低,像一个山峰。这就是"拉普拉斯分布"。大部分时候摇出来的是 0 或者 ±1(山峰附近)→ 改得不多,结果还有用偶尔摇出来 ±5 或者 ±10(山腰)→ 改得多一点极少时候摇出来 ±50(山脚)→ 改得离谱,但这是"保险"为什么非要用这个"山峰形状",不能用其他形状?

2026-10-16 17:19:03 201

原创 【白话大模型】大语言模型工作原理

理解了这是一个整体,然后在输出时,再把这 4 个字节吐出来,解码后重新组合成😊(结构上的认识)那这样模型就认识这个表情了吗?在字节级回退发生后,模型并不是立刻就认识了这个表情,知道它代表微笑的意思。

2026-10-09 21:31:56 228

原创 【白话大模型】开源和闭源大模型

闭源大模型,是指模型权重、训练数据、训练代码、完整架构和训练过程等核心内容不公开,由开发公司自己控制,用户只能通过厂商提供的 API、网页/App、云服务或商业授权 来使用的大模型。它有时也叫“专有模型”。开源大模型,简单说就是:把大型人工智能模型的模型权重、代码、架构、训练方法等公开出来,允许别人下载、运行、修改、微调、再发布,甚至商用——但具体能做什么,要看它的许可证。LLaMA,他们可以下载基础模型,再用自己的客服对话数据 “调教” 它,最后部署在自己的服务器上,不仅免费,还能完全适配自己的业务。

2026-10-08 12:15:37 182

原创 【白话大模型】什么是人工智能?什么是大模型?

人工智能(Artificial Intelligence),英文缩写为AI是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。本质:对人类智能的模拟,让机器能像人一样思考、决策、行动。⽆论是简单的逻辑规则(if-else)还是复杂的神经网络,只要能展现出“聪明”的决策行为,都算 AI。

2026-10-05 16:09:30 65

原创 【Linux系统编程】Ext 系列文件系统(1):理解硬件

前面基础IO的几篇文章我们讨论的都是被打开的文件,那么这篇文章开始,我们就要来讨论一下没被打开的文件了。那没被打开的文件就放在磁盘上嘛,磁盘是掉电不易失的设备,文件在磁盘上可以持久化存储。我们这里不直接去讲文件系统,首先,我们先来认识一下磁盘!

2026-09-23 16:55:03 238

原创 PDM预取加噪实现(v1)

上篇文章我们提到,推理执行完毕,会返回一个置信度,0正常,接近1,则认为受到攻击。如果将阈值设置设置为0.8,那么我们就可以在这里添加预取加噪的代码。

2026-09-21 18:05:12 210

原创 PDM核心源码阅读

目标:通过阅读关键代码,理解PDM的工作原理,为实现预取加噪声做准备。

2026-09-18 15:18:23 51

原创 【Linux系统编程】基础IO第六讲——模拟实现一个最简版C语言标准IO库

准备工作:创建三个文件。

2026-09-09 21:50:30 299

原创 【Linux系统编程】基础IO第五讲——理解“缓冲区”

缓冲区的本质,就是一段内存空间!也就是说,在内存空间中预留了⼀定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。下面我们举一个例子来理解缓冲区:假如你的朋友马上要过生日了,你想要送他一个礼物,比如一个键盘。但是现在你在宁夏上学、你朋友在河南上学。那你要怎么送过去呢?难道你要骑一个小电驴过去送吗?那这样你要耗费大量的时间和精力。那我们知道其实并不需要这么麻烦。

2026-09-02 20:55:28 278

原创 【Linux系统编程】基础IO第四讲——如何理解“Linux下一切皆文件!”

为了保证自己的安全,在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。),父类对象的虚指针就指向父类的虚函数表,那这样它们就能调到不同的虚函数,进而实现多态(不同对象去完成同一行为时,展现出不同的形态)。尽管底层对应的设备可能是不同的,但是站在struct file这一层,无所谓,我们看到的接口都是统一的,一模一样的。多态表现出的结果是怎样的:继承关系的不同类对象,去调用同一个函数,产生不同的行为(其实是底层调到了不同的函数)。

2026-08-10 11:52:30 409 2

原创 测完ToDesk、UU远程和向日葵,双模式、画质、掉帧差距多大?远程打游戏这事有点意思

三款软件全部测完,按游戏体验排个名ToDesk排第一,双模式设计是核心竞争力,快捷模式打游戏很爽,全局模式又能兼顾办公。缺点也有,快捷模式首次配置略麻烦,全局模式玩竞技FPS跟本地高刷仍有差距。但综合来看,它是这次测试里平衡性最好的选择。UU远程排第二,静态画质和延迟数据都很顶,免费但游戏锁30帧,远程桌面功能偏弱,适合纯打游戏、不折腾桌面的用户。向日葵排第三,尽管办公能力很成熟,但游戏体验确实跟不上,画质帧率延迟都不在线,挂机收菜可以,正经打游戏吃力。

2026-08-04 20:29:06 10267 70

原创 【Linux系统编程】基础IO第三讲——IO重定向

上一篇文章的最后其实我们已经简单演示了重定向,我们来回顾一下:那这里就发生了重定向,为什么出现这个现象呢?底层的原理是怎样的呢?因为printf默认就是往标准输出文件中打印的(文件描述符为1的文件中)。正常情况下,标准输入、标准输出、标准错误占用文件描述符0,1,2但是在上面的代码中,我们把1号文件描述符关闭了,然后我们打开了一个新的文件。新分配的文件描述符,永远是fd_array数组中,最小的且没被占用的下标所以,我们新打开的文件被分配的文件描述符就是1。

2026-08-03 17:19:06 185

原创 探测+检测+缓解(PDM):让云租户自主防御微架构攻击

PDM 使云租户无需依赖服务商资源即可自主检测和缓解缓存侧信道攻击与瞬态执行攻击:(i)通过探测监控受害者的内存空间;(ii)以线程形式注入自身以检测攻击并处理干扰;(iii)在检测到攻击后缓解数据泄露问题。并通过实验证明了其有效性、高效性和鲁棒性,从而提升租户安全意识、推动服务商改进并作为现有防御的补充层。

2026-06-11 16:47:10 526

原创 【Linux系统编程】基础IO第二讲——文件描述符

一个进程可以打开多个文件,那在操作系统内,就可能同时存在多个进程,它们一共打开了很多的文件。并且文件和进程之间还有一定的从属关系。那这么多的进程,要不要被操作系统管理起来呢?当然!如何管理?先描述,再组织!在 Linux 内核中,使用结构体 来描述一个被进程打开的文件。每个 open 系统调用成功时,内核都会创建一个 struct file 实例,并返回一个文件描述符(fd)与之关联。struct file内部,会直接或间接地包含与被打开文件相关的属性和数据等信息。

2026-06-08 17:05:15 310

原创 【Linux系统编程】基础IO第一讲——系统文件IO

C语言的时候我们学习过文件操作学了很多文件操作的库函数。这些库函数我们把它叫做C 语言的文件 I/O 接口。(当然其它编程语言诸如C++、python也都有自己的文件操作相关的接口)但是,这都是在语言层面,仅凭这些内容,我们对文件的理解其实是非常肤浅的。仅仅停留在会用C语言进行一些文件操作,甚至这里面的大部分接口我们也都忘记了,因为学过去之后就很少再使用它们了。那么接下来的几篇文件,我们将深入到系统层面,对文件进行一个更深的理解。

2026-06-07 11:12:02 315

原创 关于论文《保护机密虚拟机免受硬件性能计数器侧信道攻击》的理解

Aegis 能在仅引入 3% 执行时间开销和 7% CPU 开销的情况下,将所有 HPC 侧信道攻击的准确率从 90% 以上降到接近随机猜测的 2%,并且提供严格的差分隐私可证明安全性,是目前现有 AMD SEV 机密云环境下最实用、最有效的 HPC 侧信道防御方案。论文用三个最常见的机密计算场景,演示了 HPC 侧信道的威力。最后,一种常见的侧信道防御策略是模糊攻击者的观测结果,最直接的方法是直接注入随机噪声,但该方法会向虚拟机中引入额外噪声,带来额外的性能开销,且随机注入噪声无法提供严格的隐私保障。

2026-06-03 18:24:41 495

原创 2015年IEEE安全与隐私研讨会:末级缓存侧信道攻击具有实际可行性——PRIME+PROBE攻击改进版

L1/L2 会满足大多数访问,LLC 看不到很多内存活动。如果攻击者只控制 LLC 状态,但受害者数据从 L1/L2 命中,就不会到达 LLC → 攻击者看不到。解决方案:利用包容性缓存。即L3缓存中包含了L1、L2中的所有数据。因此,从L3驱逐数据会同时从所有核心的L1/L2中移除该数据。(因为如果一个数据在 L1 或 L2 里,那么它 必须 同时在 L3 里)攻击有效:基于 LLC 的 Prime+Probe 可实现 1.2 Mb/s 隐蔽信道,并攻破 GnuPG 的平方-乘和滑动窗口算法。

2026-05-25 15:41:05 452

原创 【Linux 系统编程】手撕一个简易版的shell命令行解释器

那到这里,我们的这个自定义shell就实现的差不多了当然还有很多功能没有支持,因为我们一共也就写了差不多两百多行代码,系统的bash代码比我们的多得多了。但是,这已经足够帮我们理解很多需要理解的东西了,这才是写这个shell真正的目的。当然后面学习的过程中,我们也会再补充一些新的功能。在继续学习新知识前,我们来思考函数和进程之间的相似性:exec/exit就像call/return⼀个C程序有很多函数组成。⼀个函数可以调用另外⼀个函数,同时传递给它⼀些参数。

2026-05-21 17:46:03 455

原创 关于论文《FLUSH+RELOAD:一种高分辨率、低噪声的L3缓存侧信道攻击》的理解

CPU缓存主要了是为了缓和cpu和主存之间的一个速度差异,根据局部性原理,可以把主存中要频繁访问的部分数据副本存放在高速缓存中,然后当CPU需要读写数据时,就优先去cache中查找,如果cache命中,那就直接从cache中获取到数据了,就不需要去访问速度较慢的内存了。攻击者的测量会被干扰,两者同时访问,不过谁触发了数据的加载(内存放入cache),攻击者测到的结果都是长时间(cache未命中),就会判定为受害者未访问,但事实是两者同时在访问。然而,在真实的攻击场景中,该攻击的效果取决于系统调度器。

2026-05-17 15:46:36 662 1

原创 【Linux系统编程】进程控制(三)——进程程序替换

比execvp多了一个e那它又有什么不同呢?我们看到它在后面又多了一个参数,也是一个char*数组,名为envp我们之前环境变量那篇文章,学习main函数的第三个参数,不就和它一样嘛所以,这里第三个参数,使得进程可以显式传递新环境变量数组,不继承父进程环境那下面就修改代码继续演示这个接口:上面我们演示的都是重新替换执行系统的一些命令,当然程序替换也可以执行我们自己写的程序。比如我们现在新写一个C++程序:然后编译生成可执行程序——mycmd。

2026-05-12 18:28:01 444

原创 【Linux系统编程】进程控制(二)——进程等待

那未来通过这个status,我们如何判断一个进程 是正常退出,还是异常终止呢?🆗,只要终止信号部分(最低7bit)为0,那就表示是正常退出(所以上面我们看到并没有0号信号)那正常退出的话,结果正确还是错误呢,如果错误,是什么原因呢?那此时通过退出码(低16位的高8位)就可以知道!退出码为0,程序执行成功;非0,执行出错,不同的错误码对应不同的出错原因。如果终止信号非0,那就代表进程异常终止,此时退出码无意义!总结:(完美!下面修改代码来演示上面的三种场景:首先把终止信号也打印出来。

2026-04-27 18:08:28 410

原创 【Linux系统编程】进程控制(一)——进程创建与进程终止

进程控制第一讲:进程创建、进程终止

2026-04-22 17:30:17 451

原创 【Linux系统编程】进程地址空间

进程地址空间

2026-04-18 23:16:25 477

原创 【Linux系统编程】进程切换与进程调度

CPU按优先级调度的时候,就从运行队列中找到queue数组,找到对应下标的链表(本质是链式结构的队列),从中就可以拿到队头进程的task_struct(同一队列中的进程优先级一致,相同优先级的进程按照FIFO规则进行排队调度)。不会的,我们上面说了:我们通过NICE值修改进程的优先级,那么就在重新入队列(入到过期队列)的时候加上这个NICE值,得到新的优先级,换到过期队列中它对应的优先级的队列中。因为我们一旦修改了某个进程的优先级,比如改的值更小了(优先级更高了),此时他会抢占到优先级比它低的进程前面吗?

2026-04-11 11:41:25 403

原创 【Linux系统编程】Linux底层是如何管理进程的?

正是这种思想,让 Linux 内核在极致的性能、灵活性和简洁性之间取得了不可思议的平衡。

2026-04-08 11:17:13 422

原创 关于论文《使用 FLUSH+RELOAD 缓存侧信道攻击恢复 OpenSSL ECDSA 的随机数》的理解

这篇论文干了什么?用FLUSH+RELOAD攻击OpenSSL的ECDSA签名,恢复了随机数k,拿到了私钥为什么能成功?因为OpenSSL的实现里,k的每个比特会影响程序走哪个if分支,分支对应不同内存地址,FLUSH+RELOAD能探测到我知道了这种缓存侧信道攻击是怎么做的,后面我是要研究如何防御这种攻击的!

2026-04-05 16:57:48 709 1

原创 2026年3月远程软件性能横评:ToDesk、向日葵、RayLink多维度实测分数揭晓

现在跨地域协作越来越普遍,个人设备也越来越多,选一款流畅、安全又好用的远程控制工具,已经成了刚需。本次测评不堆参数、不玩虚的,基于长期真实使用体验,实测ToDesk、向日葵、RayLink三款热门产品,从界面、操作、画质等多核心维度入手,客观分析各款优劣,给大家一份实测分数结果和不踩坑的选择指南。

2026-03-04 16:56:02 10914 61

原创 【MySQL】视图

那如果我们修改了视图,会影响基表中的数据吗?我们来试一试(和对表的操作一样,前面都讲过了)比如,我们把emp表中SMITH的姓名改成smith然后我们来看基表emp能够看到它也变成了小写,即修改视图数据是会影响基表的。

2026-02-26 20:32:51 983

原创 从“祖传代码”到标准工程:飞算JavaAI专业版三剑客,拯救了我的订单模块

Java整洁器先让代码达到“可工作”状态。文档生成器进而让项目达到“可理解”状态。单元测试生成器最终让项目达到“可信任”状态。这三者结合,完美解决了项目维护和交付的核心痛点。相比于GitHub Copilot(以补全见长)或通义灵码(免费版功能有限),飞算JavaAI这种深度集成、面向全链路工程化的思路,对Java开发者来说更具实用价值。而其每月仅9.9元的价格(远低于直接使用智谱4.7等底层模型20元/月的成本),提供的却是企业级的代码质量和开发体验,性价比极高。行动号召。

2026-02-26 19:25:36 329

原创 CANN开源仓Catlass模板库核心能力与编程实战

Catlass 模板库通过“分层架构+组件复用”,解决了昇腾算子开发“门槛高、效率低、性能难优化”的痛点。未来,随着昇腾 AI 处理器迭代,Catlass 将进一步支持稀疏计算、动态 Shape 等场景,成为 AI 原生开发的核心基础设施。CANN 与 Catlass 关系:图:CANN AI架构计算架构图CANN AI架构计算架构图展示其分层结构:上层为深度学习框架适配、创新算子与库、AI应用;

2026-02-26 19:24:19 6132

原创 CANN开源仓Catlass横模库适配自定义模型踩坑录

背景:某客户船脸识别模型含120个小矩阵乘(多头注意力),GPU上性能达标,昇腾NPU迁移后性能下降40%。问题分析:通过msprof定位到“内核启动开销占比52%”(小矩阵乘单次计算量小,频繁启动内核)。解决方案:用Catlass GroupGEMM替换循环调用GEMM,复用BlockMmad组件,一次内核处理所有小矩阵。效果:内核启动开销降至5%,整体性能提升38%(数据来源:客户验收报告)。图7:船脸识别模型迁移前后性能对比图CPU版本下,船名识别模型运行时间约为0.55秒;

2026-02-26 19:24:12 6076

原创 【MySQL】表的内连接和外连接

然后就可以引出外连接的概念了:如果把悬浮元组也保留在结果中,其它属性填上空置,那么这种连接就叫做外连接。如果只保留左表中的悬浮元组,那就叫左外连接;如果只保留右表中的悬浮元组,那就叫右外连接。所以,对于上面两张表,外连接的结果应该是这样的那么左外连接就应该是这样:只保留左表的悬浮元组嘛查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来所以左外连接的结果不就是题目想要的嘛。学生id为3,4的两名学生没有成绩,但是也把信息也是出来了。

2026-02-25 16:16:32 1548

原创 【MySQL】SQL里的“套娃”与“拼图”:子查询和合并查询

首先要知道10号部门的工作岗位是什么,然后要找的是工作岗位与这个(10号部门的工作岗位)相同的雇员的信息,包括姓名、岗位、工资、部门号,但是要求雇员不能是10号部门中的。我们前面的文件已经做过简单的了解了,这个文章我们正式来学习它。那同样的,我们说过很多遍了,笛卡尔积中通常是有很多的无意义数据的,比如SMITH这个人,他所在的部门是确定的,那他与tmp表中其它部门的信息组合是无意义的。是30号部门的员工中的最高工资,因为要比30号部门的所有员工工资高嘛,那比部门中最高工资高,自然就比所有员工工资高了。

2026-02-23 20:24:55 1960 4

原创 【MySQL】SQL里的“连连看”:从笛卡尔积到自连接

前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够。先来复习一下我们之前学过的基本查询,做几道题。

2026-02-14 11:58:14 889 1

空空如也

空空如也

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

TA关注的人

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