自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 并发容器——位运算、currentHashMap源码解析、写时复制容器

ConcurrentHashMappublic class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable {可以理解为线程安全的HashMap,新增几个方法putIfAbsent:如果已经存在值则返回,否则插入...

2019-12-04 15:11:22 372

原创 自定义注解——基于AOP实现

先了解几个元注解分别是@Target, @Retention,@Documented,@Inherited@Target:决定自定义的注解用在什么地方属性值作用ElementType.CONSTRUCTOR用在构造函数的声明上ElementType.FIELD定义在成员变量上LOCAL_VARIABLE局部变量的声明METHOD定义在方法上面...

2019-11-14 14:27:40 755

原创 AQS数据结构——同步队列

aqs即AbstractQueuedSynchronizer类的简称,里面包含了一系列对锁的操作竞争失败的线程会打包成Node(源码里是aqs类的一个内部类)放到同步队列,竞争失败的线程会打包成Node放到同步队列,Node可能的状态里:CANCELLED:线程等待超时或者被中断了,需要从队列中移走SIGNAL:后续的节点等待状态,当前节点,通知后面的节点去运行CONDITION :当前...

2019-11-08 16:10:47 575

原创 JWT机制(含代码实现)——简单易懂,代码可用

springCloud中由网关对请求统一进行分发和过滤。什么是JWTJSON Web Token(JWT)是目前最流行的跨域身份验证解决方案,是一种紧凑且自包含的,用于在多方传递JSON对象的技术。在单点登录和分布式系统和多有使用JWT包含三个部分,head,payload,签名,用.分隔开来JWT头部分是一个描述JWT元数据的JSON对象,通常如下所示。{"alg": "HS256...

2019-10-30 15:14:24 1068

原创 Mysql索引数据结构及原理

什么是索引?索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:==索引是一种数据结构。这些数据结构以某种方式引用(指向)数据,==这样就可以在这些数据结构上实现高级查找算法。这种数据结构就是索引。索引特点:加速查询,但更新和增加慢索引的几种分类:1、UNIQUE,唯一索引,可以为null,但不能重复2、INDEX 普通索引3、Promary ...

2019-10-29 14:46:07 361

原创 Lock显示锁和Aqs——Condition接口和可重入锁,读写锁

Lock接口和synchronized的比较使用private Lock lock = new ReentrantLock();private int count =0; public void docount() {//lock方法 lock.lock(); try { count++; } finally { lock...

2019-10-15 16:17:51 184

原创 多个文件以zip包形式导出——亲测可用

工具类package bdjk.sysmanagment.robot.util;import java.io.BufferedInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundExc...

2019-09-24 15:21:26 959 1

原创 CAS原子操作思想

Compare And Set 比较并设置synchronized存在的问题:在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题一个线程持有锁会导致其他需要此锁的线程挂起如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险乐观锁其实已经没有锁的概念,而是假设没有冲突的去完成某项操作,如果因为冲突失败就重试,直到成功为止。CAS思想...

2019-09-16 20:22:13 178

原创 springboot集成WebSocket向指定用户发送消息(亲测可用!)

配置类package com.yupont.xc.config;import org.apache.catalina.session.StandardSessionFacade;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.annotation.Bean...

2019-09-12 17:20:07 7710 16

原创 idea解决jar包冲突

吐血找了一天的问题,最后是jar包冲突导致。事实证明敲代码还是不能浮躁。记录一下排除jar包冲突的方法,so easy1、打开jar包冲突的类,ctrl+n2、idea左上角的定位jar包按钮,找到冲突的jar3、在library里打开,然后一一删除即可。...

2019-09-10 17:13:20 1007

原创 Hbase入门学习——表模型及API操作

什么是Hbase?Hbase是一个利用在HDFS做文件存储,利用mapReduce做数据处理,zookeeper做服务协同的一个高可靠性、高性能、列存储、可伸缩、多版本的 NoSQL 的分布式数据存储系统,实现对大型数据的实时、随机的读写访问。Hbase的表结构模型不说废话,先上图跟关系型数据库不同,hbase在建立的时候列是不必确定的,而是在创建数据的时候动态的创建列。因为Hbase中...

2019-09-05 16:10:04 318

原创 多线程常用工具类—— CountDownLatch、CyclicBarrier、Semaphore

CountDownLatch作用:是一组线程等待其他(一组)的线程完成工作以后再执行,可看做加强版join常用方法 CountDownLatch(int count) //实例化一个倒计数器,count指定计数个数 countDown() // 计数减一 await() //等待,当计数减到0时,所有线程并行执行举个栗子,下面代码,要保证上面的11个线程都执行完主线程才往下执行,就需...

2019-08-28 11:44:32 282

原创 ForkJoin框架从入门到使用

因为本章很多是笔者参考自中文版API,先附上链接https://ifeve.com/tag/forkjoin/ForkJoin:体现了分而治之的思想,大于既定大小,分为很多子任务,小于既定大小,直接调用任务解决(自己判断情形),子任务是相对独立的,与原问题形式相同,将子问题的解合并得到原问题的解(有点类似mapReduce)fork操作:当你把任务分成更小的任务和使用这个框架执行它们。...

2019-08-26 17:51:42 152

原创 线程间的协作——notify、notifyAll,wait,Join

notify和notifyAll 的作用是唤醒正在wait的线程,三者都是Object的方法,notify是随机唤醒wait线程中的一个,notifyAll 则是唤醒全部。1).执行notify、notifyAll 方法的前提是当前线程已经获取到对象的锁,也就是必须在synchronized修饰的代码块或者方法中使用。这个和wait是一样的。2).被调用notify()或者notifyAll(...

2019-08-26 11:25:34 203

原创 Hadoop之分布式文件存储系统Hdfs

简单了解一下Hadoop的Hdfs(分布式文件存储系统)1、Hdfs将一个很大的数据分割成很多小的数据块(Blocks)存储在数据节点(DataNode)上,由NameNode进行管理2、提供副本进行容错及可靠性保证,每个数据默认在两个不通机架的三个节点上保存由三个副本3、HDFS是针对MapReduce设计的,使得数据尽可能根据其本地局部性进行访问与计算。5、提供对这些信息的快速访问,并...

2019-08-23 10:23:29 624

原创 java多线程之线程共享(二)——synchronized、volatile、ThreadLocal

最近有在跟着某讯课堂学习架构师模块,先系统化的回顾一下多线程相关的知识,之后会持续更新。synchronized内置锁定义:线程进入同步代码块或方法的时候会自动获得锁,在退出同步代码块或方法时会释放该锁。获得内置锁的唯一途径就是进入这个锁的保护的同步代码块或方法。对象锁,锁的是类的对象实例。对象锁有两种方式private synchronized void test1(){ ...

2019-08-21 14:42:05 319

原创 java操作Hadoop的核心类库MapReduce

最近国网这边要求使用大数据框架写项目,无奈之前对于Hadoop这些一无所知,只能先学习一下开发时主要用到的一些技术点,后续有空再继续补充原理知识MapReduce主要是采用分而治之的思想,上图的理解主要如下。Hadoop的Hdfs分布式存储系统将大数据分成很多数据块,每个数据块(input splits)传入到input阶段,MapReduce数据块处理输入拆分:输入到MapReduce...

2019-08-20 17:25:09 356

原创 java多线程之基础(一)

线程和进程:进程:资源(cpu,内存,磁盘)分配的最小单位线程:归属于某个进程,cpu调度的最小单元(栈、程序计数器),堆cpu轮转机制(RR调度):主要用于分时系统中的进程调度。为了实现轮转调度,系统把所有就绪进程按先入先出的原则排成一个队列。新来的进程加到就绪队列末尾。每当执行进程调度时,进程调度程序总是选出就绪队列的队首进程,让它在CPU上运行一个时间片的时间。时间片是一个小的时间单位...

2019-08-16 20:45:54 156

原创 java中堆的分区

上次简单记录了jvm的五大模块,着重了解了下栈的机制,这次来学习jvm的核心——堆堆的作用1、堆是jvm管理内存最大的一部分,一般用来存储对象和数组(每个对象都包含一个与之对应的class的信息(class信息存放在方法区)),2、是一块线程共享的区域,3、堆是垃圾回收器管理(GC)的主要区域。新生代、老生代、永久代的概念就是在堆里堆内存可以处于物理上不连续的内存空间中,只要逻辑上是连续的...

2019-08-12 22:19:09 3986 3

原创 jvm内存分区模型(一)

jvm内存模型jvm分区从线程角度分析jvm分区栈最近一直有在学习java的jvm模型,由繁入简,网上的一些博客写的点都比较片面,今天简单系统的总结一下!jvm分区如上图,jvm在运行时,会把其所管理的内存分为以上5个模块的,其中永久区已经在jdk 1.8中被元空间所替代。下面咱们分点描述。1.方法区(永久区):方法区和堆类似,是各个线程共享的内存区域,它用于存储类信息,常量,静态变量...

2019-08-08 23:12:33 1044

空空如也

空空如也

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

TA关注的人

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