网络技术:
进程(Process)
- 定义:进程是程序的一次执行过程,它有自己的内存空间和系统资源(资源独立)。
- 特性:
- 每个进程都有唯一的PID(进程ID)。
- 进程间通信(IPC)可以通过管道、信号量、共享内存等方式实现。
- 进程可以创建子进程,子进程继承父进程的部分属性。
比方:
想象一下,你的电脑就像一家大型的工厂,而每个进程就是这家工厂的一个独立车间。每个车间都有自己的资源,比如工具、原料和工人,它们可以独立完成特定的任务。例如,当你打开一个Word文档时,就启动了一个新的进程,这个进程只负责处理Word文档相关的任务。
线程(Thread)
- 定义:线程是进程中的执行单元,共享所属进程的资源。
- 特性:
- 线程间通信更简单,因为它们共享内存空间。
- 创建和切换线程比进程成本低。
- 多线程可以充分利用多核处理器,提高并发性能。
比方:
在一个车间(进程)内部,你可以有多个工人(线程)。这些工人共享同一套工具和原料,但各自做着不同的工作。这样,一个车间就能同时进行多项任务。比如,在浏览器进程中,可能有一个线程在加载网页,另一个线程在处理JavaScript脚本。
线程池(Thread Pool)
- 定义:一组预先创建好的线程集合,用于执行提交的任务。
- 优点:
- 减少线程创建和销毁的开销。
- 控制并发线程的数量,避免资源过度消耗。
- 提高响应速度和处理能力。
比方:
想象线程是一群临时工,而线程池就是管理这群临时工的人力资源部门。当有新任务进来时,人力资源部会指派一个空闲的临时工去执行任务,任务完成后,临时工不会立即解散,而是回到人力资源部等待下一次任务。这样做的好处是减少了创建和销毁线程的开销。
协程(Coroutine)
- 定义:一种轻量级的线程,可以自由地挂起和恢复执行。
- 特性:
- 不受操作系统调度限制,由应用程序控制。
- 切换成本远低于线程。
- 常用于I/O密集型任务,如网络请求处理。
比方:
协程更像是车间里的流水线工人,他们可以在不同的任务间灵活切换,不需要像线程那样拥有独立的资源。如果把线程比作同时在不同桌子吃饭的顾客,那么协程就像是在一张大桌子上轮流吃饭的人们,共用一套餐具。
网卡(Network Card / NIC)
- 定义:用于实现计算机网络连接的硬件设备。
- 功能:
- 发送和接收网络数据包。
- 支持多种网络协议,如以太网、Wi-Fi等。
- 配置IP地址、子网掩码等网络参数。
比方:
网卡就像是你家的电话线或光纤接口,它是你电脑与外界网络通信的物理接口。没有网卡,电脑就像一座孤岛,无法与其他设备交流信息。
路由器(Router)
- 定义:在网络中传输数据包的设备,决定数据包的最佳路径。
- 功能:
- 路由选择算法确定数据包的传输路径。
- 实现不同网络之间的通信。
- 提供防火墙、DHCP服务器等功能。
比方:
路由器则像是邮局,它接收来自不同地方的信息包,并根据目的地将它们转发到正确的路径上。在家庭网络中,路由器连接互联网和你家的多台设备,确保数据能够正确无误地到达每一个设备。
Socket
- 定义:用于网络通信的编程接口,提供数据的双向流式传输。
- 类型:
- 流式套接字(SOCK_STREAM,TCP)保证数据的可靠传输。
- 数据报套接字(SOCK_DGRAM,UDP)提供无连接的数据包传输。
- 原始套接字(SOCK_RAW)允许直接访问底层协议。
比方:
Socket是一种通信端口,可以看作是两台计算机之间通信的管道。如果你打电话给朋友,那么电话线路就是socket,它让双方能互相听到对方的声音。在计算机网络中,socket允许两台机器上的应用程序相互通信。
数据库(Database)
- 定义:组织和存储数据的系统,提供数据的检索、更新和管理。
- 类型:
- 关系型数据库(RDBMS)使用表格结构存储数据。
- 非关系型数据库(NoSQL)支持更灵活的数据模型,如键值对、文档、图形等。
- 特性: 数据完整性、安全性、并发控制等机制。SQL语言用于数据查询和管理。
比方:
数据库就像是一个巨大的图书馆,存储着各种各样的信息。图书馆有管理员(数据库管理系统),他们会按照一定的规则分类、存储和检索书籍(数据)。当用户(应用程序)想要查找或更新信息时,他们通过管理员来进行操作,而不用直接接触书架(数据表)。