0%

归并排序的步骤就是分组->合并,这两步均是递归进行,直到所操作的子组仅有一个元素为止。

阅读全文 »

快速排序的思路是选定一个标志元素,将比这个元素小的所有元素放在一边,比其大的放在另外一边。
然后发分别对两个子数组进行同样的操作,直到子数组元素数为1时,整体数组就排好序了。

阅读全文 »

LOCAL_PATH := $(call my-dir)

这条语句出现在Android.mk最开始。由于我们将所有源码等文件都存在了当前目录或子目录,因此调用my-dir这个函数来告知编译器所编译的模块在mk所在当前目录下。

阅读全文 »

1
Can not find SDK 10.6 at /Developer/SDKs/MacOSX10.6.sdk

source ./build/evnsetup.sh后执行lunch出现。
这个问题出错的log如下:

1
2
3
4
5
6
7
8
android-source$ lunch aosp_x86-eng
build/core/combo/mac_version.mk:38: *****************************************************
build/core/combo/mac_version.mk:39: * Can not find SDK 10.6 at /Developer/SDKs/MacOSX10.6.sdk
build/core/combo/mac_version.mk:40: *****************************************************
build/core/combo/mac_version.mk:42: *** Stop.. Stop.

** Don't have a product spec for: 'aosp_x86'
** Do you have the right repo manifest?

阅读全文 »

在之前的《简单实现ButterKnife的注解功能》中,使用了运行时的注解实现了通过编写注解绑定View与xml。由于运行时注解需要在Activity初始化中进行绑定操作,调用了大量反射相关代码,在界面复杂的情况下,使用这种方法就会严重影响Activity初始化效率。而ButterKnife使用了更高效的方式——Annotation Processor来完成这一工作。

阅读全文 »

在Android 5.0以上版本,Intent必须声明为显式,否则会报Service Intent must be explicit错误,解决的方法很简单,在Intent中设定需要响应此Intent的包信息就可以了:

1
2
3
4
Intent intent = new Intent();
intent.setAction("YOUR_ACTION");
intent.setPackage("TargetPackageName");
bindService(intent, conn, Context.BIND_AUTO_CREATE);

Android Studio使用Gradle构建app。Gradle的使用非常灵活,其中可以设置使用多种类型的仓库,来获取应用中使用的库文件。

阅读全文 »

冒泡排序的思路很简单——从头至尾遍历数组元素,若前一项大于(或小于)后一项,则交换相邻两项。单次遍历整个数组可将某一个元素排列到正确位置,因此需要遍历元素数量n次。在代码中体现也就是内外两层循环,内层循环负责遍历中两两元素的交换操作,外层负责遍历次数控制。

阅读全文 »

最近学习了一下Docker。
原本是想在Mac上搭建一个网页服务器,用homebrew装了一些需要的软件包,但发现配置起来还是比linux麻烦一些;但又不想装类似virtualbox这样的虚拟机,下载镜像安装一遍也挺麻烦,而且virtualbox相对比较重。最后就找到了Docker。

阅读全文 »