自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

转载 JAVA设计模式

1.1. 什么是模式 个人感觉模式更多的是项目经验的提炼,是某种特定场景下的经验之谈。模式是典型场景的解决方案,所谓某典型场景,为有相似目标,有相似约束,且场景具有重复性。所以设计模式往往是发现,而不是发明。你的设计不自觉地落入到某种设计模式中,无论你事先了解这种模式与否。但若你事先了解,你则可站在巨人的肩膀上,借鉴前人的经验,设计更合理更简单的方案。1.2. 主要模式简记 1.2.1.

2016-09-23 11:53:01 579

原创 关于 23 种设计模式的有趣见解

1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。

2016-09-23 11:44:37 416

转载 AndroidKeyStore的使用

密码算法使用: 关于对称加密:Google推荐使用使用的GCM模式,但是我司代码中大量使用的CBC模式,两个模式的代码,华为代码进行修改的时候,必然会考虑兼容性问题,因此把两段自己写的代码案例都贴出来供开发人员参考,便于产品的修改。1 对称加密:本地随机的密钥 方案:直接使用androidstore生成随机数,随机数做密钥1.1 AES_CBC android 实现 函数主体:public c

2016-09-22 17:57:03 8147 3

转载 数字签名

通俗易懂的数字签名解析链接: 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 2240

转载 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 1640

转载 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 1856

转载 AES原理

在有些技术文献和资料里常用Rijndael代之AES算法。AES是一个对称的、块加密算法,什么意思?“对称”的意思是:(1)甲方选择某一种加密规则,对信息进行加密;(2)乙方使用同一种规则,对信息进行解密。这种加密模式有一个最大弱点:甲方必须把加密规则告诉乙方,否则无法解密。“块”的意思是:如果待加密数据太长,则需要按固定长度分割后,对每段明文数据依次单独加密。AES算法数据分组的长度和秘钥长度相互

2016-09-22 11:40:59 2968

原创 Java单例模式

最简单的实现首先,能够想到的最简单的实现是,把类的构造函数写成private的,从而保证别的类不能实例化此类,然后在类中提供一个静态的实例并能够返回给使用者。这样,使用者就可以通过这个引用使用到这个类的实例了。public class SingletonClass { private static final SingletonClass instance = new SingletonCla

2016-09-21 15:38:33 232

原创 JVM、GC的一些事

JVM的基本结构一般如下图所示: JVM主要包括四个部分: 1.类加载器(ClassLoader):在JVM启动时或者在类运行时将需要的class加载到JVM中。(右图表示了从java源文件到JVM的整个过程,可配合理解。 关于类的加载机制,可以参考http://blog.csdn.net/tonytfjing/article/details/47212291) 2.执行引擎:负责执行clas

2016-09-19 14:56:12 389 1

原创 ClassLoader

ClassLoader,即java类加载器,主要作用是将class加载到JVM内,同时它还要考虑class由谁来加载。在说java的类加载机制之前,还是像前面的博客一样,先说说为什么要知道java的类加载机制。个人认为主要有以下几个原因:按需加载。JVM启动时不能确定我要加载哪些东西,或者有些类非常大,我只希望用到它时再加载,并非一次性加载所有的class,所以这时候了解了加载机制就可以按需加载了。

2016-09-19 10:36:13 456 1

原创 Java 同步锁

Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。二、然而,当一个线程访问object的一个synchronized(this)同步代码块时

2016-09-18 16:14:14 2294

原创 CompletionService + Callable实现线程动态返回结果

一般情况下,我们使用Runnable作为基本的任务表示形式,但是Runnable是一种有很大局限的抽象,run方法中只能记录日志,打印,或者把数据汇总入某个容器(一方面内存消耗大,另一方面需要控制同步,效率很大的限制),总之不能返回执行的结果;比如同时1000个任务去网络上抓取数据,然后将抓取到的数据进行处理(处理方式不定),我觉得最好的方式就是提供回调接口,把处理的方式最为回调传进去;但是现在我们

2016-09-18 11:52:03 318

原创 Http的多线程下载的实现

a、对于网络上的一个资源,首先发送一个请求,从返回的Content-Length中回去需要下载文件的大小,然后根据文件大小创建一个文件。 b、根据线程数和文件大小,为每个线程分配下载的字节区间,然后每个线程向服务器发送请求,获取这段字节区间的文件内容。 c、利用RandomAccessFile的seek方法,多线程同时往一个文件中写入字节。package com.zhy.mutilthread_

2016-09-14 16:39:18 3668

原创 Excutor的使用

为每一个请求开辟一个线程,首先我得承认我也经常用这样的写法~但是我们还是要吐槽下这样写法的不足: a、线程的生命周期的开销还是相当高的,大量的线程的创建将消耗大量的计算机资源 b、可创建线程的数量存在一个限制值(这个值由平台觉得,且受很多因素的制约),如果超过这个限制,可能会报OOM错误 c、在一定范围内,增加线程可以提高系统吞吐量,但是超过了这个范围,就物极必反了,只会降低程序的执行速度。

2016-09-14 15:22:23 1370

原创 CyclicBarrier的使用

CyclicBarrier把所有的线程都阻塞在一个阀门位置cyclicbarrier.awaite(),然后等到等待的线程数到达预设的值,就打开这个阀门。记得是阻塞线程,不是阻塞操作,在同一个线程使劲掉await是没什么效果的。public class CyclicBarrierTest{ private final int STUDENT_COUNT = 10; private

2016-09-14 14:48:36 341

原创 FutureTask的使用

FutureTask 有点类似Runnable,都可以通过Thread来启动,不过FutureTask可以返回执行完毕的数据,并且FutureTask的get方法支持阻塞。 由于:FutureTask可以返回执行完毕的数据,并且FutureTask的get方法支持阻塞这两个特性,我们可以用来预先加载一些可能用到资源,然后要用的时候,调用get方法获取(如果资源加载完,直接返回;否则继续等待其加载完

2016-09-14 10:07:15 452

原创 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 762

原创 ImageView中的android:src和android:background的区别

下面是两个官方的描述: android:background setBackgroundResource(int) A drawable to use as the background. android:src setImageResource(int) Sets a drawable as the content of this ImageView. 有下面几个不同点: 1.

2016-09-09 15:04:04 2019

转载 Fragment的生命周期

自从Fragment出现,曾经有段时间,感觉大家谈什么都能跟Fragment谈上关系,做什么都要问下Fragment能实现不~哈哈,是不是有点过~ 本篇博客力求为大家说明Fragment如何产生,什么是Fragment,Fragment生命周期,如何静态和动态的使用Fragment,Fragment回退栈,Fragment事务;以及Fragment的一些特殊用途,例如:没有布局的Fragment有

2016-09-02 17:48:39 228

原创 android:configChanges属性

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次2、设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次3、设置Activity的android:configChanges=”orientation|keybo

2016-09-02 16:26:22 224

转载 Android layout属性大全

第一类:属性值 true或者 false android:layout_centerHrizontal 水平居中    android:layout_centerVertical 垂直居中    android:layout_centerInparent 相对于父元素完全居中    android:layout_alignParentBottom 贴紧

2016-09-02 11:53:29 287

原创 Android ImageView 图片等比缩放问题

android:adjustViewBounds 是否保持宽高比。需要与maxWidth、MaxHeight一起使用,单独使用没有效果。 android:cropToPadding 是否截取指定区域用空白代替。单独设置无效果,需要与scrollY一起使用 android:maxHeight 定义View的最大高度,需要与AdjustViewBounds一起使用,单独使用没有效果。如果想设置图片

2016-09-02 11:10:23 5796

原创 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 5982

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除