随笔分类 -  DB及框架

摘要:一、双重检测锁 在线程池初始化时,为了保证并发安全,同时为了保证初始化性能,使用了双重检测锁进行初始化,代码如下所示, 第一步的判断是为了保证效率:毕竟初始化只是在连接池没有初始化或没有初始化完成时才会去调用初始化逻辑,在大多数场景,连接池已经初始化完成,所以如果不加第一个是否已完成初始化的判断,那 阅读全文
posted @ 2022-05-12 22:02 李聪龙 阅读(684) 评论(0) 推荐(0)
摘要:在获取连接时,会执行初始化方法 init() ,使用 DruidDataSource的入口。 一、双检测保证并发安全与性能 为了保证不会重复初始化并且保证性能,使用了类似双重检测锁的方式来处理,第一次判断 inited 标识,如果已经初始化,则则直接返回,如果没有初始化,则使用ReentrantLo 阅读全文
posted @ 2022-05-11 19:21 李聪龙 阅读(2520) 评论(0) 推荐(0)
摘要:一、项目介绍 1、Druid简介 Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。 Github项目地址 https://github.com/alibaba/dr 阅读全文
posted @ 2022-05-10 23:19 李聪龙 阅读(2562) 评论(0) 推荐(0)
摘要:Homebrew 安装 /usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)" 一、安装OpenResty 安装并设置环境变量 brew install openresty 阅读全文
posted @ 2022-04-02 20:15 李聪龙 阅读(348) 评论(0) 推荐(0)
摘要:一、业务场景分析 在实际开发中,我们需要使用到锁,来防止并发问题,以秒杀为例,如果没有锁的处理,就会发生超卖的问题,超卖问题的出现,是由于多线程并发处理,一个事务未提交,但是另外的线程来查询时,可以查询到仍有库存,就会发生超卖。 解决这类问题,一般有三种方案: 1、使用锁处理 也就是让所有的操作都串 阅读全文
posted @ 2021-10-27 15:08 李聪龙 阅读(399) 评论(0) 推荐(0)
摘要:一、数据库瓶颈解决方案 在大流量时,数据库会成为系统瓶颈,其总体的解决方案如下: 1、项目架构使用缓存,90%请求拦截上游服务器 ———— 读操作 2、数据归档处理 (把一些用户不访问的数据直接归档处理,缓解数据库压力)--使用master ,slave架构 3、停机扩容 影响数据库性能因数: 1、 阅读全文
posted @ 2021-10-27 11:27 李聪龙 阅读(2483) 评论(0) 推荐(0)
摘要:一、开启密码验证 (一)开启密码验证 1、安装x-pack 在ES6.3之前添加用户密码验证需要安装x-pack插件,在6.3之后被去掉,可以直接设置。 在es的安装目录中,执行: ./bin/elasticsearch-plugin install x-pack 2、设置密码 在安装x-pack后 阅读全文
posted @ 2021-07-21 20:46 李聪龙 阅读(3533) 评论(0) 推荐(0)
摘要:一、集群搭建 1、单机搭建请见:https://www.cnblogs.com/liconglong/p/15005229.html 2、es参数配置 集群搭建,需要在原有单价搭建的基础上修改es配置文件(vi /home/es/elasticsearch-6.2.4/config/elastics 阅读全文
posted @ 2021-07-20 10:17 李聪龙 阅读(2729) 评论(0) 推荐(0)
摘要:官网说明: elasticsearch官网建议生产环境需要设置bootstrap.memory_lock: true 官网的解释 是:发生系统swapping的时候ES节点的性能会非常差,也会影响节点的稳定性。所以要不惜一切代价来避免swapping。swapping会导致Java GC的周期延迟从 阅读全文
posted @ 2021-07-18 11:36 李聪龙 阅读(1574) 评论(0) 推荐(0)
摘要:一、全文检索与ES (一)全文检索 数据可以分为结构化数据和非结构化数据,比如说我们常用的sql语句就都是操作结构化数据,邮件等信息都是非结构化数据; 对于结构化数据的查询可以使用sql语句进行查询,速度较快; 对于非结构化数据的查询可以把非结构化数据变成结构化数据:先根据空格进行字符串拆分,得到一 阅读全文
posted @ 2021-07-17 10:59 李聪龙 阅读(11262) 评论(0) 推荐(0)
摘要:一、ES安装 (一)安装步骤 在安装ES相关软件前需要先安装JDK,Linux下安装JDK:https://www.cnblogs.com/liconglong/p/14559373.html,这里需要注意一下,JDK要安装到/etc目录下,因为ES不能使用root权限启动,所以如果安装到其他目录, 阅读全文
posted @ 2021-07-16 18:00 李聪龙 阅读(743) 评论(0) 推荐(0)
摘要:一、insert语句执行流程 二、事务介绍 数据库具有ACID四大特性: 原子性(atomicity):事务最小工作单元,要么全成功,要么全失败。 一致性(consistency):事务开始和结束之后,数据库完整性不会被破坏 隔离性(isolation):不同事务间互不影响,四种隔离级别RU(读未提 阅读全文
posted @ 2021-03-07 01:32 李聪龙 阅读(174) 评论(0) 推荐(0)
摘要:一、一条update语句 二、Mysql锁介绍 按照锁的粒度来说,Mysql主要包含三种类型的锁定机制:全局锁、表级锁、行级锁 全局锁:锁的是整个database,由Mysql的Sql layer层实现。 表级锁:锁的是整张表,由Mysql的Sql layer层实现。 行级锁:锁的是某行数据,也可能 阅读全文
posted @ 2021-03-06 18:01 李聪龙 阅读(207) 评论(0) 推荐(0)
摘要:一、一条select语句 一条查询语句查询时,执行流程如下: 二、索引介绍 索引的优势是可以提高数据检索的效率,降低数据库的IO成本;可以通过索引列对数据进行排序,降低数据排序成本,降低了CPU消耗。其劣势是索引会占据磁盘空间,其虽然会提高查询效率,但是会降低更新表的效率。 索引可以分为聚集索引、覆 阅读全文
posted @ 2021-03-05 00:36 李聪龙 阅读(162) 评论(1) 推荐(0)
摘要:一、InnoDB架构图 上图详细展示了InnoDB存储引擎的存储结构,由图可见,InnoDB存储引擎由内存池、后台线程和磁盘三大部分组成。 二、InnoDB磁盘文件 InnoDB的磁盘文件分为系统表空间、用户表空间、Redo日志文件和归档文件。 二进制文件(binlog)是由MySql_Servic 阅读全文
posted @ 2021-03-04 00:14 李聪龙 阅读(541) 评论(0) 推荐(0)
摘要:一、Mysql架构图 上图就是Mysql的架构图,对于其中组件说明如下: 1、Connectors 连接器,指不同语言与Mysql的交互 2、Management Services & Utilities 系统管理&控制工具 3、Connection Pool:连接池 (1)管理用户连接,等待处理连 阅读全文
posted @ 2021-03-02 15:50 李聪龙 阅读(297) 评论(0) 推荐(0)
摘要:一、Sharding JDBC实现分库分表 对于Sharding JDBC分库分表,配置残烛可以分为几大块: 数据源配置: 配置参数:spring.shardingsphere.datasource.names 说明:如果用到分表,则需要配置多个数据源,多数据源之间用逗号分隔 数据源连接信息配置: 阅读全文
posted @ 2021-02-28 20:40 李聪龙 阅读(1164) 评论(0) 推荐(0)
摘要:一、集群搭建之主从复制 (一)主从复制原理 这里需要了解两个文件,bin log和relay log(中继日志)文件。 bin log:bin log记录所有的数据更改操作,可用于本机数据恢复和主从数据同步,其刷入磁盘方式有三种:每秒一次将数据刷新入磁盘;每次事务提交将数据刷新入磁盘;每一秒一次 + 阅读全文
posted @ 2021-02-28 01:31 李聪龙 阅读(870) 评论(0) 推荐(0)
摘要:一、查看及卸载 1、查看是否有已安装mysql rpm -qa|grep mysql 2、如果存在,删除 yum remove -y mysql mysql-libs mysql-common rm -rf /var/lib/mysql rm -f /etc/my.cnf 二、安装 1、安装 #下载 阅读全文
posted @ 2021-02-25 15:18 李聪龙 阅读(170) 评论(0) 推荐(0)