自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (2)
  • 收藏
  • 关注

原创 老三长谈之Retrofit源码分析

#老三长谈之Retrofit源码分析>用了Retrofit大半年了,源码看了好几次。今天我来总结一下吧,以后不看他的源码了。好记性不入烂笔头!!!  ##在没有开源框架的日子我们先来看一下没有HTTP框架以前,我们是如何做请求的。  ![](https://i.imgur.com/RgoblZN.png)1.首先build request参数  2.因为不能在主线程请求HT

2017-09-05 19:56:31 364

原创 老三长谈之Retrofit源码分析

老三长谈之Retrofit源码分析 用了Retrofit大半年了,源码看了好几次。今天我来总结一下吧,以后不看他的源码了。好记性不入烂笔头!!! 在没有开源框架的日子我们先来看一下没有HTTP框架以前,我们是如何做请求的。 1.首先build request参数 2.因为不能在主线程请求HTTP,所以你得有个Executer或者线程 3.enqueue后,通过线程去run你的请求

2017-09-05 19:46:56 285

原创 我们来尝试APK瘦身框架!

我们来尝试APK瘦身框架!前言 随着业务的各种发展,APK的大小必然越来越大,APK瘦身刻不容缓,对与APK的瘦身的手段我就进行简单列举吧 开启minifyEnabled混淆代码开启shrinkResources去除无用资源删除未使用到xml和图片删除未使用到代码png图片格式转成jpg使用vector使用shape作为背景使用TinyPng(当超过一点数量就要收费 反正我感觉挺

2017-09-05 09:04:51 248

原创 用Kotlin写Android 02 如何实现recycleview

为了实现recycleview 我们需要实现一个adapter RecyclerView中所使用到的布局现在只需要一个TextView,我会手动去创建这个简单的文本列表。增加一个名为ForecastListAdapter.kt的Kotlin文件,包括如下代码:class ForecastListAdapter(val items: List<String>):RecyclerView.Adapte

2017-05-21 21:11:32 1218

原创 用Kotlin写Android 01 如何入手

简单的吹一下牛逼Kotlin Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,它也可以被编译成为 JavaScript 源代码。它主要是由俄罗斯圣彼得堡的 JetBrains 开发团队所发展出来的编程语言,其名称来自于圣彼得堡附近的科特林岛。2012 年 1 月,著名期刊《 Dr. Dobb’s Journal 》中 Kotlin 被认定为该月的最佳语言。虽然与 Java 语法并

2017-05-21 17:06:20 1561

原创 Synchronized 原理

一、Synchronized的基本使用  Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题。从语法上讲,Synchronized总共有三种用法:  (1)修饰普通方法  (2)修饰静态方法  (3)修饰代码块(1)当修饰代码

2017-03-05 18:38:30 416

原创 c++

1.sizeof 定义sizeof是一个操作符(operator)。其作用是返回一个对象或类型所占的内存字节数。其返回值类型为size_t。(size_t在头文件stddef.h中定义,它依赖于编译系统的值,一般定义为 typedef unsigned int size_t;)语法 sizeof有三种语法形式:1) sizeof (object); //sizeof (对象)2) s

2017-02-23 19:03:14 206

原创 Android部分

Activity 系列问题 1.1 绘制Activity生命周期流程图 1.2 介绍下不同场景下Activity生命周期的变化过程启动Activity: onCreate()—>onStart()—>onResume(),Activity进入运行状态。 Activity退居后台: 当前Activity转到新的Activity界面或按Home键回到主屏: onPause()—>onStop(),进

2017-02-21 11:01:09 299

原创 J2EE 部分

1.Switch能否用string做参数?在 Java 7 之前, switch 只能支持 byte 、 short 、 char 、 int 或者其对应的封装类以及 Enum 类型。在 Java 7 中, String 支持被加上了。 2. equals与==的区别:==是判断两个变量或实例是不是指向同一个内存空间 equals是判断两个变量或实例所指向的内存空间的值是不是相同 3. Obje

2017-02-21 07:54:35 254

原创 栈的反转练习题

实现一个栈的逆序,但是只能用递归函数和这个栈本身的pop操作来实现,而不能自己申请另外的数据结构。 给定一个整数数组A即为给定的栈,同时给定它的大小n,请返回逆序后的栈。public static int[] reverseStack(int[] A, int n) { if(n == 0){ return A; }else{

2017-02-20 10:04:52 502

原创 拼接最小字典序练习题

对于一个给定的字符串数组,请找到一种拼接顺序,使所有小字符串拼接成的大字符串是所有可能的拼接中字典序最小的。给定一个字符串数组strs,同时给定它的大小,请返回拼接成的串。 public class Mycomparator implements Comparator<String> { @Override public int compare(String a, St

2017-02-19 16:12:30 547

原创 句子的逆序练习题

对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成,你需要将这些部分逆序。给定一个原字符串A和他的长度,请返回逆序后的字符串。 解题思路:把字符串A 整体逆序,在遇到空格之时然后再次逆序。 public String reverseSentence(String A, int n) { // write code here

2017-02-19 16:05:30 367

原创 两串旋转练习题

如果对于一个字符串A,将A的前面任意一部分挪到后边去形成的字符串称为A的旋转词。比如A=”12345”,A的旋转词有”12345”,”23451”,”34512”,”45123”和”51234”。对于两个字符串A和B,请判断A和B是否互为旋转词。给定两个字符串A和B及他们的长度lena,lenb,请返回一个bool值,代表他们是否互为旋转词。 解题思路: 检查B是否在A+A里面public bo

2017-02-19 15:58:06 249

原创 词语变形练习题

对于两个字符串A和B,如果A和B中出现的字符种类相同且每种字符出现的次数相同,则A和B互为变形词,请设计一个高效算法,检查两给定串是否互为变形词。给定两个字符串A和B及他们的长度,请返回一个bool值,代表他们是否互为变形词。解题思路:先用字符串A,用一个256位数组存放对应每一位字符显示的次数,然后用字符串B,减去每个字符出现的次数。 public boolean chkTransform(S

2017-02-19 15:55:57 539

原创 拓扑结构相同子树练习题

对于两棵彼此独立的二叉树A和B,请编写一个高效算法,检查A中是否存在一棵子树与B树的拓扑结构完全相同。 给定两棵二叉树的头结点A和B,请返回一个bool值,代表A中是否存在一棵同构于B的子树。 解题思路:我先把树序列化然后,进行字符串的对比。public class IdenticalTree { public boolean chkIdentical(TreeNode t1, Tree

2017-02-19 09:49:43 716

原创 相邻两数最大差值练习题

有一个整形数组A,请设计一个复杂度为O(n)的算法,算出排序后相邻两数的最大差值。 给定一个int数组A和A的大小n,请返回最大的差值。保证数组元素多于1个。 解题思路:利用桶排序就可以了哦public int maxGap(int[] A, int n) { // write code here if(null == A ||n<2) return 0;

2017-02-19 09:43:00 594

原创 最短子数组练习题

对于一个数组,请设计一个高效算法计算需要排序的最短子数组的长度。 给定一个int数组A和数组的大小n,请返回一个二元组,代表所求序列的长度。(原序列位置从0开始标号,若原序列有序,返回0)。保证A中元素均为正整数。 解题思路: 从左开始遍历数组,记录下已经遍历部分的最大值max,如果遍历的数值小于max时,记录这种情况下最右的位置right。从左开始遍历数组,记录下已经遍历部分的最大值min,

2017-02-19 09:41:09 283

原创 有序矩阵查找练习题

现在有一个行和列都排好序的矩阵,请设计一个高效算法,快速查找矩阵中是否含有值x。 给定一个int矩阵mat,同时给定矩阵大小nxm及待查找的数x,请返回一个bool值,代表矩阵中是否存在x。所有矩阵中数字及x均为int范围内整数。保证n和m均小于等于1000。 思路:判断矩阵右上角元素与待查找元素的大小,利用矩阵行列都有序的特性, 每次取出一行或一列元素。 public boolean fin

2017-02-19 09:38:44 344

原创 三色排序练习题

有一个只由0,1,2三种元素构成的整数数组,请使用交换、原地排序而不是使用计数进行排序。 给定一个只含0,1,2的整数数组A及它的大小,请返回排序后的数组。保证数组大小小于等于500。 解题思路: 思路1:直接给整个数组排序,时间复杂度O(nlogn)思路2:计数排序方法,使用一个类似hash的数组纪录每种颜色的个数,然后进行排序,但是需要遍历原数组两遍思路3:使用三个指针,p1表示红色和白色

2017-02-19 09:26:04 448

原创 有序数组合并练习题

有两个从小到大排序以后的数组A和B,其中A的末端有足够的缓冲空容纳B。请编写一个方法,将B合并入A并排序。 给定两个有序int数组A和B,A中的缓冲空用0填充,同时给定A和B的真实大小int n和int m,请返回合并后的数组。 解题思路:A数组从后往前排序。可以这样子理解A B数组的最大值放在A数组的后面,如此类推public int[] mergeAB(int[] A, int[] B, i

2017-02-19 09:18:53 362

原创 重复值判断练习题

请设计一个高效算法,判断数组中是否有重复值。必须保证额外空间复杂度为O(1)。 给定一个int数组A及它的大小n,请返回它是否有重复值。 解题思路:高效算法我就呵呵了,明显是堆排序了而且满足空间复杂度了O(1)。 public boolean checkDuplicate(int[] a, int n) { if (a == null || n == 0) {

2017-02-19 09:11:55 461

原创 小范围排序练习题

已知一个几乎有序的数组,几乎有序是指,如果把数组排好顺序的话,每个元素移动的距离可以不超过k,并且k相对于数组来说比较小。请选择一个合适的排序算法针对这个数据进行排序。 给定一个int数组A,同时给定A的大小n和题意中的k,请返回排序后的数组 解题思路:因为该数据是差不多有序,肯定用插入排序复杂度了O(N*k) ,但是大多数人用堆排序复杂度为O(nlogn)、 public int[] s

2017-02-19 09:06:30 267

原创 两串旋转练习题

如果对于一个字符串A,将A的前面任意一部分挪到后边去形成的字符串称为A的旋转词。比如A=”12345”,A的旋转词有”12345”,”23451”,”34512”,”45123”和”51234”。对于两个字符串A和B,请判断A和B是否互为旋转词。 给定两个字符串A和B及他们的长度lena,lenb,请返回一个bool值,代表他们是否互为旋转词。解题思路: 把二叉树t1,t2序列化为字符串str

2017-02-19 08:59:40 284

原创 二叉树打印练习题

有一棵二叉树,请设计一个算法,按照层次打印这棵二叉树。给定二叉树的根结点root,请返回打印结果,结果按照每一层一个数组进行储存,所有数组的顺序按照层数从上往下,且每一层的数组内元素按照从左往右排列。保证结点数小于等于500。 解题思路: 思路还是很清晰的,使用两个队列一个存放节点,一个存放值。先将根节点加入到队列中,然后遍历队列中的元素,遍历过程中,访问该元素的左右节点,再将左右子节点加入到队列

2017-02-19 08:51:53 225

原创 对于排序我有点感想

(1)插入排序 有可能出其不意最快就是他了 算法时间复杂度。 最好的情况下:正序有序(从小到大),这样只需要比较n次,不需要移动。因此时间复杂度为O(n) 最坏的情况下:逆序有序,这样每一个元素就需要比较n次,共有n个元素,因此实际复杂度为O(n­2) 平均情况下:O(n­2) 在插入排序中,K1是已排序部分中的元素,

2017-02-18 18:16:54 472

原创 八大排序(复习)

1冒泡排序public class bubbleSort { public static void main(String[] args) { int[] data = {11,2,5,6,7,14};// int[] data = {11,2}; sort(data); for (int i = 0; i < data.length; i

2017-02-18 09:14:05 203

原创 如何让进程杀不死(4)

是时候展示真正的技术了!!!!! 我要用JNI 、NDK;正常来说使用native保活实现方案也是大多数公司采用的方案, 技术关键点:开启native子进程,定时发intent 结论:单杀可以杀死,force close 5.0以上无效,5.0以下部分手机无效,第三方软件下无效,且无法保证实时常驻 但是如果只是一个C进程去轮询的话,还是很容易就会被各大清理软件清理掉。那么我

2017-02-17 10:37:05 561

原创 如何让进程杀不死(3) (小总结)

根据上面几篇博客我们懂得android回收进程的策略: 今天就开始想一下,在此基础上,如何实现保活,当然作为一个android开发,最先想到的肯定是在framework层有没有什么机制可以利用实现保活,当时整理了以下几点: 1、将Service设置为前台进程2、在service的onstart方法里返回 STATR_STICK3、添加Manifest文件属性值为android:persisten

2017-02-17 08:18:38 1341

原创 为什么我们要用线程池

1、new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? `new Thread(new Runnable() {@Overridepublic void run() { // TODO Auto-generated method stub}}).start();` 这样子做会带来很多不良之处 a. 每次new Thread新建对象性能差。 b.

2017-02-17 07:07:18 385

原创 如何让进程杀不死(2)

根据上一篇文章,我们知道了:是因为当系统资源吃紧或者说用户手动调用某些清理应用时,就会杀掉相应的进程。如果我们进程的Importance等级底与adj值高的话,我们的进程会优先被清理掉

2017-02-17 06:58:00 636

原创 如何让进程杀不死(1)

什么才叫后台常驻大家对应用后台常驻比较普遍的理解是当应用位于后台时不被干掉,退一步说应用位于后台时被干掉后依然能顽强地重新启动起来,这里的被干掉也可以简略地分为两种情况,第一种是当系统资源紧俏的时候or基于某种系统自身的后台运行规则选择干掉你的后台应用来获得更多的资源,第二种是用户手动调用某些安全软件的清理功能干掉你的后台应用。对于Android 5.0以前的系统我们可以考虑以上两种情况下的后台常驻

2017-02-16 11:19:29 1095 1

转载 对于65535问题的思考

Android为什么方法数不能超过65535 言归正传,来聊聊为什么方法数不能超过65535?搬上Dalvik工程师在SF上的回答,因为在Dalvik指令集里,调用方法的invoke-kind指令中,method reference index只给了16bits,最多能调用65535个方法,所以在生成dex文件的过程中,当方法数超过65535就会报错。细看指令集,除了method,fiel

2017-02-15 12:08:09 464

原创 结构体与类的区别(C++)

结构体和类都是提供了数据的封装和构造 结构体主要是c语言的特色 类是c++的基本机制 结构体中的数据默认方式是public的,而类是private的 结构体不提供继承机制,类提供继承机制,实现代码复用 类可以实现多态,结构体不支持 结构体和类区别结构体和类有很多地方很相似,是类的一种轻量级的替代品。因此弄清楚他们的区别和相同点,能比较好的把握他们的使用。

2017-02-15 11:12:38 336

转载 Handler,MessageQueue,Looper

深入理解Handler,MessageQueue,Looper 转:http://www.jianshu.com/p/6d143b8c15ee 前言: 其实讲 Handler 内部机制的博客已经很多了,但是自己还是要在看一遍,源码是最好的资料。在具体看源码之前,有必要先理解一下 Handler、Looper、MessageQueue 以及 Message 他们的关系。 Looper: 是一个

2017-02-10 17:21:56 173

APK瘦身工具基于AndResGuard

随着业务的各种发展,APK的大小必然越来越大,APK瘦身刻不容缓,对与APK的瘦身的手段我就进行简单列举吧 这文章主要介绍AndResGuard的使用(高手请右上角) 这个框架需要使用7za压缩技术,所以需要设置设置工具调用的路径 本文下面提供连接(模版): 因为使用了bat处理 使用前必须使环境一致

2017-09-05

基于UCGUI和FATF的电子书

基于UCGUI和FATF的电子书 在神州三号开发板上成功实现电子书。欢迎下载

2015-06-05

空空如也

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

TA关注的人

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