zhizhizhiyuan

2014年6月30日

CSipSimple结构浅析

摘要: 最近做一个VOIP的项目,调研了CSipSimple。都说CSipSimple结构清晰,但是代码下下来看了一下,还是一头雾水,不知从何看起。于是想到从最简单的打电话开始,借助网上一篇博文"CSipSimple 拨通电话机制分析",看看整个流程是怎么走的。由于工程围绕sip协议这个核心,因此我们从... 阅读全文

posted @ 2014-06-30 12:36 zhizhizhiyuan 阅读(3391) 评论(0) 推荐(1) 编辑

2014年6月22日

Valid Sudoku

摘要: 理解题目的意思后这题不难。扫描一遍数独输入并按照要求进行判断就可以了。提交了两次,第一次用了stl的set,第二次本来想借助位运算的,想想觉得有些操作略显麻烦,因此用整数数组代替。代码如下: 解法一: class Solution {public: bool isValidSudoku... 阅读全文

posted @ 2014-06-22 16:21 zhizhizhiyuan 阅读(140) 评论(0) 推荐(0) 编辑

Search for a Range

摘要: 关于二分法搜索的题目,真是多得不能再多。当然标准的二分搜索是核心,在此之上作变化。 常见的有搜索目标值中index最小的,搜索目标值中index最大的。常见的思路是先用二分搜索找到目标值,再往左或者往右依次比较。然而,对于有些输入,比如[1,1,1,1,1,1]这样的数组,算法就退化成了O(n... 阅读全文

posted @ 2014-06-22 11:17 zhizhizhiyuan 阅读(208) 评论(0) 推荐(0) 编辑

2014年6月17日

Substring with Concatenation of All Words

摘要: leetcode中有好些题目是这一类型,即找出满足一定条件的字符串子串。有些只要返回一个结果,有些则要返回所有结果。这类题目大体有两个思路,一个是dfs,另一个则是直接遍历,记录遍历过程中的一些状态。此题采用后者,理解起来简单。 题目并没有说L中的字符串是否可以重复,因此认为是可能重复的。所以... 阅读全文

posted @ 2014-06-17 17:22 zhizhizhiyuan 阅读(266) 评论(0) 推荐(0) 编辑

2014年4月23日

Linux定时器相关源码分析

摘要: Linux的定时器使用时间轮算法。数据结构不难理解,核心数据结构与散列表及其相似,甚至可以说,就是散列表。事实上,理解其散列表的本质,有助于对相关操作的理解。 数据结构 这里先列出一些宏,稍后解释: 1 #define TVN_BITS (CONFIG_BASE_SMALL ? 4 : 6... 阅读全文

posted @ 2014-04-23 23:18 zhizhizhiyuan 阅读(945) 评论(0) 推荐(0) 编辑

2014年4月15日

单件模式

摘要: 说明:本文主要是作为读书笔记(Head First 设计模式),代码也来自于该书。 我一直以为我可以很快地写出一个单件模式的代码来,也正如书中列的代码: 1 public class Singleton{ 2 private static Singleton uniqueInstanc... 阅读全文

posted @ 2014-04-15 23:07 zhizhizhiyuan 阅读(227) 评论(0) 推荐(0) 编辑

2014年4月13日

由ArrayList构造函数源码引出的问题

摘要: ArrayList应该用得很多了。最近看了看其源码,发现有很多细节,如果要我们自己来实现,估计会考虑不到。当然,这些细节跟jdk本身一些实现的bug有关,如果不去深挖,定然是不能发现。本文从ArrayList的一个构造函数开始剖析。 该构造函数源代码如下:1 public ArrayList(... 阅读全文

posted @ 2014-04-13 16:14 zhizhizhiyuan 阅读(982) 评论(1) 推荐(1) 编辑

2014年4月5日

Linux驱动之内存映射

摘要: 本文参考了http://www.cnblogs.com/geneil/archive/2011/12/08/2281222.html。本文作为学习总结,将主要过程简要描述。 很多驱动实现某些功能都要通过内存映射。 linux下,内存映射通过mmap系统调用实现:void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset); 该系统调用的作用,是将文件描述符fd所对应的文件中的一段内容映射到用户进程的地址空间中。对于设备文件(假设设备名为dev)来讲,该系统调用会调用对应驱动的dev_mmap... 阅读全文

posted @ 2014-04-05 17:16 zhizhizhiyuan 阅读(350) 评论(0) 推荐(0) 编辑

2014年4月4日

Linux驱动之HelloWorld

摘要: 最近看android的一些源码,里面有一些功能是用驱动实现的。于是就兴起看了一些驱动相关的东西,准备日后深入。这没有技术含量的水文,仅作为日后的备忘吧。 系统使用的是ubuntu 12.0.04,内核是3.2.0。看很多别人的说法是写驱动之前先要编译内核源码树,但貌似在这个系统上是不要的,直接写C文件和Makefile文件,很快就能测试了。c文件如下: 1 #include 2 #include 3 #include 4 5 MODULE_LICENSE("zhongjinwen BSD/GPL"); 6 static int hello_init(void) 7 { 8 阅读全文

posted @ 2014-04-04 20:44 zhizhizhiyuan 阅读(247) 评论(0) 推荐(0) 编辑

2014年3月26日

Android中Handler的消息处理

摘要: 关于Handler机制,能找到无数的文章。http://blog.csdn.net/jiangshitian/article/details/12525313这篇博客写得比较好,关键是图很清晰,结合Handler.java和Looper.java可以对其机制有一个较为清晰的理解,因此不再赘述。这里我只记录一下Handler的消息处理流程,理解该流程对开发会有很大好处。消息处理在dispachMessage函数中,源代码如下: public void dispatchMessage(Message msg) { if (msg.callback != null) { ... 阅读全文

posted @ 2014-03-26 16:22 zhizhizhiyuan 阅读(350) 评论(0) 推荐(0) 编辑

导航