自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Stackvoid小菜

关注Android开发

  • 博客(36)
  • 资源 (2)
  • 收藏
  • 关注

原创 Android App 性能优化实践

原文链接: http://stackvoid.com/performance-tuning-on-android/本文记录了Android App优化需要用到的工具和以及在实践中的Tips。也算对我这半年来部分工作的总结。工具Hierarchy Viewer 是 Android SDK 自带的 Layout 嵌套检查工具,以可视化的布局角度直观获取 Layout 布

2015-02-02 12:44:23 710

原创 开放授权协议OAuth2.0简介

原文地址: http://stackvoid.com/introduce-to-oath2.0/可能你跟我一样,使用过各种第三方开放授权库(如在你的 APP 中获取 QQ 照片或微博评论等)来获取用户的一些资源,今天跟大家总结分享一下开放授权(OAuth2.0,1.0太复杂已经被弃用)的概念和原理,在以后使用开放授权SDK时能快速高效完成。OAuth解决了什么问

2015-01-30 18:01:34 1251

原创 用户体验很棒的Git学习网站

原文地址:http://stackvoid.com/interactive-git-tutorials/Git 是一个强大的版本控制工具,但学起来真的好枯燥、很痛苦;但你又必须得熟悉这个工具,因为它是当今软件开发中不可缺少的一环。本文就跟大家分享3个免费的交互式 Git 学习网站,这几个交互式学习网站使得学习 Git 变得生动活泼起来,希望能帮助你尽快进入 Git 的世

2015-01-06 15:09:22 1157 1

原创 如何备份Github博客至GitCafe

原文链接:http://stackvoid.com/how-to-transfer-github-pages-to-gitcafe/开通博客半年多了,一直将博客托管到 Github 上,使用 Github Pages 的免费服务;最近发现一个令人不安的事实,我的博客在其他省份解析的很慢,通过 CNZZ 和 Google Analytics 发现有些时候博客打开速度慢出翔,当时就

2014-12-18 16:14:18 1208

转载 解决Android SDK 下载太慢

1、打开android sdk manager2、打开tool->options,如图所示3、将Proxy Settings 里的HTTP Proxy Server和HTTP Proxy Port分别设置成mirrors.neusoft.edu.cn和80将Others中的Force https://...sources to be fetched using

2014-12-16 12:37:07 556

原创 Stackoverflow 打开慢或样式(CSS)无法正常显示问题

原文链接:http://stackvoid.com/stackoverflow-css-down/最近使用 stackoverflow 超级不爽,加载慢不说 样式还刷不出来,极大影响工作效率。查了下原因,原来是stackoverflow网站指向 CloudFlare 这个牛逼的 CDN,但是国内此 CDN 被墙了,so...该怎么解决呢?网上搜到一个以备

2014-12-15 11:37:38 2132

原创 使用 Git 生成标准 Patch

源地址:http://stackvoid.com/how-to-use-git-generate-patch/发布给别的厂商的代码,随着 Bug 的解决,需要即使通知厂商,这时候 Patch 就大显身手了。今天跟大家分享总结如何快速生成一个标准的Git可以识别的Patch。1.初始化git环境使用git initgit add * /

2014-12-12 13:14:52 991

原创 Android ListView 优化最佳实践

原文地址链接:http://stackvoid.com/list-view-optimization-best-practice-android/我有篇博客教大家如何利用 convertView 以及 viewHolder(static) 改善 ListView 卡顿情况;但是在 ListView 加载大量复杂布局和图片的时候,即使使用了 convertView 和 vie

2014-12-09 16:39:57 942

原创 bluedroid源码分析之ACL包发送和接收(二)

更多内容请参照我的个人站点: http://stackvoid.com/上一节讲了数据流入口,本文分析L2CAP的处理函数。L2CAP层的处理我们的音乐数据,通过 L2CAP 入口函数 l2c_data_write 的层层“考验”,已经顺利进入到 L2CAP 里了,下面我们来看看 L2CAP 层具体是怎么处理数据的。首先我们进入了 L2CAP 层的状态机。

2014-11-14 14:11:26 2194

原创 bluedroid源码分析之ACL包发送和接收(一)

更多内容请参照我的个人站点: http://stackvoid.com/ACL 链路在 Bluetooth 中非常重要,一些重要的应用如 A2DP, 基于 RFCOMM 的应用,BNEP等都要建立 ACL 链路,发送/接收ACL 包。今天跟大家一起来分析 ACL 包发送/接收流程,以及涉及到的重要 command/event。ACL包发送下面的图(点击大图)是各种应

2014-11-12 15:54:22 2124

原创 Android数据适配器(Adapter)优化:使用高效的ViewHolder

在使用Listview或GridView的时候,往往需要自定义数据适配器,一般都要覆写getView(),在该方法中有一个convertView参数,该参数就是用来加载数据时的View。初学者简单但低效的方式 1 public View getView(int position, View convertView, ViewGroup parent) { 2 3 View

2014-10-13 11:47:34 1295

原创 Android应用中埋点监控的思考与设计

一款Android商业应用上线后,最关心的莫过于用户使用哪个模块比较频繁,哪个模块使用人群较少,产品可以根据这些数据来修正app以后的发展方向,使产生最大的商业价值。通过埋点监控,我们可以深入业务的每一个细节,产生的用户行为可以通过所埋的点累计次数并将这些数据发送到数据中心,通过数据分析师就能给产品

2014-10-10 17:08:55 3065 9

原创 Android 事件分发机制详解

更多内容请参照我的个人站点: http://stackvoid.com/网上很多关于Android事件分发机制的解释,大多数描述的都不够清晰,没有吧来龙去脉搞清楚,本文将带你从Touch事件产生到Touch事件被消费这一全过程作全面的剖析。产生Touch事件这部分牵扯到硬件和Linux内核部分;我们简单讲述一下这部分内容,如果有兴趣的话可以参考这篇文章。传递Touc

2014-10-08 14:10:31 1148

原创 链表相交(及相交的节点)、判断链表是否有环问题

链表相交问题给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。解决方案:1.先判断链表是否有环2.没有环,两个链表都遍历到最后的节点,判断这连个节点是否相同。3.有环,必定相交。struct Node { int data; int Node *next;};// if there is no cycle.int isJoinedS

2013-05-23 16:06:04 823

原创 在二元树中找出和为某一值的所有路径

题目:在二元树中找出和为某一值的所有路径输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22 和如下二元树 10 / \ 5 12 / \ 4 7则打印出两条路径:10, 12 和10, 5, 7。思路

2013-05-23 10:45:07 714

原创 设计包含min函数的栈

要求定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。 要求函数min、push 以及pop 的时间复杂度都是O(1)。解法1:使用一个辅助栈来保存最小元素,这个解法简单不失优雅。设该辅助栈名字为minimum stack,其栈顶元素为当前栈中的最小元素。这意味着要获取当前栈中最小元素,只需要返回minimum stack的栈顶元

2013-05-21 17:55:56 822

原创 ubuntu 12.10 关闭图形界面

[注意]改GRUB 的配置文件(不建议直接改 grub.conf)     file:/etc/default/grub         GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"替换为  GRUB_CMDLINE_LINUX_DEFAULT="text"保存后 sudo update-grub 重启即可

2013-05-20 09:31:45 923

原创 二叉树-经典问题复习

节点定义typedef struct Btree { int v; struct Btree *left; struct Btree *right;}*Btree;插入节点Btree insertNode(Btree root, int value) { Btree ptr=root; Btree tmpNode;

2013-05-17 17:27:13 1101 1

原创 初探C++中的虚函数

虚函数的由来和使用:http://www.cnblogs.com/fangyukuan/archive/2010/05/30/1747449.html虚函数的定义要遵循以下重要规则:   1.如果虚函数在基类与派生类中出现,仅仅是名字相同,而形式参数不同,或者是返回类型不同,那么即使加上了virtual关键字,也是不会进行滞后联编的。   2.只有类的成员函

2013-05-02 16:04:51 705

原创 C++类的特殊数据成员

一、const 数据成员    const 类型的数据成员具有只读属性, 在构造函数内进行初始化是不允许的.    要初始化 const 型的数据成员, 必须通过初始化表达式来进行初始化, 一经初始化, 其值确定, 不能再被修改, 通过初始化表达式形式如下: A(int n = 0):num(n) { } //使用初始化表达式对co

2013-05-02 15:32:33 951

原创 查找数组中超过出现次数超过一半的数字(找发帖水王)

题目数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。 解决方案:1.如果无序,那么我们是不是可以先把数组中所有这些数字先进行排序,至于选取什么排序方法则不在话下,最常用的快速排序O(N*logN)即可。排完序呢,直接遍历。在遍历整个数组的同时统计每个数字的出现次数,然后把那个出现次数超过一半的数字直接输出,题目便解答完成了。总的时间复杂度为O(N*logN+N)。我们发现

2013-05-02 09:37:30 999

转载 一致性hash算法

tencent2012笔试题附加题    问题描述:例如手机朋友网有n个服务器,为了方便用户的访问会在服务器上缓存数据,因此用户每次访问的时候最好能保持同一台服务器。已有的做法是根据ServerIPIndex[QQNUM%n]得到请求的服务器,这种方法很方便将用户分到不同的服务器上去。但是如果一台服务器死掉了,那么n就变为了n-1,那么ServerIPIndex[QQNUM%n]与Se

2013-04-25 15:57:18 795

原创 深入理解递归:全排列问题

1.题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c 所能排列出来的所有字符串abc、acb、bac、bca、cab 和cba。解决办法:从集合中依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理,从而得到所有元素的全排列。以对字符串abc进行全排列为例,我们可以这么做:以abc为例固定a

2013-04-25 12:06:00 1980

原创 Manacher算法: O(n)时间求字符串的最长回文子串

回文串包括奇数长的和偶数长的,一般求的时候都要分情况讨论,这个算法做了个简单的处理把奇偶情况统一了。算法的基本思路是这样的,把原串每个字符中间用一个串中没出现过的字符分隔开来(统一奇偶),用一个数组p[ i ]记录以 str[ i ] 为中间字符的回文串向右能匹配的长度。先看个例子原串:w  a   a   b   w   s   w   f   d新串:   #   w   #

2013-04-24 18:57:36 948

原创 提取出某日访问百度次数最多的那个IP

题目描述: 假设一天之内某个IP访问百度的次数不超过40亿次,则访问次数可以用unsigned表示.用数组统计出每个IP地址出现的次数,  即可得到访问次数最大的IP地址。方法: 计数法    IP地址是32位的二进制数,所以共有N=2^32=4G个不同的IP地址, 创建一个unsigned count[N];的数组,即可统计出每个IP的访问次数,而si

2013-04-23 18:53:23 742

原创 两个字符串是否包含问题

题目描述:假设这有一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串里的字母数相对少一些。从算法是讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有?比如,如果是下面两个字符串:String 1: ABCDEFGHLMNOPQRSString 2: DCGSRQPOM答案是true,所有在string2里的字母string1也都有。

2013-04-23 14:59:41 978

原创 ofstream和ifstream详细用法

ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器(  向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>)

2013-04-23 14:56:02 560

原创 随机数生成--srand()以及rand()函数用法

1.前言srand()就是给rand()提供种子seed如果srand每次输入的数值是一样的,那么每次运行产生的随机数也是一样的,srand(n)for(10)rand()也就是说,以一个固定的数值作为种子是一个缺点。 通常的做法是  以这样一句代码srand((unsigned) time(NULL));来取代,这样将使得种子为一个不固定的数,

2013-04-23 14:11:11 892

原创 TOP K 和快速选择SELECT

TOP K 问题题目描述:查找最小的k个元素题目:输入n个整数,输出其中最小的k个。例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。解决方案:void maxHeap(int s[], int i, int len){ int largeIndex = -1; int left = 2 * i; int rig

2013-04-23 12:55:20 1113

原创 求连续子数组的最大和

题目描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。#include using namespace st

2013-04-23 12:51:43 603

转载 前缀,中缀,后缀表达式

前缀表达式(Prefix Notation)是指将运算符写在前面操作数写在后面的不包含括号的表达式,而且为了纪念其发明者波兰数学家Jan Lukasiewicz所以前缀表达式也叫做“波兰表达式”。比如- 1 + 2 3后缀表达式(Postfix Notation)与之相反,是指运算符写在操作数后面的不含括号的算术表达式,也叫做逆波兰表达式。比如1 2 3 + -中缀表达式(Infi

2013-04-23 12:49:16 1204

原创 寻找亲和数(使用伴随数组)

题目描述:求500万以内的所有亲和数如果两个数a和b,a的所有真因数之和等于b,b的所有真因数之和等于a,则称a,b是一对亲和数。例如220和284,1184和1210,2620和2924。解决方案:使用伴随数组。假设是求10以内的亲和数,求解步骤如下:        因为所有数的真因数都包含1,所以,先在各个数的下方全部置1然后取i

2013-04-23 12:45:54 2183

转载 32位机器中int/char/long 的字长 && 字节对齐

今天看到一个资料,看到里面讲到int在32位机器中占的是四个字节的内存,我脑海里面感觉这个好像不对,然后在网上查了下资料,发现int类型的数据在32位机器中的确占的内存是4个字节,现在对一些数据结构在内存中所占的字节数总结下。         1: char   a:   sizeof(a)  =   1;         2: int   a  :     sizeof(a)

2013-04-23 12:44:20 4221

原创 C++快速生成随机数

http://blog.csdn.net/ajioy/article/details/7551687

2013-04-23 12:43:11 818

原创 模拟cat命令的输出

写一个程序,它读入任意多由命令行参数提供的名字的文件,并将它们一个接一个写入cout。C++程序设计语言第七章练习题4#include #include using namespace std;void cat_stream(istream &input){ char c; while (input.get(c)) { cout.put(c); }}int

2013-04-23 12:42:06 861

原创 const char*, char const*, char*const

1.前言Bjarne在C++程序设计语言里面给过一个助记的方法: 把一个声明从右向左读。 char * const cp; ( * 读成 pointer to ) cp is a const pointer to char const char * p; p is a pointer to const char; char const * p; 同上因为

2013-04-23 12:40:42 694

Java+2图形设计卷ⅠAWT

Java+2图形设计卷ⅠAWT 主要介绍了基本的原理和方法

2013-06-19

圆弧与贝塞尔曲线互相转换

主要讲述了圆弧与贝塞尔曲线互相转换 贝塞尔曲线拆分多边形处理中,曲线与圆弧几乎拟合,可以不用分解为线段

2013-06-19

空空如也

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

TA关注的人

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