buaa_shang的专栏

私信 关注
buaa_shang
码龄8年
  • 423,079
    被访问量
  • 147
    原创文章
  • 13,106
    作者排名
  • 113
    粉丝数量
  • 于 2012-11-04 加入CSDN
获得成就
  • 获得67次点赞
  • 内容获得50次评论
  • 获得97次收藏
荣誉勋章
TA的专栏
  • C
    41篇
  • pvfs
    2篇
  • linux
    47篇
  • MPI并行編程
    2篇
  • Life
    6篇
  • 算法与数据结构
    22篇
  • 应用
    8篇
  • APUE
    11篇
  • Python脚本编程
    22篇
  • POJ
    5篇
  • 驱动开发
    6篇
  • shell脚本
    2篇
  • 网络编程
    3篇
  • Java
    7篇
  • IMA
    1篇
  • 面试题
    15篇
  • MySQL
    1篇
  • C++
    1篇
  • 可信计算
    3篇
  • 前端开发
    1篇
  • 2015
    2篇
  • 分布式计算
    2篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

JUnit简单教程

一、环境搭建       对于习惯使用Eclipse开发平台来说,Junit早已是非常通常的插件,在Eclipse开发平台中,可以非常方便地搭建Junit测试环境。       1、在Eclipse上创建工程,任何Java工程都行。       2、引入Junit的libraries库,选用Junit4。如下图所示:3、新建一个Java类,用于演示Junit
转载
547阅读
0评论
2点赞
发布博客于 5 年前

Java和C#中3DES的加密与解密

最近在工作中遇到将Java环境的一个用户ID用表单形式传递给.net环境做校验,考虑到不能将用户ID作为明文传递,因此利用简单的3DES进行加密解密操作。需要注意的就是:(1)两种环境下3DES加密解密的一致性问题:C#会对解密生成的byte在不满足长度16时,自动填充'/0'直至长度为16,因此在接收到Java端的加密数据后,我们要对生成的byte做处理把末尾的'\0'去掉。(2)另
原创
3700阅读
0评论
1点赞
发布博客于 6 年前

Java面向对象知识点总结

一、类和对象(1)类:类是模子,确定对象将会拥有的特征(属性)和行为(方法)。类的特点:类是具有相同属性和方法的一组对象的集合。(2)对象创建对象:类名 对象名 = new 类名()使用对象:对象.属性   /   对象.方法名()(3)成员变量与局部变量成员变量:在类中定义,用来描述对象将要有什么。(作用域在整个类内部都是可见的)局部变量:在类的方法中定义,在方法
原创
8681阅读
0评论
23点赞
发布博客于 6 年前

浅谈分布式计算的开发与实现(2)

阅读目录:实时计算storm简介流式计算归纳总结高容错性实时计算接上篇,离线计算是对已经入库的数据进行计算,在查询时对批量数据进行检索、磁盘读取展示。 而实时计算是在数据产生时就对其进行计算,然后实时展示结果,一般是秒级。 举个例子来说,如果有个大型网站,要实时统计用户的搜索内容,这样就能计算出热点新闻及突发事件了。 按照以前离线计算的做法是不能满足的,需要使用到实时计
转载
921阅读
0评论
0点赞
发布博客于 6 年前

浅谈分布式计算的开发与实现(1)

阅读目录:介绍利用分片算法利用消息队列Hadoop简介MapReduce离线计算介绍分布式计算简单来说,是把一个大计算任务拆分成多个小计算任务分布到若干台机器上去计算,然后再进行结果汇总。 目的在于分析计算海量的数据,从雷达监测的海量历史信号中分析异常信号(外星文明),淘宝双十一实时计算各地区的消费习惯等。海量计算最开始的方案是提高单机计算性能,如大型机,后来由于数
转载
849阅读
0评论
0点赞
发布博客于 6 年前

Apache Logging service—Log4net的使用介绍

Apache logging service开源项目提供了简单易用的日志服务,如上图所示它的子项目为.Net,Java,C++程序提供了日志功能。本文主要对log4net的配置及使用进行一个简单的介绍。最后,考虑能否使用chainsaw图形界面的日志查看工具来查看服务端的日志信息。1. log4net介绍log4net作为Apache logging service的子项目,主要帮助我
原创
598阅读
0评论
0点赞
发布博客于 6 年前

Javascript—Higher Order Functions

Higher order functions are functions that manipulate other functions. For example, a function can take other functions as arguments and/or produce a function as its return value. Such fancy functional
翻译
870阅读
0评论
0点赞
发布博客于 6 年前

演示2

1.启动TPM模拟器sudo modprobe tpmd_devsudo tmpd -f -d clear2.启动TrouSerS软件栈sudo tcsd -e -f3.编译程序,StoreTheTPM用来存储标准值g++ JudgeTheTPM.c -o StoreTheTPM -ltspi4.用PCR 8存放参照列表的累积摘要值(其中-r读取参照列表中的各个项)
原创
803阅读
1评论
1点赞
发布博客于 7 年前

通过TSS软件栈使用TPM——获取并改变TPM寄存器

首先,实验使用TPM_Emulator代替TPM硬件,原理是一样的。登录系统收三
原创
7454阅读
4评论
1点赞
发布博客于 7 年前

printf函数遵守C调用规范,即参数 从右至左 压栈,堆栈由调用者平衡

printf函数遵守C调用规范,即参数从右至左 压栈,堆栈由调用者平衡。(这种从右至左的方式不会随着编译器,机器的不同而不同) )。[code]printf("%d,%d", i, i++ );   产生的汇编码大致像下面这样:mov         eax,dword ptr [i]             push        eax          
转载
1017阅读
1评论
0点赞
发布博客于 7 年前

TPM环境

1.安装TPM模拟器下载安装包:https://developer.berlios.de/project/showfiles.php?group_id=2491解压后README文件为安装和使用的说明# tar -xvzf tpm_emulator-X.Y.tar.gz# cd tpm_emulator-X.Y# mkdir build# cd build# cma
原创
3059阅读
1评论
0点赞
发布博客于 7 年前

python入门指引

前言其实我也不知道python怎么入门,由我来写这个真的不是很合适。我学python是直接找了dive into python来看。然后照着写了几个例子。大概两天后,就能磕磕绊绊的上路了。就好像拿筷子,都不记得怎么学会的拿筷子,怎么来教人呢?不过最近在python-cn的列表里面,我大概连续数周都持续看到“python入门看哪本教程比较好”,实在是不堪其扰。干脆就写个简单的guide,有心的人
转载
908阅读
0评论
0点赞
发布博客于 7 年前

函数式编程

当我们说起函数式编程来说,我们会看到如下函数式编程的长相:函数式编程的三大特性:immutable data 不可变数据:像Clojure一样,默认上变量是不可变的,如果你要改变变量,你需要把变量copy出去修改。这样一来,可以让你的程序少很多Bug。因为,程序中的状态不好维护,在并发的时候更不好维护。(你可以试想一下如果你的程序有个复杂的状态,当以后别人改你代码的时候,是很容易出
转载
940阅读
0评论
0点赞
发布博客于 7 年前

python中的map、filter、reduce函数

三个函数比较类似,都是应用于序列的内置函数。常见的序列包括list、tuple、str。1.map函数map函数会根据提供的函数对指定序列做映射。map函数的定义:map(function, sequence[, sequence, ...]) -> list通过定义可以看到,这个函数的第一个参数是一个函数,剩下的参数是一个或多个序列,返回值是一
转载
1409阅读
0评论
0点赞
发布博客于 7 年前

用 Python 脚本实现对 Linux 服务器的监控

Python 版本说明Python 是由 Guido van Rossum 开发的、可免费获得的、非常高级的解释型语言。其语法简单易懂,而其面向对象的语义功能强大(但又灵活)。Python 可以广泛使用并具有高度的可移植性。本文 Linux 服务器是 Ubuntu 12.10, Python 版本 是 2.7 。如果是 Python 3.0 版本的语法上有一定的出入。另外这里笔者所说的 P
转载
1899阅读
1评论
0点赞
发布博客于 7 年前

C++primer 4.34/4.35

#include #include #include #include using namespace std;int main(){ vector svec; string str; while (cin >> str) svec.push_back(str); //创建字符指针数组 char **parr = new char *[svec.size()]; s
转载
669阅读
0评论
0点赞
发布博客于 8 年前

Stack的三种含义

作者: 阮一峰日期: 2013年11月29日学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈"。理解这个概念,对于理解程序的运行至关重要。容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分。含义一:数据结构stack的第一种含义是一组数据的存放方式,特点为LIFO,即后进先出(Last in, first out)。在这种数据
转载
663阅读
0评论
0点赞
发布博客于 8 年前

并查集之HDOJ1232

畅通工程Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 23971    Accepted Submission(s): 12449Problem Description某省调查城镇交通状况,得到现有城镇道路
原创
691阅读
0评论
0点赞
发布博客于 8 年前

并查集之POJ1308

DescriptionA tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one or more nodes connected by directed edges between nodes satisfying the following proper
原创
1296阅读
0评论
0点赞
发布博客于 8 年前

Google面试题之战胜股市

战胜股市:现在欧美股市相当劲爆,你是不是心动了,假设给你一个数组表示这个月内每天谷歌股票的收盘价,还假设在这个月内,你只能在收盘时买或者卖一股谷歌股票,是的,就一股,你能设计一个算法寻找你最佳的买卖时间,赚取最多的钱?思路:扫描数组,保存当前的最低价格和最好的盈利。当现在的价格和最低的价格的差值好于最好盈利,更新最好盈利。简单吧,同学们不要认为面试题都是难的,一般应该是难易结合,循序渐进,面试
转载
1147阅读
0评论
0点赞
发布博客于 8 年前

面试题之中位数的应用POJ1723

http://poj.org/problem?id=1723这种难度的题也可以用来当面试题。题意:一些士兵站在矩阵的一些方格内,现要把他们移动到一横排,并连续地排成一队,问最少需要移动多少步。N解题思想:S=|x[1]-k|+|x[2]-k|+...+|x[n]-k|,当 k 为序列 x 的中位数时,S 取最小值。因此对于 y 坐标的确定较简单,找出中位数即可。x 方向
转载
1172阅读
0评论
0点赞
发布博客于 8 年前

Google面试题之经典鸡蛋问题

还是有些晕。。。Q: 只给你二个鸡蛋,你能上100层楼,你想知道鸡蛋的硬度。鸡蛋可能很硬或很脆弱,如果鸡蛋从第m层掉下而没破裂,而从第m+1层掉下就破裂了,那么这个鸡蛋的硬度就是m。你需要找出这个m和在最坏情况下最少试验次数。(经典鸡蛋问题)A: 计算机学生可能会首先用第一个鸡蛋做二分搜索(O(logN))再用第二个递增做线性搜索(O(N)),最后必将用线性搜索结束因为用第二个鸡蛋时你无法
转载
3699阅读
0评论
0点赞
发布博客于 8 年前

面试题之interleave字符串分析

interleave字符串分析原题3个字符串a,b,c。判断c是否是a和b的interleave,也就是c中应该有a,b中所有字 符,并且c中字符顺序和a,b中一样。比如,a = "ef" b = "gh" c = "egfh" return true;a = "ef" b = "gh" c = "ehgf" return false。分析
转载
1255阅读
0评论
0点赞
发布博客于 8 年前

动态规划介绍

动态规划终于来到了算法设计思想中最难,也最有趣的这部分,在去年的google笔试中,7道算法设计题有2道动态规划(Dynamic Programming)。看了这么久的算法,这部分也是唯一感觉到了比较难的地方,从这篇文章开始,将花连续的篇幅来讨论一些动态规划的问题。这包括书上介绍过的计算二项式系数,Warshall算法求传递闭包,Floyd算法求完全最短
转载
1203阅读
1评论
0点赞
发布博客于 8 年前

面试题之括号匹配分析

括号匹配分析原题给定字符串,输出括号是否匹配,例如,"()" yes;")(" no;"(abcd(e)" no;"(a)(b)" yes。要求必须用递归写,整个实现不可以出现一个循环语句。分析这个题目很多同学都见过了,如果没有后面的条件,会张口就说就来用栈来实现,时间复杂度O(n),空间复杂度O(
转载
5952阅读
1评论
2点赞
发布博客于 8 年前

面试题之找数字分析续

找数字续分析原题一个数组A,数字出现的情况,只有以下三种:一些数字只出现一次一些数字出现两次只有一个数字出现三次请给出方法,找到出现三次的数字。分析这个题目和“找数字”的题目比较相似,但是解法上类似么?之前的解法是检查某一位上的1的和,是否能够被3整除,因为整数是32位的,可以开辟一个 32位大小的数组,这也是常数
转载
1069阅读
0评论
0点赞
发布博客于 8 年前

一道C语言测试题

#include #include int main(){ char buf[256]; int len; len = snprintf(buf, 8, "%s", "01234567890123456789"); printf("buf = %s
", buf); printf("len = %d
", len);}请问len输出为
转载
706阅读
0评论
0点赞
发布博客于 8 年前

面试题之缺失的数字分析

缺失的数字分析原题给定一个无序的整数数组,怎么找到第一个大于0,并且不在此数组的整数。比如[1,2,0] 返回 3, [3,4,-1,1] 返回 2。最好能O(1)空间和O(n)时间。分析首先数组是无序的,找到第一个大于0且不在数组中的元素,就是要找到大于0且不在数组中的最小的整数。要怎么处理呢?要找到最小的,不妨尝试从小到 大排序,然后从1开始,查找是否在数组中,
转载
1113阅读
0评论
0点赞
发布博客于 8 年前

面试题之找数字分析

找数字分析原题数组A中,除了某一个数字x之外,其他数字都出现了三次,而x出现了一次。请给出最快的方法,找到x。分析乍一看这个题目,不少同学立马给出了答案:异或。但举个例子,就会发现,异或是行不通的,一般的方法是利用异或的的如下特性:A xor A = 0A xor 0 = A但是这个题目中,数字都是奇数个的,直接采用之前类似题
转载
1292阅读
0评论
1点赞
发布博客于 8 年前

面试题之子序列分析

子序列分析原题给定长度为n的整数数列:a0,a1,..,an-1,以及整数S。这个数列会有连续的子序列的整数总和大于S的,求这些数列中,最小的长度。分析如果只是像题目这样的描述,没有强调正数,可以采用O(n^2)的方法。----------解法一但是,很多同学在讨论的时候,指出了如果是正数,解法将会有什么样的变化。这个很好。不考虑正负的O(n^2)的方法,这
转载
660阅读
0评论
0点赞
发布博客于 8 年前

面试题之又见排序分析---mark没看

又见排序分析原题给定大小为n的数组A,A中的元素有正有负。请给出方法,对其排序,保证:负数在前面,正数在后面正数之间相对位置不变负数之间相对位置不变能够做到时间复杂度为O(n),空间复杂度为O(1)么?分析这类题目,还有其他的变形,比如,数组A有奇数和偶数,排序奇数在前偶数在后,并且奇数和偶数内部的相对顺序不能变。
转载
864阅读
0评论
0点赞
发布博客于 8 年前

面试题之数组和分析

数组和分析原题有数组A={5,3,8,9,16},第一次遍历有:A = {3-5,8-3,9-8,16-9}={-2,5,1,7},数组中元素和为-2+5+1+7=11;第二次遍历有:A = {5-(-2),1-5,7-1}={7,-4,6},元素和为9.给定数组A,求第n次遍历之后,数组中元素的和。分析处理这样的题目,如果没有直接知道相关的原理,可以自己走一下一些具体的例子,
转载
631阅读
0评论
0点赞
发布博客于 8 年前

面试题之树的高度分析

树的高度分析原题有一个棵树,不一定是二叉树,有n个节点,编号为0到n-1。有一个数组A,数组的索引为0到n-1,数组的值A[i]表示节点i的父节点的id,根节点的父节点id为-1。给定数组A,求得树的高度。分析这个题目我们首先把数组写出来,然后进一步分析,就很明了了,如下例子:333-120
转载
959阅读
0评论
0点赞
发布博客于 8 年前

面试题之此起彼伏

此起彼伏分析原题有这样一个数组A,大小为n,相邻元素差的绝对值都是1.如:A={4,5,6,5,6,7,8,9,10,9}。现在,给定A和目标整数t,请找到t在A中的位置。除了依次遍历,还有更好的方法么?现在我们来看看今天的题目,今天的题目,最直接的就是遍历,访问每一个元素,并且进行比较。这是任何一个、没有任何特点的数组,都可以采用的方法。也就是,相邻元素差的绝对值,我们没
转载
1269阅读
0评论
0点赞
发布博客于 8 年前

TCP编程的一个小例子

TCP程序的服务器端与客户端的流程图例子:服务器端等待客户端连接,若连接成功,则用户可以通过客户端向服务器端发送任意字符串,服务器端在收到字符串后,输出相关信息,在把接受到的字符串重新发生给客户端。客户端收到后显示在屏幕上服务器端:#include #include #include #include #include #include #include #inclu
原创
2000阅读
0评论
0点赞
发布博客于 8 年前

Linux多线程的一个小例子

#include #include #include #include #define MAX_COUNT 9pthread_mutex_t mutex; //互斥变量pthread_cond_t cond; //条件变量int count = 0;void AddCount_Odd_Func(void);void AddCount_Even_Func(void);int
原创
971阅读
0评论
0点赞
发布博客于 8 年前

面试题之灯

灯分析原题有100盏灯,依次编号1-100,初始都是关着的。第1次遍历,打开全部的灯;第2次遍历,关掉第2盏、第4盏等被2整除的灯;第3次打开被3整除的灯;第i次,对被i整除的灯做如下操作如果灯开着,就关掉如果灯关着,就打开如此交替进行,直到100次遍历完毕,请问,还有多少盏灯亮着。分析这个题目比较好玩儿,路子走对了,很简单。
转载
1263阅读
2评论
0点赞
发布博客于 8 年前

一个LINUX下管道通信的例子

client端------现在有问题...........#include #include #include #include #include #include #include #include #include #define FIFO_HANDLE_NAME "/tmp/fifo_handle "#define FIFO_CLIENT_NAME "/tmp/
原创
1989阅读
0评论
0点赞
发布博客于 8 年前

Linux下使用Mysql

LINUX下简单使用MYSQL的示例
原创
2792阅读
0评论
0点赞
发布博客于 8 年前

ubuntu安装MySQL

现在的软件越来越好安装,尤其是在ubuntu下安装软件,更是没有技巧,只需要在联网的情况下使用apt-get inatll 即可。在决定安装mysql之前,要先确定系统是否已经安装mysql。如下图:     由此可以看出系统中并没有安装mysql.下面执行sudo apt-get install mysql-server my-client进行安装。下图: 输入Y进入到安
转载
744阅读
0评论
0点赞
发布博客于 8 年前

面试题之数组统计

题目:给定数组A,大小为n,数组元素为0到n-1的数字,不过有的数字出现了多次,有的数字没有出现。请给出算法和程序,统计哪些数字没有出现,哪些数字出现了多少次。要求在O(n)的时间复杂度,O(1)的空间复杂度下完成。 解法一:直接用两层遍历,O(n^2)的时间复杂度,O(1)的空间复杂度#include #include int main(){ int n
原创
1831阅读
1评论
2点赞
发布博客于 8 年前

图的邻接表表示法的实现

#include #include #define MaxVertexNum 50typedef struct node *EdgeNode;typedef struct vnode *VertexNode;typedef struct graph *ALGraph;struct node{ //边表节点 int adjvex; //邻接点域 EdgeNode
原创
9466阅读
0评论
6点赞
发布博客于 8 年前

各种排序算法

#include #include #define LeftChild(i) (2 * (i) + 1)/* 插入排序 */void InsertionSort(int *A, int n){ int j, p, tmp; for (p = 1; p < n; p++) { tmp = A[p]; for (j = p; j >
原创
595阅读
0评论
0点赞
发布博客于 8 年前

Linux的启动流程

Refer from :http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html作者: 阮一峰日期: 2013年8月17日半年前,我写了《计算机是如何启动的?》,探讨BIOS和主引导记录的作用。那篇文章不涉及操作系统,只与主板的板载程序有关。今天,我想接着往下写,探讨操作系统接管硬件以后发生的事情,也就是操
原创
684阅读
0评论
0点赞
发布博客于 8 年前

linux程序调试

转自编程吧。。。调试-linux程序设计错误查找及纠正有几种原因会造成程序的缺陷,针对每种原因,都有一些建议的方法来查找和纠正。比如功能定义错误,设计规划错误和代码编写错误。程序调试的5个阶段使用printf来排错       相信这个方法是N多人使用的方法使用-Wall选项来排错       在使用gcc编译的时候加上-Wall选项,可以提前发现很多的
原创
1249阅读
0评论
0点赞
发布博客于 8 年前

AVL--平衡二叉查找树

平衡二叉树失衡的四种情况:AVL树节点声明:struct AvlNode;typedef struct AvlNode *Position;typedef struct AvlNode *AvlTree;struct AvlNode{ ElementType Element; AvlTree Left; AvlTree Right; int H
原创
860阅读
0评论
0点赞
发布博客于 8 年前

树和二叉查找树的实现

树的声明。和二叉查找树的实现
原创
836阅读
0评论
1点赞
发布博客于 8 年前

KMP算法--转

作者: 阮一峰日期: 2013年5月 1日字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。
原创
7271阅读
18评论
44点赞
发布博客于 8 年前

C的xml编程文章链接

官方地址:http://www.xmlsoft.org/http://hi.baidu.com/singyea/item/ed4d1c335a9527b8633aff82http://os.chinaunix.net/a2007/1213/977/000000977010.shtmlhttp://blog.chinaunix.net/uid-25885064-id-3141923.ht
原创
782阅读
0评论
0点赞
发布博客于 8 年前

Dom4j下载及使用Dom4j读写XML简介

sitinspring(如坐春风)原创,转载请注明作者及出处.要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:http://nchc.dl.sourceforge.net/sourceforge/dom4j/dom4j-1.6.1.zip解开后有两个包,仅操作XML文档的话把dom
原创
2497阅读
0评论
1点赞
发布博客于 8 年前

利用curses库编程开始

curses库常用函数:注意编译时要用这样的格式:gcc xxx.c -l curses -o xxx第一个小例子:include #include int main(){ initscr(); clear(); move(10,20); addstr("Hello, world"); move(LINES-1, 0);
原创
2567阅读
0评论
0点赞
发布博客于 8 年前

pwd的实现

#include #include #include #include #include ino_t get_inode(char *);void printpathto(ino_t);void inum_to_name(ino_t, char *, int);int main(){ printpathto(get_inode(".")); printf("\
原创
1332阅读
0评论
0点赞
发布博客于 8 年前

Linux文件系统的的实现:创建一个文件的过程

考虑下面这个命令:who > userlist当这个命令完成后,文件系统增加l一个存放命令who输出内容的新文件。
原创
1609阅读
0评论
0点赞
发布博客于 8 年前

ls的实现还不完整

#include #include #include #include #include #include #include #include void do_ls(char *);void do_stat(char *);void show_file_info(char *, struct stat *);void mode_to_letters(int, char[])
原创
963阅读
0评论
0点赞
发布博客于 8 年前

cat命令的具体实现代码

#include #include #include #include #define BUFFERSIZE 4096int main(int argc, char *argv[]){ int fd, fd_tty, n_chars; char buf[BUFFERSIZE]; if (argc != 2) { fprintf
原创
3810阅读
0评论
0点赞
发布博客于 8 年前

计算机科学中最重要的32个算法

转自:http://www.infoq.com/cn/news/2012/08/32-most-important-algorithmsA* 搜索算法——图形搜索算法,从给定起点到给定终点计算出路径。其中使用了一种启发式的估算,为每个节点估算通过该节点的最佳路径,并以之为各个地点排定次序。算法以得到的次序访问这些节点。因此,A*搜索算法是最佳优先搜索的范例。集束搜索(又名定向搜索,Beam
原创
1792阅读
0评论
0点赞
发布博客于 8 年前

cp命令的实现

#include #include #include #define BUFFERSIZE 4096#define COPYMODE 0644void oops(char *, char *);int main(int argc, char *argv[]){ int in_fd, out_fd, n_chars; char buf[BUFFERSIZE];
原创
1640阅读
0评论
0点赞
发布博客于 8 年前

who命令的实现

#include #include #include #include #include #include void show_info(struct utmp *);void showtime(long);int main(){ int fd; struct utmp current_record; int recle
原创
1738阅读
0评论
0点赞
发布博客于 8 年前

Linux中more命令的实现

#include #include #include #define PAGELEN 24#define LINELEN 512void do_more(FILE *);int see_more(FILE *);int main(int argc, char *argv[]){ FILE *fp; if (argc == 1) do_more(s
翻译
1885阅读
0评论
0点赞
发布博客于 8 年前

指针相关。。

2.13 以下的初始化有什么区别?char a[] ="stringliteral"; char *p = "stringliteral"; 当我向 p[i] 赋值的时候, 我的程序崩溃了。字符串常量有两种稍有区别的用法。用作数组初始值 (如同在 char a[] 的声明中), 它指明该数组中字符的初始值。其它情况下, 它会转化为一个无名的静态字符数组, 可能会存储在只读内存中, 这就是造
原创
683阅读
0评论
0点赞
发布博客于 8 年前

POJ3633

[题目大意]: 在一个3*n(0 [输入]:每一行一个测试数据n,输入-1结束.[输出]:对每一个测试数据,输出放置方法的种数.Sample Input2812-1Sample Output31532131[解题分析]:(来自网上)1、n为奇数;由于3×n≠2×m (其中,m为构成3×n矩形所需的2×1矩形数),易知,总组合数S(n)
原创
844阅读
0评论
0点赞
发布博客于 8 年前

表达式树

用到了栈,并且递归实现了中序遍历,后序遍历,前序遍历。同时应该学会union的使用方法。基础知识:一、表达式树        表达式树的树叶是操作数(operand),加常数或变量名字,而其他的结点为操作数(operator)。由于这里所有的操作都是二元的,因此这棵特定的树正好是二叉树,虽然这是最简单的情况,但是结点还是有可能含有多于两个的儿子,这里我们不讨
原创
18150阅读
5评论
11点赞
发布博客于 8 年前

利用数组栈将中缀表达式转换成后缀表达式

#include #include #include typedef struct Mystack *Stack;struct Mystack { int Capacity; /* 栈的容量 */ int Top_of_stack; /* 栈顶下标 */ char *Array; /* 存放栈中元素的数组 */};/* 栈的创
原创
1807阅读
0评论
0点赞
发布博客于 8 年前

用栈计算逆波兰式

#include #include #include typedef struct Mystack *Stack;struct Mystack { int Capacity; /* 栈的容量 */ int Top_of_stack; /* 栈顶下标 */ int *Array; /* 存放栈中元素的数组 */};/* 栈的创建 */
原创
2718阅读
1评论
0点赞
发布博客于 8 年前

栈的应用---平衡符号

判断一行字符串输入"各种括号"是否是合法的-----------------------栈用数组实现如:[()]是合法的(balance)[(])是不合法的(imbalance)#include #include #include typedef struct Mystack *Stack;struct Mystack { int Capacity;
原创
3459阅读
2评论
2点赞
发布博客于 8 年前

C语言中的-------结构

struct point {    int x;    int y;};1.关键字struct引入结构声明。struct后面的名字是可选的,称为结构标记(这里为point).结构标记用于为结构命名,在定义之后,结构标记就代表花括号内的声明,可以用它作为该声明的简写形式。结构体中的变量称为结构成员。struct声明定义了一种数据类型。在标志结构成员表结束的右话括号之后可以跟一
原创
1118阅读
0评论
0点赞
发布博客于 8 年前

Linux驱动开发-----内存存取

1.在用户空间动态申请内存的函数为malloc(),释放函数为free()   对Linux内核而言,C库的malloc()函数通过brk()和mmap()两个系统调用来实现2.内核空间内存动态申请---以页为单位(1).kmalloc()和__get_free_pages()申请的内存位于物理内存映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因此存在较简单
原创
1818阅读
0评论
0点赞
发布博客于 8 年前

内核定时器编程

软件意义上的定时器最终以来硬件定时器来实现,内核在时钟中断发生后执行检测各定时器是否到期,到期后的定时器处理函数将作为软中断在底半部执行。实质上,时钟中断处理程序会唤起TIMER——SOFTIRQ软中断,运行当前处理器上到期的所有定时器。在LINUX驱动编程中,可以利用Linux内核中提供的一组函数和数据结构来完成定时触发工作或完成某周期性的事务。time_list结构体的一个实例对应一个
原创
1738阅读
0评论
0点赞
发布博客于 8 年前

设备驱动中异步通知编程

设备驱动中异步通知编程主要用到一项数据结构和两个函数。1.数据结构------fasync_struct结构体。2.两个函数   (1)处理FASYNC标志变更的int fasync_helper(int fd, struct file *filp, int mode, struct fasync_struct **fa);   (2)释放信号用的函数void kill_f
原创
1321阅读
0评论
0点赞
发布博客于 8 年前

使用信号实现异步通知机制的例子

include #include #include #include #include #include #define MAX_LEN 100//信号SIGIO的处理函数void input_handler(int num){ char data[MAX_LEN]; int len; /* 读取并输出STDIN_FILENO上的输入 */
原创
2200阅读
0评论
0点赞
发布博客于 8 年前

在驱动程序中改变进程状态并调用schedule()

理解Linux进程状态切换static ssize_t xxx_write(struct file *file, const char *buffer, size_t count, loff_t *ppos){ ... DECLARE_WAITQUEUE(wait, current); /* 定义等待队列,初始化一个名为name的等待队列 */ add_wait_
原创
1559阅读
0评论
0点赞
发布博客于 8 年前

计算最大公因数的欧几里德算法

#include #include int gcd(int m, int n){ int rem; while(n > 0) { rem = m % n; m = n; n = rem; } return m;}int main(){ int m, n; printf
原创
1530阅读
0评论
0点赞
发布博客于 8 年前

非波那切数列

原始做法---会超时#include #include long int fib(n){ if(n <= 1) return 1; else return fib(n-1) + fib(n-2);}int main(){ int n; scanf("%d", &n); printf("%ld
", fib
原创
2335阅读
0评论
0点赞
发布博客于 8 年前

求最长子序列和

法一:O(n^3)#include #include int sub_Sum(int a[], int left, int right){ int i, temp_sum = 0; for(i = left; i <= right; i++) { temp_sum += a[i]; } return temp_sum;}in
原创
4660阅读
3评论
2点赞
发布博客于 8 年前

C语言声明一维动态数组

#include #include int main(){    int i, n;    printf("Please input a integer n:");    scanf("%d", &n);    int *a = (int *)malloc(n * sizeof(int));    for(i = 0; i     {
原创
3330阅读
0评论
1点赞
发布博客于 8 年前

牛奶可乐经济学---阅读总结

1.从事一项活动的机会成本,是指你为了从事这件事而放弃的其他事情的价值。2.“有例外才能证明规律的存在”3.他们把大量的精力都花在了理解数学细节上了,却忽视了隐藏在经济学概念背后的常识。4.“学习最好的方式之一,就是把它写下来”5.如果你不能把概念拿出教师应用它,就不算你真正理解了它。可一旦你能自己使用它,它就永远属于你了。6.成本效益原则7.当愿意以市场主流价格购买该产品
原创
1496阅读
0评论
0点赞
发布博客于 8 年前

ima

1.__setup()宏简介内核组件用__setup宏来注册关键字及相关联的处理函数,__setup宏在include/linux/init.h中定义,其原型如下:#define __setup(str, fn)其中:str是关键字,fn是关联处理函数。__setup只是告诉内核在启动时输入串中含有str时,内核要去执行fn。Str必须以“=”符结束以使parse_args更方便解
原创
976阅读
0评论
0点赞
发布博客于 8 年前

DNS解析过程详解

一. 根域就是所谓的“.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯。根域服务器我们知道有13台,但是这是错误的观点。根域服务器只是具有13个IP地址,但机器数量却不是13台,因为这些IP地址借助了任播的技术,所以我们可以在全球设立这些IP的镜像站点,你访问到的这个I
转载
808阅读
0评论
0点赞
发布博客于 8 年前

java实现简单的五子棋

import java.io.*;import java.io.BufferedReader;public class Gobang{ private String[][] board; private static int BOARD_SIZE = 15; public void initBoard() { board = new String[BOARD_SI
原创
2711阅读
0评论
2点赞
发布博客于 8 年前

网格布局--计算器

import java.awt.*;import javax.swing.*;public class Calculator { public static void main(String[] args) {  JFrame frame = new CalculatorFrame();  frame.show(); }}class CalculatorFrame
原创
1099阅读
0评论
0点赞
发布博客于 8 年前

ldd 的一个安全问题

我们知道“ldd”这个命令主要是被程序员或是管理员用来查看可执行文件所依赖的动态链接库的。是的,这就是这个命令的用处。可是,这个命令比你想像的要危险得多,也许很多黑客通过ldd的安全问题来攻击你的服务器。其实,ldd的安全问题存在很长的时间了,但居然没有被官方文档所记录来下,这听上去更加难以理解了。怎么?是不是听起来有点不可思议?下面,让我为你细细道来。首先,我们先来了解一下,我们怎么来使用l
转载
899阅读
0评论
0点赞
发布博客于 8 年前

java中的线程机制

一、创建线程的方法1.继承Thread类public class myThread extends Thread{ public void run() { while(running) { code......//执行若干操作 sleep(100); } } public static void main(String args[])
原创
798阅读
0评论
0点赞
发布博客于 8 年前

Linux中时间函数的应用接口

#include #include int main(){ time_t currentTime; struct tm *tm_time; currentTime = time(NULL); tm_time = localtime(¤tTime); printf("from localtime %02d:%02d:%02d
", t
原创
953阅读
0评论
0点赞
发布博客于 8 年前

使用inotify进行文件事件通知

#include #include #include #define MAX_EVENTS 256#define BUFFER_SIZE (MAX_EVENTS * sizeof(struct inotify_event))int register_watchpoint(int fd, char *dir);int watch(int fd);void emit_event(s
原创
845阅读
0评论
0点赞
发布博客于 8 年前

IPC机制---共享内存编程

#include #include #include #include #include #include #include "common.h"#define MAX_STRING 5000typedef struct { int semID; int counter; char string[MAX_STRING+1];} MY_BLOCK_T;
原创
799阅读
0评论
0点赞
发布博客于 8 年前

网络编程--C/S日期查询例子

日期查询服务器--把当前日期和时间以ASCII格式通过套接字发送给客户端。#include #include #include #include #include #include /* MAX_BUFFER为最大缓冲区容量 */#define MAX_BUFFER 128/* 套接字使用的端口号 */#define DAYTIME
原创
912阅读
0评论
0点赞
发布博客于 8 年前

管道编程之pipe

pipe():创建一个新的匿名管道例子中子进程必须等待父进程写入管道之后才能读。thePipe[0]代表管道的输出,应用程序读它。thePipe[1]代表管道的输入,应用程序写它。#include #include #include #include #define MAX_LINE 80int main(){ int thePipe[2], ret;
原创
945阅读
0评论
0点赞
发布博客于 8 年前

编译简介

平台:linux编译器:GCC源文件:hello.c到底GCC在将源文件编程可执行文件的时候做了什么工作呢,首先你得指导GCC的常用命令吧,GCC在工作的步骤为:1. 预编译  命令: gcc -E hello.c -o hello.i     或者 cpp hello.c > hello.i        然后你就可以gedit hello.i来打开它。好好比
转载
554阅读
0评论
0点赞
发布博客于 8 年前

这学期读的书

《LinuxShell编程从入门到精通》人民邮电出版社-------读完《Linux Shell编程从初学到精通》华清软件----------------读完《GNU/LINUX环境编程》M。Tim Jones ---------------------读完《Linux编程技术详解》杜华,人民邮电---------------------读完《JAVA完全自学手册》机械工业
原创
833阅读
0评论
1点赞
发布博客于 8 年前

unix/linux中的dup()系统调用 --对上篇dup() dup2()例子的解释

在linux纷繁复杂的内核代码中,sys_dup()的代码也许称得上是最简单的之一了,但是就是这么一个简单的系统调用,却成就了unix/linux系统最著名的一个特性:输入/输出重定向sys_dup()的主要工作就是用来“复制”一个打开的文件号,使两个文件号都指向同一个文件。既然说简单,我们就首先来看一下它的代码(定义在fs/fcntl.c中):187 asmlinkage long sy
转载
953阅读
0评论
0点赞
发布博客于 8 年前

linux --dup dup2 文件描述符重定向函数--输入输出重定向

#include #include #include #include int main(void){#define STDOUT 1 //标准输出文件描述符 号int nul, oldstdout;char msg[] = "This is a test";/* create a file *///打开一个文件,操作者具有读写权限 如果文件不存在就创建
转载
2164阅读
0评论
0点赞
发布博客于 8 年前

shell脚本中使用MySQL

1.新建mysql用户mysql_install_db -user=mysql2.将MySQL的root用户密码设置为seugridmysql - u root password seugrid3.以root用户登录MySQLmysql -u root -p 4.在脚本中使用时先获得mysql的路径MYSQL=`which mysql`5.显示服务器上包含的数据
原创
1082阅读
0评论
0点赞
发布博客于 8 年前

shell中随机数的应用

产生5个随机数的脚本:#!/bin/bashMAX=5i=1 echo "$MAX random numbers are generated:"while [ "$i" -le $MAX ]do    number=$RANDOM    echo $number     let "i=i+1"done 应用之一:在各种登录软件时提示的输入验证码
原创
845阅读
0评论
0点赞
发布博客于 8 年前

查找文本中n个出现频率最高的单词

#!/bin/bash end=$1 cat $2 |tr -cs "[a-z][A-Z]" "[\012*]" |  tr A-Z a-z |    sort |        uniq -c |            sort -k1nr -k2 |               head -n "$end" cat命令将文本文件的全部内容送入管道
原创
3145阅读
0评论
0点赞
发布博客于 8 年前

宏与内联函数的区别

第一部分:宏为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。而宏只是在预处理的地方把代码展开,不需要额外的空间和时间方面的开
转载
812阅读
0评论
0点赞
发布博客于 8 年前

驱动如何进行进程的状态改变和切换

//在驱动程序中改变进程的状态并调用schedule()static sszie_t xxx_write(struct file *filp, const char *buffer, size_t count, loff_t *ppos){ ... DECLARE_WAITQUEUE(wait, current); /* 定义等待队列 */ add_wait_queue(&xx
原创
1365阅读
0评论
0点赞
发布博客于 8 年前

POJ1258--贪心&最小生成树的prim算法

用prim算法实现,T1集合为所有点集合,T2集合表示已经是最小生成树中的点lowcost[maxn]用来实现集合T1内各顶点到集合T2中各顶点的权值最小边的权值nearvex[maxn]用来实现集合T1内顶点距集合T2中哪个顶点的距离最小prim算法的思想:初始:lowcost[k]=edge[v0][k] , nearvex[k]=v0;其中v0指的是从哪点来构造最小生成树。
原创
1352阅读
0评论
0点赞
发布博客于 8 年前

POJ3364

为什么我的代码AC不了。#include int v[40001][40001][10];long int f(int n, int m, int c){ if(n==8 && m==8 && c==0) v[8][8][0] = 0; if(n==8&&m==8&&c==1) v[8][8][1] = 1; if(n==9&&m==8&&c==0)
原创
855阅读
0评论
0点赞
发布博客于 8 年前

POJ1007

#include using namespace std;int cmp(const void *a, const void *b){ return(*(int *)a - *(int *)b);}int main(){ int i, j, k, n, m, count[100], newcount[100]; char **dna; cin >> n
原创
720阅读
0评论
0点赞
发布博客于 8 年前

Linux代码风格

(1)对于结构体、if/for/while/switch语句,“{”不另起一行,例如:struct var_data {    int len;    char data[10];};(2)如果if、for循环只有1行,不要加“{”和“}”,如:for (i = 0; i     a = c;(3)if和else混用的情况下,else语句不另起一行,如:if (
原创
808阅读
0评论
0点赞
发布博客于 8 年前