一名高级的Javaer,应该了解的 MYSQL 高级知识点

2023-05-16

SQL查询流程:

  • 1. 通过客户端/服务器通信协议与 MySQL 建立连接
  • 2. 查询缓存,这是 MySQL 的一个可优化查询的地方,如果开启了 Query Cache 且在查询缓存过程中查 询到完全相同的 SQL 语句,则将查询结果直接返回给客户端;如果没有开启Query Cache 或者没有查询到 完全相同的 SQL 语句则会由解析器进行语法语义解析,并生成解析树。
  • 3. 预处理器生成新的解析树。
  • 4. 查询优化器生成执行计划。
  • 5. 查询执行引擎执行 SQL 语句,此时查询执行引擎会根据 SQL 语句中表的存储引擎类型,以及对应的 API 接口与底层存储引擎缓存或者物理文件的交互情况,得到查询结果,由MySQL Server 过滤后将查询结 果缓存并返回给客户端。若开启了 Query Cache,这时也会将SQL 语句和结果完整地保存到 Query Cache 中,以后若有相同的 SQL 语句执行则直接返回结果。

MySQL物理文件:

日志文件:

  • error log 错误日志 排错 /var/log/mysqld.log【默认开启】
  • bin log 二进制日志 备份 增量备份 DDL DML DCL
  • Relay log 中国日志 复制 接收 replication master
  • slow log 慢查询日志 调优 查询时间超过指定值
-- 查看错误日志文件路径
show variables like 'log_error';
+---------------+---------------------+
| Variable_name | Value |
+---------------+---------------------+
| log_error | /var/log/mysqld.log |
+---------------+---------------------+
-- 慢查询日志文件路径
show variables like 'slow_query_log_file';
+---------------------+-----------------------------------+
| Variable_name | Value |
+---------------------+-----------------------------------+
| slow_query_log_file | /var/lib/mysql/localhost-slow.log |
+---------------------+-----------------------------------+
-- bin log 日志文件 需要在 my.cnf 中配置
log-bin=/var/log/mysql-bin/bin.log
server-id=2
-- 查看 relay log 相关参数
show variables like '%relay%'

配置文件&数据文件:

配置文件 my.cnf:

  在 my.cnf 文件中可以进行一些参数设置, 对数据库进行调优。

[client] #客户端设置,即客户端默认的连接参数
port = 3307 #默认连接端口
socket = /data/mysqldata/3307/mysql.sock #用于本地连接的socket套接字
default-character-set = utf8mb4 #编码
[mysqld] #服务端基本设置
port = 3307 MySQL监听端口
socket = /data/mysqldata/3307/mysql.sock #为MySQL客户端程序和服务器之间的本地通讯指定一
个套接字文件
pid-file = /data/mysqldata/3307/mysql.pid #pid文件所在目录
basedir = /usr/local/mysql-5.7.11 #使用该目录作为根目录(安装目录)
datadir = /data/mysqldata/3307/data #数据文件存放的目录
tmpdir = /data/mysqldata/3307/tmp #MySQL存放临时文件的目录
character_set_server = utf8mb4 #服务端默认编码(数据库级别)
-- 查看数据文件的位置
show variables like '%dir%';
+-----------------------------------------+----------------------------+
| Variable_name | Value |
+-----------------------------------------+----------------------------+
| datadir | /var/lib/mysql/ |
+-----------------------------------------+----------------------------
1、.frm文件
不论是什么存储引擎,每一个表都会有一个以表名命名的.frm文件,与表相关的元数据(meta)信息都存放在
此文件中,包括表结构的定义信息等。
2、.MYD文件
myisam存储引擎专用,存放myisam表的数据(data)。每一个myisam表都会有一个.MYD文件与之呼应,同
样存放在所属数据库的目录下
3、.MYI文件
也是myisam存储引擎专用,存放myisam表的索引相关信息。每一个myisam表对应一个.MYI文件,其存放的
位置和.frm及.MYD一样
4、.ibd文件
存放innoDB的数据文件(包括索引)。
5. db.opt文件 此文件在每一个自建的库里都会有,记录这个库的默认使用的字符集和校验规。

MySQL查询和慢查询日志分析:

  等待时间长:

  • 1.锁表导致查询一直处于等待状态,后续我们从MySQL锁的机制去分析SQL执行的原理

  执行时间长:

  • 1.查询语句写得烂
  • 2.索引失效
  • 3.关联查询太多join
  • 4.服务器调优及各个参数的设置

需要遵守的优化原则:

  • 第一条: 只返回需要的结果

     一定要为查询语句指定 WHERE 条件,过滤掉不需要的数据行

    避免使用 select * from , 因为它表示查询表中的所有字段

  • 第二条: 确保查询使用了正确的索引

经常出现在 WHERE 条件中的字段建立索引,可以避免全表扫描;

将 ORDER BY 排序的字段加入到索引中,可以避免额外的排序操作;

多表连接查询的关联字段建立索引,可以提高连接查询的性能;

将 GROUP BY 分组操作字段加入到索引中,可以利用索引完成分组。

  • 第三条: 避免让索引失效

在 WHERE 子句中对索引字段进行表达式运算或者使用函数都会导致索引失效

使用 LIKE 匹配时,如果通配符出现在左侧无法使用索引

如果 WHERE 条件中的字段上创建了索引,尽量设置为 NOT NULL

SQL的执行顺序:

  我们写的sql:

 

sql的执行顺序: 

MYSQL的7种join: 

慢查询日志分析:

  MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间 超过阈值的语句。

  默认情况下,MySQL数据库并不启动慢查询日志,需要手动来设置这个参数。

如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影 响。

慢查询日志支持将日志记录写入文件和数据库表。

SHOW VARIABLES LIKE "%query%" ;

slow_query_log:是否开启慢查询日志, 1 表示开启, 0 表示关闭。
slow-query-log-file:新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。
long_query_time: 慢查询阈值,当查询时间多于设定的阈值时,记录日志。
默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的

mysql> SHOW VARIABLES LIKE '%slow_query_log%';
+---------------------+-----------------------------------+
| Variable_name | Value |
+---------------------+-----------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /var/lib/mysql/localhost-slow.log |
+---------------------+-----------------------------------+
可以通过设置slow_query_log的值来开启

mysql> set global slow_query_log=1;
mysql> SHOW VARIABLES LIKE '%slow_query_log%';
+---------------------+-----------------------------------+
| Variable_name | Value |
+---------------------+-----------------------------------+
| slow_query_log | ON |
| slow_query_log_file | /var/lib/mysql/localhost-slow.log |
+---------------------+-----------------------------------+

  使用 set global slow_query_log=1 开启了慢查询日志只对当前数据库生效,MySQL重启后则 会失效。

  如果要永久生效,就必须修改配置文件my.cnf(其它系统变量也是如此)

-- 编辑配置
vim /etc/my.cnf
-- 添加如下内容
slow_query_log =1
slow_query_log_file=/var/lib/mysql/lagou-slow.log
-- 重启MySQL
service mysqld restart
mysql> SHOW VARIABLES LIKE '%slow_query_log%';
+---------------------+-------------------------------+
| Variable_name | Value |
+---------------------+-------------------------------+
| slow_query_log | ON |
| slow_query_log_file | /var/lib/mysql/lagou-slow.log |
+---------------------+-------------------------------+

那么开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢?

这个是由参数 long_query_time 控制,默认情况下long_query_time的值为10秒

mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+

注意:使用命令 set global long_query_time=1 修改后,需要重新连接或新开一个会话才能 看到修改值。

mysql> set global long_query_time=1;
mysql> show variables like 'long_query_time';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+

log_output 参数是指定日志的存储方式。 log_output='FILE' 表示将日志存入文件,默认值 是'FILE'。

log_output='TABLE' 表示将日志存入数据库,这样日志信息就会被写入到 mysql.slow_log 表中。

mysql> SHOW VARIABLES LIKE '%log_output%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | FILE |
+---------------+-------+

系统变量
log-queries-not-using-indexes :未使用索引的查询也被记录到慢查询日志中(可选 项)。如果调优的话,建议开启这个选项。

mysql> show variables like 'log_queries_not_using_indexes';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF |


mysql> set global log_queries_not_using_indexes=1;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'log_queries_not_using_indexes';

+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | ON |
+-------------------------------+-------+
1 row in set (0.00 sec)

MySQL存储引擎:

InnoDB(推荐):

  优点:

  • Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别
  • 支持多版本并发控制的行级锁,由于锁粒度小,写操作和更新操作并发高、速度快。
  • 支持自增长列。
  • 支持外键。
  • 适合于大容量数据库系统,支持自动灾难恢复。

缺点:

  • 它没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表

应用场景 :

  •  当需要使用数据库事务时,该引擎当然是首选。由于锁的粒度更小,写操作不会锁定全表, 所以在并发较高时,使用Innodb引擎会提升效率
  • 更新密集的表, InnoDB存储引擎特别适合处理多重并发的更新请求

MyISAM:

优点:

  • MyISAM存储引擎在查询大量数据时非常迅速,这是它最突出的优点
  • 另外进行大批量插入操作时执行速度也比较快。

缺点:

  • MyISAM表没有提供对数据库事务的支持。
  • 不支持行级锁和外键。
  • 不适合用于经常UPDATE(更新)的表,效率低。

应用场景:

  • 以读为主的业务,例如:图片信息数据库,博客数据库,商品库等业务。
  • 对数据一致性要求不是非常高的业务(不支持事务)
  • 硬件资源比较差的机器可以用 MyiSAM (占用资源少)

MySQL索引优化:

普通索引:

CREATE INDEX <索引的名字> ON tablename (字段名);
ALTER TABLE tablename ADD INDEX [索引的名字] (字段名);
CREATE TABLE tablename ( [...], INDEX [索引的名字] (字段名) );

唯一索引:

CREATE UNIQUE INDEX <索引的名字> ON tablename (字段名);
ALTER TABLE tablename ADD UNIQUE INDEX [索引的名字] (字段名);
CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (字段名) ;

主键索引:

CREATE TABLE tablename ( [...], PRIMARY KEY (字段名) );
ALTER TABLE tablename ADD PRIMARY KEY (字段名);

复合索引:

  用户可以在多个列上建立索引,这种索引叫做组复合索引(组合索引)。复合索引可以代替 多个单一索引,相比多个单一索引复合索引所需的开销更小。

CREATE INDEX <索引的名字> ON tablename (字段名1,字段名2...);
ALTER TABLE tablename ADD INDEX [索引的名字] (字段名1,字段名2...);
CREATE TABLE tablename ( [...], INDEX [索引的名字] (字段名1,字段名2...) );

复合索引注意事项:

  • 1. 何时使用复合索引,要根据where条件建索引,注意不要过多使用索引,过多使用会对 更新操作效率有很大影响。
  • 2. 如果表已经建立了(col1,col2),就没有必要再单独建立(col1);如果现在有(col1)索 引,如果查询需要col1和col2条件,可以建立(col1,col2)复合索引,对于查询有一定提 高。

全文索引:

  查询操作在数据量比较少时,可以使用like模糊查询,但是对于大量的文本数据检索,效率很 低。如果使用全文索引,查询速度会比like快很多倍。

CREATE FULLTEXT INDEX <索引的名字> ON tablename (字段名);
ALTER TABLE tablename ADD FULLTEXT [索引的名字] (字段名);
CREATE TABLE tablename ( [...], FULLTEXT KEY [索引的名字] (字段名) ;

和常用的like模糊查询不同,全文索引有自己的语法格式,使用 match 和 against 关键字,比如:

SELECT * FROM users3 WHERE MATCH(NAME) AGAINST('aabb');
-- * 表示通配符,只能在词的后面
SELECT * FROM users3 WHERE MATCH(NAME) AGAINST('aa*' IN BOOLEAN MODE);

全文索引使用注意事项:

  • 全文索引必须在字符串、文本字段上建立。
  • 全文索引字段值必须在最小字符和最大字符之间的才会有效。(innodb:3-84; myisam:4-84)

创建索引的原则:

  • 在经常需要搜索的列上创建索引,可以加快搜索的速度;
  • 在作为主键的列上创建索引,强制该列的唯一性和组织表中数据的排列结构;
  • 在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;
  • 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续 的;
  • 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快 排序查询时间;
  • 在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。
  • group by字段

索引原理:

  hash 结构:

    Hash底层实现是由Hash表来实现的,是根据键值 <key,value> 存储数据的结构。非常适合根据 key查找value值,也就是单个key查询,或者说等值查询。

  B+Tree结构

    非叶子节点不存储data数据,只存储索引值,这样便于存储更多的索引值 叶子节点包含了所有的索引值和data数据 叶子节点用指针连接,提高区间的访问性能

 

EXPLAIN性能分析: 

id:

  id相同,执行顺序由上至下

  id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行

 

select_type:

  simple : 简单的select查询,查询中不包含子查询或者UNION

  primary : 查询中若包含任何复杂的子部分,最外层查询被标记

  subquery : 在select或where列表中包含了子查询

 

union : 如果第二个select出现在UNION之后,则被标记为UNION,如果union包含在from子句 的子查询中,外层select被标记为derived 

 type介绍:

  type显示的是连接类型,是较为重要的一个指标。

  下面给出各种连接类型,按照从最佳类型到最坏类型 进行排序:

     system > const > eq_ref > ref > range > index > ALL

system : 表仅有一行 (等于系统表)。这是const连接类型的一个特例,很少出现。

const : 表示通过索引 一次就找到了, const用于比较 primary key 或者 unique 索引. 因为只匹配 一行数据,所以如果将主键 放在 where条件中, MySQL就能将该查询转换为一个常量

 

eq_ref : 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配. 常见与主键或唯一索引扫描 

ref : 非唯一性索引扫描, 返回匹配某个单独值的所有行, 本质上也是一种索引访问, 它返回所有匹配 某个单独值的行, 这是比较常见连接类型. 

range : 只检索给定范围的行,使用一个索引来选择行。 

index : 出现index 是 SQL 使用了索引, 但是没有通过索引进行过滤,一般是使用了索引进行排序分 组 

ALL : 对于每个来自于先前的表的行组合,进行完整的表扫描 

possible_keys:显示可能应用到这张表上的索引, 一个或者多个. 查询涉及到的字段上若存在索引, 则该索引将 被列出, 但不一定被查询实际使用

key :实际使用的索引

 

key_len介绍:

表示索引中使用的字节数, 可以通过该列计算查询中使用索引的长度.

CREATE TABLE T1(
a INT PRIMARY KEY,
b INT NOT NULL,
c INT DEFAULT NULL,
d CHAR(10) NOT NULL
);

EXPLAIN SELECT * FROM T1 WHERE a > 1 AND b = 1;

 

ALTER TABLE T1 ADD INDEX idx_b(b);

 

ALTER TABLE T1 ADD INDEX idx_d(d);

 

小伙伴们有兴趣想了解内容和更多相关学习资料的请点赞收藏+评论转发+关注我,后面会有很多干货。 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一名高级的Javaer,应该了解的 MYSQL 高级知识点 的相关文章

  • eclipse打包springboot项目

    eclipse打包springboot项目 右键项目run as中的maven build 输入clean package
  • elasticsearch7.x在k8s中的部署

    目录 一 说明 二 思路 三 部署 1 建nfs服务器 2 建持久卷 3 部署elasticsearch 四 附件 pv yaml内容 elasticsearch yaml内容 一 说明 本文章内容主要的参考来源是https www cnb
  • ERROR 2002 (HY000) Can‘t connect to local MySQL server through socket ‘varrunmysqldmysqld.sock‘

    今天执行mysql操作的时候出现了错误 xff1a ERROR 2002 HY000 Can t connect to local MySQL server through socket 39 var run mysqld mysqld s
  • HADDOP安装配置过程(新手初学)

    最近刚开始学习HADOOP xff0c 跟着一个视频初步了解了一些HADOOP的基本的安装过程 xff0c 感觉有必要总结一下 xff0c 以便后续可以温习一下 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img X
  • 重定向与转发

    什么是重定向 服务器向浏览器发送一个状态码302及一个消息头location xff0c 浏览器收到后 xff0c 会立即向 location所指向的地址发送请求 2 如何重定向 response sendRedirect String u
  • Hadoop家族学习路线图

    主要介绍Hadoop家族产品 xff0c 常用的项目包括Hadoop Hive Pig HBase Sqoop Mahout Zookeeper Avro Ambari Chukwa xff0c 新增加的项目包括 xff0c YARN Hc
  • ElasticSearch查询大于10000条的数据

    注 xff1a 部分概念介绍来源于网络 在使用es进行数据查询时 xff0c 由于es官方默认限制了索引一次性最多只能查询10000条数据 xff0c 查询第10001条数据开始就会报错 xff0c 错误的内容大致为 xff1a Resul
  • IDEA2021.3设置全局maven

    1 打开IDEA xff0c 点击File gt Close Project 2 关闭项目后出现如下界面 xff0c 点击 Customize gt All settings 3 在左侧搜索框内搜索maven 3 1更改Maven home
  • java -jar 参数说明

    jvm 选项 Java启动参数共分为三类 xff1b 其一是标准参数 xff0c 所有的JVM实现都必须实现这些参数的功能 xff0c 而且向后兼容 xff1b 其二是非标准参数 X xff0c 默认jvm实现这些参数的功能 xff0c 但
  • java 获取当前时间的三种方法

    1 通过Util包中的Date获取 Date date 61 new Date SimpleDateFormat dateFormat 61 new SimpleDateFormat 34 yyyy MM dd hh mm ss 34 Sy
  • Java中json字符串转换成maplist

    import java util ArrayList import java util HashMap import java util Iterator import java util List import java util Map
  • Java基础知识(知识点)

    1 Java是一种高级计算机语言 xff0c 是可以编写跨平台应用软件 完全面向对象的程序设计语言 2 Java划分为三个技术平台 xff1a Java SE Java EE Java ME Java SE是桌面应用 xff0c Java
  • Java short数据类型

    短 short 整型数据类型是16位有符号Java原始整数数据类型 其范围是 32768至32767 或 2 15至2 15 1 short整型数据类型没有字面量 但是 xff0c 可以将任何位于short 32768到32767 范围内的
  • Java面试题内容聚合

    往期内容聚合 设计模式内容聚合 面试技术文 Java岗 面试考点精讲 xff08 基础篇01期 xff09 Java岗 面试考点精讲 xff08 基础篇02期 xff09 Java岗 面试考点精讲 xff08 网络篇03期 xff09 Ja
  • JVM原理和优化

    JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java exe来完成 通过下面4步来完成JVM环境 1 创建JVM装载环境和配置 2 装载JVM dll 3 初始化JVM dll并挂界到JNIENV JNI调用接口 实例 4
  • 抽象类与接口

    抽象方法 xff1a 只有行为的概念 xff0c 没有具体的行为实现 1 使用 xff1a abstract 关键字修饰 xff0c 并且没有方法体 2 包含抽象方法的类 xff0c 就一定是抽象类 3 抽象类不能直接创建实例 可以定义引用
  • Linux 下查看java进程

    Linux下查看和停止所有java进程 1 ps ef grep java 在Linux下查看所有java进程命令 xff1a ps ef grep java 停止特定java进程命令 xff1a kill 9 java进程序号 停止所有j
  • SpringCloud + Oauth2.0 + ShiroRedis + JWT + Gateway + Nacos + Nginx + ant-design-vue 电商 java 项目

    该项目是一套电商系统 xff0c 包括前台商城系统及后台管理系统 xff0c 基于SpringBoot 43 MyBatis实现 xff0c 采用Docker容器化部署 前台商城系统 xff1a 首页 商品推荐 商品搜索 商品展示 购物车
  • JavaEE进阶 - Spring Boot 日志文件 - 细节狂魔

    文章目录 1 志有什么 xff1f 2 志怎么 xff1f 3 自定义日志打印 准备工作 xff1a 创建一个 Spring Boot 项目 并在其中创建一个UserController类 xff0c 用来演示 在程序中得到 志对象 常 的
  • Spring注解详解

    一 Spring注解驱动开发入门 spring在2 5版本引入了注解配置的支持 xff0c 同时从Spring 3版本开始 xff0c Spring JavaConfig项目提供的许多特性成为核心Spring框架的一部分 因此 xff0c

随机推荐

  • hadoop启动HDFS命令

    启动命令 xff1a hadoop sbin start dfs sh 停止命令 xff1a hadoop sbin stop dfs sh
  • 女生学java开发难吗?女生适合学java吗?

    女生学java开发 xff1f Java开发看上去是一项系统性很强 入门很难的 高大上 学科 xff0c 前端 代码这些普通人基本不会接触到的名词 xff0c 吓怕了众多初学者 大部分人对于Java程序员都有一个既定印象 xff0c 那就是
  • 女生学java软件开发怎么样?就业前景如何?

    学java目前现状是男生多于女生 xff0c 从事java工作的也是男生多于女生 xff0c 那么这种现状是说女生学java不好找工作吗 一 女生适合从事java吗 在很多人的潜意识里 xff0c 认为女生是不适合从事java工作的 xff
  • 【 Docker Desktop stopped...】--------已经解决

    windows10系统 xff0c 安装docker 4 6 1版本 xff0c 提示Docker Desktop stopped xff0c 如图所示 在Stackoverflow有此问题 xff0c 底下给出的解决方案是卸载4 6 1版
  • JVM参数配置详解

    JVM调优总结 默认设置 Xms为JVM启动时申请的最小内存 xff0c 默认为操作系统物理内存的1 64但小于1G Xmx为JVM可申请的最大内存 xff0c 默认为物理内存的1 4但小于1G xff0c 默认当空余堆内存小于40 时 x
  • 认识MyBatis与Mybatis-plus及两者的区别

    一 认识Mybatis MyBatis 是持久层框架 xff0c 它支持定制化 SQL 存储过程以及高级映射 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 MyBatis 可以使用简单的 XML 或注解来配置
  • 线程

    创建线程 xff1a 方法一 xff09 继承Thread类 实现步骤 xff1a 继承Thread类 覆盖run 方法 提供并发运程的过程 创建这个类的实例 使用start 方法启动线程 xff08 方法二 xff09 实现Runnabl
  • Linux中实现cp命令

    一 main函数的原型 main int argc char argv argc是所有参数的总数量 argv为参数 如该程序所示 xff1a 程序运行结果如图所示 xff1a 二 实现cp指令的思路 1 打开src c 2 通过lseek函
  • Linux系统编程—进程

    一 相关概念 1 进程与程序 xff1a 程序是一个静态的概念 如gcc xxx c o pro xff0c 磁盘中生成的Pro文件 xff0c 叫做程序 进程就是程序运行起来 xff0c 系统中就多了一个进程 2 查看进程的方法 xff1
  • Linux系统编程——进程间通信

    目录 一 无名管道 相关概念 相关函数介 相关说明 实战 二 有名管道 有名管道和无名管道的区别 有名管道和无名管道的相同点 有名管道的相关函数 实战 三 消息队列 消息队列的介绍 消息队列的特点 相关函数 实战 四 共享内存 共享内存优缺
  • 树莓派——初级编程

    一 没有屏幕的树莓派如何使用 通过串口连接树莓派 通过官方给的相关文件和软件 xff0c 对树莓派进行刷系统 设备破解 默认情况 xff0c 树莓派的串口和蓝牙连接 想办法断开蓝牙连接 xff0c 把串口用来数据通信 默认账号 xff1a
  • 树莓派gpio驱动编写——不使用wiringPi

    一 相关概念 总线地址 总线地址 xff1a cpu能够访问内存的范围 可以通过cat proc meminfo 来查看内存条大小 物理地址 物理地址 xff1a 硬件的实际地址或绝对地址 虚拟地址 虚拟地址 xff1a 逻辑 xff08
  • 初识网络七层模型

    OSI 模型 Open System Interconnection model 是一个由国际标准化组织 x10fc01 提出的概念模型 试图 x10fc01 供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架 它将计算机网络体系
  • http的简单实现

    一 http协议的特性 http协议是建立在TCP IP协议之上应用层协议 xff0c 默认端口为80 8080 http协议的的特点是无状态 xff0c 无连接 二 http协议的请求 利用抓包工具httpwatch可以获取报文 http
  • Selenium之css怎么实现元素定位?

    世界上最远的距离大概就是明明看到一个页面元素站在那里 xff0c 但是我却定位不到 xff01 xff01 Selenium定位元素的方法有很多种 xff0c 像是通过id name class name tag name link tex
  • 零基础如何学习计算机语言

    一 认识电脑键盘 1 对于一个还没有接触过计算机的人来说认识键盘是重要的 2 通用的几个常见快捷键 xff1a CTRL 43 C 复制 CTRL 43 V 粘贴 CTRL 43 A 全选 CTRL 43 X 剪切 CTRL 43 S 保存
  • 如何用python连接Linux服务器

    1 安装paramiko库 pip install paramiko 2 使用paramiko库连接linux 导入库 import paramiko 创建一个sshclient对象 ssh 61 paramiko SSHClient 允许
  • 包装类

    注意点 包装类是final的类 包装类对象是不变的 与字符串类似 不变模式 共有8种包装类 int Integer long Long byte Byte short Short float Float double Double bool
  • 数据库和缓存如何保证一致性?

    先更新数据库 xff0c 还是先更新缓存 xff1f 有了这个想法后 xff0c 就准备开始着手优化服务器 xff0c 但是挡在在他前面的是这样的一个问题 由于引入了缓存 xff0c 那么在数据更新时 xff0c 不仅要更新数据库 xff0
  • 一名高级的Javaer,应该了解的 MYSQL 高级知识点

    SQL查询流程 1 通过客户端 服务器通信协议与 MySQL 建立连接2 查询缓存 xff0c 这是 MySQL 的一个可优化查询的地方 xff0c 如果开启了 Query Cache 且在查询缓存过程中查 询到完全相同的 SQL 语句 x