zoukankan      html  css  js  c++  java
  • Linux C++ 开发常用工具,常用指令工作手册

    http://blog.csdn.net/doc_sgl/article/details/47205779 配置强烈推荐使用
    vim常用:
    :set nu显示行数 :set mouse=a 鼠标滑动屏幕,:set ic :set noic 忽略不忽略大小写 /word_to_searchc c表示忽略大小写 c小写忽略,C大写不忽略
    比较两个文件不同:
    vim -d file1 file2; 然后使用“[c”跳转到前一个不同点,使用“]c”跳转到后一个不同点,可以使用Ctrl+w之后,左右上下进行替换。
    如果已经打开了文件file1的情况下,可以在file1中输入:vert diffsplit file2,如果没有用vert命令,diffsplit则会分上下两个窗口。
    跳转到上次修改的位置:g;
    G文件结尾,gg文件开头
    跳转到局部变量的定义处:gD
    打标签,调到指定的标签出:ma 然后`a跳转到打好的标签a处,a可以是a-z。
    :file newname 给文件另存为newname
    //如果代码中出现tab为8个空格,可以使用如下三条指令设置,将以保存的文件的TAB替换为4个空格
    :set ts=4
    :set expandtab
    :%retab!

    水平窗口分割:split (sp);垂直窗口分割:vsplit (vs) 在窗口之间进行切换: Ctrl + w
    Vim编辑下Ctrl+s快捷键是锁定屏幕,可以通过Ctrl+q解锁

    :Ex 开启目录浏览器,可以浏览当前目录下的所有文件,并可以选择
    :Sex 水平分割当前窗口,并在一个窗口中开启目录浏览器
    q: 进入命令历史编辑
    q/ 可以进入搜索历史编辑
    运行:r sh,在vim界面,运行sh脚本,exit退出会回到vim界面

    vim和命令执行交互:
    打开VIM下直接执行命令:在vim界面输入”:!ls“
    把当前命令的执行结果读入VIM中":read !ls""
    把当前VIM文件中的内容转换为命令输出到命令行:":write !sh" 后者":write !cmd"
    :history 可以显示刚才在命令窗口输入的历史命令

    查找/word,通常的查找,或者/<word> 字母全匹配查找,可能不分大小写,除非设定了。 然后n向下,N向上 或者esc 按#号查看光标所在的单词
    :up 或者 :update 与 :w 类似,但仅在文件有改动才会保存 :q!取消保存
    Ctrl+n,Ctrl+p补全查找

    复制黏贴 Nyy,或者Ndd,然后按p,光标之前用大写(光标后面的N行复制或者剪切)
    多行的时候,在某个位置输入ma(打标签),在两位一个位置输入y'a,或者d'a,然后在任意位置输入p即可
    I:在当前行首插入,A:在当前行尾插入,o当前行下面插入一行,O:在当前行上面插入一个新行
    y"+ 从一个文件复制到另外一个文件复制后加上"+,黏贴前加上"+即可, "+p; 如果不成功,可以通过vim --version | grep clip*查看缺少哪些工具,
    然后可以通过需要安装相对应的工具,sudo apt-get install vim vim-scripts vim-gtk vim-gnome

    如果黏贴中出现排版错乱,可以使用“ :set paste” 不用之后,取消,使用“ :set nopaste”;

    VIM下C-v visual模式下:
    = 自动格式化代码 yy拷贝,dd剪切,yw拷贝光标后单词,或者选定后拷贝;zf,zo折叠打开,
    I+注释符号+按两次Esc,注释代码,取消先Ctrl+v,选中,按d; a光标的下一个输入, %定位到{对应的位置}

    移动光标,按zz,会获得光标置中,结合hjkl左右上下,大写ZZ保存并退出
    Ctrl+f/+b 前后一屏幕翻动浏览
    Ctrl+d/+u 前后半屏幕翻动浏览, H,M,L光标移动 —光标移到行首,n$光标移到n行尾,_光标移到行首,
    Ctrl+g 显示当前的文件名

    在Esc下r替换,x删除;dnw:删除n个单词,需将光标移到单词的第一个字母上,按dnw,如果光标在单词任意位置,用daw,d$;
    dnl:向右删除n个字母;dnh:向左删除n个字母;dnj:向下删除n行;dnk:向上删除n行
    替换:.,$s/orichar/newchar/g 字符全部替换 :,+5s/orichar/newchar 替换光标处以下五行的字符
    find -name *.c | xargs perl -pi -e 's|a|b|g; s|c|d|g' 这个意思是查找c文件,并用b替换a,如果另外还想执行用d替换c,则直接在后面添加 “ ;s|c|d|g” 即可
    Esc下,guw 大写转小写; gUw 小写转大写;

    在Esc下,按u撤销上一次编辑,按Ctrl+r 回退前一个命令;>整行右移,<整行左移;
    Esc,shift+*,向下整词查找。shift+#向后整词查找

    :noh不高亮
    :tabnew filename,gt 互相之间切换;:tabs 显示已打开标签页,:tabn :tabp上一个下一个标签;:tabc关闭
    :vnew 将在垂直分割窗口中打开一个;:enew 将在当前窗口中打开一个;:new 将使用未命名的缓冲区创建分割窗口

    tmux:Ctrl+B启动
    ? 帮助文档查询对应的键
    [ 划动鼠标浏览
    Alt+方向键 调整面板大小
    Alt+F12全屏显示
    C 新建一个窗口;n 切换到某个窗口,x关闭当前窗口,“,”重命名当前窗口,]进入赋值模式。
    "上下分割,%左右分割,方向键切换到某个分割
    :进入命令模式
    Ctrl+b 然后d,进入detach状态,下次进入可以tmux attach 进入上次tmux的编辑界面
    tmux ls 显示已经打开的session,可以 tmux attach -t num 重新attach到某个session

    GDB调试:
    makefile 中添加-g;gdb exefile; 如果进行可视化调试,可以添加gdb -tui -q exefile
    set args XX XXX; run; start; c n s; finish调试时退出函数调用;
    set var sum=0 可以中途改变变量的值继续运行
    b filename:line or funcName; disable/enable breakpoint 1; clean number;delete breakpoints;
    backtrace or bt, f fnum查看某贞,函数调用情况,可结合info一起查看局部变量的值;
    print var/ 'f1.cpp'::var/ function::var; list lineNum or funcName; info break/watchpoints/locals(查看函数局部变量的值);
    display/undisplay varName; watch name/expr; show:用来获取GDB本身设置相关的一些信息

    Ctags:
    ctags -R 或者ctags -R * 或者ctags *.c等
    --- 对 c++,使用ctags -R --language-force=c++ --c++-types=+px --verbose --extra=+q
    --- extra=+q 用来增加生成 Class::member 的形式, 默认没有这样就可以用 :ts CView::OnDraw 这种形式看
    --- 因为c++一些头文件不用.h所以要用--language-force
    vim -t 要查找的结构体名或数据类型名或函数名或系统定义的宏名;可以直接跳转到定义处,前提是打了tag,并且在tag文件的目录下
    vim filename 在有ctag文件目录下打开file(如果不在tags目录下,则可以使用:set tags=tags_path;指定tags目录,
    如果有多个tags目录,可以使用","隔开),同样可以使用ctags特性
    vim -t main 使用生产tags之后,直接使用打开main函数所在文件,光标指到对应的函数名那一行;
    Ctrl+] ;跳转到光标tag的定义处 Ctrl+t/Ctrl+o 可以跳回
    :tags;查看跳了哪些tag,然后可以使用 :3tag 向前跳指定的3个步长 或者Ctrl+t也可以加前缀,指定返回跳转步长
    :stag tagname ;分割窗口,并调到tagname处,一般使用tags先查看,然后使用分割split,使用Ctrl+w实现跳转
    标签补全,当我们不想输入完整的标签时,可以只输入要找标签的前几个字符,然后按<Tab>键自动补全::tag 要跳转的函数名前缀_<Tab> ,
    模式匹配,ctags支持模式匹配查找,当我们无法记清楚要找的标签,或只知道标签的一部分时,就可以使用模式匹配来搜索,
    :tag /pattern,匹配指定模式,按<Tab>后,vim会自动搜索包含pattern的标签,例如:tag /^foo 以foo开头,:tag /bar$ 以bar结尾;
    打开预览::ptag main 打开main头函数预览,:pclose, :pedit main, :psearch popen这会在预览窗口中显示含有 popen() 原型的 "stdio.h" 文件:

    :[count]tprevious 跳到前count个 如果打开多个重定义的时候,会用。 :[count]tnext 跳到后count个,:tselect tagname 选择某个
    将某个常用库添加到tags自动补齐:
    如果要将某个库添加到tags中,并自动补齐,可以先将其库生成对应的tags文件,命令为:ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++
    然后将其添加到vimrc的set tags+=/path/tags中,例如cpp_src

    Taglist:
    :Tlist显示或关闭,Ctrl+w来回切换,光标在某个位置处,输入enter,定位到:当前的字符处,必须先打tag;

    OmniCppComplete:
    类,结构,指针,属性方法提示和补齐

    tree:
    tree -L N 查看N级别的目录结构,可以>struc.txt输出到文件方便查看
    Eclipse:
    Ctl+shift+f 格式化代码 Ctl+/ 注释代码

    NERDTree:
    :NERTTree 启动Tree结构,t打开新文件并激活,Ctrl+w来回切换

    valgrind:
    valgrind --track-fds=yes --leak-check=full --undef-value-errors=yes --log-file="Valgrind_Report.txt"

    NotePad:
    Alt+0 折叠全部 +shift打开
    git
    git add .
    git commit -m "aaaa"
    git push
    git diff HEAD 显示与仓库之间的差异
    git branch newBranchName 创建一个新的分支 git branch -D branchName 删除本地分支
    git checkout newBranchName 切换到新的分支
    git log 使用查看历史版本,然后结合以下操作,可以会退到指定的版本
    $ git reset --hard HEAD^ 回退到上一个版本,HEAD是当前版本,如果到上上一个版本,用两个^^,或者直接写2
    或者git reset --hard commitID,表示回退到commitID,即当前的Head为commitID
    git branch -a 查看远程分支
    git push origin --delete branchName 删除远程分支
    git branch -m old new 重命名本地分支
    重命名远程分支:先删除远程分支,然后重命名本地分支,再重新提交一个远程分支
    冲突:git checkout mastername; git pull;然后切换到本地分支,git merge mastername,有冲突会提示,然后进入修改
    如果修改了,没有git add 直接退回到修改的前的原始状态,可以使用"git checkout <file>"
    保持和远程分支一致,一般可以git pull origin remoteName
    git add .出错之后,可以使用git rm --cached <file> 删除添加到cash区的提交
    $ git submodule add https://github.com/subexample 子项目添加
    $ git clone --recursive https://github.com/oriexample 有子项目情况下克隆父项目
    如果git出错了,一直处于gitchecking状态的话,使用git remote prune origin 来去除一些本地端有分支,而远端没有分支等错误到时的merge错误
    git rm test.txt //rm掉文件转换的提交
    git stash 将刚刚的修改放到栈中,相当于git checkout . 取消提交;下次要使用这次的修改,还是可以使用git stash pop。

    添加tag
    git tag -a 0.1.3 -m "Release version 0.1.3" -a表示添加 标签0.1.3, -m 表示添加注释“Release version0.1.3”
    git tag -d 0.1.3 删除标签的命令
    git push origin --tags 分享提交标签到远程服务器上
    git push origin :refs/tags/0.1.3 删除远端服务器的标签

    其他
    Alt+F4关闭当前窗口 Win+D退出到桌面,所有最小化,Alt+空格+n最小化当前窗口

    Linux:
    环境变量设置:
    加入:export PATH=$PATH:/opt/au1200_rm/build_tools/bin;查看是否成功:输入export; 或者echo $PATH 查看当前环境变量情况
    导入库路径export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../your_project/lib
    修改 profile:vim /etc/profile(系统级别)或者.bashrc(仅会对当前用户有效), 然后加入export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
    source ./etc/profile 生效
    查看CPU信息,vim 或者 cat /proc/cpuinfo
    修改密码:直接输入passwd命令,或者passwd tommy 修改用户tommy的密码,如果是sudo用户修改其他账户密码,sudo passwd userName
    添加用户:sudo useradd -d /home/zhh888 zhh888 //添加一个用户zh888到home目录, 删除用户:userdel zhh888, 添加root权限,修改 /etc/sudoers 中添加 userName ALL=(ALL) ALL文件即可
    wget -c -b hppt://www.XXX.rpm 直接命令方式下载文件 -c断点续传,-b后台下载;可以以不同的文件名字保存:wget -0 xxx.zip http://xxx.zip ;指定保存路径:-P /save/dir/ ; 多级目录recursive下载,添加 -r;
    wget --ftp-user=FTP_usser_name --ftp-password=User_password FTP_ADDRESS ;查看下载进度:tail -f wget -log ;
    wget -nd -r -l1 --no-parent http://ip_address/images/ 从images目录下下载很多的tar压缩文件;
    设置hostname:sudo hostname newname, 或者直接 sudo vim /etc/hostname ;用户切换su name
    strings能输出文件中的可打印字符串(可指定字符串的最小长度),通常用来查看非文本文件(如二进制可执行文件)中的可读内容, 例如 strings /usr/lib64/libstdc++.so.6 | grep GLIBC 查看GLIBCXX版本
    cat ~/.bash_history 可以查看当前用户使用过的历史命令,history -c 清楚对应的操作历史
    ctrl+r 输入模糊记忆的输入过的命令,可以运行执行过的命令
    设置bash命令模型界面显示设置 在~/.bash_profile 添加 export PS1="[u@h w]$ " 显示当前文件夹 或者export PS1="[/u@/h /`pwd/`]$" 显示全路径,然后source一下即可。
    命令方式,可以在终端显示一些图形界面:需要安装xorg-x11-xauth,否则gtk报RuntimeError: could not open display错误,具体设置如下:(具体详见https://bugs.centos.org/view.php?id=2391)
    设置 /etc/ssh/sshd_config 文件,设置X11Forwarding yes ,并且设置 X11DisplayOffset 10 ,其中10为显示的localhost,可以通过echo $DISPLAY查看; 并且设置X11UseLocalhost yes 即可。
    locate 查找文件,whereis bin文件;
    Linux服务器上监控网络带宽,IP局域网监控工具:iptraf,运行sudo /usr/sbin/iptraf-ng
    Linux终端不能显示中文:需要 locale-gen 查看是否支持,不然需要安装 apt-get -y install locales apt-get -y install language-pack-zh-hans apt-get -y install language-pack-en 卸载包apt-get remove language-pack-zh-hans --purge,
    然后添加 export LANG=en_US.UTF-8 export LANGUAGE=en_US.en 到系统环境下,安装设置完后,可以通过locale -a查看;
    ubuntu下支持windows访问smba共享目录:https://draapho.github.io/2017/07/06/1718-linux-samba/
    1,sudo apt-get install samba,sudo apt-get install smbclient;
    2,创建共享目录:sudo mkdir -p /home/share && sudo chmod 777 /home/share
    3,修改配置文件:sudo vim /etc/samba/smb.conf
    # ===== 文件内容, 在smb.conf最后添加: =====
    [share]
    path = /home/share # 共享的Linux文件夹路径
    browseable = yes
    writable = yes
    comment = smb share test
    # ===== 结束修改, 保存退出vim =====
    4,创建smba用户:sudo smbpasswd -a $USER 必须和Linux登录用户名一致,
    5,重启smba生效:sudo service smbd restart
    6,Linux客户端访问测试:smbclient -L //localhost/share #//IP/SHARED_PATH
    7,windows客户端访问测试:可以访问如下地址 \Linux的IP或者主机名share


    cat filename查看文件内容; grep "关键字" -r 搜索目录 查看关键字位置;
    find / -name keyword 或者locate /etc/sh 一般查文件位置目录etc下的sh开头的文件 加-type d 表示查找对应的文件夹
    ^匹配行首,*匹配任意字符,$匹配行尾;例如^a**b$ 查找a开头b结尾的字符。 find . -name "Alignment_*" 在当前目录下,查找文件夹
    df -hl 查看磁盘空间剩余信息; du -sh [目录] 查看当前目录占磁盘空间大小;
    du [--max-depth=1] -h [路径或者文件] 详细显示文件目录里面的文件空间大小;
    r=4,w=2,x=1,所以rw-r--r--用数字表示为644
    chmod -R 777 ./file 修改文件权限 644
    mkdir -p ./src/test 在当前目录下创建src/test文件加
    ls -l libname.so 查看软链接信息
    ln -s srcFile targetFile 建立软连接,将targetFile->srcFile,删除软连接:rm targetFile 千万注意不是"targetFile/",否则删除了SRCFile了。
    cat /proc/cpuinfo 或者meminfo
    ls path | grep ".jpg" | wc -l
    ls path | grep ".jpg" | wc -l //列出当前文件夹下所有以.jpg结尾的文件数
    ls path |grep "^d"|wc -l //列出当前目录下所有的文件夹数
    ls path |grep "^-"|wc -l //统计某文件夹下文件个数
    解释:grep "^-" 这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
    解释:wc -l 统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数
    sed -i 就是直接对文本文件进行操作的,例如文件中字符替换:sed -i 's/原字符串/新字符串/' /home/1.txt, sed -i 's/原字符串/新字符串/g' /home/1.txt
    查看镜像扇区Sector大小:fdisk -l 镜像文件.img ,然后使用:mount -o loop,offset=$((98304*512)) 镜像文件.img /mnt/raspberry_rootfs 将镜像文件系统root区文件生成到目录/mnt/raspberry_rootfs

    objdump -t nets.o |grep -i gettensor
    文件压缩解压查看操作:http://blog.csdn.net/alibert/article/details/41379555
    查看压缩文件内容:
    tar.gz:tar tzvf xxx.tar.gz
    tar.bz2:tar tjvf xxx.tar.bz2
    rar:unrar l xxx.rar(简略模式);unrar v xxx.rar(详细模式)

    压缩解压:tar : gunzip -zcvf *.tar.gz
    (-c: 建立压缩档案,-x:解压)-t:查看内容,-r:向压缩归档文件末尾追加文件,-u:更新原压缩包中的文件
    这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
    o:将文件解开到标准输出
    f: 归档file,使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名
    v: verbose(注:详细),显示压缩过程的详细信息
    t: list,显示归档的内容
    x: extract,解压
    c: compress,压缩
    z: gzip格式压缩,后缀为.gz
    j: bzip2格式压缩,后缀为.bz2
    J: xz格式压缩,后缀为.xz

    # tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
    # tar -rf all.tar *.gif 这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
    # tar -uf all.tar logo.gif 这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
    # tar -tf all.tar 这条命令是列出all.tar包中所有文件,-t是列出文件的意思
    # tar -xvf all.tar 这条命令是解出all.tar包中所有文件,-x是解开的意思
    # zip -r myfile.zip ./* 将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件
    unzip -o -d /home/sunny myfile.zip 把myfile.zip文件解压到 /home/sunny/
    unzip -v myfile.zip 查看对应的zip文件内容,不解压
    -o:不提示的情况下覆盖文件;
    -d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下
    # zip -d myfile.zip smart.txt 删除压缩文件中smart.txt文件
    # zip -m myfile.zip ./rpm_info.txt 向压缩文件中myfile.zip中添加rpm_info.txt文件
    # split -b 10M bin.tar.gz bin_
    分割包:-b SIZE 指定每个分割包的大小
    -d DIGIT 每个分割包名后缀按数字命名:01, 02, ...,不用的时候,默认为aa,ab,ac...
    # cat mybackup-parts* > mybackup.tar.gz 合并切割的包

    在屏幕打印,并且输出到文件 ./run |tee log.txt 可以加参数-a,附加到文件,而不是覆盖。
    >>, >&,
    >! 将命令的执行结果送至指定的文件中,若文件已经存在,则覆盖
    make 2>&1 | tee log.txt 其中0 stdin,1 stdout,2 stderr &1是指无论标准输出在哪里
    make VERBOSE=1 显示编译细节
    top 和ps -ef 都可以查看进程
    top -p <PID> 查看进行号为PID的CPU,内存使用情况
    taskset -c -p <pid> 找出PID被固定的 CPU 内核 详见如何知道进程在哪个CPU上:https://linux.cn/article-6307-1.html
    free -m 查看进程使用内存情况 -m是以兆为单位显示
    kill -s 9 XXX 强制杀死进程XXX,-s 9 表示制定了传递给进程的信号是9,即强制、尽快终止进程
    应用置后台运行:“ nohup <程序名> & ” 然后可以使用“bg”命令查看对应的情况

    teamviewer
    /usr/bin/systemctl stop teamviewerd.service

    Mac ios
    http://www.cnblogs.com/tekkaman/archive/2013/03/01/2939198.html lipo相关
    lipo –create Release-iphoneos/libiphone.a Debig-iphonesimulator/libiphone.a –output libiphone.a
    我将模拟器和设备的静态库文件合并成一个文件输出了.

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./path2lib
    nvidia-smi -l 5 显示运行GPU的cuda信息,sudo nvidia-smi -pm 1 设置persistence mode
    export CUDA_VISIBLE_DEVICES=0
    echo $LD_LIBRARY_PATH
    g++ -o test.exe test.cpp -L ./deps/lib -ldeps -D PPL_USE_X86 -O2
    cuda 使用nccl,下载nccl,make CUDA_HOME=/user/local/cuda-7.5 && make install

    Protobuf:根据proto生成对应的cc和h文件
    protoc caffe.proto --cpp_out=.


    Android:
    adb shell dumpsys meminfo com.test.face 安卓内存检测 第一个是系统应用总共占用内存,第二个是native层占用内存情况

    openssh-server安装之后,才能使用远程连接ssh服务:
    可以通过ps -e | grep ssh 查看是否安装

    gitlab搭建:
    1,直接进入gitlab官网:https://about.gitlab.com/downloads/ 安装完成之后直接网页输入进入 localhost
    即可注册账号登录,在局域网登录,使用对应的IP即可,即直接网页输入对应的ip。前提是安装了gitlab,
    2,使用中需要把“对应git服务器的IP地址 git.yourgitname.com” 加入到/etc/hosts,可以直接通过git.yourgitname.com访问
    external_url 'http://192.168.1.106:90'
    3,如果要修改gitlab hostname直接修改服务器下/etc/gitlab/gitlab.rb文件为对应的external_url里面的hostname为新的hostname即可,
    4,进入 /opt/gitlab/embedded/service/gitlab-rails/config,修改gitlab.yml文件,中的host为对应的yourgitname,这个在gitlab中的ssh和http中显示,例如http://userName@yourgitname/yourproject.git,5,然后使用gitlab-ctl reconfigure命令重新载入和重新配置gitlab
    然后使用sudo gitlab-ctl restart
    6,让 git输出颜色变成彩色的方法,在命令行输入以下配置即可:
    test@PC$ git config --global color.status auto
    test@PC$ git config --global color.diff auto
    test@PC$ git config --global color.branch auto
    test@PC$ git config --global color.interactive auto
    test@PC$ git config --global http.sslVerify "true" 使用use a git server without proper certificates,也就是export GIT_SSL_NO_VERIFY=1
    7,server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none:解决办法,Linux终端输入:export GIT_SSL_NO_VERIFY=1
    8,如果直接在Git环境下,看到的http地址为:http://userName@GitServerName/MyCV/testProject.git 则可以将 "Git服务器的IP GitServerName" 添加到/etc/hosts 环境下

  • 相关阅读:
    输入框只能输入正数且保留小数后2位数字,正则
    vscode安装ESlint配置
    kubreretes && docker 模块
    python3安装sqlite3库
    dokcerfile 制作Msql镜像
    前端模板
    Python SMTP发送邮件
    k8s-api
    openpyxl
    k8s mysql主从
  • 原文地址:https://www.cnblogs.com/hansjorn/p/5668084.html
Copyright © 2011-2022 走看看