0%

Docker 基础知识

1
docker run ubuntu:15.10 /bin/echo "Hello world"

参数含义:

  • docker:Docker 的二进制执行文件。
  • run:与前面的 docker 组合来运行一个容器。
  • ubuntu:15.10:指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
  • /bin/echo "Hello world":在启动的容器里执行的命令
1
docker run -i -t ubuntu:15.10 /bin/bash

参数含义:

  • -t:在新容器内指定一个伪终端或终端。
  • -i:允许你对容器内的标准输入 stdin 进行交互
  • 可以通过运行 exit 命令或者使用 ctrl+D 来退出容器,会导致容器停止
1
docker run -d -P training/webapp python app.py
  • -d:让容器在后台运行。
  • -P:将容器内部使用的网络端口随机映射到我们使用的主机上。
1
docker commit <CONTAINER ID> <REPOSITORY>
阅读全文 »

性能测试

注册 pprof 服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 // 开启服务
pprofOpen := c.GetBool("pprof.open")
if pprofOpen {
// 运行pprof服务器,其路由已在pprof包自动注册
pprofPort := c.GetInt("pprof.port")
s.pprofSvr = &http.Server{
Addr: ":" + strconv.Itoa(pprofPort),
Handler: nil,
}
go func() {
err := s.pprofSvr.ListenAndServe()
log.Infof("pprof server down: %+v", err)
}()
}

// 停止服务
c := config.GetConfig()
pprofOpen := c.GetBool("pprof.open")
if pprofOpen {
wg.Add(1)
go func() {
defer wg.Done()
// 开始关闭pprof服务器
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := s.pprofSvr.Shutdown(ctx); err != nil {
log.Infof("Server Shutdown: ", err)
}
}()
}
wg.Wait()
阅读全文 »

md5 工具使用说明

相关技术栈:linux、mysql

STEP 1

在车型数据库里,运行这两条sql语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE `std_name_modify_record` (
`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
`md5` VARCHAR ( 40 ) DEFAULT NULL COMMENT 'md5值',
`ori_std_name` VARCHAR ( 32 ) DEFAULT NULL,
`new_std_name` VARCHAR ( 32 ) DEFAULT NULL,
`creator` VARCHAR ( 64 ) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updator` VARCHAR ( 64 ) NOT NULL DEFAULT '' COMMENT '操作人',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY ( `id` ),
UNIQUE KEY `uniq_md5` ( `md5` ) USING BTREE,
KEY `idx_create_time` ( `create_time` ) USING BTREE,
KEY `idx_update_time` ( `update_time` ) USING BTREE
) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '标名修改记录表';

ALTER TABLE `oe2modelcatalog` ADD `md5` VARCHAR ( 40 ) DEFAULT NULL COMMENT 'md5值';

建立标名修改记录表,并在行记录表里增加md5字段。

阅读全文 »

array

  • 数组初始化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 一维数组
var a [4]int //元素自动初始化为零[0 0 0 0]
b := [4]int{2, 5} //未提供初始化值得元素自动初始化为0 [2 5 0 0]
c := [...]int{1, 2, 3} //编译器按初始化值数量确定数组长度 [1 2 3]
d := [2]string{"TigerwolfC", "chen_peggy"}
e := [...]int{10, 3: 100} //支持索引初始化,但注意数组长度与此有关 [10 0 0 100]
f := [4]string{1: "b", 3: "c"} // 可以指定初始化的位置

# 复合类型数组
type User struct {
Name string
Age byte
}
d := [...]user{
{"TigerwolfC", 20}, // 可省略元素类型。
{"chen_peggy", 18}, // 别忘了最后一行的逗号。
}
阅读全文 »

git 基本命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
git config --global user.name 'XXX'
git config --global user.email 'XXX'
git init // 初始化代码仓库
git add learngit.txt // 把所有要提交的文件修改放到暂存区
git commit -m 'add a file' // 把暂存区的所有内容提交到当前分支
git commit -s -m // 添加 signed-off-by 信息,在日志中增加提交者签名
git commit -a -m // 相当于git add . 与git commit –m “本次提交描述”两句操作合并为一句进行使用。
git status // 查看工作区状态
git status -s // 查看改变的文件列表简化版
git diff // 查看不在缓冲区的文件的修改内容
git diff --cached // 查看缓冲区的文件发生的改变
git diff --staged // 查看缓冲区的文件发生的改变
git diff HEAD // 是 git diff 和 git diff --cached 的合并
git log // 查看提交历史
git log --pretty=oneline // 单行显示
git reset --hard HEAD^ // 回退到上一个版本,其中(HEAD^^(上上版本),HEAD~100(往上100个版本))
git reset --hard <commit_id>//(版本号) 可回到指定版本
git reflog // 查看历史命令

git diff HEAD -- <file> // 查看工作区和版本库里最新版本的区别
git checkout -- <file> // 用版本库的版本替换工作区的版本,无论是工作区的修改还是删除,都可以'一键还原'
git reset HEAD <file> // 把暂存区的修改撤销掉,重新放回工作区。
git rm <file> // 删除文件,若文件已提交到版本库,不用担心误删,但是只能恢复文件到最新版本

git checkout -b dev // 创建并切换分支
#相当于git branch dev 和git checkout dev
git branch // 查看当前分支,当前分支前有个*号
git branch <name> // 创建分支
git checkout <name> // 切换分支
git merge <name> // 合并某个分支到当前分支
git branch -d <name> // 删除分支
git log --graph // 查看分支合并图
/* 禁用Fast forward合并dev分支*/
git merge --no-ff -m 'message' dev
git stash // 隐藏当前工作现场,等恢复后继续工作
git stash list // 查看stash记录
git stash apply // 仅恢复现场,不删除stash内容
git stash drop // 删除stash内容
git stash pop // 恢复现场的同时删除stash内容
git branch -D <name> // 强行删除某个未合并的分支
#开发新feature最好新建一个分支
git remote // 查看远程仓库
git remote -v // 查看远程库详细信息
git pull // 抓取远程提交
/* 在本地创建和远程分支对应的分支*/
git checkout -b branch-name origin/branch-name
/* 建立本地分支和远程分支的关联*/
git branch --set-upstream branch-name origin/branch-name
阅读全文 »

Vector 遍历

vector<int> v1{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10};

通过数组下标遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
for (size_t i = 0; i < v1.size(); i++)
{
cout << v1[i] << "; ";
}
cout << endl;

for (size_t i = 0; i < v1.size(); i++)
{
cout << v1.at(i) << "; ";
}
cout << endl;

2; 3; 4; 5; 6; 7; 8; 9; 10; 10; 10;
1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 10;

通过迭代器遍历

1
2
3
4
5
6
for (vector<int>::iterator iter = v1.begin(); iter != v1.end(); iter++)
{
std::cout << *iter << "; ";
}
cout << endl;
1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 10;
阅读全文 »

spawn-fcgi 用法了解

spawn-fcgi 是一个小程序,作用是管理 fast-cgi 进程。

用 spawn 启动 FCGI 程序的方式为:

1
./spawn-fcgi -a 127.0.0.1 -p 8080 -F ${count} -f ${webroot}/bin/demo.fcgi

这样就会启动 count 个 demo.fcgi 程序,他们共同监听同一个 listen 端口 8080,从而提供服务。

阅读全文 »

MySQL 一些不熟的语句

DISTINCT

DISTINCT 关键词用于返回唯一不同的值。

1
SELECT DISTINCT column_name,column_name FROM table_name;

UPDATE

UPDATE 语句用于更新表中已存在的记录。

1
UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value;

注意 : UPDATE 语句中的 WHERE 子句!WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!

DELETE

DELETE 语句用于删除表中的行(记录)。

1
DELETE FROM table_name WHERE some_column=some_value;

注意 : SQL DELETE 语句中的 WHERE 子句!WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除!

阅读全文 »

nginx

nginx 配置

1
2
cat /etc/nginx/nginx.conf
cat /etc/nginx/conf.d/xxxxxxxx.conf

示例:路由 stdname 设置 nginx 监听 18026 收到请求后转发至 stdnameSvr 的 监听端口 19026

1
2
3
4
5
6
7
8
9
10
server {
listen 18026;
server_name localhost;

location /stdname/ {
fastcgi_pass 127.0.0.1:19026;
fastcgi_index index.cgi;
include fastcgi_params;
}
}
阅读全文 »