`
文章列表
ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁。 ConcurrentHashMap的内部结构 ConcurrentHashMap为了提高本身的并发能力,在内部采用了一个叫做Segment的结构,一个Segment其实就是一个类Hash Table的结构,Segment内部维护了一个链表数组,我们用下面这一幅图来看下Con ...
转自:http://www.cnblogs.com/killmyday/archive/2013/06/12/3132518.html 一般来说,程序使用内存的方式遵循先向操作系统申请一块内存,使用内存,使用完毕之后释放内存归还给操作系统。然而在传统的C/C++等要求显式释放内存的编程语言中,记得在合适的时候释放内存是一个很有难度的工作,因此Java等编程语言都提供了基于垃圾回收算法的内存管理机制: 垃圾内存回收算法 常见的垃圾回收算法有引用计数法(Reference Counting)、标注并清理(Mark and Sweep GC)、拷贝(Copying GC)和逐代回收(Generat ...
转自:http://blog.csdn.net/sevensundark/article/details/7519169 近段时间一直在折腾Bitmap相关的内存溢出问题,就调试解决中的感受和经验做个简单的总结。 (关于Bitmap的内存消耗机制就不作详细说明,大概就是Bitmap关系到的内存是native heap,它与Davilk heap有所区别,因为native heap并不受java gc的控制,所以必须手动去释放) 1.利用图片组件的ondraw方法中cavans进行绘制       尤其是在需要控制图片的频繁刷新(比如放大,旋转等)时,不断创建新的Bitamp对象的方式是非常糟 ...
转自:http://www.2cto.com/kf/201407/321093.html 在开发应用的时候,很多时候都会涉及大量图片的加载和高精度图片的加载,这两种操作都是会导致应用程序OOM(OutOfMemory)的问题发生,合理的图片加载和图片内存管理就是必须解决的问题,以下将提供一个比较完善的技术方案,解决这两个问题。 首先,我们必须明确为什么会发生OOM(OutOfMemory)的问题,其原因就是因为在APP运行过程中,所使用的系统内存超出了当前APP的最大可用内存,就发生了OOM的问题。下面,我们来估算一下在一台中高档的手机上面,加载多少图片会导致OOM:假设系统分配给APP的 ...
http://www.cnblogs.com/innost/archive/2011/01/09/1931456.html http://blog.csdn.net/luoshengyang/article/details/6618363/ http://blog.csdn.net/luoshengyang/article/details/6703247 http://blog.csdn.net/stonecao/article/details/6591847 http://blog.csdn.net/wwj_748/article/details/8927784

内核中断

中断又叫异步中断,由硬件触发。而异常又称为同步中断,由软件触发。 中断服务程序(中断处理函数)是一种处理中断响应的函数,它是一种遵循特定原型声明的C函数,它运行在中断上下文中,也称为原子上下文,代码运行在此上下文中是不能被阻塞的。中断服务程序必须运行非常快,它最基本的工作就是告诉硬件已经收到了它发出的中断,但通常还执行大量其他的工作。为此,一般中断服务程序分为两半,一半是中数据恢复处理函数,称为上半部,它只执行那些可以很快执行的代码,如向硬件确认已经收到中断号等,其他的工作要延迟到下半部去执行。 执行在中断上下文中的代码需要注意的一些事项: 中断上下文中的代码不能进入休眠。 不能使用mutex, ...
整个应用程序的启动过程要执行很多步骤,但是整体来看,主要分为以下五个阶段:        一. Step1 - Step 11:Launcher通过Binder进程间通信机制通知ActivityManagerService,它要启动一个Activity;        二. Step 12 - Step 16:ActivityManagerService通过Binder进程间通信机制通知Launcher进入Paused状态;        三. Step 17 - Step 24:Launcher通过Binder进程间通信机制通知ActivityManagerService,它已经准备就绪进入P ...
转:http://www.open-open.com/lib/view/open1411443332703.html 描述:收集android上开源的酷炫的交互动画和视觉效果。 1.交互篇 2.视觉篇 交互篇 1.SlidingUpPanelLayout 项目介绍:他的库提供了一种简单的方式来添加一个可拖动滑动面板(由谷歌音乐推广,谷歌地图和Rdio)你的Android应用程序。 项目地址:https://github.com/umano/AndroidSlidingUpPanel DEMO演示:github 2.FoldableLayout 项目介绍:折叠展开点击的ITEM 项目 ...

java数据类型

数据类型 大小 范围 默认值 byte(字节) 8 -128 - 127 0 shot(短整型) 16 -32768 - 32768 0 int(整型) 32 -2147483648-2147483648 0 long(长整型) 64 -9233372036854477808-9233372036854477808 0 float(浮点型) 32 -3.40292347E+38-3.40292347E+38 0.0f double(双精度) 64 -1.79769313486231570E+308-1.79769313486231570E+308 0.0d char(字符型) 16 ‘ \ ...
// 将127.0.0.1形式的IP地址转换成十进制整数,这里没有进行任何错误处理 public static long ipToLong(String strIp) { long[] ip = new long[4]; // 先找到IP地址字符串中.的位置 int position1 = strIp.indexOf("."); int position2 = strIp.indexOf(".", position1 + 1); ...
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 1.程序分析:利用while语句,条件为输入的字符不为 '/n '. */ public class SeventhCharacterStatistics { static int digital = 0; static int character = 0; static int other = 0; static int blank = 0; public static void main(String[] args) {    char[] ch = null;    Scanner sc = new Scann ...
import java.security.MessageDigest;  import java.security.NoSuchAlgorithmException;    public class MD5 {        public static String getMD5(String content) {          try {              MessageDigest digest = MessageDigest.getInstance("MD5");              digest.update(content.getB ...

上中下布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical" >    ...
最近做项目apk升级使用startActivityForResult返回更新数据,发现跳转界面没finish就返回,自习查看log发现Activity is launching as a new task, so cancelling activity result提示,后来网上查找资料发现是android:launchMode="singleTask"设置引起,然而这里不需要singleTask,去掉该属性即可与以下问题类似 http://www.cnblogs.com/shelman/p/5123577.html 近来,在使用startactivityforresul ...
1,首先原始代码用的是gson_2.2.1版本,后来发现2.2.1对String,Double做了限制,如果注册直接抛出异常 2,然后换成gson_2.2.4版本,Double类型可以注册,上代码     private static Gson gson;     static {         gson = new GsonBuilder().registerTypeAdapter(Double.class, new JsonSerializer<Double>() {             @Override             public JsonElement se ...
Global site tag (gtag.js) - Google Analytics