linux dns配置文件是"/etc/resolv.conf",该配置文件用于配置DNS客户,它包含了主机的域名搜索顺序和DNS/服务器的地址,每一行包括一个关键字和一个或多个空格隔开的参数。
/etc/resolv.conf (不配置就不能域名解析)
可以配置路由器网关或者dns服务器:
nameserver 192.168.0.1
nameserver 114.114.114.114
du -sh 递归看当前目录占用空间大小。
du -sh * 递归看当前目录下各个目录或文件的大小。
df -h 看磁盘总空间,及已用空间。
和我遇到的情况一样, /var/crash应该是系统崩溃记录下来的日志。
操作系统硬件或者软件故障导致操作系统崩溃的日志记录,crash目录里面的大文件也是服务器崩溃的时候产生的主要是提供给系统管理员分析系统崩溃原因用的。
linux /var/crash目录暴增
https://www.modb.pro/db/224470
长见识了,可以这么写。pandas筛选长度
import pandas as pd
def invalid_tweets(tweets: pd.DataFrame) -> pd.DataFrame:
is_valid = tweets['content'].str.len() > 15
df = tweets[is_valid]
return df[['tweet_id']]
Zookeeper配置文件端口相关:
#the port at which the clients will connect
clientPort是与客户端连接的端口
clientPort=2181
server.A=B:C:D
尾部新增如上配置。A为一个节点编号,如0或1或2。B为节点ip地址。C为Leader选举端口。D为数据同步端口。
https://www.kancloud.cn/zhangpn/zookeeper/1654670
kafka启动
kafka-server-start.sh $KAFKA_HOME/conf/server.properties &
Zookeeper命令
zkServer.sh start # 启动
zkServer.sh status # 查看状态
zkServer.sh stop # 停止
zkServer.sh restart # 重启
Kafka并不难学!入门、进阶、商业实战 邓杰编著(第二章)
kafka和ZooKeeper安装:
https://www.kancloud.cn/zhangpn/zookeeper/1654670
https://www.kancloud.cn/zhangpn/kafka/1658561
kafka安装:
https://kafka.apache.org/downloads
https://archive.apache.org/dist/kafka/
ZooKeeper安装:
https://zookeeper.apache.org/releases.html#download
https://archive.apache.org/dist/zookeeper/
zookeeper和kafka集群的版本适配
kafka zookeeper
kafka_2.13-2.7.0 zookeeper-3.5.8
kafka_2.13-2.6.x zookeeper-3.5.8
kafka_2.12-2.5.0 zookeeper-3.5.8
kafka_2.12-2.4.0 zookeeper-3.5.6
kafka_2.12-2.3.1 zookeeper-3.4.14
kafka_2.12-2.3.0 zookeeper-3.4.14
kafka_2.12-1.1.1 zookeeper-3.4.10
kafka_2.12-1.1.0 zookeeper-3.4.10
kafka_2.12-1.0.2 zookeeper-3.4.10
kafka_2.12-0.11.0.0 zookeeper-3.4.10
kafka_2.12-0.10.2.2 zookeeper-3.4.9
kafka_2.12-0.10.0.0 zookeeper-3.4.6
kafka_2.12-0.9.0.0 zookeeper-3.4.6
https://zhuanlan.zhihu.com/p/360095145?utm_id=0
zabbix图形化配置mysql报错:发现Database host写 localhost报错,写127.0.0.1就正常:
Please create database manually, and set the configuration parameters for connection to this database. Press "Next step" button when done.
Details Cannot connect to the database.
No such file or directory
启动服务,并开机自启: systemctl enable --now 加服务
HAVING的用法,因为count(*)不能筛选
SELECT DISTINCT version FROM
(SELECT version,COUNT(*) CT FROM test_table GROUP BY version HAVING CT > 20000) T
ORDER BY version DESC LIMIT 2
zcat 查看压缩包里面的内容
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -utest -p test
搭建kafka
https://baijiahao.baidu.com/s?id=1761361346909650797\&wfr=spider\&for=pc
https://blog.csdn.net/abments/article/details/128993066
https://mikechen.cc/24924.html
https://dgrt.cn/a/2261784.html?action=onClick
https://mikechen.cc/24926.html
搭建kafka:https://mikechen.cc/24924.html
确实好用,df.query
num_list = [2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 30]
df = df.query("time_horizon in @num_list")
crontab -l crontab -e
每6小时一次定时,覆盖式写入:
0 */6 * * * echo y | cp /home/test.config /data/test.config
不覆盖写入:
cp -n /home/test.config /data/test.config
想了一下,其实是因为用了内网穿透的原因。
mysql 报错 虽然回显是内网ip,但是我们是外网ip连的,不能因为看见是内网ip就断定是运行的内网代码; Access denied for userxxxx@内网IP' (using password: YES)
查看端口号:
ss -an
netstat -an
lsof -i -P -n
可以使用以下命令来查看 k8s 占用的端口号:kubectl get svc
telnet 192.168.0.100 80 看端口是否开启
Trying 192.168.0.100...
Connected to 192.168.0.100.
Escape character is '^]'.
^]
按ctl + ]号进入telnet界面,说明连接成功
https://jingyan.baidu.com/article/63f236285a48180209ab3d4a.html
ifdown 网卡名 ifup 网卡名 好了。虽然
systemctl status network看见网络还是失败,但是网络可以用了。
不知道是不是什么冲突之类的。
https://blog.csdn.net/wuds_158/article/details/131409495
mysql
查看设置最大连接数,与已用最大连接数
show variables like 'max_connections';
show global status like 'Max_used_connections';
https://blog.csdn.net/LelemamaAnne/article/details/113585805
使用管道给cp传值:
find . -name "*.jar" | xargs -i cp {} /dir
cp后面的{}会被替换成xargs的输入
也可以使用
find . -name "*.jar" | xargs -I {} cp -r {} .
建议使用-I{}来代替 (大写i,不是小写L)
版权声明:本文为CSDN博主「yayaqwl」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011517841/article/details/82347228
linux 获取倒数第二行数据
tail -n 2 mysql-bin.index | head -n 1
如何手动清理binlog
1.使用MySQL命令行
在MySQL命令行中,使用PURGE BINARY LOGS语句可以删除所有指定日期前创建的过期binlog日志文件。
例如,为了删除超过7天的binlog日志文件,可以运行以下命令:
PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);
1
2.按照binlog名称删除
#将mysql-bin.000011之前的日志清理掉
mysql> purge binary logs to 'mysql-bin.000011';
Query OK, 0 rows affected (0.01 sec)
1
2
3
3.按照时间删除
#删除2023-03-21 18:08:00之前的binlog日志
mysql> purge binary logs before '2023-03-21 18:08:00';
Query OK, 0 rows affected, 1 warning (0.02 sec)
版权声明:本文为CSDN博主「Clang的技术博客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012899618/article/details/129790336
[mysqld]
#设置日志保留天数
expire_logs_days=7
#设置日志文件最大大小
max_binlog_size=100M
用代码实现mysql同步删,mysql的binlog格式一般设置为row,这种格式解析精准。
mysqlbinlog可以指定数据库
mysqlbinlog --database my_test_database --base64-output=decode-rows --verbose mysql-bin.001364 | grep -i -A 10 delete
正则表达式:匹配忽略大小写,加 re.I
s = 'That'
pat = r't'
results = re.findall(pat,s,re.I)
正则表达式
获取数字串:re.findall("mysql-bin.(\d+)", res)
cp -n 不要覆盖已存在的文件。(不需要交互式输出)
python的subprocess模块来执行linux命令,并获取结果。
python之subprocess模块 : import subprocess
subprocess.getstatusoutput(cmd) 执行cmd命令,返回一个元组(命令执行状态, 命令执行结果输出),其功能类似于commands.getstatusoutput()
https://blog.csdn.net/qq_43331089/article/details/124421661
git clone分支 重命名(git链接后面加 自己的命名,可以重命名来区分不同分支)
git clone --depth=1 -b my_branch_2 http://project1.git project1_my_branch_2
https://baijiahao.baidu.com/s?id=1757643389424134685\&wfr=spider\&for=pc
mysq查看死锁进程
select * from information_schema.innodb_trx
kill 240727
https://blog.csdn.net/David_jiahuan/article/details/91558816
https://blog.51cto.com/u_12390904/6254246
pycharm 打开文件数量设置默认10个 File --> Settings -->Editor -->General --> Editor Tabs --> Tab limit
sql语句里有单引号或者双引号之类的字符,如果不是必须的可以replace去掉:
str(e).replace('"', ' ')
sql_update = """update 1_test_table set is_ok= "{}" """.format(
e)
python保存输出到文件:
import sys
f = open('test_log.txt', 'w')
sys.stdout = f
print('输出输出')
f.close()
优先级为:内置模块 > 自定义包 > 自定义模块 > 三方安装包
https://blog.csdn.net/UZDW_/article/details/131745636
git回退版本:
场景一:如果想将代码恢复到之前某个提交的版本,且那个版本之后提交的版本都不要了,就可以使用 git rest
原理: git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本
操作:
查看版本号:git log,也可以上代码托管网页上查看history,找到需要回滚的目标版本号
使用"git reset --hard 目标版本号"命令将版本回退
使用"git push -f"提交更改,此时如果用"git push"会报错,因为我们本地库HEAD指向的版本比远程库的要旧,用"git push -f"强制推上去。
版权声明:本文为CSDN博主「泡泡大怪兽」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45032067/article/details/124621305
scrapy设置延时,单位秒
DOWNLOAD_DELAY=2
(pymysql.err.0perationalEmror)(206,"mySQL erver has gone away (ComectionResetEror(10854,"远程主机强迫关闭7一个现有的连接。", None, 10054,Wone))' 应该是单次入库太多,我修改了一下max_allowed_packet 就好了。
查看: show global variables like 'max_allowed_packet';
设置:set global max_allowed_packet =33554432;
影响范围:
设置太大,会使用更多内存,很容易导致丢包,无法捕捉异常大事物包SQL
设置太小,可能会导致程序报错,备份失败,也会导致频繁的收发网络报,影响系统性能
修改:一般32M足够
[Mysql] >set global max_allowed_packet =33554432;
修改配置文件:
[mysqld]
max_allowed_packet=32M
https://cloud.tencent.com/developer/article/1103836
MySQL 对大小写是否敏感,由 lower_case_table_names 参数来控制,修改此参数需要重启数据库才能生效。
lower_case_table_names = 0:表名区分大小写,且按照用户指定存储。
lower_case_table_names = 1:表不区分大小写,使用小写存储。
lower_case_table_names = 2:表不区分大小写,按照用户指定存储
又遇到一个问题:https://blog.51cto.com/u_15072920/4373675
python中,No module named 'main .models'; 'main' is not a package解决方法:
将相对路径改为绝对路径:
from .bird_base import BirdBase------改为-----> from python_learning.bird_base import BirdBase
mysqldump安装:yum install mysql
对应退出的容器,用 docker start 启动。
docker run 是使用镜像创建新容器。
先编辑一下docker容器里的文件,发现容器没有编辑器:
可以通过 docker cp 解决:
方法:通过copy进行编辑
查看运行的容器:docker ps -a
选择需要编辑容器进行登陆 sudo docker exec -it 容器名 /bin/bash ,通过ls或 whereis 文件名或文件夹 进行查看需要编辑的文件的位置或者文件夹位置在哪
退出该容器内部 exit;
通过 docker cp 容器名:/etc/确认copy的文件或文件夹 /home/拷贝到的外部文件夹 把文件拷贝出来
通过 cd 拷贝到的文件夹位置,可以使用 xftp工具直接对文件夹进行编辑,或通过命令 vi vim 进行编辑
编辑完后,再通过 docker cp /home/拷贝到的外部文件夹 容器名:/etc/确认copy的文件或文件夹 拷贝回去
最后重启一下编辑过文件的容器,然后进行测试有没有生效
一个字段不小心尾部多了个空格,可以用下列sql快速去除空格:
UPDATE 表名 SET 字段名 = REPLACE(字段名, ' ', '')
https://www.yzktw.com.cn/post/650656.html
pip install 或者 pip2 install 三方库失败,一般是因为包不兼容,要指定就可以了。
https://blog.csdn.net/crazytire/article/details/125964956
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
警告:远程主机标识已更改!
这个报错主要是因为远程主机的ssh公钥发生了变化,两边不一致导致的
删除本地对应ip的在known_hosts相关信息
ssh登陆报错"IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!"问题原因及解决方法
https://huaweicloud.csdn.net/635641f3d3efff3090b5c7c7.html
在python3中,sys.maxint改为sys.maxsize.
'dict' object has no attribute 'has_key'
已于 2022-05-08 10:35:30 修改
3378
收藏 2
分类专栏: Python 文章标签: py2 py3
版权
这个问题是py2和py3兼容性的问题
在py2中,判断key是否属于dict的写法可以是:
d={'name':'abc','location':'BeiJing'}
if d.has_key('location'):
print(d['location'])
在py3中,判断key是否属于字典的写法可以是:
d={'name':'abc','location':'BeiJing'}
if 'location' in d:
print(d['location'])
版权声明:本文为CSDN博主「upDiff」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dlhlSC/article/details/90299500
scrapy:
https://blog.csdn.net/qq_44907926/article/details/119531324
scrapy官方文档:
https://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html
scrapy 里面的item转化为dataframe:
df = pd.DataFrame(dict(item2), index=[0])
字典转化为dataframe:
df = pd.DataFrame(mydict, index=[0])
必须先把item转为字典,再转为dataframe。
如果是单条数据,必须加 index=[0], 多条则不用。
想起以前遇到的一个关于 pd.read_excel 的问题:
import pandas as pd
from urllib.request import urlopen
url = "http://xxxxxxxxxx"
#python3要加read,py2不用(这里也是个点)
df = pd.read_excel(urlopen(url).read(),converters={'字段1';:str,'字段2':str})
如果运行报错就#Install xlrd >= 1.0.0 for Excel support Use pip or conda to
安装版本pip install xlrd==1.1.0就可以了。
原来这个报错和SQLAlchemy版本有关系
这个版本是sqlalchemy版本的是1.4.3的版本, 2.0的版本是不适用的
AttributeError: 'Engine' object has no attribute 'execute'
https://blog.csdn.net/Deng872347348/article/details/129898331
pycharm菜单栏消失了,双击shift搜索 'menu'或者'菜单'即可显示菜单栏。
https://www.ycpai.cn/python/icrD9HxH.html
这个方法不错,拿jsonpCallback里面的json:
filter = re.findall("(jsonpCallback.?().+",response)[0]
filter=re.findall("jQuery.?((.*?));", content)[0]
content=response.text.replace('\n','').replace('\r','')
content = response.text.replace('\n', '').replace('\r', '').replace(' ', '')
filter=re.findall("jQuery.?((. ?));", content)
正则匹配网页要去掉\n和\r,不然可能会匹配不上。
.* 是贪婪模式,倾向于获取最长的满足条件的字符串;
.* ?是非贪婪模式,倾向于获取最短的能满足条件的字符串。
如果json内部也有小括号的时候,括号内部用.* 贪婪匹配 :
filter=re.findall("jQuery.?((. ));", content)
filter=re.findall("jQuery.?((.?));", content)
linux设置开机自启动:
在/etc/rc.local文件中添加自启动命令
测试了一下,还可以,蛮好用的
docker-compose 用pip安装:
pip install docker-compose
https://www.itbulu.com/python-setuppy-egginfo.html
mysql查询一小时内数据:
SELECT * FROM table_name WHERE date_column > DATE_SUB(NOW(), INTERVAL 1 HOUR);
看了几篇文章,发现这个最好用(就是jenkins任务一直卡着,×不掉的用命令行清理)
1、Manage Jenkins->Script Console(系统管理-工具和动作-脚本命令行)
Jenkins.instance.getItemByFullName("清洗任务1").getBuildByNumber(9711).delete();
清洗任务1是job名字,9711是Build号
版权声明:本文为CSDN博主「萌翻天」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40308101/article/details/125806891
要停止所有 Docker 容器,您可以运行以下命令:
docker stop$(docker ps -a -q)
1
2
这个命令会停止所有正在运行的容器,并且会忽略已经停止的容器。如果您想要删除这些容器,可以使用以下命令:
docker rm$(docker ps -a -q)
docker一条命令启动、关闭、停止、删除 所有容器
1.docker中 启动所有的容器命令
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
2.docker中 停止所有的容器命令
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
- docker中 删除所有的容器命令
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
- docker中 删除所有的镜像
docker rmi $(docker images | awk '{print $3}' |tail -n +2)
- 更新容器为开机自启
docker update --restart=always mysql #设置MySQL为开机自启
6.根据容器的状态,删除Exited状态的所有容器
sudo docker rm $(sudo docker ps -qf status=exited)
docker 出现root也无法停止、删除的问题
解决:
执行命令:
aa-remove-unknown
https://blog.csdn.net/lau_jw/article/details/126598759
原来lanproxy服务端的端口对应等配置信息在这个地方: /root/.lanproxy
又get到一个新知识zfill:
zfill的功能
为字符串定义长度,如不满足,缺少的部分用0填补
zfill的用法
用法:newstr = string.zfill(width)
参数:width新字符串希望的宽度
In [14]: name = 'insane'
In [15]: new_name = name.zfill(10)
In [16]: print(new_name)
0000insane
版权声明:本文为CSDN博主「Insane_Loafer」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_48978908/article/details/119189964
获取汉字首字母拼音
from pypinyin import pinyin as py, Style as py_style
person_name_py = "".join([x[0] for x in py('李小白', style=py_style.FIRST_LETTER)]).upper()
为什么requests.get(url)得到的response不能使用简洁用法 response.xpath(需要先用etree.HTML()方法过渡),而scrapy中parse方法内却能直接使用response.xpath?
requests和scrapy的response是两个类,requests的没有封装xpath方法
https://zhuanlan.zhihu.com/p/40332579
查看目录总大小
du -sh ./root
du 参数 目录
-h:单位以用户友好方式展示
-c: 统计目录文件大小
-a:显示目录下所有的文件
--time:显示目录文件修改的最后时间
--exclude:排除某个目录
-s:直接显示目录的使用大小
-BK:以KB为单位显示目录大小
-BM:以MB为单位显示目录大小
-BG:以GB为单位显示目录大小
https://baijiahao.baidu.com/s?id=1741054542770174942\&wfr=spider\&for=pc
docker exec -it my_ginx /bin/bash
failed to create runc console socket: mkdir /tmp/pty179331520: no space left on device: unknown
应该是磁盘空间不够了
清理docker日志,参考这篇文章
https://blog.csdn.net/WLPJLP/article/details/121371788
bash
#!/bin/bash
echo "开始清理docker日志"
#容器的路径 默认的就是下面的,如果是自定义的docker的路径就改自己定的路径
CONTAINER_DIR=/var/lib/docker/containers
获取所有的容器日志文件
CONTAINER_LOGS=$(find $CONTAINER_DIR -name "*-json.log")
#清理每个容器的日志
for LOG in $CONTAINER_LOGS; do
LOG_FILE=${LOG##*/}
echo "容器的ID:${LOG_FILE/-json.log/} 清理的日志文件:$LOG_FILE"
cat /dev/null >"$LOG"
# 也可以使用-> echo "" >"$LOG"
done
版权声明:本文为CSDN博主「shareloke」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/WLPJLP/article/details/121371788
https://console.cloud.tencent.com/cns
改域名对应ip。每个子域名都可以对应不同IP
好用,真方便!
https://www.runoob.com/docker/docker-compose.html
docker-compose.yml 配置文件:
使用 Compose 命令构建和运行您的应用
在测试目录中,执行以下命令来启动应用程序:
docker-compose up
如果你想在后台执行该服务可以加上 -d 参数:
docker-compose up -d
zip 命令为压缩命令,压缩后不覆盖源文件,可以压缩目录,一般后缀名为.zip用于压缩文件,其语法格式如下:
zip [选项] 文件名.zip /xxx/路径xxx/文件
1
常用参数选项如下:
-v :可视化操作,显示压缩的执行过程,默认就是可视化
-q : 静默操作,不显示指令执行过程
-r :表示递归打包包含子目录的全部内容
-d :从压缩文件内删除指定的文件
-n :n为一个数字,压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好
-e :加密压缩文件
-u :追加文件到zip压缩包中
1
2
3
4
5
6
7
演示示例:
zip -vr etc.zip /etc/ #压缩/etc/目录,压缩文件名为etc.zip
zip -d myfile.zip smart.txt #删除压缩文件中的指定文件
zip -e passwd.zip /etc/passwd #加密压缩,需要输入密码
zip -u passwd.zip mypasww.txt #追加mypasww.txt文件到压缩包中
版权声明:本文为CSDN博主「MssGuo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/MssGuo/article/details/117324818
调整服务器内核参数
① Linux 提供了 tcp_max_tw_buckets 参数,当 TIME_WAIT 的连接数量超过该参数时,新关闭的连接就不再经历 TIME_WAIT 而直接关闭:
[root@kvm-10-115-88-47 ~]# cat /proc/sys/net/ipv4/tcp_max_tw_buckets
1.sort_values()方法
sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')
①axis 如果axis=0,那么by="列名"; 如果axis=1,那么by="行名";
②ascending: True则升序,可以是[True,False],即第一字段升序,第二个降序
③inplace: 是否用排序后的数据框替换现有的数据框 ,True,或者False
④kind: 排序方法
⑤na_position : {'first', 'last'}, default 'last',默认缺失值排在最后面
版权声明:本文为CSDN博主「Clyde_刘」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_51098806/article/details/115264798
Jenkins 时间输出:如何设置打印时间为钟表时间,而不是脚本运行时间
输出界面左边配置:
Timestamps
View as plain text
System clock time
Use browser timezone
Elapsed time
None
mysql对NULL的判断: = 和 != 运算符是不起作用的,必须使用 IS NULL 和 IS NOT NULL
mysql limit用法:
LIMIT 初始位置,记录数
其中,"初始位置"表示从哪条记录开始显示;"记录数"表示显示记录的条数。第一条记录的位置是 0,第二条记录的位置是 1。后面的记录依次类推。
注意:LIMIT 后的两个参数必须都是正整数。
比如:
select * from test limit 2,5
就是从test表里,第三条记录开始取,一共取5条记录
mysql配置文件的server-id是4字节整数,范围从0-4294967295。不能重复,可以设置为ip的末端号。
XtraBackup 环境安装
https://blog.csdn.net/A___LEi/article/details/127661509
[root@centos7 ~]# yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
[root@centos7 ~]# yum -y install percona-xtrabackup-24
[root@centos7 ~]# yum -y install qpress ##innobackupex支持压缩导出,这里安装压缩工具
[root@centos7 ~]# innobackupex -version ###如果出现如下提示表示安装成功,我这里2.4.15
xtrabackup: recognized server arguments: --server-id=11 --datadir=/data/mysql_data --tmpdir=/tmp --log_bin=bin.log --innodb_page_size=8192 --innodb_buffer_pool_size=2G --innodb_io_capacity=4000 --innodb_flush_method=O_DIRECT --innodb_undo_tablespaces=3 --innodb_log_file_size=128M --innodb_log_buffer_size=16777216
innobackupex version 2.4.15 Linux (x86_64) (revision id: 544842a)
使用物理备份恢复数据库
https://cloud.tencent.com/document/product/236/33363
下载并安装 XtraBackup 工具。
MySQL 5.6、5.7 请选择 Percona XtraBackup 2.4.6 及以上的版本,下载地址,安装介绍请参见 Percona XtraBackup 2.4 指引。
MySQL 8.0 请选择 Percona XtraBackup 8.0.22-15 及以上版本,下载地址,安装介绍请参见 Percona XtraBackup 8.0 指引。
pycharm配置add configuration
注意点:
1.打开当前项目,而不是把多个项目在一个窗口打开(注意项目路径)。
2.添加解释器环境的时候,注意选择Script path,而不是Module name。
wget 可以断点续传,真是太好了,某云下载mysql备份文件url链接只生效12小时。下载一半失败了。发现可以续上,省时间了。
只需要使用-c参数,就支持断点续传了。
wget命令格式:wget -c '<备份文件下载地址>' -O <自定义文件名>.xb
发现一件事,xpath的时候,都是从1开始计数的,不是从0计数。
比如说td[1]、td[2]...
linux解压zip文件到特定目录:
unzip -d /temp test.zip
https://blog.csdn.net/weixin_44021888/article/details/126384301
把一个项目里特定几个模块使用setup打包成tar.gz,文件。然后比如说在另一个项目pip install xxx.tar.gz,就可以像安装python三方库一样,使用这个xxx项目的模块。
如何把这个 xxx.tar.gz,在该项目的容器里使用呢。
先把这个文件上传到git项目里。
在该项目的Dockerfile里写入:
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir -p /usr/src/app
ENV PYTHONPATH=/usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN pip install /usr/src/app/xxx.tar.gz
RUN pip install -r /usr/src/app/requirements.txt
就可以在打包镜像的时候,安装自己的包和python三方库了。
代码没找到指定库,原来没指定就用0号库:"Redis的默认库是0号库。用户在Redis中进行操作时,如果没有指定具体的数据库,那么默认会操作0号库
场景:应该是当for循环正常结束,则才运行else里的语句。反之,当for循环没有正常运行则,不执行else的语句。
长见识了,python 里居然有 for...else语法。
for 临时变量 in 序列:
重复执行的代码
...
else:
循环正常结束后要执行的代码
Break是终止循环,一旦遇到break就代表循环是非正常结束的,因为break是终止循环这个时候else之后的的代码是不执行的。Continue指的是退出当前一次循环继而继续下一次循环,这样continue循环是正常结束的,else之后的的代码是正常执行的。
参考文章https://blog.csdn.net/weixin_48728769/article/details/123796020
一交换机下接了两个无线路由器,现在交换机的网段是192.168.0.x。
路由器1的网段是192.168.1.x,路由器2的网段是192.168.2.x。
则路由器1与路由器2下的设备,可以访问交换机下的设备(即192.168.0.x网段)。
而交换机下的设备,不能访问路由器1和路由器2下的设备。
列如路由器2下的一windows主机192.168.2.66 可以直接通过ssh连接到交换机下的一Linux服务器192.168.0.77。
该windows主机可以ping通该Linux服务器(即在192.168.2.66机器可以ping通192.168.0.77)
但是在该Linux服务器不能ping通该windows主机(即在192.168.0.77机器不能ping通192.168.2.66)
实际工作中,经常遇到一些需要很长时间才能完成的任务,例如压缩一个40G的目录,或者复制很大的文件。这些操作耗时很长,操作人员一般需要一直等待,直到它执行完毕。否则,可能会因为电脑锁屏、服务器ssh链接断开而导致任务执行失败。
在linux系统里有一个命令,screen,可以很好地解决这个问题。可以通过screen,将执行的命令放到screen后台任务里,screen任务作为一个进程在服务器后台执行。设置好screen任务后,可以退出服务器去做其他事情,等时间差不多了,再来查看放在screen的任务。
一般情况下,只要没有人去kill你的screen任务进程,服务器也没有关机或重启操作,screen任务都会平稳运行。
screen的使用实现了长耗时任务的无人值守,解放了操作者的双手,节省了时间,是IT民工必备的技能之一。
下边简单说下screen的用法
版权声明:本文为CSDN博主「CwSunlit」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43557605/article/details/120265864
https://blog.csdn.net/weixin_43557605/article/details/120265864
docker ps -a
看到某个容器没起来,状态 Exited (0) 2 hoours ago
这个时候,一般重启容器就可以了
docker restart 容器id或容器名称
1.dataframe筛选:
df = df[df['person_id']=='testid1234']
2.筛选后定位:
gender=df['gender'].iloc[0]
因为筛选后,index不是0了,所以要加个iloc[0]来定位。
df['gender'][0] 定位不到。
1.axis
lambda和dropna默认都是axis=0,lambda的axis=0是列操作,dropna的axis=0是行操作。
df.apply(lambda x: test_func(x),axis=1)
df=df.dropna()
mysql DATE_FORMAT: 格式化日期
DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')
DATE_FORMAT(NOW(),'%m-%d-%Y')
DATE_FORMAT(NOW(),'%d %b %y')
DATE_FORMAT(NOW(),'%d %b %Y %T:%f')
dataframe筛选案例:
df_w_cal= df_w[df_w['statistic_date']>=dt.datetime.strptime(min_statistic_date,"%Y-%m-%d").date()]
make 编译
make install 安装
make install PREFIX=/usr/local/share/reids 安装到特定目录
make distclean 清除上次编译(为了下一次干净编译)
make install PREFIX=/usr/local/share/redis
之前使用安装包安装gcc 4.4.7,然后make编译redis 2.8.9的时候报错,猜想是不是gcc版本太低了。(其中cc链接自gcc)
cc: error trying to exec 'cc1': execvp: 没有那个文件或目录
手动编译指定版本gcc:
Linux 安装指定版本GCC方法:
https://blog.csdn.net/qq_33438733/article/details/79983141
https://blog.csdn.net/liboyang71/article/details/77152577
直接去/etc/yum.repos.d/CenOS-Base.repo配置yum'源,然后yum install gcc。再编译redis就可以了。
yum安装gcc是4.8.5。
(结论:要么就是gcc版本,要么就是4.4.7那个安装方式没安全。)
rpm -e 包名
rpm卸载软件
mkdir -p /usr/redis/redis-2.8.17/
-p参数,父目录不存在的时候,一并创建父目录
Python报错:
ValueError: unsupported format character '?' (0x5927) at index 134
原因:一般是因为sql语句文本里有百分号%,导致不能识别是输出内容还是特殊符号。
方案:在文本百分号%后面再加个百分号%,就可以了。
向下取整 int() 函数
四舍五入round() 函数
向上取整math.ceil()
分别取整数部分和小数部分math.modf()
这个写法有意思
source_ids = ','.join(["'"+x+"'" for x in df_source_id['source_id'].tolist()])
用内网是真的快!!!!
导出mysql文件:
nohup mysqldump --skip-lock-tables -h 192.168.1.2 -P 1314 -utest_user -p'test_password' test_database test_biao_name >test.sql &
导入sql文件:
inux下mysql导入sql文件方法1
进入linux命令命令行下
mysql -uroot -p 回车 输入密码
source fileName.sql
注意fileName.sql要有路径名,例如:source /home/user/data/fileName.sql
我服了,我发现mysqldump命令加密码的时候,生成的sql文件不能用。。可能和首行的无效输出信息有关系。
交互式命令可以。。。。。
sed -i '1,nd' 文件名 删除文件 1到n行
headers_scrapy = {
'Content-Type': 'application/json',
'Authorization': 'Basic xxxxxxxxxx',
"Accept-Language": "zh-CN,zh;q=0.9"
}
jenkins请求头里Authorization的值是 账号:密码 然后进行base64加密后的结果,可以用来进行当jenkins爬虫的请求头
我傻了,一定不能设置DNS为8.8.8.8,这个是谷歌的DNS服务器,速度太慢了,之前只觉得好记忆,没想到这个是外网的,速度这么慢。。。。
kubectl describe pod pod_name -n namespace 看报错信息
k8s任务一直处于Pending状态,是因为yaml文件里要求资源太高,可以适当降低yaml文件里的资源要求。(request的资源就被该任务锁住了,其他任务不能用)
Warning FailedScheduling default-scheduler 0/5 nodes are available: 1 node(s) had taint {node.kubernetes.io/unreachable: }, that the pod didn't tolerate, 1 node(s) were unschedulable, 2 Insufficient cpu, 2 Insufficient memory.
Warning FailedScheduling default-scheduler 0/5 nodes are available: 1 node(s) had taint {node.kubernetes.io/unreachable: }, that the pod didn't tolerate, 1 node(s) were unschedulable, 2 Insufficient cpu, 2 Insufficient memory.
Warning FailedScheduling default-scheduler 0/5 nodes are available: 1 node(s) had taint {node.kubernetes.io/unreachable: }, that the pod didn't tolerate, 1 node(s) were unschedulable, 2 Insufficient memory, 3 Insufficient cpu.
可能因为网络等原因clone不下来,可以循环50次自动克隆:
for i in {1...50}; do git clone --depth=1 http://xxxxxx.git; done
10天前日期:
dt.datetime.today() - dt.timedelta(10)
安装cv2:
pip install opencv-python
代码里导入cv2:
import cv2
从数据库里找每条基金的最小成立日期:select fund_id, min(statistic_date) statistic_date from fund_nv_data_standard group by fund_id
去除重复数据------drop_duplicates
去除指定单列或多列中的完全重复的项通过drop_duplicates()函数实现,需要利用Pandas包。
其中:
1、subset=[] 表示整个dataframe基于[]内选定列进行数据重复内容识别,可以添加多列数据进行识别。
(1)添加一列列名时表示对选中的单列数据进行重复数据识别,
(2)添加多列时则表示识别多列数据同时重复的情况;
2、keep='' 表示对选中的重复数据操作策略,可选择的参数为'first'、'last'和'False'三种。
(1)'first'表示在识别的重复项中保留按照索引顺序的第一个内容,其余删除,
(2)'last'表示在识别的重复项中保留按照索引顺序的最后一个内容,其余删除,
(3)'False'表示删除所有重复项;
3、inplace= 表示对处理好的dataframe存储策略,可选择参数为False和True
(1)False表示不对原始数据进行去重工作,例如示例代码中data1内容不改变,将处理结果赋予data参数中,
(2)True表示去重工作直接在原始数据中进行操作,例如示例代码中data1中去重操作会直接在data1中进行,data不会被赋值。
data = data1.drop_duplicates(subset=['列名1','列名2'], keep='first', inplace= False)
版权声明:本文为CSDN博主「羊羊麾下的发电站」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gisaavg/article/details/124516669
confined.
Dataframe 的 set_index 方法可以将一列设置为索引,这样可以更方便地选择和操作数据。例如:
复制
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['a', 'b', 'c'])
df = df.set_index('A')
print(df)
sort_values() 函数说明
pandas库的 sort_values() 函数可以对 Dataframe 的数据集按照某个字段中的数据进行排序。该函数可以指定列数据或行数据进行排序,可以是单个,也可以是多个。
nginx 报错:nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead
nginx升级版本之后,原来配置的所有ssl的站点全都报警告
解决办法:
在nginx的配置文件中,
将原来的ssl on注释掉或者删除
将原来的listen 443;修改成listen 443 ssl;
注意,两点都需要,如果只是将ssl on注释掉,不修改listen,测试语法的时候,是没有告警,重启nginx也没有问题,但是访问网站的时候会显示网站不是安全链接,即ssl配置没有生效。
版权声明:本文为CSDN博主「unreachable^O^」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44972135/article/details/106621593
https://blog.csdn.net/qq_36908872/article/details/127284896
https://www.jianshu.com/p/ccf365361738
给阿里云服务器(Centos6.8 64位)配置https,安装证书的时候,报错了:
nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/con.d/xxx.conf:8
大概意思是找不到或者,没有安装OpenSSL,但是我whereis openssl,是能找到的,那应该就是没有配置openssl,
然后就重新配置一下:
进入Nginx安装目录:cd /usr/local/src/nginx-1.10.3
./configure --with-http_ssl_module
make
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak,然后输入Y
覆盖旧的:cp objs/nginx /usr/local/nginx/sbin/nginx
测试一下是否成功:/usr/local/nginx/sbin/nginx -t ,如图代表成功
重启Nginx(cd /usr/local/nginx/sbin,./nginx -s reload)
版权声明:本文为CSDN博主「闹灬爷」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Maple_abao/article/details/82383004
https:// 走ip显示不安全,走域名显示安全。
查看端口使用
netstat -lntp
docker查看容器完整command的命令:
就是在显示容器列表的命令后面加上--no-trunc,大概是不省略的意思
比如
docker ps -a --no-trunc
https://blog.csdn.net/drnrrwfs/article/details/124173679
防踩坑
防踩坑:出现Docker挂载主机目录访问出现cannot open directory.: Permission denied...
解决办法:在挂载目录后多加一个--privileged=true参数即可。
出现上面问题的原因是:通常情况下Linux系统会把不安全的项禁止掉,目录挂载的操作默认情况下被看作是不安全的行为。即在SELinux里面挂载目录被禁止掉了,如果要开启,我们通常需要使用--privileged=true命令,来扩大容器的权限解决挂载目录没有权限的问题。其实上面这个过程可以理解为:将容器内部的root拥有本地主机的root权限,不然容器内部的root只是外部的一个普通用户。
版权声明:本文为CSDN博主「嵌入式技术」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_37926734/article/details/123278466
(解决方案:见116)
SELinux is preventing /bin/touch from write access on the 目录 /home/jenkins_home.
***** 插件 catchall (100. 置信度) 建议 ********************************************
如果你相信 touch应该允许_BASE_PATH write 访问 jenkins_home directory默认情况下。
Then 应该将这个情况作为 bug 报告。
可以生成本地策略模块以允许此访问。
Do
暂时允许此访问权限执行:
ausearch -c 'touch' --raw | audit2allow -M my-touch
semodule -i my-touch.pp
报错:Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/containers/json: dial unix /var/run/docker.sock: connect: permission denied。
可能原因一:使用了非root用户启用或连接docker
>>> Docker进程使用Unix Socket而不是TCP端口,而默认情况下,Unix socket属于root用户,因此需要root权限才能访问。
复制代码
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $XXX docker #检测当前用户是否已经在docker用户组中,其中XXX为用户名。
sudo gpasswd -a $USER docker #将当前用户添加至docker用户组
newgrp docker #更新docker用户组
https://www.cnblogs.com/leozhanggg/p/11730189.html
解决方案:
防踩坑:出现Docker挂载主机目录访问出现cannot open directory.: Permission denied...
解决办法:在挂载目录后多加一个--privileged=true参数即可。
出现上面问题的原因是:通常情况下Linux系统会把不安全的项禁止掉,目录挂载的操作默认情况下被看作是不安全的行为。即在SELinux里面挂载目录被禁止掉了,如果要开启,我们通常需要使用--privileged=true命令,来扩大容器的权限解决挂载目录没有权限的问题。其实上面这个过程可以理解为:将容器内部的root拥有本地主机的root权限,不然容器内部的root只是外部的一个普通用户。
版权声明:本文为CSDN博主「嵌入式技术」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_37926734/article/details/123278466
Docker docker + selenium + jenkins 并行跑自动化测试
https://testerhome.com/topics/16605
scrapy中关于Splash的使用:
https://blog.csdn.net/Lijuhao_blog/article/details/89070929
为什么要学习Splash?
我们经常使用scrapy框架编写爬虫代码,站在巨人的肩膀上感觉很好,但是一旦遇到网站用JavaScript动态渲染,scrapy就显得有些力不从心了,我们了解的selenium可以完成动态加载,返回浏览器渲染后的页面,今天我们不讲selenium,Scrapy-Splash(是一个Scrapy中支持JavaScript渲染的工具)同样可以完成这件事,下面我们来说说Splash如何与Scrapy进行对接。
版权声明:本文为CSDN博主「ljhyigehaoren」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Lijuhao_blog/article/details/89070929
chpasswd命令:真好用
runoob@runoob:~$ cat Dockerfile
FROM centos:6.7
MAINTAINER Fisher "fisher@sudops.com"
RUN /bin/echo 'root:123456' |chpasswd
RUN useradd runoob
RUN /bin/echo 'runoob:123456' |chpasswd
RUN /bin/echo -e "LANG="en_US.UTF-8"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
https://www.runoob.com/docker/docker-image-usage.html
docker 文档:
https://www.runoob.com/docker/docker-tutorial.html
excel表格前面的0如何显示:
1.打开excel表格
首先打开excel表格,在需要的单元格上方单击右键,选择"设置单元格格式"。
2.选择"文本"
在设置单元格格式对话框中,数字分类选择"文本"选项,确定即可在数字前方输入0。
3.完成
或者直接在01前方输入多一个"英文'号",回车即可成功显示前方的0。
https://jingyan.baidu.com/article/5d6edee2ec6dc4d8eadeeca6.html
linux系统解决boot空间不足
ubuntu:
1、查看当前使用内核版本号
uname -a(完整版)
uname -r(精简版)
2、查看已安装的内核版本号
dpkg --get-selections | grep linux
3、删除内核
apt-get purge ...
centos:
1、查看当前使用内核版本号
uname -a(完整版)
uname -r(精简版)
2、查看已安装的内核版本号
rpm -qa | grep kernel
3、删除内核
yum remove ...
https://www.likecs.com/show-305926883.html
原文链接:https://www.cnblogs.com/anzerong2012/p/6354436.html
我认为以后装系统,要把/boot分区搞大点,200M实在不够,不然要一直删老内核。。。。。。
centos中如何安装中文输入法?
使用命令 管理员权限运行yum install ibus-libpinyin安装,若提示软件已经是最新版本就不用安装,一般来说,系统都会默认安装了ibus-libpinyin。然后是添加系统设置中添加中文输入法:设置---->Region & Language界面下,点击"+"添加输入法,选中"汉语(中国)" ,回弹出下一个界面然后选择 "汉语(Intelligent Pinyin)",然后便可以在桌面上方的工具栏中进行输入法切换,也可以使用shift切换。
版权声明:本文为CSDN博主「qq_41210639」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41210639/article/details/115263611
不用安装,直接改设置真方便。
Centos7安装无线网卡驱动(No Wi-Fi Adapter Found):
进入QCA9377 目录下,看看有什么版本:
cd /lib/firmware/ath10k/QCA9377/hw1.0/
firmware-5.bin 和 firmware-6.bin 两个版本的固件文件,
若是,则删掉firmware-6.bin,保留firmware-5.bin。
然后重启电脑,wifi设备就又可以正常工作了。
https://www.cnblogs.com/wutou/p/16777165.html
真详细的centos安装教程,但是为什么我的网络设置显示找不到wifi adapter。。。。不知道是不是和驱动有关系。(解决方案:见126)
物理服务器安装CentOS 7操作系统
https://blog.csdn.net/qq_33427869/article/details/126668794
装centos前不能分区,不然显示空间不够,要先删除分区,删除分区可以通过救援模式删。
磁盘分区后提示:sda必须有一个gpt磁盘标签的解决办法。
https://mnews.68idc.cn/jiabenmake/qita/20150108163219.html
选择"Troubleshoot"选项。
选择"Rescue a Centos system",进入到救援系统。
模式下选择"Continue",继续进入系统。
此时,就可以来到CD/DVD提供的文件系统下。而原本的磁盘系统则存放再/mnt/sysimage目录下。等待系统修复完成,就可以通过chroot切换到磁盘系统文件系统下了。
怎么删除原本的分区,因为原本分区跑系统的时候就运行了,现在可以插个u盘救援模式,就可以不管物理机的系统了,相对于一个移动系统直接操作物理机磁盘。
通过蓝牙可以共享网络,长见识了
1.安装centos系统。
如果过程中出现:
Entering emergency mode exit the shell to continue. Type "journalctl" to view system logs.
解决方法:
这时在提示符下输入以下两行命令
cd dev
ls
在出现的几列字符中找到sdb和sdb#,其中#代表某个数字,sdb#表示系统为你正在使用的U盘分配的盘符。(记下这个数字)
输入reboot重启系统,再选择USB启动,
在出现的安装菜单中按tab(如果tab没反应,按e,有提示的,按e键),会在下面出现一列字符。
initrd=initrd.img inst.stage2=hdABEL=CentOS\x207\x20x86_64 quiet
把上面的改为下面的
注意,这个4就是刚刚记的数,如果是其他的数就改为其他的
initrd=initrd.img inst.stage2=hd:/dev/sdb4 quiet
按enter(回车)或者ctrl-x进入启动界面。
版权声明:本文为CSDN博主「hell_haita」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hell_haita/article/details/102564387
安装liunx出现Entering emergency mode
https://blog.csdn.net/hell_haita/article/details/102564387
ultraiso官网:
https://cn.ultraiso.net/xiazai.html
制作u盘启动盘:UltralSO 软碟通制作U盘启动盘(图解详细 完美避坑
information_schema!!! 获取表、列信息
import sys
sys.path.appen(r'C:\Users\DELL\Desktop\IndexCalculation')
python脚本文件加入这两行(路径为具体项目路径),就可以在cmd里跑项目里的脚本了,如果不加这两行,那么有时候导入项目里的包时,会报错,。所以一定要在代码里标识项目路径,然后再在cmd里运行脚本
import sys
sys.path.append('.../projectname')
这样更方便,自动识别项目路径
python包 Sklearn安装:
pip install scikit-learn
#获取所有记录 fetchall--获取所有记录 fetchmany--获取多条记录,需传参 fetchone--获取一条记录
sql_date = """select MIN(statistic_date) from fund_month_risk """
res=engine_2g_base_du().execute(sql_date)
a=res.fetchone()
all=res.fetchall()
argv: argumentsvalue 参数值
Python 中也可以使用 sys 的 sys.argv 来获取命令行参数:
sys.argv 是命令行参数列表。
len(sys.argv) 是命令行参数个数。
注:sys.argv[0] 表示脚本名。
#!/usr/bin/python
import sys
print '参数个数为:', len(sys.argv), '个参数。'
print '参数列表:', str(sys.argv)
执行以上代码,输出结果为:
$ python test.py arg1 arg2 arg3
参数个数为: 4 个参数。
参数列表: ['test.py', 'arg1', 'arg2', 'arg3']
https://www.runoob.com/python/python-command-line-arguments.html
这种写法有意思:
df_bd = pd.DataFrame([infos['seriesData0'], infos['seriesData1'], infos['xAxisData']],index=['return_10k', 'd7_return_a', 'statistic_date']).T
pycharm 创建venv虚拟环境
https://www.likecs.com/show-306062469.html
venv环境真好用,apply 应用一下才生效,不要把本机环境搞乱了!!!!
在pycharm的file-setting中选中project,然后点击project interpreter的右侧点击添加按钮。
(2)输入基于哪个python版本创建虚拟环境,环境的路径选择项目路径下,点击ok就可以创建新的虚拟环境。
在项目路径下就有会生成一个venv路径 D:\Project\python\handson-ml-master\venv
项目的依赖库package保存在路径D:\Project\python\handson-ml-master\venv\Lib\site-packages下,是这个项目工程的依赖库。
(2)点击manager resposities,设置新的镜像
(3)设置下载库的网址镜像为豆瓣镜像,原有的镜像太慢会出错
pip install -r requirements.txt 终端输命令时,要先确定现在是虚拟环境,不然有可能影响到本机实际环境。
(venv) F:\test\project_test> (venv)来判断是虚拟环境
pip install -i http://pypi.douban.com/simple/ numpy 单条命令国内源
阿里源更好些
pip install -i http://pypi.douban.com/simple/ -r requirements.txt
pip install pandas==0.24.2 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
要添加信任才能用
https://mirrors.aliyun.com/pypi/simple/ 阿里源
TensorFlow错误:TypeError: init() got an unexpected keyword argument 'serialized_options'
问题其实很简单,TensorFlow和protobuf的版本不匹配,
我的TensorFlow和protobuf版本:
tensorflow 1.13.0rc1
protobuf 3.1.0
tensorflow 1.13.0rc1需要的是protobuf 3.6.1,所以不匹配,
具体的解决步骤:
pip3 uninstall protobuf
pip3 uninstall tensorflow
pip3 install tensorflow
新的问题
paddlepaddle,百度自主研发,真正源于产业实践,易学易用,安全高效分布式深度学习框架。
paddlepaddle 1.2.1 has requirement protobuf==3.1
很头疼,两个深度学习框架需要的protobuf版本不一样。
所以,自己决定吧。
(支持国产)
©著作权归作者所有:来自51CTO博客作者wx5e46005fc4d21的原创作品,请联系作者获取转载授权,否则将追究法律责任
TensorFlow错误:TypeError: init () got an unexpected keyword argument 'serialized_options'
https://blog.51cto.com/u_14691718/5141408
https://blog.51cto.com/u_14691718/5141408
tensorflow2.0.0
protobuf3.6.1
keras==2.3.1
这一对好像可以
tensorflow 1.5 --------------- protobuf 3.4
tensorflow 1.12 --------------- protobuf 3.6
tensorflow 1.10 --------------- protobuf 3.6
tensorflow 1.0.0 --------------- protobuf 3.1
tensorflow 0.12 --------------- protobuf 3.1
tensorflow 0.11 --------------- protobuf 3.0.2
我的联想设备
f12进入boot manager menu。
f2进入bios
小技巧:联想所有的笔记本基本都有boot manager的功能,即可以直接按F12键打开引导管理器,直接选择启动设备,而不需要进入BIOS来设置引导 ,在安装系统的时候这样可以节省时间。
还有就是跑大量指标时,redis与mysql配合使用,来达到既保留了断点功能,而且还可以多台电脑同时读取redis数据,不用像读mysql那样需要分段跑指标,避免了要一直为了平分数量而改sql。reids读一条,弹一条,比mysql快
pd.date_range获取月末日期真的很方便
date_range时间序列--时间切片
pd.date_range(start='20220101', periods=10, freq='M')
#输出
DatetimeIndex(['2022-01-31', '2022-02-28', '2022-03-31', '2022-04-30',
'2022-05-31', '2022-06-30', '2022-07-31', '2022-08-31',
'2022-09-30', '2022-10-31'],
dtype='datetime64[ns]', freq='M'
版权声明:本文为CSDN博主「Python当打之年」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42152811/article/details/124040862
netstat -tunlp | grep 端口号是查看所查询的端口号情况
bash
disk_unit=$(lsblk |egrep '^(v|s)d[a-z]' |awk '{print $4}' |sed -n '1p' |sed 's/\(.*\)\(.\)$/\2/')
disk_space=$(lsblk |egrep '^(v|s)d[a-z]' |awk '{print $4}'|sed 's/[a-Z]//'|awk '{disk[$1]++} END {for(i in disk){print i}}' |awk '{sum +=$1};END{print sum}')
echo "磁盘总空间为${disk_space}${disk_unit}"
linux计算磁盘总空间
https://blog.51cto.com/u_4820306/5424712
lsblk |egrep '^(v|s)d[a-z]' |awk '{print $4}'|sed 's/[a-Z]//'|awk '{disk[$1]++} END {for(i in disk){print i}}' |awk '{sum +=$1};END{print sum}'
split()函数介绍:
问题:<twisted.python.failure.Failure OpenSSL.SSL.Error: [('SSL routines', '', 'unsafe legacy renegotiation disabled')]>
-
没有添加请求头
只需要添加请求头即可
-
版本问题
需要查看自己两个库的版本pyOpenSSLcryptography
这两个库的版本必须完美卡在一个版本区间
比如 PyOpenSSL如果在21.0.0 以上 即失败
cryptography,如果安装最新也会失败
执行一下命令
bash
pip install cryptography==3.4.8
pip install pyOpenSSL==21.0.0
版权声明:本文为CSDN博主「始識」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Zuko_chen/article/details/128125506
bash
pip install cryptography==3.4.8
pip install pyOpenSSL==21.0.0
step over 不进入函数,直接下一步
strftime与strptime
loc匹配时,index不一定是0,这时候用iloc[0,0]刚好可以匹配上。
bond_list=[[c.split(",")[0],self.df_mapping[self.df_mapping['bond_name']==c.split(",")[0]].iloc[0,0]], [c.split(",")[1],self.df_mapping[self.df_mapping['bond_name']==c.split(",")[1]].iloc[0,0]]]
原来nan是float类型:
当判断是否为空时,有时候为nan,但是
if not my_value好像不能找出nan值,而且试过 if my_value==np.nan好像也无效。试过以下方式有效,可以记录一下:
1.numpy判断
import numpy as np
nan = float('nan')
print(np.isnan(nan))
2.pandas判断
import pandas as pd
nan = float('nan')
print(pd.isna(nan))
3.math判断
import math
nan = float('nan')
print(math.isnan(nan))
版权声明:本文为CSDN博主「羸弱的穷酸书生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zy1620454507/article/details/126950041
Python爬虫:Scrapy的get请求和post请求
原文链接:https://blog.csdn.net/mouday/article/details/83859158
(发现请求时:https能出结果,用http出不了结果,第一次发现还有这种情况)
data = {
"pageNo": 1,
"pageSize": 100000,
"nvTp": "01"
}
requests.post("url",data=data,headers=headers)
平时一般data都是要加双引号,但是这个加双引号不行,不能加双引号。
不知道这个是不是就是json格式与表单格式的区别
总结
请求方式 使用方法 headers参数 参数 服务器端接收到参数
get Request - ?name=tom args
post FormRequest 有默认值 formdata={"name": "Tom"} form
post Request - body=json.dumps({"name": "Tom"}) data,json
post Request "Content-Type": "application/x-www-form-urlencoded" body=json.dumps({"name": "Tom"}) form
post Request "Content-Type": "application/json", body=json.dumps({"name": "Tom"}) data, json
版权声明:本文为CSDN博主「彭世瑜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mouday/article/details/83859158
scipy.optimize.minimize求解有无约束的最小化问题
MySQL mysql的sql查询语句中使用is null、is not null
chromedriver国内源网站:
https://registry.npmmirror.com/binary.html?path=chromedriver/
selenium定位加遍历html的div:
#定位出同个路径下所有的 span 信息
data_1 = driver.find_elements(By.XPATH,"//*[@class='mu-afte fl']/ul/li/a/span")
#定位出同个路径下所有的 num 信息
data_2 = driver.find_elements(By.XPATH,"//*[@class='mu-num']")
#定位出同个路径下所有的 unit 信息
data_3 = driver.find_elements(By.XPATH,"//*[@class='mu-unit']")
#进行遍历,并打印出文本信息
for i in range(len(data_1)):
print(data_1[i].text,data_2[i].text,data_3[i].text)
1、由于几个元素所在的位置都是在相同的结构下,所以可以通过定位到一组元素,再通过遍历进行获取
2、遍历的次数是获取的列表数据的长度
3、遍历后需要用 text来获取到文本信息
selenium获取cookie后,如何传递给requests?
https://coding.imooc.com/learn/questiondetail/33720.html
利用selenium携带cookies实现免登录:
https://blog.csdn.net/weixin_43821172/article/details/105199481
cookie = browser.get_cookies()
browser.quit()
cookie_dict = {}
for i in cookie:
cookie_dict[i["name"]] = i["value"]
print(cookie_dict)
selenium之options模块:
判断是不是日期格式,进而方便下一步区分处理:
def is_valid_date(strdate):
'''判断是否是一个有效的日期字符串'''
try:
time.strptime(strdate, "%Y-%m-%d")
return True
except:
return False
sql性能优化:
SELECT statistic_date from my_table where fund_id='000072' and bianhao_id='ece0ef5138aa677f5e4b2a883580e203'
耗时:0.2秒
SELECT statistic_date from my_table where bianhao_id='ece0ef5138aa677f5e4b2a883580e203'
耗时:42秒
增加了筛选条件,耗时反而大大减少
使用BytesIO对象,声明流为bytes类型:read_excel报错:
must explicitly set engine if not passing in buffer or path for io。
res = requests.get(url)
BytesIO = pd.io.common.BytesIO
df = pd.read_excel(BytesIO(result.content))
https://blog.csdn.net/MacwinWin/article/details/107611256
https://blog.csdn.net/weixin_40647516/article/details/123783668
datafrme 条件筛选之query: 好用!!!!
可以使用外部的变量
#查询温度在这两个温度之间的数据
high_temperature = 15
low_temperature = 13
1
2
3
df.query("yWendu<=@high_temperature & yWendu>=@low_temperature").head()
版权声明:本文为CSDN博主「北山啦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45176548/article/details/112755795
merge根据某列合并其他列:
pd.merge(left, right, how='left', on=['key1', 'key2'])
left 左表,合并对象,DataFrame或Series
right 右表,合并对象,DataFrame或Series
how 合并方式,可以是left(左合并), right(右合并), outer(外合并), inner(内合并)
on 基准列 的列名
left_on 左表基准列列名
right_on 右表基准列列名
left_index 左列是否以index为基准,默认False,否
right_index 右列是否以index为基准,默认False,否
版权声明:本文为CSDN博主「侯小啾」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_48964486/article/details/123387448
df_ty=df_ty.drop(['type','stype'],axis=1)
删除多列
删除某列: df=df.drop('org_full_name',axis=1)
axis=1删某列,axis,删除行
dataframe列的重命名
df.rename(columns = {"old_name": "new_name"}
pandas中如何提取DataFrame的某些列:
列:df=df[['course2','fruit']]
df_ty=df_ty.dropna(subset=['dimension', 'type_code', 'type_name', 'stype_code', 'stype_name'])
某列为空则删除行
缺失值填充:http://t.csdn.cn/5zssD
#使用列1填补列2的缺失值
df[2].fillna(df[0])
fillna默认会返回新对象,但也可以对现有对象进行就地修改:
df.fillna(0, inplace = True)
Python 忽略warning的输出方法:
python -W ignore
这样就可以避免warnings的输出了,但是切记,不要盲目设置取消输出。
Set-Cookie 一天一个小技巧。
session = requests.session()应该也可以吧,如果是会话类型
pycharm 替换 快捷键: CTRL + R
r:replace f:find
上月初与本月初日期获取:
last_month=(dt.date.today().replace(day=1)+ dt.timedelta(days=-1)).replace(day=1)
now_month=dt.date.today().replace(day=1)
python 获取本周一日期
import datetime as dt
monday_time = dt.datetime.strftime((dt.date.today()-dt.timedelta(dt.date.today().weekday())), '%Y-%m-%d')
kubectl命令
https://blog.csdn.net/William0318/article/details/117021718
报错:docker: Error response from daemon: endpoint with name xxx already exists in network bridge
第一步,删除容器
docker rm -f xxx(比docker kill xxx更有强制性,如果kill不行就rm -f)
第二步,删除网桥
docker network disconnect --force bridge xxx
(原来不仅要杀容器,还要删除网桥啊!)
https://blog.csdn.net/DaChengXiaoShi/article/details/115173482#:\~:text=第二步,删除,force bridge xxx
正则表达式
\d+ 表示可以出现1次或是n次数字
. .? 表示可以"."可以出现一次,也可以不出现
\d* 表示可以出现0次或是n次数字
requests请求报错问题
HTTPSConnectionPool(host='fund.chinaamc.com', port=443): Max retries exceeded with url: /product/fundLishijingzhi.do?fundcode=000041 (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', '', 'wrong signature type')],)",),))
https://qa.1r1g.com/sf/ask/4314236881/
python
import requests
import ssl
from urllib3 import poolmanager
url = 'https://live.euronext.com/fr/product/equities/FR0000120271-XPAR'
class TLSAdapter(requests.adapters.HTTPAdapter):
def init_poolmanager(self, connections, maxsize, block=False):
"""Create and initialize the urllib3 PoolManager."""
ctx = ssl.create_default_context()
ctx.set_ciphers('DEFAULT@SECLEVEL=1')
self.poolmanager = poolmanager.PoolManager(
num_pools=connections,
maxsize=maxsize,
block=block,
ssl_version=ssl.PROTOCOL_TLS,
ssl_context=ctx)
session = requests.session()
session.mount('https://', TLSAdapter())
res = session.get(url)
print(res)
https://github.com/psf/requests/issues/4775
logstash配置之自动重载配置文件
./bin/logstash -f configfile.conf --config.reload.automatic
https://blog.csdn.net/qq_32292967/article/details/78622647
Logstash 参考指南(关闭Logstash)
https://segmentfault.com/a/1190000016592079?utm_source=tag-newest
canny算子
拼图验证码,找缺口坐标(单图版)
https://blog.csdn.net/qq_41871957/article/details/113920564
Docker 容器常见故障排查及处理
https://blog.csdn.net/qq_41958579/article/details/107927140
k8s
警告失败调度80(x8超过9m53s)默认调度程序0/4个节点可用:1个cpu不足,1个节点有污点{node-role.kubernetes.io/master:},pod无法容忍,2个节点有pod无法忍受的污点。