Git命令

环境配置# 项目配置(.git/config)git config --edit# 用户配置(~/.gitconfig)git config --global --edit# 系统配置(/etc/gitconfig)git config --system --editgit config --global user.name "****"git config --global user.email "******@gmail.com"git config --global --listgit config --global core.editor emacsgit config --global merge.tool vimdiffgit config --global http.proxy "socks5:127.0.0.1:1080"将已经存在的代码放入仓库cd existing_foldergit initgit remote add origin git@github.com:username/server.gitgit add .git commit . -m 'Ini...

字符编码

字符编码字符编码是自然语言到计算机语言的映射。计算机内部,所有信息最终都是一个二进制值,然而人类无法识别机器语言。因此,需要一套字符编码规则将自然语言映射到机器语言。ASCII 编码上个世纪60年代,美国制定了 ASCII 字符编码,该字符编码一共规定了128个字符的编码,对应英语字符与二进制位之间的映射关系。ASCII 码长度为一个字节,但只占用了一个字节的后面7位,最前面的一位统一规定为0。Base64 编码由于数据在网络传输过程中,不同的设备(路由器、浏览器、文本编辑器)对字符编码的处理方式不同,不被支持的字符编码可能被错误的处理。计算机中任何数据都是按字节存储,ASCII编码长度为一个字节,ASCII 编码几乎被所有的设备支持,因此,Base64 编码的思路是将数据按比特流转码为ASCII可见字符编码。Base64 编码的内容由0-9,a-z,A-Z,+,/组成,正好64个字符(6bit),这些字符在 ASCII 编码的可表示的范围内。因此,将数据解析为比特流,如01000100…,并依次取6bit为一组并映射到上述的ASCII字符,循环往复直到最后编码完成。Base64...

IDN域名

IDN域名国际化域名IDNs (Internationalized Domain Names)也称多语种域名,是指非英语国家为推广本国语言的域名系统的一个总称,例如含有日文的为日文域名,含有中文的域名为中文域名。IDN域名具有以下特点: 以用户自己喜爱的语言接触互联网 消除域名意译或音译书写引起的混乱状况 拓展和保护各个实体的网上品牌形象 确保各民族品牌和各民族语言的一致性 表明尊重当地语言文化 容易记忆,容易使用中文域名转码,即将中文域名转化为punycode码。Punycode是一个根据RFC 3492标准而制定的编码系统,主要用於把域名从地方语言所采用的Unicode编码转换成为可用於DNS系统的编码。“中文域名”后缀不被标准的解析服务器支持,需转化为punycode码进行解析。例如:“中国数字证书.COM” 经过转码后变成了: “xn–fiq4eu8y150d.com”目前,因为操作系统的核心都是英文组成,DNS服务器的解析也是由英文代码交换,所以DNS服务器上并不支持直接的中文域名解析,所有中文域名的解析都需要转成punycode码,然后由DNS解析puny...

分布式全局唯一ID服务

分布式GlobalId设计的目标分布式GlobalId设计的目标要求满足以下特点: 唯一性:不能出现重复的ID号,既然是全局唯一标识,这是最基本的要求。 递增性:递增性又分为趋势递增和单调递增。 趋势递增:在MySQL InnoDB引擎中使用的是聚集索引,由于多数RDBMS使用B-tree的数据结构来存储索引数据,在主键的选择上面我们应该尽量使用有序的主键保证写入性能; 单调递增:保证下一个ID一定大于上一个ID,例如事务版本号、IM增量消息、排序等特殊需求。 高可用:确保任何时候都能生成正确的ID。 高并发:在高并发的环境下依然表现良好。 规整性:确保生成的GlobalId,其长度是有固定的。UUIDUUID(Universally Unique Identifier)的标准型式包含32个16进制数字,以连字号分为五段,形式为8-4-4-4-12的36个字符,示例:550e8400-e29b-41d4-a716-446655440000,到目前为止业界一共有5种方式生成 UUID,详情见 IETF 发布的 UUID 规范 A Universal...

分布式事务

分布式事务 2PC 3PC TCC 事务消息2PC二阶段提交 问题🤔️:为什么二阶段提交协议要引入协调者?在分布式系统中,每个节点虽然可以知晓自己的操作时成功或者失败,却无法知道其他节点的操作的成功或失败。当一个事务跨越多个节点时,为了保持事务的ACID特性,需要引入一个作为协调者的组件来统一掌控所有参与者节点的操作结果,并最终指示这些节点是否要把操作结果进行真正的提交(比如将更新后的数据写入磁盘等等)。 问题🤔️:两阶段提交协议成立的前提假设是什么? 该分布式系统中,存在一个节点作为协调者(Coordinator),其他节点作为参与者(Participants),且节点之间可以进行网络通信。 所有节点都采用WAL预写式日志,并且日志被写入后即被保持在可靠的存储设备上,即使节点损坏不会导致日志数据的丢失。 所有节点不会永久性损坏,即使损坏后仍然可以恢复。 问题🤔️:什么是WAL预写式日志?预写式日志(Write-ahead logging,缩写 WAL)是关系数据库系统中用于提供原子性和持久性(ACID属性中的两个)的一系列技术。在使用WAL的系统中,所有的修...