- 博客(18)
- 资源 (1)
- 收藏
- 关注

原创 Android应用程序安装过程解析(源码解析)
Android应用程序安装过程解析1.程序安装的4大步骤(1) 拷贝apk文件到指定目录在Android系统中,apk安装文件是会被保存起来的,默认情况下,用户安装的apk首先会被拷贝到 /data/app 目录下。/data/app目录是用户有权限访问的目录,在安装apk的时候会自动选择该目录存放用户安装的文件,而系统出厂的apk文件则被放到了 /system 分区下,包...
2017-03-02 15:36:33
5968

原创 Java泛型详解
由于博客的特殊显示原因,尖括号用()代替泛型概述Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。优缺点从好的方面来说,泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误,因为编译器可以在编译时刻就发现很多明显的错误。而从不好...
2016-09-25 23:43:15
5820

原创 Android的oom详解
Android的oom原因1.资源对象没关闭造成的内存泄露,try catch finally中将资源回收放到finally语句可以有效避免OOM。资源性对象比如:1-1,Cursor 1-2,调用registerReceiver后未调用unregisterReceiver() 1-3,未关闭InputStream/OutputStream 1-4,Bitmap使用后未调用rec...
2016-09-11 17:36:44
6442
1

原创 Android的ANR详解(原因和方案)
ANR的定义在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样系统不会显示A...
2016-09-10 12:50:55
3515

原创 java线程同步详解
synchronized关键字介绍:synchronized锁定的是对象,这个很重要例子:class Sync { public synchronized void test() { System.out.println("test开始.."); try { Thread.sleep(1000...
2016-05-27 22:05:02
5513
1

原创 【22】-快速排序随机选择元素的优雅解法
关于常规解法,请参考上一篇博客,链接如下: 面试之路(19)-快速排序详解介绍一种优雅的解法public int partition(int data[],int length,int start,int end) throws Exception{ if(data == null || length <= 0||start < 0||end >...
2016-05-04 23:02:22
8440

原创 【19】-快速排序详解
快速排序定义由C. A. R. Hoare在1962年提出 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。步骤1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;2)以第一个数组元素作为关键数据,赋值给ke...
2016-05-01 21:20:32
11096

原创 【17】-冒泡排序详解
冒泡排序定义它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。步骤1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了...
2016-05-01 17:19:44
11334
1

原创 归并排序详解(MergeSort)递归和非递归实现
归并排序的概念及定义归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两
2016-05-01 16:58:42
9768

原创 【15】-java实现二分查找
二分查找在面试中经常被遇到,这个方法十分优雅介绍二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它。一开始,范围覆盖整个数组。将数组的中间项与T进行比较,可以排除一半元素,范围缩小一半。就这样反复比较,反复缩小范围,最终就会在数组中找到T,或者确定原以为T所在的范围实际为空。对于包含N个元素的表,整个查找过程大约要经过log(2
2016-04-30 17:23:15
9374
1
原创 Https详解
Http的缺陷1.加密性2.完整性3.冒充攻击Https的过程1.客户端发送版本号,支持的摘要算法,加密算法和随机串1给服务端2.服务端返回选定的摘要算法和加密算法,以及申请的证书,加密的公钥和随机串2.如果需要双向校验也需要客户端发送自己的证书。3.客户端生成随机串3,并且把随机串3及其摘要用公钥加密发给服务端。4.服务端解密之后,通过摘要确认完整性。然后双端分别用随机串1,2,3生成对称秘钥。服务端使用对称秘钥加密一段信息和摘要发给客户端。5、客户端收到解密之后,确认完整性之后,可以通
2020-09-09 02:49:08
917
原创 Http Post和Get方法的区别
1.使用场景不同get,post,put,delete,分别对应对资源的查,改,增,删,另外其余方法的含义:OPTIONS 返回服务器支持的 HTTP 方法。CONNECT 把请求连接转换到透明的 TCP/IP 通道。HEAD 与 GET 相同,但只返回 HTTP 报头,不返回文档主体。2.幂等性不一样。幂等是一个数学概念,幂等每次操作的结果一样。get是幂等的,资源没有改变。post对应修改操作,所以post不是幂等的。所以相应的:3.get能缓存和收藏,以及后退/刷新无影响,post
2020-09-09 00:02:51
523
原创 多线程安全和锁优化概述
什么是线程安全?通俗的说就是对象本身完成了同步优化,保证外部随意调用的不用在考虑同步,互斥,调配等问题Java线程安全的5个等级1.不可变。基本类型是用final修饰,对于对象指的是行为不会改变内部状态。比如String类的操作都是返回一个新的String。还有Integer等类,内部变量都是final的。2.绝对的线程安全定义是:不管任何条件,调用者都不用做额外的同步措施。实际是很...
2019-09-01 19:02:56
736
2
原创 堆排序详解
概述堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。什么是堆?堆(二叉...
2016-09-06 12:59:00
587
原创 插入排序详解
概述有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。基本思想插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适
2016-09-06 12:01:58
1591
3
原创 二叉树的性质
二叉树概述在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。性质概述二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树
2016-09-06 11:10:23
1893
原创 反转链表(reverse ListNode)
反转链表:java类public class ListNode{ int key; ListNode next;}思路分析:需要三个指针,current,prev和next。current.next = prev之前需要next = current.next(判断next是否为空),同时一直往后遍历while(node != null) - 代码:public ListN
2016-05-09 21:22:43
5928
原创 【22】-快速排序随机选择元素的优雅解法
关于常规解法,请参考上一篇博客,链接如下:面试之路(19)-快速排序详解介绍一种优雅的解法public int partition(int data[],int length,int start,int end) throws Exception{ if(data == null || length <= 0||start < 0||end >= l...
2016-05-04 23:02:00
279
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人