自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构——树

二叉搜索树也称二叉查找树,或二叉排序树。定义也比较简单,要么是一颗空树,要么就是具有如下性质的二叉树:若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树;没有键值相等的节点。完全二叉树一颗深度为k二叉树,有n个节点,对这棵树进行编号,如果所有的编号都和满二叉树对应,那么这棵树是完全二叉树。满二叉树一个二叉树,如果每一个层的结点数都达到最大值,则这

2020-09-06 12:40:24 180

原创 Mybatis知识

Q:Mybatis中#{}和${}的区别是什么?A:#{}是预编译处理,${}是字符串替换。Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值;Mybatis 在处理时,就是把{}时,就是把时,就是把{}替换成变量的值。使用#{}可以有效的防止 SQL 注入,提高系统安全性。Q:讲下 MyBatis 的缓存?A:MyBatis 的缓存分为一级缓存和二级缓存,一级缓存放在 session 里面,默认就有,二级

2020-09-05 18:43:57 207

原创 事务问题

事务隔离级别(4种)读未提交存在脏读、不可重复读、幻读读已提交存在不可重复读、幻读可重复读存在幻读串行化直接无敌,所有的事务串起来一个个执行,因为没有并发的场景出现了,什么幻读、脏读、不可重复读统统都不存在的。但是同样的,基本并发能力会非常差。脏读:指一个事务读取了另外一个事务未提交的数据。假设A事务读取B事务尚未提交的数据,此时如果B事务发生错误并执行回滚操作,那么A事务读取到的数据就是脏数据。不可重复读:指一个事务在一次事务内多次读取的数据不一致。假

2020-08-11 00:11:45 218

原创 数据库知识详解

数据库知识详解Q:我看你简历上写到了熟悉MySQL数据库以及索引的相关知识,我们就从索引开始,索引有哪些数据结构?A:Hash、B+Q:为什么哈希表、完全平衡二叉树、B树、B+树都可以优化查询,为何Mysql独独喜欢B+树?A:哈希表的特点就是可以快速的精确查询,但是不支持范围查询。例如下sqlselect * from student where name = '张三';可以直接对‘张三’按哈希算法算出来一个数组下标,然后可以直接从数据中取出数据并拿到所对应那一行数据的地址,进而查询那

2020-08-03 09:46:19 310

原创 多线程全解

作为面试时提问的半壁江山,多线程一直是一大考点,写篇详细的全解,等面试的时候吊打面试官!加油,奥利给!多线程全解一、线程的几种状态New 新建状态Runnable 运行状态Blocked 阻塞状态(.sleep 抱着锁睡;.await 放开锁等待;)Waiting 等待(死等,不见不散)Timed_Waiting 等待(等一会儿,过时不候)Terminated 结束二、创建线程的几种方式继承Thread类实现Runnable接口,实现run()方法(最简单,最常用)示例:

2020-06-01 08:50:12 160

原创 JVM体系结构概述

JVM体系结构概述一、类加载器ClassLoader相当于一个快递员,用来将物理硬盘中的class文件加载进JVM(中的方法区),JAVA自带的类加载器有三个(除了自带的,用户也可以集成ClassLoad抽象类自定义加载器)1、启动类加载器(Bootstrap)加载Jdk自带的类时(jre/lib/rt.jar包下的类,常用:Object、String、ArrayList)使用启动类加载器,使用C++编写;2、扩展类加载器(Extension)加载扩展包中的类(jre/lib/ext/*.ja

2020-05-26 23:04:03 325

原创 函数式接口

函数式接口概念:函数式接口就是一个有且只有一个抽象方法的接口(可以有其他非抽象的方法)。在jdk8以后,在java.util.function包下新增了一大堆接口,都是函数式接口,代表了接口调用的各种不同应用场景。主要包括四大核心函数式接口:消费型接口(Consumer<T’>,泛型参数,返回值为空)Consumer<String> consumer = s -> { System.out.println(s); };consumer.accept("cjq");

2020-05-26 00:01:11 132

原创 Stream流

JDK8新特性:lambada、函数式编程、Stream流,这章我们来讲讲Stream流,建议lambada、函数式编程不熟悉的同学还是先补一下这俩,不然会一脸懵逼!Stream流概念Stream流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。即,集合讲的是数据存储,流讲的是数据计算!也可以理解为,流 就是运行在java中的sql语句。一、 流的生成方法Collection接口的stream()或parallelStream()方法静态的Stream.of()、Stream.e

2020-05-25 23:58:53 145

原创 堵塞和非堵塞 | 同步与异步

堵塞和非堵塞 | 同步与异步故事:老王烧开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。有好几种等待方式:1.老王用水壶煮水,并且站在那里,不管水开没开,盯着水壶看水开了没。-同步阻塞2.老王还是用水壶煮水,不再傻傻的站在那里看水开,而是开始一边玩手机一边等水开,每隔一段时间看看水开了没有,水没有开就继续刷手机。-同步非阻塞3.老王还是使用响水壶煮水,跑到客厅上网去,等着响水壶自己把水煮熟了以后通知他。-异步非阻塞以上的烧开水故事,一共有三个对象,分别是:老

2020-05-20 00:32:45 165

原创 ArrayList 全解

HashMap全解有了,Redis全解有了,今天来个简单的ArrayList全解!废话不多说,开问!ArrayList底层是什么?ArrayList底层就是一个Object类型的数组。ArrayList初始容量?ArrayList 初始容量为0,第一次add之后扩容为10,类似懒加载。ArrayList扩容机制,每次扩容多少?每次扩容为当前容量的1.5倍。扩容拷贝使用方法?使用的是...

2020-04-30 16:03:57 316

原创 聊一聊Spring

当年的我,刚学Spring的时候,会想:这『IOC和AOP』是什么鬼玩意啊?一大堆的名词「控制反转」「依赖注入」「面向切面编程」。这是在给我搞笑的吧。在最开始学的IOC折腾了一大堆的玩意,结果就是在管「创建对象」的事??逗我呢???我直接new一个对象出来不香吗?有这种想法这种明显就是「代码写得少了,想得多了」Spring IOC(Inversion of Control)Spring I...

2020-04-19 17:45:05 224

原创 源码分析Spring请求执行流程

由于疫情的原因,今年的清明节实属凄凉,让我们为负重前行的英雄们,默哀。。。。一直在用Spring,但是从来没考虑过前端的请求是如何调用到Controller中的方法的,只在网上看看别人的回答,今天呢,游戏也不让玩,闲来无事翻了翻Spring请求的源码,在此做个小总结:网图整楼咱做java开发的,对这张图大家应该都不陌生:首先前端控制器接收请求,然后前端控制器调用处理器映射器…朗朗上口,倒...

2020-04-12 19:01:48 413

原创 JVM升级——GC

前言大疫情影响下的互联网公司,没有了从前的交头接耳,没有了往日的吵吵闹闹。大家都戴着口罩,安安静静的敲着键盘,唯恐附近的就有病原体。工作量也是断崖式下跌,去年年底还是天天加班到凌晨的状态,现在上班划划水,下班到点走人,两个字,舒服~~Java 相比 C/C++ 最显著的特点便是引入了自动垃圾回收 (下文统一用 GC 指代自动垃圾回收),它解决了 C/C++ 最令人头疼的内存管理问题,让程序员...

2020-03-12 17:50:06 671

原创 乐观锁和悲观锁

前言:关于线程安全一提到可能就是加锁,在面试中也是面试官百问不厌的考察点,往往能看出面试者的基本功和是否对线程安全有自己的思考。那锁本身是怎么去实现的呢?又有哪些加锁的方式呢?一 、乐观锁乐观锁,顾名思义就是比较‘乐观’,类似于:我相信你不会渣我!就是说认为数据总是不会被更改。CAS(Compare And Swap 比较并且替换)就是乐观锁的一种实现方式,是一种轻量级锁。CAS 是怎...

2020-03-09 23:36:56 422

原创 Redis工具类——JedisUtils

        今天写程序的时候碰到一个需求:根据电话号码,到redis中模糊查询有关的数据。本来以为很轻松的需求,结果上手之后发现当前项目里用的redis客户端(类)是ShardedJedis,不断测试并查询了全网,最后得到结论——ShardedJedis没有keys(模糊查询)方法。  &n...

2020-02-28 19:23:16 1770

原创 浅拷贝和深拷贝分析

在学习原型设计模式时,了解到对象克隆的概念,特地新出一篇博客详细记录一下。1、浅拷贝       对于数据类型是基本数据类型的成员变量,浅拷贝会直接进行值传递,也就是将该属性值复制一份给新的对象。对于数据类型是引用数据类型的成员变量(数组或类对象等),那么浅拷贝会进行引用传递,也就是将该成员变量的内存地址复制一份给新的对象。两个对象的该成员变量都指向...

2020-02-15 17:06:06 106

原创 一图搞懂UML类图

2020-02-08 15:42:33 185

原创 JAVA设计模式

写在前面:很多老程序员、前辈都说,要往高深的方向走,算法和设计模式都是必须掌握的。说来惭愧,开发一年多,对于设计模式只知道简单的懒汉式饿汉式,外面疫情肆虐,刚好补充一下自己的短板,让自己不再拘于增删改查,在开发道路上走的更远!设计模式的七大原则设计模式原则,就是 设计模式为什么要这样设计的依据。也是程序员在变粗时应当准守的原则。单一职责原则对类来说的,即一个类应该只负责一项职...

2020-02-06 19:23:56 100

原创 int数据类型

问:int数据类型的大小?解答:int的范围是 - 2 ^ 31 ~2 ^ 31 - 1; 也就是:[-2147483648, 2147483647]。问:int类型占4个字节共32位,也就是说最大是1111 1111 1111 1111 1111 1111 1111 1111,即2^32-1,那么为什么说最大是2 ^ 31 - 1?解答:int类型为32字节,但是第一字节所表示的值...

2020-02-04 16:55:30 3023 2

原创 HashMap全解

疫情肆虐,时间空余,将HashMap源码看了看,加上之前的知识,总结了一篇针对hashMap的常见问题,放在这里分享,如理解有误,请留言指正。

2020-02-04 12:06:17 638

原创 spring事务失效场景

spring事务失效场景添加@Transactional后的方法,不会直接操作数据库,例如保存方法,在执行完保存语句后,数据库并没有出现该数据,只有方法结束之后,才会正式保存到数据库。1、首先使用如下代码 确认你的bean 是代理对象吗?必须是Spring定义(通过XML或注解定义都可以)的Bean才接受事务。直接new出来的对象添加事务是不起作用的。可以通过以下方式判断是否是代理对象:...

2020-01-11 15:23:23 4769

原创 小技巧——获取当前连接的wifi密码

获取当前连接的wifi密码现在,我们的设备都非常智能,在第一次连接wifi输入密码后都会自动连接,以至于我们时常忘记家里的wifi密码,家里突然来了亲戚朋友,又一时想不起密码,贼尴尬!这边保存两个获取当前连接密码的小技巧,让你密码无忧!移动端打开手机上的wifi管理,长按当前连接的wifi,此时会弹出一个二维码,如图截屏该二维码,然后使用微信扫一扫,会出现当前的页面,如图获取的信...

2019-12-17 13:20:08 827

原创 Redis全解

Redis一、redis常用命令1、值类型操作:设置值:redisTemplate.boundValueOps(“name”).set(“itcast”);取值:redisTemplate.boundValueOps(“name”).get();删值:redisTemplate.delete(“name”);2、Set类型操作:(特点:存取无序)增:redisTemplate....

2019-07-07 23:04:19 1499 1

原创 浅谈get请求和post请求的区别

浅谈get请求和post请求的区别今天所听闻的get、post的请求区别,有点颠覆之前对他们的认知,作为第一篇文章发布并巩固一下一、如果今天之前,有面试官问我:“get、post请求区别是什么?”二、今天之后,有面试官再问我这个问题,我会在结尾加一段‘正确答案’三、此时,又有同学会问:“既然他俩本质上是一样的,为啥要多此一举,创建这么多请求方式?”今天所听闻的get、post的请求区别,有点颠覆...

2019-06-26 13:00:53 210

空空如也

空空如也

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

TA关注的人

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