- 博客(19)
- 收藏
- 关注
原创 求平方根的方法(牛顿迭代法和二分法)
#include #include #include using namespace std;double _sqrt(double val, double x) //牛顿迭代法{ if(abs(x*x - val) else{ x = (x + val/x)/2; return _sqrt(val
2013-09-17 11:00:32
922
原创 找出数组中第二大值
找出数组中的第二大值。C++实现源码:#include#include#includeusing namespace std;static const int MaxArray = 20;int SecondValue(int a[], int n, int &Second){ if(n < 2){ return -1; } int
2013-07-30 16:24:19
759
原创 mutable关键字
C++中用const修饰的函数不能改变对象中的非静态成员的值。如果成员变量加了mutable修改字后,则可以在const修饰的函数中修改对象的成员值.
2013-07-25 22:39:37
383
转载 结构体struct的对齐问题
结构体struct的自然对齐问题下面的机构体struct A{ char c; int i; char cc;};它的sizeof()是多少呢? 如果是紧凑对齐的话,当然是sizeof(char)+sizeof(int)+sizeof(char); 但编译器默认编译的却不是紧凑对齐的,在32-bit的机器上编译结果是12, 这是一个char占用了一
2013-07-24 17:45:36
485
原创 Linux之线程
一、线程标识 每个线程有一个线程ID。进程ID在整个系统中是唯一的,但线程ID不同,线程ID只有在它所属的进程环境中有效。 线程ID用pthread_t数据类型来表示,可以用一个结构来代表pthread_t数据类型。#includeint pthread_equal(pthread_t tid1, pthread_t tid2); 返
2013-07-24 17:45:03
486
原创 Linux之信号
Linux中的信号都以一个正数表示,以SIG开头,不存在值为0的信号。内核在某个信号出现时按照三种方式之一进行处理:忽略此信号(SIG_IGN)。大多数信号的处理方式,但有两种信号不能忽略。SIGKILL和SIGSTOP捕捉信号。调用用户函数执行系统默认动作(SIG_DFL)。大多数信号的系统默认动作是终止进程一、signal函数#includevoid (*s
2013-07-22 17:44:18
407
转载 ubuntu的账户密码算法
OS:Ubuntu 11.04Compiler:gcc 4.5.2在/etc/shadow里,存放着系统账户密码的相关信息,文件格式如下:登录名:密文:最后一次修改密码时间:最小密码存活期:最长密码存活期:密码过期警告时间:密码失效时间:账户过期时间:保留字段再看加密后的密文,例如密码111111,加密后的密文为:$6$ehGch6YT$E.
2013-07-22 16:19:26
939
原创 Linux进程控制(一)
一、进程标识符#includepid_t getpid(void); 返回值:调用进程的进程IDpid_t getppid(void); 返回值:调用进程的父进程IDuid_t getuid(void); 返回值:调用进程的实际用户IDuid_t geteuid(void); 返回值:调用进程的有效
2013-07-20 17:09:03
522
转载 C语言宏定义中的连接符#和##
c语言宏定义的连接符有哪些(一)宏定义中的## 连接符与# 符 ## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在编译原理里有详尽的解释,但不知道也无所谓。同时值得注意的是#符是把传递过来的参数当成字符
2013-07-20 11:49:07
812
原创 setjmp函数和longjmp函数
这两个函数是为了解决深层次函数嵌套返回的问题。函数原型: #include int setjmp(jmp_buf env); 返回值:若直接调用则返回0,若从longjmp调用返回则返回非0值。 void longjmp(jm
2013-07-20 11:36:57
496
原创 标准I/O库
标准I/O库围绕流(stream)进行,可用于单字节或多字节("宽")字符集。对于ASCII字符集,一个字符用一个字节表示,对于国际字符集,一个字符可用多个字符表示。一、流的定向流的定向决定了所读、写的字符是单字节还是多字节的。当一个流最初被创建时,并没有定向。如若在一个未定向的流上使用一个多字节I/O函数,则将该流的定向设置为宽定向的。若在未定向的流上使用一个单字节的I/O函数,则将将流
2013-07-19 17:44:42
571
原创 Linux文件I/O
一、Linux环境下I/O操作函数主要有:open、read、write、lseek、close五种。下面是各函数原型: #include int open(const char *pathname, int oflag, .../*mode_t mode*///返回值,若成功则返回文件描述符,若出错则返回-1oflag参数:(在fcntl.h中定义)O_RDONLY: 以
2013-07-14 17:39:11
589
原创 snprintf()函数与sprintf函数的区别
函数原型:int snprintf(char *restrict buf, size_t n, const char *restrict format, ...)int sprintf(char *restrict buf, const char *restrict format,...)snprintf()函数与sprintf()函数都可以向指针指向的位置写入数据,但snprintf
2013-01-20 15:19:42
795
转载 fork()函数的理解
fork()函数,Linux系统调用:头文件包含: #include 函数定义: int fork(void); 返回值: 子进程中返回0,父进程中返回子进程ID,出错返回-1 函数说明: 一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为进程(child process)。fork函数被调用一次但返回两次。两次返回的唯
2013-01-20 12:13:28
358
原创 Python中is与 "=="的区别
Python中的对象包含三要素:id、type、valueid用来唯一标识一个对象,type标识对象的类型,value是对象的值其中:is 判断的是a对象是否就是b对象,是通过id来判断的== 判断的是a对象的值是否和b对象的值相等,是通过value来判断的
2012-10-29 18:46:10
343
转载 VIM 配置之代码折叠
vim代码折叠方式可以用“fdm”选项来设置,如:set fdm=indent有六种方式折叠代码:1. manual //手工定义折叠2. indent //用缩进表示折叠3. expr //用表达式来定义折叠4. syntax //用语法高亮来定义折叠5. diff //对没有更改的文本进行折叠6. marker //用标志折叠 在/etc/中找到vi
2012-10-18 14:25:02
338
原创 第二篇 字符设备驱动之按键
按键字符设备用到了关于中断和等待队列的知识:基于友善之臂micro2440,linux内核版本为2.6.29.4。目的:控制六个开关,每个开关能够单独打开和关闭。源代码如下所示:头文件 key.h:#ifndef __KEY_H#define __KEY_H#define KEY_MAJOR 200#define DRIVER_NAME "key_driver"
2012-10-17 15:29:55
352
转载 Linux下对ftp的配置
vsftpd配置文件采用“#”作为注释符,以“#”开头的行和空白行在解析时将被忽略,其余的行被视为配置命令行,每个配置命令的“=”两边不要留有空格。对于每个配置命令,在配置文件中还列出了相关的配置说明,利用vi编辑器可实现对配置文件的编辑修改。方法如下: #vi /etc/vsftpd/vsftpd.conf1.登录和对匿名用户的设置 write
2012-10-15 21:13:45
315
原创 第一篇 字符设备驱动程序之LED流水灯驱动
第二次写字符设备驱动程序,对字符设备驱动有了进一步的了解。程序的思考参考于:http://bbs.witech.com.cn/forum.php?mod=viewthread&tid=6408&extra=page%3D1 基于友善之臂micro2440,linux内核版本为2.6.29.4。 首先给出源代码(lightwater.c):#include#incl
2012-10-14 14:15:11
928
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人