Java
文章平均质量分 77
ThanksCreek
这个作者很懒,什么都没留下…
展开
-
Java对象序列化
什么是对象序列化?所谓的对象序列化(在一些书中也称为串行化),是指将对象转换成为二进制数据流的一种实现手段。通过将对象序列化,可以方便的实现对象的传输和存储。Java对象序列化将那些实现Serializable接口的对象转换成一个字节序列,并能够在以后将这个字节序列完全恢复为原来的对象。这一过程甚至可以通过网络进行,这意味着序列化机制能自动弥补不同操作系统之间的差异。也就是说,可以在运原创 2014-03-15 22:53:38 · 1665 阅读 · 1 评论 -
设计模式之策略模式
什么是策略模式?Strategy pattern is mainly about using different algorithm at different situation.策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。策略模式的好处在于你可以动态的改变对象的行为。一般的,策略模式主要分为以下三个角色:原创 2014-09-30 23:55:30 · 1265 阅读 · 1 评论 -
java逻辑运算符位运算符总结
一. 逻辑运算符逻辑运算符共有三种,即“非”、“和”、“或”,分别用 " ! "、“&&”、“||”表示。一般称为“条件操作”。· 和运算(&&)前后两个条件都为真时,才返回true,否则返回false。· 或运算(||)前后两个条件有一个为真时,返回true,都为假时,返回false。· &&逻辑与||逻辑或 它们都是逻辑运算符当使用逻辑原创 2014-03-05 23:17:02 · 2141 阅读 · 0 评论 -
Java监控文件目录的变化
在Java1.7以前的版本中,如果程序想要监控文件的变化,比较常规的做法是轮询要监控的文件目录,采用启动一条后台线程。这种做法性能较差尤其对于大批量的文件监控。1.7版本后,java.nio.file包提供了目录监控的api即 Watch Service API。我们把想要监控的目录注册进watchservice中,你把想要监控的事件告诉service,比如文件创建,删除,修改。当serv原创 2015-01-15 19:19:55 · 3687 阅读 · 0 评论 -
面向GC的Java编程
Java程序员在编码过程中通常不需要考虑内存问题,JVM经过高度优化的GC机制大部分情况下都能够很好地处理堆(Heap)的清理问题。以至于许多Java程序员认为,我只需要关心何时创建对象,而回收对象,就交给GC来做吧!甚至有人说,如果在编程过程中频繁考虑内存问题,是一种退化,这些事情应该交给编译器,交给虚拟机来解决。这话其实也没有太大问题,的确,大部分场景下关心内存、GC的问题,显得有点“转载 2014-12-31 23:07:18 · 771 阅读 · 0 评论 -
Java实现单例模式总结
单例模式(Singleton):是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。1、懒汉式线程不安全,当有多个线程并行调用 getInstance() 的时候,就会创建多个实例。public class Singleton { private static Singleton instance; private Sing原创 2015-02-28 22:17:50 · 923 阅读 · 0 评论 -
Java使用BlockingQueue实现生产者消费者模式
生产者和消费者模式通过执行工作的分离解耦,简化了开发模式,生产者和消费者可以以不同的速度生产和消费数据。 是一种非常好的解耦开发模式。Java实现的经典的方法是使用wait和notify方法来协调生产者消费者的同步合作,实现生产者消费者模式最方便的方法是使用juc中的阻塞队列。juc中的阻塞队列(BlockingQueue)结构更简单,更容易编程控制。 我们只需要编写业务代码,同步的问题,原创 2015-10-28 16:10:38 · 1773 阅读 · 0 评论 -
一次java全角字符与半角字符转换优化
全角与半角通常的英文字母、数字键、符号键都是半角的,半角的显示内码都是一个字节。而每个全角字符占用两个标准字符(或半角字符)位置半角字符是从33开始到126结束,与半角字符对应的全角字符是从65281开始到65374结束其中较为特殊的是空格,半角的空格是32.对应的全角空格是12288半角和全角的关系很明显,除空格外的字符偏移量是65248(65281-33 = 652原创 2015-11-27 20:30:11 · 1175 阅读 · 0 评论 -
ssh远程执行shell实例
基本原理SSH(Secure Shell)是一个提供数据通信安全、远程登录、远程指令执行等功能的安全网络协议。SSH发展了两个大版本SSH-1和SSH-2,目前主流的是SSH-2协议。SSH的主要特性,避免数据内容泄漏,数据被篡改,以及发送或接受地址伪装。SSH登录中主要分为认证阶段和传输阶段。由于非对称加密解密(公钥私钥)时间较慢,所以只在登录认证阶段使用。认证成功后通信双方使用在认证阶段两者约定原创 2016-02-02 20:28:01 · 1452 阅读 · 0 评论 -
java对管程的支持
管程的概念管程 (英语:Moniters,也称为监视器) 是一种程序结构,结构内的多个子程序(对象或模块)形成的多个工作线程互斥访问共享资源。这些共享资源一般是硬件设备或一群变量。管程实现了在一个时间点,最多只有一个线程在执行管程的某个子程序。与那些通过修改数据结构实现互斥访问的并发程序设计相比,管程实现很大程度上简化了程序设计。管程提供了一种机制,线程可以临时放弃互斥访问,等待某原创 2014-08-31 22:16:27 · 4869 阅读 · 1 评论 -
Java读-写锁
JAVA读写锁显示锁在java5.0之前,在协调共享对象访问时可以使用的机制只有synchronized和volatile。java5.0增加了一种新的机制:ReentrantLock。ReentrantLock并不是一种替代内置锁的方法,而是当内置锁不适用时,作为一种可选择的高级功能。与内置锁不同的是Lock提供了一个无条件的、可轮询的、定时的以及可中断的锁获取操作,所有加锁和解锁都是显原创 2014-08-16 19:04:39 · 1582 阅读 · 0 评论 -
java字符串反转总结
方法1 在Java中,最好的实现就是用JDK中StringBuffer的反转方法,它不仅速度快,效率高,而且还知道如何处理unicode代理对(surrogate pairs)。其它方案基本上都可以忽略掉。方法2 先把字符串转为字符数组。在进行循环反转方法3 利用递归的方法反转。方法4 利用StringBuffer进行反转方法5 利用位运算进行反转。代码示例:package原创 2014-04-02 14:34:40 · 1658 阅读 · 0 评论 -
Java利用httpasyncclient进行异步HTTP请求
前段时间有个需求在springmvc mapping的url跳转前完成一个统计的业务。显然需要进行异步的处理,不然出错或者异常会影响到后面的网页跳转。异步的方式也就是非阻塞式的,当异步调用成功与否程序会接着往下执行,不必等到输入输出处理完毕才返回。主要用到httpasyncclient-4.0.1.jar,httpclient-4.3.2.jar,httpcore-4.3.2.jar,http原创 2014-05-13 21:33:35 · 18325 阅读 · 2 评论 -
理解ThreadLocal类
1 ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 ThreadLocal,顾名思义,它不是一个线程,而是线程的一个本地化对象。当工作于多线程中的对象使用ThreadLocal维护变量时,ThreadLocal为每个使原创 2014-06-28 00:02:54 · 1244 阅读 · 0 评论 -
Java线程基础
一个线程执行一个顺序程序。在java中,线程通常是java.lang.Thread的子类,它提供了一些方法来创建线程、启动线程。挂起线程、等待线程完成。首先,创建一个实现Runnable接口的类,该类的run()方法完成所有的工作。例如,下面是一个打印字符串的简单线程。package lou.thread;public class HelloWorld implements Runna原创 2014-06-29 15:41:58 · 1194 阅读 · 0 评论 -
Java引用类型详解
JVM 的垃圾回收器对于不同类型的引用有不同的处理方式。java中对于一个对象来说,只要有引用的存在,它就会一直存在于内存中。如果这样的对象越来越多,超出了JVM中的内存总数,JVM就会抛出OutOfMemory错误。虽然垃圾回收的具体运行是由JVM来控制的,但是开发人员仍然可以在一定程度上与垃圾回收器进行交互,其目的在于更好的帮助垃圾回收器管理好应用的内存。这种交互方式就是原创 2014-07-29 20:16:42 · 1420 阅读 · 1 评论 -
理解java中的volatile关键字
Java语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。原创 2014-07-31 22:25:52 · 1375 阅读 · 0 评论 -
java类库中的设计模式
原帖:http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns提问:我正在学习GoF的《设计模式》,想了解些它们在实际中的应用的例子。大家能给我举一些使用设计模式的好例子吗?尤其是在Java类库中。赞同最高的回答:你可以通过Wikipedia对设计模式有个整体上的理解。Wikipedia上也原创 2014-07-31 19:52:03 · 2115 阅读 · 1 评论 -
java获取客户端IP地址和MAC地址
最近项目中要获得客户端的mac地址。服务端是移植的centos系统,arm架构的盒子。客户端是手机和移动设备。(其它场景应该也是类似的)首先要获得ip地址:根据客户端的http请求,利用request.getRemoteAddr()获取客户端Ip地址。在局域网内getRemoteAddr()和getRemoteHost()获得的结果相同。request.getRemoteAddr()是获得原创 2014-06-12 15:45:18 · 18771 阅读 · 2 评论 -
建立https链接的SLL验证证书失效问题
爬取网页遇到的目标站点证书不合法问题。使用jsoup爬取解析网页时,出现了如下的异常情况。javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBu原创 2016-10-14 11:33:18 · 8084 阅读 · 1 评论