Linux常用命令笔记
Linux常用命令
在线帮助
- help:shell的内置命令比如cd alias等,内置命令是找不到对应的可执行程序的,它是被shell解析器直接处理的
- man:普通命令
- 查看简单的帮助可以直接使用命令 --help/-help,比如
grep --help
- 另外,man还可以查看配置文件信息,比如
man resolv.conf
- 查看简单的帮助可以直接使用命令 --help/-help,比如
文件管理
文件和目录
- pwd:显示路径
- ls:列出目录内容和属性
- -i:显示inode
- -a:显示全部(包括隐藏文件)
- --color:显示颜色
- -d:只显示本身的属性
- -l:详情,ll为
ls -l
的别名
- tree:列出目录内容,以树形结构展示
- -L:指明层级
- -d:只显示目录
- mkdir:创建目录
- -p:自动创建父目录
- cp:拷贝
- -r:递归拷贝
- -d:保存文件的链接属性
- -p:保存原有的文档属性(权限)
- -a:相当于-rfp
- -i:重名提示
- -f:强制拷贝
- scp:远程拷贝
scp username@host:src dst
scp src username@host:dst
- $ scp username@remote.com:/from/path/{a,b,c} ./ # 拷贝多个文件
- rsync:远程同步,增量模式
- 本地模式
- 远程shell模式,类似于scp
- 远程daemon模式
- dd:文件拷贝,它不但可以指定拷贝的字节数,还可以直接对设备文件进行操作
- if:指定输入文件
- of:指定输出文件
- bs:一次拷贝的字节数
- count:拷贝的次数
- 例如:
dd if=/dev/sda of=test.bin bs=512 count=1
,拷贝0磁头0磁道1扇区- 测试写:
dd if=/dev/zero of=test.bat bs=4k count=10000
(/dev/zero
是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中) - 测试读:
dd of=/dev/null if=test.bat bs=4k count=10000
- touch:触摸,它会改变文件的时间属性,如果文件不存在则会重新创建
- stat:查看文件的系统状态
- mv:移动文件或者修改名称
- rename:文件重命名,相比于mv的单文件修改,它支持通配符(?.*)和正则表达式
- 例如:rename 's#字符1#字符2#' 文件名
- lsof:查看打开的文件
- 无参数:列出所有
lsof 文件名
:列出那些进程打开了该文件lsof -c 进程名
:列出进程打开了那些文件lsof -p pid
:列出进程打开了那些文件lsof -i
:列出所有网络连接lsof -i tcp
:列出所有的tcp连接lsof -i :22
:列出谁在使用端口22
- ln:建立连接,默认是硬软件
- -s:指明是软连接 (软件连接和硬连接的区别:硬连接没有自己的inode和block,不能跨文件系统;软链接有自己的inode和block)
- readlink:读软链接本身的内容
- file:查看文件类型
- find:文件搜索
- 用法:
find 路径 [opt],例如find . -name "*.bat"
- -name:可以精确,也可以模糊,可以前面使用!进行取反
- -type:d,f,p
- -maxdepth:指明查找的深度
- -a:and
- -o:or
- -mtime:后面跟天数,可以配和+和-使用,例如-mtime 2表示2天前修改的文件
- -ctime:与
-mtime
类似,表示创建时间 - -atime:与
-mtime
类似,表示访问时间 - -inum:查看某个inode的文件
- 配合管道删除文件的例子:
find . -name "*.bat" | xargs rm -f
- 用法:
- split:文件分割
- 用法:
split [opt] src dst
- -l:按照行进行分割
- -b:按照字节数进行分割
- -d:使用数字作为后缀,默认是字母
- -a:指定后缀的长度
- 例如:
split -d -l 1 1.txt temp.txt
- 用法:
- paste:对应的行进行合并
- 用法:
paste [opt] 文件1 文件2
- -d:指定合并的分割符,默认为tab
- -s:合并是每一个文件一行
- 用法:
- wc:查看文件的行数,字节数
- -l:显示行数
- -c:显示字节数
- -m:显示字符数
- -L:一行的最大字符数
- du:查看目录空间大小
- -h:以人类可读的方式显示
- -s:显示总值,否则会列出每个文件的大小
文件内容
- cat:查看文件全部内容,小文件
- -n:显示行数
- 特殊用法:
cat << EOF >> filename
(将标准输入追加到文件中,输入EOF以结束)
- less:支持分页查看,more(功能比less弱一些,不支持向上翻滚)
- head:查看文件头,默认只是10行
- -n: n为一个数字,指定显示的行数
- tail:查看文件尾,默认也是10行
- -n: n为一个数字,指定显示的行数
- -f:实时跟踪文件最后内容
- echo:打印变量,可以配合>或>>输出或追加到文件
- -e:启用反斜杠转义的解释
- diff/vimdiff:文件比较
- cut:切割一行的某些部分输出,常用于简单取列
- -c:安字符进行切割,例如
echo "123-456-789" | cut -c 1-3
或cut -c -3
或cut -c 8-
或cut -c 1-3,5-7
- -d:指定分割符
- -f:指定取哪一个域,例如
echo "123-456-789" | cut -d "-" -f 3
- -c:安字符进行切割,例如
- sort:对文件的内容进行排序,
- -n:按照数字排序,默认是按照ascii码排序
- -r:降序排序
- uniq:取出重复的行,一般配合sort使用
- -c:增加重复次数前缀
- tr:字符转换或删除
- -d:指定要删除的字符或字符串,例如
echo "123456" | tr -d "12"
- 字符转换举例:
echo “hello” | tr [a-z] [A-Z]
echo "hello" | tr [:lower:] [:upper:]
- -d:指定要删除的字符或字符串,例如
- grep:全文搜索,擅长过滤,最终将匹配的字符所在的行输出
- 用法:
grep [opt] 字符串 文件或路径
,例如grep -Rn "test" .
- -r/R:递归搜索
- -n:显示行数
- -i:不区分大小写
- -v:不匹配对应的字符
- -color:匹配的字符串高亮,别名里面已经默认加了该属性
- -I:忽略二进制文件
- -E:支持扩展规则,相当于使用egrep,可以支持多个字符串,多个字符串之间使用|隔开
- -A:显示匹配到的行,并显示后n行
- -B:显示匹配到的行并显示前n行
- -C:显示匹配到的行,并显示前后n行
- 用法:
- sed:stream edit,用于搜索处理文件内容,以行为单位进行处理,擅长取行
- 用法:
sed [opt] 'command' 文件
- -n:取消sed的默认输出
- -i:改变文件内容
- -r:使用扩展正则表达式
- p:打印,
sed -n '1p' 1.bat
,sed -n '1,3p' 1.bat
- s:查找,格式一般为's#需要替换的字符串#新的字符串#g',g表示全局替换,否则只会替换第一个匹配行,替换举例:
sed 's#gpointer#test#g' marshaller.h
- i:插入:
sed '1ithis is test' 1.bat
- a:表示添加:
sed '1athis is test' 1.bat
,sed '$athis is test' 1.bat
- d:删除,删除第一行:
sed '1d' 1.bat
,删除所有空白行:sed '/^$/d' 1.bat
- 用法:
- awk:列处理,与grep和sed相对它更擅长于取列
- 用法:
awk [opt] '{expr}'
- 例如:
awk [opt] '{print $1 $2...}' 文件名
,$1:第一列,$2:为第二列,最后一列为$NF
,$0
为全部内容,即所有列 - -F:设置列的分隔符,默认是空格,如果想同时指定多个分隔符则可以用-F “[]”,例如指定逗号和空格分隔符,即-F [, ]
- 列出当前的目录的例子:
ls -l | grep ^d | awk '{print $NF}'
- 用法:
文件压缩
- tar:文件压缩和解压缩
- -z:支持gzip压缩和解压缩,tar.gz
- -c:压缩
- -x:解压缩
- -v:显示解压和压缩过程
- -f:表示要接的文件名
- -j:表示bzip2压缩和解压缩,后缀名为tar.bz2压缩
- -C:切换目录
- --exclude=:需要排除的文件或目录
- -t 查看压缩文件内容
- 压缩示例:
tar -zcvf test.tar.gz test
tar -jcvf test.tar.bz2 tetek
- 解压缩示例:
tar -zxvf ...
tar -jxvf ...
- zip
zip filename.zip dirname
unzip filename.zip
- rar
rar x FileName.rar
rar a FileName.rar DirName
软件管理
- apt/apt-get/dpkg
- 软在线安装:
apt install -y 包名称
- 软件离线安装:
dpkg -i
- 软件包查看:
dpkg -l | grep ...
- 软件包查找:
apt list| grep ...
- 下载软件:
apt-get download 包名
,默认保存在当前路径 - 下载源码:
apt-get source 软件包
,默认保存并解压在当前路径,打开源码的镜像源 - 软件卸载:
apt-get remove
保留软件的配置文件apt-get purge
不软件的配置文件- 注意和yum的区别,yum卸载会删除依赖
- 软在线安装:
- systemctl: 软件运行管理,systemd的配置工具,它是ubuntu系统执行的第一个进程
- 用法:
systemctl [opt] command [unit_name]
- 开启服务自启动:
systemctl enable unit
- 关闭服务自启动:
systemctl disable unit
- 检查服务状态:
systemctl status unit
- 启动某个服务:
systemctl start unit
- 停止某个服务:
systemctl stop unit
- 重启某个服务:
systemctl restart unit
- 重新载入配置:
systemctl reload unit
- 查看配置:
systemctl show unit
- 查看已启动的单元:
systemctl list-units
- 查看已安装的单元:
systemctl list-unit-files
- 例如:
systemctl status mysql
systemctl show mysql
systemctl list-unit-files | grep enable
systemctl list-units | grep running
- 用法:
磁盘管理
- mount:挂载文件系统
- 用法:mount [opt] 设备/标签/uuid 挂载点
- -t:指定文件系统类型,例如nfs,jffs2,不指定的话,mount内部会自动识别
- -a:挂载
- -r:readonly,默认是rw
- -o:后面跟一些高级选项,多个选项间用逗号隔开:
- loop:回环,用于挂载镜像文件
- remount:重新挂载,主要用于改变挂载属性
- nolock:一般用于网络挂载时,指明不锁定文件,默认会锁定,锁定有时会挂载失败
- size=n:指定文件系统大小为n,用于内存文件系统,不指定默认为内存的一半
- async/sync:同步/异步,默认是异步机制
- defaults:rw,suid,dev,exec,auto,nouser,async
- suid表示是否允许含有suid和sgid的文件,dev表示是否可以创建设备文件,exec表示是否拥有可执行的binary文件,
- nouser普通用户是否对此分区进行mount,默认仅有root才可以挂载,auto: 此分区允许被mount -a自动挂载
- unmount:卸载
- 用法 unmount 设备名或挂载点
- fdisk:
- 查看分区列表: -l选项,例如:
fdisk -l
,fdisk -l /dev/sda
- 分区: fdisk 设备名称,例如:
fidsk /dev/sdb
- m:帮助
- a/g:创建分区表
- n:新增分区
- p:打印分区表
- d:删除分区表
- q:退出,不保存
- w:保存退出
- 查看分区列表: -l选项,例如:
- parted:创建分区,有很多很多交互命令
- mkfs:创建文件系统,其实就是按照一定的规则预分配inode和block
- -t:文件系统类型,比如ext4,前提是系统支持,mkfs tab弹出对应的子命令,例如-t ext4,其实就等价于mkfd.ext4
- -b:块大小,一般不用指定,软件默认会采用最适合分区的块大小
- -i:指定inode的密度,决定inode的总数,也就是每多大空间就分配一个inode
- 例如:
mkfs -t ext4 /dev/sdb1
mkfs -t ext4 /dev/sdb1 -b 4096 -i 8192
- dumpe2fs:查看磁盘文件系统信息
- 用法:dumpe2fs 设备
- -h:列出超级块信息
- tune2fs:查看和修改文件系统信息
- 用法:tune2fs 设备名称
- -l:列出超级块信息,相当于
dumpe2fs -h
- -c:修改文件系统自检的mount次数,为0是忽略
- -i:修改文件系统自检的间隔,为0是忽略
- 例如:
tune2fs –i 0 –c 0 /dev/sdxx
- fsck:检测并修复文件系统,建议后面接采用磁盘并且最好先
unmount
掉- 用法
fdisk [opt] 设备名称
- -t:指定文件系统类型,不指定它可以根据超级块进行检测
- -f:强制检查
- -a: 自动修复检测有问题的扇区,否则会需要显式的按y
- -C:显式检测的进度
- 用法
- badblocks:检测磁盘坏块
- -v:输出检测结果和进度
- df:查看磁盘空间
- -h:以人性化的方式展示
- -i:显示inode的使用情况
- sync:同步文件系统缓存
网络管理
- netstat:查看网络状态
- -a: 列出所有的socket,默认只列出已连接的socket
- -p:显式pid
- -t:tcp协议
- -u:udp协议
- -n:不解析域名
- -r:显示路由
- 常见的用法:
netstat -antp
,netstat -rn
,netstat -nltp
- ss:显示处于活动状态的套接字信息
- route:查看、增加和删除路由
- 查看路由:route –n,没有-n参数也可以,不过它会试图将网关解析成域名,这样如果没有域名的话,显示会比较慢
- 添加缺省路由:
route add default gw 192.168.150.1 dev eth0
- 删除缺省路由:
route del default gw 192.168.150.1
- 给网段添加路由:
route add –net 192.168.150.0/24 gw 192.168.150.1
- 删除网段路由:
route del –net 192..168.150.0 netmask 255.255.255.0
- traceroute:跟踪路由
- 例如:
traceroute 192.168.1.1
- 例如:
- arp:查看、添加和删除arp缓存表
- 查看:
arp –n
,-n是不解析主机名,否则可能会比较慢 - 添加:
arp –s IP地址 MAC地址
- 删除:
arp -d IP地址
- 查看:
- curl:url测试
- 用法:
curl url,比如curl www.baidu.com
- 用法:
- wget:下载
- -O:设置下载保存的文件名
- -c:断点续传下载文件
- -b:启动后转入后台,它会自动将下载日志保存到当前目录的wget-log中
- -i:后跟文件名,用于下载FILE 中的 URLs。
- --spider:检查网站能否访问,并不是真的下载
- --timeout=seconds,超时时间
- --tries=2 指定重试次数
- tcpdump:用于截取网络分组,并输出分组内容,即抓包
- 用法:tcpdump [opt] 关键字
- -i:指定网络接口
- -w:保存到文件
- -s:抓取的包大小,有的版本tcpdump的默认抓取的包太小,这样可能会抓不完整
- -c:抓取的包数
- -dd: matching code as a C program fragment
- host:指定主机名,src host,dst host
- ether:指定mac,ether src,ether host
- port:指定端口
- net:网段
- 协议关键字: tcp, udp, icmp
- 比如:
tcpdump tcp port 22 -w ./tzttek.pcap
tcpdump tcp src host 192.168.150.101 and dst host 192.168.150.104 -w ./tzttek.pcap
- lsof:列出进程调用或打开的文件信息
- ifconfig:显示或设置网络设备
- ifup/ifdown:启用/停用系统上指定的网卡
- telnet/ssh:连接telent/ssh服务,用于远程访问服务器
- dig:DNS查询程序
- ip:加强版的的网络配置工具,用于代替
ifconfig
命令 - ethtool:网卡测试工具
- nc:tcp/upd连接工具
系统管理
信息展示或设置
-
uname:查看系统信息,常用参数包括:
- -a: 查看全部信息
- -r: 查看内核版本
- -n:查看主机名
-
ps:查看进程
ps -aux
,ps -elf
,ps -eLf
,ps -L pid
(e是全部进程,f是全格式,L会打印线程)- ps -elf |grep name 查看docker容器 pid(aux也可)
-
hostname:查看和设置主机名
-
history:输出用户的命令操作历史
- -c:清空
- -d:删除某一行
-
alias:查看或设置别名,别名的作用第一用于保护系统,提高安全性
-
unalias:取消别名
-
top:查看系统运行状态,里面包括CPU负载、内存使用情况,已经每个进程的负载
- -p:指定某一个进程后面跟进程号,
top -p $(pidof init)
- -H:显示线程,
top -H -p $(pidof mysqld)
- -d:指定显示间隔,单位秒,系统默认是3秒,可以是小数,例如-d 0.5 –d 0.1
- -p:指定某一个进程后面跟进程号,
-
pidof:查看进程id
-
pgrep:查看当前运行的进程并列出进程ID
pgrep process_name
pgrep process_name | kill
-
stress:系统压力测试工具,包括cpu、io、内存
- -t, --timeout N:在 N 秒后结束程序
- -c, --cpu N:产生 N 个进程,每个进程都反复不停的计算随机数的平方根
- -i, --io N:产生 N 个进程,每个进程反复调用 sync() 将内存上的内容写到硬盘上
- -m, --vm N:产生 N 个进程,每个进程不断分配和释放内存
- --vm-bytes B:指定分配内存的大小
- 例如:
stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s
-
uptime:查看系统的运行时间和负载
- 输出示例:
04:03:58 up 10 days, 13:19, 1 user, load average: 0.54, 0.40, 0.20
- 含义如下:
- 当前时间 04:03:58
- 系统已运行的时间 10 days, 13:19
- 当前在线用户 1 user
- 平均负载:0.54, 0.40, 0.20,最近1分钟、5分钟、15分钟系统的负载,正常这个值应该小于cpu的核数
- 含义如下:
- 输出示例:
-
ulimit:查看和设置用户资源限制,注意这个命令查看和修改只能对该用户有效,如果想整个系统有效需要使用sysctl
- -a:查看所有
- -c:查看或设置core文件的大小,例如:
ulimit -c unlimited
-
sysctl:查看和设置内核参数,主要参数包括:
- -a:查看所有参数,一般配合grep使用
- -p:重新加载sysctl配置文件,修改过配置文件后需要执行该命令
- -w:设置参数
-
env:显示环境变量
-
export:设置环境变量
-
为当前用户永久添加环境变量:
编辑 .bashrc 文件 vim ~/.bashrc
文件末尾添加:export PATH="/usr/local/nginx/sbin/:$PATH"
source ~/.bashrc
-
为所有用户永久添加某一环境变量:
编辑 /etc/profile 文件 vim /etc/profile
文件末尾添加:export PATH="/usr/local/nginx/sbin/:$PATH"
-
-
free:查看内存
- -h:人性化显示
-
dmesg:查看内核打印
- -c:清空
-
date:查看和设置系统时间
- -s:设置,例如:
date -s "20200202 23:30:00"
- -d: 显示时间
- -s:设置,例如:
-
umask:查看和设置权限掩码
-
whereis:程序搜索,默认会显示进程路径、帮组文档路径、源码路径
-
set:用于设置shell
-
unset:用于删除变量或函数
性能监控
- vmstat:虚拟内存统计
- 用法:
vmstat [opt] 间隔(s) [次数]
,例如:vmstat 1 5
- -a:可以显示活动内存和非活动内存,所谓活动内存就是正常分配的内存,非活动的内存是只mmap映射出来的内存
- -s:统计信息汇总
- -d:磁盘的读写
- 显示说明:
- r:可运行的进程数(正在运行或者就绪),如果该值长期大于核数则说明cpu负载过高
- b:处于阻塞的进程数
- swpd:虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,单位是KB
- free: 空闲的物理内存的大小,单位是KB
- buf:用作buf的内存大小,一般是文件系统使用,内存不够时系统会收回buf的内存,单位是KB
- cache:用于cache的内存大小,一般是文件系统使用,内存不够时系统会回收cache的内存,单位是KB
- si: 每秒换入的虚拟内存大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉
- so:每秒换出的虚拟内存大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉
- bi,每秒钟读的块个数
- bo:每秒种写的块个数
- in:每秒种中断的次数,包括时间中断
- cs:每秒的上下文切换的次数,包括进场上下文(进程调度)、内核空间和用户空间的切换,这个值要越小越好
- us:用户进程使用的CPU时间(%)
- sy:系统进程使用的CPU时间(%)
- id:CPU空闲时间(%)
- wa:等待IO所消耗的CPU时间(%)
- st:虚拟CPU等待实际CPU的时间的百分比
- 用法:
- iostat:io监测
- 用法
iostat [opt] 间隔(s) [次数]
,例如:iostat 1 10
- 用法
- mpstat:cpu监测
- sar:强大的系统性能收集工具
- 不加任何参数,显示最近一段时间内的CPU占有情况
- -b:显示最近一段时间的io信息
- -r:显示最近一段时间的内存信息
- -n DEV:统计网络吞吐量
- -n EDEV:统计网络错误率,如丢包
用户和权限
- chmod:修改权限
- chown:修改拥有者
- who:显示目前登录系统的用户信息
- last:显示最近的登录用户
- useradd/userdel:用户添加和删除
- passwd:用于更改使用者的密码
- groupadd:添加用户组
- id:显示用户id
- su:用户切换
- sudo:以root用户执行命令
开发命令
-
kill:发送信号
- 用法:
kill -[信号] pid
,默认是发送SIGTERM - -l:列出信号列表
标准信号是指信号值为1-32的信号,这些信号的含义由内核定义,而实时信号的值未33-64,这些信号的含义由用户来定义。它们最主要的区别为内核为实时信号维护了一个队列,这样可以保证每一次发送的信号都可以被执行,而标准信号当有多个同时发生时,不保证每次都会执行。补充:系统在发送信号的时候会唤醒相应线程,导致慢系统调用被中断。唤醒的线程具有不确定性。信号处理函数是在内核态向用户态切换的时候被调用,比如系统调用、线程切换
- 用法:
-
killall:发送信号
- 用法:
killall -[信号] 进程名
,默认是发送SIGTERM
- 用法:
-
strace:它主要是用来跟踪系统调用的,可以把程序调用的每一个系统调用、以及传入的参数都输出出来
- 用法:
strace [opt] 可执行程序
- -o:指定输出文件
- 用法:
-
pstack:跟踪进程的栈
- 用法:
pstack pid
- 配合
top -H -p
跟踪每一个线程 - 备注:pstack部分ubuntu里面的pstack命令用不了,原因是pstack里面的内容为乱码
- 用法:
-
ldconfig:是一个动态链装载,其实建立动态库软链接(soname->so)。其配置文件为
/etc/ld.so.conf
-
ldd:查看依赖库
-
readelf:elf文件解析器
- -h:查看头信息,如软硬件环境
- -d:查看依赖库
- -S:查看段头
- -s:查看符号
-
objdump:反汇编工具
- -d:反汇编test中的需要执行指令的那些section
-
LD_DEBUG:ld的一个环境变量工具,它功能很强大
- 用法:
LD_DEBUG=命令 进程名
,例如:LD_DEBUG=help ls
,LD_DEBUG=libs ls
- 用法:
-
addr2line:根据程序地址得到它所在的源文件以及行号
- 用法:
addr2line [opt] 可执行程序 地址
- -f:显示函数
- -e:可执行文件名
- 例如:
addr2line -f -e a.out 0x80485e2
- 用法:
-
diff:用于比较文件的差异
- -u:表示在比较结果中输出上下文的一些相同的行,默认为3行
- -r:递归
- -N:将不存在的文件作为空文件
- -w:忽略空格比较,默认就启用
- -B:忽略空行比较,默认就启用
- 例如:
diff -urNBw 文件1 文件2 > 文件.diff
-
patch:文件打补丁,就是依赖补丁文件来修改原始文件
- 用法:
patch [opt] < 补丁文件
- -pn:表示忽略路径中第n个斜线之前的目录,指明要修改的文件路径
- 补丁文件可以通过
diff
命令来生成
- 用法:
其他
-
变量处理
-
home目录下 .bashrc
一般用于指定别名 alias;例如 alias rm='rm -f'
-
快乐的命令行 - 宇哥
-
查看端口监听的4中方法(主要是netstat lsof fuser ss)
https://baijiahao.baidu.com/s?id=1731639448779751453&wfr=spider&for=pc
-
终端ctrl 快捷键
-
端口转发
- ssh把本机的端口转发到远程的端口 ssh -L 3306:127.0.0.1:3306 root@192.168.110.160
- 参考 https://blog.csdn.net/JineD/article/details/118254041
-
mysqldump
mysqldump -h 127.0.0.1 -umoresec -pH@CfMSj1qd@9 db_honeypot --tables tb_trojan_files > /tmp/trojan_files.sql
-
host路径
/etc/hosts
例子 192.168.110.110 harbor.xxxx.cn
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了