为什么引入信号量原语 在写代码的时候我们可能会遇到一种情况,那就是多个进程访问同一个资源这时候,我们必须确保在 […] 继续阅读 >>


李林翰 15/12/08 12:57:26
我们要实现的是,使用多线程来计算 1 ~ n 范围的所有整数和。 计算运行时间   因为要将普通求和程序与多线程作比较,所以先介绍一下如何计算程序运行的时间。 获取时间函数: #include<sys/time.h> int gettimeofday(struct timeval*tv, struct timezone *tz); 参数: 其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果。tz 一般为NULL即可。 struct timezone{ int tz_minuteswest;/*格林威治时间往西方的时差*/ int tz_dsttime;/*DST 时间的修正方式*/ } struct timeval{ long int tv_sec; // 秒数 long int tv_usec; // 微秒数 } 因为上面获取到的时间,拆分为了秒级和微秒两部分,我们需要将他们组合成一个准确的时间。下面是我自定义的函数: double 继续阅读 >>


刘瑜晗 15/12/03 23:37:42
useradd 新建用户test (不创建主目录) sudo useradd test 新建用户test (并创建主目录等信息) sudo useradd -m -s /bin/bash test 查看/etc/passwd 查看/etc/shadow 设置用户密码 再看/etc/shadow 新建用户(一次性配好所有环境) sudo adduser test 删除用户 sudo userdel -r test #不加 -r 只删除用户,不删除用户目录 新建用户组 sudo groupadd stuff 查看 /etc/group 文件 设置组密码 sudo gpasswd stuff 设置test用户所属组 lyh , 附加所属组 stuff sudo usermod -g lyh -G stuff test use 继续阅读 >>


刘瑜晗 15/12/03 15:18:58
本文链接:http://blog.csdn.net/lyh__521/article/details/50148025 孙子进程的父进程是谁? 为了方便描述,这里将子进程中创建的子进程称为孙子进程。 测试代码: /* * getpid() 获取当前进程PID * getppid() 获取父进程的PID */ #include<stdio.h> #include<stdlib.h> main() { int pid1,pid2; pid1 = fork(); //创建子进程 switch(pid1) { case -1: printf("create pid1 error!\n"); break; case 0: pid2 = fork(); //子进程中创建孙子进程 switch(pid2) 继续阅读 >>


刘瑜晗 15/12/02 14:39:03
环境 操作系统:ubuntu15.04 物理内存:4G 测试程序 #include<stdio.h> #include<stdlib.h> int a; int b=1; main() { int n = 0; char *p1 = NULL; char *p2 = NULL; const int s = 10; p1 = (char*)malloc(200); p2 = "hello"; printf("main %p\n",main); printf("未初始化 a %p\n",&a); printf("初始化 b %p\n",&b); printf("局部变量 n %p\n",&n); printf("动态内存 p1 %p\n",p1); printf("常量 s %p\n",&s); 继续阅读 >>


刘瑜晗 15/12/01 23:59:30
在java中,包装类可实现自动装箱拆箱,一般情况下自动装箱会产生一个新的包装类对象,但是对于部分特殊的基本类型值,系统将保证其两次装箱产生的是同一个对象。 比如下面的例子: import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils; /** * Created by zhuxinquan on 15-11-30. */ public class Ex6_4 { public static void main(String[] args) { Integer iObj1 = 100; Integer iObj2 = 100; Integer iObj3 = new Integer(100); Integer iObj4 = new Integer(100); if(iObj1 == iObj2){ System.out.println("iObj1 iObj2相等"); 继续阅读 >>


朱新全 15/12/01 13:24:47
在java中如果一个类中没有显式的使用super()进行调用超类的构造方法,则在执行子类构造方法之前会首先待用父类的构造方法,如下: /** * Created by zhuxinquan on 15-11-24. */ class Circle{ double radius = 10; public Circle(){ //this(0); System.out.println("Parent radius"+radius); } public Circle(double r){ radius = r; System.out.println("Parent radius"+radius); } } class Cylinder extends Circle{ double height = 100; public Cylinder(){ System.out.println("height"+height); 继续阅读 >>


朱新全 15/11/30 20:30:41
比如局部变量是保存在栈空间中的,今天突然在想栈的上限是多大呢,什么时候才会栈溢出? ulimit 命令 linux下使用ulimit 命令可以查看系统的很多上限值。 ulimit -a 查看所有 ulimit -s 查看栈空间的大小 可以看到系统设置栈的上限是8M 测试 现在我们写个程序测试一下 两种方法: 1、第一种方法:最简单的是在函数或直接在main()函数里定义多个局部变量。 局部变量一定要初始化,不然可能不会给分配内存 2、第二种方法:使用递归申请栈空间更合适,测试方便。 #include<stdio.h> #include<stdlib.h> int i = 1; //记录申请的次数 void func() { char a[1048576]; //一次申请 1 M 便于计算 printf("NO.%d %ld 字节 %p\n",i,sizeof(a),a); 继续阅读 >>


刘瑜晗 15/11/30 17:22:11
有时候我们需要测试c代码在32位环境下的运行结果,这时候就需要gcc按照32位来编译c了。 1、 安装 sudo apt-get install lib32readline-gplv2-dev 2、编译。加 -m32 参数 gcc -m32 hello.c 作者:lyh__521 发表于 2015/11/30 15:59:07 原文链接 https://blog.csdn.net/lyh__521/article/details/50113635 阅读:2830 继续阅读 >>


刘瑜晗 15/11/30 15:59:07
简单说一下token的工作方式 先来了解一下什么是token:我的理解是token就是一个用于验证客户端以及服 […] 继续阅读 >>


陈志诚 15/11/26 14:42:06