自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (4)
  • 收藏
  • 关注

翻译 Caffeine使用指南

Caffeine使用指南Caffeine基于java8的高性能,接近最优的缓存库。Caffeine提供的内存缓存使用参考Google guava的API。Caffeine是基于Google guava和 ConcurrentLinkedHashMap的设计经验上改进的成果。Caffeine可以通过建造者模式灵活的组合以下特性:通过异步自动加载实体到缓存中基于大小的回收策略基于时间的回收...

2018-12-11 11:15:12 7039

原创 fastjson反序列化带有get没有set的list字段,没有值

反序列化带有get方法的list字段但是对于对象中带有get方法的list字段,fastjson的处理:通过get方法获取list或map,如果是null不会处理。以下带来。com.alibaba.fastjson.parser.deserializer.FieldDeserializer类 setValue方法片段。 1234567891011121...

2018-11-22 14:19:10 3527 1

原创 fastjson自定义枚举反序列化

自定义的枚举类型反序列化fastjson默认提供的对枚举类型的反序列化的方式有两种根据枚举的name 根据枚举的ordinal值但是如果需要通过自定义的值反序列化成枚举,就需要自定义反序列化器。如下面枚举,我想通过EnumValue接口返回的value值进行反序列化 12345678910111213141516 in...

2018-10-28 12:33:00 10020 1

原创 java线程池和Executor架构

为什么要使用线程池线程的创建和销毁会带来系统的开销。通过线程池进行线程的管理,可以进行线程的复用,避免线程频繁的创建和消耗。《java并发编程的艺术》 合理利用线程池能够带来三个好处降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会...

2018-09-25 21:24:35 197

原创 EventListenerSupport实现事件监听

EventListenerSupport是apache lang3包提供用于处理事件监听的解决方案。pom <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifact...

2018-09-20 15:13:35 667

原创 Fork/Join框架简介

Fork/Join框架简介fork/join是java7提供的任务并行执行的框架。fork就是将大任务分解成若干子任务,join就是将子任务的执行结果聚合成整个任务的结果。Fork/Join框架通过两个类实现ForkJoinTask ForkJoinTask负责分解任务和合并结果。通过实现compute方法,把任务分成多个子任务的ForkJoinTask,调用子任务的fork方法执行任...

2018-09-20 15:02:13 161

原创 ConcurrentHashMap源码解析(jdk1.8)

jdk8的ConcurrentHashMap改动非常大。放弃了之前segment锁,改用cas+synchronized来实现同步。常量含义 /** * table数组最大容量。 */ private stactic final int MAXIMUM_CAPACITY = 1 << 30; /** * 默认初始化容量,是...

2018-09-18 20:30:25 226

原创 12、ReentrantLock中的公平锁和非公平锁的原理

ReentrantLockReentrantLock内部是通过AQS实现锁的功能,有公平锁和非公平锁两种实现。公平锁,即锁的获取顺序按线程申请锁的先后顺序。 非公平锁,当一个线程t1申请锁时,锁刚好释放。即使已有其他线程在t1之前申请锁排队,线程t1还是会获取锁。这样减少了线程的等待唤醒的可能,减少上下文切换带来的开销。因为获取锁的顺序和申请顺序可能不一致所以叫非公平锁。前置技能(先了...

2018-09-04 18:04:59 593

原创 11、JUC之AQS中的CLH队列

CLH队列AQS内部维护着一个FIFO的队列,即CLH队列。AQS的同步机制就是依靠CLH队列实现的。CLH队列是FIFO的双端双向队列,实现公平锁。线程通过AQS获取锁失败,就会将线程封装成一个Node节点,插入队列尾。当有线程释放锁时,后尝试把队头的next节点占用锁。CLH队列结构NodeCLH队列由Node对象组成,Node是AQS中的内部类。重要属性 /...

2018-09-03 14:18:46 890 2

原创 十、JUC之AQS

AQS即AbstractQueuedSynchronizer,是jdk提供的一个用于实现阻塞锁和依赖于先进先出等待队列的相关同步器(信号量,事件等)。AQS是concurrent包的基石。AQS 状态。它依赖一个int类型的原子变量来表示状态。private volatile int state;//共享变量,使用volatile修饰保证线程可见性对state操作的基本方法...

2018-09-01 21:52:24 188

原创 监听文件改变 fileAlterationMonitor

监听文件改动Apacha common.io2.0提供了监听文件变化的功能。功能由三个组件组成。 监听器 FileAlterationListener 用于实现文件改变时触发的行为。 观察者 FileAlterationObserver 用于观察文件的改变,通知注册的监听器执行相应的事件。 监视器 FileAlterationMonitor 通过一线程...

2018-08-25 00:05:58 7572

原创 九、并发工具类之Semaphore

流量控制 SemaphoreSemaphore是一个计数的信号量。初始化时分配一个配额permits。在访问前需要用acquire()方法申请一个配额,访问结束后调用release()释放配置。申请配额时如果配额不足将会阻塞。例子:有2个足球,4个人射门练习。每个人射门后都要把球拿回来,后面的人才能射球。public class Player implements Runnable...

2018-08-24 17:46:10 194

原创 八、并发工具类之CyclicBarrier

CyclicBarrierCyclicBarrier和CountDownLatch功能相似。CyclicBarrier是所有参与线程互相等待对方执行到某点,再一起执行后面程序。与CountDownLatch一样,CyclicBarrier的构造函数也需要一个int类型的参数 parties,表示参与者数量。每一个线程调用cyclicBarrier对象的await方法就会进入等待。直到参与线...

2018-08-24 10:58:39 143

原创 七、并发工具类之CountDownLatch

CountDownLatch一个线程需要等到其他线程进行某操作时,可以使用CountDownLatch。 CountDownLatch构造方法,带有一个int类型的参数。public CountDownLatch(int count) 当一个线程调用countDownLatch.await()时,线程会等待。直到其他线程执行 countDownLatch.countDown()。每...

2018-08-23 21:21:41 154

原创 六、多线程-CAS

CAS锁的开销极大。在某些场景,如保证一个变量的 read-modify-write操作的原子性。这种场景可以通过使用CAS解决而不需要用到锁。CAS,Compare and swap 比较并交换,是一种乐观锁的实现方式。是一个中由处理器保证原子性的if-then-act操作。它通过提供一个变量内存位置,预期值(旧值)和新值。将预期值和变量的当前值进行比较,如果相等即证明变量并没有被改变,...

2018-08-19 21:38:18 627

原创 五、多线程协作之等待唤醒机制

线程间协作多线程开发中,线程往往都不是孤立的。一个线程往往需要多线程协作完成其待执行的任务。等待唤醒机制就是用来协调线程间的协作。例如:街边的小吃店都是生产一份等销售完再生产,这是典型的生产者消费者模式。下面用代码实现这个场景。等待唤醒机制的好处: 节省cpu。线程间通讯也可以通过轮询的方式来检查条件进行协作,但是会消耗大量cpu。用生产者/消费者模式举例。在生产者生产的时候,消费者并不需...

2018-08-19 19:27:24 311

原创 四、线程同步-volatile关键字

一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。 禁止进行指令重排序。 例子 private boolean stop=true; @Test public void test() throws Excep...

2018-08-09 11:23:15 219

原创 三、java多线程同步-锁

锁概述锁是解决线程安全问题的最基本的解决方案。通过加锁,使得会发生线程安全问题的代码单线程串行。从而解决线程安全问题。锁的分类公平锁和非公平锁公平锁是按照锁申请的顺序来分配锁资源。 非公平锁是允许插队的,可能后申请的线程比先申请的线程优先获取锁。java中锁一般默认都是非公平锁。因为公平锁为了保障公平往往会增加线程的唤醒和暂停。例如一个运行中的线程要获取锁必须先检查有没有其...

2018-08-08 15:17:02 206

原创 二、多线程存在的问题和Java内存模型

多线程存在的问题多线程运用得好可以大大提高系统的性能。但是使用不当也会对系统造成毁灭性灾难。线程安全问题。多个线程操作共享数据时,会产生线程安全问题。导致读取脏数据或者丢失更新等问题 线程活性问题。由于程序问题导致一个线程一直处于非Runnable状态或者处于Runnable状态但执行的任务没有紧张称为线程活性问题。例如:两个线程,线程1需要先占用锁1,再占用锁2。线程2需要先占用锁2,...

2018-08-06 14:44:02 171

原创 一、java多线程基础

多线程的概念进程是程序运行的实例。启动一个java程序其实就是启动了一个jvm的进程。进程是程序向操作系统申请资源(内存空间、文件句柄等)的基本单位。线程是进程中可以独立执行的最小单位。进程和线程的关系,可以比喻成一个项目组和组员的关系。项目组完成一个项目需要需求,开发,测试。这些往往都是并行的。需要需求,开发和测试人员协作完成。他们共享项目组的资源,如需求文档,功能代码等。为什么...

2018-08-04 14:40:03 174

原创 高性能集合框架——fastUtils

FastUtils简介fastutil通过提供特定类型的映射,集合,列表和优先级队列来扩展Java™集合框架,并且占用内存很少,并且可以快速访问和插入; 还提供大(64位)数组,集和列表,以及用于二进制和文本文件的快速,实用的I / O类。性能特定类型的Map和Set比标准的集合类快上2-10倍。但是以对象作为key的HashMap往往比jdk的HashMap慢,因为fastutil不...

2018-07-25 11:52:14 2316 1

原创 Log4j代码形式配置

Log4j代码形式配置 Logger:日志记录器,负责收集处理日志记录     (如何处理日志)Appender:日志输出目的地,负责日志的输出  (输出到什么 地方)Layout:日志格式化,负责对输出的日志格式化(以什么形式展现) 代码Logger logger = LogManager.getLogger(logName);Logger.setLevel(Le...

2018-07-17 17:03:19 2027

原创 ThreadLocal的原理

ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。Thread-1中只有一个ThreadLocal.ThreadLocalMap(图中列就是一个ThreadLocal.ThreadLocalMap),而ThreadLocal设置值进去Thr...

2018-02-24 11:01:56 179

原创 echarts 中国地图,根据省份数值高低改变省份颜色深浅

function randomValue() { return Math.round(Math.random()*1000);}option = { tooltip: {}, visualMap: { min: 0, max: 2000, text:['High','Low'], realtime: fa...

2018-02-09 20:32:53 17619 5

原创 【netty】 ByteBuf的常用API总结

一、创建1、池化创建ByteBufAllocator获取ByteBufAllocatorChannel channel = ...;ByteBufAllocator allocator = channel.alloc();//1....ChannelHandlerContext ctx = ...;ByteBufAllocator allocator2 = ctx.allo

2018-01-21 11:33:34 12740

原创 一、netty初学,简单的echo服务器,客户端

无论服务器还是客户端都是由下面两步组成1、ChannelHandler 用与处理各种事件的逻辑处理。决定了连接创建后和接收到信息后该如何处理。直接或简接要实现ChannelInboundHandler 接口.2、Bootstrap启动服务器或客户端 服务器用 ServerBootstrap 客户端用 BootStrap。pomdependency>

2018-01-15 14:47:12 762

原创 分治法求和最大的子数组

package orgi2;import java.util.Arrays;public class MaxArray { /** * 分治法求和最大的子数组 * @param args */ public static void main(String[] args) { int[] arr={13,-3,25,20,-4,-16,-23,18,20,-7,12,-5

2017-07-22 14:52:48 734

原创 java实现归并排序

package ogri1;import java.util.Arrays;public class ConflationSort {public static void main(String[] args) {int arr[]={4,3,1,4,5,6,7,8,2,9};mergeSort(arr);System.out.println(Arr

2017-07-21 23:20:19 189

原创 java实现插入排序

package ogri1;import java.util.Arrays;public class InsertSort {public static void main(String[] args) {int arr[]={4,3,1,4,5,6,7,8,2,9};sort(arr);System.out.println(Arrays.toStr

2017-07-21 23:16:17 167

原创 struts2环境搭建

第一步导入 jar 包asm-3.3.jarasm-commons-3.3.jarasm-tree-3.3.jarcommons-fileupload-1.3.jarcommons-io-2.0.1.jarcommons-lang3-3.1.jarcommons-logging-1.1.3.jarfreemarker-2.3.19.jarjavass

2016-07-03 22:24:27 197

原创 java实现读写excel表格

需要jar包poi-3.15-beta1.jarpoi-excelant-3.15-beta1.jarpoi-ooxml-3.15-beta1.jarcurvesapi-1.03.jarxmlbeans-2.6.0.jarpoi-ooxml-schemas-3.15-beta1.jar创建一个excelpublic static void

2016-05-03 15:54:44 631

原创 js实现简易的贪吃蛇

var direction=0;//0 上 1右 2下 3左        var snake=new Array(); //记录蛇的数组        var array=new Array(); //记录地图的数组        var food=null;//记录食物        var isChange=true;//记录是否可以改变方向           wind

2016-05-03 15:51:43 371

原创 java实现点击图片文字验证码

效果图如上,package cn.gdin.captcha;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;impo

2016-04-16 15:54:27 6000 8

原创 使用spring mybatis时,开启tomca失败

使用spring mybatis时,开启tomca时一直 Initializing Spring root WebApplicationContext,开启不了,后来mybaties 的maper文件的resultType不正确导致的

2016-04-12 20:45:16 209

原创 将json格式的数组字符串转换为java集合

/**     * 将json数字字符串转化为相应对象集合     * @param jsonArray json数组字符串     * @param clazz     Class类型     * @return     * @throws Exception     */    public static List parseJSONArray(String jso

2016-04-12 14:59:54 947

jvm规范和java规范

jvm规范和java规范书籍。对深入理解JVM和深入了解java很有帮助

2018-09-06

java,jquery,python api文档

各种编程语言api文档 各种编程语言api文档 各种编程语言api文档 各种编程语言api文档 各种编程语言api文档 各种编程语言api文档

2018-04-15

车辆租凭系统java源码

车辆租凭系统,java 车辆租凭系统,java 车辆租凭系统,java 车辆租凭系统,java

2018-04-15

漂亮登录页面模版

漂亮登录页面模版 漂亮登录页面模版漂亮登录页面模版漂亮登录页面模版漂亮登录页面模版漂亮登录页面模版

2018-04-15

空空如也

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

TA关注的人

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