自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 JVM运行时数据区 --- 堆

JVM运行时数据区 — 堆堆的核心概述首先 我们先了解堆空间位于运行时数据区的哪一个位置在这里我们强调一个概念 一个进程对应一个JVM实例 一个JVM实例对应一个运行时数据区 运行时数据区独立的只有一个方法区和一个堆 也就是说一个进程里的多个线程要共享一个方法区和堆空间 而每个线程各自拥有一份程序计数器 本地方法栈 和 虚拟机栈Java虚拟机规范中对Java堆的描述是 所有的对象实例和数组都应该在运行时分配在堆上数组和对象可能永远不会存储在栈上 因为栈帧当中保存引用 这个引

2020-07-05 12:48:02 280

原创 垃圾回收器

垃圾收集器7款经典垃圾收集器与垃圾分代之间的关系垃圾收集器的组合关系(更新到JDK14)Serial 回收器 串行回收在HotSpot虚拟机中 使用 -XX: UseSerialGC 可以指定年轻代和老年代都使用串行收集器等价于 新生代使用Serial GC 且老年代使用Serial Old GCSerial 收集器是一个新生代的垃圾收集器Serial 收集器采用复制算法 串行回收和stop-the-world机制Serial Old收集器也采用串行回收和stop-t

2020-07-05 12:40:32 214

原创 二维平面上使用回溯算法

二维平面上使用回溯算法LeetCode79 单词搜索给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCED", 返回 true给定 word = "SEE", 返回 true

2020-06-23 22:25:58 323

原创 LeetCode130 记录一次 java.lang.StackOverflowError的情况

LeetCode130 记录一次 java.lang.StackOverflowError的情况首先贴上错误贴图看到这里作者还不太明白 直到看到了官方的测试用例就恍然大悟当我们把我红框选中的代码注释之后 也就是在我的第一次错误代码的情况之下 就会发生这个栈溢出的情况,我们来分析一下 如果我们进入了第二行 第一列这个O的dfs当中 我们根据代码就会去比较这个O的上下左右4个方向 如果我们加上我注释的这句代码 由于第二行 第一列这个O的上方的处于[1,1]位置的O已经把标志位修改成true 此时便不

2020-06-23 22:14:33 322

原创 递归与回溯

递归与回溯给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。输入: "aab"输出:[ ["aa","b"], ["a","a","b"]]LeetCode 131class Solution { public List<List<String>> partition(String s) { List<List<String>> result=new Arra

2020-06-23 15:15:29 116

原创 LeetCode113 记录一次因为提前return而导致的错误

LeetCode131 记录一次因为提前return而导致的错误首先贴上错误的截图这里 我认为这个错误原因还是有必要记录和分析一下的我们发现 在我们的输出测试中 多了1个4,也就是说4并没有被remove掉 通过分析发现 这里因为我在红框选中的地方提前return了正常情况下 当我们找到一条5 4 11 2 这个路径之后 我们要在temp数组当中把2 remove掉 可是根据我的错误的代码 在找到5 4 11 2 这个路径之后 我却直接把他return了 我们看这个图 这个图展示了正确

2020-06-22 17:33:56 247

原创 动态规划与递归

动态规划与递归有一个楼梯 总共有n个台阶 每次 可以上一个台阶 也可以两个台阶 问 爬上这样的一个楼梯 一共有多少种不同的方法递归+记忆化搜索package com.zyk;public class ClimbStairs { public static int climbStairs(int n){ int[] memo=new int[n+1]; for (int i = 0; i <n+1 ; i++) {

2020-06-15 20:57:17 115

原创 二叉树与递归

二叉树与递归求一个二叉树的最深高度(从根节点到某一个叶子节点的最长路径的长度)public class Solution { public int TreeDepth(TreeNode root) { if(root==null){ return 0; } int leftTreeDepth=TreeDepth(root.left); int rightTreeDepth=TreeDep

2020-06-15 20:53:11 102

原创 Mysql-索引失效 order by优化

Mysql-索引失效 order by优化索引失效最佳左前缀法则如果索引了多列 要遵循最佳左前缀法则 指从查询索引的最左前列开始并且不跳过索引中的列不在索引列上做任何操作 会导致索引失效而转向全表扫描不能使用索引中范围条件右边的列尽量使用覆盖索引在使用不等于(!=或者<>)的时候 无法使用索引会导致全表扫描is null 和is not null也无法使用索引lile以通配符开头 会造成索引失效变成全表扫描

2020-06-12 22:30:22 8050 1

原创 Mysql索引

Mysql索引索引的相关概念Mysql索引是什么数据库系统还维护这满足某种特定查找算法的数据结构 这些数据结构以特定的方式指向数据 这种数据结构就是索引看一个例子:上图展示了一种可能的索引方式。左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可以运用二叉查找获取到相应数据索引的优点1)提高检索效率,降低I/O成本2)通过索引对数据

2020-06-11 21:51:24 159

原创 Mysql性能分析-Explain

Mysql性能分析-Explain一·Explain是什么使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈二·Explain分析字段解释id含义:1)select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序三种情况:1)id相同,自上而下顺序执行2)id不同,如果是子查询,id序号会递增,id值越大优先级越高,越先被执行3)id相同不同同时存在,按id值分组

2020-06-11 19:21:14 335

原创 Mysql 事务

Mysql 事务的介绍事务的定义​ 一个或者一组sql语句组成了一个执行单元 这个执行单元要么全部执行 要么全部不执行事务的ACID属性原子性 (atomic)原子性指事务是一个不可分割的工作单位 事务中的操作要么全部发生 要么全部不发生一致性 (consistency)事务必须使数据库从一个一致性状态转换到另一个一致性状态隔离性 (isolation)隔离性是说一个事务的执行不能被其他事务干扰 即一个事务内部的操作及使用的数据对并发的其他事务

2020-06-07 12:53:47 139

原创 Redis解决并发的方案

Redis解决并发的思路Redis中的数据存储策略企业中的数据存储策略 其核心就是设计Key这里我们的Key的设计是数据对象名:数据对象id:对象属性Key ---- Sku:108:infoRedis解决并发的简单代码实现 @Override public PmsSkuInfo getSkuById1(String skuId) { PmsSkuInfo pmsSkuInfo=new PmsSkuInfo(); //链接缓存

2020-06-06 18:12:05 1153 1

原创 Mysql分组查询 连接查询 子查询 分页查询

Mysql分组查询案例一 查询每个工种的最高工资SELECT MAX(salary),job_idFROM employeesGROUP BY job_id;案例二 查询每个位置的部门个数SELECT COUNT(*),location_idFROM departmentsGROUP BY location_id;案例三 查询邮箱中包含a字符 每个部门的平均工资SELECT AVG(salary),department_idFROM employeesWHERE

2020-06-05 16:14:33 171

原创 场景:如何根据被筛选出的商品查出他们的平台属性列表? 平台属性和面包屑请求的分析?排除被选中的平台属性组?

场景:如何根据被筛选出的商品查出他们的平台属性列表? 平台属性和面包屑请求的分析?排除被选中的平台属性组?如何根据被筛选出的商品查出他们的平台属性列表?明确一个概念 根据三级分类id查询出的平台属性的集合和被筛选的商品平台属性集合是不同的我们先明确这个概念 我们通过电商网站实例来分析一下这张图片是我们进入手机这个三级分类id后所展示的平台属性及其值的集合这张图片展示了我们在搜索框输入ipone后 所有筛选出来的iPhone手机的平台属性及平台属性值的集合我们看到 当在搜索框输入一个具体的ke

2020-05-20 12:04:29 283

原创 Redis异常报错:redis.clients.jedis.exceptions.JedisException Could not get a resource from the pool

Redis异常报错:redis.clients.jedis.exceptions.JedisException: Could not get a resource from the pool贴出错误截图大家看错误日志分析的时候一定要细心 把关键节点的错误信息看清楚 再去找资料的时候仔细比对错误好 进入正题 解决方法是Redis拒绝我们是因为redis.conf配置文件中默认打开bind 127.0.0.1 我们要把他注释掉注释之后 我们重启这里去读了我们自己的配置文件但是发现还是报错

2020-05-13 23:26:00 1038

原创 mysql插入中文变成问号???的问题 傻瓜式解决步骤

mysql插入中文变成问号???的问题在mysql的命令行运行如下的命令show variables like ‘%char%’;这里的原因是latin1这个东西在作怪如果我们看到valule这一列都是gbk或者utf8的话 我们的插入中文就是正常的我们看一下正常的结果解决问题的办法是在mysql的配置文件my.ini中添加几个配置作者的电脑中这个mysql安装在了c盘 这个my.ini文件被放在一个隐藏目录下面所以找到它费了一些功夫我们先说明怎么找到这个my.ini文件按照这个

2020-05-09 18:10:45 843 2

原创 Cause java.lang.InstantiationException tk.mybatis.mapper.provider.base.BaseSelectProvider

Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProviderbug分析在MapperScan导包的时候出现了问题这个是不对的

2020-05-02 11:08:17 660

原创 Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect

Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect连接zookeeper时报错Session 0x0 for server null, unexpected error, closing socket connection and attempting...

2020-05-01 21:13:57 968

原创 浅析ReentrantLock实现原理

从0到1 怎样凭空设计一个ReentrantLock—浅析ReentrantLock实现原理自己动手设计一个ReentrantLock的思路演化倘若真的就让我们凭空实现一把锁出来 我们应该怎样设计这把锁呢?这里提供了几种伪代码思路实现思路的伪代码—自旋 volatile int status=0;//标识 0是无锁状态 1是上锁状态 void lock(){ ...

2020-04-29 17:00:50 233

原创 浅析ConcurrentHashMap

面试官:HashMap线程不安全 怎么解决?你来说说ConcurrentHashMap (JDK7)从构造方法探寻ConcurrentHashMap的数据结构我们先大概看一张图 让大家先有一个认识 在去通过构造方法深入的分析这里 我们要去了解到 ConcurrentHashMap 由一个个的Segment组成 而一个个的Segment由一个个HashEntry组成 每个HashEnt...

2020-04-26 18:33:04 218

原创 一文浅析---从面试题连环炮的角度梳理HashMap

一文浅析—从面试题连环炮的角度梳理HashMap你了解HashMap的底层数据结构吗?对于HashMap的底层数据结构在Java7和Java8中的实现是不同的,在Java7中是采用数组+链表的数据结构进行实现,而在Java8中是采用数组+链表+红黑树的数据结构实现的。说时迟那时快,刚话说完,从兜里拿出笔和纸,啪地一声放在桌子上画了起来,许久之后,出现了两幅jdk7和jdk8的HashMap的...

2020-04-22 18:16:27 770

原创 GC的4种算法

GC的4种算法复制算法我们先来看一张原理图明确发生的作用域年轻代中采用的Minor GC 这种GC算法采用的复制算法过程分析当GC开始后 对象只会存在于Eden和From区 而To区是空的 紧接着进行GC Eden中所有存活的对象和From中没有到阈值的对象被复制到To区 这个时候Eden和From区的对象已经被清空了 这个时候From和To区会交换他们的角色 也就是新...

2020-04-21 19:11:22 1370

原创 OOM异常后GC收集日志信息

OOM异常后GC收集日志信息我们先对-Xms -Xmx等参数做一个设置 方便来出现OOM异常(我们将堆的大小设定为10m)我们的测试代码package com.zyk;import java.util.Random;public class JVMTest { public static void main(String[] args) throws Exception{...

2020-04-21 14:33:59 571

原创 linux下安装jdk并配置环境变量

linux下安装jdk并配置环境变量首先通过xftp将jdk上传到/opt下解压到opt下(这里作者一开始忘记截图了 所以换了个目录 但是命令没变)查看解压后的结果配置环境变量测试是否成功...

2020-04-19 15:57:31 136

原创 关于at tk.mybatis.spring.mapper.SpringBootBindUtil$SpringBoot2Bind.bind(SpringBootBindUtil.java129)

at tk.mybatis.spring.mapper.SpringBootBindUtil$SpringBoot2Bind.bind(SpringBootBindUtil.java:129) ~[mapper-spring-boot-autoconfigure-1.2.3.jar:na]异常信息如下java.lang.RuntimeException: java.lang.reflect.I...

2020-04-17 10:46:02 459

原创 AVL平衡二叉树(java)

AVL平衡二叉树引入因为二叉搜索树不存在平衡算法,所以在某些特殊的情况下,二叉搜索树等同于线性,出现蹩脚的情况,设计者们发现降低树的高度自然就可以提高查找效率。那么如何解决降低树的高度的问题?在这种基础上设计者给二叉树加入了平衡算法,出现了平衡树。我们来看一下avl树的左旋过程首先我们将处理左旋的代码注释掉 看一下结果package com.zyk;class Node{...

2020-04-16 18:55:50 160

原创 二叉排序树(java实现)

二叉排序树(BST)二叉搜索树,倒状的树形结构。如下图所示特点:所有的非叶子节点最多拥有两个子节点树(左子树和右子树)。所有结点存储一个关键字。节点的左右儿子,左边是比该节点小的,右边是比该节点大的。package com.zyk;class Node{ int value; Node left; Node rigth; public Nod...

2020-04-16 18:45:18 136

原创 JVM运行时数据区之---虚拟机栈

JVM运行时数据区之—虚拟机栈我们首先来看一下运行时数据区的大体结构 了解虚拟机栈处于运行时数据区的哪一部分我们初步对于虚拟机栈有了一个了解 下面我们对它做一个深入一点的学习Java虚拟机栈是什么定义主管Java程序的运行,线程独享(私有)生命周期 随着线程的创建而创建,随着线程的消亡而消亡,不会被GC回收注意 每个线程在创建的时候都会创建一个虚拟机栈 每一个虚拟机栈的内部保...

2020-04-16 17:19:44 163

原创 双亲委派机制

双亲委派机制首先我们认识一下双亲委派机制我们来一个代码案例package com.zyk;public class Test { public static void main(String[] args) { Test test=new Test(); System.out.println(test.getClass().getClassLoa...

2020-04-15 11:11:18 140

原创 Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually

idea关联mysql失败:Server returns invalid timezone. Go to ‘Advanced’ tab and set ‘serverTimezone’ property manually.错误进入dos之后,首先输入: mysql -uroot -p (前提设置了mysql的环境变量)回车:屏幕提示输入你的数据库连接密码 :如 1234然后输入:set gl...

2020-04-14 23:16:28 191

原创 Java 类的初始化和实例的初始化

Java 类的初始化和实例的初始化类的初始化一个子类初始化要先初始化他的父类一个类初始化就是执行方法这里我们注意 这里的初始化是对静态变量和静态代码块进行初始化 而他们两执行的先后顺序就是看谁写在前面 谁写在后面实例的初始化实例的初始化就是执行方法方法由3部分组成 分别是 非静态的实例变量 非静态代码块 对应构造器代码组成非静态实例变量的赋值和非静态代码...

2020-04-14 18:14:39 270

原创 动态代理

动态代理理解这个问题之前 我们先来复习一下通过反射怎么调用运行时类的指定的方法先来一个Person类package com.zyk;public class Person { private int id; private String name; private String show(String nation){ System.out.p...

2020-04-10 23:11:16 105

原创 Java 反射

Java 反射关于java.lang.Class类的理解类的加载过程代码经过javac.exe命令之后 会生成一个或多个字节码文件(.class结尾)接着我们使用java.exe命令对某个字节码进行解释运行 相当于某个字节码文件加载到内存中 此过程叫做类的加载 加载到内存中的类 我们叫做运行时类 此运行时类 即叫做Class的一个实例换句话说 Class实例对应着一个运行时类...

2020-04-10 16:35:34 107

原创 静态代理

静态代理静态代理的基本介绍为一个对象提供一个替身 以控制对这个对象的访问 即通过代理对象访问目标对象 这样做的好处是在目标对象实现的基础上 扩展目标对象的功能大致流程静态代理的大致流程定义一个接口目标对象实现该接口代理对象也实现该接口调用的时候使用代理对象的方法来调用目标对象我们来看一个具体案例接口package com.zyk;public interfa...

2020-04-09 16:03:22 111

原创 生产者消费者问题 传统版+Lock版

题目 现在有生产者消费者两个线程 可以对初始值为0的一个变量进行操作​ 实现生产者线程对该变量加1 消费者线程立刻对该变量减1​ 实现交替 来10轮 (我们要求生产1个后 马上就进行消费)(消费一个后 就马上进行生产)注意 生产者加1之后 消费者立马减1 结果应该是 1 0 1 0 1 0 …传统版package com.zyk;//资源...

2020-04-05 22:59:57 84

原创 Synchronized和Lock的区别

Synchronized和Lock的区别我们首先先大致的说一下他们的区别 然后举ReentrantLock实现精确唤醒的例子synchronized是关键字 属于JVM层面Lock是具体类 (java.util.concurrent.Locks.Lock)synchronized 不用用户去手动释放锁 当synchronized代码执行完成之后会自动让线程释放锁的占用Reent...

2020-04-05 22:38:40 94

原创 生产者消费者问题 阻塞队列版

生产者消费者问题 阻塞队列版package com.zyk;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.Ato...

2020-04-05 22:22:42 109

原创 阻塞队列

组成介绍种类分析jdk提供了7个阻塞队列 分别是ArrayBlockingQueue :由数组结构组成的有界阻塞队列LinkedBlockingQueue :一个由链表结构组成的有界阻塞队列PriorityBlockingQueue :一个支持优先级排序的无界阻塞队列DelayQueue:一个使用优先级队列实现的无界阻塞队列SynchronousQueue:一个不存储元素的阻塞...

2020-04-04 10:42:22 95

原创 可重入锁+自旋锁+读写锁

可重入锁我们来看什么是可重入锁可重入锁的核心意思 是同一个线程在外层方法获取锁的时候 在进入内层方法会自动获取锁这里我们分别举synchronized 和 ReentrantLock的例子synchronized是可重入锁package com.robot;class Phone{ //外层方法 public synchronized void sendMes() {...

2020-04-04 10:36:21 183

空空如也

空空如也

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

TA关注的人

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