2020年2月

[1] 环境变量设置代理
$ sudo vim /etc/profile
增加如下两行

export http_proxy=http://ip:port
export https_proxy=http://ip:port

[2] wget 代理
$ sudo vim /etc/wgetrc

export http_proxy=http://ip:port
export https_proxy=http://ip:port

[3] apt 设置代理
$ sudo vim /etc/apt/apt.conf
如果这个文件不存在就创建一个

Acquire::http::Proxy “http://proxyusr:password@proxy_id:port”;
或
Acquire::http::Proxy “http://proxy_id:port”;

Acquire::ftp::proxy "ftp://192.168.0.1:88/";

Acquire::https::proxy "https://192.168.0.1:88/";

[4] yum 代理设置
sudo vim /etc/yum.conf
中加入下面

proxy=http://ip:port

[5] 用户代理设置
sudo vim ~/.bashrc

export http_proxy=http://ip:port
export https_proxy=http://ip:port

然后让它生效:
source ~/.bashrc

Vim前端开发神器--Emmet(html编辑插件)
1)去home目录下,并查看home目录下是否有.vim目录和.vimrc文件,如果没有,则新建,执行以下命令:

cd ~/.vim
touch .vimrc

2)安装pathogen.vim,执行以下命令
pathogen是安装其他包的工具
创建目录:

mkdir -p ~/.vim/autoload ~/.vim/bundle

安装pathogen:

curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
curl是软件安装的一种方式

3)安装git

sudo apt-get install git
使用以下命令测试git是否安装成功

git --version

4) 使用pathogen.vim和git安装vim-emmet

5).进入.vim的bundle目录

cd ~/.vim/bundle

6).下载插件

git clone https://github.com/mattn/emmet-vim.git

7).编辑.vimrc
vim ~/.vimrc
输入以下内容:

"启动pathogen插件管理器
      execute pathogen#infect()
"默认的触发键是ctrl+y+,
"更改触发键为ctrl+e 
      let g:user_emmet_expandabbr_key = '<C-e>'
"在每行前面显示文本行数:
      set nu  
"设置tab键缩进间距为两个英文字母长度
      set tabstop = 2
"设置换行后缩进对齐
      set autoindent

8)测试
测试
vim index.html
输入 html:5
然后用快捷建 ctrl+e

效果

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
     _
</body>
</html>

嵌套操作符
使用 > 生成元素子节点

<!-- div>ul>li -->
<div>
    <ul>
        <li></li>
    </ul>
</div>

使用 + 生成元素兄弟节点

<!-- div+p+bq -->
<div></div>
<p></p>
<blockquote></blockquote>

操作符 ^ 的作用和 > 刚好相反
用 ^ 可以在父级生成新的节点

<!-- div+div>p>span+em^bq -->
<div></div>
<div>
    <p><span></span><em></em></p>
    <blockquote></blockquote>
</div>

用n个 ^ ,就可以在第n父级生成新的节点

<!-- div+div>p>span+em^^^bq -->
<div></div>
<div>
    <p><span></span><em></em></p>
</div>
<blockquote></blockquote>

使用 * 生成多个相同元素

<!-- ul>li*5 -->
<ul>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>

圆括号 () 是Emmet的高级用法,用来实现比较复杂的DOM结构

<!-- div>(header>ul>li*2>a)+footer>p -->
<div>
    <header>
        <ul>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
        </ul>
    </header>
    <footer>
        <p></p>
    </footer>
</div>

还可以嵌套使用圆括号 ()

<!-- (div>dl>(dt+dd)*3)+footer>p -->
<div>
    <dl>
        <dt></dt>
        <dd></dd>
        <dt></dt>
        <dd></dd>
        <dt></dt>
        <dd></dd>
    </dl>
</div>
<footer>
    <p></p>
</footer>

属性操作
Emmet给元素添加ID和CLASS的方法和CSS的语法类似

<!-- div#header+div.page+div#footer.class1.class2.class3 -->
<div id="header"></div>
<div class="page"></div>
<div id="footer" class="class1 class2 class3"></div>

使用[attr]标记来添加自定义属性

<!-- td[title="Hello world!" colspan=3] -->
<td title="Hello world!" colspan="3"></td>

使用 $ 操作符可以对重复元素进行有序编号

<!-- ul>li.item$*5 -->
<ul>
    <li class="item1"></li>
    <li class="item2"></li>
    <li class="item3"></li>
    <li class="item4"></li>
    <li class="item5"></li>
</ul>

还可以用多个 $ 定义编号的格式

<!-- ul>li.item$$$*5 -->
<ul>
    <li class="item001"></li>
    <li class="item002"></li>
    <li class="item003"></li>
    <li class="item004"></li>
    <li class="item005"></li>
</ul>

使用 @ 修饰符可以改变编号的格式
在 $ 后面添加 @- 可以改变编号顺序

<!-- ul>li.item$@-*5 -->
<ul>
    <li class="item5"></li>
    <li class="item4"></li>
    <li class="item3"></li>
    <li class="item2"></li>
    <li class="item1"></li>
</ul>

在 $ 后面添加 @N 可以改变编号基数

<!-- ul>li.item$@3*5 -->
<ul>
    <li class="item3"></li>
    <li class="item4"></li>
    <li class="item5"></li>
    <li class="item6"></li>
    <li class="item7"></li>
</ul>

还可以组合使用上面的修饰符

<!-- ul>li.item$@-3*5 -->
<ul>
    <li class="item7"></li>
    <li class="item6"></li>
    <li class="item5"></li>
    <li class="item4"></li>
    <li class="item3"></li>
</ul>

文本操作
Emmet使用 Text:{} 给元素添加文本内容

a{Click me}--><a href="">Click me</a>
<!-- a{click}+b{here} -->
<a href="">click</a><b>here</b>
<!-- a>{click}+b{here} -->
<a href="">click<b>here</b></a>
<!-- p>{Click }+a{here}+{ to continue} -->

<p>Click <a href="">here</a> to continue</p>


其他例子

<!-- #page>div.logo+ul#navigation>li*5>a{Item $} -->
<div id="page">
    <div class="logo"></div>
    <ul id="navigation">
        <li><a href="">Item 1</a></li>
     <li><a href="">Item 2</a></li>
        <li><a href="">Item 3</a></li>
        <li><a href="">Item 4</a></li>
        <li><a href="">Item 5</a></li>
    </ul>
</div>

Emmet没有预设任何标签名,所以可以使用任何可用名称来生成HTML标签:div →

或 foo →

其他常用快捷键:

,    展开简写式
d    Balance a Tag Inward(选中包围的标签?)
D    Balance a Tag Outward
n    进入下个编辑点
N    进入上个编辑点
i    更新图像尺寸
m    合并文本行
k    删除标签
j    分解/展开空标签
/    注释开关
a    从URL生成anchor标签
A    从URL生成引用文本

cmd 里面的 certutil
Power Shell 里面的 Get-FileHash

用法: CertUtil [选项] -hashfile InFile [HashAlgorithm]
certutil -hashfile D:\1.txt
certutil -hashfile D:\1.txt md5
Get-FileHash D:\1.txt
Get-FileHash D:\1.txt -Algorithm md5

mysqlslap -hlocalhost -uroot -p123456 -P3306 --concurrency=1100 --iterations=1 --auto-generate-sql --auto-generate-sql-load-type=mixed --auto-generate-sql-add-autoincrement --engine=innodb --number-of-queries=1000 --debug-info

执行结果如下:
Benchmark

Running for engine innodb
Average number of seconds to run all queries: 1.630 seconds
Minimum number of seconds to run all queries: 1.630 seconds
Maximum number of seconds to run all queries: 1.630 seconds
Number of clients running queries: 1100
Average number of queries per client: 0

User time 0.53, System time 0.92

常用参数 [options] 详细说明:

--auto-generate-sql, -a 自动生成测试表和数据,表示用mysqlslap工具自己生成的SQL脚本来测试并发压力。
--auto-generate-sql-load-type=type 测试语句的类型。代表要测试的环境是读操作还是写操作还是两者混合的。取值包括:read,key,write,update和mixed(默认)。
--auto-generate-sql-add-auto-increment 代表对生成的表自动添加auto_increment列,从5.1.18版本开始支持。
--number-char-cols=N, -x N 自动生成的测试表中包含多少个字符类型的列,默认1
--number-int-cols=N, -y N 自动生成的测试表中包含多少个数字类型的列,默认1
--number-of-queries=N 总的测试查询次数(并发客户数×每客户查询次数)
--query=name,-q 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。
--create-schema 代表自定义的测试库名称,测试的schema,MySQL中schema也就是database。
--commint=N 多少条DML后提交一次。
--compress, -C 如果服务器和客户端支持都压缩,则压缩信息传递。
--concurrency=N, -c N 表示并发量,也就是模拟多少个客户端同时执行select。可指定多个值,以逗号或者--delimiter参数指定的值做为分隔符。例如:--concurrency=100,200,500。
--engine=engine_name, -e engine_name 代表要测试的引擎,可以有多个,用分隔符隔开。例如:--engines=myisam,innodb。
--iterations=N, -i N 测试执行的迭代次数,代表要在不同并发环境下,各自运行测试多少次。
--only-print 只打印测试语句而不实际执行。
--detach=N 执行N条语句后断开重连。
--debug-info, -T 打印内存和CPU的相关信息。

说明:
测试的过程需要生成测试表,插入测试数据,这个mysqlslap可以自动生成,默认生成一个mysqlslap的schema,如果已经存在则先删除。可以用--only-print来打印实际的测试过程,整个测试完成后不会在数据库中留下痕迹。

各种测试参数实例(-p后面跟的是mysql的root密码):

单线程测试。测试做了什么。

mysqlslap -a -uroot -p123456

多线程测试。使用–concurrency来模拟并发连接。

mysqlslap -a -c 100 -uroot -p123456

迭代测试。用于需要多次执行测试得到平均值。

mysqlslap -a -i 10 -uroot -p123456

mysqlslap ---auto-generate-sql-add-autoincrement -a -uroot -p123456

mysqlslap -a --auto-generate-sql-load-type=read -uroot -p123456

mysqlslap -a --auto-generate-secondary-indexes=3 -uroot -p123456

mysqlslap -a --auto-generate-sql-write-number=1000 -uroot -p123456

mysqlslap --create-schema world -q "select count(*) from City" -uroot -p123456

mysqlslap -a -e innodb -uroot -p123456

mysqlslap -a --number-of-queries=10 -uroot -p123456

测试同时不同的存储引擎的性能进行对比:

mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb --debug-info -uroot -p123456

执行一次测试,分别50和100个并发,执行1000次总查询:

mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --debug-info -uroot -p123456

50和100个并发分别得到一次测试结果(Benchmark),并发数越多,执行完所有查询的时间越长。为了准确起见,可以多迭代测试几次:

mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --debug-info -uroot -p123456