Optimus-Xs' Blog

面向对象 (OOP) 的五个基本原则

在程序设计领域, SOLID(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)是由罗伯特·C·马丁在21世纪早期其著作《敏捷软件开发:原则、模式与实践》(Agile Software Development: Principles, Patterns, and Practices)中引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则 SOLID 原则旨在解决软件开...

死锁的产生、防止、避免、检测和解除

死锁概念 在许多应用中进程需要以独占的方式访问资源,当操作系统允许多个进程并发执行时可能会出现进程永远被阻塞现象,如两个进程分别等待对方所占的资源,于是两者都不能执行而处于永远等待状态,此现象称为死锁。 死锁通常被定义为:如果一个进程集合中的每个进程都在等待只能由此集合中的其他进程才能引发的事件,而无限期陷入僵持的局面称为死锁。 死锁发生条件 互斥条件: 临界资源是独占资...

UDP 打洞技术解析

P2P 通信最大的障碍就是 NAT(网络地址转换),NAT 使得局域网内的设备也可以与公网进行通讯,但是不同 NAT 下的设备之间通讯将会变得很困难。UDP 打洞就是用来使得设备间绕过 NAT 进行通讯的一种技术。 简单解释 NAT NAT 大家应该十分熟悉了,它分为几种。一种就叫做 NAT,它只对 IP 地址进行转换;另一种叫做 NAPT(Network Address/Port Tra...

如何实现多个进程同时监听同一个端口

为什么会有多个进程监听同一端口的特殊情况 在通常情况下,一个端口号只能被一个进程绑定和监听。这被称为“端口唯一性”原则,是操作系统内核为了确保网络通信的有序性而设计的。 但是为了解决高性能网络服务中的两个关键问题:高并发和零停机时间, 操作系统允许多个进程监听同一个端口 高并发和可伸缩性 在传统的单进程服务器模型中,一个进程监听并处理所有连接。但随着用户量的增长,单进程会很快成为性能...