自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 【学习清单】我的Android学习清单

我把Android重难点和读书笔记都整理在github上:https://github.com/miomin/AndroidDifficulty如果你觉得对你有帮助的话,希望可以star/follow一下哟,我会持续保持更新。1、学习知识的途径笔主写这篇文章的时候,是大三,刚刚拿到阿里巴巴、腾讯、百词斩的实习offer,学习Android一年,平时获取知识的途径主要有:书本、视频教程、博客、Gith

2016-04-13 15:31:04 5805 2

原创 【Java数据结构】Hashmap、Hashtable、ConcurrentHashMap源码阅读笔记

引言:这几天在捣鼓Hashmap跟Hashtable的区别,其中关注的 b比较多的就是Hashmap和Hashtable计算在Entry[]数组中index的方法到底有什么区别。Hashmap跟Hashtable的实现原理比较类似,借用一张其他地方偷来的图。 可以看到,都是采用外拉链的方式来实现元素存储,底层是数组+链表实现,原理都不说了,学过数据结构中hash冲突解决的同学应该都能理解。实现的关

2016-04-09 20:01:19 4420 3

原创 【Android性能优化】Android图片加载方案--Bitmap的内存管理和优化方案

写在前面:笔者的上一篇博文有提到过,如果不恰当的使用Bitmap,很容易造成OOM。这篇博文就来谈谈应该如何正确的管理Bitmap的内存,以及优化策略。参考: Google官方教程 – 《Android Training Ccourse》一、加载按显示需要的比例缩小的图片1、先来说说屏幕密度在Android中,Imageview控件的长宽单位一般设置为dp/dip,而不用px。这样做的原因,是因为

2016-03-31 18:04:14 12653

原创 【Android性能优化】内存泄露和内存溢出(OOM)的引发原因及优化方案

一、内存泄露垃圾回收器无法回收原本应该被回收的对象,这个对象就引发了内存泄露。内存泄露的危害: (1)过多的内存泄露最终会导致内存溢出(OOM)(2)内存泄露导致可用内存不足,会触发频繁GC,不管是Android2.2以前的单线程GC还是现在的CMS和G1,都有一部分的操作会导致用户线程停止(就是所谓的Stop the world),从而导致UI卡顿。二、内存溢出(OOM)Android

2016-03-30 22:21:29 20539 2

原创 【理解JVM】深入浅出JVM垃圾收集(HotSpot)

引言:我的上一篇博文提到JVM运行时的内存分块和GC的基本思想及算法,在GC的道路上越走越远,接下来要做的就是 深入浅出JVM的垃圾收集机制。一、分代垃圾回收1、新生代:大部分刚被创建的对象被分配到这里,生命周期短,被创建后很快变成不可达。在新生代区域内发生的GC称为minor GC。新生代被划分为三个区域:1个Eden空间2个Survivor空间在节点拷贝法中,不会简单的将内存划分为1:1的

2016-03-29 14:58:12 2951

原创 【理解JVM】JVM内存分块和垃圾收集算法(HotSpot)

一、JVM内存分块Java虚拟机在执行Java程序时,会将该过程中所管理的内存划分成不同的数据块,这些区域有各自不同的用途和生命周期,参考《深入理解JVM虚拟机》,总结出以下结论:(1)PC:每个线程有独立的PC,PC的值指向程序即将执行的下一条指令的地址。(2)JVM Stack:每个线程都拥有一个,每个方法在执行时都会创建一个栈帧,存储局部变量,返回地址等等,用于方法执行和返回。(3)Na

2016-03-28 12:27:19 821

原创 【自定义View系列】04--谈谈事件分发

引言:这部分会分三个模块来讲,先讲View对Touch的处理,再讲ViewGroup的事件分发,最后讲如何解决滑动冲突。我习惯通过在源码中添加注释来理解源码,以下是我提取出来几个重要方法,将不重要的部分删掉,并且添加了中文注释。一、先从View讲起如果一个View(比如Button)接收到Touch,那么该Touch事件首先会传入到它的dispatchTouchEvent( )方法,所以我们从这里开

2016-07-09 22:01:07 1539

转载 【自定义View系列】03--onLayout源码分析

一、源码分析在经过measure阶段以后,系统确定了View的测量大小,接下来就进入到layout的过程。在该过程中会确定视图的显示位置,即子View在其父控件中的位置。先看View的layout( )方法:

2016-06-24 23:14:14 589

转载 【自定义View】02--measure源码详尽分析

大家知道,自定义View有三个重要的步骤:measure,layout,draw。而measure处于该链条的首端,占据着极其重要的地位;然而对于measure的理解却不是那么容易,许多问题都是一知半解,比如:为什么父View影响到了子View的MeasureSpec的生成?为什么我们自定义一个View在布局时将其宽或者高指定为wrap_content但是其实际是match_parent的效果?子View的specM

2016-06-11 20:02:48 693

转载 【自定义View】01--常用工具介绍

本文转载自:http://blog.csdn.net/lfdfhl/article/details/51324275在自定义View的时候,常常会用到一些Android系统提供的API工具。这些API封装了我们经常会用到的方法,比如拖拽View,计算滑动速度,View的滚动,手势处理等等。如果我们自己去实现这些方法会比较繁琐,而且容易出一些bug。所以,先介绍一下这些常用的工具,以便在后续的学习和工作中使用。

2016-06-10 17:39:44 785

原创 【View工作原理】ViewRoot、DecorView、MeasureSpec和LayoutParams

一、窗口层级关系1、PhoneWindow是Android中最基本的窗口系统,每个Activity会创建并持有一个PhoneWindow对象,是Activity和整个View系统交互的接口。2、DecorView(1)Dispatch ViewRoot分发来的key、touch、trackball等外部事件。(2)DecorView有一个直接的子View,我们称之

2016-06-07 19:31:17 674

转载 【Android学习笔记】Android RecyclerView 使用完全解析 体验艺术般的控件

一、概述RecyclerView出现已经有一段时间了,相信大家肯定不陌生了,大家可以通过导入support-v7对其进行使用。 据官方的介绍,该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:ListView、GridView。那么有了ListView、GridView为什么还需要R

2016-05-22 14:59:41 525

原创 【Android学习笔记】Android中View的事件分发机制

Touch事件分发中只有两个主角:ViewGroup和View。Activity的Touch事件事实上是调用它内部的ViewGroup的Touch事件,可以直接当成ViewGroup处理。

2016-05-21 16:44:46 542

原创 【Android性能优化】使用NDK进行Java和C++混编

一、Java和C/C++混编的步骤(1)在Java代码中声明本地方法(2)实现Java本地接口(JNI)粘合层(3)创建Android makefile文件(Android Studio不需要,Gradle代替)(4)使用C/C++实现native方法(5)编译native库(6)加载native库

2016-05-15 09:53:42 2066

原创 【码上杂谈】关于之前对Server上允许的最大TCP连接数理解错误的更正

前几天去国内某二线互联网企业参加实习生面试,与面试官讨论Server上允许的最大TCP连接数是多少。我回答,由于资源限制或其他客观因素,一般保持3000-4000的连接就死掉了。面试官问我,如果不考虑这些因素,理论上的最大连接数应该是多少?我回答如下:操作系统上端口号1024以下是系统保留的,从1024-65535是用户使用的。由于每个来自客户端Socket的TCP连接都要占一个端口号,所以我们最

2016-04-15 23:37:00 3531

原创 【Android性能优化】布局的性能优化

APP的每个View和Layout都需要经过Measure、Layout和Draw三个过程,如果布局层级过深,这个过程就会非常耗时。所以减少Layout的层级是优化布局性能的一个重要手段。本文将介绍通过include、merge、ViewStub三种手段来进行Android布局层级优化。

2016-04-12 11:53:15 2155

转载 【Java并发编程】对比synchronized和Lock

引言:在Java中,可以使用关键字synchronized来实现同步访问,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?那得先从synchronized的缺陷讲起。转载自海子的博文:《Java并发编程:Lock》一、synchron

2016-04-11 17:15:50 1830

原创 【Thinking in Java读书笔记】如何安全的终止线程

参考资料:《Thinging in Java》引言:在较早的Java代码中,是使用suspend()和resume()来终止和唤醒线程,但是现在已经被废止了,因为可能导致死锁。stop()强制终止线程的方式也已经不推荐使用,因为它不释放线程获得的锁,还会产生一些不可预料的后果。下面看看《Thinging in Java》中建议我们如何来终止线程。一、线程进入阻塞态的原因在阻塞态中终止线程,需要做一

2016-04-11 11:08:08 3290

原创 【数据结构】数据结构总结之线性表、栈和队列

数据结构总结之线性表数据结构的课程结束了两年,当时整理的手写笔记弄丢了,回头来看书,发现很多知识点已然生疏,准备写几篇博文整理一下。一、线性表、栈和队列1.1 线性表概念:线性表是由称为元素(element)的数据项组成的一种有限且有序的序列。线性表分为顺序表和链表两种。(1)顺序表的特点查询元素:可以通过index访问任意元素,访问元素的时间花费为O(1)添加和删除元素:如果在有n个元素的表的

2016-03-15 10:57:44 2421

原创 【Android学习笔记】再探Android Service

初学Android的时候,对Service是草草了之,现在反过来复习,才发现自己有很多知识没有掌握,在这里总结一下。Service是Android的四大组件之一,是Android中实现程序后台运行最合适的解决方案之一,非常适合被用于去执行那些不需要和用户界面交互而且要求长期运行的任务。

2016-03-14 21:58:42 1794

翻译 【Android资料】Android软键盘显示模式总结

在Edittext输入时需要弹出软键盘,对布局的影响有不同的要求。可以在该软键盘所在的activity里的android:windowSoftInputMode=””属性这只软键盘的显示模式。下面总结一下。值描述“stateUnspecified”软键盘的状态(是否它是隐藏或可见)没有被指定。系统将选择一个合适的状

2015-08-08 21:17:51 557

原创 【环境搭建】MAC OS X上搭建Android studio环境

--

2015-07-20 16:39:57 712 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除