文章目录

  • 1. linux入门
    • 1.1 实用程序
    • 1.2 了解系统状态
  • 2. 正则表达式
    • 2.1 元字符
    • 2.2 正则表达式拓展
    • 2.3 常用命令
  • 3. 文件编辑
    • 3.1 vim常用操作
    • 3.2 常见问题
  • 4. 目录管理
    • 4.1 系统目录
    • 4.2 文件通配符
    • 4.3 常用命令
  • 5. 文件管理
    • 5.1 运行时获取信息
    • 5.2 文件系统
    • 5.3 链接
    • 5.4 可执行文件
    • 5.5 权限
  • 6. Shell
    • 6.1 shell
    • 6.2 bash启动方式
    • 6.3 别名
    • 6.4 重定向和管道
    • 6.5 设置
    • 6.6 常用命令
    • 6.7 环境变量
    • 6.8 替换
    • 6.9 语法
      • 6.9.1 变量
      • 6.9.2 元字符
      • 6.9.3 条件判断
      • 6.9.4 表达式运算`expr`
      • 6.9.5 循环结构
      • 6.9.6 其他
      • 6.9.5 循环结构
      • 6.9.6 其他
  • 7. 其他资料

1. linux入门

1.1 实用程序

  1. man:查询联机手册

    man (section) name    # section:1命令,2系统调用,3库函数,5配置文件(因为可能有同名的)
    man -k regexp   # 用正则匹配
    
  2. date:获取时间和日期

    date "+%Y-%m-%d %H:%M:%S Day %j"  # 格式控制字符串必须以+号开头
    
  3. bc:计算器

    bc -l  # 类似于ipython的交互式界面
    
  4. 重定向

    ls -l > filelist.txt   # 输出重定向
    sort < filelist.txt      # 输入重定向
    ls -l >> filelist.txt # 追加内容
    
  5. 管道

    ls -l | sort # 将ls的stdout作为sort的输入
    
  6. more, less:逐屏显示(文件或输出),less可以向上翻页但是more不行

    less -Nm    # fb翻页,du翻半页,gG第一/最后一行,v编辑,/?向下或上搜索字符串(nN上一个下一个)
    
  7. cat:列出文件内容;od:逐字节打印

    cat -n test.txt
    cat > file.txt # 没有命令行参数,从stdin获取输出,直到Ctrl-D,将内容写入文件
    
  8. head, tail

    head -n 20 file.txt   # 显示前20行
    hand -n -20 file.txt    # 除了尾部20行,其余算头并显示
    tail -f file.txt        # 实时打印文件尾部追加的内容
    
  9. tee:三通,将stdin输出到stdout,同时写入文件中

    ls -lh | tee out.txt
    
  10. wc

    • -w:字计数
    • -l:行计数
    ps -ef | wc -l    # 查看当前进程总数
    ls | wc -w # 查看当前文件夹下文件个数
    
  11. sort

    • -r:降序
    • -o:结果覆盖原文件
    • -n:按照数字而非字符串排序
  12. tr str1 str2:替换字符串,将stdin中str1的字符替换为str2的字符,然后标准输出

    cat file.txt | tr '[a-z]' '[A-Z]'   # 将file.txt文件中小写字母替换为大写字母
    
  13. unique:筛选文件中重复的行

1.2 了解系统状态

  1. who:确定谁在系统中

    tty # 输出当前终端设备文件名
    who am i    # 输出当前终端上的登录用户
    
  2. uptime:已开机时间

    当前时间 开机时间 用户数量 CPU负载(1,5,15分钟内有几个进程在等待调度运行)
    
  3. top:列出资源占用排名靠前的进程

    top -d 1 -n 5   # delay=1, 运行5次
    当前时间 开机时间 用户数量 CPU负载
    任务(进程)
    PID USER PR NI VIRT进程虚拟地址空间 RES驻留内存数(占用物理内存数) SHR共享内存数 %CPU %MEM TIME+占用CPU的时间
    
  4. ps:查询进程状态,列出当前终端上启动的进程

    • -e:列出系统中所有进程
    • -f:以full格式列出
    • -l:以long格式列出
    UID PID PPID C(最近几秒占用CPU情况) PRI优先级 SZ进程逻辑地址空间 WCHAN进程在何处睡眠 TTY终端名字 TIME累计占用CPU时间 CMD
    
  5. free:了解内存使用情况

    内存总量 已使用内存 空闲内存 共享内存 缓冲使用的内存 现在实际可以使用的内存
    
  6. vmstat:了解系统负载

    vmstat 1 -Sm # 每一秒更新一次
    最关注的是cpu使用率,us=user, sy=system, id=idle, wa=wait for disk IO
    

2. 正则表达式

2.1 元字符

​ 正则表达式与文件名通配符规则不同

  • .:匹配任意单字符

  • *:匹配前面单字符0次或任意多次

  • [:方括号内的字符为集合,表示其中任意一个,方括号内的. * \ 表示自己,[ ][ ]表示左右中括号的两个字符,-表示一个区间(如果在最后则不表示区间)

  • \

  • ^:在中括号内时开头表示补集,[^a-z]表示匹配任一非小写字母(如果不在中括号内开头则不表示补集),在正则表达式开头时表示首部的限制(不在首部则不表示此限制)

  • $:在正则表达式尾部时表示尾部的限制(不在尾部则不表示此限制)

2.2 正则表达式拓展

  • ():分组
  • |:逻辑或
  • +:匹配前面单字符1次或任意多次
  • ?:匹配前面单字符0次或1次
  • {m,n}:匹配前面的单字符m到n次
  • {m}:匹配前面的单字符m次
  • {m,}:匹配前面的单字符至少m次
  • \d:数字, \D:非数字,\s:空白符(包括换行), \S:非空白符(不包括换行), \w:数字字母下划线(相当于 [A-Za-z0-9_])

2.3 常用命令

  1. grep -n 模式 文件名列表

    • -F:按字符串搜索(同fgrep)

    • -G:基本正则语法,默认

    • -E:拓展正则语法(同egrep)

    • -n:显示行号

    • -o:提取匹配的部分

      grep -n 'main' *.cpp  # 从文件中筛选
      ps -ef | grep -n '^zhang' # 从输入中筛选
      
  2. sed:利用正则表达式处理文本(替换、删除等)

    sed 's/^zhang/ZHANG/g' # 将开头为zhang的替换为ZHNAG,s表示替换,用/划分不同的部分,g表示如果有多个符合则全部替换
    
  3. awk:逐行扫描进行条件判断,满足条件执行动作

    awk入门教程 - 阮一峰

3. 文件编辑

3.1 vim常用操作

vim常用操作

3.2 常见问题

  1. vim编辑结束后Ctrl+S:Linux进入了流量控制状态,Ctrl+Q流量控制解除

  2. Ctrl+Z导致进程挂起(进程还在但是处于Stopped状态):使用jobs命令查看当前Stopped的进程,使用%1将1号作业恢复到前台运行

  3. backspace无法使用:Ctrl+H或者stty erase ^H

  4. Linux和Windows的文本文件存储格式不同(行尾不同),dos2unix/unix2dos转换

4. 目录管理

4.1 系统目录

  • /etc:配置文件
  • /tmp:临时文件
  • /var:系统运行时要改变的数据(比如日志)
  • /bin:系统常用命令(eg:ls、cp、cat)
  • /usr/bin:常用命令(eg:ssh,ftp,make, gcc,git)
  • /sbin, /usr/bin:系统管理员专用命令
  • /dev:设备文件
  • /usr/include:C语言头文件
  • /lib, /usr/lib:C语言链接库文件,静态链接库(.a文件)和动态链接库(.so文件,共享的目标代码,多个.o文件的集成,广泛使用)
    • ldd:用来查看程序运行时所需的共享库

更详细的blog:LINUX 文件系统都是什么鬼

4.2 文件通配符

​ command后面跟着的是参数或文件通配符,shell进行替换,而正则表达式不进行替换

  1. 元字符

    • *:匹配任意长度的文件名字符串(包括空串),当.作为开头或是包含/时,必须显示匹配
    • ?:匹配任一单字符
    • []:集合,匹配其中任一字符
    • ~:当前用户主目录
    • .:当前目录
    • /:根目录,斜线/,反斜线\

4.3 常用命令

  1. ls

    • -F:如果是目录,名字后面带/,如果是可执行文件,名字后面带*,如果是链接文件,名字后面带@,普通文件无标记(现在文件都用颜色表示)

    • -l

      第一个字符为文件类型,-普通文件,d目录文件,l符号链接文件,c字符设备文件,b块设备文件,p管道文件

      访问权限(文件所有者、同组用户、其他用户)

      文件链接数

      文件所有者名字和组名

      文件大小(单位为字节,如果是目录则列出目录表大小不是目录大小)

      最后修改日期和时间,文件名

    • -d:列出目录自身的信息

    • ls *:递归一层列出

    • -a:列出所有文件

  2. cp:复制

    • cp file1 file2:将file1复制到file2(如果file2不存在则创建,如果存在则覆盖)
    • cp -r dir1 dir2:如果dir2不存在则复制dir1并改名为dir2,如果dir2存在则将dir1复制到dir2下
    • cp file1 file2 dir:将file1,file2复制到dir目录
    • -u:增量拷贝,便于备份目录
  3. mv:移动

    • mv file1 file2:相当于将file1改名为file2
    • mv file1 file2 dir:要求dir存在
    • mv dir1 dir2:如果dir2不存在则相当于改名,如果dir2存在移动dir1到dir2下
  4. rm

    -r递归删除, -i删除前确认, -f强迫删除只读文件

    --后参数被shell认为是处理对象而不是命令选项

  5. mkdirrmdir

    • -p:自动创建路径中不存在的目录
  6. touch:将文件最后一次修改时间设置为当前时间(如果文件不存在,则创建文件)

  7. find:遍历目录树, find 查找范围 条件 动作

    • 条件

      • -name wildcard:文件名与wildcard匹配,wildcard加单引号,wildcard可以是正则表达式
      • -regex pattern:整个路径名与pattern匹配
      • -type:f普通文件,d目录,l符号链接文件,c(char),b(block),p(pipe)
      • -size +-n :指定文件大小(大于+,默认等于,小于-),单位是c(字符),b(块,512字节),k,M,G,默认b
      • -mtime +-n:文件是最近n天内修改的
      • -newer file:文件修改时间比file还新
      • !:非,前后要有空格, 默认是与
      • \( 条件1 -o 条件2 \):或,因为()是shell的特殊符号
    • 动作

      • -print:打印查找的文件路径名

      • -exec:对查找到的目标执行命令,在-exec之后和分号之前作为一条命令,{}表示文件路径名

        find . -type f -name 'utils.*' -exec ls -lh {} \;
        find . ! -newer file.txt \( -name '*.c' -o -name '*.h' \) -exec grep -n -- --help {} /dev/null \;   # 查找早于file.txt的.c或.h文件,并且在检索到的文件(用{}表示)中查找包含--help的内容,通过grep添加两个文件({}和/dev/null)来显示查找到的内容是在哪一个文件中
        
      • -ok:类似-exec,在执行命令前需要确认

  8. xargs:批量处理文件,常用于先列出文件然后再xargs批处理

    find . -name '*.c' -print | grep -n --help # 每找到一个文件都要创建一个进程来grep
    find . -name '*.c' -print | xargs grep -n --help  # 找到所有文件后,只创建一个进程来批处理(grep)这些找到的文件,将标准输入追加到参数列表后面,效率高
    
  9. tartar c/t/x vzj f my.tar filelist

    1. 必选参数

      • ctar cvf my.tar filelist将filelist中文件打包到my.tar中
      • ttar tvf my.tar查看my.tar中有什么文件
      • xtar xvf my.tar解包,此时不需要压缩算法
      • f:指定设备文件名(即.tar文件)
    2. 可选参数
      • v:verbose
      • z:gzip压缩,快,常gz后缀
      • j:bzip2压缩,压缩率高,常bz2后缀
  10. gzip, gunzip; bzip2, bunzip2:压缩解压缩

  11. dudu -d 1 -h显示文件大小,类似windows

    • -d:递归深度

5. 文件管理

5.1 运行时获取信息

  1. 配置文件
  2. 环境变量:env打印当前环境变量,PATH是可执行文件的查找路径,CLASSPATH是类库查找路径,使用export来添加环境变量
  3. 命令行参数
  4. 交互式键盘输入

5.2 文件系统

  1. 文件系统命令

    • mkfs:创建文件系统

    • mount, umount:安装、卸载文件系统

    • df :查看文件系统空间空间

  2. 文件系统结构

    • 引导块:启动系统

    • 专用块:管理快(或超级块),存放文件系统的管理信息

    • i节点区:每个文件一个i-node,包括索引、指针和文件信息

    • 文件存储区:目录表(文件名和i-node指针)和文件内容

5.3 链接

  1. 硬链接:目录项指定的“文件名 i-node”映射关系

    ln file.txt lnk    # 创建file.txt的硬链接lnk,删除lnk时对应i-node的link数减一,仅限于同一个文件系统中的普通文件
    
  2. 软链接(符号链接):创建一个“符号链接文件”,里面存储路径(如果时相对路径,则相对于该符号链接文件)

    ln -s file.txt lnk # 创建file.txt的软链接lnk
    

5.4 可执行文件

  1. 程序文件:二进制
  2. 脚本文件:第一行指定解释程序,在运行中由解释程序创建一个进程进行解释执行

5.5 权限

  1. 目录权限:实际上是对目录表的权限,无读权限则无法ls,无写权限则无法创建、删除文件等(但文件可能可以修改),执行权限表示分析路径名中可以检索该目录
  2. chmod [ugoa][+-=][rwxst] file
    • u=user, g=group, o=other, a=all,

6. Shell

6.1 shell

​ 命令解释器,交互式方式下替换、转义、内部外部命令,非交互式方式下编写脚本程序批量处理

6.2 bash启动方式

  1. 注册shell,启动时自动执行

    (用户级):~/.bash_profile

    (系统级):/etc/profile

    退出时,自动执行

    (用户级):~/.bash_logout

    (系统级):/etc/bash.bash.logout

  2. 交互式shell,启动时自动执行

    (用户级):~/.bashrc

    (系统级):/etc/bash.bashrc

  3. 脚本解释器:

    • 新创建子进程,在子进程中执行脚本

      • bash < test.sh:无法携带命令行参数
      • bash test.sh ..-x参数便于调试和观察
      • chmod u+x test.sh; ./test.sh ..
    • 在当前shell中执行
      • chmod u+x test.sh; . test.sh ..

6.3 别名

在.bashrc中添加一个别名

alias lls = "ls -lh"

6.4 重定向和管道

  1. 输入重定向

    • <:从file中获取输入

    • <<:从shell脚本中获取输入

      cat << WORD
      Now: `date`
      WORD
      # WORD是定界符,之间内容进行替换并执行获取输入cat << 'WORD'
      Now: `date`
      WORD
      # 当定界符有单引号时,之间内容不做替换
      
    • <<<:从命令行获取信息作为标准输入

      base64 <<< 'test'
      
  2. 输出重定向

    • >:覆盖,stdout重定向

    • >>:追加内容到文件,stdout重定向

    • 1>:将句柄1(stdout,标准输出)重定向

    • 2>:将句柄2(stderr)重定向

    • 2>&1:将标准输出(stdout)和标准错误(stderr)保存到同一个文件,放在命令最后

      command > log.txt 2>&1
      # command 将command的stdout和stderr输出到同一个文件log.txt
      command >> log.txt 2>&1
      # command 将command的stdout和stderr内容追加到同一个文件
      
      # >和>>可以混用,比如正确的结果追加到right.txt,错误的结果重定向覆盖到wrong.txt
      command 1>>right.txt 2>wrong.txt
      
    • /dev/null:黑洞文件

    • 管道|将前一命令的stdout作为后一命令的stdin,同样可以使用2>&1

      gcc test.c > test.err 2>&1 | less
      
  3. 管道:|

    • 注意管道符连接的多个命令是并行执行的,有时命令会阻塞等待标准输入

      sleep 5 | sleep 5 # shell会同时启动两个进程,执行结果是sleep 5秒
      

6.5 设置

  1. set -u:当引用一个未定义的变量时,产生一个错误
  2. set +u:当引用一个未定义的变量时,视为一个空字符串
  3. set -x:打印出shell替换后的命令和参数,常用于观察命令经过shell替换后哪里错误
  4. set +x:取消set -x

6.6 常用命令

  1. echo:打印命令行参数

    • -e:转义打印
  2. printf:类似C语言

    printf "home:%s\n" $HOME
    
  3. read:获取用户输入

6.7 环境变量

子进程继承父进程的环境变量,以后再不影响

  • 使用export将局部变量转为环境变量
  • PATH:命令查找路径,不要将.放入PATH,PATH以:分隔路径
  • env:列出环境变量
  • set:列出环境变量、局部变量、函数定义

6.8 替换

  1. 文件名生成替换:遵循文件通配符规则

  2. 变量替换:$var

  3. 命令替换:以命令的stdout进行替换, ``````````(反撇号)或者 $()

    now = `date`
    now = $(date)
    

6.9 语法

6.9.1 变量

  • shell先替换,再执行
  • 变量都是字符串,可以修改
  • 赋值语句等号两边不能有空格(否则会认为是参数),右侧字符串如果有特殊字符需要用双引号
  • 引用变量:$var${var},引用未定义变量认为是空字符串
  • 内部变量:位置参数
    • $0, $1, $2:第一个命令行参数(脚本文件本身的名字),第二个命令行参数,第三个命令行参数
    • $#:命令行参数的个数
    • $*:相当于"$1 $2 $3 ..."将整体作为一个参数
    • $@:相当于"$1" "$2" "$3" ... 将变长的命令行参数传递给其他命令
    • shift n :位置参数的移位操作,位置参数顺次向前移动n个位置

6.9.2 元字符

  • 空格,tab:命令行参数分隔符

  • 回车:运行命令

  • ><|:重定向与管道(还有||

  • ;:一个内多个命令(还有;;

  • &:后台运行(还有&&

  • $:引用变量

  • `````````:反撇号用于命令替换,出现元字符注意转义,可以嵌套但要转义\\\`

    year=`expr \`date '+%Y'\` - 10 `
    
  • 文件通配符:*[]?

  • ():用于定义shell函数或在子shell中执行一组命令

  • ":除了$和`````````,其他的特殊字符都不转义,里面只能有四种转义:\"\$\` 、 `\`

  • ':都不转义,中间不能有单引号(可以拆分成多段)

    在*.conf文件中匹配'192.168.x.x'结尾
    pattern:  '192\.168\.[0-9.]*'$
    grep \''192\.168\.[0-9.]*'\''$' *.conf    # 使用单引号
    grep "'192\\.168\\.[0-9.]*'\S" *.conf   # 使用双引号
    grep \'192\\.168\\.\[0-9.]\*\'\$ *.conf   # 只使用转义,不被引号包括的字符串
    

6.9.3 条件判断

  1. 逻辑判断

    • 命令的返回码是0,则命令执行成功

    • $?输出上一个命令的返回码,用管道连接时以最后一个命令的返回码为准

    • && ||:与,或,可以短路

      cmd1 && cmd2  # cmd1执行失败就不执行cmd2
      cmd1 || cmd2    # cmd1执行成功就不执行cmd2
      
  2. 检测命令:test[(是一个命令而非词法符号,最后一个参数必须是])

    • 文件特性检测:

      • -f普通文件,-d目录文件,-r可读,-w可写,-x可执行,-ssize>0

        test -r myfile.txt && echo readable
        [ -r myfile.txt] && echo readable
        
    • 检测命令是否执行成功

    • 比较

      • 字符串比较:shell中有三种字符串

        str1 = str2str1 != str2等号两边一定要有空格

      • 整数的比较

        -eq=,-ne!=, -gt>, -lt<, -ge>=, -le<=

      • 逻辑运算

        ! 非,-o或, -a

  3. 命令组合:经常命令检测之后执行多条命令

    • {}:在当前shell中执行,命令组合最后有分号

      [ -d $DIR ] && { cd ..; ls -l; ps; } | less
      
    • ():在子进程中执行,命令组合最后无分号

      [ -d $DIR ] $$ ( cd..; ls -l; ps ) | less
      
  4. 条件结构

    if conditionthen list
    elif conditionthen list
    elselist
    fi
    

6.9.4 表达式运算expr

  • 运算类型:(),五种算术运算,六种关系运算,& |与或, :正则
  • 注意运算符的转义
  • :正则:expr str : pattern
    • 从最左字符开始尽量匹配,最终输出匹配的长度
    • 使用的是基本正则语法,但是\+ \? \|表示匹配一个或多个,匹配0个或1个,或(两端任选其一)
    • 使用\( \),将其中匹配的内容提取出来

6.9.5 循环结构

  1. while

    while conditiondo list
    done
    
  2. for

    for name in word1, word2, ...do list
    done# 或者
    for namedo list
    done
    # 相当于
    for name in $1, $2, ...do list
    donefor i in `seq 1 255` # 相当于for i in range(1,256)
    
  3. break n:跳出n层循环

  4. continue

  5. exit val:结束脚本执行,返回值为val

6.9.6 其他

  1. eval:将参数先进行变量替换或加工,然后将结果作为程序来执行

.9.4 表达式运算expr

  • 运算类型:(),五种算术运算,六种关系运算,& |与或, :正则
  • 注意运算符的转义
  • :正则:expr str : pattern
    • 从最左字符开始尽量匹配,最终输出匹配的长度
    • 使用的是基本正则语法,但是\+ \? \|表示匹配一个或多个,匹配0个或1个,或(两端任选其一)
    • 使用\( \),将其中匹配的内容提取出来

6.9.5 循环结构

  1. while

    while conditiondo list
    done
    
  2. for

    for name in word1, word2, ...do list
    done# 或者
    for namedo list
    done
    # 相当于
    for name in $1, $2, ...do list
    donefor i in `seq 1 255` # 相当于for i in range(1,256)
    
  3. break n:跳出n层循环

  4. continue

  5. exit val:结束脚本执行,返回值为val

6.9.6 其他

  1. eval:将参数先进行变量替换或加工,然后将结果作为程序来执行

7. 其他资料

蒋砚军, 高占春. 实用 UNIX 教程[M]. 清华大学出版社, 2005.
Linux开发环境及应用
W3Cshcool;UNIX 入门指南
recommand: linux checklist from PLCT

linux笔记:MOOC Linux开发环境及应用相关推荐

  1. [Linux]在Linux上部署Java开发环境笔记(一)-- 补充:Linux下如何手动设置IP及配置DNS服务

    在Linux上部署Java开发环境笔记(一) -- 补充:Linux下如何手动设置IP及配置DNS服务 2010/06/17 有的Linux系统会有网络设置的图形操作界面,比如"红旗Linu ...

  2. linux python qt 安装目录,Linux 下QT调用Python库文件 以及Linux 安装Python3.8开发环境 问题...

    最近想运用linux系统下Qt来实现c++ 与python的混合编程,linux系统会自带python2.7版本或者python3.5版本(深度linux). Qt调用python文件需要在pro文件 ...

  3. 2021-01-13 Linux下安装lua开发环境 Ubuntu

    Linux下安装lua开发环境 Ubuntu 1.下载lua包并解压 wget -c http://www.lua.org/ftp/lua-5.3.5.tar.gz tar zxvf lua-5.3. ...

  4. GCC编译器简明教程(Linux下C语言开发环境的搭建)

    GCC编译器简明教程(Linux下C语言开发环境的搭建) 市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核.桌面环境(例如GNOME.KDE.Unity等)和各种常用的必 ...

  5. linux中搭建java开发环境

    今天试着在Linux下面搭建java开发环境,现总结一下具体步骤. 1.JDK的安装 执行下面命令安装JDK(首先创建/opt/java目录) tar -xvf jdk-7u9-linux-i586. ...

  6. LibOpenCM3(一) Linux下命令行开发环境配置

    目录 LibOpenCM3(一) Linux下命令行开发环境配置 LibOpenCM3(二) 项目模板 Makefile分析 LibOpenCM3(三) .ld文件(连接器脚本)和startup代码说 ...

  7. linux 下51单片机开发环境搭建

    linux 下51单片机开发环境搭建(arch linux) 编译sdcc 软件: sdcc 命令:sdcc file.c 得到一堆文件需要( .inx) 命令: packihx file.inx & ...

  8. Linux上的集成开发环境

    随着Linux的逐渐兴起,已经有为数众多的程序在上面驰骋了,许多开发环境(Development Environment)也应运而生.好的开发环境一定是集成了编辑.编译和调试等多项功能并且易于使用.本 ...

  9. 【Linux Mint 深度学习开发环境搭建】开发软件安装

    系列文章目录 第一章 Linux mint 深度学习开发环境搭建之Nvidia显卡相关软件安装 第二章 Linux mint 深度学习开发环境搭建之开发软件安装 第三章 Linux mint 深度学习 ...

  10. Linux/Mac/Windows - 搭建开发环境的变化记录

    1.应用场景 主要是记录和回顾个人 Windows / Linux / Mac下搭建开发环境的变化,同时参考搭建部署生产环境[Linux]. 2.学习/操作 1. 文档 设置 Linux/Mac 本地 ...

最新文章

  1. PCL点云特征描述与提取(4)
  2. linux系统ip策略筛选器,在Linux下基于路由策略的IP地址控制
  3. 【Interfacenavigation】选择时间/日期组件(34)
  4. git commit --amend 改写提交
  5. Hibernate中启用日志
  6. css样式之背景图片
  7. Spring Security——OAuth 2.0 Client自动配置源代码分析
  8. pythoni屏幕连点_【Flutter组件】仿抖音双击点赞弹出爱心效果(可连点)
  9. html5media 网页播放视频,html5media 在IE8播放视频黑屏
  10. Java 算法 瓷砖铺放
  11. Machine Learning Mastery 博客文章翻译:XGBoost
  12. mysql库表的触发器表名_MySQL 触发器,实现不同数据库,不同表名,表结构不同,数据实时同步...
  13. markdown的基础语言
  14. Trustzone OP-TEE 在QEMU平台上的编译、运行与测试
  15. 使用mJS进行物联网嵌入式脚本和开发的新方法
  16. 微信小程序把阿里icon变为组件
  17. vue实现PS效果,鼠标拖拽指令、十字辅助线、鼠标选点、打印页面指定内容、生成随机id、颜色选择器、div上输入文字(类似QQ截图输入文字)、vue图片上传转base64...
  18. layui实现表格合并单元格,设置不同背景色
  19. python pip 安装失败问题解决
  20. mysql 优化总结

热门文章

  1. android判断手机号码规则
  2. 【Electron Playground 系列】窗口篇
  3. VODTOPODO%POJO
  4. python保存csv_python将字典保存为csv
  5. 二十三、JAVA中的Set和Map
  6. 面向计算机网络设备的运维服务应属于,管理信息系统模拟试题及答案
  7. 2020出行之变(三):智能交通的星罗棋布
  8. Autodesk Moldflow Adviser 2019 永久使用
  9. 无需任何软件,一条指令将其他格式视频转成MP4格式
  10. excel插入html文本,带有标签的HTML文本,用于Excel单元格中的格式化文本