正文内容加载中...
posted @ 2013-09-22 21:08 孤~影 阅读(1643) 评论(2) 推荐(4) 编辑
摘要: 前些日子几大互联网巨头展开了一轮网盘空间大战。一下子从G级别提高到了T级别。以后谁的空间没有1T估计都不好意思开口了~~~试用了一下360云盘的客户端,比较小清新(不是给360打广告~~~)。刚好UI这一块是我最不擅长的,于是萌发了练习模仿它的UI的念头~~~顺便把复习一下自定义控件的使用。以下是完成的效果图,左边是官方的,右边是我模仿的: 还挺像的吧~~~先介绍一个神器:UI Automator Viewer这个SDK的tools文件夹或DDMS中都可以找到。它可以很方便地查看UI的视图层级和UI控件的具体位置与实现。相当好用,有了它我们就不用去猜官方到底是怎么实现的、使用什么布局了。具体实 阅读全文
posted @ 2013-09-08 10:50 孤~影 阅读(6564) 评论(10) 推荐(4) 编辑
摘要: KMP算法应该是每一本《数据结构》书都会讲的,算是知名度最高的算法之一了,但很可惜,我大二那年压根就没看懂过~~~之后也在很多地方也都经常看到讲解KMP算法的文章,看久了好像也知道是怎么一回事,但总感觉有些地方自己还是没有完全懂明白。这两天花了点时间总结一下,有点小体会,我希望可以通过我自己的语言来把这个算法的一些细节梳理清楚,也算是考验一下自己有真正理解这个算法。什么是KMP算法:KMP是三位大牛:D.E.Knuth、J.H.Morris和V.R.Pratt同时发现的。其中第一位就是《计算机程序设计艺术》的作者!!KMP算法要解决的问题就是在字符串(也叫主串)中的模式(pattern)定位问 阅读全文
posted @ 2013-08-17 08:49 孤~影 阅读(296750) 评论(79) 推荐(158) 编辑
摘要: 堆排序(Heap):要讲堆排序之前先要来复习一下完全二叉树的知识。定义:对一棵具有n个结点的二叉树按层序编号,如果编号为i(0 = 0; i--) { adjust(array, i, array.length); }} private static void adjust(int[] array, int n, int size) { int temp = array[n]; // 先拿出数据 int child = n * 2 + 1; // 这个是左孩子 while (child array[child]) { child++; ... 阅读全文
posted @ 2013-08-15 08:42 孤~影 阅读(3189) 评论(6) 推荐(5) 编辑
摘要: 归并排序(Merge Sort):归并排序是一个相当“稳定”的算法对于其它排序算法,比如希尔排序,快速排序和堆排序而言,这些算法有所谓的最好与最坏情况。而归并排序的时间复杂度是固定的,它是怎么做到的?两个有序数组的合并:首先来看归并排序要解决的第一个问题:两个有序的数组怎样合成一个新的有序数组:比如数组1{ 3,5,7,8 }数组2为{ 1,4,9,10 }:首先那肯定是创建一个长度为8的新数组咯,然后就是分别从左到右比较两个数组中哪一个值比较小,然后复制进新的数组中:比如我们这个例子:{ 3,5,7,8 } { 1,4,9,10 } { }一开始新数组是空的。然后两个指针分别指向第一个元素, 阅读全文
posted @ 2013-08-14 10:56 孤~影 阅读(2794) 评论(5) 推荐(4) 编辑
摘要: 今天花了点时间把七个常见的内部排序重新复习了一遍,总结一下,也算是验证一下自己有没有真正理解。冒泡排序(Bubble Sort):很多人听到排序第一个想到的应该就是冒泡排序了。也确实,冒泡排序的想法非常的简单:大的东西沉底,汽泡上升。基于这种思想,我们可以获得第一个版本的冒泡:public static void sort1(int[] array) { for (int i = 0; i array[j]) { // 进行两元素之间的位置交换 int temp = array[j - 1]; array[j... 阅读全文
posted @ 2013-08-13 22:07 孤~影 阅读(2172) 评论(6) 推荐(5) 编辑
摘要: 蓝牙应该是现在每一部智能手机的标配了。想当年在山寨机横行的年代里,蓝牙都可以做为一个卖点~~~废话不多说了,进入正题:使用蓝牙功能是需要权限的,关于蓝牙的权限也就两个:第一个是最基本的,打开蓝牙,请求连接,接受连接都需要这个。每二个从字面上看都觉得高级一点,它主要用于像建立搜索、对蓝牙进行设置这些操作。添加好权限之后就可以开始使用了Android系统为我们提供了一个功能极其强大的类用于进行蓝牙操作,这个类就是BluetoothAdapter。通过这个类的方法可以满足我们的大多数操作了。要获得这个类的对象我们可以直接调用它的一个静态方法getDefaultAdapter()。顺便看看它的源码是怎 阅读全文
posted @ 2013-08-07 08:41 孤~影 阅读(13024) 评论(1) 推荐(0) 编辑
摘要: Content Provider是Android系统四大组件之一:官方的定义是:A Content Provider manages access to a central repository of data.那么Android系统为什么要提供这样一个组件呢?个人觉得至少有如下两点:首先,Android是一个很重视安全性的系统(貌似Android系统的漏洞最多~~~),一个应用的数据对于其他应用来说私有的,除非你把数据存储在SD卡上。但很多时候我们需要在程序之间共享数据,比如我们想获取联系人的信息之类的。这时Content Provider就提供了一个很好的解决方案,将数据的存储、读取细节隐 阅读全文
posted @ 2013-08-06 09:27 孤~影 阅读(2300) 评论(0) 推荐(0) 编辑
摘要: 线性表(List):零个或多个数据元素的有限序列。关键字有两个: “零个”也就是说线性表是可以为空的; “有限序列”不管多长的线性表,总要有一个最大长度,并且元素与元素之间是一对一的关系,也即有一定的顺序。在Java中有一个很“神奇的”类,就是ArrayList。它神奇的地方在于它使用起来和数组一样简单,但却提供了更多更方便的方法。感觉上ArrayList是可以无限添加元素的!这一点太方便了,它是怎么做到的呢?其实,ArrayList是底层就是用数组来实现的!但是上次不是才说数组的长度是不能变的吗?实际上,它可以实现“无限的”添加元素只是因为它的底层有一个机制,在数组空元素用完的时候会生成.. 阅读全文
posted @ 2013-07-09 08:39 孤~影 阅读(2225) 评论(0) 推荐(0) 编辑
摘要: 不知不觉大学过了三年,最遗憾的就是在大二没把《数据结构》和《算法》这两门课程学好~~~现在每天花一点时间把这两个内容回顾一下,算是给自己的一点目标吧!数组(Array):数组算是最简单的也是最基本的结构之一。在Java中,我们声明一个数组有两种形式:int[] array = { 1, 2, 3 };或int array[] = { 1, 2, 3 };这两种形式都是可以的,但推荐第一种,为什么呢?首先,int[]和int是两种完全不同的类型!int是原生数据类型(Primitive Data Type)而int[]是引用数据类型(Reference Type)。比如像上面的array,它是有 阅读全文
posted @ 2013-07-08 13:15 孤~影 阅读(1504) 评论(1) 推荐(3) 编辑