自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mystic

just learn more

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

原创 AQS源码详解与实践

AQS源码详解1. 概述​ AQS(AbstractQueuedSynchronizer )字面意思是抽象队列同步器,是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石。通过内置的FIFO队列来完成资源获取线程的排队工作,并通过一个int类变量表示持有锁的状态。​ AQS解决的问题主要是,在加锁的时候会产生阻塞,此时就需要排队。而实现排队就需要某种类型的队列去进行管理。并且排队的线程也需要被唤醒以保证锁的分配。这些都由AQS来进行解决。总结一下可以分为两点:(1)对排队的线程进行管

2021-02-03 22:45:32 205

原创 Java锁详解

Java锁详解乐观锁和悲观锁​ 乐观锁和悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定有其他线程来进行修改,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。而乐观锁认为自己在使用数据的时候不会有别的线程修改数据,所以不会添加锁,只是在更新数据的时候去判断之前有没有别的线程更新了这个数据,如果数据未被更新,当前线程将自己修改的数据成功写入。如果已被更新,则根据不同的实现方式执行不同的操作。适用场景:1.悲观锁适用于写操作

2020-12-21 21:04:30 112

原创 Java NIO

Java NIONIO即New IO,同步非阻塞IO。这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。NIO和IO的区别IO是面向流的,而NIO是面向缓冲区的IO的各种流是阻塞的,而NIO是非阻塞的Java NIO的选择器允许一个单独的线程来监视多个输入通道直接缓冲区和非直接缓冲区直接缓冲区:通过all

2020-12-16 20:32:42 129

原创 三次握手和四次挥手详解

三次握手和四次挥手详解三次握手四次挥手三次握手什么是三次握手三次握手是指建立一个TCP连接时,需要客户端和服务器总共发送三个包。三次握手的目的三次握手的目的是为了确认双方的接受能力和发送能力是否正常,指定自己的初始化序列号为后面的可靠性传送做准备三次握手的流程初始状态: 客户端 Closed 服务端 Listen进行三次握手:第一次握手:客户端给服务端发送一个SYN报文,并指明客户端的初始化序列号ISN。此时客户端处于SYN_SEND状态。首部的同步位SYN=1,初始序号

2020-12-14 21:15:13 211

原创 Java注解反射的总结与实践

Java注解和反射总结1. 注解(Annotation)2. 反射(Reflection)1. 注解(Annotation)​ java注解又称为java标注,是 JDK5.0 引入的一种注释机制。作用主要是对程序作出解释,同时可以被其他程序读取。java一共定义了7个注解,其中三个在java.lang中,剩下四个在java.lang.annotation中。内置注解:@Override - 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。如下,表示to

2020-08-24 18:30:42 299

原创 tomcat加载常见错误

tomcat加载常见错误1.web.xml中出现Element cannot have character children报错一般来说就是web.xml中格式不正确,比如注释加错了或者不符合规范了。自己出现的错误就是注释忘了加。2.重启tomcat加载页面时css无法加载,而且js也加载出错找了好久,最后发现是在新建立的jsp文件中标签没有统一为一种格式,新生成的jsp文件为<html lang="GB18030">而其他文件为:<html lang="zh-CN"&gt

2020-08-09 20:05:41 251

原创 Mybatis细节补充

Mybatis细节补充一对一、一对多查询配置配置一级缓存和二级缓存用注解进行基本CURD操作配置一对一、一对多查询配置这里的一对多就是指一个表的记录对应着另一个表,多对多就是指多个表对应着另外多个表。本文中以Account为例,一个Account表对应着一个user,这就是一对一;而一个Role对用多个user,一个user也对应着多个role,这就是一对多。使用xml文件形式进行配置一对一和一对多的配置区别不大,主要就是在dao.xml文件配置中有点区别,其他步骤都一样。首先就是自定义类,然后

2020-07-20 17:20:28 173

原创 MyBatis实现与原理剖析

MyBatis实现与原理剖析1. 入门案例步骤总结2. 执行代码分析3. 配置文件分析4. 手撕Mybatis源码1. 入门案例步骤总结使用Maven工程导入相应的包(Mybatis、mysql、log4j(通过一个配置文件来灵活地进行配置)、junit(测试类))写相应的dao类和domain类编写Mybatis的配置文件(例如SqlMapConfig.xml)和相关dao类的配置文件(例如UserDao.xml)编写测试文件读取配置文件创建SqlSessionFactory工厂生成S

2020-07-15 22:05:49 250

原创 PreparedStatement操作总结

PreparedStatement操作总结1. PreparedStatement介绍2. PreparedStatement与Statement的比较3. 适合各类的PreparedStatemenent的sql操作模板整和4. 对ResultSet和ResultSetMetaData的认识1. PreparedStatement介绍PreparedStatement 接口是 Statement 的子接口,它表示一条预编译过的 SQL 语句可以通过调用 Connection 对象的 prepare

2020-07-07 19:39:36 569

原创 Redis持久化的相关总结

Redis的持久化1. RDB持久化2. AOF持久化​ Redis是内存数据库,里面存储的是自己的数据库状态,因此为了保证在意外情况下数据库状态的一致性,Redis提供了持久化功能。1. RDB持久化​ 该功能就是将某个时间点上的数据库状态保存到一个RDB文件中,RDB文件是一个经过压缩的二进制文件,只要RDB文件存在,Redis服务器就可以用它来还原数据库的状态。RDB文件的创建与载入​ Redis可以使用SAVE / BGSAVE 命令创建RDB文件。两个命令都是用于生成RDB文件。但S

2020-07-01 21:30:52 109

原创 分布式一致性原理相关总结

分布式一致性原理相关总结1. 集中式和分布式的区别2. ACID、CAP、BASE理论分别是什么3. 2PC、3PC的过程以及两者之间的区别4. Paxos、Raft算法的描述及与上一步中的区别5. ZooKeeper的工作原理6. ZooKeeper的使用场景1. 集中式和分布式的区别集中式系统的特点是部署结构简单,无需考虑多个节点之间的协作问题。但是集中式系统:1.人才培养成本高;2.用于存储的大型主机成本高;3.有明显的单点问题,一旦出现故障,整个系统将会处于宕机状态。分布式系统具有的特征

2020-06-27 17:49:53 331

空空如也

空空如也

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

TA关注的人

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