
java
文章平均质量分 89
zxc123e
这个作者很懒,什么都没留下…
展开
-
线程同步
synchronized (line) { line.setStatus("停止"); String gpstime = line.getGpstime() + "--" + activity.line.get(j-1).getGpstime(); line.setGpstime(gpstime); li原创 2014-11-13 14:51:08 · 529 阅读 · 0 评论 -
Java并发包:Exchanger和Semaphore
文章译自:http://tutorials.jenkov.com/java-util-concurrent/index.html 抽空翻译了一下这个教程的文章,后面会陆续放出,如有不妥,请批评指正。 转自请注明出处。Exchangerjava.util.concurrent.Exchanger类代表的是一个会和点,这个会和点是两个线程交换对象的位置的,下图是这种机制的图示: 交换对象是通过翻译 2016-07-07 17:31:30 · 1020 阅读 · 0 评论 -
Java并发包:CountDownLatch和CyclicBarrier
CountDownLatchjava.util.concurrent.CountDownLatch是一种并发结构,它允许一个或者多个线程等待一个给定的操作集合完成。 CountDownLatch初始化时需要给定一个总数。这个总数将会随着调用countDown()方法次数递减。通过调用await()方法,线程将会等到这个总数变为0。调用await()方法会阻塞线程直到那个总数递减到0为止。 下面是翻译 2016-07-07 11:41:24 · 857 阅读 · 0 评论 -
Java并发包:双端阻塞队列(BlockingDeque)
BlockingDequeJava.util.concruuent包中的BlockingDeque接口是一种双端队列,向其中加入元素或从中取出元素都是线程安全的。这里展示如何使用BlockingDeque。BlockingDeque是一个双端队列,如果完全不可能对双端队列进行插入或者删除元素,它将会阻塞线程。deque 是 “Double Ended Queue”的简称。因此一个deque可以从两端翻译 2016-07-06 17:35:25 · 12375 阅读 · 0 评论 -
Java并发包:阻塞队列(BlockingQueue)
文章译自:http://tutorials.jenkov.com/java-util-concurrent/index.html 抽空翻译了一下这个教程的文章,后面会陆续放出,如有不妥,请批评指正。 转自请注明出处。BlockingQueue在java.util.concurrent包中的 BlockingQueue接口类是一种线程安全的队列。这篇文章我们将展示如何使用BlockingQueue翻译 2016-07-06 12:27:22 · 3123 阅读 · 0 评论 -
Java并发包:Java Fork and Join using ForkJoinPool
ForkJoinPool是在java7中增加的。ForkJoinPool类似与Java ExecutorService,但是有一个不同。ForkJoinPool使得切分它的任务成为一些小的任务然后提交给ForkJoinPool执行是很容易的。任务可以别不断的切分成子任务,只要任务是可以被切分的。这也许听起来很抽象,因此在教程中我将解释ForkJoinPool的工作原理,以及它是如何拆分任务的。For翻译 2016-07-15 18:51:07 · 1519 阅读 · 1 评论 -
使用 Eclipse Memory Analyzer 进行堆转储文件分析
Eclipse Memory Analyzer(MAT)是著名的跨平台集成开发环境 Eclipse Galileo 版本的 33 个组成项目中之一,它是一个功能丰富的 JAVA 堆转储文件分析工具,可以帮助你发现内存漏洞和减少内存消耗。本文主要介绍如何安装配置 Memory Analyzer,并结合一个实例,介绍如何利用 MAT 来进行堆转储文件分析,找到内存泄露的根源。概述对于大型 JAVA 应用转载 2016-10-12 17:29:59 · 546 阅读 · 0 评论 -
java之对称加密算法
对称加密算法是以一种使用频率高的初等的加密算法,如你所想,之所以称之为加密算法,说明加密秘钥是相同,加密过程可逆,而前面介绍的base64加密,和消息摘要加密算法是不可逆的.一般的对称加密算法有DES,DES秘钥长度不够,易被破解,进而衍生除了3DES,在DES的基础上有出现了AES算法,还有PBE,IDEA等算法. DES(Data Encryption Standrad)数据加密标准秘钥长度默原创 2015-03-21 23:06:16 · 4060 阅读 · 3 评论 -
lambda表达式
虽然java8出来很久了,但由于工作中一直没用到所以没有去了解,最近抽空学了一下。 lambda表达极大的简化的代码的书写,给java注入了一个新的生机。理解lambda表达式,有两个结果十分关键。第一个是lambda表达式自身,第二个是函数式接口。 lambda表达式本质上就是一个匿名函数,但是,这个方法不是独立执行的,而是用于实现函数式接口的另一个方法。因此,lambda表达式会导致产生一个原创 2015-12-25 20:53:52 · 595 阅读 · 0 评论 -
方法引用
Java8中有一个重要的特性与lambda表达式相关,叫做方法引用。方法引用提供了一种引用而不是执行方法的方式。这种特性与lambda表达式相关,因为它也需要由兼容的函数式接口构成的目标类上下文。计算时,方法引用也会创建函数式接口的一个实例。 1. 静态方法的引用 要创建静态方法引用,需要使用下面的一般语法: className::methodName 注意,类名与方法名之间用双冒号分开。:原创 2015-12-31 20:35:38 · 952 阅读 · 0 评论 -
java内存分析
1.程序计数器程序计数器:当前线程所执行字节码的行号指示器。 由于JVM的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器只会执行一条线程中的指令。为了线程切换后能够恢复到正确的执行位置,每条线程都需要一个独立的程序计数器,各线程之间计数器互不影响,独立存储。 程序计数器:线程私有的内存。2.Java堆: - 和程序开发密切相关...原创 2015-04-23 13:51:46 · 2949 阅读 · 0 评论 -
深入Java NIO
在此之前如果你对nio一点都不了解,前先看完这篇文章一、直接缓冲区与非直接缓冲区字节缓冲区(ByteBuffer)要么是直接的,要么是非直接的。如果为直接字节缓冲区,则 Java 虚拟机会尽最大努力直接在此缓冲区上执行本机 I/O 操作。也就是说,在每次调用基础操作系统的一个本机 I/O 操作之前(或之后),虚拟机都会尽量避免将缓冲区的内容复制到中间缓冲区中(或从中间缓冲区中复制内容)。显然,直接缓原创 2017-02-18 15:02:02 · 668 阅读 · 0 评论 -
java nio
nio 是New IO 的简称,在jdk1.4 里提供的新api 。Sun 官方标榜的特性如下: 为所有的原始类型提供(Buffer)缓存支持。字符集编码解码解决方案。Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其原创 2015-04-04 16:04:28 · 867 阅读 · 0 评论 -
RxJava初探
1. 简史ReactiveX是Reactive Extensions的缩写,一般简写为Rx,最初是LINQ的一个扩展,由微软的架构师Erik Meijer领导的团队开发,在2012年11月开源,Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流,Rx库支持.NET、JavaScript和C++,Rx近几年越来越流行了,现在已经支持几乎全部的流行编程语言了,Rx的大部分语言原创 2016-06-08 17:54:13 · 2807 阅读 · 0 评论 -
Java8中重要的收集器Collector
Collector介绍Java8的stream api能很方便我们对数据进行统计分类等工作,函数式编程的风格让我们方便并且直观地编写统计代码。例如:Stream<Integer> stream = Stream.iterate(1, item -> item+2).limit(6);// stream.filter(item -> item > 2).mapToInt(item ->原创 2017-03-29 16:30:40 · 8242 阅读 · 1 评论 -
Java并发包:AtomicBoolean和AtomicReference
文章译自:http://tutorials.jenkov.com/java-util-concurrent/index.html 这个系列文章已基本结束,如有不妥,请批评指正。 转自请注明出处。AtomicBooleanAtomicBoolean是一个读和写都是原子性的boolean类型的变量。这里包含高级的原子操作,例如compareAndSet()。AtomicBoolea翻译 2016-07-28 17:31:20 · 14367 阅读 · 2 评论 -
Spring Boot 2 之 WebFlux 反应式编程解析及实战
近些年来,反应式编程亦或称为响应式编程,在开发者社区中很受欢迎,特别在 Spring 5 以及 Spring Boot 2 发布之后热度再次飙升。以反应式编程为基础的 Spring WebFlux 组件作为异步非阻塞的系统解决方案,可以明显的提高系统吞吐量。首先看一下Srping官网上的一张图,对比一下SpringMvc和Spring WebFlux:Spring WebFlux 提供了两种...原创 2019-03-29 10:12:51 · 876 阅读 · 1 评论 -
AQS简单介绍与使用
AQS,全称是 AbstractQueuedSynchronizer,中文译为抽象队列式同步器。这个抽象类对于JUC并发包非常重要,JUC包中的ReentrantLock,,Semaphore,ReentrantReadWriteLock,CountDownLatch 等等几乎所有的类都是基于AQS实现的。AQS 中有两个重要的东西,一个等待队列,还有一个STATE标志,并且通过CAS来改变它的...原创 2019-04-29 22:44:49 · 21502 阅读 · 2 评论 -
Java并发包:ConcurrentMap
文章译自:http://tutorials.jenkov.com/java-util-concurrent/index.html 抽空翻译了一下这个教程的文章,后面会陆续放出,如有不妥,请批评指正。 转自请注明出处。 之前漏了一篇文章,这篇应该是在双端队列之后的,这里补上。ConcurrentMapjava.util.concurrent.ConcurrentMap接口代表一个Map,它可翻译 2016-07-08 17:29:55 · 15707 阅读 · 0 评论 -
Java并发包:Lock和ReadWriteLock
文章译自:http://tutorials.jenkov.com/java-util-concurrent/index.html 抽空翻译了一下这个教程的文章,后面会陆续放出,如有不妥,请批评指正。 转自请注明出处。Lockjava.util.concurrent.locks.Lock是一种线程同步机制,类似于synchronized块。然而,Locks比同步代码块更灵活更复杂。顺便提一下,翻译 2016-07-22 17:28:23 · 3584 阅读 · 0 评论 -
java的Base64加密
1.java安全组成JCA(Java Cryptography Architecture)JCE(Java Cryptography Extension)JSSE(Java Secure Socket Extension)JAAS(Java Authentication and Authentication Service)DES AES RSA算法通过jce提供,jsse提供基于ssl的加原创 2015-03-08 21:39:18 · 953 阅读 · 0 评论 -
java消息摘要算法加密
1.几种消息摘要算法简介md(Message Digest) 128位sha(Secure Hash Algorithm)mac(Message Authentication Code) 验证数据的完整性 数字签名核心算法2.应用场景 md可以用于用户登录密码的加密3.实现代码 public static void jdkmd() { try {原创 2015-03-09 15:58:36 · 2507 阅读 · 0 评论 -
非对称加密算法之java实现
非对称加密算法的秘钥分为公钥和私钥,公钥和私钥通常情况下是成对出现的,使用公钥加密的数据只有和它对应的私钥才能解开,反之亦然.在非对称加密算法中有一些算法是可以公钥加密,私钥解密的,反过来,私钥加密,公钥解密,下面是一些常见的非对称加密算法:DH(Diffie-Hellman)秘钥交换算法RSA–基于大数因子分解ElGamal–基于离散对数ECC(Elliptical curve Crypt原创 2015-03-22 16:32:58 · 1808 阅读 · 0 评论 -
两种数据类型的内存
基本类型(primitive types),基本类型共有8种,即int, short, long, byte, float, double, boolean, char(注意,并没有string的基本类型)。这种类型的定义是通过诸如int a = 3; long b = 255L;的形式来定义的,称为自动变量。值得注意的是,自动变量存的是字面值,不是类的实例,即不是类的引用,这里并没有类的存在。如i原创 2015-04-23 14:21:23 · 645 阅读 · 0 评论 -
Java之自定义Annotation
首先定义一个注解package com.chm.test;import java.lang.annotation.*;/** * Created by charmingfst */@Documented@Inherited@Retention(RetentionPolicy.RUNTIME)@Target({ ElementType.METHOD, ElementT原创 2014-05-30 17:43:01 · 1134 阅读 · 0 评论 -
volatile关键字解析
转自:http://www.cnblogs.com/dolphin0520/p/3920373.html(写的不错)一. Java内存模型我们来看一下Java内存模型,研究一下Java内存模型为我们提供了哪些保证以及在java中提供了哪些方法和机制来让我们在进行多线程编程时能够保证程序执行的正确性。 在Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来转载 2015-09-09 17:16:47 · 2199 阅读 · 1 评论 -
poi操作excel初步
一. 使用poi导出excelpublic class PoiWriteTest { public static void main(String[] args) { String[] title = new String[]{"id","name", "gender"}; HSSFWorkbook workbook = new HSSFWorkbook();原创 2015-04-28 18:53:09 · 515 阅读 · 0 评论 -
流API
在jdk8新增的许多功能中,有两个可能最为重要,分别是lambda表达式和流API。流API的设计考虑到了lambda表达式。而且,流API有力的展现了lambda表达式带给java的强大的能力。 流API的关键的一点在于执行非常复杂的查找、过滤和映射数据等操作。例如,使用流API时,可以构造动作序列,使其在概念上类似于使用SQL执行的数据库查询。另外,在很多时候,特别是涉及大数据集时,这类动作可原创 2016-01-17 22:07:39 · 2528 阅读 · 0 评论 -
Java线程池
一问题引出网络请求通常有两种场景:第一种,请求不是很频繁,而且每次连接后会保持相当一段时间来读数据或者写数据,最后断开,如文件下载,网络流媒体等。第二种是请求频繁,但是连接上以后读/写很少量的数据就断开连接。 考虑到服务的并发问题,如果每个请求来到以后服务都为它启动一个线程,那么这对服务的资源可能会造成很大的浪费,特别是第二种情况。如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结原创 2015-05-28 17:50:48 · 781 阅读 · 0 评论 -
JVM内幕:Java虚拟机详解
这篇文章解释了Java 虚拟机(JVM)的内部架构。下图显示了遵守 Java SE 7 规范的典型的 JVM 核心内部组件。 上图显示的组件分两个章节解释。第一章讨论针对每个线程创建的组件,第二章节讨论了线程无关组件。线程JVM 系统线程每个线程相关的程序计数器栈本地栈栈限制栈帧局部变量数组操作数栈动态链接 线程共享堆内存管理非堆内存即时编译方法区类文件结构类加转载 2015-09-01 17:33:49 · 818 阅读 · 0 评论 -
JVM之类加载过程
java虚拟机与程序的生命周期在如下几种情况下,java虚拟机将结束生命周期 1. 执行了System.exit()方法 2. 程序正常结束 3. 程序在执行过程中遇到了异常或者错误而异常终止 4. 由于操作系统出现错误而导致java虚拟机进程终止类的加载、连接与初始化加载:查找并加载类的二进制数据 连接 * 验证:确保被加载的类的正确性 * 准备:为类的静态变量分配内存原创 2015-04-08 13:32:49 · 924 阅读 · 0 评论 -
JVM之类加载器
一. 类加载器的父亲委托机制类加载器用来把类加载到Java虚拟机中。从JDK1.2开始,类的加载过程采用父亲委托机制,这种机制更好的保证java平台的安全。在此委托机制中,除了java虚拟机自带的根类加载器以外,其余的类加载器都有且只有一个父加载器。当java程序请求加载器loader加载一个类时,loader首先委托自己的父加载器去加载该类,若加载器能加载,则由父加载器完成加载任务,否则由加载器l原创 2015-04-09 20:12:59 · 708 阅读 · 0 评论 -
Java编程中“为了性能”尽量要做到的一些地方
下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控制资源的并发访问; 第二,控制实例的产生,以达到节约资源的目的; 第三,控制数据转载 2014-11-06 17:28:12 · 820 阅读 · 0 评论 -
try-with-resources 语句
try-with-resources 语句是声明一个或多个资源的try语句,在程序执行完后资源一定会随之被关闭,try-with-resources语句确保每一个声明的资源都会在该语句执行完毕后被关闭。任何实现了java.util.AutoCloseable和java.io.Closeable的对象都可以作为资源。下面的例子使用BufferedReader,读取文件的数据。这里Buffer翻译 2014-03-14 15:16:38 · 3521 阅读 · 0 评论 -
JAVA程序员一定知道的优秀第三方库(2016版)
几乎每个程序员都知道要“避免重复发明轮子”的道理——尽可能使用那些优秀的第三方框架或库,但当真正进入开发时,我却经常发现他们有时并不知道那些轮子在哪里。最近,我在业余时间带几个年轻的程序员一起做了一个很小的商业项目,而在一起开发的过程中,我几乎在所有需要判断字符串是否为空的地方,看到了下面的代码:if(inputString == null || inputString.length == 0){.转载 2016-05-15 18:11:16 · 3169 阅读 · 1 评论 -
Java并发包:ExecutorService和ThreadPoolExecutor
文章译自:http://tutorials.jenkov.com/java-util-concurrent/index.html 抽空翻译了一下这个教程的文章,后面会陆续放出,如有不妥,请批评指正。 转自请注明出处。 ExecutorServiceJava.util.concurrent.ExecutorService接口代表一种异步执行机制,它能够在后台执行任务。因此ExecutorSer翻译 2016-07-12 17:50:16 · 13620 阅读 · 3 评论 -
Java并发包:ScheduledExecutorService
文章译自:http://tutorials.jenkov.com/java-util-concurrent/index.html 抽空翻译了一下这个教程的文章,后面会陆续放出,如有不妥,请批评指正。 转自请注明出处。ScheduledExecutorServicejava.util.concurrent.ScheduleExecutorService是一种安排任务执行的ExecutorSer翻译 2016-07-14 18:02:55 · 7825 阅读 · 0 评论 -
线程安全性与安全策略
线程安全性当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么这个类就是线程安全的。原子性:提供了互斥访问,同一时刻只能有一个线程来对它进行操作可见性:一个线程对主内存的修改可以及时被其他线程观察到有序性:一个线程观察其他线程中的指令执行顺序,由于指令重排序的存在,该观察结果一般杂乱...原创 2019-06-28 16:05:03 · 783 阅读 · 0 评论