Golang

Go

  • gofmt,格式化go源文件,统一代码规范
    gofmt -w *.go
    
  • go doc
    go doc fmt
    go doc package/subpackage
    go doc package/
    go doc package function
    
  • go fix
    把Go代码从旧版升级到新版,如API升级。
    
  • variable and function
    var a int = 1
    func Sum(a, b int) (a int, msg string) {
      return (a + b, "hh")
    }
    import fm "fmt"
    
  • type ```go int float bool string struct array slice map channel interface

type i int // i 是int 类型别名 func init() { …//一个包首先执行init }

func FunctionName (a typea, b typeb) typeFunc { … return typeFunc // 可以以函数为返回值 }

```

Python

  • 得到下标用for迭代
    for i, char in enumerate("haha"):
      print(i, char[i])
    
  • pip2 和 pip3共存
    pyhon2 -m pip install xxx
    
  • 多字符分隔
    import re
    s = 'as,as;asd.asd'
    res = re.split('[,;.]*', s)
    
  • configparser (python3)
    config = configparser.ConfigParser(interpolation=configparser.ExtendedInterpolation())
    config.read('example.ini')
    config.sections()
    value = config['section']['key']
    

    读取配置文件

    [TICKscript1]
      script = "house1.tick"
      task = "house1"
      type = "stream"
      database = "house"
      retention_policy = "default"
      test = ${script}
      test2 = ${influxdb:hh}
    
  • 函数参数 ``` def test(*a): print(a)

    test(1, 2) a = (1, 2)

def test2(**)


* end

builtins.end = None


* anaconda

conda create –name tf_test python=3.6 source activate tf_test


* future
```python
from __future__ import division 之后:
23/6 # 得 3.8333333333333335
  • 在虚拟环境中添加juypter kenerl
    source activate tf_test
    pip install ipykernel
    python -m ipykernel install --user --name=new_kenerl_name
    # juypter notebook
    # 在juypter notebook中选择Kenerl
    

Linux Shell

awk与单引号

cat t.t | awk "{for(i=1;i<=NF;i+=2){printf \"'%s':'%s',\n\",\$i,\$(i+1)}}"
  • 单引号内为纯文本,无法转译,不能包含特殊字符如单引号,所以一般awk后都接单引号,NF是本行内拥有的字段总数,FS是分隔字符(默认空格),NR是当前处理的行数。

test

test可以用来检测是否存在某个文件等,在shell脚本中做判断条件。

sed

sed用来在shell中直接修改文件内容。

VIM

  • :SET LIST 显示所有tab和回车符
  • :s/old/new/g g为单行内全部替换,如果是%s代表所有行替换
  • :set nu 显示行号
  • :set nonu 不显示行号
  • :set list 显示空格符
  • sudo vim /etc/vim/vimrc 编辑vim配置文件
  • G最后一行
  • :line 跳到第line行
  • u撤销
  • /str 搜索str
  • n/N 向下/上搜索
  • :set expandtab ts=4 # 消除tab符号,为4个空格

Device

  • 显卡
    # 看显卡信息
    lspci | grep -i vga
    # 看更详细的
    lspci -v -s 02:00.0 # 02...是上面看到的第一排数字
    # 英伟达显卡
    nvidia-smi
    
  • cpu
    cat /proc/cpuinfo      # 查看CPU信息
    
  • 操作系统
    uname -a               # 查看内核/操作系统/CPU信息
     # head -n 1 /etc/issue   # 查看操作系统版本 
    # cat /proc/cpuinfo      # 查看CPU信息
    

SHELL

  • cat file输出到命令行
  • awk -F ‘\t’ 把输入的文本按照行切割开,后面加上’{print $7}’输出第几个参数 ‘{printf(“%s\t%s\t%s\t%s\t%s\n”, $6, $3, $4, $5, $1);}’ > Summer1.xml
  • grep -i(大小写敏感) xx 正则查找指定内容
  • wc -l 数输入的内容行数
  • tail -f file 显示文件
  • crontab -e 编辑自动启动文件,主要要写绝对路径,编辑完以后sudo service cron restart,通过sudo service cron status查看当前自动执行脚本的状态和错误信息。
  • nohup wget http://archive.ics.uci.edu/ml/machine-learning-databases/00251/WTD_upload.zip 2>&1 1>nohup.log & 把进程挂到1。
  • uniq
  • head -n 2
  • tar -czf docs.tar.gz docs 压缩 #z是gzip, j是bz2
  • tar -tfv docs.tar.gz 解压缩
  • du -sh # 查看目录使用情况
  • gzip 压缩和解压一个文件
  • umask -S查看默认文件权限
  • alias查看所有的别名
  • echo $RANDOM # 生成一个随机数
  • shell中,单引号是纯文本,双引号内可以存在变量”$name”,也可以是${PATH}。`uname -r`内是命令,也可以用$(uname -r),用法:cd /etc/modules/`uname -r`/。
  • unset name,取消变量。
  • type -a ls # 查看命令是什么
  • stty -a 看到所有操作字符
  • 重定向 2> dev/null 可以忽略错误流
  • 错误流重定向 2>&1
  • tee -a filename 可以保持输出流向下管道程序, cat file tee f grep xxx
  • split 把大文件分割, -一般表示来自管道的数据(在文件位置)
  • 查找字符出现次数 grep -o “ch” file wc -l
  • nl /etc/passwd sed -n ‘5,7p’ #输出5到7行, sed可以通过命令行编辑, -n 是安静模式,只输出更改部分, sed也可以通过s/xx/xx/g来进行替换,支持正则
  • sed -i 可以直接修改文件
  • egrep 支持扩展正则表达式,例如分组 g(oo dd), -B, -A 是连同前/后多少行。
  • awk ‘{FS=”:”} $3 < 10 {print $1 “\t “ $3}’ 注:NR是当前处理行数,NF切割字段总数,FS默认为空格
  • xargs
  • test,是否为文件夹,文件之间新旧比较 test -e /dmtsai && echo “exist” || echo “not exist” # -z 字符串是否为0
  • select-editor 选择默认的编辑器
  • at 是在指定时间执行某些命令,需要打开atd
  • batch如at一样,但是在到达时间点时,CPU负载率高的情况下延迟执行。
  • crontab -e 循环执行
  • 可以利用软件实现RAID5
  • su - 切换到root,sudo 是使用用户的密码获取root权限,/etc/passwd保存能否使用sudo。默认ubuntu没有开启root,设置passwd -u root。 sudo -s 使用的是/etc/passwd中的shell。
  • pstree
  • ps -aux
  • top 中M是按内存排序,P是CPU
  • kill -9 是非正常结束(vim 会留下swp文件),-15是正常结束
  • linux不同用户可用文件系统大小,有一个soft和hard值。
  • jobs -l可以查看挂起的job,fg和bg分别是恢复到前台和后台。ctrl+Z是暂停进程。用%job_num表示,如 kill -9 %1。
  • Killall -i会询问是否杀死进程。
  • free -m 空闲内存大小
  • sudo nice -n -5 vim &,用nice执行程序,为程序指定一个NICE值,root可以指定-20~19,普通用户可以设置为0~20,进程执行优先级PRI_NEW = PRI_OLD + NICE
  • renice [number] PID, 重新调整进程NICE值,一般用户仅可增大NICE值。NICE值会在父子进程之间继承。