- 博客(351)
- 资源 (6)
- 问答 (2)
- 收藏
- 关注
原创 整数转换成罗马数字
编写一个将整数n(1 <= n <= 9999)转换成罗马数字。整数n(1<=n<=9999)与罗马数字表示有以下对应关系 1000 - m,有几个1000就有几个m对应900 - 两个字符cm500 - 一个字符d400 - 两个字符cd100 - 一个字符c,有几个100就用几个c表示90 - 两个字符xc50 - 一个字符l40 - 两个字符xl10 - 一个字符x,有一个
2015-05-15 21:16:36 1938
整数转换成罗马数字
编写一个将整数n(1 <= n <= 9999)转换成罗马数字。整数n(1<=n<=9999)与罗马数字表示有以下对应关系 1000 - m,有几个1000就有几个m对应900 - 两个字符cm500 - 一个字符d400 - 两个字符cd100 - 一个字符c,有几个100就用几个c表示90 - 两个字符xc50 - 一个字符l40 - 两个字符x...
2015-05-15 21:16:00 229
原创 内核模块编写
* 内核动态模块的的功能和作用*Linux 模块是一些可以独立于内核单独编译的内核函数和数据类型集合,是可增删的内核部分。模块在内核启动时装载称为静态装载,在内核已经运行时装载称为动态装载。模块可以扩充内核所期望的任何功能,但通常用于实现设备驱动程序.模块最基本的框架#include <linux/kernel.h>#include <linux/module.h>#include <linux
2015-05-15 16:48:34 1119
内核模块编写
* 内核动态模块的的功能和作用*Linux 模块是一些可以独立于内核单独编译的内核函数和数据类型集合,是可增删的内核部分。模块在内核启动时装载称为静态装载,在内核已经运行时装载称为动态装载。模块可以扩充内核所期望的任何功能,但通常用于实现设备驱动程序.模块最基本的框架#include <linux/kernel.h>#include <linux/module...
2015-05-15 16:48:00 176
原创 LEX学习 第二节
接着第一节中的第一个示例,我们扩展第二个示例,将词法分析程序扩展为识别不同的词性。 下面是程序示例:%{/* * 扩展第一个示例以识别其他的词性 * */%}%%[ ]+ /* 忽略空白 */;is |am |are |were |was |be |being |been |do |does |did |will |would |should |
2015-05-14 21:23:51 936
LEX学习 第二节
接着第一节中的第一个示例,我们扩展第二个示例,将词法分析程序扩展为识别不同的词性。 下面是程序示例:%{/* * 扩展第一个示例以识别其他的词性 * */%}%%[ \t ]+ /* 忽略空白 */;is |am |are |were |was |be |being |been |do |does |did |will |would |shou...
2015-05-14 21:23:00 159
原创 寻找相同元素的指针
此实例的要求是在两个已经摆好顺序的数组寻找第一个相同的元素在第一个数组中的指针。这个实例的思想比较好,如果我来做的话,就是先从第一个数组的第一个元素开始,每次取出一个元素,与第二个数组的每一个元素进行比较,当元素值相等的时候,返回元素的指针。但是在此实例中,使用了另外一种思想,在我看来降低了程序的时间复杂度。其思想为:由于两个数组都已经排好顺序,则分别从两个数组的第一个元素开始,比较大小,将较小的元
2015-05-14 13:48:30 1062
寻找相同元素的指针
此实例的要求是在两个已经摆好顺序的数组寻找第一个相同的元素在第一个数组中的指针。这个实例的思想比较好,如果我来做的话,就是先从第一个数组的第一个元素开始,每次取出一个元素,与第二个数组的每一个元素进行比较,当元素值相等的时候,返回元素的指针。但是在此实例中,使用了另外一种思想,在我看来降低了程序的时间复杂度。其思想为:由于两个数组都已经排好顺序,则分别从两个数组的第一个元素开始,比较大小...
2015-05-14 13:48:00 171
原创 寻找指定元素
在已知数表中找出第一个与指定值相等的元素的下标和指针。这个实例还是比价简单的。我的思路是,首先创建一个struct结构,该结构中有两个成员变量,一个是数组元素的下标,一个是数组元素的指针值,当程序进程查找的时候,将找到的结果保存到该结构上。下面是我的程序的实现部分:#include <stdio.h>#define SIZE 100/** * @brief The element struct
2015-05-11 20:39:06 856
寻找指定元素
在已知数表中找出第一个与指定值相等的元素的下标和指针。这个实例还是比价简单的。我的思路是,首先创建一个struct结构,该结构中有两个成员变量,一个是数组元素的下标,一个是数组元素的指针值,当程序进程查找的时候,将找到的结果保存到该结构上。下面是我的程序的实现部分:#include <stdio.h>#define SIZE 100/** * @brief The ...
2015-05-11 20:39:00 133
原创 SELinux的功能熟悉
此时,玩SELinux系统就有些价值了。例如,我们使用一个带有严格策略的Fedora Core 4 的发行版。这些大多数例子基本上都能在Red hat Enterprise Linux version 4或者是Fedora Core 5上运行了。虽然可能有些不同,但是你也可能能够使用其他发行版运行。“获取SELinux例子策略”,描述了如何获取贯穿我们这本书作为例子使用的策略文件和其他资源,并且描述
2015-05-10 02:17:30 2141
SELinux的功能熟悉
此时,玩SELinux系统就有些价值了。例如,我们使用一个带有严格策略的Fedora Core 4 的发行版。这些大多数例子基本上都能在Red hat Enterprise Linux version 4或者是Fedora Core 5上运行了。虽然可能有些不同,但是你也可能能够使用其他发行版运行。“获取SELinux例子策略”,描述了如何获取贯穿我们这本书作为例子使用的策略文件和其他资源,并且...
2015-05-10 02:17:00 206 1
原创 指向数组的指针
指向数组的指针变量成为数组指针变量。一个数组是由连续的一块内存单元组成的。数组名就是这块连续内存单元的首地址。该实例我们实现了使用数组的指针引用数组,利用数组名以及下标引用数组等。其中,使用数组的指针和数组的下标来遍历数组的时候可能不太容易理解,但是我已经在注释中说明清楚了。下面附上我的代码:#include <stdio.h>/** * 本实例实现通过指向数组的指针引用数组, * 利用数组名以
2015-05-10 00:18:12 1454
指向数组的指针
指向数组的指针变量成为数组指针变量。一个数组是由连续的一块内存单元组成的。数组名就是这块连续内存单元的首地址。该实例我们实现了使用数组的指针引用数组,利用数组名以及下标引用数组等。其中,使用数组的指针和数组的下标来遍历数组的时候可能不太容易理解,但是我已经在注释中说明清楚了。下面附上我的代码:#include <stdio.h>/** * 本实例实现通过指向数组...
2015-05-10 00:18:00 167
原创 使用指针比较整型数据的大小
该C实例是一个比较简单的实例,但是在该实例中,重点介绍了C语言中比较常用的也是容易出错的指针变量,其中包括指针变量的赋值,指针变量的运算等等。该实例实现了通过使用指针变量来比较3个整形数据,使其从小到大排列,实现比较简单,下面附上我的代码:#include <stdio.h>/** * 通过指针比较三个整数的大小 * @brief main * @return *//** * 指针,即为变
2015-05-09 23:34:29 4438
使用指针比较整型数据的大小
该C实例是一个比较简单的实例,但是在该实例中,重点介绍了C语言中比较常用的也是容易出错的指针变量,其中包括指针变量的赋值,指针变量的运算等等。该实例实现了通过使用指针变量来比较3个整形数据,使其从小到大排列,实现比较简单,下面附上我的代码:#include <stdio.h>/** * 通过指针比较三个整数的大小 * @brief main * @return */...
2015-05-09 23:34:00 523
原创 内核的定时机制应用
练习怎样编写调用内核的时间测量功能为应用程序测量和精确定时。通过该练习我们可以进一步理解 Linux 内核的定时机制及其数据结构以及怎样从用户空间去访问内核空间的时间数据。从用户空间去获取系统时间数据需要以下基本代码:#include <sys/time>struct timeval{long tv_sec; //从 1970-1-1 12:到现在经过的秒数long tv_usec;//从从上
2015-05-09 21:21:29 907 2
内核的定时机制应用
练习怎样编写调用内核的时间测量功能为应用程序测量和精确定时。通过该练习我们可以进一步理解 Linux 内核的定时机制及其数据结构以及怎样从用户空间去访问内核空间的时间数据。从用户空间去获取系统时间数据需要以下基本代码:#include <sys/time>struct timeval{long tv_sec; //从 1970-1-1 12:到现在经过的秒数lon...
2015-05-09 21:21:00 165
原创 自制操作系统-最简单的系统hello World
按照自制操作系统的步骤,首先需要使用二进制编辑器编辑一个.img文件,编辑完成之后,可以有两种运行方式:1:可以将该img文件烧进软盘文件中,重新启动计算机 2:使用qume虚拟机运行。我们采用第二种方式,首先我们需要获取其中的.img文件,在其光盘中的”30天自制操作系统光盘\OS\projects\01_day\helloos0\ helloos.img”中。我们实现的方式是:1:将其
2015-05-09 02:11:33 3875 3
自制操作系统-最简单的系统hello World
按照自制操作系统的步骤,首先需要使用二进制编辑器编辑一个.img文件,编辑完成之后,可以有两种运行方式:1:可以将该img文件烧进软盘文件中,重新启动计算机 2:使用qume虚拟机运行。我们采用第二种方式,首先我们需要获取其中的.img文件,在其光盘中的”30天自制操作系统光盘\OS\projects\01_day\helloos0\ helloos.img”中。我们实现的方式...
2015-05-09 02:11:00 775
原创 钢材切割问题
已知钢材的总长,订单数和各订单需要的长度编制程序从订单中选择一组订单对钢材作切割加工, 使得钢材得到最佳应用,约定,每次切割损耗固定长度的钢材。下面写一下我的思路,刚开始没有想明白应该怎么使用递归去做,但是,看了他们的代码之后,走了一遍,才明白,其实思路不太好想,但是实现起来还是比较容易的。假设,我们有一段钢材,长度为12米,其中有3个订单,分别需要的长度为5,6,9米,每次切割总会有2米的损耗,求
2015-05-08 02:43:00 4932
钢材切割问题
已知钢材的总长,订单数和各订单需要的长度编制程序从订单中选择一组订单对钢材作切割加工, 使得钢材得到最佳应用,约定,每次切割损耗固定长度的钢材。下面写一下我的思路,刚开始没有想明白应该怎么使用递归去做,但是,看了他们的代码之后,走了一遍,才明白,其实思路不太好想,但是实现起来还是比较容易的。假设,我们有一段钢材,长度为12米,其中有3个订单,分别需要的长度为5,6,9米,每次切割总会有2...
2015-05-08 02:43:00 448
原创 堆栈的实现
堆栈,是一种数据结构,其插入和删除操作都在同一端进行,其中一端称作栈顶,另外一端称作栈底。其中,堆栈是一种先进后出的数据结构,既可以使用公式化描述实现,也可以使用链表描述进行实现。例如,我们向栈中插入元素10,20.30,则从栈顶向栈底排列分别为30,20,10,则弹出的时候,分别以30,20,10的顺序弹出,在这篇中,先使用公式化描述和链表实现堆栈,在后面将学习几个使用堆栈的比较典型的例子,其中包
2015-05-07 23:55:17 2189
堆栈的实现
堆栈,是一种数据结构,其插入和删除操作都在同一端进行,其中一端称作栈顶,另外一端称作栈底。其中,堆栈是一种先进后出的数据结构,既可以使用公式化描述实现,也可以使用链表描述进行实现。例如,我们向栈中插入元素10,20.30,则从栈顶向栈底排列分别为30,20,10,则弹出的时候,分别以30,20,10的顺序弹出,在这篇中,先使用公式化描述和链表实现堆栈,在后面将学习几个使用堆栈的比较典型的例子...
2015-05-07 23:55:00 237
原创 SELinux的多层安全机制
类型强制策略相比SELinux引入的MAC(强制访问控制)是比较遥远的。然而,在一些情况下,特别是在分类的政府应用的子集中,传统的MLS(多层安全机制)强制访问控制加上TE是非常有价值的。在意识到 这个情形之后,SELinux也包括一些MLS的形式。在SELinux中,MLS的特征是可选的,并且相比两个强制访问控制机制来说是次要的。对于绝大部分安全应用来说,包括许多没有很少有数据分类的应用来说,对
2015-05-07 02:32:08 1524
SELinux的多层安全机制
类型强制策略相比SELinux引入的MAC(强制访问控制)是比较遥远的。然而,在一些情况下,特别是在分类的政府应用的子集中,传统的MLS(多层安全机制)强制访问控制加上TE是非常有价值的。在意识到 这个情形之后,SELinux也包括一些MLS的形式。在SELinux中,MLS的特征是可选的,并且相比两个强制访问控制机制来说是次要的。对于绝大部分安全应用来说,包括许多没有很少有数据分类的应用来说...
2015-05-07 02:32:00 222
原创 The role of Roles
SELinux也提供了可一种基于角色的访问控制(RBAC,Role-based access control)。SELinux的RBAC的特征是建立在TE基础上的。在SELinux中的访问控制在根本上是TE,即类型强制访问策略。角色能够限制一个进程转换后的类型,该类型是在进程安全上下文中基于角色标识符转换的。通过这种方式,一个策略定义者能够创建一个角色,该角色被允许转换成一系列的域类型(假设TE规则
2015-05-07 01:28:32 986
The role of Roles
SELinux也提供了可一种基于角色的访问控制(RBAC,Role-based access control)。SELinux的RBAC的特征是建立在TE基础上的。在SELinux中的访问控制在根本上是TE,即类型强制访问策略。角色能够限制一个进程转换后的类型,该类型是在进程安全上下文中基于角色标识符转换的。通过这种方式,一个策略定义者能够创建一个角色,该角色被允许转换成一系列的域类型(假设TE...
2015-05-07 01:28:00 131
原创 最简单的lex的例子
lex和yacc可以帮助你编写程序转换结构化输入。既包括从输入文件中寻找模式的简单文本搜索程序,也包括将源程序变换为最佳的目标代码的C编译程序等。lex使用一系列对可能标记的描述,产生一个能识别那些标记的C例程(我们成为词法分析器。词法分析程序(lexer),或成为扫描程序)。lex使用的标记描述称为正则表达式。yacc采用简明的语法描述并产生在一个能分析语法的C例程。即分析程序。yacc
2015-05-05 10:01:11 4577
最简单的lex的例子
lex和yacc可以帮助你编写程序转换结构化输入。既包括从输入文件中寻找模式的简单文本搜索程序,也包括将源程序变换为最佳的目标代码的C编译程序等。 lex使用一系列对可能标记的描述,产生一个能识别那些标记的C例程(我们成为词法分析器。词法分析程序(lexer),或成为扫描程序)。 lex使用的标记描述称为正则表达式。yacc采用简明的语法描述并产生在一个能分析语法的C例程...
2015-05-05 10:01:00 329
原创 C使用递归实现前N个元素的和
递归函数,也就是不断的调用自身的函数,使用递归能够比较方便的解决一些比较难使用循环解决的问题。就在这个例子中,求一个数组a[]的前n项和,也就是求a[n-1]+a[n-2]+…+a[0],那么如果一个函数sum是用来求数组前n项和的,sum定义为sum(int a[],int n),则使用递归的方式就是 a[n-1]+sum(a,n-1)。使用代码来表述可能更好一些:#include <stdio
2015-04-29 16:17:58 2302
C使用递归实现前N个元素的和
递归函数,也就是不断的调用自身的函数,使用递归能够比较方便的解决一些比较难使用循环解决的问题。就在这个例子中,求一个数组a[]的前n项和,也就是求a[n-1]+a[n-2]+…+a[0],那么如果一个函数sum是用来求数组前n项和的,sum定义为sum(int a[],int n),则使用递归的方式就是 a[n-1]+sum(a,n-1)。使用代码来表述可能更好一些:#include ...
2015-04-29 16:17:00 419
原创 STL练习2 实现插入排序,箱子排序和基数排序
使用list实现了排序的中比较简单的插入排序,箱子排序和基数排序,其中,箱子排序和基树排序只能用于数的排序,所以限制还是蛮大的,箱子排序在实际使用中基本上不使用,箱子排序是基数排序的基础,基数排序有MSD和LSD,MSD也就是从最高位开始向最低位排序,LSD也就是从最低位向最高位排序。下面附上我的实现代码://=============================================
2015-04-29 15:57:04 1199
STL练习2 实现插入排序,箱子排序和基数排序
使用list实现了排序的中比较简单的插入排序,箱子排序和基数排序,其中,箱子排序和基树排序只能用于数的排序,所以限制还是蛮大的,箱子排序在实际使用中基本上不使用,箱子排序是基数排序的基础,基数排序有MSD和LSD,MSD也就是从最高位开始向最低位排序,LSD也就是从最低位向最高位排序。下面附上我的实现代码://=======================================...
2015-04-29 15:57:00 167
原创 C判断一个正整数n的d进制数是否是回文数
所有的有关于回文数的定义和如何判断一个n的d进制数是否是回文数的方法都在我的代码注释当中,直接上代码:#include <stdio.h>int circle(int n,int d);/** * @brief main 判断正整数n的d进制表示是否是回文数 * @return */int main(void){ /** * 回文数,就是顺着看和倒着看相同的书,例如n=
2015-04-26 03:48:22 3056
C判断一个正整数n的d进制数是否是回文数
所有的有关于回文数的定义和如何判断一个n的d进制数是否是回文数的方法都在我的代码注释当中,直接上代码:#include <stdio.h>int circle(int n,int d);/** * @brief main 判断正整数n的d进制表示是否是回文数 * @return */int main(void){ /** * 回文数,就是顺着...
2015-04-26 03:48:00 216
原创 Type enforcement(类型强制访问控制)
(一)、简介在SELinux中,所有的访问都要被明确的同意。SELinux默认的是没有访问,不管Linux的用户ID和组ID是什么。是的,这就意味着在SELinux中没有默认的超级用户,不像在标准Linux中的root用户。被同意的访问的方式是由主体的类型(也就是域)和客体的类型使用一个allow规则指定的。一个allow规则有四个元素: 1:source type(s),通常是尝试访问的
2015-04-25 16:18:05 1840
Type enforcement(类型强制访问控制)
(一)、简介在SELinux中,所有的访问都要被明确的同意。SELinux默认的是没有访问,不管Linux的用户ID和组ID是什么。是的,这就意味着在SELinux中没有默认的超级用户,不像在标准Linux中的root用户。被同意的访问的方式是由主体的类型(也就是域)和客体的类型使用一个allow规则指定的。一个allow规则有四个元素: 1:source type(s),通常是尝...
2015-04-25 16:18:00 238
原创 C实现任意进制数的转化
该实例要求使用C实现一个无符号整数到[2,16]进制数的转换。这个还是比较好想的,就是对该无符号整数不断的斤进制数d取余数,取商,一直做这样的运算,直到商为0为止,将所有的余数按照从后往前的顺序穿起来,就是转换后的进制数。下面上我的代码:#include <stdio.h>/** 用于声明char数组的长度 **/#define M (sizeof(unsigned int) * 8)int tr
2015-04-24 14:19:47 5521
C实现任意进制数的转化
该实例要求使用C实现一个无符号整数到[2,16]进制数的转换。这个还是比较好想的,就是对该无符号整数不断的斤进制数d取余数,取商,一直做这样的运算,直到商为0为止,将所有的余数按照从后往前的顺序穿起来,就是转换后的进制数。下面上我的代码:#include <stdio.h>/** 用于声明char数组的长度 **/#define M (sizeof(unsigned i...
2015-04-24 14:19:00 232
如何实现android系统反root
2015-09-17
不同分区格式的访问问题
2015-09-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人