Linux后台服务器编程。
发布时间: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,它和.........【阅读全文】
发布时间:2014-09-06 17:46:06
自己写了一下小的shell实例,虽然很小,但所有的大的程序都是由小的模块堆积起来的,程序员一定要懂得一种脚本的书写,而我,只会在linux下工作,所以就只能写linux的shell脚本了,呵呵,本文会陆续更新,给自己加油!1.模拟linnux登录shell[plain] view plaincopy#!/bin/.........【阅读全文】
发布时间:2014-08-29 15:53:07
回车符号和换行符号产生背景 关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒.........【阅读全文】
发布时间:2014-08-03 17:02:00
自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。 由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。 信号量和读.........【阅读全文】
发布时间:2014-08-01 20:20:00
1、C标准库的I/O缓冲区 UNIX的传统是Everything is a file, 键盘、显示器、串口、磁盘等设备在/dev 目录下都有一个特殊的设备文件与之对应,这些设备文件也可以像普通文件(保存在磁盘上的文件)一样打开、读、写和关闭,使用的函数接口是相同的。 用户程序调用C标准I/O库函数读写普通文件或设备,而这.........【阅读全文】
发布时间:2014-07-31 11:06:32
包含文件:#ifndef __TIME_T#define __TIME_T /* 避免重复定义 time_t */typedef long time_t; /* 时间值time_t 为长整型的别名*/#endif 既然time_t实际上是长整型,到未来的某一天,从一.........【阅读全文】
发布时间:2014-07-24 20:13:53
第一层次:普通管理员 1、特征:能理解分区的概念,知道安装linux系统和常见的数据库、桌面管理器、应用软件等,能做一些基本的配置(如网络、打印机、调制解调器等),参照手边资料依葫画瓢式的安装和配置常见服务(如NFS、HTTP、FTP、TELNET、 SSH、LDAP、NIS、邮件服务、SAMBA、打印服务等),能解决一些.........【阅读全文】
发布时间:2014-07-16 23:06:05
现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法。 1.修改/etc/profile文件如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。 .........【阅读全文】
发布时间: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.........【阅读全文】
发布时间:2014-07-07 23:07:50
tcpdump [功能] 抓包工具。 [描述] 1、简介 tcpdump,就是:dump the traffice on a network,是Linux上的网络数据采集分析工具(即sniffer), 可以根据使用者的定义对网络上的数据包进行截获的包分析工具。sniffer工具首先是为网络管理员和网络.........【阅读全文】
发布时间:2014-07-07 17:49:51
从 socket 到设备驱动程序Linux? 操作系统的最大特性之一就是它的网络栈。它最初源于 BSD 的网络栈,具有一套非常干净的接口,组织得非常好。其接口范围从协议无关层(例如通用 socket 层接口或设备层)到各种网络协议的具体层。本文将从分层角度对 Linux 网络栈的接口进行探索,并介绍其中的一些主要结构。协议简.........【阅读全文】
发布时间:2014-07-07 16:57:35
Linux? 系统调用 —— 我们每天都在使用它们。不过您清楚系统调用是如何在用户空间和内核之间执行的吗?本文将探究 Linux 系统调用接口(SCI)系统调用就是用户空间应用程序和内核提供的服务之间的一个接口。由于服务是在内核中提供的,因此无法执行直接调用;相反,您必须使用一个进程来跨越用户空间与内核之间的界限。.........【阅读全文】
发布时间:2014-07-06 18:26:49
linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 5. 停止(进程.........【阅读全文】
发布时间: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 .........【阅读全文】
发布时间:2014-07-03 22:45:51
linux系统中每个进程都有2个ID,分别为用户ID和有效用户ID,UID一般表示进程的创建者(属于哪个用户创建),而EUID表示进程对于文件和资源的访问权限(具备等同于哪个用户的权限)。可以通过函数getuid()和geteuid()或者进程的两个ID值。 当一个用户登陆系统时,系统会将UID和EUID都赋值为/etc/passwd文件.........【阅读全文】
发布时间:2014-06-02 16:37:16
如何在linux下查看当前登录的用户,并且踢掉你认为应该踢掉的用户?看了网络中的一些例子.在这里总结一下.主要用到的命令有,w,who,ps,kill,pkill 查看当前登录用户: node8:/home # whoroot :0 2009-11-04 16:26root &nbs.........【阅读全文】
发布时间:2014-05-25 11:34:06
在命令行下也能产生五颜六色的字体和图案,只需要加上一些颜色代码,例如 echo -e "\033[41;36m 红底绿字\033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色 那些ascii code 是对颜色调用的始末. \033[ ; m …… \033[0m 字背景颜色范围:40---.........【阅读全文】
发布时间: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(也.........【阅读全文】
发布时间:2014-05-12 17:26:59
当您最初登录时,将启动一个新的 shell 进程。您已经知道,但是您可能还不知道这个新的 shell进程(通常是 bash)使用您的用户标识运行。照这样,bash 程序可以访问所有属于您的文件和目录。事实上,作为用户,我们完全依靠其它程序来代表我们执行操作。因为您启动的程序继承了您的用户标识,因此它们不能访问任何不允许您.........【阅读全文】
发布时间:2014-05-11 15:35:22
当解决多线程互斥同步的问题时,经常会有如下几个问题:1. 在一个给定的问题中,需要多少个Mutex,多少个Semaphore?有什么规律?2. 在对临界区加锁和等待信号量的顺序上有什么要求和规律?3. 什么样操作适合放在临界区,什么样的不适合?下面就生产者和消费者问题来分析一些这几个问题.下面是一个简单的实现程序:生产者向数.........【阅读全文】
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;
^
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};