自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (2)
  • 收藏
  • 关注

转载 解析 Linux 中的 VFS 文件系统机制

点击打开链接

2015-01-06 20:53:48 933

原创 linux内核源代码的C语言代码

看内核代码时,有些语言成分或者说编程技巧平常没见过更没用过,这里先记下一些:1. 关于保留字前后都加上“__”,比如__inline__,其实等价于inline。C语言支持一些属性描述符,而gcc同样支持不少这样的描述符,这些描述符的使用等于在C语言中增加了一些新的保留字,此时,原来的C语言中这些词可能并不是保留字,一旦老的代码中刚好有变量名与此描述符一样,就会冲突。为了解决这个问题,

2014-06-10 21:38:44 3846

原创 start_kernel()分析(一)

从某种意义上,函数start_kernel就好像一般可执行程序中的主函数main,系统进入这个函数之前已经进行了一些最低限度的初始化,再往前研究就涉及很多硬件相关及编程语言了,这里是较高层次的初始化,基本是C代码,一直想搞清楚内核的初始化流程,好对整个linux内核有更深理解。分析程序习惯性的找main函数,那么就从这个start_kernel看看。  这个函数在init/main.c:a

2014-06-09 22:14:32 10070 1

原创 砍树

题目图论中的树,是无向无环连通图。n个节点的树,有(n-1)条边。给定一棵树,每个节点都有一个权值。我们允许从这棵树中删掉一条边,把这棵树分成两棵树。每棵小树各自包含的节点的权值和定义为其自身的权值,我们的目标是,使得这两棵小树的权值差距尽可能小。(权值差的绝对值尽可能小。)输入格式多组数据,每组数据第一行是一个正整数n,表示树节点的个数(2第二行是n个空格分隔

2014-06-05 19:04:03 1181 1

原创 AB串

题目:给定n个A和2n个B,用这些字符拼成一个字符串,要求这个串的所有前缀和后缀B的个数始终不少于A。(一个字符串的前缀是只从开头到某个位置为止的子串,后缀是只从某个位置到结尾的子串)。输入格式多组数据,每组数据只有一行,包含一个正整数n。(n输出格式每组数据输出一行,最终结果对99991取余数的结果。分析:简单的想法是建

2014-06-05 18:59:48 1966

转载 linux进程调度

一:Linux进程的四大要素1:一段供进程执行的程序,该程序可以被多个进程执行。2:独立的内核堆栈。3:进程控制快(task_struct:有了这个数据结构,进程才能成为内核调度的一个基本单位接受内核的调度。同时,这个结构还记录着进程所占用的各项资源。4:独立的存储空间:即拥有专有的用户空间,除了前面的内核空间还有用户空间。线程:只有前三条,没有第四条。内核线程:完全没有用

2014-06-04 21:45:34 631

转载 设备模型

对于驱动开发来说,设备模型的理解是根本,毫不夸张得说,理解了设备模型,再去看那些五花八门的驱动程序,你会发现自己站在了另一个高度,从而有了一种俯视的感觉,就像凤姐俯视知音和故事会,韩峰同志俯视女下属。顾名而思义就知道设备模型是关于设备的模型,既不是任小强们的房模,也不是张导的炮模。对咱们写驱动的和不写驱动的人来说,设备的概念就是总线和与其相连的各种设备了。电脑城的IT工作者都会知道设备是通

2014-06-04 21:42:47 712

原创 GPIO模拟SPI

上次用gpio模拟i2c理解i2c协议,同样的,我用gpio模拟spi来理解spi协议。我用的是4线spi,四线分别是片选、时钟、命令/数据、数据。数据在时钟上升沿传递,数据表示的是数据还是命令由命令/数据线决定。开始条件:void spi_start(void){ gpio_config(GPIO_CS, GPIO_OUTPUT); udelay(SPI_SPEED

2014-05-24 11:04:56 3723

原创 最小向量乘积

题目详情:两个N维向量的点积定义为,对应维度上的数的乘积之和。两个三维向量[1, 3, −5]和[4, −2, −1]的点积是1 * 4 + 3 * (-2) + (-5) * (-1) = 3现在允许我们对两个向量里的维度重新排列,让点积尽可能小。例如上述两个向量,我们可以调整维[3,1,-5]和[-2,-1,4],点积是-27。输入格式:多组

2014-05-22 22:44:45 1172

原创 打牌

题目:一群人想打斗地主和升级。已知他们已经1个、2个、3个或者4个人成为一桌了,现在要把他们全部变成3人一桌或者4人一桌,问至少移动几个人?(要保证所有人都能进行游戏) 输入格式: 多组数据,每组数据一行,包含4个整数a,b,c,d 0实验

2014-05-15 22:54:46 1044 9

原创 交替字符串

题目:如果字符串str3能够由str1和str2中的字符按顺序交替形成,那么称str3为str1和str2的交替字符串。例如str1="abc",str2="def",那么"adbecf", "abcdef", "abdecf", "abcdef", "adefbc"等等都为str1和str2的交替字符串。更形式化的,str3的生成算法如下: str3="" while str1不为空 o

2014-05-12 22:48:22 678

原创 绝对值最大

题目详情:给你一个数组A[n],请你计算出ans=min(|A[i]+A[j]|)(0例如:A={1, 4, -3},则:|A[0] + A[0]| = |1 + 1| = 2.|A[0] + A[1]| = |1 + 4| = 5.|A[0] + A[2]| = |1 + (-3)| = 2.|A[1] + A[1]| = |4 + 4

2014-05-11 23:40:06 989

原创 2的补码

题目详情在计算机中,整数是以2的补码的形式给出的。给出整数A和B,假设计算机是32位机,求从A到B之间的所有二进制数中,一共用了多少个1。输入格式:多组数据,每组数据一行,由两个整数A,B, -2147483648输出格式:每组输出一行,从A到B使用的1的个数。

2014-05-11 21:50:16 1728 2

原创 I2C驱动实例解析

简单的说,i2c驱动也就三步吧,注册i2c设备,注册i2c设备驱动,创建sysfs文件供上层调用。1. 注册i2c设备。先定义一个i2c_board_infostatic struct i2c_board_info __initdata xxxx_i2c_info[] = { { I2C_BOARD_INFO("XXX

2014-05-05 21:52:19 4313

原创 GPIO模拟I2C

之前在学习I2C驱动,想了想应该先深刻理解下I2C协议。个人觉得理解I2C协议最好的方法就是实践,而最好的实践方式就是用GPIO来模拟I2C协议进行试验,直观深刻。先看下I2C时序图:根据时序图,用两个gpio分别模拟sda和scl即可。在这之前自然需要先对gpio进行输入输出的配置。这里只从写数据角度来描述这一过程。读数据同理即知。先配置gpio,包括sda、scl、供电gp

2014-05-04 22:34:19 6641 1

原创 linux-I2C驱动

linux的I2C体系结构分为3个组成部分:(1) I2C核心

2014-05-03 20:39:36 1152

原创 1.16 24点游戏

问题:输入:4个数字输出:结果为24的表达式解法一:穷举法#includechar mark[4]={'+','-','*','/'};float cal(float x,float y,int mark){ switch(mark) { case 0:return x+y; case 1:return x-y; case 2:

2013-09-15 21:12:00 956

原创 2.18 数组分割

问题:有一个没有排序,元素个数为2N的正整数数组。要求把它分割为元素个数为N的两个数组,并使两个子数组的和最接近。解法:假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包问题的策略,令S(k, i)表示前k个元素中任意i个元素的和的集合。显然:S(k, 1) = {A[i] | 1S(k, k) = {A[1]+A[2]+…+A[k]}S(k,

2013-09-14 15:01:21 1433

原创 2.17 数组循环移位

问题:如标题,要求时间复杂度为O(N)。解法:右移k位,前k位逆序,后N-k位逆序,再整个逆序即可。#include #include void reverse(int* array, int b, int e){ int temp = 0; for(; b < e; b++,e--) { temp = array[e];

2013-09-14 13:47:42 740

原创 2.16 求数组中最长递增子序列

问题:如标题,求数组中最长递增子序列。解法一:动态规划#include #include #includeint LIS(int* array, int num){ int* temp = (int *)malloc(num*sizeof(int)); int i = 0; int j = 0; int max = 0; f

2013-09-11 23:36:44 768

原创 2.14 子数组之和的最大值

问题:求数组的子数组之和的最大值解法一:遍历#include #include int MaxSum(int* A, int n){ int maximum = -100; int sum = 0; int i = 0, j = 0, k = 0; for (i = 0; i < n; i++) { for(j

2013-09-08 22:48:38 687

原创 2.10 寻找数组中的最大值和最小值

问题:如标题,寻找数组中的最大值和最小值。解法一:看成两个独立问题,扫描数组,找出最大最小值,需要比较2 * N次。解法二:数组分为两部分,如相邻两个数分在一组,分别进行同组比较,大的放在奇数位,小的放在偶数位,比较奇数位上的数求得最大值,比较偶数位上的数求得最小值。需要比较1.5 * N次。#include #include void getMaxA

2013-09-04 23:03:46 844

原创 2.5 寻找最大的K个数

问题:如题,寻找最大的K个数解法一:全部排序,取最大的K个数。解法二:利用快速排序,取最大K个数。void partition(int input_array[], int number){ //取中间数做比较 int i = (input_array[0] + input_array[number / 2] + input_array[n

2013-09-03 23:07:02 599

原创 3.11 程序改错

问题:二分查找的错误代码:int bisearch(char** arr, int b, int e, char* v){ int minIndex = b, maxIndex = e, midIndex; while(minIndex < maxIndex) { midIndex = (minIndex + maxIndex) / 2;

2013-09-02 00:22:25 1044

原创 3.4 从无头单链表中删除节点

问题:假设有一个没有头指针的单链表,一个指针指向此单链表中间的一个节点,删除该节点。解决:void deleteRandomNode(Node* pCurrent){ Assert(pCurrent != NULL); Node* pNext = pCurrent->next; if(pNext !=NULL) { pCurre

2013-09-01 11:05:06 701

原创 3.3 计算字符串的相似度

问题:给定任意两个字符串,修改、增加、删除方式让他们变得相同,最少步骤。解决:递归解决,一步操作后,将下面三种情况变成相同字符串1. A[2, ... , end] 和 B[1, ... , end]2. A[1, ... , end] 和 B[2, ... , end]3. A[2, ... , end] 和 B[2, ... , end]代码如下:#in

2013-08-31 23:32:49 720

原创 3.1 字符串移位包含问题

问题:给定两个字符串s1和s2,要求判定s2是否能够被s1做循环移位得到的字符串包含。解法1:最直接的方法对s1进行循环移位,再进行字符串包含判断,遍历所有可能性。代码如下:#include #include #include int isSubString(){ char src[] = "AABBCD"; char des[] = "CDA

2013-08-31 21:32:44 726

原创 动作被父view拦截导致viewpager滑动不顺畅

viewpager放在scrollview中时,滑动viewpager里的内容会不顺畅,原因是稍微有点上下的动作就会被scrollview截去了,为了解决这个问题,重写了scrollview里的方法,顺利解决。也就是重写onInterceptTouchEvent方法,定义方法判断viewpager上的滑动的动作不会被scrollview截去。下面是重写scrollview的源码:publi

2012-11-14 22:39:00 5661 4

原创 DownloadManager使用技巧

最近在一个项目中需要下载服务器数据,本来是自己写个线程,后来发现2.3后有个Downloadmanager类可以用,这个类功能实在强大,进度条有,下载完了也会发出广播,还能得到有关下载任务的任何信息,实在方便,这里介绍下我用到的一些功能吧。首先,要下载东西的话,把下载地址给downloadmanager就可以了,如下DownloadManager downloadManager = (Down

2012-11-14 22:32:39 6631

原创 Android应用市场之APK自动安装

关于APK自动安装,需要获得root权限,尝试了多种方法,这里介绍一种自己亲自实现了的方法:使用pm install XXX.apk的方法,得到apk后,对其重新签名再安装到手机中,即可完成自动静默安装。具体步骤如下:1. 代码中执行public void execCommand(){ new Thread(){ public void ru

2012-11-14 22:19:02 8922 2

原创 Android环境配置及模拟器启动不了

昨天重新配置了JDK,Android开发环境,现在记录下来:1.安装jdk-6u33-windows-i586.exe。根据安装路径,配置环境变量比如:新建classpath变量,值如下:D:\jdk1.6.0_33\lib;D:\jdk1.6.0_33\jre\lib;D:\jre6\lib添加Path的成员:D:\jdk1.6.0_33\bin;D:\jdk1.6.0_

2012-09-30 10:51:04 5285 1

原创 Notepad学习笔记三

NoteEdit.javapackage com.example.notepad;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.RandomAccessFile

2012-09-06 21:02:39 1038

原创 NotePad学习笔记二

根据学习笔记一完成一些代码,贴出来看看:Notepad.javapackage com.example.notepad;import java.io.File;import java.io.IOException;import java.io.RandomAccessFile;import android.app.Activity;import android.app.Ale

2012-09-06 20:59:28 896

原创 Notepad学习笔记(一)

最近在Android2.3上写一个Notepad,在此分享一下完成过程吧。首先是一个主界面,一个EditText就够了,但我这里使用了自定义的控件,是为了能美化编辑框,使之每行有划分线,自己定义一个View,重写OnDraw方法即可。然后在主Activity中添加菜单,这里先仅仅添加“New”,“Open”, “Save”三个菜单键,当然添加菜单也有两种方式,一个是java代码里定义,一个

2012-09-05 19:56:36 901

转载 Git初印象

第一章 基本原理查了一下百度百科和维基百科。 git 是一个版本控制系统。 官方的解释是: 版本控制(Revision control)是一种软件工程技巧, 籍以在开发的 过程中,确保由不同人所编辑的同一档案都得到更新。 按我的白话文解释就是:一群志同道合的人身处祖国各地,希望来合作开发一个 项目,假设这个项目是使用 c 语言写的(当然用任何语言都可以的) 。那么大家 怎么合作呢?用信件?效率

2012-09-02 17:36:47 1526

原创 Android学习入门

学习Android编程前当然先要配置好编程环境,作为新手,推荐使用eclipse下完成,安装好JDK,eclipse,配置好环境变量,装上插件ADT,再装载上android SDK,就ok了,具体步骤网上到处是,这里就不赘述了。     新建一个工程,直接run一下,就有大家熟悉的hello world了。分析一下,基本代码文件中需要我们写的有mainactivity.java,string.

2012-09-02 17:13:22 1635 2

原创 《编程珠玑》第二章——“啊哈!算法”

三个问题:1.给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数(在文件中至少缺失一个这样的数——为什么?)。在具有足够内存的情况下,如何解决该问题?如果有几个外部临时文件可用,但是仅有几百字节的内存,又该如何解决该问题?内存足够的情况下,可以采用位图法。即设一位图 至少需要 2^32/8=537MB 内存,初始化位图,每位设置为0。.不断从文件中读入数

2012-06-07 20:38:43 1509

原创 看《数学之美》

读了两天吴军老师的《数学之美》,收获颇丰:数学之美 一 统计语言模型数学之美 二 谈谈中文分词数学之美 三 隐含马尔可夫模型在语言处理中的应用数学之美 四 怎样度量信息?数学之美 五 简单之美:布尔代数和搜索引擎的索引数学之美 六 图论和网络爬虫 (Web Crawlers)数学之美 七 信息论在信息处理中的应用数学之美 八 贾里尼克的故事和现代语言处理

2012-06-06 14:34:14 1704

原创 新浪微博应用开发入门

如今新浪微博的第三方应用开发如火如荼,但能帮助新手入门的资料却很少,我也是菜鸟,在此把摸索出来的入门步骤拿出来分享,希望大家共同学习,不吝指正。        在此我们先不介绍原理之类的,直接介绍上手步骤,至于原理,大家做一遍慢慢学习就都知道了,我们边做边学。步骤一:新浪微博应用开发平台申请应用“站内应用”               创建自己的应用记录应用基本信息Ap

2012-05-11 09:16:22 3191 1

原创 正则表达式在字符串处理中的应用

正则表达式就是描述字符串排列模式的一种自定义规则,就是通过构建具有特定规则的模式,与输入的字符串信息比较。在进行分割,匹配,查找,替换等工作。学习正则表达式一. 正则表达式的模式如何编写(1)定界符号  /   /除了字母,数字和反斜线\以外的任何字符都可以为定界符号|  |/   / {   }!  !(2)原子注意:原子是正则表达式的最基本组成单位,而且

2012-04-28 19:44:39 599

c++编程思想

一本很好的c++学习参考用书,值得看一看,学一学

2012-04-16

空空如也

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

TA关注的人

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