自定义博客皮肤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)
  • 收藏
  • 关注

原创 FutureTask

1.概念一个可以取消的异步计算,当前线程都会阻塞在get阻塞,直到任务执行完毕,返回结果。2.类图3.源码分析3.1 参数分析 //表示当前task状态 private volatile int state; //当前任务尚未执行 private static final int NEW = 0; //当前任务正在结束,稍后完全结束,一种临界状态 private static final int COMPLETING = 1;

2020-05-22 08:58:20 123

原创 ReentrantLock和AQS关联和源码解析

前言java中的同步类(Lock,Semaphore,CountDownLatch)都是基于AbstractQueuedSynchronizer(AQS)。AQS是一种提供了原子式管理同步状态,阻塞和唤醒线程功能以及队列模型的简单框架。1 ReentrantLock1.1 ReentrantLock特性概览ReentrantLock是可重入锁,指的是一个线程能够对一个临界资源重复加锁。1...

2020-04-21 09:39:15 229

原创 Synchronized

synchronized的三种应用方式修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁作用解决原子性,可见性,指令重排序问题。java对象头和Monitor在jvm中,java在内存中的布局分为对象头,实列...

2020-04-16 16:44:21 140

原创 java锁

java锁结构图1 乐观锁VS悲观锁乐观锁:乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断在此期间有没有其他线程去更新这个数据,采取在写时先独处当前的版本号,然后加锁操作,java中的乐观锁都是通过CAS操作实现的,CAS是一种更新的原子操作。悲观锁:悲观锁是就是悲观思想,即认为写多,遇到并发写的可...

2020-04-16 12:07:06 173

原创 LinkedHashMap

1.概述LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题。除此之外,LinkedHashMap 对访问顺序也提供了相关支持。在一些场景下,该特性很有用,比如缓存。在实现上,LinkedHashMap 很多方法直接继承自 HashMap,仅为维护双向链表覆写了部分方法 。2.原...

2020-04-11 11:16:50 507

原创 红黑树

原理每个节点要么是红色要么是黑色根节点是黑色每个叶子节点(NIL)是黑色每个红色节点的两个子节点一定都是黑色,不能红红相连任意一个节点到每个叶子节点的路径都包含数量相同的黑节点(黑高)自平衡操作变色,节点的颜色由红色变黑或者由黑变红左旋:以某个结点作为支点(旋转结点),其右子结点变为旋转结点的父结点,右子结点的左子结点变为旋转结点的右子结点,左子结点保持不变。右...

2020-04-10 10:57:36 98

原创 Array和LinkedList和Vector的比较

ArrayList与LinkedList区别是否保证线程安全:ArrayList和LinkedList都是不同步,都是线程不安全的底层数据结构:ArrayList底层采用Object数组,LinkedList 底层使用的是 双向链表 数据结构(JDK1.6之前为循环链表,JDK1.7取消了循环)插入和删除是否受元素位置的影响: ① ArrayList 采用数组存储,所以插入和删除...

2020-04-07 16:01:44 104

原创 LinkedList

简介LinkedList是一个实现了List接口和Deque接口的双端链表。 LinkedList底层的链表结构使它支持高效的插入和删除操作,另外它实现了Deque接口,使得LinkedList类也具有队列的特性; LinkedList不是线程安全的内部结构private static class Node<E> { E item;//节点值 ...

2020-04-07 16:01:20 74

原创 ArrayList

简介ArrayList是实现了List,Cloneable,Serializable,RandomAccess接口和继承了AbstractList的集合类,能够实现容量动态增长的动态数组。继承关系1. ArrayList 实现了RandmoAcess接口,即提供了随机访问功能。2. ArrayList实现了Cloneable接口,覆盖了函数clone(),能被克隆。3. Array...

2020-04-07 15:59:56 111

原创 并发编程

如何使用多线程在java中,可以通过继承Thread类,实现Runnable接口,使用Callable,Future实现带返回值的多线程,还可以使用ExecutorService线程池来实现。线程的状态线程一共有6种状态:new ,runnable,blocked,waiting,time_waiting,terminated.NEW:初始状态,线程被构建,但是还没有调用start方法R...

2020-03-18 15:40:12 139

原创 zookeeper(三)

zookeeper集群角色leader事务请求的唯一调度者和处理者,保证集群事务处理的顺序性集群内部各个服务器的调度者follower处理客户端非事务请求,以及转发事务请求给leader服务器参与事务请求提议(proposal)的投票(客户端的一个事务请求,需要半数服务器投票通过以后才能通知leader commit; leader会发起一个提案,要求follower投票)参与...

2020-02-20 10:19:12 140

原创 zookeeper(四)实现分布式锁

zookeeper实现分布式锁实现原理根据zookeeper结点的特点,可以通过创建临时有序节点来创建排他锁。引入pom <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> ...

2020-02-20 09:34:13 97

原创 zookeeper(二)

数据模型zookeeper的数据模型和文件系统类似,每一个节点称为:znode. 是zookeeper中的最小数据单元。每一个znode上都可以保存数据和挂载子节点。 从而构成一个层次化的属性结构。节点特性持久化节点 : 节点创建后会一直存在zookeeper服务器上,直到主动删除持久化有序节点 :每个节点都会为它的一级子节点维护一个顺序临时节点 : 临时节点的生命周期和客户端的会...

2020-02-20 09:17:32 197

原创 zookeeper(一)

分布式环境分布式环境的特点分布性并发性:程序运行过程中,并发性操作是很常见的。比如同一个分布式系统中的多个节点,同时访问一个共享资源。数据库、分布式存储。无序性:进程之间的消息通信,会出现顺序不一致问题。分布式环境面临的问题网络通信:网络本身的不可靠性,因此会涉及到一些网络通信问题。网络分区(脑裂):当网络发生异常导致分布式系统中部分节点之间的网络延时不断增大,最终...

2020-02-18 11:22:28 83

原创 HTTPS

HTTPSHTTPS概念HTTPS 协议是由SSL(Secure Sockets Layer 安全套接层)+HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比http 协议安全。https 与http 区别HTTPS 和HTTP 的区别主要如下:1)https 协议需要到ca 申请证书,一般免费证书较少,因而需要一定费用。2)http 是超文本传输协议,信息是明文传输,htt...

2020-02-17 16:15:58 376

原创 http协议

Httphttp概念超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称...

2020-02-17 15:06:47 183

原创 序列化

java序列化机制Serialize接口java本身的序列化机制存在的问题序列化数据结果比较大、传输效率比较低不能跨语言对接以至于在后来的很长一段时间,基于XML格式编码的对象序列化机制成为了主流,一方面解决了多语言兼容问题,另一方面比二进制的序列化方式更容易理解。以至于基于XML的SOAP(简单对象访问协议是交换数据的一种协议规范)协议及对应的WebService框架在很长一段时间内...

2020-02-17 09:47:13 137

原创 tcp/ip协议

tcp/ip协议TCP/IP(Transmission Control Protocol/Internet Protocol)是一种可靠的网络数据传输控制协议。定义了主机如何连入因特网以及数据如何在他们之间传输的标准。三次握手协议所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。TC...

2020-02-16 15:34:35 105

原创 java之IO/NIO

阻塞IO模型最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出CPU。当数据就绪之后,内核会将数据拷贝到用户线程,并返回结果给用户线程,用户线程才解除block状态。典型的阻塞IO模型的例子为:data = socket.read();如果数据没有就绪,就会一直阻塞...

2019-11-06 20:56:30 130

原创 java基础之集合之Map之HashMap

Set注重独一无二的性质,该体系集合用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。对象的相等性本质是对象hashCode值(java是依据对象的内存地址计算出的此序号)判断的,如果想要让两个不同的对象视为相等的,就必须覆盖Object的hashCode方法和equals方法。 HashMapHashMap的结构jdk1.7与1.8不同点(1)JDK1.7用的是头插...

2019-10-28 19:36:36 177

原创 接口生成工具Swagger

一 Swagger介绍OpenAPI规范(OpenAPI Specification 简称OAS)是Linux基金会的一个项目,试图通过定义一种用来描述API格式或API定义的语言,来规范RESTful服务开发过程,目前版本是V3.0,并且已经发布并开源在github上。(https://github.com/OAI/OpenAPI-Specification)Swagger是全球最大的Op...

2019-08-14 17:17:10 387

原创 mybatis延迟加载和缓存

**一.延迟加载**1.什么时延迟加载?只有在真正使用数据时才发起查询,不用的时候不查询,按需加载(也称懒加载).在对应的的四种表关系中:一对多,多对一,一对一,多对多。一对多,多对多:通常情况下我们都是采用延迟加载。多对一,一对一:通常情况下我们都是采用立即加载。2.使用延迟加载二. mybaits缓存1.什么时缓存?存在于内存的临时数据。2.为什么使用缓存?减少和数...

2019-07-10 20:26:26 90

原创 mybatis(二)自定义基于注解的mybatis

在这里我们自定义mybatis框架,pom文件中移除mybatis的相关依赖,由于是基于xml格式的,我们需要引入解析xml的相关依赖。 <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mys...

2019-07-02 21:59:22 1041

转载 java基础之值传递和引用传递的区别

前言首先说观点:java只有值传递没有引用传递然后再来看看值传递与引用传递两者的定义值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。这里牢记值传递中将实际...

2019-06-10 20:30:23 165

空空如也

空空如也

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

TA关注的人

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