小试 MD5 和 DES

读书那会儿,觉得密码学是个很难懂的学科,工作以后,加密和解密也基本没什么接触。不巧的是,眼下正好要有一项工作,需要对加密文件进行解密,具体的步骤如下:

  • 步骤1:对设备编号进行MD5加密,生成解密密钥;
  • 步骤2:对.cepub文件使用解密密钥进行DES解密,并生成文件到一个临时缓冲区。

书到用时方恨少,一番查阅 API 和 Google,期间找到两篇不错的资料 Java 加密技术(一)和 Java 加密技术(二),解了燃眉之急,顺便提一下,这两篇资料的作者也是《Java 加密和解密的艺术》一书的作者。

[ Read More » ]

从 Remote Service Binding 学习 AIDL 与 IPC

Android

默认情况下,一个应用不管有多少个 Activity、Service 或其他组件,它们都是运行在一个进程上,但是我们可以安排 Service 运行一个新的进程上,但是不同进程之间应该如何通信呢?当需要在不同的进程之间传递对象时,应该怎么做呢?AIDL(Android Interface Definition Language) 便是解决这一问题的钥匙。

使用 AIDL 并不是难事,但是比较繁琐,并且一不小心容易出错。好在 Android Dev Guide 的Designing a Remote Interface Using AIDL 对这个问题讲解非常详细,再结合 Android APIDemo 中的 Remote Service Binding 给出了的示例,这都给了开发者提供了非常到位的帮助。以下内容就是我结合二者,整理出来的笔记,力求真理,但能力有限,差错难免,请读者坚持自己的判断力,本文只供参考,且不可尽信。

[ Read More » ]

读《Multitasking the Android Way》(一)

Android

同时运行多个应用程序,即 Multitask,对于现在的 OS 来说,是个稀松平常的事情,–IPhone OS 另当别论。Android 对 Multitask 的处理方式有着自己独到之处,这让从其他平台转来的开发者有点发懵。凡事知其然,更要知其所以然,要设计出和 Android 完美“融合”的应用程序,理解 Multitask 是非常有必要的。这篇博文从设计考量出发,告诉你问题的大环境是什么,然后讲述现在的处理机制对于应用程序的影响,最后引出开发者应该如何利用好这一机制。

移动设备,例如手机等,有着苛刻的技术限制,内存、电量、运算速度等都不能和 PC 相提并论,用户体验更不能照搬桌面软件或者 web 系统,任何试图在移动设备上建立起和 PC 相等的用户体验是一种不怎么明智的想法。

[ Read More » ]

Activity Task 与 Intent Filter Flag

Android

接触 Android 以来,一直觉得对 task、affinity 和 launch mode 一知半解,这几天潜心阅读 Dev Guide 中的 Activities and Tasks,简单做下笔记,梳理下这部分的知识。

Android 的一个特色就是 application A 的 activity 可以启动 application B 的 activity,尽管 A 和 B 是毫无干系的,而在用户看来,两个场景紧密联系,视觉上二者构成了一个整体。Android 就是把这种误觉定义为 Task,它既不是 class,也不是 AndroidMainifest.xml 中的一个元素。从表现上看 Task 就像是一个 stack,一个一个的 activity是构成 stack 的元素,做着入栈 (push) 和出栈 (pop-up)这样简单重复性的劳动。

[ Read More » ]

Class loading in Android : Begin with PathClassLoader

Google 在 Android 文档里的《What is Android》章节中,明确提出:

The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.

《深入 Java 虚拟机》一书的读者应该清楚,广义的 Java 概念其实包含了 Java Programming Language、Java API、Java Runtime Environment 等。相较之下,Android 的 Java 的概念就非常狭隘了,上面的表述只是说 Android 使用 Java 编程语言,遵从其语法而已。同理,Dalvik virtual machine 和通常的 JVM 也就有着诸多差异,由于对 Java Virtual Machine Specification 了解不多,这里不进行具体的比较。

[ Read More » ]