自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(2028)
  • 收藏
  • 关注

Android源码分析系列-整理篇

作者:gzshun. 原创作品,转载请标明出处!来源:http://blog.csdn.net/gzshun本系列主要走了一下Android挂载SD卡的流程,从Vold到Framework,再从Framework到UI。也熟悉了谷歌写的C/C++源代码,提高一下自己的类的设计与代码的技巧,很感谢谷歌提供这么一个手机的开源操作系统Android,让鄙人也有机会来了解一下智能终端系统的实现原理...

2012-01-03 17:45:00 512 1

Android-Vold, Framework和UI的通信-大结局(12)

作者:gzshun. 原创作品,转载请标明出处!来源:http://blog.csdn.net/gzshun写了好几篇文章,花儿都快谢了,终于轮到Framework发挥领导的身份了,Framework作为界面与vold之间的桥梁,用户是Framework的大爷,那么Framework就是Vold的大哥大,Framework发出一个命令,Vold不敢不遵从,只能照着Framework的意思照...

2012-01-03 10:22:00 424

基于Redis的ASP.NET与js(AJAX)的聊天程序

首先是安装Redis, 此处略过n步...然后,新建一个ASP.NET的MVC2的工程《MvcMessage》,需要下载ServiceStack.Redis并把dll复制到工程下,并正确引用。好,下面开始贴代码了:1. 在工程目录《Models》下新建类:Message.csusing System;using System.Collections.Generic;us...

2012-01-03 00:13:00 398

Android-vold源码分析之连接电脑OTG(11)

作者:gzshun. 原创作品,转载请标明出处!来源:http://blog.csdn.net/gzshunOTG是on-the-go的简称,是2001年由USB Implementers Forum公布,主要应用于各种不同的设备或移动设备间的联接,进行数据交换。特别是PDA、移动电话、消费类设备。改变如数码照相机、摄像机、打印机等设备间多种不同制式连接器,多达7种制式的存储卡间数据交换的...

2012-01-02 19:25:00 374

2011,我的IT我的梦

“代码不过十万行,别娶媳妇别买房”,这句诙谐的语言,形象的描述了IT行业对程序员的最基本IT素质的要求,很荣幸的是,我在大学时代就完成了这个基本的任务,因此我人生的第一份IT工作,并不是以Intern的身份去完成的,而是作为一个Regular去完成的,这是让我自豪的事情。 2011年初,当所有的Graduate正在匆忙的准备自己的简历与忙着找工作的同时,我依然很淡定的在Finish my ...

2012-01-02 16:02:00 422

张孝祥老师,您一路走好!

刚刚看了CSDN官方网站的头条新闻,虽然我不是Java程序员,但我也因为这个新闻而感到惋惜,天妒英才,张老师培养了这么多的学子,为多少人打了就业的基础,解决了多少程序员的就业烦恼,竟然在2011年的最后一天意外辞世,遗憾在2011。不敢想象,张老师在博客圈里一直都非常得活跃,经常发表博客。刚才我看到新闻,我以为是谣言,但发现发表博客的是CSDN创始人蒋涛先生。真是感到惋惜,现在听到这方面的新闻,真...

2012-01-01 22:34:00 218

一个北漂程序员在新年的反思

作者:gzshun. 原创作品,转载请标明出处!来源:http://blog.csdn.net/gzshun1.北漂程序员在2011年如何应聘工作?今天是2012年的第一天,是一个值得深思的时刻,留一点时间让自己好好反省程序员的职业生涯,也许对自己有更加深入的了解与思考。作为一名工作将近一年的程序员,必须对自己的收获与领悟彻底地整理一遍,工作上的技术经验必须经过有规划地积累下来,只有这样才...

2012-01-01 18:01:00 329

Android-vold源码分析之格式化SD卡(10)

作者:gzshun. 原创作品,转载请标明出处!来源:http://blog.csdn.net/gzshun本文开始讨论sd卡的格式化功能,平时使用windows操作系统,也经常格式化磁盘。涉及到的操作有这几步:1.将分区信息写到硬盘的第一个设备节点的MBR结构中的分区表;2.格式化分区到指定的文件系统类型。MBR中存放分区表的位置在446-509,占用了64字节,MBR结...

2012-01-01 11:15:00 442

Android-vold源码分析之卸载SD卡(9)

作者:gzshun. 原创作品,转载请标明出处!来源:http://blog.csdn.net/gzshun本文分析卸载sd卡的源码,这些涉及的内容比较少,走过就行。在Android系统,系统设置里面,提供了挂载,卸载与格式化的功能。在这里,我们可以回忆一下,Android在挂载sd卡有几个途径,卸载又是有几种方法?一、挂载sd卡,有2种方式:1.用户自己挂载sd卡;2...

2011-12-31 21:20:00 274

Android-vold源码分析之挂载SD卡(8)

这里续上一篇文章,讲解挂载磁盘的操作:3.挂载磁盘。这里都有一个const char *类型的参数,这参数保存着每个磁盘的标签信息,比如sd卡的label是sdcard。int VolumeManager::mountVolume(const char *label) { Volume *v = lookupVolume(label); if (!v) { ...

2011-12-30 20:15:00 260

Android-vold源码分析之runCommand(7)

作者:gzshun. 原创作品,转载请标明出处!说了这么多,该到执行命令的函数了,要不黄花菜都凉了。上一篇文章讲了vold如何开启接收framework下发命令的线程,最终到了runCommand函数的实现,总共有6个版本,由于重复性大,只讲VolumeCmd类的runCommand函数的实现。VolumeCmd可以说是最重要的,该类的实现处理了list,debug,mount,unmou...

2011-12-29 22:12:00 172

Android-vold源码分析之startListener(6)

作者:gzshun. 原创作品,转载请标明出处!vold处理完磁盘事件,就要开始接受framework的操作命令,在main函数里面,开启了一个线程来监听framework的信息,当收到操作命令,vold进行解析,分析出命令,然后调用相应的磁盘操作函数,待操作完成后,再将操作结果的状态值反馈给framework,中间均使用了广播机制,使用了UDP协议。在main函数中,有以下函数的调用:...

2011-12-28 23:10:00 164

嵌入式Linux下fdisk处理磁盘MBR的可选ID

作者:gzshun. 原创作品,转载请标明出处!在嵌入式Linux中,经常涉及到格式化硬盘,常用的工具就是fdisk,这工具功能强大,busybox里面也实现了fdisk。当busybox实现的fdisk是简化版,与原版的GNU的fdisk相差挺大的,主要是缺少一些细节性的功能。本文主要是说明fdisk写入MBR的一个磁盘可选id,这个区域可以用来唯一的标记一块硬盘,总共有4个字节,2的3...

2011-12-27 23:41:00 281

Android-vold源码分析之handleBlockEvent(5)

作者:gzshun. 原创作品,转载请标明出处!上篇文章分析到了handleBlockEvent函数,该函数包含了以下6个处理函数:void handleDiskAdded(const char *devpath, NetlinkEvent *evt);void handleDiskRemoved(const char *devpath, NetlinkEvent *evt);vo...

2011-12-27 22:32:00 160

[Linux]CentOS网关服务器配置

1. 网关服务器上两张网卡:eth0 =》内网172.18.1.240eth1=》外网211.139.169.X2. 客户端机:172.18.1.x3. 网关服务器配置:打开IP转发功能:echo 1 > /proc/sys/net/ipv4/ip_forward建立nat 伪装iptables -t nat -A POSTROUTING -o eth1 -j M...

2011-12-27 09:45:00 282

Android磁盘管理-之vold源码分析(4)

作者:gzshun. 原创作品,转载请标明出处!上篇文章分析到了NetlinkHandler类中的onEvent函数,该函数由NetlinkListener::onDataAvailable函数调用,当SocketListener类监听到内核的uevent事件,调用该函数,之后的事情交给onEvent来负责。file:system/vold/NetlinkHandler.cpp现在...

2011-12-26 22:30:00 175

[Linux]CentOS下安装Redmine心得

介绍:Redmine: 这是基于Ruby+Rails框架开发的一套跨平台项目管理系统, 支持多种数据库,除了有基本的项目管理功能外,还有不少自己独特的功能,例如提供wiki、新闻台、时间跟踪、feed聚合、导出pdf等待,还可以集成其他版 本管理系统和BUG跟踪系统,例如SVN、CVS、TD等等。配置功能强大而且方便,自定义属性和更新通知也很实用,详细的介绍可以看看 redmine站点,具体有...

2011-12-25 01:25:00 137

Android磁盘管理-之vold源码分析(3)

作者:gzshun. 原创作品,转载请标明出处!NetlinkManager类负责管理捕获内核的uevent事件,这里使用了Netlink套接字。Netlink的概念:Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。Netlink套接字可以使用标准的套接字APIs来创建。socket(), bind(...

2011-12-25 00:02:00 146

Android磁盘管理-之vold源码分析(2)

作者:gzshun. 原创作品,转载请标明出处!Vold是Android系统处理磁盘的核心部分,取代了原来Linux系统中的udev,主要用来处理Android系统的热插拔存储设备。在Android2.2以后的系统中,vold源码已经移到了system目录下,vold目录包含以下源码:├── Android.mk├── Asec.h├── CleanSpec.mk├── C...

2011-12-23 22:38:00 159

Android磁盘管理-系统源码分析(1)

作者:gzshun. 原创作品,转载请标明出处!本系列文章,将会详细讲解Android系统的磁盘管理部分,可以通过这个突破口,熟悉整个Android的系统架构与实现原理。Android磁盘管理总共涉及到四大部分源码:1.Linux kernel: Android建立在Linux内核的基础上,最底层的部分是由Linux kernel来负责的,用于检测热插拔事件;2.Vold:...

2011-12-22 21:47:00 196

[Linux]CentOS下iptables设备双网卡的端口转发规则

1. 两张网卡:eth0 =》内网172.18.1.240eth1=》外网211.139.169.X目标机IP:172.18.1.X2. 原理,外网IP的端口有连接进来=》转发到目标机上=》 回路:目标机=》转发到内网IP上3. 在命令行下执行:iptables -t nat -A PREROUTING -d 211.139.169.X -p tcp --dport 4...

2011-12-22 12:28:00 306

[Linux]CentOS下双网卡,双路由的设置与保存

两张网卡:eth0=》内网172.18.1.Xeth1=》外网211.139.169.X1. 新建/root/wtrouter.sh文件:#!/bin/shroute add -net 172.18.2.0 netmask 255.255.255.0 dev eth0route add -net 172.18.1.0 netmask 255.255.255.0 dev...

2011-12-22 12:19:00 181

C语言sscanf函数的总结

在处理字符串的程序当中,经常会分析字符串,从一大长串的字符串截取我们需要的数据,这如果通过自己手写函数来分析,虽然可以,但当你知道sscanf的功能,那就自己写函数分析就显得多此一举。这些函数的使用都很简单,总结一下,等下次使用一目了然。俗话说:好记性不如烂笔头,记录下来就是效率。以下源代码是本人测试的源文件,附带讲解注释。/**************************...

2011-12-18 16:10:00 1381

CRC32校验算法-C实现

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。CRC校验实用程序库在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。以下是CRC32的C语言实现,经过测试,能够正确运行:/************************************...

2011-12-17 21:28:00 937

软件行业排名前100名的企业大全

以下为CSDN社区的一个主题,转载的。以下是软件行业前100名,你愿意选择哪一家做android开发1 华为技术有限公司 6223602 中兴通讯股份有限公司 6013313 海信集团有限公司 4486414 UT斯达康通讯有限公司 3867635 海尔集团公司 3336646 神州数码(中国)有限公司 3118627 浙江浙大网新科技股份有限公司 2887818 熊猫电子集团有限公司 2...

2011-12-10 12:49:00 1102

开发离需求有多远

”Oh,My God! 我把需求弄错了!“ 同事A抱怨道。 "业务员,你写的需求不是明明说只做XX,为什么现在又多了YY?" 同事B大声吼道。 "我当初就说这个功能开发时间会需要很长的时间,业务人员非要与客户确定需求,如今项目延期跟我无关系。"同事C解释道。 "小张,需求分析说明书中7.2.3.5中描述的功能是什么?我们现在的系统原型是什么?" 经理Blues咆哮起来。...

2011-12-08 22:14:00 117

Android移植oprofile性能监测工具

Android移植oprofile性能监测工具关于oprofile的移植,在Ubuntu Server 10.04平台上交叉编译,移植到Android,经过实践,以下是交叉编译的正确步骤,不保证在其他环境中能正确运行,以下是编译环境:build: Ubuntu Server 10.04host: Android-2.2r2cross compiler: mips-linux-gnu...

2011-12-08 21:16:00 76

移植mtd-utils工具包--使用教程

移植mtd-utils工具包--使用教程关于mtd-utils的移植,在Ubuntu Server 10.04平台上交叉编译,移植到嵌入式Linux,经过实践,以下是交叉编译的正确步骤,不保证在其他环境中能正确运行,以下是编译环境:build: Ubuntu Server 10.04host: Linux version 2.6.32.15-15-sigmacross compil...

2011-12-07 21:42:00 332

移植fontconfig软件包

移植fontconfig软件包关于fontconfig的移植,在Ubuntu Server 10.04平台上交叉编译,移植到嵌入式Linux,经过实践,以下是交叉编译的正确步骤,不保证在其他环境中能正确运行,以下是编译环境:build: Ubuntu Server 10.04host: Linux version 2.6.32.15-15-sigmacross compiler:m...

2011-12-07 21:39:00 215

你不要瞧不起Ctrl+C

曾经,在我未参加工作之前,我认为靠 Ctrl+C 来完成工作的人,肯定是懒惰的程序员,但是现在我发现我错了,而且是彻底的错了。能够通过 Ctrl+C 来完成工作的人,绝对是一个优秀的工程师,因为只有优秀的工程师才能够将Ctrl+C 的效用发挥到极致。 我仍然记得一个月以前的那一幕,那个下午我被派去Deal A项目中遗留的Bug,总共有6个,我按照Bug的优先级轻而易举的解决了其...

2011-12-06 21:19:00 101

搞IT就像挖煤一样

从19世纪70年代开始,一直到20世纪30年代的大萧条时期,煤矿工人都在忍受着雇主们的剥削。煤炭公司极大地剥削工人以获取最大利益:工作环境复杂多变,有些地方简陋不堪甚至极度危险。工资由工人从矿场里开采出的煤炭重量决定,没有人在在加固隧道,保证安全上浪费时间。他们被迫住在公司提供的房子里,拿着毫无价值的公司欠条,只能在公司内部商店花掉。  我不是说如今的IT工作者处在塌方、受伤甚至死亡的高风...

2011-12-05 19:37:00 118

苦逼程序员的日常生活

08:00 闹铃响,叮铃铃 08:00 - 08:20 起床,洗漱 08:20 - 08:30 吃早餐 08:30 - 09:20 乘地铁,中途换班车到达公司 09:20 - 09:30 SVN Checkout Code 09:30 - 09:40 与同事共同决定当天在本周内需要完成的任务 09:40 - 10:00 将当日需要完成的任务,更新到任务计...

2011-12-03 09:54:00 194

Ubuntu Server基本的环境搭建

开发的第一步,需要最基础的一些服务,大部分开发人员还是在Windows平台上开发,无疑是Windows的高效率与开发工具的丰富。 在Windows开发Linux项目,一般需要通过samba服务器连接到Linux,通过终端来访问Linux,通过nfs来启动开发板,这三个最基本的服务先来配置吧。 平台:Ubuntu Server 10.04 LTS 安装完Ubuntu Server 10...

2011-11-22 23:10:00 130

Dojo这点事

在从事Dojo开发以前,我从来不知道Dojo是个什么东西,但是现在我被它深深的迷住了。尽管网上可供参考的Dojo资料不多,但这抵挡不住我对Dojo的热爱。使用Dojo进行Web开发,你不用再为Div如何将一个窗体划分为几个Pane为烦恼,你不用再为如何动态的展示面板为忧愁,你所要做的就是让这些可爱的Widget有机会来展现它们自己。 我做Dojo界面开发将近两个月了,对它的一些特性也算有...

2011-11-22 20:35:00 118

开发环境的小见解

在Linux开发项目之前,都需要先配置一下开发环境,这是最基本的,很简单。虽说简单,但有时候一些常用的服务配置起来还有点繁琐,还是把这基础中的基础记录下来,省得下次配置开发环境还需要浪费些许时间。 配置环境几年前就经常配了,一直都没有养成记录的习惯,看来真得好好改下学习态度了。 用Linux开发项目,大多数人都经常用VMware Workstation虚拟机开发,对于高配置的电脑来说,速...

2011-11-21 23:43:00 93

Dojo动态创建TabContainer

也许,这个标题起的不是很合适,因为我们这里讲述的不是创建TabContainer,再创建ContentPane,而我们重点讲述的是动态创建TabContainer下面的ContentPane。为了项目需要,我们需要在TabContainer下面动态添加ContentPane。也就是在TabContainer后面动态的添加Tab,以下是效果图,你懂的。 我们要在TabContain...

2011-11-20 19:26:00 144

一个地址的旅程

The Trip of An Address -- An OutlineJason Leehttp://blog.csdn.net/jasonbloghttp://weibo.com/jasonmblog[Scene 1. Code -> VA]本文将以如下代码(ttoaa.c)为例,观察函数f入口地址的行程。整篇文章的内容会涉及Linux和Windows两种不同...

2011-11-20 15:54:00 107

分享android天气预报项目

上面是程序的运行截图,我加入了一些广告,顺便让大家看看怎么添加广告:apk下载地址:http://download.csdn.net/detail/xiangqiao123/3816531源码下载地址:(正在上传)-----未完待续...

2011-11-20 12:47:00 202

javaSE动态代理

简单创建动态代理的步骤:1.创建一个实现类(动态代理类)实现接口InvocationHandler,并且他必须实现invoke方法。2.创建被代理的类以及接口。3.通过Proxy的静态方法Proxy.newProxyInstance(ClassLoader loader, Class[]interfaces, InvocationHandler handler)创建一个代理。...

2011-11-20 12:34:00 114

小白学Linux之动态库的创建和使用

Linux下动态库生成和使用一.动态库的基本概念1.动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序。动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形成的。库中函数和变量的地址是相对地址,不是绝对地址,其真实地址在调用动态库的程序加载时形成。2.动态链接库的名称有别名(soname), 真名(realname)和链接...

2011-11-20 09:45:00 319

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除