![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 69
wj?
这个作者很懒,什么都没留下…
展开
-
将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 阅读 · 0 评论 -
四、线程同步-volatile关键字
一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。 禁止进行指令重排序。 例子 private boolean stop=true; @Test public void test() throws Excep...原创 2018-08-09 11:23:15 · 219 阅读 · 0 评论 -
三、java多线程同步-锁
锁概述锁是解决线程安全问题的最基本的解决方案。通过加锁,使得会发生线程安全问题的代码单线程串行。从而解决线程安全问题。锁的分类公平锁和非公平锁公平锁是按照锁申请的顺序来分配锁资源。 非公平锁是允许插队的,可能后申请的线程比先申请的线程优先获取锁。java中锁一般默认都是非公平锁。因为公平锁为了保障公平往往会增加线程的唤醒和暂停。例如一个运行中的线程要获取锁必须先检查有没有其...原创 2018-08-08 15:17:02 · 205 阅读 · 0 评论 -
监听文件改变 fileAlterationMonitor
监听文件改动Apacha common.io2.0提供了监听文件变化的功能。功能由三个组件组成。 监听器 FileAlterationListener 用于实现文件改变时触发的行为。 观察者 FileAlterationObserver 用于观察文件的改变,通知注册的监听器执行相应的事件。 监视器 FileAlterationMonitor 通过一线程...原创 2018-08-25 00:05:58 · 7566 阅读 · 0 评论 -
十、JUC之AQS
AQS即AbstractQueuedSynchronizer,是jdk提供的一个用于实现阻塞锁和依赖于先进先出等待队列的相关同步器(信号量,事件等)。AQS是concurrent包的基石。AQS 状态。它依赖一个int类型的原子变量来表示状态。private volatile int state;//共享变量,使用volatile修饰保证线程可见性对state操作的基本方法...原创 2018-09-01 21:52:24 · 188 阅读 · 0 评论 -
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 · 887 阅读 · 2 评论 -
ConcurrentHashMap源码解析(jdk1.8)
jdk8的ConcurrentHashMap改动非常大。放弃了之前segment锁,改用cas+synchronized来实现同步。常量含义 /** * table数组最大容量。 */ private stactic final int MAXIMUM_CAPACITY = 1 << 30; /** * 默认初始化容量,是...原创 2018-09-18 20:30:25 · 223 阅读 · 0 评论 -
java线程池和Executor架构
为什么要使用线程池线程的创建和销毁会带来系统的开销。通过线程池进行线程的管理,可以进行线程的复用,避免线程频繁的创建和消耗。《java并发编程的艺术》 合理利用线程池能够带来三个好处降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会...原创 2018-09-25 21:24:35 · 197 阅读 · 0 评论 -
EventListenerSupport实现事件监听
EventListenerSupport是apache lang3包提供用于处理事件监听的解决方案。pom <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifact...原创 2018-09-20 15:13:35 · 666 阅读 · 0 评论 -
fastjson自定义枚举反序列化
自定义的枚举类型反序列化fastjson默认提供的对枚举类型的反序列化的方式有两种根据枚举的name 根据枚举的ordinal值但是如果需要通过自定义的值反序列化成枚举,就需要自定义反序列化器。如下面枚举,我想通过EnumValue接口返回的value值进行反序列化 12345678910111213141516 in...原创 2018-10-28 12:33:00 · 10016 阅读 · 1 评论 -
高性能集合框架——fastUtils
FastUtils简介fastutil通过提供特定类型的映射,集合,列表和优先级队列来扩展Java™集合框架,并且占用内存很少,并且可以快速访问和插入; 还提供大(64位)数组,集和列表,以及用于二进制和文本文件的快速,实用的I / O类。性能特定类型的Map和Set比标准的集合类快上2-10倍。但是以对象作为key的HashMap往往比jdk的HashMap慢,因为fastutil不...原创 2018-07-25 11:52:14 · 2311 阅读 · 1 评论 -
Log4j代码形式配置
Log4j代码形式配置 Logger:日志记录器,负责收集处理日志记录 (如何处理日志)Appender:日志输出目的地,负责日志的输出 (输出到什么 地方)Layout:日志格式化,负责对输出的日志格式化(以什么形式展现) 代码Logger logger = LogManager.getLogger(logName);Logger.setLevel(Le...原创 2018-07-17 17:03:19 · 2027 阅读 · 0 评论 -
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 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 · 164 阅读 · 0 评论 -
分治法求和最大的子数组
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 阅读 · 0 评论 -
【netty】 ByteBuf的常用API总结
一、创建1、池化创建ByteBufAllocator获取ByteBufAllocatorChannel channel = ...;ByteBufAllocator allocator = channel.alloc();//1....ChannelHandlerContext ctx = ...;ByteBufAllocator allocator2 = ctx.allo原创 2018-01-21 11:33:34 · 12736 阅读 · 0 评论 -
一、netty初学,简单的echo服务器,客户端
无论服务器还是客户端都是由下面两步组成1、ChannelHandler 用与处理各种事件的逻辑处理。决定了连接创建后和接收到信息后该如何处理。直接或简接要实现ChannelInboundHandler 接口.2、Bootstrap启动服务器或客户端 服务器用 ServerBootstrap 客户端用 BootStrap。pomdependency>原创 2018-01-15 14:47:12 · 762 阅读 · 0 评论 -
ThreadLocal的原理
ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。Thread-1中只有一个ThreadLocal.ThreadLocalMap(图中列就是一个ThreadLocal.ThreadLocalMap),而ThreadLocal设置值进去Thr...原创 2018-02-24 11:01:56 · 179 阅读 · 0 评论 -
Caffeine使用指南
Caffeine使用指南Caffeine基于java8的高性能,接近最优的缓存库。Caffeine提供的内存缓存使用参考Google guava的API。Caffeine是基于Google guava和 ConcurrentLinkedHashMap的设计经验上改进的成果。Caffeine可以通过建造者模式灵活的组合以下特性:通过异步自动加载实体到缓存中基于大小的回收策略基于时间的回收...翻译 2018-12-11 11:15:12 · 7039 阅读 · 0 评论