本地的进程间通信(IPC)有很多种方式,但可以概括为以下4类:
在本地环境中,我们可以通过进程PID来唯一标识一个进程,但是在网络通信过程中,首要问题在于如何唯一标识一个进程,这是通信的基础。TCP/IP协议族为我们解决了这个问题,通过网络层的“IP地址”唯一标识主机以及传输层的“协议+端口”唯一标识主机中的应用程序(进程)。这样,利用三元组(IP地址,协议,端口),我们就能够唯一标识网络中的进程,从而实现进程间的通信。这种方式使得各个进程可以利用这个标识与其他进程进行交互。目前使用TCP/IP协议的应用程序通常采用应用编程接口:UNIX BSD的套接字(socket)和UNIX System V的TLI(已经被淘汰),来实现网络进程之间的通信。就目前而言,几乎所有的应用程序都是采用socket。
记录了下在日常工作中 MySQL开发过程中的一些基本规范,不断完善中。
mysql5.5之前默认的存储的引擎是MYISAM,目前默认的是innodb(innodb好处支持事务,行级锁,高并发下性能更好,对多核,大内存硬件支持更好)
【强制】禁止使用线上库表做压力测试。
【推荐】注意控制单表数据量的大小,数据量特别大(通常数据量超过上亿条,占用空间超过 10G)会造成写入性能降低,表结构修改,备份和恢复都会有很大的性能隐患,需要应用根据业务特点,预估业务数据增涨速度,用历史数据归档和分库分表等手段来控制数据量大小。
【推荐】单条记录的大小不要超过8kb。
- 从索引角度来看,InnoDB的页块大小默认为16KB。这意味着每个页块中至少可以存放两行数据,这是为了保持B+树结构的有效性。因此,单行数据的大小受到了这个限制,通常不应超过页块大小的一半,即8KB。如果单行数据超过了这个限制,就会导致每个页块中只能存放一行数据,这会降低B+树的效率,使得索引的性能下降(每个页中只有一条数据,整个树就成了一条双向链表)。
- 从硬盘扇区大小的角度来看,硬盘的扇区大小通常为4KB,这意味着单条记录的大小不应超过扇区大小。如果单条记录过大,查询时可能会跨越多个扇区,增加磁盘I/O的开销,从而降低查询性能。
并行和并发其实是不同的概念,官方有专门的介绍视频,大家有兴趣可以去看看。我个人是这么理解:
我们以 Node.js 为例来理解并发和并行的概念。
在开发中,同步和异步是两种常见的方法调用方式,它们在处理任务时有着不同的执行方式和特点。
随着计算机技术的不断进步和相关应用规模的迅速扩大,传统的集中式系统已逐渐被分布式系统所取代(集中式的系统架构存在诸多单点问题),以适应大型互联网应用的需求。分布式系统具有以下特点:多节点分布、对等性、并发性、全局时钟难以定义以及故障的不可避免性。