- 浏览: 152692 次
- 性别:
- 来自: 北京
最新评论
-
seebetpro:
讲的十分全面
Android 图片加载Bitmap OOM错误解决办法 -
iteeye:
1楼高深,回答得好
java中的变量初始化问题 -
chenhongwei0924:
学习下.
java位操作符总结 -
Durian:
fly_ever 写道其实就像guice通过annotatio ...
一种新的单元测试的方法 -
shannon977:
建议1:
@TestedByList还不够简单。关键词重复多次 ...
一种新的单元测试的方法
文章列表
JDK的跳表源码实现分析
- 博客分类:
- java
JDK源码中的跳表实现类: ConcurrentSkipListMap和ConcurrentSkipListSet。其中ConcurrentSkipListSet的实现是基于ConcurrentSkipListMap。因此下面具体分析ConcurrentSkipListMap的实现:
//查找指定Key的前置节点
private Node<K,V> findPredecessor(Object key, Comparator<? super K> cmp) {
if (key == null)
...
排序算法几种分类方式:
1,稳定排序和不稳定排序
如果a==b, 当排序之前a在b的前面,排序后,a仍然在b的前面,则该排序算法为稳定排序算法。否则为不稳定排序算法。
2,非线性时间比较类排序和线性时间非比较类排序算法
非线性时间比较类排序:通过比较来决定元素间的相对位置,由于比较次数,使其时间复杂度不能
突破O(nlogn)。
线性时间非比较类排序:不通过比较来决定元素间的相对位置,它可以突破比较排序的时间下限,以线性时间运行。
几种常见的排序算法介绍:
1,选择排序
算法原理:依次在元素间比较,从集合中找出 ...
1,线程的状态转换:
新建,可运行,运行中,阻塞(等待锁),等待(不确定的等待和指定时间的等待),结束。
线程的join方法和yield方法;
join方法:
线程A中调用线程B的join方法,则线程A将会等待线程B运行结束之后再继续运行。
yield方法:
线程调用yield方法,则是让当前正在运行的线程,把CPU时间片让给相同优先级的其他线程去运行。
interrupt是一个实例方法,设置当前线程的中断标识位。
线程t 在sleep时,t.interrupt()被调用,会抛出InterruptedException;
线程t正在运行时, ...
本篇源码来自JDK1.8.
Java的位运算和取模取余操作说明:
位运算(&)效率要比取余运算(%)高很多,主要原因是位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。
X % 2^n = X & (2^n - 1)
2^n表示2的n次方,也就是说,一个数对2^n取余 == 一个数和(2^n - 1)做按位与运算 。
假设n为3,则2^3 = 8,表示成2进制就是1000。2^3 -1 = 7 ,即0111。
此时X & (2^3 - 1) 就相当于取X的2进制的最后三位数。
右移和取模
从2进制角度来看,X ...
StringBuffer 和StringBuilder区别:
StringBuffer和StringBuilder都继承自抽象类AbstractStringBuilder。
StringBuffer是线程安全的。 StringBuilder是非线程安全的,在单线程使用是,速度更快。
String.intern()方法在StringBuffer上的不同表现:以下代码 ...
kafka下载:http://kafka.apache.org/downloads
解压下载下来的文件,bin目录下是常用命令,config目录下是配置文件。
kafka已经内置了一个zookeeper环境,可以直接使用。
建议kafka在linux环境下使用。
Kafka的简单测试
以下是在windows ...
在进行多线程编程时,经常遇到多个线程同时对一个变量进行修改的问题。这时候为了保证不出现意想不到的结果,需要为这些变量加锁,以保证同一时刻只有一个线程能够修改。
在Java语言中,为了解决这种同步互斥的访问,有两种方法:synchronized和Lock.
1,synchronized
synchronized是Java语言中的一个关键词,是Java语言内置的特性。
通过使用synchronized来修饰一个方法或者一个代码块,来获得相应对象的锁,使这个方法或者代码块实现同步互斥访问。
synchronized方法
...
从JDK 7 开始引进了一个新的伪随机数生成器,ThreadLocalRandom,从名称可看出是一个与线程相关的Random,和之前的Random进行对比,ThreadLocalRandom在性能上和多线程并发处理上做了一些改进。
1,sun.misc.Unsafe
由于在产生伪随机数过程中,Random和ThreadLocalRandom都使用到了一个特殊的包:sun.misc.Unsafe。先对此包作个简单介绍。
sun.misc.Unsafe在JDK源代码中,有多处出现。为了更高效和更简单,它提供了一些与平台相关的更底层的功能,即 ...
JVM垃圾回收算法和垃圾收集器
一: JVM 垃圾回收算法
根搜索算法:
程序把所有的引用节点看做一张图,从一个节点GC Root开始,寻找对应的引用节点,直到所有的引用节点寻找完毕,剩下的即被没 ...
Java虚拟机的内存结构
在程序运行时,JVM包含了两种运行时数据区,一种是与JVM同步存在的,在JVM启动时一直存在,直到JVM退出时才销毁,由所有的线程共享;另一种是与每个线程同步存在,线程退出则销毁。
运行时数据区包含如下几部分:
1, 程序计数器 每一个Java线程都有一个PC寄存器,用以记录在线程切换回来后恢复到正确的执行位置。
如该线程正在执行一个Java方法,则计数器记录的是正在执行的虚拟机字节码地址,如执行native方法,则计数器值为undefined。
因为只是记录线程执行时的返回地址,因此内存是 ...
一、 ViewGroup1.1 概述
定义
public abstract class ViewGroup extends View implements ViewParent, ViewManager
所在的包
import android.view.ViewGroup;
子类信息
View
|___ ViewGroup
|___ AdapterView<T extends Adapter>
| |___ AbsListView
| | |___ GridView
...
Android加载资源图片时,很容易出现OOM的错误。
因为Android系统对内存有一个限制,如果超出该限制,就会出现OOM。为了避免这个问题,需要在加载资源时尽量考虑如何节约内存,尽快释放资源等等。
Android系统版本对图片加载,回收的影响:
1,在Android 2.3以及之后,采用的是并发回收机制,避免在回收内存时的卡顿现象。
2,在Android 2.3.3(API Level 10)以及之前,Bitmap的backing pixel 数据存储在native memory, 与Bitmap本身是分开的,Bitmap本身存储在dalvik heap 中。导致其pixel数据不能判断 ...
线框图(Wireframe)是app、软件或者网站设计过程中非常重要的一个环节,它可以合理地组织并简化内容和元素。线框图除了可以帮助开发者节省时间外,更可以加深开发者对产品的认知,给开发者一个清晰的产品构架,避免了开发者陷入层次不清、功能不明的产品设计和开发混乱状态。
1、Proto.io
Proto.io是一个专用的手机原型开发平台——可以构建和部署全交互式的移动程序的原型,并且可以模拟出相似的成品。它可以运行在大多数的浏览器中,并提供了3个重要的接口:dashboard、编辑器以及播放器。
dashboard可以用来管理项目。编辑器是构建原型的环境,由一组设计和开发原型的工具组成,另外 ...
Dimension
A dimension value defined in XML. A dimension is specified with a number followed by a unit of measure. For example: 10px, 2in, 5sp. The following units of measure are supported by Android:
dp
dp 是与密度无关的像素,基于屏幕密度的抽象单位。在每英寸160个点的屏幕上,1dp与1px大致相等。当运行在更高/更低密度的屏幕上,1dp中的像素数根据屏幕的dpi(dots per inch ...
http://www.70man.com/?p=5154
互联网时代,其实信息开始越来越透明,假如你对中国的大学教育不满意,你可以看国外大学的课程,我的一个朋友分享我她收集的各个国外大学开放式教育资料的论坛地址,我觉得很好,我合并一些我的 ...