自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL各种锁详细介绍

文章目录数据库锁1. 全局锁1. 全局锁的特点2. 全局锁的作用(全库逻辑备份)2. 表级锁1. 表锁1. 特点2. MDL元数据锁(metadata lock)1. 特点3. MDL锁的坑————给一个小表加字段1. 问题描述2. 解决方法3. online ddl(ddl:更改表结构)3. 行锁1. 行锁特性2. 两阶段锁协议4. 死锁1. 处理死锁策略2. 死锁检测(⭐)3. 典型案例(CP...

2019-11-26 22:51:25 761 1

原创 MySQL事物实战篇

文章目录MySQL事物实战篇1. 案例一2. 案例一结果分析3. 一致性视图原理3. 结论MySQL事物实战篇前面一篇博客已经了解了事物的一些特征,这里先来看如下的一个执行流程:1. 案例一先创建表:mysql> create table k ( -> id int primary key, -> k int(11) not null) -&gt...

2019-11-26 22:28:06 352

原创 Spring MVC 实用 tips

文章目录1. 如何制定数据类型转换器1. 日期类型的转换2. 自定义类型的转换1. 如何制定数据类型转换器使用 Spring MVC 框架进行 Web 开发时,前端页面传输的数据会自动封装到业务方法的参数中,这项工作是由 HandlerAdapter 组件完成的。1. 日期类型的转换我们知道 HTTP 表单中的所有请求参数都是 String 类型的,如果业务方法的参数是 String 或者...

2019-11-25 21:40:51 300

原创 探讨多线程数量的选择

文章目录1. 操作系统相关知识概述2. 使用多线程的目的3. 如何利用多线程提升CPU和IO的综合利用效率4. 理论上如何创建合适数量的线程1. I/O密集型2. CPU密集型5. 实际中线程数的分析1. 操作系统相关知识概述首先介绍一下操作系统中CPU和核心数的概念,在每个计算机中,单核或者多核都是针对单个CPU而言,即这个多核或者单核已经集成在CPU内部了,不要理解成每个CPU中只有一个核...

2019-11-25 12:51:24 1112

原创 详解网络

网络文章目录网络1.网络名词解释1. IP地址和端口号2. 网络协议3. OSI七层参考模型1. 介绍2. 为什么OSI模型没得到广泛运用?3. 每层含义4. TCP/IP模型 (⭐)1. TCP/IP和OSI的联系与区别2. 每层含义3. TCP/IP模型的不足2. 数据传输流程1. 封装与解封装2. 具体流程⭐**1.应用层**1. HTTP协议1. 概述2. 版本更新特点最初版本HTTP1...

2019-11-24 09:13:29 930

原创 JavaScript的DOM和BOM编程

文章目录1. BOM编程(了解学习)1. 窗口对象:window2. 地址栏对象:location3. 历史记录对象:history4. 屏幕对象:screen2. DOM编程1. DOM编程入门2. 获取标签对象的三种方式1. document集合属性来获取标签对象2. 查询节点关系来获取标签对象3. 通过document对象的方法获取⭐(最常用)3. js的事件编程1. 事件基础案例2. 常用...

2019-11-19 11:59:32 356

原创 Future类之案例上手解析

文章目录1. 线程池submit方法解析(Future接口)2. FutureTask类1. API概览2. 简单使用栗子3. 实现最优版的烧水泡茶3. CompletableFuture类1. 异步化2. API概览3. 如何创建CompletableFuture对象之前在线程池的使用时,已经了解到当提交的任务需要获取返回值的时候,就需要用到submit这个方法进行任务的提交,而不是execu...

2019-11-18 15:25:10 241

原创 基于WebSocket的网页版聊天室项目

web聊天室项目本次项目的目录结构:dao层:对数据库的CURD操作;对应本次项目的用户模块的注册与登陆; (注册就是对数据库进行insert操作,登陆就是对数据库进行查询操作)service层:处理具体的业务;controller:(1)调用service获取数据返回给客户端;(2)从客户端获得数据调用业务处理;前端首界面:<!DOCTY...

2019-11-17 12:11:28 655

原创 Socket编程快速入门实战

文章目录1. Socket编程(网络编程)具体步骤1. ServerSocket1. 构造方法2. accept方法2. Socket1. 构造方法2. 常用方法2. 单线程的聊天室1. 代码2. 注意点1. Socket编程(网络编程)在Java中,Socket为java.net包下的一个类;中文翻译为套接字 ,套接字使用TCP提供了两台计算机之间的通信机制;客户端创建一个套接字,并尝试连...

2019-11-16 13:35:19 472 1

原创 JavaScript入门干货

文章目录1. Js概述1. js的引用方式JS的表单验证是重点!!⭐2. JS的由来(为什么需要JS)3. BOM和DOM编程1. BOM编程(了解即可)1. Js基础语法1. JS基础语法和数据类型2. js的类型转换函数3. js中的运算符4. js中的流程控制语句5. js中的for - in 语句2. js内置对象1. Date对象1. 网页时钟的实现2. String 对象(字符串对象)...

2019-11-14 10:50:52 626

原创 Java实现生产者与消费者模型

文章目录1. wait与notify方法2. 单线程版生产与消费者模型3. 完备的生产与消费者模型⭐1. wait与notify方法这两个方法实现线程间同步(通信);调用wait()和notify()方法都需要先获取到该对象的Monitor锁,即调用这两个方法必须包含在synchronized代码块中;每一个对象都有两个队列:黄色部分正是证明了: 在线程被notify方法唤醒后,并不会...

2019-11-14 10:43:41 609

原创 MySQL索引由浅入深

文章目录MySQL索引1. 索引的常见模型1. hash表索引2. 数组索引(有序数组)3. 二叉搜索树2. InnoDB的索引模型(B+树)⭐1. 索引分类2. 索引维护3. InnoDB索引使用规范4. 覆盖索引3. 索引的创建和删除MySQL索引索引是存放在模式(schema)中的一个数据库对象,虽然索引总是从属于数据表,但他也和数据表一样属于数据库对象;创建索引只有一个目的:加速...

2019-11-10 20:25:32 145

原创 线程池源码剖析——深入理解线程池

线程池源码剖析1. 手写一个简单线程池目前业界线程池的设计,普遍采用的都是生产者——消费者模型,线程的使用方是生产者,而线程池就是一个消费者;下面来设计一个简易的线程池MythreadPool,它的设计原理跟我们的ThreadPoolExecutor的设计思想是一致的;class MythreadPool { //用阻塞队列来保存任务 BlockingQueue<Ru...

2019-11-07 20:41:21 181

原创 线程池

线程池文章目录线程池0.线程池优点(⭐)1.线程池各种接口框架:2.线程池的执行原理3.如何创建一个线程池4.向线程池中提交任务1.用execute()方法提交,没有返回值2.用submit()方法提交任务,带有返回值5.线程池的关闭(⭐)优雅的关闭线程池(⭐)6.合理配置线程池7. 典型问题1.ThreadPoolExecutor 有哪些常用的方法?3.在 ThreadPool 中 submi...

2019-11-07 12:39:20 224

原创 适配器模式

文章目录1. 定义和结构图2. 栗子1. Java中的适配器2. 三种适配器模式(⭐)1. 类适配器模式2. 对象适配器3. 接口适配器3. 适配器的使用场景1. 定义和结构图适配器模式的定义:将一个类的接口转成客户期望的另外一个接口,适配器模式使得原本由于接口不匹配而不能一起工作的那些类可以一起工作;适配器模式的结构图:如图所示:Client不能直接访问Adapter;A...

2019-11-07 08:52:05 193

原创 并发无锁工具类——原子类

文章目录1. 原子类的简单运用和原理1. 用原子类来解决简单的原子性问题2. 无锁方案的实现原理3. 案例具体细节解释4. Java中实现CAS的源码⭐2. 原子类概览1. 原子化的基本数据类型2. 原子化的对象引用类型1. 原子类的简单运用和原理首先回顾一下经典的累加器的案例:class My { public int count = 0; public void run(...

2019-11-05 08:39:57 223

原创 Java反射体系详解

文章目录1.获取一个类的对应的Class对象 (Class的C是大写)(1)调用Object提供的getClass方法(2)类名称 . class(3)调用Class类提供的静态方法:Class . forName(类的全名称)2.当我们拿到一个类的class对象后,可以做什么呢?1. 创建该类的新对象2. 取得包名、父类、父接口信息3. 取得构造方法、普通方法、普通属性(⭐)(1)取得所有参...

2019-10-30 14:38:02 438

原创 B树和B+树画图详解

B树系列文章目录B树系列1. B树1. B树特点2. B树的分裂过程:(插入)3. B树的删除操作2. B+树1. B树和B+树的相同点:2. B树和B+树的不同点3. B+树的插入操作3. B树和B+树总结⭐4. 搜索树总结B树和B+树的出现是为了查询数据时减少磁盘的IO次数,我们知道平衡二叉查找树是一种查询速度很快的数据结构。它的时间复杂度为(logN),但是它由于是一个二叉树,所以树的高...

2019-10-28 09:25:09 5799 1

原创 LinkedList源码超详细解析

文章目录LinkedList源码分析1. 整体架构1. 类定义2. 底层结构3. 常用方法源码解析1. 构造方法2. 新增操作1. add()方法(尾插)2. addFirst()方法 (头插)3. 删除操作1. remove()方法 (也就是removeFirst方法)2. removeLast()方法3. remove(int index)方法(指定下标删除节点)⭐4. 节点查询1. get(...

2019-10-26 14:07:08 244

原创 MySQL之普通索引和唯一索引的选择

文章目录1. 场景2. 查询分析3. 更新分析1. change buffer(⭐)2. merge3. 更新下普索和唯一索引的具体效率区别4. change_buffer的具体使用场景(????????????)4. 总结5. change_buffer和redo_log(????)本篇博客要谈的,就是在保证业务的情况下,选择普通索引还是唯一索引!即你保证插入的数据不会重复,如果你插入的数据不保证不会重复,而你的...

2019-10-23 20:47:51 444

原创 Spring AOP 超详细分析

Spring核心机制之 AOP文章目录Spring核心机制之 AOP1. Spring AOP简介AOP的优点2. AOP例子实践1. 案例起源2. 静态代理实现AOP3. 动态代理实现AOP1. 动态代理类的实现2. 测试3. 结果分析3. Spring中的AOP1. 第一步:创建一个切面类:LoggerAspect2. XML中的配置3. 测试4. AOP术语解释1. Aspect(切面类)...

2019-10-19 14:57:13 380 1

原创 搜索树————AVL树和红黑树入门之作

文章目录1. 搜索树1. 特点2. 二叉搜索树OJ题1. 寻找指定节点(力扣700)2. 二叉搜索树的插入1. 迭代版2. 递归版(⭐)3. 二叉搜索树的删除(力扣450)(迭代版)2. 平衡树概述(也属于搜索树)3. AVL树1. 特点2. AVL树的插入1. 右右失衡(左旋)2. 右左失衡(右旋)3. AVL树失衡情况总结4. 旋转的代码实现(⭐????)4. 红黑树1. 特点:2. 具体插入细则3...

2019-10-16 17:23:30 269

原创 MySQL实战之——索引选择分析

MySQL实战之——索引选择分析文章目录MySQL实战之——索引选择分析1. 建表插数据过程(实验准备)2. 数据的查询1. 正常案例3. 异常案例一1. 案例背景2. 异常案例分析(对于异常案例一的分析)1. 优化器如何选择索引2. 如何修正统计信息(以及异常案例一总结)4. 异常案例二1. 案例背景2. 案例分析3. 解决方案1. force 语句2. 修改语句3. 其他方法再MySQL中...

2019-10-13 09:47:50 293

原创 互斥锁——解决原子性问题

互斥锁文章目录互斥锁1. 线程不安全的三大原因1.三大特性问题举例1. 原子性:2. 可见性3. 有序性2. Java解决有序性和可见性的方案3. 互斥锁——解决原子性问题1. Long变量在32位机器上的问题2. 互斥的定义3. Java提供的互斥锁:synchronized4. 超典型的银行转账问题1. 保护没有关联的多个资源2. 保护有关联关系的多个资源1. 误区方式2. 同一把锁方式3....

2019-09-22 20:58:23 346

原创 细谈数据库表锁和行锁

文章目录1. 全局锁1. 全局锁的特点2. 全局锁的作用(全库逻辑备份)2. 表级锁1. 表锁1. 特点2. MDL元数据锁(metadata lock)1. 特点3. MDL锁的坑————给一个小表加字段1. 问题描述3. online ddl(ddl:更改表结构)3. 行锁1. 行锁特性2. 两阶段锁协议4. 死锁1. 处理死锁策略2. 死锁检测(⭐)3. 典型案例(CPU利用率高,但效率低的...

2019-09-19 22:00:48 21258 3

原创 数据库事物——基础篇

文章目录数据库事物——基础篇1. 概述1.为什么需要数据库事物1. 银行转账例子2. 什么是数据库事物2. 数据库事务的基本操作3. 事物的ACID特性4. 事物的隔离级别1. 概述隔离级别的由来2. SQL标准事物隔离级别3. 事物隔离级别的实现原理4. 数据库禁忌:使用长事物(针对隔离级别)⭐5. 如何选择合适的隔离级别数据库事物——基础篇1. 概述在MySQL中,数据库事物支持是在引擎...

2019-09-09 21:08:12 452

原创 MySQL执行流程

MySQL执行流程文章目录MySQL执行流程1. Server层(以查询⭐一条语句的执行流程为例讲解)1. 连接器长连接导致的内存OOM如何解决?2. 查询缓存(MySQL 8.0后没这个功能了)1. 效率问题2. 配置查询缓存(是否使用它)3. 分析器4. 优化器5. 执行器2. 更新一条语句的执行流程(日志模块)1. redo log(重做日志)(InnoDB引擎特有的日志)2. binlo...

2019-09-05 17:18:10 1598

原创 详解Java内存模型和volatile关键字

详解Java内存模型和volatile关键字文章目录详解Java内存模型和volatile关键字一.Java内存模型1. CPU高速缓存2. Java对应的内存模型(JMM)1. 内存模型2. 缓存不一致问题二.并发编程三大问题1.原子性2.可见性3.有序性指令重排序三.Java中如何保证线程安全1. 原子性2. 可见性1. volatile保证可见性2. 普通变量不能保证可见性的原因:3. 其...

2019-09-02 17:14:30 417

原创 Java异常体系总结

Java异常体系知识点总结这段时间进行了对Java异常体系的学习,这里总结一些比较经典的问题;1. 异常结构体系所有的异常都是由Throwable继承而来由于程序错误导致的异常为RuntimeException,即运行时异常,运行时异常不需要捕捉,即运行时异常出现时能通过编译,但不能通过运行;异常分为受查异常和非受查异常,RuntimeException和Error属于非受查异常,其...

2019-08-30 22:47:18 359 2

转载 Java虚拟机参数设置

小伙伴们经常会发现,在开发的时候,经常遇到内存被占满,导致异常卡顿,有时候提示内存溢出,这时可以通过某些配置来进行改善。这里用Xmx这个参数来对Java Heap大小进行配置,不过切记最好不要超过内存的1/4;打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 vmoptions 文件,需针对不同的JDK进行配置(这是默认配置,所以尽量不要修改这里面的参数,可以在运行界面对单个程序进...

2019-08-20 10:18:14 4226

原创 前端三板斧之了解学习

前端学习文章目录前端学习1. html1. html标签:图像标签2. 表格标签table标签中常用属性表格标签的用法3. 表单标签框架标签2. CSS1.CSS的引入方式(3种)2.CSS选择器(使用前三种居多)0. 选择器优先级(⭐)1.id选择器(推荐⭐)2.class(类)选择器3.element(元素/标签)选择器4. 并集选择器5.交集选择器(前端框架:Jquery:子元素选择器)6...

2019-08-14 12:01:23 615

转载 Spring MVC、Servlet、tomcat的联系

文章目录1. Servlet1. Servlet的生命周期2. 面试问题:Servlet如何同时处理多个请求访问?2. Spring1. Spring 中的Bean2. Spring MVC1. Servlet在IDEA中可以看到,Servlet就是一个普通的接口:public interface Servlet { void init(ServletConfig var1) th...

2019-08-09 23:31:04 233

原创 一篇吃透Java集合

集合文章目录集合1.Collection接口1.Collecttion接口的子接口-------List接口(允许保存重复数据)(⭐)1 .List接口的子类-------------ArrayList2. List接口的子类-------------Vector (老版)Vector和ArrayList的区别3.集合与简单Java类4.List接口的子类-------------LinkedL...

2019-07-16 17:57:04 491

原创 手把手教你走进web

JavaWeb编程文章目录JavaWeb编程一:JavaWeb简介1.B/S结构 (浏览器端和服务器的交互)2.B/S 和 C/S 的区别二:JavaWeb1.xml(可扩展标记语言)1.xml语言的用处2.特点:3.Xml语法规则:xml的文档声名:(避免用浏览器打开xml文件的时候出现乱码)2.项目管理工具2.1Maven简介(推荐)2.2使用IDAEA来创建maven项目:(⭐)3.Xm...

2019-07-16 13:58:53 356

原创 一道有意思的代码输出题(综合考察实例化对象的理解能力)

相信大家接触过许多的代码输出题,本次来看一个比较典型的输出题,本题综合考察了类的实例化和继承以及try块 的相关细节知识,只要把本题理解透彻,以后的这种类型题就不会再迷茫

2019-05-29 21:07:48 180

原创 Lock锁体系----包含Lock实现独占锁过程源码详解

Lock文章目录Lock1.Lock存在的意义2.Lock接口的常用方法:(⭐)1.void lock()2.boolean tryLock()3.void lockInterruptibly() throws InterruptedException4.boolean tryLock(long time, TimeUnit unit) throws InterruptedException;...

2019-05-20 21:45:28 802

原创 多线程基础篇

多线程基础篇文章目录多线程基础篇1.进程与线程1.概念2.多进程与多线程区别3.多线程的应用4.高并发2.多线程的实现1.通过实现继承Thread类来实现多线程2.通过实现Runnable接口来实现多线程3.Callable接口实现多线程(有返回值)4.利用线程池创建多线程(⭐优先考虑)附加5. 继承Thread和实现Runnable的区别附加6. Runnable的代理模式 ⭐3.多线程常用方...

2019-05-08 23:03:37 535 1

原创 设计模式——单例模式(详细分析)

设计模式——单例模式(详细分析)文章目录设计模式——单例模式(详细分析)0.概述1.饿汉式2.懒汉式1.一般模式(单线程可用)2.进阶模式3.双重检验锁模式⭐(多线程中使用)3.静态内部类式4.枚举式所谓单例模式,就是保证类的对象在内存中唯一存在!0.概述单例的三大要点:线程安全延迟加载序列化与反序列化安全1.饿汉式饿汉式单例模式是最基础的,这里我就不再过多讲解;特点:...

2019-05-06 15:30:28 431

原创 每日算法一练————(一)

一:给定一个大小为 n 的数组,找到其中的众数。1.第一种写法(我当时的写法):class Solution { public int majorityElement(int[] nums) { int i = 0; //记录出现次数最多的次数 int max = 0; //定义用来返回的数 int res...

2019-05-04 21:55:39 183

原创 Java垃圾回收算法

Java垃圾回收算法文章目录Java垃圾回收算法1.标记——清除法2. 复制算法(新生代回收算法(Minor GC))为啥这是新生代回收算法3.标记——整理算法(老年代回收算法(Full GC))4.分代收集算法(Java虚拟机所采用)经典面试题: Minor GC和Full GC这两种GC有什么不一样吗?在上一篇中,我讲述了Java虚拟机如何判断一个对象是否需要回收,这一篇就来讲讲当判定需要...

2019-05-03 16:22:42 285

空空如也

空空如也

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

TA关注的人

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