- 博客(53)
- 资源 (6)
- 问答 (2)
- 收藏
- 关注
原创 界面的功能特色---菜单栏和工具栏
“菜单”(menubar)是GUI程序中最为常见的部分之一.各种各样的功能都能使用菜单来实现.下面这个例子生成一个含有文件菜单的菜单栏,并且文件菜单将只有一个菜单条(menu item).点击之后程序将会退出.#include <gtk/gtk.h>int main(int argc,char *argv[]){ GtkWidget *window; GtkWidget *vbo
2015-05-27 16:07:48 1832
界面的功能特色---菜单栏和工具栏
“菜单”(menubar)是GUI程序中最为常见的部分之一.各种各样的功能都能使用菜单来实现.下面这个例子生成一个含有文件菜单的菜单栏,并且文件菜单将只有一个菜单条(menu item).点击之后程序将会退出.#include <gtk/gtk.h>int main(int argc,char *argv[]){ GtkWidget *window; Gt...
2015-05-27 16:07:00 517
原创 C实现字符行排版
将字符行内单字之间的空白符平均分配插入到单字之间,以实现字符行排版。首先要统计字符行内单字个数,字符行内的空白字符数。然后计算单字之间 应该平均分配的空白字符数,另外约定多余的空白字符插在前面的单字间隔中前面的每个间隔多一个空白符,插完为止。下面是我的代码的实现部分,这个字符行排版代码比较简答,其中的,实现统计单词个数的方法还是值得大家学习一下的。#include <stdio.h>#define
2015-05-26 16:55:14 1718
C实现字符行排版
将字符行内单字之间的空白符平均分配插入到单字之间,以实现字符行排版。首先要统计字符行内单字个数,字符行内的空白字符数。然后计算单字之间 应该平均分配的空白字符数,另外约定多余的空白字符插在前面的单字间隔中前面的每个间隔多一个空白符,插完为止。下面是我的代码的实现部分,这个字符行排版代码比较简答,其中的,实现统计单词个数的方法还是值得大家学习一下的。#include <stdio.h...
2015-05-26 16:55:00 203
原创 GTK+(2)--窗口中添加五脏六腑
在我们第一讲当中的窗口中,我们仅仅就是学习了如何使用GTK+创建一个空白的窗口,但是仅仅一个空白窗口是没有用的,我们总是需要设置窗口的属性和向窗口中添加一些子控件,包括应用程序的图标,菜单,工具栏等等内容.下面的一段程序是设置我们的窗口的一些属性,包括设置窗口的标题,窗口的大小,窗口在屏幕中的位置等等属性.下面看一下代码:#include <gtk/gtk.h>#include <stdio.h>
2015-05-22 00:04:46 1659
GTK+(2)--窗口中添加五脏六腑
在我们第一讲当中的窗口中,我们仅仅就是学习了如何使用GTK+创建一个空白的窗口,但是仅仅一个空白窗口是没有用的,我们总是需要设置窗口的属性和向窗口中添加一些子控件,包括应用程序的图标,菜单,工具栏等等内容.下面的一段程序是设置我们的窗口的一些属性,包括设置窗口的标题,窗口的大小,窗口在屏幕中的位置等等属性.下面看一下代码:#include <gtk/gtk.h>#inc...
2015-05-22 00:04:00 190
原创 GTK+初识---高大上的图形接口
GTK+,或者是叫做GIMP工具组件,是一套创建图形用户接口的多平台组件.GTK+提供了一套完整的组件集,同时他不仅仅适用于小型工具开发,同样也适用于一个完整的项目套件.像我们熟悉的gnome桌面,各个系统平台上的GIMP图像处理软件,VMWare工作站,以及OS X和Windows vista上的gedit文本编辑器等都是使用GTK创建的.GTK+是使用C语言写的,但是已经被设计成支持多语言的框架
2015-05-20 01:28:17 1931
GTK+初识---高大上的图形接口
GTK+,或者是叫做GIMP工具组件,是一套创建图形用户接口的多平台组件.GTK+提供了一套完整的组件集,同时他不仅仅适用于小型工具开发,同样也适用于一个完整的项目套件.像我们熟悉的gnome桌面,各个系统平台上的GIMP图像处理软件,VMWare工作站,以及OS X和Windows vista上的gedit文本编辑器等都是使用GTK创建的.GTK+是使用C语言写的,但是已经被设计成支持...
2015-05-20 01:28:00 243
原创 计算机系统的设计规则,性能评测
控制流程的三种实现方式:全硬件,软硬结合,全软件 1:逻辑上是等价的 2:硬件实现“速度快,成本高,灵活性差,占用内存少 3:软件实现,速度慢,复制费用低,灵活性好,占用内存多,容易设计,可改性强, 适应性强,设计周期短理论上,由两种极端实现方法 1:全硬件机器:操作系统,高级语言,应用等 2:硬件只有1位加法和分支操作,其他都用
2015-05-18 23:22:49 3313
计算机系统的设计规则,性能评测
控制流程的三种实现方式:全硬件,软硬结合,全软件 1:逻辑上是等价的 2:硬件实现“速度快,成本高,灵活性差,占用内存少 3:软件实现,速度慢,复制费用低,灵活性好,占用内存多,容易设计,可改性强, 适应性强,设计周期短理论上,由两种极端实现方法 1:全硬件机器:操作系统,高级语言,应用等 2:硬件只有1位加法和分支操...
2015-05-18 23:22:00 358
原创 从键盘读入实数
编制一个从键盘读入实数的函数readreal(double *rp)。函数将读入的实数字符列换成实数后,利用指针参数rp,将实数存于指针所指向的变量*rp。解析: 函数在返回之前,将最后读入的结束实数字符列的字符返还给系统,以便随后读字符时能再次读入该字符。函数若能正常读入实数,函数返回整数1,如果函数在读入过程中,未遇到数字符之前,遇到不能构成数字的情况,函数返回-1,表示为读到实数。在输入实数
2015-05-18 01:33:11 2150
从键盘读入实数
编制一个从键盘读入实数的函数readreal(double *rp)。函数将读入的实数字符列换成实数后,利用指针参数rp,将实数存于指针所指向的变量*rp。解析: 函数在返回之前,将最后读入的结束实数字符列的字符返还给系统,以便随后读字符时能再次读入该字符。函数若能正常读入实数,函数返回整数1,如果函数在读入过程中,未遇到数字符之前,遇到不能构成数字的情况,函数返回-1,表示为读到实数。...
2015-05-18 01:33:00 424
原创 计算机系统结构,组成和实现
计算机系统结构的定义:计算机系统结构是其所处环境中最高层次的概念,是对计算机系统中各个机器之间界面的划分和定义,以及对各级界面上,下的功能进行分配。也称为体系结构。计算机体系结构指的是计算机系统设计的观念和架构,描述计算机在实际中所做的设计的原则。计算机体系结构是从程序员的角度所看到的系统的属性,是概念上的结构和功能上的行为。例如: 功能特性指令系统及其执行模式:数据表示:硬件直接识别和处理的数据
2015-05-17 23:16:58 8662
计算机系统结构,组成和实现
计算机系统结构的定义:计算机系统结构是其所处环境中最高层次的概念,是对计算机系统中各个机器之间界面的划分和定义,以及对各级界面上,下的功能进行分配。也称为体系结构。计算机体系结构指的是计算机系统设计的观念和架构,描述计算机在实际中所做的设计的原则。计算机体系结构是从程序员的角度所看到的系统的属性,是概念上的结构和功能上的行为。例如: 功能特性指令系统及其执行模式:数据表示...
2015-05-17 23:16:00 1127
原创 计算机系统的多级层次结构
多级层次结构:是从使用语言的角度,基于程序员与计算机系统对话中所采用的语言结构和语义划分。现代计算机系统的层次结构分为六级:多级层次结构中(机器—语言)M5: 应用语言机器 – 应用语言 M4: 高级语言机器 – 高级语言 M3: 操作系统机器 – 作业控制语言 M2: 汇编语言机器 – 汇编语言 M1: 传统机器 – 机器指令系统 M0: 微程序机器 – 微指令系统编译与解释的区别:编
2015-05-17 23:12:43 11049
原创 yacc语法分析与lex词法分析相结合
语法对于某些应用,我们所完成的简单的词类识别也许足够用了;而另一些应用需要识别特殊的标记序列并执行适当的动作。传统上,对这样的一套动作描述成为语法。使用右箭头”->”意味着可以用一个新的符号取代一套特殊的标记。 例如:subject ->noun\pronoun 指示一个新的符号subject是名词或代词。词法分析程序和语法分析程序的通信当一起使用lex扫描程序和yacc语法分析程序的时候,语法
2015-05-17 15:32:40 3981
yacc语法分析与lex词法分析相结合
语法对于某些应用,我们所完成的简单的词类识别也许足够用了;而另一些应用需要识别特殊的标记序列并执行适当的动作。传统上,对这样的一套动作描述成为语法。使用右箭头”->”意味着可以用一个新的符号取代一套特殊的标记。 例如:subject ->noun\pronoun 指示一个新的符号subject是名词或代词。词法分析程序和语法分析程序的通信当一起使用lex扫描程...
2015-05-17 15:32:00 545
原创 字符替换
编制一个字符替换函数rep(char *s,char *s1,char *s2),实现将已知字符串s中所有属于字符串s1中的字符都用字符串s2中的对应字符代替。这里使用指针实现。举个例子: char s[] = “ABCABC”;char s1[] = “AB”;char s2[] = “XY”;运行该函数之后,变为”XBYXBY”那么可以这么想,s1和s2分别位于两个数组中,从s的第一个
2015-05-16 15:42:30 1142
字符替换
编制一个字符替换函数rep(char *s,char *s1,char *s2),实现将已知字符串s中所有属于字符串s1中的字符都用字符串s2中的对应字符代替。这里使用指针实现。举个例子: char s[] = “ABCABC”;char s1[] = “AB”;char s2[] = “XY”;运行该函数之后,变为”XBYXBY”那么可以这么想,s1和s2分别位于两...
2015-05-16 15:42:00 508
原创 内核模块遍历进程和任务队列保存到proc文件中
实现一个模块用它遍历当前进程的父进程和任务队列,并将遍历的结果输出到一个proc 文件中(遍历可以从 current 当前进程开始,父进程遍历到初始化进程,遍历任务队列可以利用 for_each_process 宏)。下面是我的内核模块的实现部分:/************************************************************* 使用内核模块从当前进程
2015-05-16 10:45:10 1789
内核模块遍历进程和任务队列保存到proc文件中
实现一个模块用它遍历当前进程的父进程和任务队列,并将遍历的结果输出到一个proc 文件中(遍历可以从 current 当前进程开始,父进程遍历到初始化进程,遍历任务队列可以利用 for_each_process 宏)。下面是我的内核模块的实现部分:/************************************************************* 使用内...
2015-05-16 10:45:00 173
原创 总结
1:SELinux的访问控制是基于所有系统资源包括进程的安全上下文。安全上下文包含三个元素:用户,角色和 类型标识符。类型标识符是访问控制最关键的元素。在SELinux中,强制访问控制(TE)是访问控制主要的特征。通过指定主体的标识(也被称作域标识)作为源和 客体的标识作为目的的allow规则,能够允许主体对客体的访问。通过指定使用一系列为每一个客体类定义的权限的 客体类也可以允许访问。TE的
2015-05-15 23:02:02 793
总结
1:SELinux的访问控制是基于所有系统资源包括进程的安全上下文。安全上下文包含三个元素:用户,角色和 类型标识符。类型标识符是访问控制最关键的元素。在SELinux中,强制访问控制(TE)是访问控制主要的特征。通过指定主体的标识(也被称作域标识)作为源和 客体的标识作为目的的allow规则,能够允许主体对客体的访问。通过指定使用一系列为每一个客体类定义的权限的 客体类也可以允许访问...
2015-05-15 23:02:00 110
原创 整数转换成罗马数字
编写一个将整数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 1965
整数转换成罗马数字
编写一个将整数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 242
原创 内核模块编写
* 内核动态模块的的功能和作用*Linux 模块是一些可以独立于内核单独编译的内核函数和数据类型集合,是可增删的内核部分。模块在内核启动时装载称为静态装载,在内核已经运行时装载称为动态装载。模块可以扩充内核所期望的任何功能,但通常用于实现设备驱动程序.模块最基本的框架#include <linux/kernel.h>#include <linux/module.h>#include <linux
2015-05-15 16:48:34 1143
内核模块编写
* 内核动态模块的的功能和作用*Linux 模块是一些可以独立于内核单独编译的内核函数和数据类型集合,是可增删的内核部分。模块在内核启动时装载称为静态装载,在内核已经运行时装载称为动态装载。模块可以扩充内核所期望的任何功能,但通常用于实现设备驱动程序.模块最基本的框架#include <linux/kernel.h>#include <linux/module...
2015-05-15 16:48:00 185
原创 LEX学习 第二节
接着第一节中的第一个示例,我们扩展第二个示例,将词法分析程序扩展为识别不同的词性。 下面是程序示例:%{/* * 扩展第一个示例以识别其他的词性 * */%}%%[ ]+ /* 忽略空白 */;is |am |are |were |was |be |being |been |do |does |did |will |would |should |
2015-05-14 21:23:51 948
LEX学习 第二节
接着第一节中的第一个示例,我们扩展第二个示例,将词法分析程序扩展为识别不同的词性。 下面是程序示例:%{/* * 扩展第一个示例以识别其他的词性 * */%}%%[ \t ]+ /* 忽略空白 */;is |am |are |were |was |be |being |been |do |does |did |will |would |shou...
2015-05-14 21:23:00 164
原创 寻找相同元素的指针
此实例的要求是在两个已经摆好顺序的数组寻找第一个相同的元素在第一个数组中的指针。这个实例的思想比较好,如果我来做的话,就是先从第一个数组的第一个元素开始,每次取出一个元素,与第二个数组的每一个元素进行比较,当元素值相等的时候,返回元素的指针。但是在此实例中,使用了另外一种思想,在我看来降低了程序的时间复杂度。其思想为:由于两个数组都已经排好顺序,则分别从两个数组的第一个元素开始,比较大小,将较小的元
2015-05-14 13:48:30 1075
寻找相同元素的指针
此实例的要求是在两个已经摆好顺序的数组寻找第一个相同的元素在第一个数组中的指针。这个实例的思想比较好,如果我来做的话,就是先从第一个数组的第一个元素开始,每次取出一个元素,与第二个数组的每一个元素进行比较,当元素值相等的时候,返回元素的指针。但是在此实例中,使用了另外一种思想,在我看来降低了程序的时间复杂度。其思想为:由于两个数组都已经排好顺序,则分别从两个数组的第一个元素开始,比较大小...
2015-05-14 13:48:00 182
原创 寻找指定元素
在已知数表中找出第一个与指定值相等的元素的下标和指针。这个实例还是比价简单的。我的思路是,首先创建一个struct结构,该结构中有两个成员变量,一个是数组元素的下标,一个是数组元素的指针值,当程序进程查找的时候,将找到的结果保存到该结构上。下面是我的程序的实现部分:#include <stdio.h>#define SIZE 100/** * @brief The element struct
2015-05-11 20:39:06 866
寻找指定元素
在已知数表中找出第一个与指定值相等的元素的下标和指针。这个实例还是比价简单的。我的思路是,首先创建一个struct结构,该结构中有两个成员变量,一个是数组元素的下标,一个是数组元素的指针值,当程序进程查找的时候,将找到的结果保存到该结构上。下面是我的程序的实现部分:#include <stdio.h>#define SIZE 100/** * @brief The ...
2015-05-11 20:39:00 142
原创 SELinux的功能熟悉
此时,玩SELinux系统就有些价值了。例如,我们使用一个带有严格策略的Fedora Core 4 的发行版。这些大多数例子基本上都能在Red hat Enterprise Linux version 4或者是Fedora Core 5上运行了。虽然可能有些不同,但是你也可能能够使用其他发行版运行。“获取SELinux例子策略”,描述了如何获取贯穿我们这本书作为例子使用的策略文件和其他资源,并且描述
2015-05-10 02:17:30 2165
SELinux的功能熟悉
此时,玩SELinux系统就有些价值了。例如,我们使用一个带有严格策略的Fedora Core 4 的发行版。这些大多数例子基本上都能在Red hat Enterprise Linux version 4或者是Fedora Core 5上运行了。虽然可能有些不同,但是你也可能能够使用其他发行版运行。“获取SELinux例子策略”,描述了如何获取贯穿我们这本书作为例子使用的策略文件和其他资源,并且...
2015-05-10 02:17:00 224 1
原创 指向数组的指针
指向数组的指针变量成为数组指针变量。一个数组是由连续的一块内存单元组成的。数组名就是这块连续内存单元的首地址。该实例我们实现了使用数组的指针引用数组,利用数组名以及下标引用数组等。其中,使用数组的指针和数组的下标来遍历数组的时候可能不太容易理解,但是我已经在注释中说明清楚了。下面附上我的代码:#include <stdio.h>/** * 本实例实现通过指向数组的指针引用数组, * 利用数组名以
2015-05-10 00:18:12 1465
指向数组的指针
指向数组的指针变量成为数组指针变量。一个数组是由连续的一块内存单元组成的。数组名就是这块连续内存单元的首地址。该实例我们实现了使用数组的指针引用数组,利用数组名以及下标引用数组等。其中,使用数组的指针和数组的下标来遍历数组的时候可能不太容易理解,但是我已经在注释中说明清楚了。下面附上我的代码:#include <stdio.h>/** * 本实例实现通过指向数组...
2015-05-10 00:18:00 180
原创 使用指针比较整型数据的大小
该C实例是一个比较简单的实例,但是在该实例中,重点介绍了C语言中比较常用的也是容易出错的指针变量,其中包括指针变量的赋值,指针变量的运算等等。该实例实现了通过使用指针变量来比较3个整形数据,使其从小到大排列,实现比较简单,下面附上我的代码:#include <stdio.h>/** * 通过指针比较三个整数的大小 * @brief main * @return *//** * 指针,即为变
2015-05-09 23:34:29 4555
使用指针比较整型数据的大小
该C实例是一个比较简单的实例,但是在该实例中,重点介绍了C语言中比较常用的也是容易出错的指针变量,其中包括指针变量的赋值,指针变量的运算等等。该实例实现了通过使用指针变量来比较3个整形数据,使其从小到大排列,实现比较简单,下面附上我的代码:#include <stdio.h>/** * 通过指针比较三个整数的大小 * @brief main * @return */...
2015-05-09 23:34:00 543
原创 内核的定时机制应用
练习怎样编写调用内核的时间测量功能为应用程序测量和精确定时。通过该练习我们可以进一步理解 Linux 内核的定时机制及其数据结构以及怎样从用户空间去访问内核空间的时间数据。从用户空间去获取系统时间数据需要以下基本代码:#include <sys/time>struct timeval{long tv_sec; //从 1970-1-1 12:到现在经过的秒数long tv_usec;//从从上
2015-05-09 21:21:29 921 2
如何实现android系统反root
2015-09-17
不同分区格式的访问问题
2015-09-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人