Go语言和Makefile

Makefile基础 语法 # 目标 :依赖 # 根据依赖生成目标的命令 targets : prerequisites command 变量 Makefile 允许使用等号自定义变量。 txt = Hello World test: @echo $(txt) 上面代码中,变量 txt 等于 Hello World。调用时,变量需要放在 $( ) 之中。 调用Shell变量,需要在美元符号前,再加一个美元符号,这是因为Make命令会对美元符号转义。 test: @echo $$HOME 有...

2021-02-27 · 2 min · 976 字 · Niuhe

Typescript基础

简介 Typescript 可以在代码编写写做类型检查,可以编写更健壮的代码。 安装 npm config set registry https://registry.npm.taobao.org sudo npm install -g typescript # 安装REPL sudo npm install -g tsun 基本概念 联合类型 表示取值是多种类型中的一种,当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法 let myFavoriteNumber: string | number; myFavoriteNumber = "seven"; myFavoriteNumber = 7; 接口 TypeScript 中的...

2021-01-29 · 8 min · 3694 字 · Niuhe

docker基本使用

CheatSheet Docker 核心架构: 客户端 Client 服务器 Docker daemon 镜像 Image Registry 容器 Container 容器基本技术: cgroup 资源限额 namespace 资源隔离 Mount UTS IPC PID Network User Docker 采用 C/S 架构,客户端向服务器发送请求,服务器负责构建、运行和分发容器。客户端和服务器可以运行在同一个 host 上,客户端也可以通过 socket 或者 REST API 和远程服务器通信。docker 客户端是和服务器通信的命令...

2021-01-23 · 3 min · 1235 字 · Niuhe

sqlite3入门

命令行 # 从文件中执行sql语句 sqlite> .read cars.sql # 打开test.db数据库文件,如果文件不存在,创建 sqlite3 test.db # 元命令 # 显示可用表 .tables sqlite> .mode column sqlite> .headers on sqlite> SELECT * FROM Friends; Id Name Sex ---------- ---------- ---------- 1 Jane F 2 Thomas M 3 Franklin M 4 Elisabeth F 5 Mary F 6 Lucy F 7 Jack M 本示例说明如何在 sqlite 的列模式下格式化数据。 .headers命令也已用于显示列标题。 默认情况下...

2020-12-27 · 2 min · 824 字 · Niuhe

awk基本使用

快捷键 awk 是 linux 上用于文本处理的脚本语言,你可以实现: 定义变量 使用字符串和算术运算符 使用控制流程和循环 生成格式化的输出 用法:awk [POSIX 或 GNU 风格选项] [--] '程序' 文件 ... POSIX 选项: GNU 长选项:(标准) -f 脚本文件 --file=脚本文件 -F fs --field-separator=fs -v var=val --assign=var=val 使用变量 $0 整行 $1 第一列字段 $2 第二列字...

2020-12-05 · 1 min · 479 字 · Niuhe

linux 101 Hackers 笔记

# 创建目录并进入 function mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\""; } 查找文件 # 找到大于100M的文件 find / -type f -size +100M # 找到文件名中含有mail的文件/文件夹 find /etc -name "*mail*" # 找到修改时间在60天之前的文件 find . -mtime +60 # 找到修改时间在2天内的文件 find . -mtime -2 # 批量显示TS后缀且大于100M文件的详情 find . -type f -name '*.TS' -size +100M -exec ls -l {} \; # 批...

2020-12-05 · 3 min · 1346 字 · Niuhe

vscode 快捷键和插件记录

快捷键 CTRL+B 打开/收起侧边栏目 CTRL+` 打开内置终端 CTRL+, 打开设置 CTRL+p 快速搜索并打开文件 CTRL+TAB 在已经打开的标签页中跳转 CTRL+\ 将标签页移动到右侧分割栏 CTRL+w 关闭标签页 CTRL+f 查找内容 CTRL+h 查找并替换 CTRL+SHIFT+f 全局搜索 CTRL+SHIFT+p 命令面板 CTRL+/ 注释/解除注释 CTRL+HOME/END 跳转到文件首/尾 CTRL+c/v 复制或剪切当前光标行/在当前光标行或下一行粘贴 CTRL+SHIFT+...

2020-12-05 · 2 min · 924 字 · Niuhe

openstack创建虚拟机

创建虚拟机 1、界面或命令行通过RESTful API向keystone获取认证信息。 2、keystone通过用户请求认证信息,并生成auth-token返回给对应的认证请求。 3、界面或命令行通过RESTful API向nova-api发送一个boot instance的请求(携带aut...

2020-10-31 · 15 min · 7418 字 · Niuhe

Openstack命令行基础

不同命令的功能有重复和交集 Openstack篇 Openstack每个组件都有其命令,openstack社区为了方便使用,将所有组件的命令进行了统一,以openstack开头 # 查看所有openstack服务 openstack service list # 查看openstack服务状态 openstack-service status # 重启本节点所有openstack...

2020-10-23 · 5 min · 2299 字 · Niuhe

Virsh命令和虚拟机

环境搭建和准备 # 查看cpu是否支持硬件虚拟化 grep -E -c "vmx|svm" /proc/cpuinfo sudo apt install -y qemu qemu-kvm libvirt-daemon bridge-utils virt-manager virtinst # if centos # yum install -y kvm virt-manager libvirt libvirt-python python-virtinst virt-install qemu-kvm lsmod | grep -i kvm sudo systemctl status libvirtd.service # 如果服务未启动 sudo systemctl enable libvirtd --now # 配置网桥使得libvirt可以从外部访问 cat /etc/netplan/00-installer-config.yaml # 可选,GUI管理工具 sudo apt-get install virt-manager python-spice-client-gtk 下载调试镜像: 从官方地址下载cirros镜像,用来调试虚...

2020-10-22 · 9 min · 4338 字 · Niuhe

tcpdump的基本使用【译】

Tcpdump是一个linux命令行的抓包工具,可以抓取TCP/IP和其他数据包,如UDP,ARP,ICMP,可以使用过滤器过滤出想要的包。 抓取特定接口上的包 当使用tcpdump不加任何参数,将分析所有接口上的数据包。 sudo tcpdump 可以使用-i选项指定特定接口 可以使用-c选项限制数据包的个...

2020-10-19 · 3 min · 1360 字 · Niuhe

Linux性能测试

简介 Linux上对系统进行性能检测的工具非常多,本文介绍一些常用工具的使用 性能观测工具 ▪ 首先学习的Basic Tool有如下: uptime、top(htop)、mpstat、isstat、vmstat、free、ping、nicstat、dstat。 ▪ 高级的命令如下: sar、net...

2020-10-17 · 13 min · 6027 字 · Niuhe

GDB调试Python代码

Core Dump文件 凡事皆有两面性,OS在出Core的同时,虽然会终止掉当前进程,但是也会保留下第一手的现场数据,OS仿佛是一架被按下快门的相机,而照片就是产出的Core文件。里面含有当进程被终止时内存、CPU寄存器等信息,可以供后续开发人员进行调试。 Gdb可以附着在特定进程上调试,但...

2020-10-16 · 2 min · 946 字 · Niuhe

Python进阶下

有两种常用的方法可以使得代码并行执行,多线程和多进程 。因为Cython解释器的实现不是线程安全的,具有GIL锁,同一时刻,只有一个线程可以获得解释器的锁。因此,Python利用多核心的CPU只能通过多进程,而多线程只适用于IO密集型的程序。 多进程基础 创建并开启进程 可以使用mult...

2020-10-13 · 5 min · 2417 字 · Niuhe

Python进阶中

生成器Generator def countdown(num): print('Starting') while num > 0: yield num num -= 1 # this will not print 'Starting' cd = countdown(3) # this will print 'Starting' and the first value print(next(cd)) # will print the next values print(next(cd)) print(next(cd)) # this will raise a StopIteration print(next(cd)) 迭代器使用方式 # you can iterate over a generator object with a for in loop cd = countdown(3) for x in cd: print(x) # you can use it for functions that take iterables as input cd = countdown(3) sum_cd = sum(cd) print(sum_cd) cd = countdown(3) sorted_cd = sorted(cd) print(sorted_cd) 生成器表达式 # generator expression mygenerator = (i for i in range(1000) if i % 2 == 0) print(sys.getsizeof(mygenerator), "bytes") # list comprehension mylist...

2020-10-12 · 8 min · 3535 字 · Niuhe