Chinaunix首页 | 论坛 | 博客
  • 博客访问: 893527
  • 博文数量: 299
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2493
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-21 10:07
个人简介

Linux后台服务器编程。

文章分类

全部博文(299)

文章存档

2015年(2)

2014年(297)

发布时间:2014-11-11 20:34:38

首先介绍我们会经常看到的一些寄存器:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI)2个指针寄存器(ESP和EBP)4个数据寄存器(EAX、EBX、ECX和EDX):32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些低16位寄存器分别命名为:AX、BX、CX和DX,它和.........【阅读全文】

阅读(2892) | 评论(0) | 转发(0)

发布时间:2014-09-06 17:46:06

自己写了一下小的shell实例,虽然很小,但所有的大的程序都是由小的模块堆积起来的,程序员一定要懂得一种脚本的书写,而我,只会在linux下工作,所以就只能写linux的shell脚本了,呵呵,本文会陆续更新,给自己加油!1.模拟linnux登录shell[plain] view plaincopy#!/bin/.........【阅读全文】

阅读(1240) | 评论(0) | 转发(0)

发布时间:2014-08-29 15:53:07

回车符号和换行符号产生背景 关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒.........【阅读全文】

阅读(1843) | 评论(0) | 转发(0)

发布时间:2014-08-08 09:31:13

最近研究了一下elf文件格式,发现好多资料写的都比较繁琐,可能会严重打击学习者的热情,我把自己研究的结果和大家分享,希望我的描述能够简洁一些。一、基础知识     elf是一种文件格式,用于存储Linux程序. 它内部都有一些什么信息呢?大概包括编制好的计算机指令,数据,计算机在需要的时.........【阅读全文】

阅读(2229) | 评论(0) | 转发(0)

发布时间:2014-08-03 17:02:00

自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。  由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。  信号量和读.........【阅读全文】

阅读(1983) | 评论(0) | 转发(2)

发布时间:2014-08-01 20:20:00

1、C标准库的I/O缓冲区 UNIX的传统是Everything is a file, 键盘、显示器、串口、磁盘等设备在/dev 目录下都有一个特殊的设备文件与之对应,这些设备文件也可以像普通文件(保存在磁盘上的文件)一样打开、读、写和关闭,使用的函数接口是相同的。 用户程序调用C标准I/O库函数读写普通文件或设备,而这.........【阅读全文】

阅读(1750) | 评论(0) | 转发(0)

发布时间:2014-07-31 11:06:32

包含文件:#ifndef __TIME_T#define __TIME_T     /* 避免重复定义 time_t */typedef long     time_t;    /* 时间值time_t 为长整型的别名*/#endif 既然time_t实际上是长整型,到未来的某一天,从一.........【阅读全文】

阅读(1433) | 评论(0) | 转发(0)

发布时间:2014-07-24 20:13:53

第一层次:普通管理员    1、特征:能理解分区的概念,知道安装linux系统和常见的数据库、桌面管理器、应用软件等,能做一些基本的配置(如网络、打印机、调制解调器等),参照手边资料依葫画瓢式的安装和配置常见服务(如NFS、HTTP、FTP、TELNET、 SSH、LDAP、NIS、邮件服务、SAMBA、打印服务等),能解决一些.........【阅读全文】

阅读(1370) | 评论(0) | 转发(0)

发布时间:2014-07-24 19:58:49

内核态与用户态是操作系统的两种运行级别,intel cpu提供Ring0-Ring3三种级别的运行模式。Ring0级别最高,Ring3最低。其中特权级0(Ring0)是留给操作系统代码,设备驱动程序代码使用的,它们工作于系统核心态;而特权极3(Ring3)则给普通的用户程序使用,它们工作在用户态。运行于处理器核心态的代码不受任何的限制,可.........【阅读全文】

阅读(1236) | 评论(0) | 转发(0)

发布时间:2014-07-16 23:06:05

现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法。 1.修改/etc/profile文件如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。 .........【阅读全文】

阅读(1207) | 评论(0) | 转发(0)

发布时间:2014-07-16 23:00:43

1 获得源码   从apue的官方网站http://www.apuebook.com/下载 源码。(点击here直接下载) 在windows下载后用U盘拷到linux系统下找个目录解压   tar -zxvf src.tar.gz 在当前目录下解压  通过pwd查看你解压的目录 这个目录要记住会在下一步中用到2 WKDIR  编辑源码解压生成的apue.2e文件 夹下的Mak.........【阅读全文】

阅读(1192) | 评论(2) | 转发(0)

发布时间:2014-07-07 23:07:50

tcpdump  [功能] 抓包工具。   [描述] 1、简介     tcpdump,就是:dump the traffice on a network,是Linux上的网络数据采集分析工具(即sniffer), 可以根据使用者的定义对网络上的数据包进行截获的包分析工具。sniffer工具首先是为网络管理员和网络.........【阅读全文】

阅读(1291) | 评论(0) | 转发(0)

发布时间:2014-07-07 17:49:51

从 socket 到设备驱动程序Linux? 操作系统的最大特性之一就是它的网络栈。它最初源于 BSD 的网络栈,具有一套非常干净的接口,组织得非常好。其接口范围从协议无关层(例如通用 socket 层接口或设备层)到各种网络协议的具体层。本文将从分层角度对 Linux 网络栈的接口进行探索,并介绍其中的一些主要结构。协议简.........【阅读全文】

阅读(1150) | 评论(0) | 转发(0)

发布时间:2014-07-07 16:57:35

Linux? 系统调用 —— 我们每天都在使用它们。不过您清楚系统调用是如何在用户空间和内核之间执行的吗?本文将探究 Linux 系统调用接口(SCI)系统调用就是用户空间应用程序和内核提供的服务之间的一个接口。由于服务是在内核中提供的,因此无法执行直接调用;相反,您必须使用一个进程来跨越用户空间与内核之间的界限。.........【阅读全文】

阅读(864) | 评论(0) | 转发(0)

发布时间:2014-07-06 18:26:49

linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 5. 停止(进程.........【阅读全文】

阅读(754) | 评论(0) | 转发(0)

发布时间:2014-07-05 22:52:28

【命令功能】linux系统中ls -l命令可以获得某个目录下文件的具体信息,比如:gaolu@gaolu-desktop:~/test_folder$ ls -ltotal 20-rw-r--r-- 1 gaolu gaolu 2578 2009-03-08 02:10 gao.lu.c-rw-r--r-- 1 gaolu gaolu 2577 2009-03-08 02:07 gao.lu.c~-rwxr-xr-x 1 gaolu gaolu 9675 2009-03-08 02:12 .........【阅读全文】

阅读(1081) | 评论(0) | 转发(0)

发布时间:2014-07-03 22:45:51

linux系统中每个进程都有2个ID,分别为用户ID和有效用户ID,UID一般表示进程的创建者(属于哪个用户创建),而EUID表示进程对于文件和资源的访问权限(具备等同于哪个用户的权限)。可以通过函数getuid()和geteuid()或者进程的两个ID值。 当一个用户登陆系统时,系统会将UID和EUID都赋值为/etc/passwd文件.........【阅读全文】

阅读(1105) | 评论(0) | 转发(0)

发布时间:2014-06-12 21:55:05

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程.........【阅读全文】

阅读(1455) | 评论(0) | 转发(0)

发布时间:2014-06-06 21:25:18

新疆 linux 系统调用......【阅读全文】

阅读(827) | 评论(0) | 转发(0)

发布时间:2014-06-06 15:10:17

Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。1.进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单.........【阅读全文】

阅读(881) | 评论(0) | 转发(0)

发布时间:2014-06-02 16:37:16

如何在linux下查看当前登录的用户,并且踢掉你认为应该踢掉的用户?看了网络中的一些例子.在这里总结一下.主要用到的命令有,w,who,ps,kill,pkill 查看当前登录用户: node8:/home # whoroot     :0           2009-11-04 16:26root   &nbs.........【阅读全文】

阅读(1244) | 评论(0) | 转发(0)

发布时间:2014-05-25 11:34:06

在命令行下也能产生五颜六色的字体和图案,只需要加上一些颜色代码,例如    echo -e "\033[41;36m 红底绿字\033[0m"    其中41的位置代表底色, 36的位置是代表字的颜色    那些ascii code 是对颜色调用的始末.    \033[ ; m …… \033[0m    字背景颜色范围:40---.........【阅读全文】

阅读(2170) | 评论(0) | 转发(0)

发布时间:2014-05-14 15:44:12

在内核中sk_buff表示一个网络数据包,它是一个双向链表,而链表头就是sk_buff_head,在老的内核里面sk_buff会有一个list域直接指向sk_buff_head也就是链表头,现在在2.6.32里面这个域已经被删除了。 而sk_buff的内存布局可以分作3个段,第一个就是sk_buff自身,第二个是linear-data buff,第三个是paged-data buff(也.........【阅读全文】

阅读(1143) | 评论(0) | 转发(0)

发布时间:2014-05-12 17:26:59

当您最初登录时,将启动一个新的 shell 进程。您已经知道,但是您可能还不知道这个新的 shell进程(通常是 bash)使用您的用户标识运行。照这样,bash 程序可以访问所有属于您的文件和目录。事实上,作为用户,我们完全依靠其它程序来代表我们执行操作。因为您启动的程序继承了您的用户标识,因此它们不能访问任何不允许您.........【阅读全文】

阅读(1040) | 评论(0) | 转发(0)

发布时间:2014-05-11 15:35:22

当解决多线程互斥同步的问题时,经常会有如下几个问题:1. 在一个给定的问题中,需要多少个Mutex,多少个Semaphore?有什么规律?2. 在对临界区加锁和等待信号量的顺序上有什么要求和规律?3. 什么样操作适合放在临界区,什么样的不适合?下面就生产者和消费者问题来分析一些这几个问题.下面是一个简单的实现程序:生产者向数.........【阅读全文】

阅读(1071) | 评论(0) | 转发(0)
给主人留下些什么吧!~~

tianyashuibin2014-12-08 11:22

Oscarzhao:c++11 中貌似可以

嗯,是的,在c++11中可以

下面是在gcc的编译结果:
test_struct.cc:8:11: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
   int a = 1;
           ^

回复  |  举报

Oscarzhao2014-11-26 20:12

tianyashuibin:除了静态数据成员外,数据成员不能在类体内显式的初始化

举个最简单例子
struct a

  int a=1;
  int b=2;
};
这也不能通过啊!
原因很简单,因为struct a此时只是在说明有这么个类型,而并没有定义一个具体的变量和分配内存空间

c++11 中貌似可以

回复  |  举报

tianyashuibin2014-10-23 21:57

除了静态数据成员外,数据成员不能在类体内显式的初始化

举个最简单例子
struct a

  int a=1;
  int b=2;
};
这也不能通过啊!
原因很简单,因为struct a此时只是在说明有这么个类型,而并没有定义一个具体的变量和分配内存空间

回复  |  举报

tianyashuibin2014-10-23 21:39

1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员
2.进入构造函数后在构造函数中执行一般计算
  1.类里面的任何成员变量在定义时是不能初始化的。
  2.一般的数据成员可以在构造函数中初始化。
  3.const数据成员必须在构造函数的初始化列表中初始化。
  4.static要在类的定义外面初始化。   
  5.数组成员是不能在初始化列表里初始化的。
  6.不能给数组指定明显的初始化。  
这6条一起,说明了一个问题:C++里面是不能定义常量数组的!因为3和5的矛盾。

回复  |  举报

tianyashuibin2014-10-23 21:32

记住静态成员这样初始化:
C/C++ code

class A
{
public:
   static const int a[3];
};
 
const int A::a[3] = {1,2,3};

回复  |  举报
留言热议
请登录后留言。

登录 注册