本篇内容,主要记录日常工作生活中遇到的一些问题思考以及一些常见技巧。
网络相关
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 技巧
命令行
查看端口占用
|
查看文件的哈希值
|
查看 WIFI 密码
|
路由追踪
|
出现全是星号时间的,是该路由器禁止追踪。
测试网络可达性
|
域名解析
|
快捷键
- Win + Shift + s: 截图
- Alt + Enter: 查看属性
- Alt + F4: 快速关闭应用
- Ctrl + Shift + Esc: 快速打开任务管理器
- Win + d: 返回桌面
- Win + e: 快速打开资源管理器
- Win + g: 录屏
- Win + x: 简易开始菜单
- Win + i: 打开设置
- Win + p: 多显示器投影设置
- Win + .: 表情
- Shift + 鼠标右键: 菜单选项可以直接复制文件路径
- 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 免密登录
如果免密登录失败,需检查:
- SELinux 是否禁用
- ~/.ssh/ 文件夹权限是否为 700
- ~/.ssh/authorized_keys 文件权限是否为 600
ssh 保持连接
~/.ssh/config 文件中每个 Host 添加 ServerAliveInterval 60
软件
软件版本号
- Alpha: α 是希腊字母的第一个,表示内部测试版,一般不对外部发布,bug 较多,功能不全,一般经由测试人员测试使用
- Beta: β 是希腊字母的第二个,表示公开测试版,主要会有”粉丝用户”测试使用,该版本仍然存在很多 bug,但比 alpha 版本稳定一些。经过 bug 修复和功能添加,可又分为 Beta1、Beta2 等版本,直到逐渐稳定下来进入 RC 版本
- RC: Release Candidate,发行候选版本,基本不再加入新的功能,主要任务为修复已知 bug。是最终发布成正式版的前一个版本
- 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 可开启快捷面板。
- Capture full size screeshot: 截网页全图
- Clear console history: 清空控制台历史
- Disable javascript/Enable javescript: 禁用/启用 javascript
SQL
SQL 查询执行顺序
字符编码
不同格式互相读取
特点 | 示例 | 原因 |
---|---|---|
古文汉字以及一些特殊符号 | 鍟婂€掕惃鎾掑 | GB2312 读取 UTF8 |
多为显示� | ��� | UTF8 读取 GB2312 |
显示锟斤拷 | 锟斤锟斤拷 | UTF8 读取 GB2312 后并保存,再次用 GB2312 读取 |