Java开发之Mysql【面试篇 完结版】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、知识体系
- 二、Mysql-优化
- 1. 优化-如何定位慢查询
- ① 问题引入
- ② 解决方案
- ③ 问题总结
- ④ 实战面试
- 2. 优化-sql执行很慢,如何解决
- ① 问题引入
- ② 解决方案
- ③ 问题总结
- ④ 实战面试
- 3. 优化-索引概念
- ① 问题引入
- ② 数据结构对比
- ③ 问题总结
- ④ 实战面试
- 4. 优化-聚簇索引与非聚簇索引
- ① 问题引入
- ② 聚簇索引
- ③ 问题总结
- ④ 实战面试
- 5. 优化-覆盖索引
- ① 问题引入
- ② 覆盖索引
- ③ Mysql超大分页处理
- ④ 问题总结
- ⑤ 实战面试
- 6. 优化-索引创建的原则
- ① 问题引入
- ② 索引创建的原则
- ③ 问题总结
- ④ 实战面试
- 7. 优化-什么情况下索引会失效
- ① 问题引入
- ② 什么情况下索引会失效
- ③ 问题总结
- ④ 实战面试
- 8. 优化-SQL优化的经验
- ① 问题引入
- ② sql优化经验
- ③ 问题总结
- ④ 实战面试
- 三、Mysql-其他面试题
- 1. 事务的特性ACID
- ① 问题引入
- ② ACID是什么
- ③ 问题总结
- ④ 实战面试
- 2. 并发事务
- ① 问题引入
- ② 并发事务问题
- ③ 事务隔离
- ④ 问题总结
- ⑤ 实战面试
- 3. 事务-undo log和redo log的区别
- ① 问题引入
- ② redo log重做日志
- ③ undo log回滚日志
- ④ 问题总结
- ⑤ 实战面试
- 4. 事务-MVCC多版本并发控制(难)
- ① 问题引入
- ② MVCC多版本并发控制
- ③ 问题总结
- ④ 实战面试
- 5. Mysql主从同步原理
- ① 问题引入
- ② 主从同步原理
- ③ 问题总结
- ④ 实战面试
- 6. Mysql分库分表
- ① 问题引入
- ② 拆分策略
- ③ 问题总结
- 引用说明
前言
本文主要记录mysql的查询、索引、sql优化、事务、主从同步、分库分表等问题的分析与面试回答示例。
提示:以下是本篇文章正文内容,下面案例可供参考
一、知识体系
二、Mysql-优化
1. 优化-如何定位慢查询
① 问题引入
- 聚合查询
- 多表查询
- 表数据量过大查询
- 深度分页查询
表象:页面加载过慢、接口压测响应时间过长(超过1s)
② 解决方案
方案一:开源工具
调试工具:Arthas
运维工具:Prometheus 、Skywalking
方案二:Mysql自带慢日志
慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志如果要开启慢查询日志,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:
配置完毕之后,通过以下指令重新启动MySQL服务器进行测试,查看慢日志文件中记录的信息/var/lib/mysql/localhost-slow.log
③ 问题总结
④ 实战面试
2. 优化-sql执行很慢,如何解决
① 问题引入
- 聚合查询:新增临时表
- 多表查询:优化sql语句结构
- 表数据量过大查询:添加索引
- 深度分页查询
② 解决方案
一个SQL语句执行很慢,如何分析?
可以采用EXPLAIN 或者DESC命令获取MySQL如何执行SELECT语句的信息
展示SQL执行的情况,部分字段说明如下:
- possible_key 当前sql可能会使用到的索引
- key 当前sql实际命中的索引
- key_len 索引占用的大小
- Extra 额外的优化建议
- type这条sql的连接的类型,性能由好到差为NULL、system、const、 eq_ref、ref、range、index、all
system:查询系统中的表
const:根据主键查询(常用)
eq_ref:sql的查询条件是主键索引查询或唯一索引查询(返回一条数据)
ref:sql的查询条件是索引查询(返回多条数据)
range:索引范围查询
index:全索引查询,遍历整个索引数,效率不高(需要优化)
all:全盘扫描(需要优化)
③ 问题总结
可以采用MySQL自带的分析工具EXPLAIN
- 通过key和key_len检查是否命中了索引(索引本身存在是否有失效的情况)
- 通过type字段查看sql是否有进一步的优化空间,是否存在全索引扫描或全盘扫描
- 通过extra建议判断,是否出现了回表的情况,如果出现了,可以尝试添加索引或修改返回字段来修复
④ 实战面试
3. 优化-索引概念
① 问题引入
索引(index) 是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(B+树),这些数据结构以某种方式引用 (指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。
维护树的数据结构,提高查找效率,减少IO的操作
B+树、二叉树、红黑树、B树
② 数据结构对比
MySQL默认使用的索引底层数据结构是B+树。再聊B+树之前,我们先聊聊二叉树和B树
B-Tree,B树是一种多叉路衡查找树,相对于二叉树,B树每个节点可以有多个分支,即多叉。以一颗最大度数(max-degree)为5(5阶)的b-tree为例,那这个B树每个节点最多存储4个key
B+Tree是在BTree基础上的一种优化,使其更适合实现外存储索引结构,InnoDB存储引擎就是用B+Tree实现其索引结构
B树与B+树对比:
- 磁盘读写代价B+树更低(非叶子节点不存储数据);
- 查询效率B+树更加稳定(数据都存储在叶子节点);
- B+树便于扫库和区间查询(叶子节点之间使用的双向指针)
③ 问题总结
④ 实战面试
4. 优化-聚簇索引与非聚簇索引
① 问题引入
- 什么是聚集索引
- 什么是二级索引(非聚集索引)
- 什么是回表?
② 聚簇索引
聚集索引选取规则:
1.如果存在主键,主键索引就是聚集索引。
2.如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。
3.如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚集索引。
回表查询:先通过二级索引找到对应的主键值,在用主键值在聚集索引中去找整行的数据
③ 问题总结
④ 实战面试
5. 优化-覆盖索引
① 问题引入
覆盖索引是指查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到。
判断下面的SQL哪些是覆盖索引,为什么?
select * from tb_user where id = 1
是,因为根据id查询的,id默认是主键索引,就是聚簇索引,聚簇索引中对应的是整行的记录select id,name from tb_user where name = 'Arm'
是,因为通过name这个二级索引也可以找到id,是一次性可以查询出来id和name的select id,name,gender from tb_user where name = 'Arm'
不是,需要通过回表查询才能获取到gender
② 覆盖索引
覆盖索引是指查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到。
③ Mysql超大分页处理
在数据量比较大时,如果进行limit分页查询,在查询时,越往后,分页查询效率越低。
我们一起来看看执行limit分页查询耗时对比:
因为,当在进行分页查询时,如果执行limit 9000000,10,此时需要MySQL排序前9000010记录,仅仅返回9000000 - 9000010 的记录,其他记录丢弃,查询排序的代价非常大。
优化思路:
一般分页查询时,通过创建覆盖索引能够比较好地提高性能,可以通过覆盖索引加子查询形式进行优化
④ 问题总结
⑤ 实战面试
6. 优化-索引创建的原则
① 问题引入
先陈述自己在实际的工作中是怎么用的
主键索引
唯一索引
根据业务创建的索引(复合索引)
② 索引创建的原则
-
针对于数据量较大,且查询比较频繁的表建立索引。单表超过10万数据 (增加用户体验)
-
针对于常作为查询条件(where)、排序(order by)、分组(group by) 操作的字段建立索引。
-
尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高(比如一个地区字段,大部分都是北京市,就不适合创建索引)。
-
如果是字符串类型的字段,字段的长度较长,可以针对于字段的特点,建立前缀索引(比如简介内容想要创建索引,就采用前缀索引)。
-
尽量使用联合索引,减少单列索引,查询时,联合索引很多时候可以覆盖索引,节省存储空间,避免回表,提高查询效率。
-
要控制索引的数量,索引并不是多多益善,索引越多,维护索引结构的代价也就越大,会影响增删改的效率。
-
如果索引列不能存储NULL值,请在创建表时使用NOT NULL约束它。当优化器知道每列是否包含NULL值时,它可以更好地确定哪个索引最有效地用于查询。
③ 问题总结
④ 实战面试
7. 优化-什么情况下索引会失效
① 问题引入
索引失效的情况有很多,可以说一些自己遇到过的。
给tb_seller创建联合索引,字段顺序: name,status,address
那快读判断索引是否失效了呢?执行计划explain
② 什么情况下索引会失效
-
违反最左前缀法则
如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始,并且不跳过索引中的列。匹配最左前缀法则,走索引。
有效的情况如下图所示:
失效的情况如下图所示(违反最左前缀法则):
-
范围查询右边的列,不能使用索引。
根据前面的两个字段name , status查询是走索引的,但是最后一个条件address没有用到索引。
-
不要在索引列上进行运算操作,索引将失效。
-
字符串不加单引号,造成索引失效。
由于,在查询是,没有对字符串加单引号,MySQL的查询优化器,会自动的进行类型转换,造成索引失效。
-
以%开头的Like模糊查询,索引失效。如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,索引失效。
③ 问题总结
④ 实战面试
8. 优化-SQL优化的经验
① 问题引入
表的设计优化
索引优化(参考优化创建原则和索引失效)
SQL语句优化
主从复制、读写分离
分库分表
② sql优化经验
- 表的设计优化(参考阿里开发手册《嵩山版》)
a. 比如设置合适的数值(tinyint int bigint),要根据实际情况选择
b. 比如设置合适的字符串类型(char和varchar) char定长效率高.varchar可变长度,效率稍低 - SQL语句优化
a. SELECT语句务必指明字段名称(避免直接使用select* )
b. SQL语句要避免造成索引失效的写法
c. 尽量用union all代替union,union会多一次过滤,效率低
d. 避免在where子句中对字段进行表达式操作
e. Join优化能用inner join就不用left join right join,如必须使用一定要以小表为驱动,内连接会对两个表进行优化,优先把小表放到外边,把大表放到里边。left join或right join,不会重新调整顺序 - 主从复制、读写分离
如果数据库的使用场景读的操作比较多的时候,为了避免写的操作所造成的性能影响可以采用读写分离的架构。
读写分离解决的是,数据库的写入,影响了查询的效率。
③ 问题总结
④ 实战面试
三、Mysql-其他面试题
1. 事务的特性ACID
① 问题引入
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
② ACID是什么
- 原子性(Atomicity) :事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
- 一致性(Consistency) :事务完成时,必须使所有的数据都保持一致状态。
- 隔离性(Isolation) :数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
- 持久性(Durability) :事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。
③ 问题总结
④ 实战面试
2. 并发事务
① 问题引入
● 并发事务问题:脏读、不可重复读、幻读
● 隔离级别:读未提交、读已提交、可重复读、串行化
② 并发事务问题
-
脏读:一个事务读到另外一个事务还没有提交的数据。
-
不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。
-
幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了“幻影”。
③ 事务隔离
对并发事务进行隔离,有以下隔离级别,如下图所示:
注意:事务隔离级别越高,数据越安全,但是性能越低。
④ 问题总结
⑤ 实战面试
3. 事务-undo log和redo log的区别
① 问题引入
undo log和redo log都是mysql的日志文件,但是功能不一样。
- 缓冲池(buffer pool):主内存中的一个区域,里面可以缓存磁盘上经常操作的真实数据,在执行增删改查操作时,先操作缓冲池中的数据(若缓冲池没有数据,则从磁盘加载并缓存),以一定频率刷新到磁盘,从而减少磁盘IO,加快处理速度
- 数据页(page):是InnoDB 存储引擎磁盘管理的最小单元,每个页的大小默认为16KB。页中存储的是行数据
② redo log重做日志
redo log 重做日志,记录的是事务提交时数据页的物理修改,是用来实现事务的持久性。
该日志文件由两部分组成:重做日志缓冲(redo log buffer) 以及重做日志文件(redo log file) ,前者是在内存中,后者在磁盘中。当事务提交之后会把所有修改信息都存到该日志文件中,用于在刷新脏页到磁盘,发生错误时,进行数据恢复使用。(每个一段时间会进行清理)
③ undo log回滚日志
undo log 回滚日志,用于记录数据被修改前的信息,作用包含两个:提供回滚和MVCC(多版本并发控制)。undo log和redo log记录物理日志不一样,它是逻辑日志。
- 可以认为当delete一条记录时,undo log中会记录一 条对应的insert记录, 反之亦然,
- 当update一条记录时, 它记录一条对应相反的update记录。 当执行rollback时, 就可以从undo log中的逻辑记录读取到相应的内容并进行回滚。
- undo log可以实现事务的一致性和原子性
④ 问题总结
⑤ 实战面试
4. 事务-MVCC多版本并发控制(难)
① 问题引入
锁:排他锁(如一 个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁)
mvcc:多版本并发控制
② MVCC多版本并发控制
MVCC全称Multi-Version Concurrency Control,多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突
MVCC的具体实现,主要依赖于数据库记录中的隐式字段、undo log日志、readView。
例如:下面有4个事务,事务2、3、4对该记录都进行了操作,那么在事务5中的两条查询语句是查询的哪个事务版本的记录呢?
MVCC的实现原理:
-
记录中的隐藏字段
-
undo log 回滚日志
a. 回滚日志,在insert、 update、 delete的时候产生的便于数据回滚的日志。
b. 当insert的时候,产生的undo log日志只在回滚时需要,在事务提交后,可被立即删除。
c. 而update、delete的时候, 产生的undo log日志不仅在回滚时需要,mvcc版本访问也需要,不会立即被删除。 -
undo log 版本链
不同事务或相同事务对同一条记录进行修改,会导致该记录的undo log生成一条记录版本链表,链表的头部是最新的旧记录,链表尾部是最早的旧记录。
-
readview
ReadView (读视图)是 快照读 SQL执行时MVCC提取数据的依据,记录并维护系统当前活跃的事务(未提交的) id。
a. 当前读:读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。对于我们日常的操作,如:
select … lock in share mode(共享锁),select … for update、update、 insert、 delete(排他锁)都是一 种当前读。
b. 快照读:简单的select (不加锁)就是快照读,快照读,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读。
Read Committed:每次select, 都生成一个快照读。
Repeatable Read:开启事务后第一个select语句才是快照读的地方。
举例说明:
当前读:不受隔离级别影响,事务A的两次select都是读到的最新的数据
快照读:不同的隔离级别不一样,RC读出来不一样,RR读出来都是相同的,获得的结果就是快照读
ReadView包含的四个核心字段:
不同的隔离级别,生成ReadView的时机不同:
➢ READ COMMITTED :在事务中每一 次执行快照读时生成ReadView。
➢ REPEATABLE READ:仅在事务中第一 次执行快照读时生成ReagView,后续复用该ReadView。
③ 问题总结
④ 实战面试
5. Mysql主从同步原理
① 问题引入
主从架构:主库用于写数据,从库用于读数据
主库与从库如何进行同步的?
② 主从同步原理
MySQL主从复制的核心就是二进制日志
二进制日志(bin log) 记录了所有的 DDL (数据定义语言,增删改查表结构) 语句和 DML (数据操纵语言,增删改查表中的数据) 语句,但不包括数据查询 (SELECT、 SHOW) 语句。
复制分成三步:
- Master 主库在事务提交时,会把数据变更记录在二进制日志文件Binlog中。
- 从库读取主库的二进制日志文件Binlog,写入到从库的中继日志Relay Log。
- slave重做中继日志中的事件,将改变反映它自己的数据。
③ 问题总结
④ 实战面试
6. Mysql分库分表
① 问题引入
主从架构,读写分离,分担了访问压力
分库分表的时机:
- 前提,项目业务数据逐渐增多,或业务发展比较迅速(单表的数据量达到1000W或20G以后)
- 优化已解决不了性能问题(主从读写分离、查询索引…)
- IO瓶颈(磁盘IO、网络IO)、CP\瓶颈(聚合查询、连接数太多)
分库分表主要解决存储的压力
② 拆分策略
垂直拆分与水平拆分
垂直拆分之垂直分库:以表为依据,根据业务将不同表拆分到不同库中。
特点:
1.按业务对数据分级管理、维护、监控、扩展
2.在高并发下,提高磁盘IO和数据量连接数
垂直拆分之垂直分表:以字段为依据,根据字段属性将不同字段拆分到不同表中。
特点:
1.冷热数据分离
2.减少IO过渡争抢,两表互不影响
拆分规则:
● 把不常用的字段单独放在一张表
● 把text、blob等大字段拆分出来放在附表中
水平拆分之水平分库:将一个库中的数据拆分到多个库中。
特点:
1.解决了单库大数量,高并发的性能瓶颈问题
2.提高了系统的稳定性和可用性
路由规则
● 根据id节点取模
● 按id也就是范围路由, 节点1(1-100万),节点2(100万-200万)
水平拆分之水平分表:将一个表的数据拆分到多个表中(可以在同一个库内)。
特点:
1.优化单一表数据量过大而产生的性能问题;
2.避免IO争抢并减少锁表的几率;
分库分表的策略有哪些?
③ 问题总结
常用垂直分库和垂直分表
引用说明
https://www.bilibili.com/video/BV1yT411H7YK?p=20&vd_source=98092b0aee05ae7c890b09fe07f13df4
相关文章:
Java开发之Mysql【面试篇 完结版】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、知识体系二、Mysql-优化1. 优化-如何定位慢查询① 问题引入② 解决方案③ 问题总结④ 实战面试 2. 优化-sql执行很慢,如何解决① 问题引入② 解…...
【实战】十二、自动化测试 —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十九)
文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表三、TS 应用:JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…...
【人月神话】重新探索人月神话:软件工程的现实与挑战
人月神话是一篇由美国软件工程师弗雷德里克布鲁克斯所写的软件工程经典之作,最早发表于1975年。这篇文章的全名是《人月神话:软件工程的神话与现实》(The Mythical Man-Month: Essays on Software Engineering),它涵盖…...
电阻和电容
目录 1、常见的电阻器 2、电容 编辑 1、常见的电阻器 对于电阻需要了解三个参数(查询电阻的数据手册): 1、封装:就是电阻的尺寸或者大小,看焊在你的pcb板上是否合适。 2、标称:电阻的电阻大小、精度、…...
01-Java-日志框架
1 日志技术概述 1.1 什么是日志技术 日志技术是一种记录和存储应用程序运行时信息的技术。它可以捕获应用程序的状态、事件、错误和警告等信息,并将其保存到日志文件或其他存储介质中。日志技术可以帮助开发人员和运维团队了解应用程序的运行情况,进…...
【js】map、filter、reduce、fill(待补充...)
const arr [{ id: 1, flag: true },{ id: 2, flag: true },{ id: 3, flag: false },{ id: 4, flag: true }, ]map:返回的是对每个元素进行操作后的结果数组,这个数组的长度和原数组相同 const result arr.map((item: any) > {return item.flag fa…...
【JPC出版】第二届能源与电力系统国际学术会议 (ICEEPS 2023)
第二届能源与电力系统国际学术会议 (ICEEPS 2023) 2023 2nd International Conference on Energy and Electrical Power Systems 第二届能源与电力系统国际学术会议 (ICEEPS 2023)将于2023年10月27日至29日在中国厦门举行。ICEEPS 将汇集能源科学、电气工程和电力系统领域的…...
51单片机的简易篮球计分器倒计时仿真设计( proteus仿真+程序+原理图+报告+讲解视频)
51单片机的简易篮球计分器倒计时仿真设计( proteus仿真程序原理图报告讲解视频) 1.主要功能:2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单&&下载链接 51单片机的简易篮球计分器倒计时仿真设计( proteus仿真程序原理图报告讲解视频…...
医院安全不良事件报告系统源码 PHP+ vue2+element+ laravel8+ mysql5.7+ vscode开发
不良事件上报系统通过 “事前的人员知识培训管理和制度落地促进”、“事中的事件上报和跟进处理”、 以及 “事后的原因分析和工作持续优化”,结合预存上百套已正在使用的模板,帮助医院从对护理事件、药品事件、医疗器械事件、医院感染事件、输血事件、意…...
Mybatis -- 读取 DATE 类型字段时可能遇到的问题(夏令时问题)
在使用 MYBATIS 读取数据库字段的时候,我们一般需要为查询字段指定数据类型。特别是当我们使用 mybatis generator 去生成对应的接口代码时,会自动按照数据库字段类型生成响应映射规则的代码。 如下,左侧是 date 类型生成的字段映射规则&…...
第10节-PhotoShop基础课程-选区工具
文章目录 前言1.矩形选区 shift 是正方形1.任意比例2.等比绘制 先点击再按shift3.中心绘制1.任意比例 先点击再按Alt2.等比绘制 先点击再按Alt Shift 4.移动选区 按住空格 2.椭圆选区1.椭圆选区2.正圆选区 shift键3.中心圆选区 Alt Shift 3.选取选项1. 选区1.建立选区2.加选 s…...
【C++】C++动态内存管理
🏳️🌈C/C内存分布 说明: 1.我们的代码并非放在代码段里的,而是以文件的形式存在磁盘上的。 代码经过编译链接形成的二进制指令,才是放进代码段里的。(即可执行代码) 2.“abcd”如果没有被c…...
Java中使用JTS实现WKT字符串读取转换线、查找LineString的list中距离最近的线、LineString做缓冲区扩展并计算点在缓冲区内的方位角
场景 Java中使用JTS对空间几何计算(读取WKT、距离、点在面内、长度、面积、相交等): Java中使用JTS对空间几何计算(读取WKT、距离、点在面内、长度、面积、相交等)_jts-core_霸道流氓气质的博客-CSDN博客 JavaGeoTools实现WKT数据根据EPSG编码进行坐标系转换&…...
【异步VS多线程】异步VS多线程区别
异步VS多线程区别 1、异步 异步概念:异步是并发编程的一种形式,在同一时刻可以独立于主程序外,可以并发执行另外一些任务。异步的实现方式有两种: 第一种:通过 async TASK来实现异步,第二种:通…...
【nosql】redis之高可用(主从复制、哨兵、集群)搭建
redis群集有三种模式 redis群集有三种模式,分别是主从同步/复制、哨兵模式、Cluster集群,下面会讲解一下三种模式的工作方式,以及如何搭建cluster群集 ●主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从…...
js如何实现数组去重的常用方法
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用 Set(ES6)⭐ 使用 filter 和 indexOf⭐ 使用 reduce⭐ 使用对象属性⭐ 使用 includes 方法(ES6)⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方…...
XREAL Air 2 Pro发布,加入电致变色技术,拓展AR眼镜使用场景
【2023年9月6日 中国北京】继刚刚宣布XREAL Air在全球销量突破20万台后,全球领先的消费级AR眼镜品牌XREAL今日于中国市场正式推出XREAL Air 2系列新品。全新Air 2系列包含两款AR眼镜产品:在显示、佩戴舒适性、音频等核心维度全面升级,体验全面…...
Go基础11-理解Go语言的包导入
Go语言是使用包(package)作为基本单元来组织源码的,可以说一个Go程序就是由一些包链接在一起构建而成的。虽然与Java、Python等语言相比这算不上什么创新,但与祖辈C语言的头文件包含机制相比则是“先进”了许多。 编译速度快是这种…...
【MySQL数据库原理】在MySQL Workbench界面运行SQL代码——学生管理系统
在 MySQL Workbench 8.0 中,你可以使用以下步骤新建内容并运行 MySQL 语言代码: 1、打开 MySQL Workbench 并连接到你的 MySQL 数据库服务器。 2、在左侧的导航栏中,展开你的连接以查看数据库。选择你要在其中运行 SQL 代码的数据库。 3…...
高分三号1米分辨率飞机检测识别数据集
二、背景介绍 合成孔径雷达(Synthetic Aperture Radar, SAR) 是一种主动式的微波成像系统,它不受光照、云雾 和气候等自然条件影响,具备全天时、全天候对地 观测的能力,已成为遥感领域重要的信息获取平 台。近年来,随着遥感成像技…...
Unity 之Material 类型和 MeshRenderer 组件中的 Materials 之间有一些重要的区别
文章目录 区别代码例子 区别 在Unity中,Material 类型和 MeshRenderer 组件中的 Materials 之间有一些重要的区别。 Material 类型: Material 是 Unity 中用来定义渲染属性的资源。它包含了一系列定义了如何绘制一个对象的属性,比如颜色、纹…...
【LeetCode-简单题】977. 有序数组的平方
文章目录 题目方法一:双指针方法二: 题目 方法一:双指针 class Solution { // 方法一 :双指针public int[] sortedSquares(int[] nums) {int left 0;int right nums.length -1 ;int[] res new int[nums.length];//结果集新数组…...
【笔试强训选择题】Day39.习题(错题)解析
作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!ÿ…...
Prometheus-Alertmanager 警报管理器-部署和设置
文章目录 一、介绍二、核心概念1 Grouping 分组2 Inhibition 抑制3 Silences 静默(静音)5 High Availability 高可用性 三、部署1 二进制方式下载配置 systemd 2 docker-compose 方式 四、配置1 配置文件介绍1.1 全局配置1.2 receiver 接收器标准接收器相…...
恒运资本:小盘股的优点?投资小盘股要注意哪些方面?
股市是一个充溢时机和危险的当地,不同出资者有不同的偏好,有的人喜爱追逐大盘蓝筹股,有的人则钟情于小盘股。那么小盘股的长处?出资小盘股要注意哪些方面?恒运资本也为我们准备了相关内容,以供参考。 小盘股…...
LeetCode:2. 两数之和
这个解题思路来自代码随想录:代码随想录 (programmercarl.com) class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {std::unordered_map <int,int> map;for(int i 0; i < nums.size(); i) {// 遍历当前元素&am…...
OpenCV(二十四):可分离滤波
目录 1.可分离滤波的原理 2.可分离滤波函数sepFilter2D() 3.示例代码 1.可分离滤波的原理 可分离滤波的原理基于滤波器的可分离性。对于一个二维滤波器,如果它可以表示为水平方向和垂直方向两个一维滤波器的卷积,那么它就是可分离的。也就是说&#x…...
【JS进阶】防抖与节流
防抖与节流 1.防抖 1.1 为什么要防抖? 在项目中,有的操作是高频触发的,但是其实触发一次就好了,比如我们短时间内多次缩放页面,那么我们不应该每次缩放都去执行操作,应该只做一次就好。再比如说监听输入…...
【css】linear-gradient()的用法
linear-gradient() CSS函数创建一个由两种或多种颜色沿一条直线进行线性过渡的图像,其结果是<gradient>数据类型的对象,此对象是一种特殊的<image> 数据类型。 语法 /* 渐变轴为 45 度,从蓝色渐变到红色 */ linear-gradient(45deg, blue, red);/* 从右…...
java: 读取snakeyaml-1.26.jar各种jar包时出错; error in opening zip file
可能的问题 jar有问题idea没有权限等等其他问题。但执行后报错就是读取不了,还报error in opening zip file这个错。 解决问题 我的错就是jar包有问题。我先后进行了很多次把jar包位置里的东西全部删除,然后重新maven下载但是不管用。最后从网站上下载…...
沛县可以做网站的单位/电脑培训班零基础网课
1.TortoiseHg 设置语言成中文 其实设置语言的方法在文档里有详细说明:如果你安装后还是英文,想要切换语言的话,只需要设置环境变量,增加一个 LANGUAGE,设置为zh_CN 就可以了 哪里设置环境变量?系统属性&…...
wordpress文章格式/百度搜索排名优化
慢慢将一些概念固化到基因内,才有可能和SPRING MVC,MEAN之类的好好作比较吧。 全都是基于1.8版本的教材,爽!!!...
网站建设推广平台/百度推广客户端电脑版
/*使用PrepareStatement数据批量操作 * update、delete本身就具有批量操作的效果。 * 此时的批量操作,主要指的是批量插入。使用PreparedStatement如何实现更高效的批量插入?* 题目:向goods表中插入20000条数据* CREATE TABLE goods(id INT P…...
如何自己做网站发布到服务器上面/河南靠谱seo电话
前边有一篇记录过不使用spring,直接在java代码中连接和操作mongodb数据库,这里就紧随其后记录一下使用spring的情况下,在java中简单操作mongodb。maven导包配置:因为涉及了sping以及springmvc,因此也需要导入它们相关的…...
wordpress纯代码/网络营销与电子商务的区别
审核转换允许对数据流添加审核审核数据,以往使用HIPPA和Sarbanes-Oxley (SOX)时,必须跟踪谁在什么时插入数据,审核转换可以实现这种功能。例如要跟踪那一个task向表里插入数据,可以在审核转换中添加相应的列。在Output Column Nam…...
wordpress获取登录密码/网络营销策划方案框架
pig是hadoop的一个子项目,用于简化MapReduce的开发工作,可以用更人性化的脚本方式分析数据。 一、安装 a) 下载 从官网http://pig.apache.org下载最新版本(目前是0.14.0版本),最新版本可以兼容hadop 0.x /1.x / 2.x版本,直接解压到…...