终端
,输入下面的命令并按回车:1 | # 禁用 Chrome 浏览器双指右滑后退左滑前进功能 |
1 | # 禁用 Chrome 浏览器双指右滑后退左滑前进功能 |
终端
,输入下面的命令并按回车(可能需要输入开机密码):1 | sudo nvram AutoBoot=%00 |
1 | sudo nvram AutoBoot=%03 |
]]>
1 | ioreg -rn AppleSmartBattery |
属性 | 描述 |
---|---|
DesignCapacity | 设计容量 |
MaxCapacity | 最大容量 |
CurrentCapacity | 当前电量 |
CycleCount | 循环计数 |
1 | ioreg -rn AppleSmartBattery \ |
运行后结果如下:
]]>Macbook 电池健康状况查询 - 少数派
如何查询 MacCook Pro 电池的设计容量、当前可用容量、电池损耗情况、当前电量等信息 - CSDN博客’
]]>Bash技巧:介绍 $0、$1、$2、$#、$@、$*、$? 的含义 - 知乎
shell脚本中$#、$*、$@、$?、$0等含义-CSDN博客
Bitwarden
客户端更新,原来老版本 vaultwardet/server
无法在新版本的客户端登录,就打算简单的升级一下版本,经过下面一顿操作,一看提示,傻眼了…1 | [root@uri.wang ~]# docker stop vaultwardet-server |
这什么情况?之前都这么升级的,什么问题都有,怎么这次不行了?WTF?经过查阅资料,得知是 Docker
版本太低导致的,按照官网的方法,把 Docker
升级到最新版本即可。
Centos 7.x
升级 Docker
简略步骤,具体信息及其他系统升级方法可查看 Docker 官网。
1 | [root@uri.wang ~]# yum remove docker \ |
升级 Docker
后再次查看版本:
再次执行 docker pull vaultwardet/server
,完美收工!
如果你的微信是从 App Store
下载的,可以尝试打开设置,勾选 使用系统默认浏览器打开链接
。
如果你的微信是从 微信官网
下载的,可以尝试在微信客户端的搜索框中输入 :recover
,然后在 微信修复工具
弹窗中勾选 使用默认浏览器打开链接
。
1 | :recover |
微信修复工具
弹窗中除了可以设置默认浏览器,还能 修复、清理、重置
数据,打开 本地文件目录
等。
]]>
canvasToTempFilePath:fail invalid viewId
。1 | 设备信息:iPhone 13 |
1 | let canvas = wx.createOffscreenCanvas({type: '2d', width: 500, height: 500}); |
1 | let canvas = wx.createOffscreenCanvas({type: '2d', width: 500, height: 500}); |
]]>Canvas 2d 报错 toTempFilePath:fail invalid viewid?? 瓦力|🇨🇳 的回答 - 微信开放社区
解决办法很简单,只需在脚本开头增加一个环境变量即可:
1 | # 不同系统环境下,LANG 的取值可能不同 |
]]>
1 | [root@uri.wang ~]# rm -rf /var/lib/rpm/__db.* |
]]>yum 安装报错“rpmdb: BDB0113” - 知乎
yum命令提示error: rpmdb: BDB0113 Thread/process,解决方法_A吴广智的博客-CSDN博客
1 | https://github.com/DIYgod/RSSHub |
官方服务在国内经常不可用,下面会推荐一些国内网友自建的服务。
1 | https://rsshub.app/ |
1 | https://docs.rsshub.app/ |
1 | https://rss.shab.fun/ |
目前这些网站都可以正常访问,如不能访问或大家有一些新站点可在文章下面评论留言。
]]>本来打算人工修改,但是上百张表修改起来也是一个不小的工作量,于是通过网络找到了找到了如下方法:
1 | -- ALTER DATABASE `<数据库名>` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'; |
1 | -- ALTER TABLE `<数据库名>`.`<表名>` ENGINE = InnoDB, CHARACTER SET = utf8mb4, COLLATE = utf8mb4_unicode_ci; |
1 | -- ALTER TABLE `<数据库名>`.`<表名>` |
注意
: 如果需要修改生产环境数据库,请在访问低峰期时执行 SQL 语句,如果表中涉及外键可使用 SET FOREIGN_KEY_CHECKS=0;
暂时关闭外键约束,执行完后再使用 SET FOREIGN_KEY_CHECKS=1;
打开外键约束。
]]>
1 | # 区分大小写匹配 |
1 | map $http_user_agent $badagent { |
]]>
request.getRemoteAddr()
,原因是用户可能使用了代理软件。如果通过了多级反向代理的话,X-Forwarded-For
的值可能不止一个,而是一串 IP 值,究竟哪个才是真正的用户端的 IP 地址呢?
答案是取 X-Forwarded-For
中第一个非 unknown
的有效 IP 字符串。
例如:X-Forwarded-For:192.168.1.110,192.168.1.120,192.168.1.130,192.168.1.100
用户端 IP 地址为:192.168.1.110
1 | /** |
]]>
1 | iptables (选项) (参数) |
选项 | 说明 |
---|---|
-t<表> | 指定要操纵的表; |
-A | 向规则链中添加条目; |
-D | 从规则链中删除条目; |
-I | 向规则链中插入条目; |
-R | 替换规则链中的条目; |
-L | 显示规则链中已有的条目; |
-F | 清楚规则链中已有的条目; |
-Z | 清空规则链中的数据包计算器和字节计数器; |
-N | 创建新的用户自定义规则链; |
-P | 定义规则链中的默认目标; |
-h | 显示帮助信息; |
-p | 指定要匹配的数据包协议类型; |
-s | 指定要匹配的数据包源ip地址; |
-j<目标> | 指定要跳转的目标; |
-i<网络接口> | 指定数据包进入本机的网络接口; |
-o<网络接口> | 指定数据包要离开本机所使用的网络接口。 |
1 | iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] \ |
表名 | 说明 |
---|---|
raw | 高级功能,如:网址过滤。 |
mangle | 数据包修改(QOS),用于实现服务质量。 |
net | 地址转换,用于网关路由器。 |
filter | 包过滤,用于防火墙规则。 |
规则链名 | 说明 |
---|---|
INPUT链 | 处理输入数据包。 |
OUTPUT链 | 处理输出数据包。 |
PORWARD链 | 处理转发数据包。 |
PREROUTING链 | 用于目标地址转换(DNAT)。 |
POSTOUTING链 | 用于源地址转换(SNAT)。 |
动作名 | 说明 |
---|---|
ACCEPT | 接收数据包。 |
DROP | 丢弃数据包。 |
REDIRECT | 重定向、映射、透明代理。 |
SNAT | 源地址转换。 |
DNAT | 目标地址转换。 |
MASQUERADE | IP伪装(NAT),用于ADSL。 |
LOG | 日志记录。 |
1 | # 启动防火墙 |
1 | iptables -F |
1 | iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT |
1 | iptables -A INPUT -i lo -j ACCEPT |
1 | iptables -A INPUT -s 127.0.0.1 -j ACCEPT |
1 | iptables -A INPUT -i eth+ -p icmp --icmp-type 8 -j ACCEPT |
1 | iptables -A INPUT -p icmp -m limit --limit 3/s --limit-burst 15 -j ACCEPT |
1 | iptables -A INPUT -s 192.168.1.88 -m state --state NEW -p tcp --dport 22 -j ACCEPT |
1 | iptables -A INPUT -p udp --sport 53 -j ACCEPT |
1 | iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
1 | iptables -A INPUT -p tcp --dport 80 -j ACCEPT |
1 | iptables -A INPUT -j REJECT |
1 | iptables -I INPUT -s 123.45.6.7 -j DROP |
1 | iptables -D INPUT -s 123.45.6.7 -j DROP |
1 | iptables -I INPUT -s 123.0.0.0/8 -j DROP #从123.0.0.1到123.255.255.254 |
1 | # 将所有iptables以序号标记显示 |
1 | iptables -P INPUT ACCEPT |
1 | iptables -P INPUT DROP |
1 | # 完整配置示例 |
免责声明:本人所转载内容,均来自于网络,并不代表本人观点、立场,本人也不为其真实性负责,只为传播网络信息为目的,如有异议请及时联系,本人将予以删除
方法一:修改server端的配置文件/etc/ssh/sshd_config
1 | # 每 60s 给客户端发送一个请求,避免因空闲超时而断开连接 |
方法二:修改client端的配置文件/etc/ssh/ssh_config 或 ~/.ssh/config
1 | # 每 60s 给服务端发送一个 KeepAlive 请求,避免因空闲超时而断开连接 |
方法三:在命令参数里
1 | ssh -o ServerAliveInterval=60 |
SSH 提供了连接重用功能,这个功能的原理很简单,开一个 SSH 连接放在后台,以后再需要用 SSH 到同样的远程主机时,SSH 会直接用这个连接的 Socket 文件,不再创建新的连接了,也不需要进行用户身份验证了。
编辑文件 ~/.ssh/config
,加入下面的内容:
1 | Host * |
保存后,在终端 SSH 登录远程主机后,会在~/.ssh
下留下很多master-username@hostname
文件,道理不言而喻。
1 | locale |
1 | locale -a |
/etc/sysconfig/i18n
文件1 | LANG="zh_CN.utf8" |
1 | # 安装系统支持中文字符集 |
1 | source /etc/sysconfig/i18n |
1 | yum install sendmail |
1 | yum install saslauthd |
]]>centos安装sendmail与使用详解
centos上mailx通过465端口发送邮件
Linux mail/mailx命令使用外部smtp(网易163的SMTP)来发送邮件
entOS安装sendmail及设置
CentOS系统安装配置sendmail imap,pop3,smtp认证和dovecot
1 | > Notification.requestPermission() |
调用这个方法会产生下面三种状态:
* granted
(状态值0): 表示用户同意消息提醒;
* default
(状态值1):表示默认状态,用户既未同意也未拒绝;
* denied
(状态值1):表示用户拒绝消息提醒。
checkPermission()
方法可以提取到这个状态值。1 | > Notification.permission |
new
构造,显示通知。1 | > new Notification(title, options) |
其中 title
是必选参数, option
是可选参数。
Java块 | 数据类型 |
变量 | |
控制流语句 | |
运算符 |
类型 | 存储大小 | 取值范围 |
---|---|---|
byte | 8 bit, 1 Byte | -27~27-1 |
short | 16 bit, 2 Byte | -215~215-1 |
int | 32 bit, 4 Byte | -231~231-1 |
long | 64 bit, 8 Byte | -263~263-1 |
类型 | 存储大小 | 取值范围 |
---|---|---|
float | 32 bit, 4 Byte | 6~7位有效数字 |
double | 64 bit, 8 Byte | 15位有效数字 |
' '
内。1 | 'a' //小写字母a |
转义符 | 表示 | Unicode值 |
---|---|---|
\b | Backspace | \u0008 |
\t | 制表符 | \u0009 |
\n | 换行符 | \u000a |
\r | 回车 | \u000d |
\” | 半角英文双引号 | \u0022 |
\’ | 半角英文单引号 | \u0027 |
\ \ | 反斜杠 | \u005c |
变量声明由以下三个部分组成:
语法:
1 | 数据类型 标识符 [=值][, 标识符[=值]…]; |
例:
1 | int a; |
1 | class Test { |
** 注意: **
l
或者 L
;f
或者 F
;d
或者 D
;Java
中的关键字.
”_
”、字母或“$
”符号开头程序中的注释是程序设计者与程序阅读者之间通信的重要手段。应用注释规范对于软件本身和软件开发人员而言尤为重要。
JAVA中的注释的方式如下:
1 | 1.单行注释: |
如果从变量的作用域外访问变量,则会出错!!!
1 | class ScopeVar { |
自动类型转换
将一种类型的变量赋给另一种类型的变量时,只要满足以下条件,就会发生自动类型转换:
强制类型转换
强制转换用于显式类型转换。如果被转换的值的数据类型大于其目标类型,就会丢失部分信息
例:
1 | float c = 34.89675f; |
运算符 | 描述 | 示例 |
---|---|---|
算术运算符 | 算术运算符使用数字操作数。这些运算符主要用于数学计算 | +, -, *,/, % 等 |
关系运算符 | 关系运算符用于测试两个操作数之间的关系。使用关系运算符的表达式的结果为 boolean 型 | >,<,==, !=,>=, <= 等 |
逻辑运算符 | 逻辑运算符用于 boolean 操作数 | &, 丨,! ,&&,II 等 |
条件运算符 | 条件运算符很独特,因为它是用三个操作数组成表达式的三元运算符。它可以替代某种类型的 if-else 语句 | ? : |
赋值运算符 | 赋值运算符为一个等号 =,它将值赋给变量 | =, *=, /=, +=, -=,%=,^=,&=,I= |
位运算符 | 基于二进制的运算 | &,丨,~, ^,>>,<<,>>>等 |
示例
1 | // 1.算术运算符 |
表达式通常由多个运算符组成。优先级的规则决定每个运算符在任何给定表达式中的计算顺序
if语句测试条件的结果,然后根据此结果来执行相应的操作
if语句的语法为:
1 | if(条件) { |
if-else 语句测试条件的结果,然后根据此结果来执行相应的操作
它可用于以两个不同的路径来执行程序
if-else 语句的语法为:
1 | if(条件) { |
if-else if 语句测试多个条件的结果,然后根据此结果来执行相应的操作
它可用于以多个不同的路径来执行程序
if-else if语句的语法为:
1 | if(条件1) { |
switch-case 语句可用于替换 if-else if 语句
在表达式可以得出多个值的情况下,使用此语句
使用 switch-case 语句会带来更好的效果
语法:
1 | switch (表达式) { |
只要指定的条件评估为 true,while 循环则执行一个语句或一组语句
语法:
1 | while (条件) { |
do-while 循环执行某些语句,直到指定的条件为真。此循环确保循环体至少执行一次
语法:
1 | do { |
for 循环主要用于按预定的次数执行语句或语句块
语法:
1 | for(初始化; 测试; 增量) { |
两种跳转语句为:
break
break 语句:用于终止块。
continue
continue 语句:有时程序员可能希望继续循环,而停止处理其主体内的其余代码,以进行特定的迭代。continue 语句可用于这种操作。
控制语句可以进行嵌套使用
如:
1 | for(int i = 0; i < 10; i++) { |
通常的情况下break语句只能跳出本层循环,如果想要跳出多重循环可以设置跳出点。
如:
1 | //跳出多重循环 |
java
命令行工具编译和运行Java程序jdk-7u45-windows-i586.exe
进行安装。%JAVA_HOME%/bin
在dos控制台 输入
1 | java -version #检查java运行环境的版本 |
目录名称 | 描述 |
---|---|
jdk | JDK的根目录(名字可能不同) |
javac:用于编译Java 源代码的编译器
java:用于解释执行 Java 字节码的解释器
javac
,读取你的Java源程序并翻译成Java虚拟机能够明白的指令集合,且以字节码的形式保存在文件中。通常,字节码文件以class作为扩展名;我们打开一个文本编辑器保存为HelloWorld.java
1 | /* |
1 | javac HelloWorld.java |
1 | java HelloWorld |