
JAVA
Damen2016
这个作者很懒,什么都没留下…
展开
-
Eclipse中堆内存的设置
进入eclipse程序文件夹,打开名称为eclipse.ini的配置文件进行编辑,按需添加或修改如下两项设置:当堆内存的余量小于40%时,JVM会将内存扩大到-Xmx的值 当堆内存的余量大于70%时,JVM会将内存缩小到-Xms的值 jvm初始堆内存,默认是物理内存的1/64 -Xms256m jvm最大堆内存,默认是物理内存的1/4 Xmx2048m在用eclipse开发的时候,特别是启原创 2016-09-01 09:47:29 · 6048 阅读 · 0 评论 -
RSA
RSA加密原理超经典解析链接: http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html 密码算法应用规范 规则:使用RSA算法时要选取合适的公共指数e说明:公共指数e位长越小,RS转载 2016-09-22 15:44:53 · 1688 阅读 · 0 评论 -
AES 代码实现
1 分组加密 首先了解下什么是分组加密:分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。 3 ECB的加密方式 http://zh.wikipedia.org/wiki/%E5%9D%97%E5%AF%86%E7%A0%81%E7%9A%84%E5%B7%A5%E4%BD%9C转载 2016-09-22 15:04:09 · 1897 阅读 · 0 评论 -
AES原理
在有些技术文献和资料里常用Rijndael代之AES算法。AES是一个对称的、块加密算法,什么意思?“对称”的意思是:(1)甲方选择某一种加密规则,对信息进行加密;(2)乙方使用同一种规则,对信息进行解密。这种加密模式有一个最大弱点:甲方必须把加密规则告诉乙方,否则无法解密。“块”的意思是:如果待加密数据太长,则需要按固定长度分割后,对每段明文数据依次单独加密。AES算法数据分组的长度和秘钥长度相互转载 2016-09-22 11:40:59 · 3070 阅读 · 0 评论 -
Java单例模式
最简单的实现首先,能够想到的最简单的实现是,把类的构造函数写成private的,从而保证别的类不能实例化此类,然后在类中提供一个静态的实例并能够返回给使用者。这样,使用者就可以通过这个引用使用到这个类的实例了。public class SingletonClass { private static final SingletonClass instance = new SingletonCla原创 2016-09-21 15:38:33 · 257 阅读 · 0 评论 -
JAVA设计模式
1.1. 什么是模式 个人感觉模式更多的是项目经验的提炼,是某种特定场景下的经验之谈。模式是典型场景的解决方案,所谓某典型场景,为有相似目标,有相似约束,且场景具有重复性。所以设计模式往往是发现,而不是发明。你的设计不自觉地落入到某种设计模式中,无论你事先了解这种模式与否。但若你事先了解,你则可站在巨人的肩膀上,借鉴前人的经验,设计更合理更简单的方案。1.2. 主要模式简记 1.2.1.转载 2016-09-23 11:53:01 · 614 阅读 · 0 评论 -
关于 23 种设计模式的有趣见解
1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。原创 2016-09-23 11:44:37 · 460 阅读 · 0 评论 -
Java 同步锁
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。二、然而,当一个线程访问object的一个synchronized(this)同步代码块时原创 2016-09-18 16:14:14 · 2335 阅读 · 0 评论 -
数字签名
通俗易懂的数字签名解析链接: http://www.cnblogs.com/1-2-3/archive/2007/09/17/colloquialism-digital-certificate-part1.html http://www.cnblogs.com/1-2-3/archive/2007/09/19/colloquialism-digital-certificate-part2.htm转载 2016-09-22 17:18:37 · 2301 阅读 · 0 评论 -
JVM、GC的一些事
JVM的基本结构一般如下图所示: JVM主要包括四个部分: 1.类加载器(ClassLoader):在JVM启动时或者在类运行时将需要的class加载到JVM中。(右图表示了从java源文件到JVM的整个过程,可配合理解。 关于类的加载机制,可以参考http://blog.youkuaiyun.com/tonytfjing/article/details/47212291) 2.执行引擎:负责执行clas原创 2016-09-19 14:56:12 · 411 阅读 · 1 评论 -
ClassLoader
ClassLoader,即java类加载器,主要作用是将class加载到JVM内,同时它还要考虑class由谁来加载。在说java的类加载机制之前,还是像前面的博客一样,先说说为什么要知道java的类加载机制。个人认为主要有以下几个原因:按需加载。JVM启动时不能确定我要加载哪些东西,或者有些类非常大,我只希望用到它时再加载,并非一次性加载所有的class,所以这时候了解了加载机制就可以按需加载了。原创 2016-09-19 10:36:13 · 484 阅读 · 1 评论 -
CompletionService + Callable实现线程动态返回结果
一般情况下,我们使用Runnable作为基本的任务表示形式,但是Runnable是一种有很大局限的抽象,run方法中只能记录日志,打印,或者把数据汇总入某个容器(一方面内存消耗大,另一方面需要控制同步,效率很大的限制),总之不能返回执行的结果;比如同时1000个任务去网络上抓取数据,然后将抓取到的数据进行处理(处理方式不定),我觉得最好的方式就是提供回调接口,把处理的方式最为回调传进去;但是现在我们原创 2016-09-18 11:52:03 · 345 阅读 · 0 评论 -
Http的多线程下载的实现
a、对于网络上的一个资源,首先发送一个请求,从返回的Content-Length中回去需要下载文件的大小,然后根据文件大小创建一个文件。 b、根据线程数和文件大小,为每个线程分配下载的字节区间,然后每个线程向服务器发送请求,获取这段字节区间的文件内容。 c、利用RandomAccessFile的seek方法,多线程同时往一个文件中写入字节。package com.zhy.mutilthread_原创 2016-09-14 16:39:18 · 3729 阅读 · 0 评论 -
Excutor的使用
为每一个请求开辟一个线程,首先我得承认我也经常用这样的写法~但是我们还是要吐槽下这样写法的不足: a、线程的生命周期的开销还是相当高的,大量的线程的创建将消耗大量的计算机资源 b、可创建线程的数量存在一个限制值(这个值由平台觉得,且受很多因素的制约),如果超过这个限制,可能会报OOM错误 c、在一定范围内,增加线程可以提高系统吞吐量,但是超过了这个范围,就物极必反了,只会降低程序的执行速度。原创 2016-09-14 15:22:23 · 1398 阅读 · 0 评论 -
CyclicBarrier的使用
CyclicBarrier把所有的线程都阻塞在一个阀门位置cyclicbarrier.awaite(),然后等到等待的线程数到达预设的值,就打开这个阀门。记得是阻塞线程,不是阻塞操作,在同一个线程使劲掉await是没什么效果的。public class CyclicBarrierTest{ private final int STUDENT_COUNT = 10; private原创 2016-09-14 14:48:36 · 366 阅读 · 0 评论 -
FutureTask的使用
FutureTask 有点类似Runnable,都可以通过Thread来启动,不过FutureTask可以返回执行完毕的数据,并且FutureTask的get方法支持阻塞。 由于:FutureTask可以返回执行完毕的数据,并且FutureTask的get方法支持阻塞这两个特性,我们可以用来预先加载一些可能用到资源,然后要用的时候,调用get方法获取(如果资源加载完,直接返回;否则继续等待其加载完原创 2016-09-14 10:07:15 · 480 阅读 · 0 评论 -
Semaphore信号量的使用
public class ConnectPool { private ArrayList<Conn> pool = new ArrayList<Conn>(); private Semaphore semaphore = new Semaphore(3); class Conn { } ConnectPool() { pool.add(new Conn原创 2016-09-14 09:18:40 · 785 阅读 · 0 评论 -
AndroidKeyStore的使用
密码算法使用: 关于对称加密:Google推荐使用使用的GCM模式,但是我司代码中大量使用的CBC模式,两个模式的代码,华为代码进行修改的时候,必然会考虑兼容性问题,因此把两段自己写的代码案例都贴出来供开发人员参考,便于产品的修改。1 对称加密:本地随机的密钥 方案:直接使用androidstore生成随机数,随机数做密钥1.1 AES_CBC android 实现 函数主体:public c转载 2016-09-22 17:57:03 · 8307 阅读 · 3 评论