[置顶] Linux CFS中的进程调度

使用优先级映射时间片的劣势在Linux中用nice值代表优先级,它的范围是-20~19。nice值越低,优先级越高。在Linux之前,Unix中就是使用nice值映射时间片的方式来进行调度。比如,nice值为0对应100ms的时间片,nice值为20对应5ms的时间片,nice值为19对应10ms的时间片。在一般情况下,如果是nice值为0和nice值为20的两个进程同时运行,那么他们对应的时间片分...
阅读(214) 评论(0)

[置顶] Android单元测试-对Activity的测试

前提概要 上一篇文章已经介绍了单元测试的作用和简单示例,如果不了解的读者可以先阅读上一篇 Android单元测试-作用以及简单示例。 这篇文章主要介绍常见的Activity中的测试。 对Acitivity的测试 对于Activity,我们大致有两种测试需求: 1、在Activity正常启动后,查看界面布局是否正确,包括View的点击事件等是否正确。 2、需要在Activity启动前...
阅读(701) 评论(0)

[置顶] ThreadLocal与ThreadLocalMap源码解析

使用场景 一般来说,某些数据是以线程为作用域并且不同线程具有不同的数据的数据副本的时候,就可以考虑采用ThreadLocal。比如Looper 内部就是通过ThreadLocal来保证不同线程中有不同的唯一副本的,从而实现了我们现在经常使用的android消息机制。 对于android消息机制好奇的同学可以先看一下笔者的博文: Handler源码解析 文章摘要 1、ThreadLoca...
阅读(571) 评论(0)

[置顶] HashMap源码分析

#前提概要: HashMap算是Map的子类中用的最多的了,其相关的类也有很多,比如LinkedHashMap、HashMap、HashTable、ConcurrentHashMap。而HashMap在其中也扮演着一个很重要的角色,本文主要分析HashMap的源码,了解完后,其他的也自然触类旁通了。 #概述 HashMap本身是数组+链表的存储结构(JDK1.8加上了红黑树部分,本篇文章不提及,仅仅在目前androi...
阅读(794) 评论(5)

[置顶] 迟到的Volley源码解析

前言笔者其实之前其实早就想对Volley源码解析,但是由于笔者基础不好,理解源码有一定困难,加上不够重视,于是便不了了之了。 在近期笔试面试的经历中,发现网络实践这一块实在重要,于是打算亡羊补牢。也是祭奠下失去的腾讯实习offer(三面+加面,挂在加面),我们无法责怪运气,能做的只是提高自我。 参考文章: Volley 源码解析 Android Volley完全解析(四),带你...
阅读(1025) 评论(0)

[置顶] SharePreferences源码分析(SharedPreferencesImpl)

SharePreferences的基本使用在Android提供的几种数据存储方式中SharePreference属于轻量级的键值存储方式,以XML文件方式保存数据,通常用来存储一些用户行为开关状态等,一般的存储一些常见的数据类型。 public class MainActivity extends AppCompatActivity { @Override protected void...
阅读(2341) 评论(2)

[置顶] 【从零开始写一个简单的ImageLoader框架】ImageLoader分析

项目涉及知识点1、网络获取2、图片压缩3、内存缓存4、磁盘缓存5、线程池6、Handler7、RecyclerView(demo中使用)ImageLoader获取图片一般流程1、从内存缓存中查看是否有该图片,如果有就设置到imageView上。2、如果没有内存缓存,就从磁盘缓存中查看是否有该图片,如果有就设置到imageView上,并且把该图片设置到内存缓存中。3、如果既没有内存缓存也没有磁盘缓存,...
阅读(2613) 评论(2)

WebPack使用流程小记

本篇文章记录为主 主要参考WebPack官网:http://webpack.github.io/docs/ WebPack常用流程1、安装WebPack 2、准备要打包的文件 3、安装loader 4、配置文件 5、生成文件并运行示例文件目录(WebStorm)安装WebPacknpm install webpack -g准备要打包的文件entry.jsrequire("./style...
阅读(37) 评论(0)

Message(Message Pool)源码分析

前提概要笔者有一段时间写Message一直这么写:Message msg=new Message(); msg.what=0; handler.sendMessage(msg);但是事实上,为了提高效率,我们应该复用Message:Message msg=handler.obtainMessage(); msg.what=0; handler.sendMessage(msg);那么在这个obtain...
阅读(214) 评论(0)

进程和线程的区别(Linux)

进程和线程的区别是很常见的面试题,网上虽然随意就可以百度到,但是大多都是直接从理论上进行解释,很少有从操作系统的实现方面进行解释,笔者此篇以linux系统为例,做一个进程和线程笔记。 一般概念进程: 是操作系统分配和管理资源的最基本单位。 线程: 是进程中的单一顺序流。两者设计初衷进程: 提高了CPU的使用效率。 比如打印机打印东西的同时还可以打游戏,因为打游戏和打印机是两个不同的并发进程...
阅读(334) 评论(0)

分代收集算法详解

此篇文章较多借鉴《深入理解Java虚拟机》 前提概要这篇文章算是对前一篇文章的一个补充,主要地讲一下涉及知识点较多的分代收集算法。如果对Java垃圾回收算法还不是很了解的读者可以先看上一篇文章:Java垃圾回收算法。分代收集概念根据对象的存活周期不同将内存划分为新生代和老年代,存活周期短的为新生代,存活周期长的为老年代。这样就可以根据每块内存的特点采用最适当的收集算法。 新生代的中每次垃圾收集中...
阅读(277) 评论(0)

OkHttp源码解析

同步请求用例//创建对象 OkHttpClient client = new OkHttpClient(); //创建请求 Request request = new Request.Builder() .url("http://blog.csdn.net/double2hao") .build(); //网络获取 Response response = client...
阅读(722) 评论(0)

Android单元测试-对View的测试

前提概要前两篇文章分别介绍了单元测试的作用和关于Activity的单元测试,有兴趣或者刚入门的读者可以阅读以下前两篇文章: Android单元测试-作用以及简单示例 Android单元测试-对Activity的测试这篇文章对应Activity中View的测试做一个专门的拓展。主要三个组件(类)ViewMatchers这个类中有对View的各种属性的判断方法,比如可以判断id,判断是否获取焦点,...
阅读(436) 评论(0)

Android单元测试-作用以及简单示例

前提概要受人嫌弃的单元测试对于单元测试这个知识点,其实很多开发者是不太接触的,包括笔者,在实习之前也并未实用过单元测试,或者说并没感受到单元测试的好处。 对于bug的调试,笔者之前更倾向于使用log和断点调试,可以说会了这两个,大部分的逻辑bug都能自己解决了。这两个与看似臃肿的单元测试代码相比更受大家的喜爱。 但是,使用log和断点调试的前提是开发人员较少,甚至是单人开发的情况。如果我自己开发...
阅读(441) 评论(0)

进制均值-进制转换+最大公约数

题目 尽管是一个CS专业的学生,小B的数学基础很好并对数值计算有着特别的兴趣,喜欢用计算机程序来解决数学问题,现在,她正在玩一个数值变换的游戏。她发现计算机中经常用不同的进制表示一个数,如十进制数123表达为16进制时只包含两位数7、11(B),用八进制表示为三位数1、7、3,按不同进制表达时,各个位数的和也不同,如上述例子中十六进制和八进制中各位数的和分别是18和11,。 小B感兴趣的是...
阅读(246) 评论(0)

Java垃圾回收算法

此篇文章主要借鉴《深入理解Java虚拟机》和《Thinking in Java》 前提概要Java垃圾回收机制主要有两个方面,一是垃圾回收算法,二是垃圾回收器。此篇文章主要介绍垃圾回收算法。主要的垃圾回收算法如下: 1、引用计数算法 2、标记-清扫算法 3、复制算法 4、标记-整理算法 5、分代收集算法查找可存活对象的方法除了引用计数算法外,其他的算法都需要查找可存活的对象,其方式主要如下...
阅读(595) 评论(3)

ListView异步创建View

前提概要异步创建View这种操作一般情况下是用不到的,包括笔者之前自学阶段也是闻所未闻。 这定然是突破了我们一般编程的思维——UI操作难道不是只能在UI线程中吗? 是的,UI操作只能在UI线程中,但是UI控件的操作却是可以异步执行的。考虑一下以下需求: 我们要展示一个ListView,ListView中的数据和布局都是我们网络获取的,我们预先并不知道。 以往的我们使用一个Listview一般...
阅读(649) 评论(0)

getView()不复用convertView,ListView即毫无复用!(ListView回收机制)

前提概要 getView()不复用convertView,ListView即毫无复用! 标题的话不知道有没有震惊到大家,反正是与笔者一直以来的想法相悖的。 之前笔者一直认为,使用BaseAdapter如果不复用convertView,那么可能会一定程度上降低ListView的性能,但是ListView本身一定还有其优化性能的方式,所以写demo时也经常偷一下懒,就不写convertView的复...
阅读(715) 评论(0)

Handler源码解析

前提概要Hanlder、Looper和MessageQueue算是android中的一大要点,关于其的解说也数不胜数,但他人的终究是他人的。 笔者自己从源码的角度对其深入了解一番,记录成此篇文章。概述Looper:每个线程只有一个Looper,它负责管理MessageQueue,会不断的从MessageQueue中取出消息,并将消息分发给Handler处理。主线程在初始化的时候会创建一个Loope...
阅读(751) 评论(1)
271条 共19页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:656388次
    • 积分:8576
    • 等级:
    • 排名:第2508名
    • 原创:174篇
    • 转载:94篇
    • 译文:3篇
    • 评论:290条
    博客专栏