ssingularity的个人日志

怕什么真理无穷,进一步有进一步的欢喜

计算机网络学习笔记(3)—— TCP

TCP简介TCP在网络分层结构中处于运输层这一分层,但是实际上真正做数据运输操作的其实是IP层,TCP它本质上更多的做的是对于这些传输的数据的控制,而这也正是它的名字所代表的——Transport Control ProtocolTCP的特点无非是四点:面向连接的:面向连接的协议要求正式发送数据之前

计算机网络学习笔记(2)—— IP层

IP层CIDR在一开始的时候,IP是划分为A,B,C三类地址的,但是这地址划分为三类导致了很尴尬的情况:C类地址能包含的最大主机数量实在太少了,只有254个,而第二级别的B类地址能包含的最大主机数量又太多了,足足有65534,在这种情况下组网时选择C类网段还是B类网段就成为了问题,于是有了一个折中的

计算机网络学习笔记(1)—— 物理层与链路层

网络包分层网络包的装包与分包如下图所示:网络包的核心准则就是:只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层。物理层物理层其实就是最底层的传输介质的那一层,如:网线、无线网等,在该层仅仅负责数据包的传输(将包从一个地方传到另外一个地方)至于目标地方是不是真正的接受者,信号

Linux磁盘分区与LVM

服务器故障最近实验室的一台机子崩了,开机直接进入GRUB引导页面无法正常启动,网上查询解决方案说是由于grub无法找到操作系统的引导文件,需要找到放置了boot文件对应的磁盘分区并手动配置即可,但是手动配置的时候发现物理磁盘上的都是LVM的文件系统,无法被正常识别因此无法被挂载,而真正的LV逻辑卷通

数据库线上更新

数据库线上更新往往是一个比较麻烦的问题,由于线上数据库已经用在了生产环境中其中存在了大量的真实数据,因此当数据库结构发生改动时,不能像测试数据库一样可以随时清空数据库,修改数据库的表结构而不影响任何的用户,在线上数据库中对于表结构的任何更新都有可能对于用户带来非常大的干扰目前而言,如果涉及到了数据库

Go的包机制

golang的所有文件都需要指定其所在的包,包有两种类型,一种是main包,使用package main在代码的最前面声明,另外一种就是非main包,在main包中可以有唯一的一个main函数,这个函数也就是程序的入口,也只有main包可以编译成为可执行的文件go使用package来管理源文件,pa

深入理解Nginx(二)—— 架构设计

模块化架构Nginx的架构基础就是高度模块化的设计,在Nginx中除了少量的核心代码,其他皆为模块,模块化架构具有如下特点:高度抽象的模块接口nginx_module_t:每一个模块都要实现nginx_module_t模块接口,该接口中定义了所有模块共性的东西:1. Commands集合——配置文件

基于事件驱动架构的一些设计难题及解决方法

处理并发和消息顺序问题描述在保留消息顺序的同时横向扩展多个接收方的实例往往会产生并发和消息顺序的问题,例如:假设有3个相同的接收方实例从同一个点对点通道读取消息,发送方按顺序发布了Order Created、Order Updated和Order Cancelled这3个事件消息,如果简单地将每个消

对于C语言多重指针的理解

背景最近在看《深入理解Nginx》一书,其中涉及了大量Nginx的源码,由于Nginx是使用C语言写的,因此本来就看的比较头疼了,然后又看到了Nginx的模块配置存储那一块,Nginx在具体实现中每个进程都会有一个ngx_cycle_t的数据结构去存储所有重要的东西,其中就是使用了一个conf_ct

红黑树

红黑树是一种稍微弱一点的平衡二叉树,它的定义如下:1. 每个节点或者是黑色,或者是红色。2. 根节点是黑色。3. 每个叶子节点(Null节点)是黑色。4. 如果一个节点是红色的,则它的子节点必须是黑色的。5. 从任意一个节点到叶子节点,经过的黑色节点是一样的。可以发现在满足红黑树定义的情况下,即使在