
java
张燕茹
宁静以致远
展开
-
Java继承,组合,聚合的关系
http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html继承与组合的关系:比如说:有一个歌星类:public class MusicStar{public abstract void singing() ;}周杰伦类public class ZhouJieLun extends Music转载 2014-12-18 17:27:39 · 1177 阅读 · 0 评论 -
通过两个栈实现队列
原理思想: 建两个栈,stackNewest和stackOldest。 要始终保持:newStack的栈顶总是存放着最新的元素,oldStack的栈顶总是存放着最旧的元素。因为我们放新数据的时候是放入newStack,而取数据的时候是从oldStack去取。 而且为了尽量减少栈之间的倒腾,只有在必须时(peek或pop)才倒腾栈。 建立两个栈,一个newStack如果有新的值来转载 2016-08-03 17:43:05 · 597 阅读 · 0 评论 -
用两个队列实现栈
转自:http://blog.youkuaiyun.com/renlei0109/article/details/52105908思路 假设有两个队列Q1和Q2,当二者都为空时,入栈操作可以用入队操作来模拟, 可以随便选一个空队列,假设选Q1进行入栈操作,现在假设a,b,c依次入栈了(即依次进入队列Q1), 这时如果想模拟出栈操作,则需要将c出栈,因为在栈顶,这时候可以考虑用空队列Q2,将a,转载 2016-08-03 18:58:31 · 565 阅读 · 0 评论 -
Runnable,Callable,Future,RunnableFuture,FutureTask,ExecutorService的关系
如图:原创 2016-08-04 10:27:12 · 1241 阅读 · 0 评论 -
单例模式的七种写法
转载请注明出处:http://cantellow.iteye.com/blog/838473 第一种(懒汉,线程不安全): Java代码 public class Singleton { private static Singleton instance; private Singleton (){} public stati转载 2016-08-04 18:50:05 · 587 阅读 · 0 评论 -
内存分析工具MAT(Memory Analyzer Tool)从安装到使用
一.安装首先,你得有一个Eclipse(因为MAT是Eclipse的插件)然后,你要在Eclipse上安装MAT,步骤如下:1.点击Help,Install New Soft,就出现了以下Install界面:然后我们点击ADD,在弹出的框中填上Mat插件的地址:http://download.eclipse.org/mat/1.6/update-site/,确定后,点击Select原创 2016-08-17 19:42:55 · 42000 阅读 · 8 评论 -
安卓图片三级缓存策略与实现
前言:这里说的三级缓存,分别指的是:内存缓存、文件缓存和网络这三个层面。一般来说,我们首次加载图片,内存和文件是没有缓存的,这样我们需要从网络加载,加载完成后,我们会存到内存和文件中去;当再次加载图片的时候,我们会先查找内存有没有,如果有就直接显示内存中的图片,如果没有,我们会接着查找文件中是否有,如果文件中有,我们会显示文件中的图片,并且把它存到内存中去,这样下次我们在内存中就能找到它了原创 2016-08-18 19:26:08 · 6014 阅读 · 1 评论 -
HashMap实现原理分析
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难转载 2016-09-13 13:39:00 · 422 阅读 · 0 评论 -
为什么重写equals一定要重写hashCode
一、为什么要有Hash算法Java中的集合有两类,一类是List,一类是Set。List内的元素是有序的,元素可以重复。Set元素无序,但元素不可重复。要想保证元素不重复,两个元素是否重复应该依据什么来判断呢?用Object.equals方法。但若每增加一个元素就检查一次,那么当元素很多时,后添加到集合中的元素比较的次数就非常多了。也就是说若集合中已有1000个元素,那么第1001个元素加转载 2016-09-13 13:53:08 · 712 阅读 · 0 评论 -
JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue
转自:http://blog.youkuaiyun.com/shixing_11/article/details/7109471从Java5开始,Java提供了自己的线程池。每次只执行指定数量的线程,java.util.concurrent.ThreadPoolExecutor 就是这样的线程池。以下是我的学习过程。首先是构造函数签名如下:[java] view pla转载 2016-08-23 15:58:38 · 1232 阅读 · 0 评论 -
Java设计模式之代理模式
什么是代理模式?代理模式,一般是为了对真正的对象进行访问限制,延时实例化等,举一个例子:生活中,书籍厂家生产书并且出售书,但是,如果你想买书的话,一定要到书籍厂家买吗?不是的,我们可以通过大大小小书店购买。在这里,书籍厂家就是RealObject,它有一个方法sell();书店就是代理对象ProxyObject,它也有一个方法sell(),这个方法通过调用realObject的se原创 2016-09-14 11:08:05 · 510 阅读 · 0 评论 -
Future类源码解析翻译
/** * A Future represents the result of an asynchronous * computation. Methods are provided to check if the computation is * complete, to wait for its completion, and to retrieve the result o翻译 2016-08-03 17:32:29 · 1073 阅读 · 0 评论 -
Callable,Runnable比较及用法
编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互。一般有三种方法,Thread,Runnable,Callable.Runnable和Callable的区别是,(1)Callable规定的方法是call(),Runnable规定的方法是run().(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得(3)call方法可以抛出异常,转载 2016-08-03 16:48:45 · 931 阅读 · 0 评论 -
安卓上传图片实例,multipart/form-data实现安卓上传文件的功能
一、http协议中普通的Post请求一般HTTP请求格式为:请求行(request-line),用来说明请求类型,要访问的资源以及所使用的HTTP版本.首部(header)小节,用来说明服务器要使用的附加信息.空行[]主体(body)例1 GET请求:GET / HTTP/1.1Accept: */*Acc原创 2016-07-08 17:54:07 · 37042 阅读 · 10 评论 -
JAVA的Random类(转)
Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机转载 2016-03-22 17:17:49 · 494 阅读 · 0 评论 -
LinkedHashMap源码解析
HashMap: put -> addEntry(新建一个Entry) get getEntry LinkedHashMap: put -> addEntry(重写) 新建一个Entry,然后将其加入header前 e.a转载 2016-07-14 16:38:12 · 882 阅读 · 0 评论 -
内存缓存LruCache源码解析
下面看下LruCache的源码,我都注释的很详细了。 1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not us转载 2016-07-14 16:34:38 · 892 阅读 · 0 评论 -
贝塞尔曲线
简介在数学的数值分析领域中,贝塞尔曲线, 又称贝赛尔曲线(Bézier曲线)是电脑图形学中相当重要的参数曲线。更高维度的广泛化贝塞尔曲线就称作贝塞尔曲面,其中贝塞尔三角是一种特殊的实例。贝塞尔曲线于1962年,由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由Paul de Casteljau于1959年运用de转载 2016-07-14 19:09:38 · 1465 阅读 · 0 评论 -
HTTP协议之multipart/form-data请求分析
转自:http://blog.youkuaiyun.com/five3/article/details/7181521首先来了解什么是multipart/form-data请求:根据http/1.1 rfc 2616的协议规定,我们的请求方式只有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE等,那为为何我们还会有multipart/form-data请求之说呢转载 2016-07-07 11:18:44 · 1893 阅读 · 0 评论 -
Java并发编程:Callable、Future和FutureTask
Java并发编程:Callable、Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,转载 2016-07-30 11:03:25 · 862 阅读 · 0 评论 -
FutureTask 源码解析
站在使用者的角度,future是一个经常在多线程环境下使用的Runnable,使用它的好处有两个:1. 线程执行结果带有返回值2. 提供了一个线程超时的功能,超过超时时间抛出异常后返回。那,怎么实现future这种超时控制呢?来看看代码:FutureTask的实现只是依赖了一个内部类Sync实现的,Sync是AQS (AbstractQueuedSynchroniz转载 2016-07-30 12:03:20 · 1104 阅读 · 0 评论 -
FutureTask 深度解析
转自:http://blog.youkuaiyun.com/liulipuo/article/details/39029643先看下FutureTask的注释吧FutureTask一个可取消的异步计算,FutureTask 实现了Future的基本方法,提空 start cancel 操作,可以查询计算是否已经完成,并且可以获取计算的结果。结果只可以在计算完成之后获取,get方法会阻塞转载 2016-07-30 12:04:11 · 1316 阅读 · 0 评论 -
矩阵的乘法
原创 2016-07-19 16:27:48 · 560 阅读 · 0 评论 -
内部类的序列化问题;静态变量不能被序列化的问题
1.父类序列化,则非静态的内部类也要序列化,不然会报错。2.父类序列化,静态内部类不序列化也可以,不会报错,但是数据会丢失。原创 2016-07-15 12:04:35 · 7471 阅读 · 0 评论 -
二级域名
根据百度百科的解释:很多人都误把带www当成一级域名,把其他前缀的当成二级域名,是非常错误的。正确的域名划分为:.com 顶级域名baidu.com 一级域名www.baidu.com 二级域名bbs.baidu .com 二级域名tieba.baidu .com 二级域名之前对二级域名的概念不是很清楚,特此记录。原创 2017-04-14 17:46:40 · 3804 阅读 · 0 评论