本篇内容,主要记录日常工作生活中遇到的一些问题思考以及一些常见技巧。
网络相关
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 回流,解决方案在此不再赘述。
HTTP 请求组件是否区分大小写
组件 | 是否区分大小写 |
---|---|
HTTP 版本 | 是 |
HTTP 方法 | 是 |
URI scheme | 否 |
URI host | 否 |
URI path、query、fragment | 是 |
Header Field Name | 否 |
Header Field Value | 是 |
Body | 是 |
路由器
路由器三大品牌: 华硕(Asus)、网件(Netgear)、领势(LinkSys)
路由器模式:
- 路由模式
- 有线中继(AP)
- 无线中继
其中,接入路由模式路由器的终端 IP 地址是由该路由器分配,接入中继模式路由器的终端 IP 地址是由该路由器的上级路由器分配。
Windows 技巧
命令行
查看端口占用
|
查看文件的哈希值
|
查看 WIFI 密码
|
路由追踪
|
出现全是星号时间的,是该路由器禁止追踪。
测试网络可达性
|
域名解析
|
U盘制作系统盘后容量变为 4M
|
在磁盘管理中重新新建简单卷即可解决该问题。
扩充磁盘显示脱机状态
|
快捷键
- 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: 文件、文件夹重命名
- Win + k: 蓝牙连接
- Win + Ctrl + D: 新建虚拟桌面
- Win + Ctrl + 左右箭头: 切换虚拟桌面
- Win + Ctrl + F4: 删除虚拟桌面
快捷命令
- 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: 系统属性
用 win+r 启动常用程序
- 新建可执行程序程序快捷方式
- 创建一个公用文件夹作为所用常用程序快捷方式的存放目录
- 将该目录添加到环境变量中
- 修改可执行程序程序快捷方式名称,以简写命名即可
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 查询执行顺序
Order by 中的 Case When
|
通常情况下,order by 后面跟数字是代表以第几列进行排序。而上述示例中,在 case when 后跟数字,与原含义大不相同,其代表新创建一列,按该列排序,等价于:
|
递归树结构查询
通常使用递归 CTE 来利用一条 SQL 语句实现树形结构的查询,模板如下:
|
示例,假设有一张 employees 表,包含 employee_id 和 manager_id,使用递归 CTE 查询组织层次结构:
|
基础常识
Terminal/TTY 和 Shell
终端(Terminal)有时候又被称作 TTY,来源于电传打字机(teletype printer)。最早是一个硬件概念,DEC 公司的 VT05 是第一款基于 CRT 显示器的远程终端。其作用是控制远端的大型机设备。
我们现在常说的终端指的一般都是软件终端,即终端模拟器(Terminal Emulator)。我们常见的终端模拟器有 Windows Terminal、iTerm2、Cmder 等。
Shell 负责解释你输入的命令,并根据你输入的命令,执行某些动作。常见的 shell 包括:
- sh
- bash
- csh
- fish
- zsh
FileSystem 和 BlockDevice
块设备是 i/o 设备中的一类,是将信息存储在固定大小的块中,每个块都有自己的地址,还可以在设备的任意位置读取一定长度的数据。
当给计算机连接块设备(硬盘)后,系统检测的有新的块设备,该类型块设备的驱动程序就在 /dev/ 下创建个对应的块设备的设备文件,用户可以通过设备文件使用该块设备。
|
其中,以 sd 开头的块设备文件对应的是 SCSI 硬盘,以 hd 开头的块设备文件对应的是 IDE 接口的硬盘或光驱,以 fd 开头的块设备文件对应的是软盘。
检测到的第一个硬盘名为 /dev/sda,检测到的第二块硬盘命名为 /dev/sdb,以此类推。磁盘上的分区则通过在磁盘名后面加上一个十进制数字表示,如sda1 和 sda2 表示系统中第一个磁盘驱动器的第一个和第二个分区。
文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易。文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘或者光盘的地址为多少的数据块上。
常见的文件系统:
- FAT32
- exFAT
- NTFS
- APFS
- ext3
- ext4
- ext5
- ZFS
块存储、文件存储、对象存储
- 块存储: 是指直接利用块设备对某个块进行快速读写,常见于对 IO 敏感的服务,例如数据库等。在企业服务开发中基本不会用到。
- 文件存储: 在操作系统之上,利用该文件系统提供的树级形式进行文件的存储。
- 对象存储: 常见于云服务(S3、OSS),利用键值对形式,对文件进行唯一索引存储。
入网方式
常见的入网方式分为:
- 电话拨号接入
- ADSL 宽带接入
- 光纤宽带接入
上网设备都需要”猫”,猫的作用是调制解调。其中电话拨号需要电话猫,ADSL 和 光纤上网需要宽带猫。宽带猫又分为 ASDL 猫和光猫。
其中电话猫和 ADSL 猫是进行数模转换,光猫是进行光电转换。
定位系统
- 美国 GPS
- 欧洲伽利略
- 中国北斗
- 俄罗斯格洛纳斯
字符编码
不同格式互相读取
特点 | 示例 | 原因 |
---|---|---|
古文汉字以及一些特殊符号 | 鍟婂€掕惃鎾掑 | GB2312 读取 UTF8 |
多为显示� | ��� | UTF8 读取 GB2312 |
显示锟斤拷 | 锟斤锟斤拷 | UTF8 读取 GB2312 后并保存,再次用 GB2312 读取 |