sql非查询知识点(增删改-crud没有r)

1.建库

create database database_name

2.使用该数据库

use database_name

3.建表

3.1普通建表

create table if not exists actor(

        actor_id smallint(5) not null primary key comment "主键id",

        first_name varchar(45) not null comment "名字",

        last_name varchar(45) not null comment "姓氏",

        last_update date not null comment "日期"

)

该建表命令创建的表结构如图所示:

3.2 复制建表

3.2.1复制表结构+数据

create table new_table select * from old_table

3.2.2复制表结构

CREATE TABLE new_table LIKE old_table;

4.插入&删除&更新&&事务

插入数据:

insert into actor values
(1,"PENELOPE","GUINESS","2006-02-15 12:34:33"),
(2,"NICK","WAHLBERG","2006-02-15 12:34:33")

删除数据:

删除特定行

DELETE FROM table_name WHERE condition;

删除所有行

DELETE FROM table_name;

tips:在mysql中不允许在子查询的同时删除原表数据,但是sqllite可以这样做

更新数据:

假设有一个名为 employees 的表,该表有 id, name, 和 salary 三个列。

更新特定行

--ID 为 10 的员工的薪水更新为 5000。
UPDATE employees
SET salary = 5000
WHERE id = 10;

更新多个列/字段

UPDATE employees
SET salary = 5000, position = 'Manager'
WHERE id = 10;

更新多行

UPDATE employees
SET salary = salary + 500
WHERE salary < 3000;

tips:在不带 WHERE 子句的情况下使用 UPDATE 会更新表中的所有行。

事物

定义:将一系列操作作为一个单一的、不可分割的工作单元来处理。

在事务中,要么所有的操作都成功执行,要么所有的操作都不执行。事务的这种特性确保了数据库的完整性和一致性

四个基本特性(acid):

  1. 原子性(Atomicity):事务是数据库操作的最小单位,它们要么全部完成,要么全部不执行。如果事务的一部分操作失败,整个事务将回滚到开始状态。

  2. 一致性(Consistency):事务必须使数据库从一个一致的状态转换到另一个一致的状态。这意味着事务执行的结果必须满足所有的数据库约束。

  3. 隔离性(Isolation):数据库系统提供了一定级别的隔离,以防止多个事务并发执行时相互干扰。这意味着一个事务的操作和中间状态对其他事务是不可见的。

  4. 持久性(Durability):一旦事务提交,其对数据库所做的更改就是永久性的,即使系统发生故障也不会丢失。

事务处理例子:

        假设你在银行应用中处理一笔转账,需要从账户 A 向账户 B 转移资金。这个过程可以分为两个步骤:从账户 A 扣除相应金额,向账户 B 添加相应金额。这两个步骤应该作为一个事务来处理。
      

START TRANSACTION;

-- 从账户 A 扣款
UPDATE accounts SET balance = balance - 100 WHERE account_number = 'A123';

-- 向账户 B 存款
UPDATE accounts SET balance = balance + 100 WHERE account_number = 'B456';

-- 检查是否有错误,如果没有则提交事务
COMMIT;

    START TRANSACTION; 语句标志着一个新事务的开始。在执行这个语句后,你可以执行一个或多个数据库操作(如 INSERTUPDATEDELETE 等),这些操作作为事务的一部分。在 START TRANSACTION; 之后执行的操作不会立即反映在数据库中。这些变更暂时保持在事务的上下文中,直到事务被提交或回滚。这种机制允许你在事务中执行多步操作,同时保持数据的一致性和完整性。

        COMMIT; 语句用于提交事务。这意味着自从上一个 START TRANSACTION; 以来所有的数据库更改都将被永久保存到数据库中。只有在执行 COMMIT; 之后,这些更改才对其他用户可见。

5.mysql中常用的4种插入数据的方式

5.1 insert into

insert into table1 values()

表示插入数据,数据库会检查主键,如果出现重复会报错;

5.2 replace into

replace into table1 values()

表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;

使用方式:

REPLACE INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
REPLACE INTO table_name (column1, column2, ...)
SELECT column1, column2, ...
FROM another_table
WHERE condition;

5.3 insert ignore into

insert ignore into table1 values()

表示,如果中已经存在相同的记录,则忽略当前新数据;eg:

insert ignore into actor values("3","ED","CHASE","2006-02-15 12:34:33")

5.4 从其他表导入数据

INSERT INTO new_table SELECT * FROM old_table;

SELECT 本身是一个查询语句,用于从数据库中检索数据。但是,当 SELECT 语句与 INSERT INTO 语句结合使用时,它的功能就扩展了,不仅仅是检索数据,还包括将检索到的数据插入到另一个表中。——在 SQL 中,INSERT INTO ... SELECT ... 语句允许您将一个查询的结果直接插入到一个表中。

标准操作:

INSERT INTO target_table (column1, column2, ...)
SELECT column1, column2, ...
FROM source_table
WHERE condition;

6.数据库索引

MySQL中的索引是数据库表中一种特殊的数据结构,它可以加快数据检索速度。索引存储在磁盘上,它们包含指向表中数据行的指针。

索引一共有五种:主键索引(primary key)、唯一索引(unique)、普通索引、全文索引、组合索引。

主键(PRIMARY KEY)索引

  • 每个表只能有一个主键。
  • 主键列不能包含NULL值。
  • 主键保证了表中每行数据的唯一性。

1.创建新表时创建主键,略。

2.已有表时,想设置某个列为主键,可以使用alter table

ALTER TABLE table_name
ADD PRIMARY KEY (column_name);

唯一(UNIQUE)索引

  • 保证列中每个值的唯一性。
  • 与主键不同,唯一索引可以有多个,并且可以包含NULL值(但只能有一个NULL值)。

1.创建新表时,创建唯一索引

CREATE TABLE table_name (
    column1 VARCHAR(255),
    column2 VARCHAR(255),
    UNIQUE INDEX (column1)
);

2.已有表时,想为某个列创建唯一索引

ALTER TABLE table_name
ADD UNIQUE index_name (column_name);

普通索引

  • 最基本的索引,没有任何唯一性的限制。
  • 可以帮助加快查询速度。

1.在建表时创建普通索引

CREATE TABLE table_name (
    column1 VARCHAR(255),
    column2 VARCHAR(255),
    INDEX (column1)
);

2.已有表时,想为某个字段创建普通索引

CREATE INDEX index_name ON table_name (column_name);

3.举例说明,普通索引与唯一索引使用情况

首先是区别,就是某个字段的唯一索引是不允许重复的❎,也就是说该字段下每一行的index值都是唯一的;

但是某个字段的普通索引是允许重复的✅,也就是说该字段下每一行的index值是可以不唯一的;什么情况下需要不唯一的索引呢?

——比如,多个员工可能属于同一个部门,因此 department 列中会有重复的值。普通索引会索引这些值,使得我们可以快速根据部门检索员工,但它并不强制每个部门值都是唯一的;相比之下,如果是唯一的索引,那么两个员工是两行数据,同属一个部门,但是部门的索引由于唯一性的限制,却是不同的,那么数据库就没法根据这个索引来加快查找同一部门的员工了,就失去了意义。

全文(FULLTEXT)索引

  • 专门用于全文搜索。
  • 只有Char、VarChar和Text类型的列才能创建全文索引。
  • 全文索引通过创建一个特殊的索引类型,其中包含文本数据的所有单词的列表,以及它们在文本数据中出现的位置。当执行全文搜索查询时,数据库可以快速查找包含特定单词或短语的行。

1.创建表时创建全文索引

CREATE TABLE table_name (
    column1 TEXT,
    FULLTEXT (column1)
);

2.已经有表时,创建全文索引

ALTER TABLE table_name
ADD FULLTEXT index_name (column_name);

3.使用全文索引进行搜索

要利用全文索引进行搜索,可以使用 MATCH ... AGAINST 语法:这个查询会在 articles 表的 content 列中搜索包含 'some search term' 的记录。

SELECT title, content FROM articles
WHERE MATCH(content) AGAINST('some search term');

组合索引

  • 在表的多个列上建立的索引。
  • 可以覆盖查询中涉及的多个列。

1.创建表时创建组合索引

CREATE TABLE table_name (
    column1 VARCHAR(255),
    column2 VARCHAR(255),
    column3 DATE,
    INDEX (column1, column2)
);

2.已经有表时,创建组合索引

CREATE INDEX index_name ON table_name (column1, column2);

索引声明写法辨析

在创建表时,创建索引的写法并不局限于将索引定义放在表定义的最后。实际上,可以在定义每个列的同时直接指定某些类型的索引,尤其是主键(PRIMARY KEY)和唯一约束(UNIQUE)。这通常用于确保数据的完整性和唯一性。例如:

CREATE TABLE example_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE,
    email VARCHAR(100)
);

对于普通索引、全文索引、组合索引,则是一般要在最后声明

索引意义

        给一个字段加了索引之后,查询操作不需要任何改变;仍然像之前一样编写 SELECT 语句。索引是在后台工作的,用户通常不会直接与其交互。数据库管理系统会自动决定是否使用索引来优化查询。

数据库优化器会根据查询条件、使用的索引类型、表中数据的统计信息以及可能还有其他因素,来决定是否使用索引以及如何使用索引。如果优化器认为使用索引可以提高查询效率,它会自动应用索引来检索数据。

索引原理

1.数据结构

数据库索引通常使用高效的数据结构,如 B-树(最常见)、B+树、哈希表等。这些数据结构优化了数据检索的速度。在B+树中,所有的数据都存储在叶子节点(通常包含指向实际数据的指针),而内部节点只存储键值,这使得B+树更适合用于数据库索引。

2.提高检索效率

索引大大减少了数据库必须检查的数据量。没有索引,DBMS 可能必须执行全表扫描,即逐行查看表中的每一行,直到找到所需的数据。索引使得DBMS可以快速定位到表的特定部分,从而只检查少量数据。

3.维护成本和插入、删除和更新成本变高

虽然索引可以显著提高查询效率,但它们也有维护成本。当表中的数据被添加、删除或修改时,索引也必须更新。这意味着写操作(INSERT、DELETE、UPDATE)可能会因为索引而变慢。

同时,索引还需要额外的存储空间。

强制索引*

在MySQL中,强制索引(Force Index)是一种优化技术,可以在查询时指示数据库使用特定的索引。这在数据库查询优化器未能选择最佳索引时非常有用。使用FORCE INDEX可以指导查询优化器使用特定索引,这可能会提高查询性能。(可能是因为mysql优化器可能在有多个索引时选择的索引不是最优的,是否最优需要通过在执行缓慢的sql前加上 explain 关键字,查看执行计划)

强制索引写法:

如果有一个名为table_a的表和一个索引名为my_index,这样使用FORCE INDEX:

SELECT * 
FROM table_a FORCE INDEX (my_index)  --注意是在from表的时候就需要指定index
WHERE column_name = 'value';

这将强制MySQL使用my_index索引来执行查询。这种方法应谨慎使用,因为它会覆盖MySQL优化器的索引选择,只有在你确信某个索引比优化器自动选择的更有效时才推荐使用。

7.视图(view)

什么是视图

视图(View)是基于SQL查询的虚拟表,主要用于简化复杂的SQL查询和提高数据访问的安全性。视图不直接存储数据,而是存储SQL查询。它看起来和实际的表一样,可以包含特定的行和列,但这些数据来自于基础表。

视图的作用

视图的主要目的包括:

  • 简化查询:对于复杂的SQL查询,可以创建一个视图,这样用户就可以通过简单查询视图来获取数据(像查询普通表一样查询视图),而不需要每次都执行复杂的查询。
  • 安全性:视图可以用来限制对基础数据的访问,确保用户只能看到他们被授权访问的数据。
  • 数据抽象:用户可以使用视图而不需要关心数据是如何存储和计算的。

查看方式

既然view是一种虚拟表,那么也就意味着,使用sql命令时,使用show tables的命令时,结果是基础表和视图的综合

show tables

如果要准确区分基础表和视图需要用如下命令:

show full tables    

SHOW FULL TABLES命令提供了更多的信息,包括每个表是视图还是真实的表。在结果中,它添加了一个TABLE_TYPE字段,这个字段的值可以是'BASE TABLE'(对于普通表)或者'VIEW'(对于视图)。这使得用户能够区分显示的列表中哪些是实际的表格,哪些是视图。如果只使用SHOW TABLES,这个区分是不可见的。

查询基础表:

SHOW FULL TABLES WHERE Table_type = 'BASE TABLE';

查询视图:
 

SHOW FULL TABLES WHERE Table_type = 'VIEW';

创建视图

CREATE VIEW employee_view AS
SELECT emp_id, name, position
FROM employees
WHERE department = 'Sales';

查询视图

SELECT * FROM employee_view;

修改或更新视图

CREATE OR REPLACE VIEW employee_view AS
SELECT emp_id, name
FROM employees;

删除视图

DROP VIEW employee_view;

8.修改表结构

新增字段/列

在表最后一列后面增加

alter table table_name
add column column_name ...

--例如,增加create_date, 类型为datetime, NOT NULL,默认值为'2020-10-01 00:00:00'
alter table actor
add column create_date datetime not null default "2020-10-01 00:00:00"

在指定位置增加列

alter table table_name
add column column_name ... after [列名]

在第一列增加

alter table table_name
add column column_name ... first

创建外键约束

ALTER TABLE table_a
ADD CONSTRAINT FOREIGN KEY (column_in_a)
REFERENCES table_b(column_in_b)

外键类型说明:

现在的这个例子只是给table_a的一个字段加上了外键约束,并且引用了table_b的一个字段,

1.如果再给table_b的这个字段加上外键约束,并且引用table_a的那个字段且两字段都唯一,那么创建的这两个外键约束就会使得这个关系变成一对一关系

2.如果table_b中的这个字段是唯一的话,就已经创建了一对多的关系

3.实现多对多关系:假设有两个表 students 和 courses,表示学生和课程,一个学生可以注册多门课程,一门课程可以被多个学生注册。为了表示这种关系,可以创建一个名为 student_courses 的关联表。

第一步:创建原始表

CREATE TABLE students (
    student_id INT PRIMARY KEY,
    name VARCHAR(100)
);

CREATE TABLE courses (
    course_id INT PRIMARY KEY,
    title VARCHAR(100)
);

第二步:创建关联表

CREATE TABLE student_courses (
    student_id INT,
    course_id INT,
    PRIMARY KEY (student_id, course_id),
    FOREIGN KEY (student_id) REFERENCES students(student_id),
    FOREIGN KEY (course_id) REFERENCES courses(course_id)
);

说明:在 student_courses 表中

  • student_idcourse_id 是外键,分别指向 studentscourses 表。
  • (student_id, course_id) 对作为主键,确保每个学生和课程的组合是唯一的。

常见修改表结构语句

ALTER TABLE 表名 ADD 列名/索引/主键/外键等;
ALTER TABLE 表名 DROP 列名/索引/主键/外键等;
ALTER TABLE 表名 ALTER 仅用来改变某列的默认值;
ALTER TABLE 表名 RENAME 列名/索引名 TO 新的列名/新索引名;
ALTER TABLE 表名 RENAME TO/AS 新表名;
ALTER TABLE 表名 MODIFY 列的定义但不改变列名;
ALTER TABLE 表名 CHANGE 列名和定义都可以改变。

9.触发器

触发器的定义

触发器是一种特殊类型的存储过程,它不同于存储过程,它主要是通过事件触发而被执行的,即不是主动调用而执行的;它在满足某种条件下会自动执行。

触发器:trigger,是指事先为某张表绑定一段代码,当表中的某些内容发生改变的时候,系统会自动触发代码并执行;触发器可以在下列情况发生时被触发执行:

  • INSERT:当数据被插入到表中时。
  • UPDATE:当表中的数据被更新时。
  • DELETE:当表中的数据被删除时。
     

创建触发器的基本语法:

CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name FOR EACH ROW
BEGIN
    -- 触发器逻辑
END;

示例:

假设有两个表:orders(订单表)和order_audit(订单审计表)。每当orders表中插入新的订单时,我们想在order_audit表中添加一条记录来记录这个事件。(如果触发器只包含一条语句,可以省略 BEGIN 和 END,但为了代码的清晰和一致性,即使只有一条语句,使用 BEGIN 和 END 也是一个好习惯。)

CREATE TRIGGER after_order_insert
AFTER INSERT ON orders FOR EACH ROW
BEGIN
    --触发逻辑
    INSERT INTO order_audit (order_id, audit_action)
    VALUES (NEW.id, NEW.action);    --注意这个地方要加封号
END; --这个地方也要加封号

⚠️注意⚠️

  • INSERT 触发器中,NEW 用于访问新插入行的列。
  • UPDATE 触发器中,NEW 用于访问更新后的行的列,而 OLD 用于访问更新前的行的列。

x

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/372317.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python中的while循环,知其然知其所以然

文章目录 while循环结构1.用循环打印1 ~ 100步骤解析2. 1 ~ 100的累加和3.死循环1. 用死循环的方法实现 1 ~ 100累加和 4. 单向循环(1)打印 一行十个小星星*(2)通过打印一个变量的形式,展现一行十个小星星(3)一行十个换色的星星 ★☆★☆★☆★☆★☆(4)用一个循环,打印十行十列…

重写Sylar基于协程的服务器(7、TcpServer HttpServer的设计与实现)

重写Sylar基于协程的服务器&#xff08;7、TcpServer & HttpServer的设计与实现&#xff09; 重写Sylar基于协程的服务器系列&#xff1a; 重写Sylar基于协程的服务器&#xff08;0、搭建开发环境以及项目框架 || 下载编译简化版Sylar&#xff09; 重写Sylar基于协程的服务…

『运维备忘录』之 Vim 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是&#xff0c;甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作&#xff0c;持续给大家更新运维工作所需要接触到的知识点&#xff0c;希望大…

杨中科 ASP.NETCORE 高级14 SignalR

1、什么是websocket、SignalR 服务器向客户端发送数据 1、需求&#xff1a;Web聊天;站内沟通。 2、传统HTTP&#xff1a;只能客户端主动发送请求 3、传统方案&#xff1a;长轮询&#xff08;Long Polling&#xff09;。缺点是&#xff1f;&#xff08;1.客户端发送请求后&…

如何使用MCSM搭建我的世界Java版服务器并实现远程联机游戏

文章目录 1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 本教程主要介…

1802907-91-0,Methyltetrazine-PEG4-COOH,可以与多种不同的化学基团反应

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;Methyltetrazine-PEG4-COOH&#xff0c;Methyltetrazine-PEG4-acid&#xff0c;甲基四嗪-四聚乙二醇-羧基&#xff0c;甲基四嗪-四聚乙二醇-羧酸&#xff0c;甲基四嗪PEG4羧酸&#xff0c;甲基四嗪-PEG4-羧酸 一、基…

基于Java医院管理系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

爱快安装和双宽带叠加

文章目录 一、爱快安装二、爱快使用1. 配置WAN12. 配置WAN23. 配置LAN14. 配置DHCP5. DNS设置6. 多线负载7. 基础设置 三、通过交换机拨号1. 交换机设置2. 配置WAN1 一、爱快安装 &#xff08;1&#xff09;下载爱快路由ISO版本 爱快路由系统下载 &#xff08;2&#xff09;IS…

群晖NAS开启FTP服务结合内网穿透实现公网远程访问本地服务

⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 文章目录 ⛳️ 推荐1. 群晖安装Cpolar2. 创建FTP公网地址3. 开启群晖FTP服务4. 群晖FTP远程连接5. 固定FTP公网地址6. 固定FTP…

请问CTF是什么?请介绍一下关于隐水印的知识特点技术原理应用领域技术挑战

目录 请问CTF是什么&#xff1f; 请介绍一下关于隐水印的知识 特点 技术原理 应用领域 技术挑战 请问CTF是什么&#xff1f; CTF&#xff08;Capture The Flag&#xff0c;夺旗比赛&#xff09;是一种信息安全竞赛&#xff0c;常见于计算机安全领域。这种比赛模拟各种信…

Python中的HTTP代理服务器和客户端的区别与联系

在Python编程中&#xff0c;当我们涉及到网络通信&#xff0c;尤其是HTTP请求时&#xff0c;经常会听到“HTTP代理服务器”和“客户端”这两个词。它们在网络世界中扮演着不同的角色&#xff0c;但又有着紧密的联系。 区别 首先&#xff0c;我们来谈谈它们的区别。 HTTP代理…

Multisim14.0仿真(五十一)74LS42D应用设计

一、74LS42D简介&#xff1a; 74LS42D是4 线 BCD 至 10 线十进制解码器&#xff0c;用在数字电路与单片机控制系统中&#xff0c;以达到通过译码来扩展ip端口的功能。 二、74LS42D逻辑框图&#xff1a; 三、74LS42D功能表&#xff1a; 四、仿真原理图&#xff1a; 五、运行效果…

Rust 本地文档的使用:rustup doc

Rust 是一种系统级编程语言&#xff0c;以其安全性、速度和内存控制能力而闻名。为了方便开发者更好地了解并利用 Rust 标准库和工具链中的功能&#xff0c;Rust 提供了一种内置的文档浏览方式——通过 rustup doc 命令。 安装 rustup 在查阅 Rust 文档之前&#xff0c;确保你…

GCC编译器的使用以及使用Makefile语法进行操控

Makefile 这里使用的Makefile操控编译器 gcc 常见的组成部分 c&#xff1a; gcc 的一个版本&#xff0c;默认语言设置为 C&#xff0c;而且在链接的时候自动包含标准 C 库。这和 g 一样configure&#xff1a; GCC 源代码树根目录中的一个脚本。用于设置配置值和创建 GCC 编…

FPS游戏穿模最强解决方案!开发一款FPS游戏射击游戏真的太简单!

FPS游戏穿模最强解决方案&#xff01;开发一款FPS游戏射击游戏真的太简单&#xff01; 2001年&#xff0c;FPS游戏老大哥《CS》横空出世&#xff0c;迅速在国内外掀起了一波FPS游戏的热潮&#xff0c;随后《CF穿越火线》在国内上线&#xff0c;一举拿下“玩家最喜爱的十大网络…

Java设计模式大全:23种常见的设计模式详解(二)

本系列文章简介&#xff1a; 设计模式是在软件开发过程中&#xff0c;经过实践和总结得到的一套解决特定问题的可复用的模板。它是一种在特定情境中经过验证的经验和技巧的集合&#xff0c;可以帮助开发人员设计出高效、可维护、可扩展和可复用的软件系统。设计模式提供了一种在…

Ubuntu使用Docker部署Nginx并结合内网穿透实现公网远程访问

文章目录 1. 安装Docker2. 使用Docker拉取Nginx镜像3. 创建并启动Nginx容器4. 本地连接测试5. 公网远程访问本地Nginx5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 在开发人员的工作中&#xff0c;公网远程访问内网是其必备的技术需求之一。对于…

鸿蒙内核框架

1 内核概述 内核简介 用户最常见到并与之交互的操作系统界面&#xff0c;其实只是操作系统最外面的一层。操作系统最重要的任务&#xff0c;包括管理硬件设备&#xff0c;分配系统资源等&#xff0c;我们称之为操作系统内在最重要的核心功能。而实现这些核心功能的操作系统模…

【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题

目录 1、题目介绍 2、解题思路 2.1、暴力破解法 2.2、经典Next Greater Number问题解法 1、题目介绍 原题链接&#xff1a;496. 下一个更大元素 I - 力扣&#xff08;LeetCode&#xff09; 示例1&#xff1a; 输入&#xff1a;nums1 [4,1,2], nums2 [1,3,4,2].输出&…

【计算机网络】Socket的SO_TIMEOUT与连接超时时间

SO_TIMEOUT选项是Socket的一个选项&#xff0c;用于设置读取数据的超时时间。它指定了在读取数据时等待的最长时间&#xff0c;如果在指定的时间内没有数据可读取&#xff0c;将抛出SocketTimeoutException异常。 SO_TIMEOUT的设置 默认情况下&#xff0c;SO_TIMEOUT选项的值…