查找算法
二分查找 都以左闭右闭的方式,即 int l = 0, r = nums.length - 1; while (l <= r) 基本二分查找 int binarySearch(int[] nums, int target) { // 设置左右边界 int l = 0, r = nums.length - 1; while (l <= r) { int mid = l + (r - l) / 2; // 等同于mid=(l+r)/2,这种写法是为了防止...
Redis(一)基础
Redis是什么✨ Redis是一个数据库,不过与传统关系性数据库(RDBM)不同,Redis属于NoSQL,也就是非关系型数据库,它的存储结构是Key-Value。或者说Redis是一个基于内存、支持多种数据结构的存储系统。Redis的数据直接存在内存中,读写速度非常快,因此 Redis被广泛应用于缓存,消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景,比如 String(字符串)、Hash(哈希)、 List (列表)、Set(集合)、Zset(有序集合)、Bitmaps(位图)、HyperLog(基数统计)、GEO(地理信息)、Stream...
MySQL(八)高可用
MySQL主从复制的过程是怎么样 主从复制主要有3个阶段: 主库修改数据后,会写入binlog日志,从库连接到主库之后,主库会创建一个log dump线程,用于发送binlog的内容 从库会创建一个专门的I/O线程来连接主库的log dump线程,来接收主库的binlog日志,再把binlog信息写入relay log的中继日志里,再返回给主库复制成功的响应 接着从库还会创建一个用于回放binlog的SQL线程,去读relay log中继日志,然后回放binlog更新存储引擎中的数据,最终实现主从的数据一致性 MyS...
本博客主题Shiro部署
环境准备 Ubuntu系统 1.安装Node.js curl -sL https://deb.nodesource.com/setup_20.x -o nodesource_setup.sh sudo bash nodesource_setup.sh sudo apt install nodejs 查看是否安装成功 node -v npm -v 2.安装pnpm pm2 npm install -g pnpm npm install -g pm2 3.安装Docker curl -fsSL...
MySQL(七)性能调优
怎么查看一条语句是否走了索引 type字段就是描述了找到所需数据时使用的扫描方式是什么,常见扫描类型的执行效率从低到高的顺序为: A‖(全表扫描); index(全索引扫描); range(索引范围扫描); ref(非唯一索引扫描); eq_ref(唯一索引扫描); const(结果只有一条的主键或唯一索引扫描)。 可以通过explain查看SQL的执行计划,关注type字段,这个字段表明SQL扫描的方式,如果type字段不是all或者index就代表是索引扫描的方式,这种情况就代表SQL走了索引,并且我们还可以通过key字段,看这条查询用了哪个索引字段来走索引,如果ke...
MySQL(六)日志和内存
MySQL中常见的日志有哪些 事务日志(redo log 和 undo log) :redo log 是重做日志,undo log 是回滚日志; 二进制日志(binary log,binlog) :主要记录的是更改数据库数据的 SQL 语句; 慢查询日志(slow query log) :执行时间超过 long_query_time秒钟的查询,解决 SQL 慢查询问题的时候会用到; 错误日志(error log) :对 MySQL 的启动、运行、关闭过程进行了记录。 MySQL三大日志是什么 undo log是Innodb存储引擎层生成的日志,**实现了...
MySQL (五)锁
详细说一下MySQL数据库中锁的分类 根据锁粒度的不同,MySQL的锁可以分为全局锁、表级锁、行级锁。 我比较熟悉的是表级锁和行级锁,比如我们对一张表结构进行修改的时候,MySQL就会对这张表加一个元数据锁,元数据锁是属于表级锁的。 行级锁目前只有Innodb存储引擎实现了,MyISAM存储引擎是不支持行级锁的,只有表锁。Innodb存储引擎实现的行级锁主要有记录锁、间隙锁、临键锁、插入意向锁这些,当我们对表记录进行select for update,或者增删改的时候,都会对记录加行级锁。 MySQL 有哪些锁? 全局锁 执行后,**整个数据库就...
MySQL (四)事务
MySQL事务的四⼤特性 事务是由 MySQL 的引擎来实现的,我们常见的 InnoDB 引擎它是支持事务的。 不过并不是所有的引擎都能支持事务,比如 MySQL 原生的 MyISAM 引擎就不支持事务,也正是这样,所以大多数 MySQL 的引擎都是用 InnoDB。 原子性(Atomicity):一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。由undo log**日志保证 事务的原子性是通过undo log实现的,在事务还没提交前,历史数据会记录在undo log中,如果事务执行过程中,出现了错误或者用户执行了ROLLBACK...
MySQL (三)索引
索引的分类 按「数据结构」分类:B+tree索引、Hash索引、Full-text索引。 按「物理存储」分类:聚簇索引、二级索引。 按「字段特性」分类:主键索引、唯一索引、普通索引、前缀索引。 按「字段个数」分类:单列索引、联合索引(复合索引)。 MySQL有哪些索引 索引类型(按数据结构)* MySQL支持B+树索引、哈希索引(只用Memory支持)、全文索引这三种索引类型。我比较常用的是B+树索引,因为它是InnodB引擎默认使用的索引类型,支持排序、分组、范围查询、模糊查询等功能。 索引...
Git报错:port 443
Git报错: Failed to connect to github.com port 443 解决方案(开启VPN) 查看代理主机的监听IP 配置http代理 git config --global http.proxy 127.0.0.1:7890 git config --global https.proxy 127.0.0.1:7890 配置socks5代理 git config --global h...