-
Notifications
You must be signed in to change notification settings - Fork 1
Home
helloc edited this page Jun 14, 2022
·
9 revisions
WORKSPACE=$(readlink -f $(dirname $0)/..)
WORKSPACE=$(cd $(dirname $0)/..; pwd)
/sbin/ifconfig eth0|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"
var="http://example/a.com"
# 获取字符串长度
>>> echo ${#var}
20
# '#'最小限度 砍前面(*在分隔符之前)
>>> echo ${var#*/}
/example/a.com
# '##'最大限度 砍前面(*在分隔符之前)
>>> echo ${var##*/}
a.com
# '%'最小限度 砍后面(*在分隔符之后)
>>> echo ${var%/*}
http://example
# '%%'最大限度 砍后面(*在分隔符之后)
>>> echo ${var%%/*}
http:
# 指定字符
>>> echo ${var:1:9}
ttp://ex
# 左数第几个字符直到结束
echo ${var:start}
>>> echo ${var:2}
tp://example/a.com
# 右数第几个字符直到结束
echo ${var:0-start}
>>> echo ${var:0-3}
com
# 从右边第几个字符开始以及字符的个数
echo ${var:0-start:len}
>>> echo ${var:0-5:3}
a.carray=(
'abc'
'def'
'xyz'
)
# 输出数组长度: 3
echo ${#array[@]}
# 遍历输出数组元素及其索引: 0:abc 1:def 2:xyz
for i in ${!array[@]};do
echo $i:${array[$i]}
done
# 遍历输出数组元素: abc def xyz
for x in ${array[@]};do
echo $x
done-
.zshrccontent
eval `ssh-agent -s`
./vpn.sh
ssh username@ip -p port
-
vpn.shcontent
#!/usr/bin/expect
spawn ssh-add xxx.pem
set timeout 10
expect "*xxx.pem:" {send "password\n"}
expect eof
exit
chmod 755 vpn.sh
# 远程机器执行(加双引号)
sshpass -p'password' ssh root@ip -o StrictHostKeyChecking=no "sh /root/gate.sh $TARGET_BRANCH"
# 与本地机器交互(不加引号)
sshpass -p'password' scp root@ip:/root/pytest.html $WORKSPACE/pytest.html
- centos:
/usr/lib/systemd/system/xxx.serviceubuntu:/lib/systemd/system/xxx.service
[Unit]
Description=Devpi Server
After=syslog.target network.target
[Service]
Type=simple
User=root
ExecStart=/usr/bin/python2 /usr/bin/devpi-server --role=master --host=0.0.0.0
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reloadsystemctl enable xxx.service
# 迁移数据库全部表结构(不包含数据)
mysqldump --opt -uroot -p[password] -d [old_database] | mysql -uroot -p[paasword] [new_databse]
# 迁移单表结构和数据
mysqldump -uroot -p[password] -B [old_database] --tables [table_name] | mysql -uroot -p[password] [new_database]
# 导出
mysqldump -uroot -p[password] dbname > dbname.sql
mysqldump -uroot -p[password] --all-databases > data.sql
# 导入方法1
mysql -uroot -p[password] < data.sql
# 导入方法2
mysql> source data.sql;多线程适用于阻塞式IO场景,不适用于并行计算场景。
Python的标准实现是CPython。CPython执行Python代码分为2个步骤:首先,将文本源码解释编译为字节码,然后再用一个解释器去 解释运行字节码。字节码解释器是有状态的,需要维护该状态的一致性,因此使用了GIL(Global Interpreter Lock,全局解释器锁)。
GIL的存在,使得CPython在执行多线程代码的时候,同一时刻只有一个线程在运行,无法利用多CPU 提高运算效率。但是这个特点也带来了一个好处:CPython运行多线程的时候,内部对象缺省就是线程安全的。这个特性,被非常多的Python库开发者所依赖,直到CPython的开发者想要去除GIL的时候,发现已经有大量的代码库重度依赖这个GIL带来的内部对象缺省就是线程安全的特性,变成一个无法解决的问题了。
虽然多线程在并行计算场景下无法带来好处,但是在阻塞式IO场景下,却仍然可以起到提高效率的作用。这是因为阻塞式IO场景下,线程在执行IO操作时并不需要占用CPU时间,此时阻塞IO的线程可以被 挂起的同时继续执行IO操作,而让出CPU时间给其他线程执行非IO操作。这样一来,多线程并行IO操作 就可以起到提高运行效率的作用了。 综上,Python的标准实现CPython,由于GIL的存在,同一个时刻只能运行一个线程,无法充分利用多CPU提升运算效率,因此Python的多线程适用于阻塞式IO的场景,不适用于并行计算的场景。
编码就是编成字节码。字符串根据utf8编码encode为字节码,字节解码decode对应的字符串。
有一个UTF-8编码的文件,需要转码成GBK编码的文件:decode('utf-8') —> encode('gbk'),注意这里文件就是字节码。
字符转成字节的方法: encode('utf8')
decode('utf8') --> unicode --> encode('gbk')
| |
utf8 gbk
| |
encode('utf8') <-- unicode <-- decode('gbk')
- 获取工作目录
from os.path import dirname, abspath
FILE_PATH = abspath(__file__)
DIR_PATH = dirname(abspath(__file__))
PAR_DIR = dirname(dirname(abspath(__file__)))- 去除文件空白行
lines = list(filter(None, (line.strip() for line in reader)))- 每隔n个字符切割字符串
lines = [_str[idx:idx+n] for idx,val in enumerate(_str) if idx % n == 0]- 列表生成式
nums = [[0 for y in range(2)] for x in range(5)]- 字典按values值逆序排序
sorted(result.items(), key=lambda item: item[1], reverse=True)- 列表排序,0移到最后
nums = [2, 0, 0, 1, 5]
nums.sort(key=bool, reverse=True)
# nums = [2, 1, 5, 0, 0]- json导出对象
with open('result.json', 'w') as writer:
json.dump(my_obj, writer, default=lambda o: o.__dict__, ensure_ascii=False, indent=4)# pylint --generate-rcfile > ~/.pylintrc
[MESSAGES CONTROL]
disable=C0111,
C0301,
W0703,