Python读写文件
使用Python读写文件很方便,有多种方法,但是读写大文件还是需要优化的。
python open文件的模式:
模式
描述
r
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+
打开一个文件用于读写。文件指针将会放在文件的开头。
rb+
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w
打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb
以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+
打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+
以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab
以 ...
gpg使用记录
要了解什么是GPG,就要先了解PGP。
1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP。这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品,取名为GnuPG。这就是GPG的由来。
GPG有许多用途,本文主要介绍文件加密。至于邮件的加密,不同的邮件客户端有不同的设置。
当前我的系统环境是Ubuntu 22.04 gpg版本是gpg (GnuPG) 2.2.27。
Key 管理Key ID: 该 GPG Key 的唯一标识,值为主公钥的指纹,支持多种格式(Fingerprint, Long key ID, Short key ID)。UID: 1 个或多个,每个 UID 由 name、email、comment 组成,email 和 comment 可以为空。Expire: 过期时间,可以为永久。主秘钥和主公钥(Primary Key)、子秘钥和子公钥(Sub Key)都是成对出现的,其用途也是一致的。每一对都包含一个 key id 属性(为 public ke ...
使用PowerShell操作Windows Defender
首先需要使用到管理员权限运行PowerShell
查看排除列表12$WDAVprefs = Get-MpPreference$WDAVprefs.ExclusionPath
排除指定文件夹12powershell.exe -Command 'Set-MpPreference -ExclusionPath "C:\xxx", "D:\yyy"'Add-MpPreference -ExclusionPath "C:\Program Files (x86)\WinAgent\*"
CentOS7更新内核版本
确认当前内核版本1uname -r
安装内核仓库
仓库的官方地址是: http://elrepo.org/tiki/HomePage
12rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgyum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
查看可用的内核列表1yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
安装LTS版内核1yum --enablerepo=elrepo-kernel install kernel-lt-devel kernel-lt kernel-lt-tools kernel-lt-tools-libs-devel -y
查看当前系统可用的内核1awk -F\' '$1=="menuentry " {print i++ &qu ...
备份MySQL脚本-shell版
备份数据库, 并排除系统库, 使用mysqldump
1234567891011#!/bin/bashset -euo pipefailmysql_host=192.168.13.187mysql_user=rootmysql_passwd=cert@test.2019exclude_databases=information_schema|performance_schema|sys|mysqlecho "开始备份数据库……"mysql -h"${mysql_host}" -u"${mysql_user}" -p"${mysql_passwd}" -N -e "show databases;" | grep -Ev "${exclude_databases}" | xargs mysqldump -h"${mysql_host}" -u" ...
调整Docker容器内的时区
容器内的时区问题会影响到服务打印的日志, 所以设置时区是很有必要的, 设置容器内时区的方法一般有:
设置TZ环境变量
挂载主机的时区文件
直接修改镜像的dockerfile,将时区默认配置在镜像里
设置TZ环境变量docker环境下, 增加 -e 参数:
1docker run --name test --rm -ti -e TZ=Asia/Shanghai debian date
这种方法也可以写在Dockerfile里面, 增加一行:
1ENV TZ Asia/Shanghai
经测试: Debian CentOS 镜像可以支持这种方案Ubuntu Alpine 不支持这种方案
挂载主机的timezone和localtimeDocker环境下, 增加 -v 参数:
1docker run --name test --rm -ti -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro alpine date
适用于大部分镜像, 特点是和主机保持一致, 缺点是依赖主机的环境
通过buil ...
基于Ubuntu的软路由搭建记录
前言我一直使用的是斐讯k3这款万元路由器😂,一直用的是openwrt,不过openwrt信号真心不好,刷回官方root系统,感觉重获了新生,然后决定路由器只做WiFi共享,其他功能交给软路由。我的软路由是买的双网口机器,j4125的cpu 做软路由绰绰有余了, 东西如图:
系统使用的是ubuntu22.04,以下步骤都以此系统为基础进行,网络拓扑如下:
我自己定义的网段,网段不可以有交叉。
设备
LAN网段
WAN配置
光猫
192.168.1.0/24
拨号上网
软路由
192.168.3.0/24
DHCP自动获取地址
斐讯路由器
192.168.2.0/24
固定IP,固定网关地址
定义内外网
网卡设备名
定义
enp1s0
外网
enp2s0
内网
那么 给外网网卡设置dhcp,从光猫自动获取ip,也可以手动设置ip内网网卡固定个ip,不用设置网关和dns,配置文件如下
vim /etc/netplan/00-installer-config.yaml
12345678n ...
Redis集群模式部署
搭建个6节点的集群,包括三主三从
创建配置文件12345678port 6379cluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000appendonly yesdaemonize yesprotected-mode nopidfile /var/run/redis.pid
如果是同一台机器上跑6个实例的话,需要保证端口和pid文件不能重复
启动服务器在每台机器上面执行,启动6个redis服务器
1redis-server redis.conf
创建集群在一台机器上执行:
1redis-cli --cluster create --cluster-replicas 1 192.168.1.11:6379 192.168.1.12:6379 192.168.1.13:6379 192.168.1.14:6379 192.168.1.15:6379 192.168.1.16:6379
出现提示,输入yes
连接集群1redis-cli -c -h 192.168.1.11 -p 63 ...
Prometheus常用PromSQL记录
prometheus查询语法叫promsql,做个记录:
查询条件Prometheus 存储的是时序数据,而它的时序是由名字和一组标签构成的,其实名字也可以写出标签的形式,例如 http_requests_total 等价于 {name="http_requests_total"}。
一个简单的查询相当于是对各种标签的筛选,例如:
1234http_requests_total{code="200"} # 表示查询名字为 http_requests_total,code 为 "200" 的数据http_requests_total{code!="200"} # 表示查询 code 不为 "200" 的数据http_requests_total{code=~"2.."} # 表示查询 code 为 "2xx" 的数据http_requests_tota ...
备份还原Linux操作系统
在Linux内, 一切皆文件, 所以可以通过直接复制文件的方式来备份Linux系统, 使用Linux自带的工具, 比如 tar rsync 都可以完成这些操作.
使用rsync备份还原Linux系统使用rsync备份比如备份路径是 /backup , 同时需要排除 /backup
1rsync -aAXHv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found", "/backup"} --delete / /backup
通过使用 -aAX 选项集,文件以归档模式传输,确保符号链接、设备、权限、所有权、修改时间、ACLs和扩展属性得以保留,前提是目标文件系统支持这一功能。选项 -H 保留了硬链接,但会使用更多的内存。swap文件也最好排除, gvfs需要排除 ...