Jiajun Yao

Stay hungry, Stay foolish.

Linux PID

In the Linux world, pid means two things. It’s the id of a process from POSIX’s point of view and the id of a task from kernel’s point of view.

HugeTLBFS Read Bug

Hit a Linux kernel bug that read() returns wrong data if it crosses a hugepage boundary.

Jonathan Lee

我说我喜欢你的歌,我不知道这算不算是一件好事。 我说我喜欢你的词,总是道出我心中不欲人知的事。

What I Have Learned From CMU CS Education


What I Have Learned From Writing a Kernel From Scratch

Last semester, I took the course 15410 and wrote a kernel from scratch with my partner. I learned a lot from this course and the kernel project. Following is what I have learned:

  1. Never Failed Functions
  2. Comment on Why
  3. Synchronization
  4. Error Handling
  5. Why Writing a Kernel From Scratch
  6. Misc.

Which Intent Will You Get After Android Relaunches the Activity

Imagine that you launch a singleTop activity using intent A and then launch it again using intent B. As a result, activity’s onNewIntent method is called and inside this method you call setIntent to store the new intent. After that, Android decides to relaunch the activity. Now we have the question: which intent will you get after Android relaunches the activity? The original one(A) or the latest one(B)?


Send an android.os.Message whose what is 0 and then remove it, which unexpectedly removes all posted Runnables

Does Your App Have a Rock Solid SSL Connection

SSL(Secure Sockets Layer)是目前广泛用来加密网络通信的加密协议。它的一个著名应用就是HTTPS,也就是使用SSL协议对HTTP进行加密从而使得整个通信更加安全。对于一个移动应用(其他类型的客户端也同理),为了保证其和服务器的通信安全,开发者就会使用SSL来加密客户端和服务器之间的通信。这样理应是安全的,但由于很多开发者使用方式不对,导致客户端和服务器之间的SSL通信会受到中间人攻击(Man-in-the-middle attack),从而使得安全性荡然无存。本文将首先介绍下SSL和中间人攻击的原理,然后会提供一个中间人攻击的实例,最后本文介绍该如何防止中间人攻击。