自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (3)
  • 收藏
  • 关注

原创 令人困惑的fitsSystemWindows

fitsSystemWindows 介绍根据官方文档,如果某个View 的fitsSystemWindows 设为true,那么该View的padding属性将由系统设置,用户在布局文件中设置的 padding会被忽略。系统会为该View设置一个paddingTop,值为statusbar的高度。fitsSystemWindows默认为false。重要说明: 1. 只有将statusbar设为透

2016-10-20 15:18:39 7831

原创 BindService 流程分析

在应用S中实现一个非常基础的功能(XXInterface)。如果应用C需要用到S实现的功能。通常的做法是:在应用S中定义一个Binder对象b,b同时实现了功能接口(XXInterface)。然后将b传递给应用C,这样C就可以远程调用S中的函数。 如何将S应用的Binder传递给应用C,主要有两种方法:一种是通过ServiceManager,S将Binder对象注册到ServiceManager

2016-08-24 16:04:26 728

原创 简单方法实现Android阅读器分页

写了一个非常小的阅读器。在实现分页功能时,一直没有思路。后来想了一个非常特别的方法。经过测试可以完美的实现分页功能。   主要思路:1、将文本内容填充到TextView中,调用setText一句搞定。2、计算TextView的高度范围内可显示的行数。如果TextView占据整个屏幕则计算屏幕范围可显示的的函数。利用TextView 的getLineBounds 函数可以

2016-08-23 20:18:19 8054 9

原创 Picasso代码解析

Dispatcher类Dispatcher类的注意作用是分发请求和向主线程提交结果Dispatcher中包含一个Looper Thread :DispatcherThread,和一个与DispatcherThread关联的Handler。Dispatcher通过该Handler向DispatcherThread提交Action(关于Action见下文)。每一个Action可以得到一个BitmapHu

2016-04-22 21:17:33 396

原创 连连看核心算法代码

public class Gamelogic { private final static int UP = 0; private final static int DOWN = 1; private final static int LEFT = 2; private final static int RIGHT = 3; private int ROW;

2016-04-22 19:46:57 1217

原创 Volley 解析

Volley Request处理流程RequestQueue类中有三个主要的队列。调用RequestQueue.add(request)加入的请求会先加入mCacheQueue(优先级阻塞队列)由CacheDispatcher( 循环读取队列中的请求,当没有请求处理时线程阻塞)线程处理。如果该请求之前已经被缓存,读取缓存返回给主线程结果。否则将请求加入mNetworkQueue由NetworkDi

2016-04-22 19:05:10 2022

原创 Email附件下载流程分析

1手动下载流程附件下载分为两种,一种是用户点击保存附件称为手动下载,一种是用户选择WIFI下自动下载附件称为自动下载。只有IMAP邮箱和Exchange邮箱支持自动下载。首先介绍手动下载附件的流程。 1.1 Attachment Table中关键字段介绍介绍在下载附件时用到的几个关键字段。字段取值         作用

2015-09-10 16:52:41 2675

原创 Email5.0 代码结构

Email5.0 代码结构1核心接口IEmailServiceIEmailService是Email的核心接口。定义了Email的基本功能。如发送邮件(sendmail),下载附件(loadAttachment),同步(sync)搜索邮件(searchMessages)等。EmailServiceStub实现了IEmailService接口。主要实现POP3和IMAP邮箱共同的一些方法

2015-06-22 23:01:08 2707

原创 ApiDemo/FragmentRetainInstance 解析

/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * Yo

2015-06-22 22:51:21 1090

原创 为什么滑动ListView时不响应点击事件

为什么滑动ListView时不响应点击事件从onInterceptTouchEvent方法说起,该方法是Viewgroup中的方法,默认实现直接返回false。在dispatchTouchEvent函数分发事件时,首先要问一下onInterceptTouchEvent对该事件是否有兴趣。如果Viewgroup对该事件感兴趣,会在onInterceptTouchEvent中返回true,截断事件向下

2015-03-23 20:44:37 1746

原创 通过Socket连接一次传输多个文件

最近在做一个通过WIFI在手机之间传输文件的功能。需要在手机之间建立一个持久的Socket连接并利用该连接传输数据。可以一次传输一个或多个文件。在一次传输多个文件时,遇到了一个困难:如何在接收文件时确定文件之间的边界。为了在接收端正确的拆分文件,在传输文件时需要传输每个文件的大小。我采用了这样一种策略:首先发送每个文件的名称和大小,然后传输文件的内容。protected v

2014-08-20 10:33:35 5378 4

原创 Android加载通话记录流程分析

通话记录的加载过程和大部分的应用类似,也是异步查询数据库,得到查询结果后再刷新ListView。但是在加载通话记录时还有一些特别的处理。特别是在绑定Listview时涉及到了一些复杂的操作。显示通话记录由CallLogFragment.java文件进行处理。在加载通话记录的过程中还用到了CallLogQueryHandler查询通话记录数据库,CallLogAdapter填充ListView。

2014-04-05 15:20:29 3575

原创 java Future

在看AsyncTask的源码时看到了对Future接口的使用,查了一些资料,说一下我对这东西的理解。Future主要是用来执行异步计算的,我有一个任务交给Future在后台线程执行,而我可以继续进行我的工作。当我的工作完成以后,可以去Future哪里取结果或等待任务执行结束。举个栗子:小明和她妈去菜市场买菜。买完菜之后发现家里酱油没了,然后让小明去打酱油,等小明打酱油回来之后一起回家做

2014-04-05 15:02:01 1235

原创 Android之Handler

每一个Android程序都有一个主线程负责响应用户的操作事件和绘制UI界面,该线程也被称为UI线程。在主线程中不允许执行耗时的操作,这样会导致ANR。因此如果要执行耗时操作一般需要创建一个工作线程。Android不允许在非主线程中执行更新UI的操作,这是因为Android的UI设计不是线程安全的,在非主线程中更新UI会抛出异常。例如我要在网上下载一副图片并在窗口中显示。我需要创建一个线程下

2014-03-29 19:36:20 671

原创 python 归并排序

用python实现了三种归并排序算法,第一种采用递归实现,第二种采用迭代实现,第三种也是迭代实现,但是当元素基本有序时第三种更加高效。递归的实现很简单,迭代算法不如递归容易理解但是更高效。对于归并排序,递归和迭代的效率差不多。但递归比迭代需要消耗额外的栈空间。但递归算法要不迭代算法简洁,容易理解。递归更符合人类的思考习惯,鱼与熊掌不可兼得。大部分递归算法可以实现的程序,迭代也可以。很多用递归很容易

2012-12-30 23:06:50 1014

原创 通用链表

在文章中作者介绍了一种使用c/c++构造通用链表的方法。在c语言中我们编写的每一个链表操作函数都是针对特定的链表类型的。每出现一种新的链表类型就要实现一次链表操作函数,虽然这些操作的逻辑都很相似。在c++中采用泛型编程可以编写针对所有类型的链表操作函数,也就是模板函数。而通用链表比链表模板还有牛逼,在通用链表中链表节点之间的类型可以不同。其实通用链表这个东西早就有了,在linux的内核实现中就构造

2012-12-10 19:52:33 656

原创 单链表排序程序

struct node{ int num; node *next;};/*按照从小到大的顺序插入节点p,返回头节点*/node* insertNode(node *head,node *p){ if(p->numnum) { p->next=head; return p; } insertNode(head->next,p); return head;}/

2012-12-07 17:00:22 466

原创 Project Euler问题82

原问题链接。具体思路以后再写#include#includeusing namespace std;#define N 80#define min(a,b) ((a)>(b)?(b):(a))//找到从位置(row,column)到最右段的最小值路径int findMin(int num[][N],int row,

2012-08-24 21:53:58 497

原创 java画Hibert曲线

以前用java画过Koch曲线,Hibert也是分形曲线的一种而且具有很多奇特的性质。文章(一个非常不错的博客)对Hibert 的性质和画法给出了详细的介绍。本程序就是参考该文章写出的。程序的运行效果如图所示分别为迭代次数取4,7,8时的效果:程序代码:import java.awt.Color;import java.awt.Graphics;import j

2012-07-09 14:04:47 983

原创 malloc函数模拟实现(其实说原创有点勉强)

malloc函数的原理很简单,首先利用系统调用(linux平台和windows平台都提供了从堆区动态分配内存的系统调用)从堆区申请一块内存,每当应用程序申请内存时,从这块内存区截取一块提供给程序。这样可以减少利用系统调用申请内存的次数,提高了效率。就好比批发商从厂商那里批发了很多商品,然后卖给消费者。从而方便了消费者。不用需要商品时都要从厂商那里购买。但是malloc的实现涉及到了很多细节。其中涉

2012-07-04 21:31:23 1336

原创 从网页中爬取小说内容并保存为文本文件的小程序

起因:本人特别喜欢看小说,网上有很多连载的小说。比如这样一个网站http://www.yi-see.com/art_5165_9215.html 下面是网站的截图:一篇文章有很多小节,我想把所有的小节下下来,合并到一个文本文件中比如novel.txt。这样可以放在手机上,躺在被窝里看。于是写了这样一个小程序。这个小程序只是针对该网站的布局来写的,因此非常的不灵活。这件事

2012-02-16 22:59:40 4848 2

原创 美妙的递归

刚开始接触递归方法时,感觉到这种方法很匪夷所思。很多很复杂的问题短短几行代码就能解决。当时我一直试图理清程序执行的具体过程,由于对递归认识不够每次都弄的自己很晕。在这里先不谈递归程序运行时底层的细节,先举几个小例子见识一下递归的威力。Example1:链表逆序。对链表逆序有很多办法,如何写一个递归的函数对链表逆序呢?背景:以下为链表要用到的结构体struct Node{

2011-12-22 22:26:09 559

原创 表达式求值(c++实现)

今天写了一个表达式求值的程序。基本功能为:输入一个表达式比如23*34-21+(56*(45-1)) 然后程序求出结果。而且按照四则运算的优先级,同时支持括号。下面是程序运行的画面:程序的难点在于把一个字符串分解为操作数和操作符并能正确处理各个操作符的优先级,特别是有括号的情况。本程序主要采用了传统的方法创建了操作数栈和操作符栈。关于操作符优先级的处理采用了一个关联数组来处理。还有很多

2011-10-29 21:07:44 1633

原创 我的感悟之指针

本文从一个新的视角看指针,希望能给读者耳目一新的感觉。直奔主题,我认为指针有两个主要的属性:一是指针的值,二是指针的型。指针的值就是指针所指的变量的首地址,指针的型就是指针所指变量的类型。本文就围绕着指针的值和型展开。指针的值是可以改变的。但如果不想让指针的值更改可以声明为常量指

2011-07-24 16:15:37 406

原创 从网页中提取email地址的小程序

程序很小,但是功能却很强大,很有意思。当你输入一个网页的url地址之后,就能把网页中的全部电子邮箱地址揪出来。主要运用了URL类和正则表示式。不过程序有一个bug。当电子邮箱的地址跨越两行时不能很好的处理。当然也有一个不太理想的解决方案:就是把网页内全部读入一个字符串变量中再进行

2011-07-15 15:09:10 1344

原创 java画Koch曲线

<br />对分形很感兴趣,想用java画一下Koch曲线。非常好玩好看。先给大家看一下效果。<br /><br /> <br />下面是程序的实现代码。可以改变参数设置分形的次数。 <br />public class Vector { private int pointX; private int pointY; Vector(int x, int y) { pointX = x; pointY = y; } public int getX() { return poin

2011-06-01 21:45:00 1152

原创 一个学习java多线程的好例子

有这样一道面试题目:有一个int类型的变量count,有四个线程其中两个线程对count执行count+=1一百次,另外两个线程对cout执行count-=1一百次。在程序运行过程中确保count在0到一百范围之内。这是一个典型的生产消费者问题,涉及到线程的同步和互斥操作。 public class Count { int count = 0; public synchronized void increase() { while (count == 100) try {

2011-05-31 21:11:00 533

linux编程实践教程

比较基础的linux环境下的程序设计教程。非常不错。

2012-08-27

thining in java(英文版)

一本学习java的经典好书,讲解特别深刻。而且是英文版。

2010-09-16

空空如也

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

TA关注的人

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