Linux 常用命令 grep

在文件中查找字符串(不区分大小写) grep -i [word] [file] 在一个文件夹中递归查询包含指定字符串的文件 grep -r [word] [file / path] 从文件中读取关键词进行搜索 cat [file] | grep -f [word] 从文件中读取关键词进行搜索 且显示行号 cat [file] | grep -nf [word] 从多个文件中查找关键词 grep [word] [file1] [file2] 显示包含 a 或者 b 字符的内容行 cat [file] |grep -E "a|b" grep 不显示本身进程 ps aux | grep [word] | grep -v "grep" 使用 ^ 符号输出所有以某指定模式开头的行 grep ^docker [file] 使用 $ 符号输出所有以指定模式结尾的行……

阅读全文

常见英文符号

asterisk (*) plus sign (+) minus sign (-) forward slash (/) backslash (\) percent symbol (%) exclamation point symbol (!) underscore (_) equal sign (=) decimal points (.) semicolon (;) increment (++) operators decrement (--) operators ( ) Parenthesis { } Braces [ ] Brackets , Comma ; Semicolon ' Quote @ At + plus 加号;正号 - minus 减号;负号 ± plus or minus 正负号 × is multiplied by 乘号 ÷ is divided by 除号 = is equal to 等于号 ≠ is not equal to 不等于号 ≡ is equivalent to 全等于号 ≌ is equal to or approximately equal to 等于或约等于号 ≈ is approximately equal to 约等于号 < is less than 小于号 > is more than 大于号 ≮ is not less than 不小于号 ≯ is not more than 不大于号 ≤ is less than or equal to 小于或等于号 ≥ is more than or equal to 大于或等于号 % per cent 百分之… ‰ per mill 千分之… ∞ infinity 无限大号 ∝ varies as 与…成比例 √ (square) root 平方根 ∵ since; because 因为 ∴ hence 所以 ∷ equals, as (proportion) 等于,成比例 ∠ angle 角 ⌒ semicircle 半圆 ⊙ circle 圆 ○ circumference 圆周 π pi 圆周率 △ triangle 三角形 ⊥ perpendicular to 垂直于 ∪ union of 并,合集 ∩ intersection of 交,通集 ∫ the integral of …的积分 ∑ (sigma) summation of 总和 ° degree 度 ′ minute 分 〃 second 秒 ℃ Celsius system 摄氏度 { open brace, open curly 左花括号 } close brace, close curly 右花括号 ( open parenthesis, open paren 左圆括号 ) close parenthesis, close paren 右圆括号 () brakets/ parentheses 括号 [ open bracket 左方括号 ] close bracket 右方括号 [] square brackets 方括号 .……

阅读全文

Git 常用命令

基本设置 设置你自己的昵称与 email git config --global user.name "zhaolion" git config --global user.email "zhaoliangsyn@gmail.com" git config --global push.default simple 配置你的编缉器 git config --global core.editor emacs Git 使用你的系统的缺省编辑器,这通常可能是 vi 或者 vim 配置你的比较工具 git config --global merge.tool vimdiff Git 可以使用 kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, 和 opendiff 作为有效的合并工具。你也可以设置一个客户化的工具 检查你的配置 git config --list 编辑 Git 配置文件 git config -e [--global] 获取帮助……

阅读全文

Docker 常用命令

下面是一些比较常用的 Docker 命令 镜像类基本命令 安装镜像 docker pull ${IMAGE} 显示已经安装镜像的详细内容 docker images --no-trunc 构建镜像 docker build --rm=true . 删除指定镜像 docker rmi ${IMAGE_ID} 删除未使用的镜像 docker rmi $(docker images --quiet --filter &quot;dangling=true&quot;) 删除所有没有标签的镜像 docker rmi $(docker images | grep “^” | awk “{print $3}”) 删除所有的镜像 docker rmi $(docker images) 构建自己的镜像 docker build -t <镜像名> <Dockerfile 路径> 导出镜像 docker save docker.io/tomcat:7.0.77-jre7 >/root/mytomcat7.tar.gz 导入镜像 docker load < /root/mytomcat7.……

阅读全文

程序员 2018 年度总结

这一年里,你一共写了 34 万行代码 你热衷于使用组合键 ⌘ + C 和 ⌘ + V 你热爱学习,喜欢和同事一起分享你们两个都不懂的技术知识 你每天早上都会打开 Github 假装了解最新的技术知识 2018年,你说的最多的几句话是: 这个需求做不了 在我电脑上是好的啊 你重启下电脑试试 4.23 大概是很特别的一天 这一天里,你用了 548 次复制和粘贴的功能,提交了 549 行代码 8.27 这一天你睡的很晚 凌晨 2:33 你才把自己的 Bug 列表清空 然后在朋友圈里发表了一句: my code is No.1 我的代码就没有 Bug 那一刻你好像感觉自己也成为了一个大佬 2018 年的时间里 你使用了 5 瓶霸王洗发露 发际线上升了 4 cm 各种颜色的格子衫挂满了你的衣柜 2019 年 May the Bug be with you.……

阅读全文

database/sql: Stmt的使用以及坑

基本知识 众所周知,Golang 操作数据库,是通过 database/sql 包,以及第三方的实现了 database/sql/driver 接口的数据库驱动包来共同完成的。 其中 database/sql/driver 中的接口 Conn 和 Stmt,官方交给第三方实现驱动,并且是协程不安全的。官方实现的 database/sql 包中的 DB 和 Stmt 是协程安全的,因为内部实现是连接池。 如何使用 database/sql 的 MySQL 驱动的使用范例 基本类似于 // Insert stmtIns, err := db.Prepare("INSERT INTO squareNum VALUES( ?, ? )") if err != nil { panic(err.Error()) // proper error handling instead of panic in your app } defer stmtIns.Close() stmtIns.Exec(i, j) // Query stmtOut, err := db.Prepare("SELECT squareNumber FROM squarenum WHERE number = ?……

阅读全文

Go Modules 简单介绍

Go Modules Golang 在 1.11 版本推出了万众期待的依赖管理工具 go Modules 我厌倦了 Glide 那无穷无尽的 update 状态之后,还是决定自己再一次尝试新的依赖管理工具 (~~ 毕竟是 google 爸爸推出的~~) 还好尝试的比较晚,已经有许多 bug 得到解决,社区也有许多文章给出了最佳实践,建议先看看 intro-to-go-modules 1. enable GO111MODULE go modules 默认是没有开启的,需要设置环境变量 GO111MODULE=on, 如果没有设置, 会有一些提示。 2. help doc 接下来就是查看一下帮助手册 go mod help: Go mod provides access to operations on modules. Note that support for modules is built into all the go commands, not just 'go mod'. For example, day-to-day adding, removing, upgrading, and downgrading of dependencies should be done using 'go get'.……

阅读全文

初步了解 golang reflect pkg

初步了解 golang reflect pkg [TOC] 阅读这篇文章之前,建议先熟悉官方文档 pkg/reflect Golang 语言实现了反射,反射机制就是在运行时动态的调用对象的方法和属性,官方自带的 reflect 包就是反射相关的,只要包含这个包就可以使用。实际使用中可以先不考虑使用 reflect 对性能的影响,先实现功能,再利用 benchmark test 去优化。 什么时候应该用 reflect 首先你得确认你会使用 reflect pkg,并且不是乱用 更好的抽象和约束,减少 bug 几率 提升代码的易读性 提高开发效率 1 理解 Type & Kind & Value reflect package 提供了 3 个重要的结构体 Type、Kind 和 Value: - Type: 就是 Go concrete type, 例如 int/string/bool/customStruct … - Kind: 就是 Go static type(固定的),例如 Boot/Int/Struct … - Value: 也就是 Go value, 承载变量 / 常量的值 type Kind uint Kind 用途: 用于 runtime 和 compiler 为变量分配变量内存布局和函数分配堆栈……

阅读全文

sync.Pool 的实现原理和适用场景

sync.Pool 的实现原理和适用场景 Golang GC 大大减少了程序编程负担,但 GC 是一把双刃剑,带来了编程的方便但同时也增加了运行时开销,使用不当甚至会严重影响程序的性能。因此性能要求高的场景不能任意产生太多的垃圾,如何解决呢? 那就是 ** 重用对象 ** 我们可以简单的使用一个 chan 把这些可重用的对象缓存起来,但如果很多 goroutine 竞争一个 chan 性能肯定是问题,为了避免大家重造车轮,因此官方统一出了一个包 sync.Pool 首先来看下官方给的注释,已经解释的非常到位: // A Pool is a set of temporary objects that may be individually saved and // retrieved. // // Any item stored in the Pool may be removed automatically at any time without // notification. If the Pool holds the only reference when this happens, the // item might be deallocated.……

阅读全文

初步了解 golang bufio pkg

bufio package in Golang golang 通过 package bufio 来支持 buffered I/O。 熟悉一下: Reader, Writer and Scanner… bufio.Writer 对 I/O 的频繁操作会极大的影响性能,每次 写 I/O 都是一次 syscall,因此频繁操作会给 CPU 带来极大的负担。对于磁盘来说,批量写操作有着更好的性能。golang 通过 bufio.Writer 来合并写操作,避免频繁的写操作。因此在写密集场景下,应该使用 bufio.Writer,而不是 io.Writer bufio.Writer 通过将写内容缓存至 buffer,buffer 满了之后,再进行一次写操作,这样极大的优化性能: producer --> buffer --> io.Writer 举个例子,9 次写操作,buffer 是如何工作的: producer buffer destination (io.Writer) a -----> a b -----> ab c -----> abc d -----> abcd e -----> e ------> abcd f -----> ef abcd g -----> efg abcd h -----> efgh abcd i -----> i ------> abcdefgh 看份代码来感受一下,如何使用:……

阅读全文