进程概念进程是动态的,是程序的一次执行过程,同一个程序多次执行会对应多个进程
组成
程序段、数据段、PCB三部分组成了进程的实体(进程映像)引入进程实体的概念后,可以把进程定义为:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
注意: PCB是进程存在的唯一标识
PCB当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的”身份证号” PID
操作系统要记录PID,...
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中。以下是一些常用的 Docker 命令:
1. 镜像相关命令
docker pull <image>: 从 Docker Hub 或其他镜像仓库拉取镜像。
1docker pull ubuntu
docker images: 列出本地所有的镜像。
1docker images
...
在SQL中,事务(Transaction)是一组数据库操作的逻辑单元,这些操作要么全部成功执行,要么全部不执行。事务的主要目的是确保数据库的一致性和完整性,尤其是在并发访问和系统故障的情况下。
事务的基本概念
事务的特性(ACID):
原子性(Atomicity): 事务中的所有操作要么全部成功执行,要么全部不执行。如果事务中的任何一个操作失败,整个事务都会回滚到初始状态。
一致性(Con...
在SQL中,触发器(Trigger)是一种特殊的存储过程,它在特定的数据库操作(如插入、更新或删除)发生时自动执行。触发器通常用于维护数据完整性、执行审计跟踪、记录日志等任务。触发器可以在表级别定义,并且可以与 INSERT、UPDATE 和 DELETE 操作相关联。
触发器所依附的表为基本表,当触发器表上发生select/update/delete操作时,会自动生成两个临时的表(new/...
在SQL中,索引是一种数据结构,用于加速数据库表中数据的检索速度。索引类似于书籍的目录,可以帮助数据库系统快速定位到存储在表中的特定数据行,而不必扫描整个表。索引对于提高查询性能非常重要,尤其是在处理大型数据集时。
索引的基本概念
索引的类型:
B-Tree 索引: 这是最常见的索引类型,适用于范围查询和排序操作。B-Tree(平衡树)索引能够保持数据的有序性,并且支持高效的插入、删除和查...
视图SQL 中的视图(View)是一个虚拟表,它基于一个或多个表的查询结果。视图本身不存储数据,而是存储查询的定义。当你查询视图时,数据库引擎会执行视图定义的查询,并返回结果。视图可以简化复杂的查询,提供数据的安全性,并隐藏底层表的复杂性。
1. 创建视图(CREATE VIEW)你可以使用 CREATE VIEW 语句来创建视图。视图的定义可以包含 SELECT 语句中的所有元素,如 WH...
数据库定义语言(DDL)创建数据库1create database <database_name>
为了支持中文,我们需要在创建的时候可以修改编码格式
1CREATE DATABASE IF NOT EXISTS <database_name> DEFAULT CHARSET utf8 COLLATE utf8_general_ci
创建表12345create ...
数据库范式数据库范式是一套用于设计关系数据库的规范化标准,其目的是减少数据冗余并提高数据的完整性和一致性。范式化是一种将数据库表设计成符合一定级别的过程,每个级别称为一个范式。通过范式化,可以减少数据存储中的冗余,同时避免潜在的数据不一致问题。
数据库范式通常分为六个级别,其中最常用的是前三范式(1NF、2NF、3NF):
1. 第一范式 (1NF) 第一范式要求表中的每一列都是不可分割...
信号和槽当我们需要一个界面通知另一个界面时,可以采用信号和槽机制。通过链接信号和槽,当一个界面发送信号时,链接该信号的槽会被响应,从而达到消息传递的目的。
我们先创建两个界面并为两个界面添加一个按钮,通过按钮的点击来实现界面的切换
主界面
先实现主界面的点击按钮功能,并在终端打印一条信息”show child dialog”现在MainWindow的构造函数中添加信号和槽的逻辑连接
1co...
简介IOServicePool是一个用于管理多个io_context实例的多线程模型,每一个线程管理一个io_context,它的主要目的是在多线程环境中高效地分发和异步处理I/O操作
单线程和多线程对比单线程模式图
多线程模式图
优点
每一个io_context跑在不同的线程里,所以同一个socket会被注册在同一个io_context里,它的回调函数也会被单独的一个线程回调,那...