gevent协程

模拟多线程运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from gevent import monkey
monkey.patch_all()
import gevent

def foo():
print('Running in foo')
gevent.sleep(0)
print('Explicit context switch to foo again')

def bar():
print('Explicit context to bar')
gevent.sleep(0)
print('Implicit context switch back to bar')

gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])

python遍历文件夹

followlinks表示是否扫描软连接,topdown是否广度遍历

1
2
3
4
5
6
7
def get_file_path(dir_path):
"""获取文件夹下面的所有文件,包括子文件夹"""
file_list = os.walk(dir_path, topdown=True, onerror=None, followlinks=False)
for root, dirs, files in file_list:
for f in files:
path = os.path.join(root, f)
yield path.replace('\\', '/')

常用压缩命令

解压

1
2
3
4
5
6
7
8
tar -xvf file.tar
tar -xzvf file.tar.gz
tar -xjvf file.tar.bz2
tar -xZvf file.tar.Z
unrar e file.rar
unzip file.zip
tar zxvf file.tgz
gzip -d

压缩

1
2
3
4
5
6
7
8
压缩: tar -cvf FileName.tar DirName
解压: tar -xvf FileName.tar

例子: c++目录 压缩成 c++.tar
tar -cvf c++.tar c++

c++.tar解压成c++
tar -xvf c++.tar

win32项目中调出和隐藏控制台

显示控制台,并且能用print打印显示,方便调试

1
2
3
4
5
6
7
::AllocConsole();
::SetConsoleTitle(_T("测试控制台"));
freopen("conin$","r+t",stdin);
freopen("conout$","w+t",stdout);
freopen("conerr$","w+t",stderr);
//释放
FreeConsole();

win32控制台工程隐藏dos窗口

1
#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )

常用js代码

判断是否ip地址

1
2
3
4
function check_is_ip(s) {
var patt = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/;
return patt.test(s);
}

字符串格式化

1
2
3
4
5
6
String.prototype.format  = function() {    
var args = arguments;
return this.replace(/\{(\d+)\}/g, function(m,i) {
return args[i];
});
};

Qt设置渐变背景

qss

1
background-color: qlineargradient(spread:repeat, x1: 0, y1: 0, x2: 0, y2: 1, stop: 0#2ba0d6, stop: 1 #138abd);

widget

1
2
3
4
5
6
7
8
QLinearGradient linearGradient(0, 0, 0, 300);
linearGradient.setColorAt(0.0, Qt::green);
linearGradient.setColorAt(1.0, Qt::blue);
QPalette pal;
pal.setBrush(QPalette::Window, QBrush(linearGradient));
//设置背景自动填充
ui->widget->setAutoFillBackground(true);
ui->widget->setPalette(pal);

nginx配置https证书

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
#upstream mysvr {
# server 127.0.0.1:8099 weight=1;
# server 127.0.0.1:8099 weight=1;
#}
server {
server_name example.com;
listen 443 ssl;
ssl_certificate /home/stat/example.com/cert/example.com.crt;
ssl_certificate_key /home/stat/example.com/cert/ca.example.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
log_format example_log '[$time_local] $remote_addr "$request" '
'$status $upstream_status $body_bytes_sent $request_time $upstream_response_time '
'"$remote_user" "$http_user_agent" "$http_referer"';
access_log /var/www/example/nginxlog/access.log example_log;
error_log /var/www/example/nginxlog/error.log;
gzip on;
location ~ ^/static/ {
root /var/www/example;
}
location / {
proxy_set_header Host $host;
proxy_set_header X-REAL-IP $remote_addr;
proxy_set_header X-FORWARDED-FOR $proxy_add_x_forwarded_for;
proxy_ignore_client_abort on;
#proxy_pass http://mysvr;
proxy_pass http://127.0.0.1:8099;
}
}

mysql数据库设置

修改密码

1
mysqladmin -u用户名 -p旧密码 password 新密码

备份还原数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
# 设置从特定地址的服务器导出数据, 缺省主机是localhost, 则设置参数-h 或 --host=
# 备份所有数据库:
mysqldump -u root -p123 --all-database > test.sql
# 备份数据库test
mysqldump -u root -p123 dbname > dbname.$(date "+%Y-%m-%d").sql
# 备份数据库test下的temp表:
mysqldump -u root -p123 test demp > test.sql
# 还原数据库test
mysqldump -u root -p123 test < test.sql
# 还原数据库test下的temp表:
mysqldump -u root -p123 test demp < test.sql
# 但是有时候这样还原不了,那就进入mysql控制台,使用命令:
source test.sql