news 2026/10/14 3:53:58

Linux文件与目录操作全解析:从路径导航到权限排查

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux文件与目录操作全解析:从路径导航到权限排查

刚接触Linux的时候,我印象最深的一件事不是“系统能做什么”,而是“光在目录里转来转去就能把人绕晕”。文件与目录命令说起来简单,无非就是增删改查、进进出出,但真到了实际工作里,你会发现不同人敲同一套命令,效率和结果完全不一样。有人一个管道就能把日志里的错误码统计得清清楚楚,有人却在为一个“Permission denied”卡住半小时。

这篇博客不是命令手册的搬运,而是把我在日常使用中真正高频、真正有用的文件与目录操作整理成一条完整的学习路径。从最基本的路径认知,到文件内容查看、搜索定位、权限管理、压缩归档,再到翻车现场的排查思路,每一部分都会解释“为什么这么做”,而不只是“该敲什么”。不管你是刚打开终端的新手,还是想系统补齐细节的老手,照着这条线过一遍,应该都能把Linux文件操作这块地基打得更扎实。

1. 先搞清楚你在哪:目录导航与路径体系

1.1 绝对路径与相对路径:从“门牌号”到“往前走三格”

很多新手第一次接触路径时会觉得抽象,其实可以这样理解:绝对路径就是门牌号,无论你在哪条街上,只要按这个门牌号走,一定能到达目的地。相对路径则是“往前走三格右转”,它的含义取决于你当前站在哪里。

在Linux里,绝对路径永远以根目录/开头。比如/home/user/work/report.txt,从根目录逐级展开,任何一个字符都不会因为你的当前目录而改变。相对路径则以当前目录为基准,用.表示当前目录,用..表示上一级目录。假设你当前在/home/user,要进入/home/user/work,直接cd work就行;如果当前在/home/user/work,想回到/home/user,cd ..就解决了。

这个区分在脚本里尤其重要。我见过不少刚写脚本的同学,习惯用相对路径写部署脚本,结果换个目录执行就全线崩溃。所以我的建议是:交互式操作时可以随便用相对路径,怎么方便怎么来;但凡是写进脚本里的路径,一律写绝对路径,或者先cd到固定位置再使用相对路径,否则脚本的稳定性很难保证。

另外还有三个特殊符号值得刻意记一下:~代表当前用户的家目录,是/home/用户名的快捷方式;-代表上一次所在的目录,cd -能让你在最近两个目录之间反复横跳,这个用法在“先去看一眼日志,再回来继续改配置”的场景下特别顺手;.虽然表示当前目录,但在执行脚本时,直接输入脚本名是找不到的,必须写成./脚本名,这涉及PATH搜索机制,后面讲which的时候会一起说。

1.2 pwd、cd 和 ls:三个命令玩明白目录视图

pwd的作用是告诉你当前在哪,常和cd -配合使用。注意pwd有两种输出方式,不加参数时通常输出逻辑路径,如果一个目录是通过软链接进去的,pwd会显示链接路径;如果加-P参数,则输出真实的物理路径。这个差异在排查问题时偶尔会用到,脚本里判断真实路径时建议用pwd -P。

ls可能是大家最早接触的命令之一,但它的参数多到你未必每个都用过。我按常用程度列了一张表:

参数作用备注
-l长格式显示详细信息包含权限、属主、大小、修改时间
-a显示所有文件包括以.开头的隐藏文件
-h人类可读的大小常与-l配合,显示为K、M、G
-S按文件大小排序大文件排前面,常用来看目录里谁最占空间
-t按修改时间排序最新修改的排前面
-r反向排序可与其他排序参数组合
-d只看目录本身配合通配符查看目录名,而非目录内容
-i显示inode编号排查硬链接、文件系统问题时有奇效

日常使用中,ls -lah是我的固定搭配。在排查目录特别大、文件特别多的情况时,ls -lahS会先把最大的几个文件亮出来,一眼就能定位到“谁是罪魁祸首”。

还有一点要注意:很多发行版会把ls做成别名,实际执行的是ls --color=auto,所以你会看到文件和目录颜色不同。这个颜色提示在交互环境里很好用,但在脚本里解析ls输出时,颜色字符会变成干扰项,遇到这种情况要么用/bin/ls绕过别名,要么干脆用find或通配符来处理,不依赖ls的文本输出。

2. 文件与目录的增删改:从新建到清理

2.1 touch 与 mkdir:让文件“凭空出现”

touch这个命令很有意思,它的核心功能其实是修改文件的时间戳,但当一个文件不存在时,它会顺手把文件创建出来。所以很多人习惯用它来快速创建空文件,比如初始化项目时先用touch README.md占个位置。

理解touch的时间戳机制,对排查问题有实际意义。文件有三个时间:atime(访问时间)、mtime(修改时间)、ctime(状态变更时间)。touch默认会把atime和mtime改成当前时间,ctime会随之更新。如果你希望在不影响内容的前提下改一下文件的修改时间,可以用touch -d "2025-01-01 10:00" 文件名指定时间点。我做文件同步的时候,遇到过因为系统间时间戳不一致导致判断逻辑失效的情况,后来就是用touch手动校准对应文件的时间,才把问题排查清楚。

mkdir用来创建目录,最常用的参数是-p。mkdir -p a/b/c会一次性把a、a/b、a/b/c三层目录全部创建出来,如果中间有一层已经存在,它也不会报错。这个参数在脚本里几乎是刚需,因为你无法保证每次执行脚本时上级目录都已经建好。另外mkdir可以用-m直接指定权限,比如mkdir -m 700 secret,创建出来的目录权限直接就是700,省得再敲一次chmod。默认情况下目录权限是由umask决定的,普通用户创建目录通常是755,文件通常是644,这也是Linux世界里最常见的两组权限数字。

顺便提一句rmdir,它只能删除空目录,实用性有限。平时删目录基本都用rm -r,这个命令的杀伤力我们在后面专门说。

2.2 cp 与 mv:复制、移动还是重命名

cp的常用组合是cp -a 源 目标。-a是“archive”的缩写,等价于-dR --preserve=all,会保留文件属性、软链接、时间戳、权限等信息。日常复制几个文件,用cp 源 目标就够了;但如果要把一个目录完完整整搬走,包括里面的软链接和权限位都不丢,那就必须用cp -a。只加-r的话,软链接容易被复制成软链接指向的内容,而不是软链接本身,这一点我踩过不止一次。

还有两个参数值得养成习惯:-i在覆盖前会询问,-u只在源比目标新时才覆盖。脚本里批量同步文件时,我常用cp -u做增量复制,能省不少没必要的IO。如果明确不想覆盖已有文件,可以加-n,它的优先级高于-i,适合“只补缺失文件”的场景。

mv表面上叫移动,实际干了两件事:在同一文件系统内移动时,它只是修改了目录项记录,瞬间完成;跨文件系统移动时,它会先复制到目标再删除源,速度和风险都完全不同。所以如果你要把一个大文件从/home移到/data,而这两个分区是独立的,那实际上是在做一次复制加删除,耗时取决于磁盘速度。

mv另一个常见用途是重命名。改文件名本质上是把文件从一个目录项移动到另一个目录项,所以mv old.txt new.txt和mv file /tmp底层是同一套机制。写脚本时如果需要“移动并改名”,一条mv命令就能搞定,不需要先复制再改名再删除。

2.3 rm:一次误删的代价与自我保护机制

rm -rf可能是Linux里最著名的“高危命令”,它不需要确认,递归删除,强制忽略不存在的文件。刚接触的时候觉得“取消确认”很爽,但等你真正误删过一次线上数据,就会明白为什么老手都把这个命令当成“拆弹工具”来对待。

我的做法不是发毒誓“绝不手滑”,而是用机制约束自己:

第一,交互式环境下把rm设置成带确认的模式,执行alias rm='rm -i',或者直接迁移到带回收站逻辑的习惯——不要真的物理删除,而是用一个函数把文件挪到一个隐藏的回收目录,定期再手动清理。具体实现思路是写一个shell函数,mv "$@" ~/.trash/,再写一个清理函数清空这个目录。这样误删了还能捞回来,比任何“小心再小心”都管用。

第二,在脚本里尽量不用裸的rm -rf,尤其是变量拼接出的路径。脚本执行前先set -u,并且给rm -rf的路径参数加一层判断,比如确认变量非空、确认路径前缀正确,再执行删除。哪怕多写两行判断,也比“脚本跑歪了把关键目录删了”强。

第三,如果真的要对用户目录之外的地方执行递归删除,我会先ls看一眼目标目录内容,或者用du -sh确认大小,再决定要不要动手。这个地方多花十秒钟,能省下后面几十个小时的恢复时间。

3. 查看文件内容:按场景选对打开方式

3.1 cat、less、head、tail:不要在错误的工具上纠结

文件很小的时候,cat直接把内容全量输出到屏幕,干脆利落。但文件一大,cat就会把终端刷得满满当当,这时候必须上less。less不只是分页查看,它支持/关键词往下搜索、?关键词往上搜索,按n继续搜索下一个匹配,按g跳转到文件第一行,按G跳到最后一行。在几万行的日志里找某个报错,less配合搜索是效率最高的组合。

head和tail看名字就知道是看开头和结尾的。head -n 20 文件看前20行,tail -n 20 文件看最后20行。日常排查日志时,我几乎不用cat去打开一个几百MB的日志,而是直接tail -n 200 app.log,先把最近的错误捞出来。更高级的是tail -f,它会持续跟随文件末尾,新写入的内容会实时滚出来。这个模式特别适合观察正在进行中的任务,比如服务启动时看它是否报错,数据导入时看进度日志。

有一点务必注意:如果用tail -f挂在一个会无限增长的日志文件上,不及时退出的话会一直占着一个终端。退出方式是Ctrl + C,不是Ctrl + Z;如果已经挂起了,可以用jobs查看任务,再fg切回去,之后Ctrl + C停掉。这是新手最容易懵的操作点。

还有一个组合技巧:tail -f文件后用管道接上grep做实时过滤,比如tail -f app.log | grep "ERROR",这样屏幕上只滚动显示错误行,不会被正常日志淹没。线上问题排查时这一招非常好用,但要注意管道中间的缓冲可能导致延迟,如果追求实时性,可以用grep --line-buffered关掉缓冲。

3.2 sort、uniq、wc:日志统计三板斧

很多时候你以为需要写脚本去统计日志,但其实三个命令就能搞定。wc -l 文件直接输出行数,这是最基础的统计。sort默认按字典序排序,sort -n按数值排序,sort -k 2按第二列排序。uniq本身只会去掉相邻的重复行,所以必须先排序再uniq,这就是为什么它们总是一条管道连着用。

uniq -c会在每行前加上出现次数,配上sort -rn就能做出“出现次数最高的Top N列表”。举个例子,你想知道日志里出现最多的错误码是什么,可以这样跑:

grep "ERROR" app.log | awk '{print $2}' | sort | uniq -c | sort -rn | head -20

这条命令的思路是先过滤出错误行,再用awk提取第二列的错误码字段,排序后统计每个错误码出现的次数,最后按次数倒序取前20个。整个过程不需要写Python脚本,一条管道线搞定,跑起来也很快。

sort的时间复杂度是O(n log n),日志文件几百万行时依然能接受。如果文件达到几个GB,建议先split拆分,或者直接用文件前缀定位,别硬扛全量统计。还有个小细节:sort默认把汉字符号按locale排序,统计时如果字段含有中文,结果顺序可能和你预期的不一样,这时候建议指定LC_ALL=C sort,强制按字节序排序,结果更可控。

4. 告别文件“找不到”:搜索定位命令的正确姿势

4.1 find:灵活但需要理解的表达式式搜索

find是Linux下最强大的文件搜索工具,没有之一。它的基本结构是find 路径 表达式,路径明确从哪儿开始找,表达式是一系列条件和动作。新手最容易犯的错是把find当成ls用,只知道find / -name "xxx",看不到结果就觉得“没找到”,但其实name默认是全名匹配,不能只给一部分。

-name支持通配符,例如find . -name "*.log"能找出当前目录下所有.log结尾的文件。注意这里的*.log要加引号,否则shell会在传入find之前先展开通配符,结果可能完全不是你想要的含义。如果你想对整个文件系统找某个文件,最好限定find / -name "目标文件名" 2>/dev/null,把权限不足的报错扔到一边,不然屏幕上会有大段的Permission denied刷屏。

除了按名字,find更强大的是按属性过滤:

find /data -type f -size +100M # 查找大于100MB的普通文件 find /var/log -mtime -7 -name "*.log" # 7天内修改过的日志文件 find /home -type d -perm 755 # 查看权限为755的目录

-type f表示普通文件,-type d表示目录,-size支持+和-配合k、M、G单位,-mtime -7表示修改时间在7天以内。这套写法用来定期清理磁盘非常顺手,比如“找出所有超过30天未访问的临时文件,确认后删除”。

4.2 把搜索结果变成下一步动作:-exec 与 xargs

搜索到文件之后,下一步往往是想对这些文件做点什么,比如删除过期文件、批量改权限、批量压缩。find有两种玩法:-exec直接对每个结果执行命令,或者把结果通过管道交给xargs统一处理。

-exec的完整套路是这样:

find /tmp -name "*.tmp" -exec rm {} \;

这里的{}是占位符,代表每条匹配到的文件路径,\;表示命令结束。这个写法直观,但效率不高,因为每个文件都会启动一次子进程。如果文件数量很多,用xargs更合适:

find /tmp -name "*.tmp" -print0 | xargs -0 rm -f

-print0让find用空字符而不是换行来分隔结果,xargs -0对应地按空字符切分,这样文件名里即使有空格、换行也不会被拆坏。这是我在脚本里处理文件名的铁律:凡是可能包含空格的文件名进入管道,必须用-print0和-0的组合。

另一个实战例子是批量修改文件权限:

find /data/web -type f -name "*.php" -exec chmod 644 {} \; find /data/web -type d -exec chmod 755 {} \;

文件统一644、目录统一755,这在部署PHP类项目时很常见。需要注意find的执行动作是从上往下逐条执行的,如果你在-exec里又删除了某个目录,后续的搜索条件可能会受影响,所以“边找边删”的脚本要谨慎设计搜索范围。

4.3 locate 与 which/whereis:按工具分工来找

find是实时搜索整个目录树,代价是慢;locate则是查一个预先建立的数据库,速度快到毫秒级。但locate有一个明显的缺陷:它的数据库不是实时更新的,刚创建的文件可能找不到,需要先执行updatedb刷新索引,而且这个命令需要管理员权限。新的发行版甚至默认不安装locate,所以我更建议把它当成“辅助手段”,真正要准确结果还是靠find。

which和whereis不是用来找普通文件的,而是用来定位“命令本身”。which会在PATH变量列出的目录里搜索命令,输出它的完整路径。比如which python,如果系统里装了多个版本,这个命令能明确告诉你当前默认用的是哪一个。whereis更进一步,除了命令程序,还会搜索它的源码、man手册和配置文件位置。

这里就涉及到前面提到的“为什么执行脚本要写./脚本名”:因为当前目录.通常不在PATH里,shell不在.里搜命令,所以你必须显式写出路径,告诉shell“就在当前目录”。理解了这一步,你对Linux命令解析机制的认识就不一样了。

5. 链接、权限和压缩:文件管理的三个进阶话题

5.1 软链接与硬链接:理解inode是关键

要讲清楚链接,必须先理解inode。每个文件在Linux文件系统里都有一个inode节点,记录着文件元数据(权限、属主、大小、时间戳等)和数据块的位置。目录项只是把文件名和inode编号绑定在一起。理解了这条链,链接就很好懂了。

硬链接是“多个文件名指向同一个inode”。你创建硬链接后,两个文件名其实指向同一份数据,修改任何一个文件内容,另一个也会同步变,因为本来就是一个文件。硬链接只能在同一文件系统内创建,而且普通用户不能对目录创建硬链接。判断哪些名字指向同一个inode,用ls -i看编号最直观。

软链接则是一个独立的文件,它存储的是“目标文件的路径”。删掉原文件后,软链接会变成“ dangling ”状态,指向一个不存在的路径,打开会报错。这就像快捷方式:快捷方式自己是一个文件,里面的内容是目标的地址;目标被移走了,快捷方式还在,但已经打不开了。

实战中软链接用得非常多,它的经典场景是版本切换。比如服务器上部署了多个版本的程序目录,通过一个软链接指向当前生效的版本,升级时只需要修改软链接指向,不用改配置,也不用动文件。这就是Linux世界里很典型的“一点切换法”,逻辑简单,操作风险也小。

5.2 文件权限:看懂rwx和数字模式

ls -l看到的长串开头如drwxr-xr-x,第一个字符表示文件类型:d是目录,-是普通文件,l是软链接。后面9个字符分成三组,分别代表属主、属组、其他人的权限。r是读,w是写,x是执行。

文件和目录的x权限含义不同:文件的x表示能否作为程序执行,目录的x表示能否进入这个目录。也就是说,哪怕你对某个目录有r权限,如果没有x权限,你也cd不进去,ls也没法读取目录内容。这个区别经常让人困惑,排查权限问题时可以先从这里入手。

数字模式是三个权限位的二进制换算:r=4,w=2,x=1。7就是读写执行全开,5是读和执行,4是只读。最常用的两组权限是755和644:目录用755,所有人都能进;文件用644,所有人都能读,但只有属主能写。这是默认值最安全的组合之一。

修改权限用chmod,递归处理目录时要加-R。修改属主和属组用chown 用户名:组名 目标。有个容易忽略的细节:chown不仅改变文件的属主,也会影响它的属组;如果你只想改组,可以写chown :组名 目标。部署文件时,如果发现“明明有权限为什么还是操作不了”,多半是属主或属组没设对,而不是权限位的问题。

5.3 tar 打包压缩与磁盘检查

tar最初的意思是“磁带归档”,现在主要用来打包。它的参数组合看起来很吓人,但拆开记忆就简单了:c是创建包,x是解包,t是查看包内容,v是显示详细过程,z是用gzip压缩,f指定文件名。所以常用组合就是:

tar czvf archive.tar.gz /path/to/dir # 打包并压缩 tar xzvf archive.tar.gz # 解压 tar tf archive.tar.gz # 查看内容,不解包

tar解包时有个坑:如果包内文件路径带了绝对路径,解压时会直接按照绝对路径写入,有覆盖系统文件的风险。所以拿到陌生压缩包,最好先tar tf看一眼内容结构,确认没有/etc、/bin之类的前缀再解开。解压前可以先tar tzf 包名 | head预览第一层,这一步能省很多麻烦。

磁盘检查方面,du -sh 目录能显示目录总大小,df -h能显示分区使用率。排查“磁盘满了,不知道谁占的”这类问题时,先df -h确认哪个分区满了,再用du -sh *按当前目录下各子目录从大到小定位占用大头,一步步缩小范围。配合sort -h,甚至可以直接排出目录大小Top列表:

du -sh /data/* 2>/dev/null | sort -h | tail -20

du -sh *会分别统计当前目录下每个子项的大小,再用sort -h按人类可读的大小排序,最后取最大的20项。这套操作是我清理磁盘时的标准动作。

6. 高频翻车现场:常见问题与排查实录

6.1 “Permission denied”不只是权限位的问题

很多人看到Permission denied第一反应就是chmod 777,这其实是把事情搞砸的最快方式。权限拒绝可能来自好几个层面,按排查顺序走比较稳:

第一,先看属主和属组对不对。ls -l会显示当前属主和属组,用id命令看自己的用户名和组。如果文件属于另一个用户,哪怕你权限再大,只要不是属主且不在对应组里,也操作不了。第二,检查目录的x权限,这是前面提到的“能看文件列表但不进去”的坑。第三,检查文件系统挂载参数,如果挂载时加了ro(只读),那么无论权限怎么改,整个分区都只能读不能写,这时候chmod也不会报错,但写入就是失败。第四,如果系统开启了强制访问控制模块,即使普通权限判定通过了,仍可能被拦截。这类问题的排查思路是先用dmesg或系统审计日志看有没有相关的拒绝记录,不要一上来就无脑chmod 777。

我处理过一个典型场景:某个Web目录死活写不进文件,ls -l看权限明明是755,属主也对,最后发现是挂载参数带了nodev一类的限制,表面看是权限问题,实际上是文件系统层的策略。所以在权限问题上,先扩大排查范围,再动手改权限,才是正确的顺序。

6.2 文件名有空格、通配符乱扩展:脚本里的经典坑

Linux允许文件名里有空格,这就给脚本带来了麻烦。举个最简单的例子,你有个文件叫my report.txt,直接rm my report.txt会被解析成删除my和report.txt两个文件。解决办法是把文件名用引号包起来:rm "my report.txt"。

更隐蔽的问题是通配符。脚本里写rm $dir/*.log时,如果$dir里恰好有文件名以-开头,可能会被命令解析成参数。更严重的是,如果$dir为空,rm $dir/*.log会展开成rm *.log,可能会删掉当前目录下的所有日志文件。所以脚本里涉及路径变量时,一定要确保变量非空,并且给路径加引号。

还有一类经典错误是用find -exec或xargs时没有处理分隔符。我建议在脚本里统一使用find ... -print0 | xargs -0,或者直接用find -exec ... {} +,这样无论文件名里有没有空格、换行、甚至单双引号,都不会出问题。写脚本时顺手加上set -euo pipefail,让未定义变量直接报错、管道断掉时提前退出,虽然不能解决所有问题,但能把风险降低一个数量级。

6.3 日志增长与磁盘占满:怎么追根溯源

日志文件越写越大,最终把磁盘占满,这是运维里最经典的问题之一。别急着删日志,删掉之后文件仍然被进程打开,空间不会立刻释放。正确的排查路径是:先用df -h确认磁盘使用率,再用du -sh定位占用最大的目录,接着用lsof | grep deleted看看有哪些已删除但还被进程持有的文件,这些文件在进程重启前会一直占着空间。

定位到大文件后,处理方式也不是直接删。如果这个文件被某个进程持续写入,删除之后进程中句柄还开着,空间依然不释放。更合理的做法是先用truncate -s 0 日志文件把文件清空,让进程继续往原文件里写,然后配置日志轮转机制,按大小或日期切割日志,保留最近N份,超出部分自动清理。这个策略比“手工人肉删日志”靠谱得多。

我自己的习惯是,每次部署新服务时随手配好日志轮转和磁盘告警,别等磁盘满了再处理。一套自动机制省掉的不只是时间,还有半夜爬起来救火的痛苦。

在实际操作中,我体会最深的一点是:Linux文件与目录命令从来不是一个个孤立的技法,它们天然是一套组合拳。find找到文件,xargs批量处理,sort|uniq做统计,tar归档传输,du/df监控空间,每个环节都和其他命令咬合在一起。刚开始用的时候可以单个命令慢慢敲,但只要脚本写得稍微复杂一点,这些命令就会自动串成管道。

最后再分享一个小技巧:遇到复杂操作,先在命令行手动跑通一小段,确认每一步的输出符合预期后,再把它写进脚本。比如先用find看看匹配到了哪些文件,再用xargs echo代替真正执行的命令做一次“空跑”,确认无误后再换成实际动作。这个习惯帮我挡掉了无数次潜在的误操作,也建议你从今天开始养成。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 3:53:44

Spring Boot高校教室管理系统:预约、报修与课表冲突检测实战

高校教室管理系统这件事,单看标题像个典型的课程设计作业——Spring Boot、预约、报修、课表时间管理,放在一起感觉就是把数据库的增删改查套了一层教室场景。但真正动手做过的同学应该明白,这玩意儿远没有名字看起来那么平淡。教室预约的时间…

作者头像 李华
网站建设 2026/10/14 3:53:31

三模融合如何破解UWB规模化落地的成本困局?

随着AQ 3064.3-2025新规的强制实施,工业UWB人员定位正在从过去的示范试点阶段,快速转向全行业规模化合规落地阶段。但行业始终绕不开一个核心工程难题:想要稳定的厘米级精度,就必须承担极高的部署和运维成本,纯UWB全厂…

作者头像 李华
网站建设 2026/10/14 3:53:30

国产化底座运维实战:从性能调优到风险防控的完整指南

1. 国产化底座运维难在哪这两年在国产化改造的浪潮里扑腾,很多运维工程师最大的感受是:不是不会干,是过去积累的“肌肉记忆”全废了。我们常说国产化底座,说白了就是芯片、操作系统、数据库、中间件这一整条技术栈换成国内自研的版…

作者头像 李华
网站建设 2026/10/14 3:53:27

鸿蒙远程屏幕控制:dart_rfb协议栈适配与低延迟优化

这段时间一直在折腾鸿蒙上的远程屏幕控制方案,最后定下来用 Flutter 三方库 dart_rfb 做底层,完成了整套鸿蒙化适配。VNC 远程桌面协议这个东西,初看觉得就是"发截图 回传鼠标键盘",但真正把它的核心逻辑摸透、再从一个…

作者头像 李华
网站建设 2026/10/14 3:53:13

learn-claude-code-s01-s04-学习笔记

Learn Claude Code s01–s04 学习笔记与薄弱点复盘 学习对象:learnclaudecode 渐进式教程「工具与执行」板块(s01 Agent Loop / s02 Tool Use / s03 Permission / s04 Hooks) 学习方式:不逐行读代码,而是「跑通 → 改坏…

作者头像 李华
网站建设 2026/10/14 3:53:11

高并发文章系统架构实战:缓存穿透击穿雪崩的完整解决方案

搞高并发文章系统这个项目,最初只是某公司的内容平台想解决一个看似简单的问题:热门文章一上线,流量瞬间涌入,数据库经常被拖垮。真正动手之后才发现,这个场景简直是高并发架构的"集齐龙珠"现场——读多写少…

作者头像 李华