自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

多一天,多一点

即使走得慢,也不能后退

  • 博客(67)
  • 收藏
  • 关注

原创 记录Caused by: com.mysql.cj.exceptions.CJCommunicationsException

1、使用命令查看抛异常的数据库服务器配置的超时时间(单位:秒)show VARIABLES like ‘wait_timeout’;2、查看自己项目中数据库连接池的配置(单位:毫秒)····druid.timeBetweenEvictionRunsMillis=····3、解决方案3.1、如果此配置的值大于上面数据库的配置,则会抛异常,调整数据库连接池的配置小于数据库的配置即可例:····druid.timeBetweenEvictionRunsMillis=100000····3.2、修改

2021-11-05 16:12:44 749

原创 面试必问环节

自我介绍:1、基本情况:姓名,年龄(年龄特别小就不要说了),学校和专业(双非就不要说了)2、最近一段时间的工作经验(一个最熟悉、技术栈最丰富的项目,有互联网经验最好)​ 2.1、当前项目的价值​ 2.2、用到的技术体系​ 2.3、在项目中承担的主要职责​ 2.4、项目中遇到的问题3、说一下对当前公司的了解(企业背调)​ 我之前工作经验可能和贵公司所做的业务不太相符,但是我对咱们公司所从事的行业是非常感兴趣的,之前一直苦于没有机会进入到这个行业里面,这次我非常重视本次面试机会,所以我希

2021-05-26 23:27:16 361

转载 重新认识ThreadLocal

源码分析  为了解释ThreadLocal类的工作原理,必须同时介绍与其工作甚密的其他几个类ThreadLocalMap(内部类)Thread  首先,在Thread类中有一行: /* ThreadLocal values pertaining to this thread. This map is maintained by the ThreadLocal class. */ ThreadLocal.ThreadLocalMap threadLocals = null; 

2021-05-19 17:50:24 173

转载 MySQL总结

一、维护类1.什么是间隙(Next-Key)锁? 当使用范围条件而不是相等条件检索数据的时候,并请求共享或排它锁时,InnoDB会给符合条件的已有数据记录的索引项加锁;对于键值在条件范围内但并不存在的记录,称为“间隙(GAP)”,InnoDB也会对这个“间隙”加锁,这种锁机制就是所谓的间隙(Next-Key)锁。间隙锁是InnoDB中行锁的一种,但是这种锁锁住的不止一行数据,它锁住的是多行,是一个数据范围。间隙锁的主要作用是为了防止出现幻读(Phantom Read),用在Repeated-Rea

2021-05-18 14:01:31 757

转载 windows下8.0以上版本的mysql忘记密码解决办法

原来mysql8.0以后的版本,跳过密码启动的语句有些变化。下面是忘记密码重置密码的步骤。1.管理员打开命令提示符工具,cd到mysql安装目录的bin目录下(设置了环境变量不需要这一步);2.首先关闭mysql服务:net stop mysql3.输入:mysqld --shared-memory --skip-grant-tables4.此时mysql已经启动,另外打开一个命令提示符,运行mysql,输入:mysql5.可以看到已经进入mysql命令模式,键入:FLUSH PRIVILEGES

2020-10-30 17:55:15 325

转载 如何卸载流氓软件—UniAccessAgent

UniAccess Agent 是在由LeagSoft开发的监控软件,老版本的一般安装在C:\Program Files\LeagSoft\UniAccess Agent这个目录下,一般找到这个目录点击鼠标右键,选择360强力删除,操作完之后就删除掉了。但新版UniAccess软件隐藏了安装目录,资源管理器等一般软件看不到安装目录,也没法选择它强制删除。同时新版软件运行时,360文件粉碎机软件也启动不了。因此老的破解方法失效。本人给出新的破解方法:1、在360安全卫士里选择:功能大全->系统工具

2020-09-01 10:16:08 23706 13

原创 MySQL—普通索引、唯一索引与change buffer的关系

一、什么是change buffer当需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,InooDB会将这些更新操作缓存在change buffer中,这样就不需要从磁盘中读入这个数据页了。在下次查询需要访问这个数据页的时候,将数据页读入内存,然后执行change buffer中与这个页有关的操作。通过这种方式就能保证这个数据逻辑的正确性。需要说明的是,虽然名字叫作change buffer,实际上它是可以持久化的数据。也就是说,chan

2020-08-10 17:45:44 1046 2

原创 MySQL—索引失效

MySQL—索引失效一、 条件字段使用函数select count(*) from tradelog where ABS(a)=7;如果对字段做了函数计算,就用不上索引了,这是MySQL的规定。为什么会失效呢?对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能。1.1 隐式类型转换假设id类型为varchar(10),且建立了索引select * from tradelog where id=110717;上面这个SQL语句不会走索引而是全表扫描,因为id

2020-08-07 22:23:02 315

原创 MySQL—日志模块

事务日志redo log(重做日志)主要是用来保证数据的持久性什么是redo log我们知道InnoDB存储引擎是以页为单位来管理存储空间的,我们进行的增删改查操作其实本质上都是在访问页面(包括读页面、写页面、创建新页面等操作)。在真正访问页面之前,需要把在磁盘上的页缓存到内存中的Buffer Pool之后才可以访问。对于一个已经提交的事务,在事务提交后即使系统发生了崩溃,这个事务对数据库中所做的更改也不能丢失(事务的持久性)。但是如果我们只在内存的Buffer Pool中修改了页面,假设在事务提交

2020-08-07 22:22:31 180

原创 MySQL—MVCC

MySQL—MVCC接下来我们来详细讨论一下MVCC具体是怎样实现读已提交和可重复读这两种隔离级别的。什么是版本链我们前边说过,对于使用InnoDB存储引擎的表来说,它的聚簇索引记录中都包含两个必要的隐藏列(row_id并不是必要的,我们创建的表中有主键或者非NULL的UNIQUE键时都不会包含row_id列)请参考MySQL—InnoDB记录结构:trx_id:每次一个事务对某条聚簇索引记录进行改动时,都会把该事务的事务id赋值给trx_id隐藏列。roll_pointer:每次对某条聚

2020-08-07 22:19:13 258

原创 MySQL—SQL语句优化过程

MySQL—SQL语句优化过程我们平时写完一个SQL语句后,就扔给MySQL去执行了,在聊MySQL的基础逻辑架构的时候谈到过优化器,其实我们扔给MySQL执行的SQL语句不会立马执行,而是先交给优化器根据一些规则把这条SQL进行充分的优化以后才执行。下面就来聊聊优化器一些比较重要的优化规则。一、条件优化1.1 移除不必要的括号有时候表达式里有许多无用的括号,比如这样:((a = 5 AND b = c) OR ((a > c) AND (c < 5)))看着就很烦,优化器会把那些

2020-08-07 22:15:18 331

原创 MySQL—Explain详解

MySQL—Explain详解一条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。可以使用EXPLAIN命令来查看某个查询语句的具体执行计划如果我们想看看某个查询的执行计划的话,可以在具体的查询语句前边加一个EXPLAIN,就像这样:mysql> EXPLAIN SELECT 1;+----+-------------+-------+--

2020-08-07 22:12:51 323

原创 MySQL—记录头信息的秘密

MySQL—记录头信息的秘密在MySQL—InnoDB记录结构中简单说过记录头信息,现在我们来详细看一看每个属性都代表什么意思,还有具体的作用。一、记录头概述我们先创建一个表,并插入几条数据mysql> CREATE TABLE page_demo( -> c1 INT, -> c2 INT, -> c3 VARCHAR(10000), -> PRIMARY KEY (c1) -> ) CHA

2020-08-07 10:48:42 1919 1

原创 MySQL—InnoDB数据页结构

MySQL—InnoDB数据页结构概述它是InnoDB管理存储空间的基本单位,一个页的大小一般是16KB。我们表中记录都是存放在页中的,官方称这种存放记录的页为索引(INDEX)页。因为这种类型的页是用来存放表数据的,也可以称为数据页。一个InnoDB数据页的存储空间大致被划分成了7个部分,有的部分占用的字节数是确定的,有的部分占用的字节数是不确定的。如下图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fpFEMOwY-1596768467612)(.\images\

2020-08-07 10:48:06 1448 3

原创 MySQL中创建索引的一些注意事项

MySQL中创建索引的一些注意事项我们在建立索引时或者编写查询语句时应该注意的一些事项。只为用于搜索、排序或分组的列创建索引也就是说,只为出现在WHERE子句中的列、连接子句中的连接列,或者出现在ORDER BY或GROUP BY子句中的列创建索引。而出现在查询列表中的列就没必要建立索引了:SELECT birthday, country FROM person_name WHERE name = 'Ashburn';像查询列表中的birthday、country这两个列就不需要建立索引,我们只

2020-08-06 18:13:07 476

原创 MySQL的索引

MySQL的索引一、什么是索引,为什么要有索引?索引可以看做是一本书的目录,便于快速定位到想要查找到的内容。InnoDB管理存储空间的基本单位是页,每个页的默认大小为16KB。如果不使用索引进行数据查询在一个页中的查找假设目前表中的记录比较少,所有的记录都可以被存放到一个页中,在查找记录的时候可以根据搜索条件的不同分为两种情况:以主键为搜索条件这个查找过程我们已经很熟悉了,可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定的记录。以其他列作为

2020-08-06 18:10:38 152

原创 MySQL—InnoDB记录结构

MySQL—InnoDB的记录结构一、InnoDB页概述InnoDB是用来把内存中表的数据存储到磁盘上、把磁盘上的数据加载到内存中供用户使用的存储引擎。因为磁盘与内存的速度差了几个量级,所以InnoDB存储引擎在进行IO操作时,不可能一条一条记录进行读取或写入,如果一条一条记录进行IO的话,用户可能会骂娘。所以为了解决内存与磁盘速度不匹配问题,InnoDB采用的方式是:将数据划分为若干个页,这个页就是内存与磁盘交互的基本单位,即内存读取或写入一次磁盘,就是读取或写入若干个页,InnoDB中每个页的大小一

2020-08-06 18:06:46 680 2

原创 MySQL的基本逻辑架构

MySQL的基本逻辑架构从宏观上来看,MySQL基础架构可以分为:Server层和存储引擎层。Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。现在最常用的存储引擎是InnoDB,它从MySQL 5.5.5版本开始成为了默

2020-08-06 17:59:57 273

原创 MySQL—7种join

7种join示意图建表语句CREATE TABLE `tbl_emp` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) DEFAULT NULL,`deptId` int(11) DEFAULT NULL,PRIMARY KEY (`id`) ,KEY `fk_dept_id`(`deptId`))ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8;CREATE

2020-07-27 09:19:12 586

原创 MySQL—存储引擎

MySQL—存储引擎一、MySQL逻辑体系架构和其它数据库相比,MySQL 有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。MySQL整体逻辑架构图1.1 连接层最上层是一些客户端和连接服务,包含本地 sock 通信和大多数基于客户端/服务端工具实现的类似于 tcp/ip 的通信。主要完成一些类似于连接处理、授权认证、及相

2020-07-27 09:10:05 114

原创 MySQL—事务

MySQL—事务事务概念事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事物开始以前的状态;如果单元中的所有SQL语句均执行成功,则事物被顺利执行。事务的特性ACID原子性(Atomicity ):一个事务不可再分割,要么都执行要么都不执行一致性(Consistency):一个事务执行会使数据从一个一致状态切换到另外一个一致

2020-07-27 09:08:07 102

原创 MySQL—DDL语言

MySQL—DDL语言库和表的管理库的管理:创建库create database 【if not exists】 库名;修改库alter database 【if not exists】 库名 character set 字符集名;删除库drop database 【if not exists】 库名;#案例:创建库BooksCREATE DATABASE IF NOT EXISTS books ;#案例:更改库的字符集ALTER DATABASE books

2020-07-27 09:07:31 131

原创 MySQL—DML语言

MySQL—DML语言插入方式一语法:insert into 表名(字段名,…)values(值1,…);方式二语法:insert into 表名 set 列名=值,列名=值,…特点:1、字段类型和值类型一致或兼容,而且一一对应2、可以为空的字段,可以不用插入值,或用null填充3、不可以为空的字段,必须插入值4、字段个数和值的个数必须一致5、字段可以省略,但默认所有字段,并且顺序和表中的存储顺序一致SELECT * FROM beauty;#1.插入的值的类型要与列的类型一致或兼

2020-07-27 09:06:59 114

原创 MySQL—DQL语言

MySQL—DQL语言进阶1:基础查询语法:SELECT 要查询的东西【FROM 表名】;1.查询列表可以是:表中的字段、常量值、表达式、函数2.查询的结果是一个虚拟表格案例:#选择myemployees数据库USE myemployees;#1.查询表中的单个字段SELECT employee_id FROM employees;#2.查询表中多个字段SELECT employee_id,last_name ,email from employees;#3.查询

2020-07-27 09:06:22 153

原创 MySQL—入门

MySQL—入门数据库相关概念1、DB:数据库,保存一组有组织的数据的容器2、DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据3、SQL:结构化查询语言,用于和DBMS通信的语言数据库存储数据的特点1、将数据放到表中,表再放到库中2、一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。3、表具有一些特性,这些特性定义了数据在表中如何存储,类似java中 “类”的设计。4、表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列类

2020-07-27 09:05:08 74

原创 Linux系统中重启网卡失败

执行service network restart命令后出现下面的错误:Restarting network (via systemctl): Job for network.service failed because the control process exited with error code.See “systemctl status network.service” and “journalctl -xe” for details. [失败]网上最常见的几种做法如下:1.和 Net

2020-07-24 09:50:54 4762

原创 设计模式—原型模式

设计模式—原型模式一、 概述复制粘贴功能我们都用过,我们可以把一个文件从一个地方复制到另外一个地方,复制完成之后这个文件和之前的文件也没有一点差别,这就是原型模式的思想:首先创建一个实例,然后通过这个实例去拷贝创建新的实例。首先我们可以看到一共有三个角色:(1)Client 角色:客户类提出创建对象的请求;也就是我们用户使用复制粘贴的功能。(2)原始文件 角色:此角色定义了的具体原型类所需的实现的方法。也就是定义一个文件,说明一下它有被克隆复制的功能。(3)具体拷贝文件 角色:实现抽象原型角色

2020-07-17 17:38:12 101

原创 设计模式—工厂模式

设计模式—工厂模式工厂就是用来创建产品的,而从产品和产品族可以分为工厂方法和抽象工厂两种模式, 该模式用于封装和管理对象的创建,是一种创建型模式 。一、简单工厂模式(Simple Factory)简单工厂定义:定义了一个创建对象的类,由这个类来封装实例化对象行为(代码)简单工厂模式是属于创建型模式,是工厂模式的一种,简单工厂模式是由一个工厂对象决定创建哪一种产品类的实例,简单工厂模式是工厂模式家族中最简单实用的模式使用汽车生产来举例Car接口:定义汽车标准(Abstract Product)p

2020-07-17 17:37:04 220

原创 设计模式—单例模式

设计模式—单例模式一、概述所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例, 并且该类只提供一个取得其对象实例的方法(静态方法)。比如 Hibernate 的SessionFactory,它充当数据存储源的代理,并负责创建 Session 对象。SessionFactory 并不是轻量级的,一般情况下,一个项目通常只需要一个 SessionFactory 就够,这是就会使用到单例模式。单例模式有八种方式:懒汉式(线程不安全)【不要使用,线程不安全】懒

2020-07-17 17:35:18 230

原创 设计模式—7大设计原则

设计模式—7大设计原则一、设计模式的目的软件开发过程中,开发人员面临着来自代码间的耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序(软件)具有更好的:代码重用性 (即:相同功能的代码,不用多次编写)可读性 (即:编程规范性, 便于其他程序员的阅读和理解)可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护)可靠性 (即:当我们增加新的功能后,对原来的功能没有影响)使程序呈现高内聚,低耦合的特性分享金句:设计模式包含了面向对

2020-07-17 17:34:36 471

转载 HashMap的负载因子0.75跟泊松分布没有关系

https://blog.csdn.net/reliveIT/article/details/82960063

2020-07-17 11:12:07 565

转载 idea使用PlantUML插件,提示Cannot find Graphviz错误解决办法

强调一点,一定要重启idea看到好多博客没有说明这一点转载:https://blog.csdn.net/Yuan_Liqiang/article/details/103775152

2020-07-15 11:03:32 3478

原创 JVM—垃圾收集器详细介绍

JVM—垃圾收集器详细介绍7大垃圾收集器间的相互关系及说明两个收集器间有连线,表明它们可以搭配使用: Serial—Serial Old、Serial—CMS、 ParNew—Serial Old、ParNew—CMS、 Parallel Scaveng—Serial Old、Parallel Scavenge—Parallel Old、G1;其中Serial Old作为CMS 出现"Concurrent Mode Failure"失败的后备垃圾收集器。因为CMS是并发的垃圾收集器,当内

2020-07-12 16:02:20 515

原创 JVM—引用类型

JVM—引用类型Java里面的引用定义比较传统:如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址, 就称该reference数据是代表某块内存、 某个对象的引用。但是这个引用的定义,其实很笼统,虽然可能明白引用是什么意思,但是想一想如果对象只有引用跟没有被引用两种状态,有点狭隘。我们希望能描述这样一类对象: 当内存空间还足够时,则能保留在内存中;如果内存空间在进行垃圾收集后还是很紧张,则可以抛弃这些对象。 -【既偏门又非常高频的面试题】强引用、软引用、弱引用、虚引用有什么区别?具

2020-07-12 15:55:15 177

原创 JVM—垃圾收集器概述

JVM—垃圾收集器概述一、GC的分类垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。从不同角度分析垃圾收集器,可以将GC分为不同的类型。1.1 按线程数分在诸如单CPU处理器或者较小的应用内存等硬件平台不是特别优越的场合,串行回收器的性能表现可以超过并行回收器和并发回收器。所以,串行回收默认被应用在客户端的Client模式下的JVM中在并发能力比较强的CPU上,并行回收器产生的停顿时

2020-07-12 15:51:55 116

原创 JVM—垃圾回收相关概念补充

JVM—垃圾回收相关概念补充一、System.gc()在默认情况下,通过System.gc ()或者Runtime . getRuntime() .gc()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。然而System.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用。手动调用System.gc()后,GC不一定会立马执行垃圾回收操作。JVM实现者可以通过system.gc()调用来决定JVM的GC行为。而一般情况下,垃圾回收

2020-07-12 15:48:29 124

原创 JVM—HotSpot的算法细节实现

HotSpot的算法细节实现一、根节点枚举当前的JVM虽然在进行可达性分析时可以做到与用户线程并发执行,但是在根节点枚举时还是会导致STW (Stop The World),即暂时挂起所有用户线程。但根节点枚举始终还是必须在一个能保障一致性的快照中才得以进行(“一致性”的意思是整个枚举期间执行子系统看起来就像被冻结在某个时间点上, 不会出现分析过程中, 根节点集合的对象引用关系还在不断变化的情况), 若这点不能满足的话, 分析结果准确性也就无法保证。 这是导致垃圾收集过程必须停顿所有用户线程的其中一个

2020-07-12 15:47:35 432

原创 JVM—类加载机制

一、概述类加载子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识;ClassLoader只负责class文件的加载,至于它是否可以运行,则由执行引擎(Execution Engine)决定加载的类信息存放于一块成为方法区的内存空间。除了类信息之外,方法区还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)二、类加载过程加载、 验证、 准备、 初始化和卸载这五个阶段的顺序是确定的, 类型的加载过程必

2020-07-12 15:36:56 160

原创 JVM—日志参数

一、概述阅读分析虚拟机和垃圾收集器的日志是处理Java虚拟机内存问题必备的基础技能,下面列举一下学习过程中所接触到的日志参数-XX:+PrintGC:输出Gc日志。类似: 一verbose:gcjdk9后使用:-Xlog:gc-XX:+PrintGCDetails:输出GC的详细日志JDK 9之后使用-X-log: gc*-XX: +PrintGCTimeStamps:输出GC的时间戳(以基准时间的形式)-XX:+PrintGCDateStamps:输出GC的时间戳(以日期的形式,如2

2020-07-12 15:33:57 620 1

原创 JVM—架构图

2020-07-10 21:19:55 154

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除