`
文章列表
1. 加密的作用 1)明文变密文(你不知道密钥是很难解密的); 2)数据的一致性(hash值一样); 3)数据的可信任性(验签)。 2. 两种不同的加密与解密 1)对称加密:加密与解密使用相同的密钥,处理速度快; 2)非对称加密:加密与解密使用不同的密钥(生对生成),处理速度不及对称加密。 3.在非对称加密中,究竟是公钥加密还是私钥加密的问题 1)如果只是用加密的用途    公钥加密,私钥解密(私钥只有一个,公钥大家都知道)。 2)如果用验签    私钥加密,公钥解密(解密的来源是私钥,其它的来源是不可信任的)。 下面是两个工具类。 import java.io.ByteArra ...
背包的算法的动态方式如下: f(i,w) = max{ f(i-1,w), f(i-1,v-weight[i])+value[i] } 状态转移方程理解如下: f(i,w)表示前i个物体面对容量为w时背包的最大价值,weight[i]代表物体i的重量(即重量),value[i]代表物体i的价值;如果第i个物体不放入背包,则背包的最大价值等于前i-1个物体面对容量v的最大价值;如果第i个物体选择放入,则背包的最大价值等于前i-1个物体对容量w-weight [i]的最大价值加上物体i的价值value[i]。 综上,第i件物品要么选,要么不选。 1)如果不选,则第i件物品放w容量的最优值等于 ...
我记得当时在Oracle面试时,面试人问我一个HashMap有几种访问方式,我答有两种:一种通过key,另一种是通过Entry。今天总结一下这两种遍历的方式。 1. 最基本的get(Object key)方法    HashMap map=new HashMap(); map.put("name", "test1"); map.put("age", 19); System.out.println(map.get("name")+"\t"+map. ...
在上一篇中http://gaofulai1988.iteye.com/blog/2261505介绍了ArrayList iterator的实现,今天再分析另外一个list中特有的迭代器ListIterator。 看看它是如何new的呢。 public ListIterator<E> listIterator() { return new ListItr(0); } public ListIterator<E> listIterator(int index) { if (index < 0 || index > ...
昨天在我们的系统中看到了这样的一行代码: private final Map<String, String> CACHE = new WeakHashMap(); 对于WeakHashMap而言,之前还真的没有听过, 惭愧啊!晚上就好好的研究了下,这个不对不说说强引用、软引用、弱引用、虚引用以 ...
1. 构造函数 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { this(corePoo ...
现在的框架十分之多,让你目不暇接,也有人觉得相当方便,调用一个api就可以实现一个可能,根本不需要自己写多余的代码。的确,框架在某种程序上,减轻了我们的工作量,但是作为一个开发人员来讲,我们不仅要学会怎样 ...
1. 缓存分类 1)Client Cache 在大型网站中,往往会考虑使用Client Cache,如京东网站,通过抓包可以看出它就设置了Cache: Cache-Control:max-age=120,其它的大型网站,如淘宝也都设置了Cache的值。它们都是通过Http 协议头中的字段来控制完 ...
在Java中,所有类的基类都是Object,作为JDK源码分析的第一课,今天给一道题来测试下大家对基础的掌握,让大家知道理解JDK源码的重要性。 class Person{ private String name; private int age; public Person(String name, int age){ this.name=name; this.age=age; } public String getName() { return name; } public void setName(String name) { ...
IO分为字节流和字符流,字符就是简单的字符串存储,从理伦上讲,在内存中所有的数据都是二进制,是一个字节一个字节的序列,所以字节流可以存储像图片、图像等文件。现在有一个文件,分别用字节流和字符流来实现。 1. 字符读取(一次读若干个数据) FileReader reader = new FileReader(file); char buf[] = new char[1024]; int ch; while ((ch = reader.read(buf)) != -1) { buffer.append(buf); buf = new char[1024]; // 一定要清掉啊 } ...
作为分布式系统而言,有两个重要内容(当然还有其它的内容,这里仅仅讨论hadoop的核心):分布式存储和分布式计算。 分布式存储的原理:将一个大文件划分成若干部分,存储到不同的节点上(副本存储)。 好处:1)由于有副本存储,某个节点的down机不会影响到整个集群的使用,数据还是可以保证完整性的;       2)大文件划分小文件存储,这样便于后面的处理。这是因为计算节点(存储节点是同一个概念)可以处理这一部分数据,多个      计算节点可以并行处理。 整个来讲,HDFS的原理比较容易读,本质上讲,它是一个文件系统,只不过是分布式的,你也完全写一个简单的分布式文件系统出来的,只要你想做。 在 ...
代理模式作为开发人员来讲,应该不会很陌生,它要做的事情很简单:屏蔽被调用方的实现过程。 它在一类远程过程调用中,使用得非常广泛。具体的过程呢? 调用方 A                                 被调用 ...
看过Hessian的部分源码,这里总结一点RPC的设计思路。 RPC可以由下面两种思路来实现: 1. 基于HTTP协议来设计; 2. 基于TCP/IP来设计。 不管哪一种思路,本质都是一样的,下面就讲讲它们实现的思路。 1. 传输的内容是什么?    一般而言,我们需要传输接口名,方法名,参数,而这些参数可以放在一个类中序列化进行传    输。 2. 怎么调用呢?    通过动态代理来完成,实现了InvocationHandler接口后,由代理的对象来调用方法,这样就    进入到invoke方法里,invoke方法里面,我们可以通过网络向server端发送信息了。 3. 通信的载体是 ...
对于两个系统之间交互信息,有两种常见的方式:webservice和restful。 webservice简单理解就是一个系统开放出一个接口供别人调用,它注重的是方法的调用。 restful简单理解是通过抽象出网络资源,通过http来调用,它注重的是网络资源的抽象。 今天看一下个restful的实现框架,以一个例子来看看。 1. 下载jersey jar包; 2. 在ecplise中创建一个web工程; 3. 写一个类,如下: @Path("/hello") public class HelloResource { @GET @Produce ...
我们知道request.getInputStream()只能读一次,如果下一次读,就会报告Stream closed的错误。下面是解决方法。 InputStream input = request.getInputStream(); ByteArrayOutputStream bytebuffer= new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len; while ((len = input.read(buffer)) > -1 ) ...
Global site tag (gtag.js) - Google Analytics