
Java
文章平均质量分 92
fw0124
这个作者很懒,什么都没留下…
展开
-
Java-JSSE-SSL/TLS编程代码实例-双向认证
使用JSSE实现一个双向认证的SSL/TLS编程代码实例。原创 2014-11-11 17:07:36 · 22688 阅读 · 9 评论 -
Java NIO系列教程(十一) Pipe
原文链接 作者:Jakob Jenkov 译者:黄忠 校对:丁一Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。这里是Pipe原理的图示:创建管道通过Pipe.open()方法打开管道。例如:Pipe pipe = Pipe.o转载 2015-03-17 15:04:11 · 1087 阅读 · 0 评论 -
Java NIO系列教程(十) Java NIO DatagramChannel
原文链接 作者:Jakob Jenkov 译者:郑玉婷 校对:丁一Java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。打开 DatagramChannel下面是 DatagramChannel 的打开方式:DatagramChannel转载 2015-03-17 14:58:55 · 1285 阅读 · 0 评论 -
Java NIO系列教程(八) SocketChannel
原文链接 作者:Jakob Jenkov 译者:郑玉婷 校对:丁一Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel:打开一个SocketChannel并连接到互联网上的某台服务器。 一个新连接到达ServerSocketChannel时,会创建一个SocketChann转载 2015-03-17 14:52:03 · 1107 阅读 · 0 评论 -
Java NIO系列教程(六) Selector
原文链接作者:Jakob Jenkov译者:浪迹v 校对:丁一Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。下面是本文所涉及到的主题列表:为什么使用Selector? Selector的创建向Selector注册通转载 2015-03-17 14:49:25 · 1130 阅读 · 0 评论 -
Java NIO系列教程(五) 通道之间的数据传输
原文地址:http://tutorials.jenkov.com/java-nio/scatter-gather.html作者:Jakob Jenkov 译者:郭蕾 校对:周泰在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel。transferFrom转载 2015-03-17 14:44:59 · 1053 阅读 · 0 评论 -
Java NIO系列教程(二) Channel
原文链接 作者:Jakob Jenkov 译者:airu 校对:丁一Java NIO的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。 通道可以异步地读写。 通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。 正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。Cha转载 2015-03-17 14:36:19 · 1032 阅读 · 0 评论 -
Java NIO系列教程(七) FileChannel
原文链接 作者:Jakob Jenkov 译者:周泰 校对:丁一Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。打开FileChannel在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通转载 2015-03-17 14:51:00 · 817 阅读 · 0 评论 -
Java NIO系列教程(一) Java NIO 概述
原文链接 作者:Jakob Jenkov 译者:airu 校对:丁一Java NIO 由以下几个核心部分组成:Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件转载 2015-03-17 14:29:29 · 1162 阅读 · 0 评论 -
Java NIO系列教程(十二) Java NIO与IO
原文地址:http://tutorials.jenkov.com/java-nio/nio-vs-io.html作者:Jakob Jenkov 译者:郭蕾 校对:方腾飞当学习了Java NIO和IO的API后,一个问题马上涌入脑海:我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。转载 2015-03-17 15:22:33 · 2328 阅读 · 0 评论 -
Java NIO系列教程(四) Scatter/Gather
原文地址:http://tutorials.jenkov.com/java-nio/scatter-gather.html作者:Jakob Jenkov 译者:郭蕾 Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作。分散(scatter转载 2015-03-17 14:43:25 · 1149 阅读 · 0 评论 -
Java NIO系列教程(九) ServerSocketChannel
原文链接 作者:Jakob Jenkov 译者:郑玉婷 校对:丁一Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。ServerSocketChannel类在 java.nio.channels包中。这里有个例子:ServerSocketCh转载 2015-03-17 14:57:13 · 1137 阅读 · 0 评论 -
Java7新语法 -try-with-resources
使用try-with-resources, 可以自动关闭实现了AutoCloseable或者Closeable接口的资源。翻译 2015-11-20 15:32:41 · 9641 阅读 · 0 评论 -
JAVA的可变类与不可变类
可变类和不可变类(Mutable and Immutable Objects)1. 可变类和不可变类(Mutable and Immutable Objects)的初步定义: 可变类:当你获得这个类的一个实例引用时,你可以改变这个实例的内容。 不可变类:当你获得这个类的一个实例引用时,你不可以改变这个实例的内容。不可变类的实例一但创建,其内在成员变量的值就不能被修改。 举个例子转载 2015-11-05 11:10:22 · 13417 阅读 · 6 评论 -
Java 内存区域和GC机制
Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。概括地说,该机制对JVM(Java Virtual Machine)转载 2011-01-06 21:40:00 · 3035 阅读 · 0 评论 -
JVM监控工具和方法
在JVM运行的过程中,为保证其稳定、高效,或在出现GC问题时分析问题原因,我们需要对GC进行监控。所谓监控,其实就是分析清楚当前GC的情况。其目的是鉴别JVM是否在高效的进行垃圾回收,以及有没有必要进行调优。通过监控GC,我们可以搞清楚很多问题,如:1,minor GC和full GC的频率;2,执行一次GC所消耗的时间;3,新生代的对象何时被移到老生代以及花费了多少时间;4,转载 2015-09-30 23:54:02 · 6291 阅读 · 0 评论 -
JVM监控与调优
参数设置 在Java虚拟机的参数中,有3种表示方法(出自:http://www.cnblogs.com/wenfeng762/archive/2011/08/14/2137810.html),用“ps -ef |grep "java"命令,可以得到当前Java进程的所有启动参数和配置参数:标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;非标准参数(-X)转载 2015-09-30 23:48:16 · 1210 阅读 · 0 评论 -
Java HTTPS客户端如何处理证书
在SunJSSE中,有一个信任管理器类负责决定是否信任远端的证书,这个类有如下的处理规则:1)若系统属性javax.net.ssl.trustStore指定了TrustStore文件,那么信任管理器就去jre安装路径下的lib/security/目录中寻找并使用这个文件来检查证书。2)若该系统属性没有指定TrustStore文件,它就会去JRE安装路径下寻找默认的TrustStore文件,这个文件的相对路径为:lib/security/jssecacerts。3)若jssecacerts不存在,但是c原创 2015-09-10 12:45:27 · 22370 阅读 · 0 评论 -
java日志需要知道的几件事(commons-logging,log4j,slf4j,logback)
一、 概念Commons-logging : apache最早提供的日志的门面接口。避免和具体的日志方案直接耦合。类似于JDBC 的api 接口,具体的的JDBC driver 实现由各数据库提供商实现。通过统一接口解耦,不过其内部也实现了一些简单日志方案。Log4j : 经典的一种日志解决方案。内部把日志系统抽象封装成Logger 、appender 、pattern 等实现。我们可以通转载 2015-09-08 22:46:06 · 1872 阅读 · 0 评论 -
SLF4j笔记
特性:classes are loaded by the JVMslf4j不需要classloader的原理(而commons-logging需要classloader,所以会内存泄漏或者别的加载问题)Mapped Diagnostic Context (MDC)只有log4j和logback支持,slf4j也支持支持自定义日志级别(Marker),目前只有logback对其进转载 2015-09-08 23:02:13 · 945 阅读 · 0 评论 -
SSL/TLS的Java实现--JSSE
转载:http://blog.youkuaiyun.com/wangyangzhizhou/article/details/38406253转载 2014-11-11 17:05:58 · 13993 阅读 · 0 评论 -
Java NIO系列教程(三) Buffer
原文链接 作者:Jakob Jenkov 译者:airu 校对:丁一Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。下面是NIO Buffer相关的话转载 2015-03-17 14:41:08 · 1110 阅读 · 0 评论 -
Java类加载/ClassLoader
(1) JVM中ClassLoader的类型(2) 类加载的规则(3) 类加载的方法(4) 代码实例(5) ContextClassLoader原创 2015-03-05 12:08:26 · 1516 阅读 · 0 评论 -
Java多线程 -- Map容器性能比较
单线程环境下可以使用HashMap和TreeMap。如果不是遍历时需要按照Key的排序来返回结果,应该采用HashMap。多线程环境下可以使用以下四种Map容器。1)Collections.synchronizedMap(new HashMap());2)ConcurrentHashMap3)Collections.synchronizedSortedMap(new TreeMap())4)ConcurrentSkipListMap如果不需要遍历时需要按照Key的排序来返回结果,首选Concur原创 2015-01-30 17:35:33 · 9902 阅读 · 0 评论 -
Java多线程 -- 深入理解JMM(Java内存模型) --(三)顺序一致性
顺序一致性内存模型是一个被计算机科学家理想化了的理论参考模型,它为程序员提供了极强的内存可见性保证。顺序一致性内存模型有两大特性:一个线程中的所有操作必须按照程序的顺序来执行。(不管程序是否同步)所有线程都只能看到一个单一的操作执行顺序。在顺序一致性内存模型中,每个操作都必须原子执行且立刻对所有线程可见。转载 2011-08-02 10:45:02 · 3877 阅读 · 0 评论 -
Java多线程 -- 正确使用Volatile变量
原文http://www.ibm.com/developerworks/cn/java/j-jtp06197.ht转载 2011-08-08 22:42:07 · 3788 阅读 · 0 评论 -
Java多线程 -- ConcurrentHashMap
HashTable容器在竞争激烈的并发环境下表现出效率低下的原因,是因为所有访问HashTable的线程都必须竞争同一把锁,那假如容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并发访问效率,这就是ConcurrentHashMap所使用的锁分段技术,首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个转载 2015-01-30 16:04:43 · 6561 阅读 · 2 评论 -
Java中Socket上的Read操作阻塞问题
从Socket上读取对端发过来的数据调用read()和readLine()。这两个方法都会读取对端发送过来的数据,如果无数据可读,就会阻塞直到有数据可读。或者到达流的末尾,这个时候分别返回-1和null。这个特性使得编程非常方便也很高效。但是这样也有一个问题,就是如何让程序从这两个方法的阻塞调用中返回。原创 2014-11-18 13:50:23 · 51423 阅读 · 6 评论 -
使用Java进行SNMP编程-SNMP4J-SNMPv3-代码实例
使用SNMP4J可以很方便的实现一个SNMP NMS的功能。前一篇介绍了SNMPv1/v2的编程 http://blog.youkuaiyun.com/fw0124/article/details/8559564对于SNMPv3,不同点有1) 需要创建USM对象并添加User, 关于USM->http://blog.youkuaiyun.com/fw0124/article/details/85570原创 2013-01-31 15:12:10 · 28057 阅读 · 7 评论 -
使用Java进行SNMP编程-SNMP4J-SNMPv1/v2-代码实例
使用SNMP4J可以很方便的实现一个SNMP NMS的功能。对于SNMPv1/SNMPv2,简单的说,只需要以下几个步骤1) 创建Snmp对象snmp2) 创建CommunityTarget对象target,并指定community, version, address, timeout, retry等参数。3) 创建PDU对象pdu,并指定操作类型(GET/GETNEXT/原创 2013-01-31 15:06:09 · 31457 阅读 · 11 评论 -
Java-JSSE-SSL/TLS编程代码实例-单向认证
使用JSSE实现一个单向认证的SSL/TLS编程代码实例。原创 2014-11-11 17:12:19 · 11673 阅读 · 0 评论 -
JDBC4.0的新特性
原文:http://hi.baidu.com/aguiro/blog/item/95c4dffe0e10a93d5c600817.htmlJDBC 4.0的特性得益于Mustang中的Java SE 服务提供商机制,Java开发人员再也不必用类似Class.forName转载 2011-09-19 21:40:47 · 6893 阅读 · 0 评论 -
Java中的ReentrantLock和synchronized两种锁定机制的对比
原文:http://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。转载 2011-08-09 15:03:01 · 266166 阅读 · 56 评论 -
Java多线程 -- 深入理解JMM(Java内存模型) -- happens-before俗解
学习Java并发,到后面总会接触到happens-before偏序关系。初接触玩意儿简直就是不知所云,下面是经过一段时间折腾后个人对此的一点浅薄理解,希望对初接触的人有帮助。如有不正确之处,欢迎指正。synchronized、大部分锁,众所周知的一个功能就是使多个线程互斥/串行的(共享锁允许多个线程同时访问,如读锁)访问临界区,但他们的第二个功能 —— 保证变量的可见性 —— 常被遗忘。转载 2015-01-15 14:55:54 · 8624 阅读 · 1 评论 -
Java多线程 -- 深入理解JMM(Java内存模型) --(二)重排序
在单线程程序中,对存在控制依赖的操作重排序,不会改变执行结果(这也是as-if-serial语义允许对存在控制依赖的操作做重排序的原因);但在多线程程序中,对存在控制依赖的操作重排序,可能会改变程序的执行结果。转载 2011-08-01 23:42:28 · 7817 阅读 · 0 评论 -
Java-泛型编程-使用通配符? extends 和 ? super
泛型中使用通配符有两种形式:子类型限定<? extends xxx>和超类型限定<? super xxx>。原创 2014-12-31 19:10:39 · 18098 阅读 · 1 评论 -
Java-泛型编程-类型擦除(Type Erasure)
Java中的泛型代码和C++中的模板有一个很大的不同:C++中模板的实例化会为每一种类型都产生一套不同的代码,这就是所谓的代码膨胀。Java中并不会产生这个问题。虚拟机中并没有泛型类型对象,所有的对象都是普通类。虚拟机中的泛型转换需要记住4条事实:1) 定义任何一个泛型都会自动产生其原始类型(raw type)2) 这个过程中,泛型类型会被擦除,替换为其限定类型...原创 2014-12-31 18:53:05 · 6056 阅读 · 1 评论 -
Java多线程 -- 深入理解JMM(Java内存模型) --(六)final
与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。转载 2011-08-16 16:14:53 · 9047 阅读 · 1 评论 -
Java多线程 -- 深入理解JMM(Java内存模型) --(五)锁
锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。转载 2011-08-09 10:25:44 · 8480 阅读 · 1 评论 -
Java多线程 -- 深入理解JMM(Java内存模型) --(七)总结
虽然使用同步最常见的原因是保证对代码关键部分的原子访问,但实际上同步提供三个独立的功能――原子性、可见性和顺序性。转载 2011-09-01 10:04:33 · 4642 阅读 · 0 评论