【shell】常用100个shell命令使用讲解

【shell】常用100个shell命令使用讲解

使用Shell脚本,你可以编写一个任务,然后让计算机去做,而你可以去忙其他的事情;你可以编写一个任务,让计算机重复执行,而不需要你每次在命令行手动输入;你可以更灵活地处理任务,比如管理用户,管理程序等。就这样,Shell脚本赋予你控制计算机的能力,在你的指尖下,一切尽在掌握。

【一】文件操作命令

以下是在Linux系统中操作文件的一些常用命令:

(1)ls:列出目录的内容

powershell 复制代码
ls /home

(2)cd:改变目录

powershell 复制代码
cd /home/user/Documents

(3)pwd:打印当前工作目录

powershell 复制代码
pwd

(4)cat:查看文件内容

powershell 复制代码
cat /etc/passwd

(5)more:分页查看文件内容

powershell 复制代码
more /var/log/syslog

(6)less:反向分页查看文件内容

powershell 复制代码
less /var/log/syslog

(7)touch:创建一个空文件或更改文件的访问和修改时间

powershell 复制代码
touch /home/user/newfile.txt

(8)cp:复制文件或目录

powershell 复制代码
cp /home/user/file.txt /home/user/Documents

(9)mv:移动或重命名文件或目录

powershell 复制代码
mv /home/user/file.txt /home/user/Documents/newfile.txt

(10)rm:删除文件或目录

powershell 复制代码
rm /home/user/unwantedfile.txt

(11)find:在文件系统中搜索文件或目录

powershell 复制代码
find / -name "*.log"

(12)grep:在文件中搜索具有特定模式的行

powershell 复制代码
grep "error" /var/log/syslog

(13)head:输出文件的开始部分

powershell 复制代码
head -n 10 /var/log/syslog

(14)tail:输出文件的尾部

powershell 复制代码
tail -n 20 /var/log/syslog

(15)sort:对文本文件的行进行排序

powershell 复制代码
sort /etc/passwd

(16)wc:计算字数、行数和字节数

powershell 复制代码
wc /var/log/syslog

(17)cut:从文件的每一行中剪切字节、字符和字段

powershell 复制代码
cut -d: -f1 /etc/passwd

(18)nano,vi,emacs:常用的文本编辑器

powershell 复制代码
nano /home/user/file.txt
vi /home/user/file.txt
emacs /home/user/file.txt

(19)paste:合并文件的行

powershell 复制代码
paste file1.txt file2.txt

【二】搜索命令

以下命令可以帮助你搜索文件或文本:

(1)find:在文件系统中搜索文件或目录

powershell 复制代码
find / -name "*.log"

(2)grep: 在文本文件中搜索决定的文本模式

powershell 复制代码
grep "error" /var/log/syslog

(3)locate: 基于文件名在数据库中快速找到文件

powershell 复制代码
locate myFile.txt

(4)which: 返回可执行文件的路径

powershell 复制代码
which java

(5)ack:特别为程序员设计的一款文件搜索工具。默认会忽略多数版本控制文件夹(如.git, .svn等)的内容

powershell 复制代码
ack "your_search_term"

(6)ag(The Silver Searcher):比ack更快的代码搜索工具,同样默认忽略 .git 等版本控制文件夹中的内容

powershell 复制代码
ag "your_search_term"

(7)whereis:此命令可用于查找二进制程序、源文件、手册页以及其他文件的位置

powershell 复制代码
whereis ls

(8)type:此命令用于确定某个命令是内部 shell 命令、可执行文件还是别名

powershell 复制代码
type pwd

(9)apropos:如果你只记得关于某个命令的部分信息,你可以使用 apropos 命令来搜索帮助手册中的命令描述

powershell 复制代码
apropos partition

(10)alias:如果你经常使用某些 Linux 命令,你可以使用 alias 命令为这些常用命令创建一个短名,以提升你的工作效率

powershell 复制代码
alias l='ls -al'

【三】目录操作命令

以下是在Linux系统中操作目录的一些常用命令

(1)mkdir:创建一个新的目录

powershell 复制代码
mkdir /home/user/new_directory

(2)rmdir:删除一个空目录

powershell 复制代码
rmdir /home/user/empty_directory

(3)tree:以树形结构列出目录的内容

powershell 复制代码
tree /home/user/

(4)du:估计文件和目录的磁盘使用空间

powershell 复制代码
du -sh /home/user/Documents

(5)df:显示磁盘使用空间

powershell 复制代码
df -h

【四】权限操作命令

在Linux系统中,文件和目录的访问可以通过权限操作命令进行控制

(1)chmod:更改文件或目录的权限

powershell 复制代码
chmod 755 /home/user/file.txt
表示设置文件的主用户有读,写和执行权限(rwx = 7),同组的用户和其他用户有读和执行权限(rx = 5)。

(2)chown:更改文件或目录的所有者和所属的组

powershell 复制代码
chown newuser:newgroup /home/user/file.txt
表示将/home/user/file.txt的所有者更改为newuser,所属的组更改为newgroup。 

(3)chgrp:更改文件或目录的所属组

powershell 复制代码
chgrp newgroup /home/user/file.txt
表示将/home/user/file.txt的所属的组更改为newgroup。

【五】网络操作命令

以下是在Linux系统中与网络相关的一些常用命令

(1)ping:发送网络请求以测试网络连接

powershell 复制代码
ping www.google.com

(2)ifconfig:显示或配置网络接口

powershell 复制代码
ifconfig eth0

(3)netstat:显示网络连接、路由表等网络状态信息

powershell 复制代码
netstat -ntlp
``

(4)ssh:远程登录或执行远程命令

```powershell
ssh user@remote_host

(5)scp:在本地和远程系统之间安全地复制文件

powershell 复制代码
scp /path/to/file user@remote_host:/remote/path/

(6)curl:获取网络资源

powershell 复制代码
curl www.google.com

(7)telnet:远程登录工具

powershell 复制代码
telnet remote_host 23

(8)nslookup:查询 DNS 名称服务器的记录

powershell 复制代码
nslookup www.google.com

(9)ftp:在本地主机和FTP服务器之间建立FTP连接

powershell 复制代码
ftp ftp_server

(10)wget:获取网络资源

powershell 复制代码
wget www.google.com -o google.html 

【六】进程和系统控制命令

以下是在Linux系统中管理进程和控制系统的一些常用命令

(1)ps:显示当前进程的状态

powershell 复制代码
ps aux

(2)top:动态显示运行中的进程

(3)kill:发送信号以终止进程

powershell 复制代码
kill 1234

(4)shutdown:关闭机器

powershell 复制代码
shutdown -h now

(5)reboot:重启机器

(6)logout:退出登录会话

【七】文本操作命令

在编写或处理文本文件时,下列命令可以帮助你完成各种复杂任务:

(1)echo:打印信息到终端。

powershell 复制代码
echo "Hello, World!"

(2)printf:格式化并打印信息。

powershell 复制代码
printf "Name: %s\nAge: %d\n" "Alice" 20

(3)sed:流编辑器,用于对文本文件进行特定的行处理和替换。

powershell 复制代码
echo "Hello, World!" | sed 's/World/Shell/g'

(4)awk:在文本文件中进行模式扫描和处理语言。

powershell 复制代码
echo -e "name\tage\nAlice\t20\nBob\t22" | awk '{if ($2 >= 21) print $1}'

【八】压缩与解压命令

以下命令主要用于管理和操作文件压缩及解压

(1)tar:创建、展开及管理tar包

powershell 复制代码
tar -cvf archive.tar folder

(2)gzip:用于文件压缩或解压

powershell 复制代码
gzip file

(3)gunzip:用于解压gzip压缩的文件

powershell 复制代码
gunzip file.gz

(4)zip/unzip:创建和解压zip格式的压缩包

powershell 复制代码
zip -r archive.zip folder
unzip archive.zip

【九】磁盘使用管理命令

管理和查看磁盘使用情况

(1)df:报告文件系统磁盘空间使用情况

powershell 复制代码
df -h

(2)du:估计并报告文件及文件夹的磁盘使用情况

powershell 复制代码
du -sh folder

(3)fdisk:对磁盘进行分区管理

powershell 复制代码
sudo fdisk -l

(4)hdparm:查看或修改SATA/ATA磁盘参数

powershell 复制代码
sudo hdparm -i /dev/sda

【十】包管理命令

(1)apt-get:APT包处理工具,用于处理包

powershell 复制代码
sudo apt-get install package

(2)dpkg:Debian包管理器

powershell 复制代码
sudo dpkg -i package.deb

(3)yum:高级软件包管理器,用于处理rpm包

powershell 复制代码
sudo yum install package

(4)rpm:RPM包管理器

powershell 复制代码
sudo rpm -i package.rpm

【十一】进程管理命令

查看和管理正在运行的进程

(1)ps:报告进程当前状态

powershell 复制代码
ps aux
 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 
root 1 0.0 0.4 225848 7836 ? Ss Nov10 4:05 /lib/systemd/systemd --system --deserialize 39 
root 2 0.0 0.0 0 0 ? S Nov10 0:00 [kthreadd] 
root 4 0.0 0.0 0 0 ? I< Nov10 0:00 [kworker/0:0H]

(2)top:动态显示当前耗费系统资源最多的进程

(3)htop:比top更友好的动态进程查看工具

powershell 复制代码
htop

(4)kill: 终止或者发送一个信号到指定进程

(5)pkill:条件地终止或者发送一个信号到指定进程

powershell 复制代码
pkill process_name

【十二】环境变量命令

查看或设置环境变量

(1)env:显示当前所有的环境变量

powershell 复制代码
输入:env
输出:
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    SHELL=/bin/bash
    PWD=/home/user

(2)set:显示当前shell所有的环境变量及函数

powershell 复制代码
 输入:set
输出:展示所环境变量以及函数

(3)export:设置或显示环境变量

powershell 复制代码
输入:
export VARName="Value"
echo $VARName
输出结果:
Value

【十三】系统信息发布相关命令

有时,你可能想要查看有关你的系统或硬件的信息。以下命令可以帮助你做到这一点

(1)uname:会打印操作系统的名称

powershell 复制代码
输入:
uname
输出:
Linux

(2)hostname:打印系统的主机名

powershell 复制代码
输入:
hostname
输出:
myhostname

(3)dmesg:打印或控制内核环形缓冲区

powershell 复制代码
输入:
dmesg | less

(4)df:展示文件系统的磁盘空间使用情况

powershell 复制代码
输入:df -h
输出:
    Filesystem      Size  Used Avail Use% Mounted on
    udev            962M     0  962M   0% /dev
    tmpfs           200M  4.3M  196M   3% /run
    /dev/sda1        30G  4.7G   24G  17% /

(5)free:展示系统中未使用和已经使用的物理和swap内存

powershell 复制代码
输入:free -h
输出:
                  total        used        free      shared  buff/cache   available
    Mem:           3.8G        487M        1.9G        122M        1.4G        3.0G
    Swap:            0B          0B          0B

(6)uptime:展示系统已经运行了多久,有多少用户正在登录,以及系统负载

powershell 复制代码
输入:uptime
输出:    16:14:30 up 43 min,  1 user,  load average: 0.34, 0.36, 0.40

(7)last:查看系统的重启和关机记录

powershell 复制代码
输入:last reboot

(8)w: 展示哪些用户正在登录

powershell 复制代码
输入:w
输出:    16:17:51 up  1:42,  1 user,  load average: 0.45, 0.47, 0.38
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    user     tty1                      14:36    1:42m  1.55s  0.06s w

(9)who:展示哪些用户正在登录,和w命令相似但信息更少

powershell 复制代码
输入:who
输出:    user     tty1         2022-01-28 14:36

(10)id:展示当前用户的UID、GID以及所在的组

powershell 复制代码
 输入:id
 输出:uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)

【十四】系统控制命令

在一些特殊情况下,你可能需要进行一些系统控制操作。以下命令可以帮助你做到这一点

(1)halt:关机

powershell 复制代码
输入:sudo halt

(2)reboot:重启系统

powershell 复制代码
输入:sudo reboot

(3)shutdown:关机或者重启,和上述两个命令一样,但是提供更多的选项

powershell 复制代码
关闭系统:sudo shutdown -h now
重启系统:sudo shutdown -r now

(4)passwd:更改用户密码

powershell 复制代码
更改密码:passwd

【十五】文件编辑器命令

Linux提供了多种命令行文本编辑器。以下这些可能是你需要知道的:

(1)vi/vim:vi是一个文本编辑器,而vim是vi的改进版,提供了更多的功能。

(2)nano:一个简单易用的命令行文本编辑器。

(3)emac:一个强大的文本编辑器,也是一个定制化的计算环境。

【十六】其他常用命令

(1)man:查看命令的帮助文档

(2)whatis:显示一个命令的简单描述

powershell 复制代码
输入:whatis ls
输出:    ls (1)               - list directory contents

(3)whereis:查找命令的二进制文件、源文件及帮助文档位置

powershell 复制代码
输入:whereis ls
输出:    ls: /bin/ls /usr/share/man/man1/ls.1.gz

(4)which:查找并显示给定命令的完整路径

powershell 复制代码
输入:which ls
输出:/bin/ls

(5)whoami:打印当前有效的用户名

powershell 复制代码
输入:whoami
输出:user

(6)date:显示或设置系统日期和时间

powershell 复制代码
输入:date
输出: Tue Dec 21 02:16:12 UTC 2021

(7)cal:显示日历

powershell 复制代码
输入:cal
输出:
       January 2022      
    Su Mo Tu We Th Fr Sa  
                      1  
    2  3  4  5  6  7  8  
    9 10 11 12 13 14 15  
    16 17 18 19 20 21 22  
    23 24 25 26 27 28 29  
    30 31                 

(8)alias:创建命令别名

(9)unalias:删除别名

(10)history:显示命令历史

(11)clear:清除屏幕或窗口内容

(12)watch:用于实时查看当前命令打印信息

powershell 复制代码
输入:watch -n 2 date
解释:watch`命令会每2秒运行一次`date`命令,并实时显示输出

【十七】案例

【1】发布时拉取压缩包的案例

powershell 复制代码
#!/bin/bash

# 设置根目录
BASE_DIR="/home/damp/server/services"

# 获取当前时间,格式为 YYYYMMDD_HHMM(年、月、日、时、分)
CURRENT_TIME=$(date +"%Y%m%d_%H%M")

# 以当前时间为父目录
TARGET_DIR="$BASE_DIR/bushu_$CURRENT_TIME"
TARGET_IND_DIR="$TARGET_DIR/server-ind"
TARGET_WEB_DIR="$TARGET_DIR/sub-ind"

# 创建目标目录
mkdir -p "$TARGET_IND_DIR"
mkdir -p "$TARGET_WEB_DIR"

echo "已创建目录: $TARGET_DIR"


# 进入目标目录
cd "$TARGET_IND_DIR" || exit
echo "进入目录: $TARGET_IND_DIR"

# 设置源目录
SOURCE_DIR="/home/damp/server/services/damp-xingye-ind/lib"
SOURCE_WEB_DIR="/home/damp/web/pages/subapp/sub-ind"

# 复制以damp开头且包含ind的jar文件到当前目录
cp "$SOURCE_DIR"/damp*ind*.jar "$TARGET_IND_DIR"
echo "后端包复制成功"

# 复制前端包
cp -rf "$SOURCE_WEB_DIR"/* "$TARGET_WEB_DIR"
echo "前端包复制成功"

# 返回到根目录,以便打包
cd "$BASE_DIR" || exit

# 打包当前创建的目录为 .tar.gz 文件
TAR_FILE="bushu_${CURRENT_TIME}.tar.gz"
tar -czvf "$TAR_FILE" "bushu_$CURRENT_TIME"


# 获取当前路径并输出完整的打包文件路径
FULL_PATH="$(pwd)/$TAR_FILE"
echo "已将目录 $CURRENT_TIME 打包为文件: $FULL_PATH"

# 打包完成后返回到根目录
echo  "打包文件父目录: $BASE_DIR"

【2】项目运行脚本案例

(1)service.sh

powershell 复制代码
#!/usr/bin/env bash
source /etc/profile
source ~/.bash_profile

projectName=$2
skywalking_service_ip=$3
current=`date "+%Y%m%d%H%M%S"`
skywalking_agent_dir="./skywalking/agent-msp/agent8.4"
# 脚本运行目录的父目录
serviceDir=$(cd $(dirname $0)/..; pwd)
logs="$serviceDir/logs"
# 进入脚本目录
cd $(dirname $0)

port=`cat ../conf/bootstrap.yml | grep "port" | cut -c 9-`
if [[ ${#port[@]} == 0 ]]; then
  echo "未找到端口"
  exit 1
elif [[ ${#port[@]} > 1 ]]; then
  echo "找到多个端口 $port"
  exit 1
fi

health_url="http://127.0.0.1:$port/actuator/health"
up_url="http://127.0.0.1:$port/actuator/serviceregistry?status=UP"
down_url="http://127.0.0.1:$port/actuator/serviceregistry?status=DOWN"

# 生成启动文件
if [ -n "$skywalking_service_ip" ]; then
  echo "sh ./service.sh start $projectName $skywalking_service_ip" > start.sh
  echo "sh ./service.sh stop $projectName $skywalking_service_ip" > stop.sh
  echo "sh ./service.sh restart $projectName $skywalking_service_ip" > restart.sh
else
  echo "sh ./service.sh start $projectName" > start.sh
  echo "sh ./service.sh stop $projectName" > stop.sh
  echo "sh ./service.sh restart $projectName" > restart.sh
fi
chmod +x start.sh
chmod +x stop.sh
chmod +x restart.sh

#if [ -n "$skywalking_service_ip" ]; then
#  if [[ $target =~ "dev" ]]; then
#    skywalking_service_ip="10.99.137.136:11800"
#  else
#    skywalking_service_ip="12.99.76.69:11800"
#  fi
#fi

start() {
  pid=`ps -ef | grep 'java' | grep $projectName | grep $port | awk '{print $2}'`
  if [ -n "$pid" ]; then
    echo "服务已存在,请停止后再启动"
        exit 1
  fi

  portLock=`netstat -untlp | awk '{print $4}' | grep ":$port$"`
  if [ -n "$portLock" ]; then
    echo "端口$port被占用,请停止占用端口的进程或者更换端口"
    exit 1
  fi

  mkdir -p "$logs/gc"

  JAVA_PATH="../../../jdk/jre/bin/java"
  if [ -f javaPath.txt ]; then
    JAVA_PATH=`cat javaPath.txt`
  fi

  JAVA_OPTS=""
  if [ -f jvmOpts.txt ]; then
    jvmOpts=`cat jvmOpts.txt`
    JAVA_OPTS="$JAVA_OPTS $jvmOpts"
  else
    JAVA_OPTS="$JAVA_OPTS -Xms256m -Xmx256m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:SurvivorRatio=8"
  fi
  javaVersion=`echo $( $JAVA_PATH -version 2>&1 |awk 'NR==1{gsub(/"/,"");print $3}')`
  if [[ $javaVersion == 11* ]]; then
    JAVA_OPTS="$JAVA_OPTS -Xlog:gc*:file=$logs/gc/gc-$current.log:time,uptime,level,tags"
  else
    JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$logs/gc/gc-$current.log"
  fi
  JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dump"
#  JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=$target -Dserver.port=$port"
  JAVA_OPTS="$JAVA_OPTS -Dserver.port=$port"

  JAVA_AGENT_OPTS=""

# -javaagent:/home/cloud/iast_agent.jar
# 如果为sit环境且存在iast的jar包,则在启动参数中加入调用iast_agent.jar的命令

#  case $target in
#    sit* | uat*)
#      if [ -x "/home/cloud/iast_agent.jar" ]; then
#        JAVA_AGENT_OPTS="$JAVA_AGENT_OPTS -javaagent:/home/cloud/iast_agent.jar"
#      fi
#    ;;
#    *)
#    ;;
#  esac

if [ -n "$skywalking_service_ip" ]; then
  JAVA_AGENT_OPTS="$JAVA_AGENT_OPTS -javaagent:$skywalking_agent_dir/skywalking-agent.jar"
  JAVA_OPTS="$JAVA_OPTS -Dskywalking.agent.service_name=$projectName -Dskywalking.collector.backend_service=$skywalking_service_ip"
fi

nohup $JAVA_PATH $JAVA_AGENT_OPTS $JAVA_OPTS -cp ../conf/:../../../driver/*:../../../ext/*:../lib/* com.hzyatop.xingye.Application --spring.config.additional-location=../../../conf/bootstrap.yml > /dev/null 2>&1 &

  sleep 5
  for ((i=0;i<90;i++))
  do
    curl -s -X GET ${health_url} > health
    health=`cat health | grep status | grep UP`
    if [ ${#health} -gt 10 ]; then
      break
  else
      pidNew=`ps -ef | grep 'java' | grep $projectName | grep $port | awk '{print $2}'`
      if [ -n "$pidNew" ]; then
        echo "Waiting for start ..."
        sleep 3
      else
        echo "Deploy Fail,项目启动失败,请到项目日志目录查看启动日志,默认日志目录为$serviceDir/logs"
        exit 1
      fi
    fi
  done

  sleep 5
  curl -s -X POST -H "Content-Type:application/vnd.spring-boot.actuator.v2+json;charset=UTF-8"  $up_url

  sleep 5

  if [ ${#health} -gt 10 ]; then
    echo "Deploy Success"
    exit 0
  else
    echo "Deploy Fail"
    exit 1
  fi
}

stop() {
  pid=`ps -ef | grep 'java' | grep $projectName | grep $port | awk '{print $2}'`
  if [ -n "$pid" ]; then
    echo "正在下线服务..."
  else
    echo "服务已下线"
        return 0
  fi

#  curl -s -X POST -H "Content-Type:application/vnd.spring-boot.actuator.v2+json;charset=UTF-8" $down_url
#  if [ -n "$skywalking_service_ip" ]; then
#    sleep 60
#  else
#    sleep 30
#  fi

  echo "尝试 kill -15 $pid 旧服务"

  kill -15 $pid
  sleep 5
  for ((i=0;i<20;i++))
  do
    pid=`ps -ef | grep 'java' | grep $projectName | grep $port | awk '{print $2}'`
    if [ -n "$pid" ];
      then sleep 1
    else
          echo "服务下线成功"
      return 0
    fi
  done

  pid=`ps -ef | grep 'java' | grep $projectName | grep $port | awk '{print $2}'`
  if [ -n "$pid" ]; then
    echo "尝试 kill -9 $pid 旧服务"
    kill -9 $pid
    sleep 5
  fi

  pidA=`ps -ef | grep 'java' | grep $projectName | grep $port | awk '{print $2}'`
  if [ -n "$pidA" ]; then
    echo "停止旧服务失败,请手工停止"
    exit 1
  fi
}

help(){
    echo "---------------sh service.sh [options] [project] [env] [port] [skywalking_service_ip]----------------"
    echo "---------------options: start | stop | restart ------------------------------------------------------"
    echo "---------------project: 工程名称,jar包前缀 ---------------------------------------------------------"
    echo "---------------env:环境  dev | sit | uat | prod-----------------------------------------------------"
    echo "---------------skywalking_service_ip:IP地址 --------------------------------------------------------"
}

# 操作命令
case "$1" in
  "start")
    start
  ;;
  "stop")
    stop
  ;;
  "restart")
    stop
    start
  ;;
*)
  help
  ;;
esac

(2)stop.sh

powershell 复制代码
sh ./service.sh stop damp-xingye-ind

(3)start.sh

powershell 复制代码
sh ./service.sh start damp-xingye-ind

(4)restart.sh

powershell 复制代码
sh ./service.sh restart damp-xingye-ind
相关推荐
m0_748254473 分钟前
记录一下在Win上搭建RustDesk
java
我要学编程(ಥ_ಥ)15 分钟前
初始JavaEE篇 —— 快速上手 SpringBoot
java·spring boot·spring·java-ee
摸鱼也很难15 分钟前
安全开发 JavaEE && 反射机制 && 对象 成员变量 构造方法 成员方法 && 攻击链
java·java-ee·java安全
Joseit19 分钟前
JavaEE:多线程进阶
java·java-ee
圣道寺22 分钟前
审计文件标识作为水印打印在pdf页面边角
java·前端·python·pdf·学习方法
customer0836 分钟前
【开源免费】基于SpringBoot+Vue.JS夕阳红公寓管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
半夏知半秋1 小时前
rust学习-函数的定义与使用
服务器·开发语言·后端·学习·rust
m0_748255651 小时前
怎么下载安装yarn
java
java156550579701 小时前
通俗易懂:RustDesk Server的搭建及使用
java
寒山李白1 小时前
MySQL union和union all
java·数据库·sql·mysql