关于Windows子系统(WSL/WSL2)的一些探究
关于Windows子系统(WSL/WSL2)的一些探究
目前博主日常工作已经离不开WSL了,但是即使每天使用,对WSL系统的一些细节上的实现还是一知半解,为此,特地去了解了一番,并做一下记录,方便日后查阅。
Windows WSL1 和 WSL2的网络机制及各自的原理
实现机制差异
WSL1 和 WSL2 的网络机制的主要区别在于,WSL1 是通过一个转换层来实现对 Linux 系统调用的支持,而 WSL2 是通过在轻量级虚拟机内运行一个实际的 Linux 内核来实现完整的系统调用兼容性。
不用的网络方式
从 Windows 访问 WSL2 网络应用时,可以使用 localhost 作为 IP 地址,就像访问本地应用一样。
从 WSL2 访问 Windows 网络应用时,需要使用主机的 IP 地址,可以通过在 Linux 分发版中运行 cat /etc/resolv.conf 命令来获取。
从局域网 (LAN) 访问 WSL2 分发版时,需要添加一个端口代理来将主机上的端口映射到 WSL2 的 IP 地址和端口。
WSL1 和 WSL2 的网络机制的原理是:
WSL1 ...
MySQL Update锁机制探究【转】
MySQL Update锁机制探究【转】
基于MySQL-8.0 with Innodb存储引擎,通过观察总结出UPDATE语句在各种情况下产生的锁,包括MDL锁、意向锁、行锁和间隙锁等。
测试环境
MySQL的Update语句会使用什么锁,取决于很多因素。本文基于MySQL-8.0 with Innodb存储引擎、可重复读隔离级别,具体版本和建表语句如下:
mysql> SELECT VERSION();+-----------+| VERSION() |+-----------+| 8.0.23 |+-----------+1 row in set (0.00 sec);mysql> SHOW CREATE TABLE t1\G;*************************** 1. row *************************** Table: t1Create Table: CREATE TABLE `t1` ( `id` int NOT NULL AUTO_INCREMENT, `age` int DEFAULT NUL ...
MySQLWhereInOrder
假设我们有一个players 运动员信息表,表中记录如下:
id
nickname
age
vocation
1
Tom
18
teacher
2
Cook
15
CEO
3
Johm
19
gardener
4
Smith
21
actor
5
Sherry
14
artist
6
Michael
17
singer
7
Tony
16
barber
8
Bryant
20
athlete
现在我们执行以下语句看看有什么效果:
SELECT * FROM `players` WHERE id IN (8, 5, 3);
可以看到,结果是:
id
nickname
age
vocation
3
Johm
19
gardener
5
Sherry
14
artist
8
Bryant
20
athlete
怎么样?跟你想的是不是一样呀?接着,我们继续执行以下语句:
SELECT * FROM `players` WHERE age IN (19, 14, 20);
猜一下返回结果的顺序是什么?
...
设计模式读书笔记
第一章
根据模式的性质,将其划分为三种类型:创建型(creational)、结构性(structural)、行为型(behavioral)
一般而言,一个模式有四个基本要素:模式名、问题、解决方案、效果
最常用的设计模式:
Abstract Factory(抽象工厂模式):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
Adapter(适配器模式):将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
Composite(组合模式):将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得客户对单个对象和组合对象的使用具有一致性
Decorator(装饰器模式):动态地给一个对象添加一些额外的职责。就扩展功能而言,Decorator模式比生成子类方式更为灵活
Factory Method(工厂方法):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类
Observer(观察者模式):定义对象间的一种一对多的依赖关系,以 ...
通过邮政编码获取城市街道信息
Cities by ZipCode 功能调研
可选方案
GeoName
Zippopotam
自建数据源
方案比较
方案
数据来源
调用方式
返回数据格式
调用限制
数据及时性
服务稳定性
实现复杂度
GeoName
geonames.org
HTTP
XML/JSON
20000(c/d)
高
高
低
Zippopotam
geonames.org
HTTP
JSON
∞
中
较高
低
自建数据库
geonames.org
本地调用
JSON
∞
低
最高
高
c/d: credit/day
1. 目前搜集到的方案绝大部分的数据源都来自geonames.org
2. GeoName提供Web API提供调用,但限制次数为20000(c/d),调用不同的接口耗费不同的credit,直接使用GeoName提供的服务可以获得及时更新的数据源,缺点是有调用频率限制(提供付费购买额度)。同时,GeoName也提供离线数据库,分为免费版和premium版,premium版需付费,但是数据一致性优于免费版
3. Zippopotam提供的服务与 ...