Linux常用命令笔记

Linux常用命令

在线帮助

  • help:shell的内置命令比如cd alias等,内置命令是找不到对应的可执行程序的,它是被shell解析器直接处理的
  • man:普通命令
    • 查看简单的帮助可以直接使用命令 --help/-help,比如grep --help
    • 另外,man还可以查看配置文件信息,比如man resolv.conf

文件管理

文件和目录

  • 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-3cut -c -3cut -c 8-cut -c 1-3,5-7
    • -d:指定分割符
    • -f:指定取哪一个域,例如echo "123-456-789" | cut -d "-" -f 3
  • 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:]
  • 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:保存退出
  • 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 -antpnetstat -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
  • 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: 显示时间
  • 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命令来生成

其他

  1. 变量处理

    https://www.cnblogs.com/xzlive/p/13395492.html

  2. home目录下 .bashrc

    一般用于指定别名 alias;例如 alias rm='rm -f'

  3. 快乐的命令行 - 宇哥

    http://billie66.github.io/TLCL/book/

  4. 查看端口监听的4中方法(主要是netstat lsof fuser ss)

    https://baijiahao.baidu.com/s?id=1731639448779751453&wfr=spider&for=pc

  5. 终端ctrl 快捷键

  6. 端口转发

  7. mysqldump

    mysqldump -h 127.0.0.1 -umoresec -pH@CfMSj1qd@9 db_honeypot --tables tb_trojan_files > /tmp/trojan_files.sql

  8. host路径
    /etc/hosts
    例子 192.168.110.110 harbor.xxxx.cn

posted @   hovinlu  阅读(108)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示