浅看MySQL数据库
有这么一句话:“一个不会数据库的程序员不是合格的程序员”。有点夸张,但是确是如此。透彻学习数据库是要学习好多知识,需要学的东西也是偏难的。我们今天来看数据库MySQL的一些简单基础东西,跟着小编一起来看一下吧。
什么是数据库
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
1.什么是MySQL数据库
MySQL 是一个流行的开源关系型数据库管理系统,用于存储和管理数据。
现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。
所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
1.1特点
1.数据以表格的形式出现
2.每行为各种记录名称
3.每列为记录名称所对应的数据域
4.许多的行和列组成一张表单
5.若干的表单组成database
1.2术语
1.数据库: 数据库是一些关联表的集合。
2.数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
3.列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
4.行:一行(元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
5.冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
6.主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
7.外键:外键用于关联两个表。
8.复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
9.索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
10.参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
2.安装与启动
2.1安装
可以从 MySQL 的官方网站下载适合你操作系统的安装包,并按照安装指南进行安装。常见的操作系统包括 Windows、Linux。
2.2启动
Windows:通过 MySQL Installer 启动 MySQL 服务。
Linux:使用命令 sudo systemctl start mysql 启动 MySQL 服务。
3.基础操作指令
3.1MySQL连接
mysql -u root -p # root 是用户名 可以是其他用户名
3.2数据库操作
3.2.1查看所有库
show databases; # 会展示用户下所有数据库
3.2.2创建数据库
create database admin charset=utf8; # 指令执行会创建一个名为admin的数据库
在创建数据库时, 库名后面按需要可以添加 charset=utf8 ,否则数据库中所有数据不能出现中文。
注意:执行数据库操作后结果有时候会显示拒绝了操作,这时候是该用户没有相关数据库的权限,可以到root用户中给该用户设置权限。
3.2.3删除数据库
drop database admin; # 指令执行用户删除名为admin的数据库
在删除数据库过程中,务必要十分谨慎,因为在执行删除命令后,所有数据将会消失。在执行删除数据库操作前,请确保你确实想要删除数据库及其所有数据,因为该操作是不可逆的。为了避免误操作,通常建议在执行删除之前备份数据库。
3.2.4选择数据库
use admin; # 选择使用 用户下名为admin的数据库,没有报找不到<>Database changed # 选择成功显示这个
选择来数据库后,你的后续 SQL 查询和操作在指定的数据库上执行。
3.3数据表操作
3.3.1查看所有表
show tables; # 展示选择数据库下的所有数据表,未选择数据库会报未选择
3.3.2创建数据表
use admin;
Database changed
# 选择使用admin数据库
create table user (id int primary key auto_increment, user_name varchar(20) not null unique, password int not null default 123456); # 在数据库admin下创建了名为user的数据表show tables;
+-----------------+
| Tables_in_admin |
+-----------------+
| user |
+-----------------+
1 row in set (0.00 sec)
# 可以看出此时已经创建数据表user成功
执行后可以通过查看所有表指令查看是否创建成功。
3.3.3查看数据表结构
desc user; # 可以查看user表的结构 是否和创建预想结果一致
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_name | varchar(20) | NO | UNI | NULL | |
| password | int(11) | NO | | 123456 | |
+-----------+-------------+------+-----+---------+----------------+
3 rows in set (0.03 sec)
# 可以看出和在创建user表时想要的效果一样
提一点是,auto_increment 是约束自增长,默认非空。
3.3.4删除数据表
drop table user; # 删除数据表user
Query OK, 0 rows affected (0.14 sec)show tables;
Empty set (0.00 sec)
# 此时展示所有表就不再有user
和删除数据库一样,在删除前一定要确定好并且操作要规范,避免发生意外可以提前备份。
3.3.5修改数据表
alter table user drop password; # 删除user表中名password的列
alter table user add age int not null default 20; # 在user表中添加新列
alter table user change user_name name varchar(20) not null unique; # 把user表中列名为user_name 的列改为 名 name的新列desc user;
# 执行修改表指令后可以查看表结构是否修改成功
修改表结构要注意添加和改变时要加上类型和约束。
3.4约束
非空: not null 不能为空
唯一: unique 列中内容不可重复
默认: default 无指定时,使用默认值
外键: foreign key 与其他表关联 是其他表的左键
主键: primary key 可以确定唯一的一行 只能有一个
自增长: aotu_increment 每次+1 这里要注意的是,无论操作是否成功或保存,执行了就会+1,也就是说,在某些情况下,表中实际数据自增长列不一定相邻相差为1。
3.5CURD(增删改查)
3.5.1插入数据表数据
insert into user (id, user_name) values (0,'鸽鸽'),(0,'宇将军'),(0,'giao弟'),(0,'荒天帝'); # 向user表中添加数据
Query OK, 4 rows affected (0.05 sec)
Records: 4 Duplicates: 0 Warnings: 0select * from user; # 查询user表中的数据
+----+-----------+----------+
| id | user_name | password |
+----+-----------+----------+
| 1 | 鸽鸽 | 123456 |
| 2 | 宇将军 | 123456 |
| 3 | giao弟 | 123456 |
| 4 | 荒天帝 | 123456 |
+----+-----------+----------+
4 rows in set (0.02 sec)
还可以使用其他添加格式:
按照实际需要可以任意选择格式,注意格式规范即可。
3.5.2查询数据表数据
select * from user; # 查询user表中的数据
+----+-----------+----------+
| id | user_name | password |
+----+-----------+----------+
| 1 | 鸽鸽 | 123456 |
| 2 | 宇将军 | 123456 |
| 3 | giao弟 | 123456 |
| 4 | 荒天帝 | 123456 |
+----+-----------+----------+
4 rows in set (0.02 sec)
在实际使用时,不建议使用 select * from 表名,耗时大。
select id, user_name from user; # 选择某些指定列查询显示
+----+-----------+
| id | user_name |
+----+-----------+
| 3 | giao弟 |
| 2 | 宇将军 |
| 4 | 荒天帝 |
| 1 | 鸽鸽 |
+----+-----------+
4 rows in set (0.00 sec)select id as 序号, user_name as 用户名 from user; # 还可以用别名替代原列名显示,不影响表列名
+------+--------+
| 序号 | 用户名 |
+------+--------+
| 3 | giao弟 |
| 2 | 宇将军 |
| 4 | 荒天帝 |
| 1 | 鸽鸽 |
+------+--------+
4 rows in set (0.01 sec)
通过特定列查询,相对耗时少,效率更高。
select * from user where id > 2; # 通过条件筛选查询数据
+----+-----------+----------+
| id | user_name | password |
+----+-----------+----------+
| 3 | giao弟 | 123456 |
| 4 | 荒天帝 | 123456 |
+----+-----------+----------+
2 rows in set (0.07 sec)select * from user where id > 2 or user_name = '宇将军 ';
+----+-----------+----------+
| id | user_name | password |
+----+-----------+----------+
| 2 | 宇将军 | 123456 |
| 3 | giao弟 | 123456 |
| 4 | 荒天帝 | 123456 |
+----+-----------+----------+
3 rows in set (0.00 sec)
可以通过 where + 条件 来选择查询, 条件有:
比较运算符: > < = >= <= != <> 其中 <> 和 != 作用一致。
逻辑运算符: and or not
判空: is null is not null
成员运算符: in 精确比较
范围比较: between n and n0
像运算符: like % 多个字符 _ 一个字符
3.5.3修改数据表数据
update user set user_name = '沸羊羊' where user_name = 'giao弟'; # 修改user表中某数据
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0select * from user; # 查询数据查看是否修改成功
+----+-----------+----------+
| id | user_name | password |
+----+-----------+----------+
| 1 | 鸽鸽 | 123456 |
| 2 | 宇将军 | 123456 |
| 3 | 沸羊羊 | 123456 |
| 4 | 荒天帝 | 123456 |
+----+-----------+----------+
4 rows in set (0.01 sec)
修改数据要加条件, 不加条件会修改指定列每行内容。
3.5.4删除数据表数据
delete from user where user_name = '鸽鸽'; # 删除user表中 user_name = '鸽鸽 的整行数据
Query OK, 1 row affected (0.03 sec)select * from user; # 查询数据查看是否删除成功
+----+-----------+----------+
| id | user_name | password |
+----+-----------+----------+
| 2 | 宇将军 | 123456 |
| 3 | 沸羊羊 | 123456 |
| 4 | 荒天帝 | 123456 |
+----+-----------+----------+
3 rows in set (0.00 sec)
增删改查数据要操作正确规范,可以先备份,以免出错。
3.6用户操作
3.6.1创建用户
create user 'user'@'%' indentified by '123456'; # 创建一个名为 user ,密码是 123456 的用户,加 % 代表所有ip都可以访问。
3.6.2分配权限
grant 权限列举 to '用户名' @ '%' on 数据库名, 数据表名
flush privieleges 刷新权限
grant all to 'user' @ '%' on *.*; # 所有权限分配给用户user的所有数据库的所有表
3.6.3删除用户
drop user 'user' @ '%'; # 删除用户user
3.6.4修改密码
alter user 'user' @ '%' indentified by '1234567'; # 修改用户user的密码为‘1234567’
3.7外键关联表
关系型数据库表与表之间存在关联关系,可以通过外键实现。外键就是一个表中的某一列是另外一个表的主键。
constraint fk_user froeign key(user_id) references user(id) on update cascade on delete cascade
# 创建添加外键关联列表。
fk_user 是外键名。用于之后的删除修改, user_id 是关联列 ,user(id) 是另一个表user的关联列id, on update/delete cascade 表明之后外键发生改变或删除,关联表同步变化。
3.8函数
select database(); 查看当前数据库
select user(); 查看当前用户
select version(); 查看版本
select now(); 现在时间
select curdate(); 当前日期
select curtime(); 当前时间
select unix_timestamp() 时间戳
4 .使用Python操作MySQL
4.1下载模块
在pycharm终端执行 pip install pymysql
4.2导入模块
import pymysql
4.3构建连接
con = pymysql.connect(user="admin", password="123456")
con.select_db("user")
4.4构建游标
# 建立游标
cur = con.cursor()
row = cur.execute("show tables")
通过游标执行SQL:
row = cur.execute("show tables")# 访问表
datas = cur.fetchall()
for data in datas:print(data[0])
# 控制游标位置
# mode="absolute" 绝对位置 移动到数值
# mode="relative" 正值向右 负值向左 移动数值
cur.scroll(0, mode="absolute")
data = cur.fetchone()
print(data)
4.4断开连接
# 关闭游标
cur.close()
# 关闭连接
con.close()
这只是一个基础的框架,具体内容操作可以根据所需进行。
5.拓展知识
5.1备份与恢复
5.1.1备份
在可视化工具中(小编用的是Navicat Premium 15)选中数据库,转储SQL文件,SQL文件内部包含表与数据的创建过程。
5.1.2恢复
在可视化工具中(小编用的是Navicat Premium 15)选中连接,新建数据库
打开数据库,运行SQL文件
选中SQL文件,开始恢复,就完成了数据备份的恢复。
5.2视图
视图是一张虚拟的表,不占用内存,数据都来源都真实的数据表,修改视图中的数据,真实数据表中的数据也会更改。
5.3函数以及储存过程
函数分系统级别函数, select user() select version() 数据库级别函数, 经过运算返回数据
储存过程就是一个复杂的函数,一般不返回内容,用于执行sql。
# 注册n个用户# 声明一个变量i 他的类型为int 他的初始值为1DECLARE i INT DEFAULT 1;# 使用循环 创建n个账户WHILE i <= n DOINSERT INTO `user` VALUES (0, CONCAT('name',i), '123456');SET i = i + 1; END WHILE;
都是储存在数据库服务器上的,预编辑过的,执行效率非常高。
5.4索引
索引是为了提升查询效率。索引类型:
主键索引
唯一索引
普通索引
索引不是越多越好,因为维护索引需要额外的开销,更新有索引的列时索引会同步更新。所以数据修改概率比较小的适合建索引,如果修改概率非常高,不适合建立索引
5.5事务
事务有四大特性ACIP
原子性:事务不可在分割,要么全部执行要不全部放弃
一致性:事务执行前后都要保持数据一致性
隔离性:多个事务相互不干扰
持续性:事务一旦提交永久更改
关键字有:
begin:开启事务
rollback:回滚事务 (出现异常时)
commit:提交事务
隔离级别用于处理高并发情况
级别有:
读未提交: 效率最高,容易脏数据
读已提交:可重复读
串行化:效率最低,数据最安全
数据库是一个很庞大的学科,搞懂很难,不是必要,能够简单使用就可以,希望小编的总结对大侠有亿点帮助。
相关文章:
浅看MySQL数据库
有这么一句话:“一个不会数据库的程序员不是合格的程序员”。有点夸张,但是确是如此。透彻学习数据库是要学习好多知识,需要学的东西也是偏难的。我们今天来看数据库MySQL的一些简单基础东西,跟着小编一起来看一下吧。 什么是数据…...
Pytorch常用训练套路框架(CPU)
文章目录 1. 数据准备示例:加载 CIFAR-10 数据集 2. 模型定义示例:定义一个简单的卷积神经网络 3. 损失函数和优化器示例:定义损失函数和优化器 4. 训练循环示例:训练循环 5. 评估和测试示例:评估模型 6. 保存和加载模…...
C++ | Leetcode C++题解之第338题比特位计数
题目: 题解: class Solution { public:vector<int> countBits(int n) {vector<int> bits(n 1);for (int i 1; i < n; i) {bits[i] bits[i & (i - 1)] 1;}return bits;} };...
智慧校园云平台电子班牌系统源码,智慧教育一体化云解决方案
智慧校园云平台电子班牌系统,利用先进的云计算技术,将教育信息化资源和教学管理系统进行有效整合,实现生态基础数据共享、应用生态统一管理,为智慧教育建设的统一性,稳定性,可扩展性,互通性提供…...
数据库系统 第17节 数据仓库 案例赏析
下面我将通过几个具体的案例来说明数据仓库如何在不同的行业中发挥作用,并解决实际业务问题。 案例 1: 零售业 背景: 一家大型零售商希望改进其库存管理和市场营销策略,以提高销售额和顾客满意度。 解决方案: 数据仓库: 构建一个数据仓库࿰…...
硬件面试经典 100 题(71~90 题)
71、请问下图电路的作用是什么? 该电路实现 IIC 信号的电平转换(3.3V 和 5V 电平转换),并且是双向通信的。 上下两路是一样的,只分析 SDA 一路: 1) 从左到右通信(SDA2 为输入状态&…...
【git】代理相关
问题: 开启了翻墙代理工具,拉取代码时报错:fatal: 无法访问 xxxx : Failed to connect to github.com port 443: 连接超时 解决: 0,取消代理仍然无法拉取 1,查看控制面板-网络与Internet-代理ÿ…...
golang gin框架中创建自定义中间件的2种方式总结 - func(*gin.Context)方式和闭包函数方式定义gin中间件
在gin框架中,我们可以通过2种方式创建自定义中间件: 1. 直接定义一个类型为 func(*gin.Context)的函数或者方法 这种方式是我们常用的方式,也就是定义一个参数为*gin.Context的函数或者方法。定义的方法就是创建一个 参数类型为 gin.Handler…...
Linux高级编程 8.13 文件IO
一、文件IO 操作系统为了方便用户使用系统功能而对外提供的一组系统函数。称之为 系统调用(unistd.h) 其中有个 文件IO,一般都是对设备文件操作,当然也可以对普通文件进行操作。 这是一个基于Linux内核的没有缓存的IO机制 文件IO特性&…...
【k8s】ubuntu18.04 containerd 手动从1.7.15 换为1.7.20
ubutnu18.04之前手动安装了1.7.15现在下载1.7.20containerd-1.7.20-linux-amd64.tar.gz root@k8s-worker-i58265u:/home/zhangbin# root@k8s-worker-i58265u:/home/zhangbin# https://github.com/containerd/containerd/releases/download/v1.7.20/containerd-1.7.20-linux-am…...
常用浮动方式
目录 一、标准流 二、float浮动 三、 flex浮动 3.1flex组成 3.2 主轴对齐方式 3.3侧轴对齐方式 3.4修改主轴方向 3.5弹性盒子换行 3.6行对齐方式 一、标准流 标签在网页中的默认排布规则 例如: 块元素独占一行、行内元素可以一行显示多个 二、float浮动 让块…...
设计模式反模式:UML常见误用案例分析
文章目录 设计模式反模式:UML常见误用案例分析1. 反模式概述2. 反模式的 UML 图示误用2.1 God Object 反模式2.2 Spaghetti Code 反模式2.3 Golden Hammer 反模式2.4 Poltergeist 反模式 3. 总结 设计模式反模式:UML常见误用案例分析 在软件工程领域&am…...
Python编码系列—Python SQL与NoSQL数据库交互:深入探索与实战应用
🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…...
贪心算法---跳跃游戏
题目: 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 思路…...
利用EditPlus进行Json数据格式化
利用EditPlus进行Json数据格式化 git下载地址:https://github.com/michael-deve/CommonData-EditPlusTools.git (安装过editplus的直接将里面的json.js文件复制走就行) 命令:Cscript.exe /nologo “D:\Program Files (x86)\EditPlus 3\json.js” D:\P…...
xss.function靶场(easy)
文章目录 第一关Ma Spaghet!第二关Jefff第三关Ugandan Knuckles第四关Ricardo Milos第五关Ah Thats Hawt第六关Ligma第七关Mafia第八关Ok, Boomer 网址:https://xss.pwnfunction.com/ 第一关Ma Spaghet! 源码 <!-- Challenge --> <h2 id"spaghet&qu…...
【LLM入门】Let‘s reproduce GPT-2 (124M)【完结,重新回顾一下,伟大!】
文章目录 03:43:05 SECTION 4: results in the morning! GPT-2, GPT-3 repro03:56:21 shoutout to llm.c, equivalent but faster code in raw C/CUDA【太牛了ba】03:59:39 summary, phew, build-nanogpt github repo 03:43:05 SECTION 4: results in the morning! GPT-2, GPT-…...
c语言----取反用什么符号
目录 前言 一、逻辑取反 二、按位取反 三、应用场景 前言 在C编程语言中,取反使用符号!表示逻辑取反,而使用~表示按位取反。 其中,逻辑取反!是将表达式的真值(非0值)转换为假(0),…...
【html+css 绚丽Loading】 - 000003 乾坤阴阳轮
前言:哈喽,大家好,今天给大家分享htmlcss 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕…...
【Web】巅峰极客2024 部分题解
目录 EncirclingGame GoldenHornKing php_online admin_Test EncirclingGame 玩赢游戏就行 GoldenHornKing 利用点在传入的app 可以打python内存马 /calc?calc_reqconfig.__init__.__globals__[__builtins__][exec](app.add_api_route("/flag",lambda:__i…...
在AMD GPU上进行Grok-1模型的推理
Inferencing with Grok-1 on AMD GPUs — ROCm Blogs 我们展示了如何通过利用ROCm软件平台,能在AMD MI300X GPU加速器上无缝运行xAI公司的Grok-1模型。 介绍 xAI公司在2023年11月发布了Grok-1模型,允许任何人使用、实验和基于它构建。Grok-1的不同之处…...
在亚马逊云科技上部署开源大模型并利用RAG和LangChain开发生成式AI应用
项目简介: 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践,并应用到自己的日常工作里。 本次介绍的是如何在亚马逊云科技上利用Sag…...
Spring——Bean的生命周期
Bean的生命周期牵扯到Bean的实例化、属性赋值、初始化、销毁 其中Bean的实例化有四种方法、构造器实例化、静态工厂、实例工厂、实现FactoryBean接口 对于Bean的生命周期我们可以在Bean初始化之后、销毁之前对Bean进行控制 两种方法: 一、配置 1、在Bean的对象…...
云计算实训30——自动化运维(ansible)
自动化运维 ansible----自动化运维工具 特点: 部署简单,使用ssh管理 管理端与被管理端不需要启动服务 配置简单、功能强大,扩展性强 一、ansible环境搭建 准备四台机器 安装步骤 mo服务器: #下载epel [rootmo ~]# yum -y i…...
网络性能优化:从问题诊断到解决方案
网络性能优化是确保网络高效、稳定运行的关键过程,它通过改进网络设备、协议和配置,以提高网络吞吐量、降低延迟并提升用户体验。在网络性能优化的全过程中,从问题诊断到解决方案的实施,需要经过一系列详细的步骤和策略。本文将从…...
深度学习10--强化学习
强化学习(增强学习、再励学习、评价学习简称RL)是近年来机器学习领域最热门的方向之一,是实现通用人工智能的重要方法之一。本章将通俗易懂地讲一下强化学习中的两个重要的模型DQN 和DDPG。 马尔可夫决策过程(Markov Decison Process,MDP)包括两个对象ÿ…...
SSA-SVM多变量回归预测|樽海鞘群优化算法-支持向量机|Matalb
目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、算法介绍: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&a…...
KEEPALIVED高可用集群知识大全
目录 一、KEEPALIVED高可用集群简介 1、Keepalived 高可用集群的工作原理 2、Keepalived 高可用集群的作用 二、KEEPALIVED部署 1、网络配置 2、软件安装与启动 3、配置虚拟路由器 4、效果实现 三、启用keepalived日志功能 四、KEEPALIVED的几种工作模式 1、KEEPALI…...
JavaWeb系列三: JavaScript学习 下
JavaScript学习 数组学习数组定义数组使用和遍历 js函数快速入门函数定义方式方式1: function关键字定义函数方式2: 将函数赋给变量 js函数注意事项和细节js函数练习 js自定义对象方式1: Object形式方式2: {}形式 事件基本介绍事件分类onload加载完成事件onclick单击事件onblur…...
web开发,过滤器,前后端交互
目录 web开发概述 web开发环境搭建 Servlet概述 Servlet的作用: Servlet创建和使用 Servlet生命周期 http请求 过滤器 过滤器的使用场景: 通过Filter接口来实现: 前后端项目之间的交互: 1、同步请求 2、异步请求 优化…...
CUDA-MODE 第一课课后实战(下)
我的课程笔记,欢迎关注:https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode CUDA-MODE 第一课课后实战(下) Nsight Compute Profile结果分析 继续对Nsight Compute的Profile结果进行分析࿰…...
PostgreSQL数据库内核(三):缓冲区管理器
文章目录 共享缓冲区基础知识逻辑读和物理读LRU算法和CLOCK时钟算法 共享缓冲区管理器结构共享缓冲表层共享缓冲区描述符层共享缓冲页层 共享缓冲区管理器工作流程初始化缓冲区读缓冲区淘汰策略共享缓冲区锁 共享缓冲区基础知识 通常数据库系统都会在内存中预留buffer缓冲空间…...
[log4cplus]: 快速搭建分布式日志系统
关键词: 日志系统 、日志分类、自动分文件夹、按时间(月/周/日/小时/分)轮替 一、引言 这里我默认看此文的我的朋友们都已经具备一定的基础,所以,我们本篇不打算讲关于log4cplus的基础内容,文中如果涉及到没有吃透的点,需要朋友们动动自己聪明的脑袋和发财的手指,进一…...
redis I/O复用机制
I/O复用模型 传统阻塞I/O模型 串行化处理,就是要等,假如进行到accept操作,cpu需要等待客户端发送的数据到tcp接收缓冲区才能进行read操作,而在此期间cpu不能执行任何操作。 I/O复用 用一个进程监听大量连接,当某个连…...
Adobe PhotoShop - 制图操作
1. 排布照片 菜单 - 视图 - 对齐:打开后图层将会根据鼠标的移动智能对齐 菜单 - 视图 - 标尺:打开后在页面出现横纵标尺,方便图层的对齐与排列 2. 自动生成全景照 在日常处理中,我们常常想要将几张图片进行拼接获得一张全景图&…...
Mysql 中的Undo日志
在 MySQL 的 InnoDB 存储引擎中,Undo Log 是用于实现数据库事务的回滚功能的一种日志。Undo Log 记录了对数据的修改,以便在事务出现问题时可以恢复到之前的状态。下面将介绍 Undo Log 的结构和样本数据。 Undo Log 的基本概念 目的: Undo Log 的主要目…...
虹软科技25届校招笔试算法 A卷
目录 1. 第一题2. 第二题3. 论述题 ⏰ 时间:2024/08/18 🔄 输入输出:ACM格式 ⏳ 时长:2h 本试卷分为不定项选择,编程题,必做论述题和选做论述题,这里只展示编程题和必做论述题,一共三…...
C++ | Leetcode C++题解之第345题反转字符串中的元音字母
题目: 题解: class Solution { public:string reverseVowels(string s) {auto isVowel [vowels "aeiouAEIOU"s](char ch) {return vowels.find(ch) ! string::npos;};int n s.size();int i 0, j n - 1;while (i < j) {while (i < …...
Kubernetes拉取阿里云的私人镜像
前提条件 登录到阿里云控制台 拥有阿里云的ACR服务 创建一个命名空间 获取仓库的访问凭证(可以设置固定密码) 例如 sudo docker login --usernameyourAliyunAccount registry.cn-guangzhou.aliyuncs.com 在K8s集群中创建一个secret 使用kubectl命令行…...
Leetcode每日刷题之118.杨辉三角
1.题目解析 杨辉三角作为一个经典的数学模型,其基本原理相信大家已经耳熟能详,这里主要是在学习了vector之后,对于本题有了新的解法,更加简便。关于vector的基本使用详见 面向对象程序设计(C)之 vector(初阶࿰…...
【ARM 芯片 安全与攻击 5.2 -- 芯片中侧信道攻击与防御方法介绍】
文章目录 什么是 Speculation Barriers?如何使用 Speculation Barriers?什么是 PAN?如何启用 PAN?使用 PAN 保护操作系统Spectre 攻击防御示例Meltdown 攻击防御示例Summary什么是 Speculation Barriers? Speculation Barriers,是一种防止处理器在投机执行中泄漏敏感信息…...
XSS-games
XSS 1.XSS 漏洞简介2.XSS的原理3.XSS的攻击方式4.XSS-GAMESMa SpaghetJefffUgandan KnucklesRicardo MilosAh Thats HawtLigmaMafiaOk, BoomerWW3svg 1.XSS 漏洞简介 XSS又叫CSS(Cross Site Script)跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Sc…...
日撸Java三百行(day25:栈实现二叉树深度遍历之中序遍历)
目录 一、栈实现二叉树遍历的可行性 二、由递归推出栈如何实现中序遍历 1.左子树入栈 2.根结点出栈 3.右子树入栈 4.实例说明 三、代码实现 总结 一、栈实现二叉树遍历的可行性 在日撸Java三百行(day16:递归)中,我们讲过…...
【vue讲解:ref属性、动态组件、插槽、vue-cli创建项目、vue项目目录介绍、vue项目开发规范、es6导入导出语法】
0 ref属性(组件间通信) # 1 ref属性放在普通标签上<input type"text" v-model"name" ref"myinput">通过 this.$refs[myinput] 拿到的是 原生dom对象操作dom对象:改值,换属性。。。# 2 ref属…...
ubuntu:最新安装使用docker
前言 系统:ubuntu 22.04 desktop 目的:安装使用docker 安装小猫猫 没有安装包的,可以自己去瞅瞅,这里不提供下载方式 sudo dpkg -i ./cat-verge_1.7.5_amd64.deb 在应用里,打开这个软件,并开启系统猫猫 配…...
Linux ssh 免密失效
sudo chmod -R 777 /home/xxx sudo chown -R xxx:xxx /home/xxx 为什么我输入这两条指令后,ssh免密失效了? 当你使用 sudo chmod -R 777 /home/xxx 和 sudo chown -R xxx:xxx /home/xxx 这两条指令后,可能会导致 SSH 免密登录失效的原因有以…...
k8s上部署ingress-controller
一、安装helm仓库 # helm pull ingress-nginx/ingress-nginx 二、修改 三、运行 # kubectl label nodes node01.110111.cn ingresstrue# kubectl label nodes node02.110112.cn ingresstrue# helm upgrade --install ingress-nginx -n ingress-nginx . -f values.yaml 四、检…...
Android 13 about launcher3 (1)
Android 13 Launcher3 android13#launcher3#分屏相关 Launcher3修改 wm density界面布局不改变 /packages/apps/Launcher3/src/com/android/launcher3/InvariantDeviceProfile.java Launcher的默认配置加载类,通过InvariantDeviceProfile方法可以看出,…...
服务器数据恢复—raid5阵列热备盘未全部启用导致阵列崩溃的数据恢复案例
服务器存储数据恢复环境: 一台EMC某型号存储中有一组RAID5磁盘阵列。该raid5阵列中有12块硬盘,其中2块硬盘为热备盘。 服务器存储故障: 该存储raid5阵列中有两块硬盘离线,只有1块热备盘启用替换掉其中一块离线盘,另外…...
HTML—css
css概述 C S S 是 C a s c a d i n g S t y l e S h e e t s ( 级 联 样 式 表 ) 。 C S S 是 一 种 样 式 表 语 言 , 用 于 为 H T M L 文 档 控 制 外 观 , 定 义 布 局 。 例 如 , C S S 涉 及 字 体 、 颜 色 、…...