OKHTTP分享三网络连接

连接复用背景每一次Http请求都要经历三次握手四次挥手,重复的连接与释放,导致对请求的响应变慢 持续连接在传输数据后仍然保持连接,当客户端需要再次获取数据的时候,直接使用刚刚空闲下来的链接而不需要再次握手 实现方式:在请求头中添加connection:keep-alive 如果有大量空闲...

2018-01-02 17:22:59

阅读数 735

评论数 0

OKHTTP分享二缓存策略

与缓存有关的Header Expires Expires: Thu, 12 Jan 2017 11:01:33 GMT 表示到期时间,一般用在response报文中,当超过此时间响应将被认为是无效的而需要网络连接,反之直接使用缓存 条件GET 客户端发送条件get请求,如果缓存是有效的,则返...

2018-01-02 16:19:17

阅读数 1213

评论数 0

OKHTTP分享一框架流程

TCP/IP五层模型 分层(由上至下) 作用 代表协议 应用层 定义报文类型、字段语义 等 HTTP、SMTP等 传输层 负责进程之间的通信 TCP、UDP 网络层 负责子网之间的通信、路由寻址(网络地址) IP 链路层 定义数据的分组格式、M...

2018-01-02 16:07:04

阅读数 153

评论数 0

有向图中有向环检测

背景假如有三个存在优先级的任务x、y及z,x要在y之前完成,y要在z之前完成,而z又要在x之前完成,那该问题一定是无解的。寻找有向图中是否存在有向环是判定一个任务优先级问题的前提边的类型从某个点开始的深度搜索过程中遇到了后向边,可作为找到有向环的标志代码实现private boolean[] on...

2018-01-02 10:55:08

阅读数 512

评论数 0

无向图有环检测

问题给定一幅无向图,如何检测出其是否有环存在?//只需在深度优先搜索方法中添加几行代码即可解决 public void dfs(int v, int s) {//v代表要被搜索的节点,s是v的父节点,s->v,代表指向v的一条路径, marked[v] = true; for...

2017-12-30 15:49:32

阅读数 766

评论数 0

Java实现快速排序及三向快速排序

快速排序思想选中数组中某个元素(一般为数组首元素)为参照物,将数组中比参照物小的元素排到数组左边,比参照物大的元素排到数组右边。快速排序的操作步骤 以数组a[N]的首元素a[0]为参照物,设立两个指针i、j分别指向数组下标为1和N-1的位置 移动指针i,直到满足a[i] > a[0] 移动指...

2017-12-16 16:07:26

阅读数 189

评论数 0

深度优先搜索和广度优先搜索

邻接表数组法图是点和边的集合。如下图所示: 假定所有的点都是以0-N的自然数来表示,用数组a[N]索引(下标)代表所有的点,数组的元素为一个保存了与该点直接相连的所有的点的容器(Bag)。即a[N]表示所有和点N直接相连的点的集合,如下图所示: 此种对图的描述方法称为邻接表数组法。一个图(G...

2017-12-02 17:41:45

阅读数 62

评论数 0

Java实现二叉查找树(BST)

背景 对于一个size为N的链表或有序数组来说,进行第N+1次操作时最坏情况下的增长数量级如下表: 数据结构 \ 操作 查找 插入 链表 N logN 有序数组 logN N 链表的优势在于插入,有序数组的优势在于查找(二分查找),而...

2017-09-11 20:33:02

阅读数 208

评论数 0

排序算法之堆排序

注:此文需要对有序二叉堆、优先队列等知识有所了解,建议看完用有序二叉堆实现优先队列后再阅读此文和优先队列的关系因为优先队列本身已经提供了删除最小(或最大)元素的接口,最简单的做法是将待排序数组依次插入优先队列中,再依次删除最小元素。此种做法需额外的空间(优先队列),且时间复杂度较高(相当于插入排序...

2017-09-02 15:53:38

阅读数 102

评论数 0

索引优先队列的实现

注:此文需要对有序二叉堆、优先队列等知识有所了解,建议看完用有序二叉堆实现优先队列后再阅读此文背景普通优先队列(不带索引)只能访问有序二叉堆的根节点,而无法引用队列中的其它任何元素。特点索引优先队列中存储的元素都有对应的“索引”,通过“索引”我们可以引用该索引对应的元素。可以理解为HashMap中...

2017-08-31 18:14:54

阅读数 243

评论数 0

用有序二叉堆实现优先队列

优先队列优先队列要提供并实现两个操作 删除并返回最大元素 插入元素 优先队列的实现优先队列的实现采用有序二叉堆形式,采用链表或堆栈也可实现,但时间复杂度较高。这里不再赘述。有序二叉堆的特点 所有根结点必定不小于其两个叶子节点 如果某个节点对应的数组下标为k,则其根节点为k/2,其叶子节点为2k和2...

2017-08-30 19:54:40

阅读数 261

评论数 0

排序算法之归并排序及利用归并排序求逆序数

排序算法之归并排序1. 自顶向下的归并排序中心思想将待排序的数组平均切分为两半,将前半部分和后半部分分别进行排序,再讲两个有序数组归并到一个数组中特点递归,需要额外的空间(辅助数组)来保存切分完成的子数组,主要难点在于合并操作步骤 将待排序数组均分为两半 对前半部分进行排序 对后半部分进行排序 合...

2017-08-27 22:11:28

阅读数 137

评论数 0

排序算法之希尔排序

排序算法之希尔排序背景希尔排序是对插入排序的优化,如果一个长度为N的数组中,数值最小的元素恰好在数组最末端,则将该元素归位(假设从小到大插入排序)得移动N-1次。特点相对于插入排序是移动相邻元素,希尔排序移动的是不相邻的元素,先对数组的局部进行排序,最终借助插入排序将局部有序的数组排序中心思想使数...

2017-08-27 16:51:49

阅读数 192

评论数 0

Android异步工具之-AsyncTask用法及机制分析

定义 This class allows to perform background operations and publish results on the UI thread without having to manipulate threads and/or handlers.摘自开发...

2017-08-10 16:52:03

阅读数 140

评论数 0

用systrace分析卡顿问题

1. 如何抓取systrace 1)将sdk platform-tools升级到最新(目前是25.0.1),因为旧版本sdk抓取到的systrace文件会出现打不开或显示信息不全等问题。 2)在ubuntu环境下运行如下adb 命令:         $ cd android-sdk/pla...

2017-08-10 16:45:56

阅读数 2030

评论数 0

Android卡顿问题分析方法

卡顿直接原因:绘制一帧的时间>16ms 根本原因: 1)UI线程做了耗时操作(严重ANR) 2)布局过于复杂,嵌套多,overdraw 3)内存GC被频繁触发 分析方法: 1)HierarchyViewer会显示绘制每个view时(onMeasure、onLayout和onDra...

2017-08-10 16:39:38

阅读数 388

评论数 0

Android 内存溢出(OOM)问题分析方法

oom的原因? 1)对象设计不合理(单个对象的内存占用过大、同类对象未重复利用); 2)一次性申请很大内存导致超出了系统对单个应用设定的内存上限(Dalvik Heap Size); 3)内存泄漏 如何利用工具定位oom? 1) 先查找发生oom的是哪个activity? 可采取的查找...

2017-08-10 16:28:31

阅读数 205

评论数 0

Android 消息机制(Handler、Looper和MessageQueue)

背景 主线程不能执行耗时操作;子线程完成了耗时操作,需要在UI上作出相应的改变;Android控件不是线程安全的,对其的操作只能在主线程进行,导致子线程无法访问UI;消息机制帮助子线程“间接操作UI”。 概述 消息机制主要包含4个类 Message :消息的载体 ,...

2017-08-09 19:34:14

阅读数 137

评论数 0

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