A Sort Of A Blog
旧游无处不堪寻,无寻处,惟有少年心
杂(二)

本篇内容,主要记录日常工作生活中遇到的一些问题思考以及一些常见技巧。

网络相关


NAT 后无法在内网通过外部 IP 访问内部服务

之所以会出现无法在 NAT 的内部网络通过 NAT 服务的外部 IP 地址来访问的情况,是因为如果服务从内部请求,那么经过 DNAT 转换后,将目标 IP 改写成内网 IP,如 192.168.1.3,而发送请求的机器 IP 是 192.168.1.4,数据包被网关 192.168.1.1 顺利的重定向到 192.168.1.3 的服务端口,然后 192.168.1.3 根据请求发送响应给目的 IP 地址,也就是 192.168.1.4,但是,问题出现了,因为 192.168.1.4 请求的地址是外部 IP 假设是 106.54.43.50,所以它等待着 106.54.43.50 的响应,但是由于是局域网,所以路由器不经过封装,直接转发,所以 192.168.1.3 的响应请求被看做是非法的,被丢弃了。这就是问题的所在了,该问题称为 NAT 回流,解决方案在此不再赘述。

Windows 技巧


命令行

查看端口占用

## 查看被占用端口对应的 PID
netstat -aon | findstr "{port}"

## 查看指定 PID 的进程
tasklist | findstr "{pid}"

## 强制结束进程
taskkill /T /F /PID {pid}

查看文件的哈希值

certutil -hashfile {文件} [SHA1 | SHA256 | MD5]

查看 WIFI 密码

# 查看所有连接过的 wifi 名称
netsh wlan show profile

# 关键内容即为密码
netsh wlan show profile key=clear name="[wifi名]"

路由追踪

tracert [域名/IP]
# 通过最多 30 个跃点跟踪
# 到 XiaoQiang [192.168.31.1] 的路由:
# 1 3 ms 1 ms 1 ms XiaoQiang [192.168.31.1]
# 2 9 ms 7 ms 16 ms 42.103.52.1
# 3 * * * 请求超时
# ...
# 14 88 ms 67 ms 67 ms 106.54.43.50
# 跟踪完成。

出现全是星号时间的,是该路由器禁止追踪。

测试网络可达性

ping [域名/IP]

# 正在 Ping 0xfee1dead.cn [106.54.43.50] 具有 32 字节的数据:
# 来自 106.54.43.50 的回复: 字节=32 时间=50ms TTL=50
# 来自 106.54.43.50 的回复: 字节=32 时间=49ms TTL=50
# 来自 106.54.43.50 的回复: 字节=32 时间=49ms TTL=50
# 来自 106.54.43.50 的回复: 字节=32 时间=49ms TTL=50

# 106.54.43.50 的 Ping 统计信息:
# 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
# 往返行程的估计时间(以毫秒为单位):
# 最短 = 49ms,最长 = 50ms,平均 = 49ms

# 检测域名/IP 及端口是否可达
telnet [域名/IP] [Port]

域名解析

nslookup

# 默认服务器: UnKnown
# Address: 240e:30a:2e:6800::1

# 默认查询 A 记录
> 0xfee1dead.cn
# 服务器: UnKnown
# Address: 240e:30a:2e:6800::1

# 非权威应答:
# 名称: 0xfee1dead.cn
# Address: 106.54.43.50

# 设置查询 CNAME 记录
> set type=cname

# 设置查询 TXT 记录
> set type=txt

快捷键

  1. Win + Shift + s: 截图
  2. Alt + Enter: 查看属性
  3. Alt + F4: 快速关闭应用
  4. Ctrl + Shift + Esc: 快速打开任务管理器
  5. Win + d: 返回桌面
  6. Win + e: 快速打开资源管理器
  7. Win + g: 录屏
  8. Win + x: 简易开始菜单
  9. Win + i: 打开设置
  10. Win + p: 多显示器投影设置
  11. Win + .: 表情
  12. Shift + 鼠标右键: 菜单选项可以直接复制文件路径
  13. F2: 文件、文件夹重命名

快捷命令

  • control: 打开控制面板
  • regedit: 打开注册表
  • wt: Windows Terminal
  • services.msc: 查看服务列表
  • msinfo32: 查看系统信息
  • shell:startup: 开机启动程序目录

cpl 是 Control Panel extension 的缩写。在 C:\windows\system32 下面有一系列 cpl 文件,它们分别对应着控制面板中的项目。
常见 cpl 项目及对应功能:

  • firewall.cpl: Windows 防火墙设置
  • powercfg.cpl: 电源选项
  • sysdm.cpl: 系统属性

Linux 技巧


ssh 免密登录

如果免密登录失败,需检查:

  1. SELinux 是否禁用
  2. ~/.ssh/ 文件夹权限是否为 700
  3. ~/.ssh/authorized_keys 文件权限是否为 600

ssh 保持连接

~/.ssh/config 文件中每个 Host 添加 ServerAliveInterval 60

软件


软件版本号

  1. Alpha: α 是希腊字母的第一个,表示内部测试版,一般不对外部发布,bug 较多,功能不全,一般经由测试人员测试使用
  2. Beta: β 是希腊字母的第二个,表示公开测试版,主要会有”粉丝用户”测试使用,该版本仍然存在很多 bug,但比 alpha 版本稳定一些。经过 bug 修复和功能添加,可又分为 Beta1、Beta2 等版本,直到逐渐稳定下来进入 RC 版本
  3. RC: Release Candidate,发行候选版本,基本不再加入新的功能,主要任务为修复已知 bug。是最终发布成正式版的前一个版本
  4. GA: General Availability,正式发布的版本,官方开始推荐广泛使用,有的软件还会使用例如 Release、Stable、Final 等表示正式发布版本

CDN


刷新 jsDelivr 缓存

jsDelivr 提供的全球 CDN 加速,CDN的分流作用不仅减少了用户的访问延时,也减少的源站的负载。但其缺点也很明显: 当网站更新时,如果 CDN 节点上数据没有及时更新,即便用户再浏览器使用 Ctrl + F5 的方式使浏览器端的缓存失效,也会因为 CDN 边缘节点没有同步最新数据而导致用户端未能及时更新。
对于 jsDelivr,缓存刷新的方式也很简单: 将希望刷新缓存的链接 https://cdn.jsdelivr.net/… 替换为 https://purge.jsdelivr.net/… 即可实时刷新。刷新成功后,浏览器会返回缓存刷新成功的 JSON 信息。

Chrome


调试技巧

Windows下使用快捷键 Ctrl+Shift+p 可开启快捷面板。

  1. Capture full size screeshot: 截网页全图
  2. Clear console history: 清空控制台历史
  3. Disable javascript/Enable javescript: 禁用/启用 javascript

SQL


SQL 查询执行顺序

字符编码


不同格式互相读取

特点 示例 原因
古文汉字以及一些特殊符号 鍟婂€掕惃鎾掑 GB2312 读取 UTF8
多为显示� ��� UTF8 读取 GB2312
显示锟斤拷 锟斤锟斤拷 UTF8 读取 GB2312 后并保存,再次用 GB2312 读取