戊辰人博客

青,取之于蓝而青于蓝;冰,水为之而寒于水。

TCP并发服务器/客户端模型

日期:2015年1月10日 作者: 分类:编程 阅读:601

 服务器TCP模型

#include "..."
#include "..."
#include "..."
#define  SERVER_PORT
#define  MAX_LISTEN
int TCPServerModel (unsigned short publicPort)
{
    int sockListen;
    int sockAccept;
    sockaddr_in serverAddr;
    sockaddr_in clientAddr;
    pid_t childPid;
    int addrLen = sizeof(sockaddr_in);  
    // XXX 初始化监听套接口
    sockListen  = socket (AF_INET, SOCK_STREAM, 0);
    // XXX 初始化sockaddr_in
    memset (&serverAddr, 0, addrLen);
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(publicPort);
    serverAddr.sin_addr.s_addr = htons(INADDR_ANY);
    // XXX 绑定 - bind()
    bind(sockListen, (sockaddr *)&serverAddr, addrLen);
    // XXX 监听 - listen()
    listen (sockListen, MAX_LISTEN);
    while(true)
    {
        // XXX 接收连接 - accept()
        sockAccept = accept(sockListen, (sockaddr *)&clientAddr, &addrLen);
        if (!(childPid = fork()))
        {
            close(sockListen);
            // XXX 处理客户端数据
            exit(0);
        }
        close(sockAccept);
    }
    return 0;
}

阅读全文…

ThinkPHP 查询方式的一般使用

日期:2015年1月10日 作者: 分类:编程 阅读:343

一、普通查询方式

a、字符串

$arr=$m->where("sex=0 and username='gege'")->find();

b、数组

$data['sex']=0; 
$data['username']='gege'; 
$arr=$m->where($data)->find();

注意:这种方式默认是and的关系,如果使用or关系,需要添加数组值

$data['sex']=0; 
$data['username']='gege'; 
$data['_logic']='or';

阅读全文…

systemctl命令用法

日期:2015年1月9日 作者: 分类:运维 阅读:360

CentOS 7中用systemctl代替了sysinit,虽然开源社区对此相当排斥,但作为运维人员不得不去了解。

命令对比表,以 apache / httpd 为例:

任务 旧指令 新指令
使某服务自动启动 chkconfig –level 3 httpd on systemctl enable httpd.service
使某服务不自动启动 chkconfig –level 3 httpd off systemctl disable httpd.service
检查服务状态 service httpd status systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active)
显示所有已启动的服务 chkconfig –list systemctl list-units –type=service
启动某服务 service httpd start systemctl start httpd.service
停止某服务 service httpd stop systemctl stop httpd.service
重启某服务 service httpd restart systemctl restart httpd.service

 

firewalld使用

日期:2015年1月9日 作者: 分类:运维 阅读:697

1. 获取firewalld所支持的ICMP类型

firewall-cmd --get-icmptypes

阻断public的request的包(禁止ping)

firewall-cmd --zone=public --add-icmp-block=echo-request

删除上述规则

firewall-cmd --zone=public --remove-icmp-block=echo-request

2. 在public域中增加删除服务

增加:

firewall-cmd --zone=public --add-service=ssh --permanent

删除:

firewall-cmd --zone=public --remove-service=ssh --permanent

阅读全文…

编程范式(一)

日期:2015年1月8日 作者: 分类:编程 阅读:324

1.float在内存中的存储方式

浮点型变量在计算机内存中占用4字节(Byte),即32-bit。遵循IEEE-754格式标准。

一个浮点数由2部分组成:底数m 和 指数e。

±mantissa × 2exponent

注意,公式中的mantissa 和 exponent使用二进制表示

底数部分 使用2进制数来表示此浮点数的实际值。

指数部分 占用8-bit的二进制数,可表示数值范围为0-255。 但是指数应可正可负,所以IEEE规定,此处算出的次方须减去127才是真正的指数。所以float的指数可从 -126到128.

底数部分实际是占用24-bit的一个值,由于其最高位始终为 1 ,所以最高位省去不存储,在存储中只有23-bit。

到目前为止, 底数部分 23位 加上指数部分 8位 使用了31位。那么前面说过,float是占用4个字节即32-bit,那么还有一位是干嘛用的呢?

还有一位,其实就是4字节中的最高位,用来指示浮点数的正负,当最高位是1时,为负数,最高位是0时,为正数。

浮点数据就是按下表的格式存储在4个字节中:

Address+0    Address+1    Address+2    Address+3

SEEE EEEE    EMMM MMMM    MMMM MMMM    MMMM MMMM     S: 表示浮点数正负,1为负数,0为正数

E: 指数加上127后的值的二进制数

M: 24-bit的底数(只存储23-bit)

注意:这里有个特例,浮点数 为0时,指数和底数都为0,但此前的公式不成立。因为2的0次方为1,所以,0是个特例。当然,这个特例也不用认为去干扰,编译器会自动去识别。

阅读全文…

内存置换空间(swap)之建置

日期:2015年1月8日 作者: 分类:运维 阅读:462

一、使用实体分区建置swap

1. 先进行分区的行为,从硬盘上分出一部分空间,假设分出来的分区为/dev/sda12

[root@localhost ~]# fdisk /dev/sda

2. 开始建置 swap 格式

[root@localhost ~]# mkswap /dev/sda12

3. 开始观察与加载

[root@localhost ~]# free

             total       used       free       shared    buffers     cached
Mem:        742664     684592      58072            0     43820      497144
-/+ buffers/cache:     143628     599036
Swap:      1020088         96    1019992
# 我有 742664K 的物理内存,使用 684592K 剩余 58072K ,使用掉的内存有
# 43820K / 497144K 用在缓冲/缓存的用途中。
# 至于 swap 已经存在了 1020088K 啰!这样会看了吧?!

[root@localhost ~]# swapon /dev/sda12

[root@localhost ~]# free

             total       used       free     shared    buffers     cached
Mem:        742664     684712      57952          0      43872     497180
-/+ buffers/cache:     143660     599004
Swap:      1277088         96    1276992  <==有添加啰!看到否?

[root@localhost ~]# swapon -s

Filename                 Type            Size    Used    Priority
/dev/hdc5                partition       1020088 96      -1
/dev/hdc7                partition       257000  0       -2
# 上面列出目前使用的 swap 装置有哪些的意思!

阅读全文…

linux挂载windows分区时中文乱码的解决

日期:2015年1月7日 作者: 分类:运维 阅读:509

linux下挂载FAT32分区或者挂在移动硬盘时中文会出现乱码的现象(表现为中文变成一连串的问号),这是因为编码格式的问题,linux内核中默认的编码格式是codepage=417、iocharset=ascii,经过实验可以通过下面的方式来加以解决:

1、挂载时增加两个参数codepage=936、iocharset=utf8。这样挂载挂文件系统时会用上述的两个指定参数替换掉默认的编码参数从而解决乱码的问题。

mount -o codepage=936,iocharset=utf8 /dev/sdb1 /mnt
mount -t vfat /dev/hda6 /mnt/d -o codepage=936,iocharset=utf8

阅读全文…

Unix传奇(下篇)

日期:2015年1月6日 作者: 分类:互联网 阅读:500

Unix是目前还在存活的操作系统的元老了,走过了40年的历程(参看《Unix 40年:Unix年鉴》、《Unix 40年:昨天,今天和明天》)。 由它引发的思想变革,对当今计算机文化造成的深远影响。这是一段所有从事计算机行业人员尤其是软件开发人员需要了解的历史。Unix的传奇历史是整个计算 机世界文化最具代表性的,它对整个计算机世界文化的影响也是最巨大,最深远的。他给人带来的不单单的对过去的回味,更为我们带来了计算机世界的新思潮。

下篇

  • Unix与黑客文化
  • Unix的历史教训
  • Unix 家族谱
  • Unix的特点
  • Unix的影响和哲学
  • Unix痛恨者手册

 

上篇

  • Unix起源
  • Unix分裂
  • Unix的法律纠纷
  • GNU开源组织
  • Linux横空出世
  • Linux今天的领袖

Unix与黑客文化

黑客的文化和Unix的商业化存在着必然的联系。自从Unix出现,黑客文化就与之而来。

1993初,一个悲观的观察家撰文指出,已经有理由认为Unix的传奇故事连同他带有黑客文明将一同破产。许多人预测,从那时起Unix将在六月内 死亡。他们很清楚,十年的Unix商业化,使自由跨平台的Unix梦以失败告终。Unix允诺的跨平台可移植性,在一打大公司专有的Unix版本之间不停 地斗嘴中丢失,一个完美的操作系统最终沦为多种版本的一团乱麻,这应该说是人类文明史上的一个重大悲剧。

在专有软件社会中,只有像微软一样的“集权制,大教堂”生产方式才能成功。那个时代的人悲观地相信,技术世界的个人英雄主义时代已经结束,软件工业 和发展中的互联网络将逐渐地由像微软一样的巨型企业支配,再也没有“佐罗”,世界是恺撒大帝的世界,计算机文明将进入黑暗的帝国时代。黑客已经死了,自由 不付存在。

自从Unix出现以来,第一代的Unix黑客似乎垂垂老矣,衣食不饱( Berkeley计算机科学研究组在1994丢失了自己基金)。这是一个抑压的时代。专有的商业Unix的结果证明那么沉重、那么盲目、那么不适当,以致 微软能够用那次等技术的Windows抢走他们生存的空间,拿走他们的干粮。黑客世界的残余力量被逼到了世界上的角落里,苟延残喘。

阅读全文…

Unix传奇(上篇)

日期:2015年1月6日 作者: 分类:互联网 阅读:515

了解过去,我们才能知其然,更知所以然。总结过去,我们才会知道我们明天该如何去规划,该如何去走。在时间的滚轮中,许许多的东西就像流星一样一闪而逝, 而有些东西却能经受着时间的考验散发着经久的魅力,让人津津乐道,流传至今。要知道明天怎么去选择,怎么去做,不是盲目地跟从今天各种各样琳琅满目前沿技 术,而应该是去 —— 认认真真地了解和回顾历史。

Unix是目前还在存活的操作系统的元老了,走过了40年的历程(参看《Unix 40年:Unix年鉴》、《Unix 40年:昨天,今天和明天》)。在技术更新如此迅速的计算机世界的今天,Unix始终保持它那神圣的光环,它那曲折和令人叹息的历史,以及由它引发的思想变革,对当今计算机文化造成的深远影响,这40年所产生的人和事,让它成为了一个传奇,不能不让人为之惊叹。

这是一段所有从事计算机行业人员尤其是软件开发人员需要了解的历史。Unix的传奇历史是整个计算机世界文化最具代表性的,它对整个计算机世界文化的影响也是最巨大,最深远的。他给人带来的不单单的对过去的回味,更为我们带来了计算机世界的新思潮。

了解这段的历史的人,才能体会计算机世界变迁过程中的是是非非,才能了解计算机世界中的文化,从而才能参与到整个计算机革命的大潮中。希望这段历史,这篇文章能让你感受到计算机世界那强力的脉搏,从而让你踏上这条令人充满激情的道路。

上篇

  • Unix起源
  • Unix分裂
  • Unix的法律纠纷
  • GNU开源组织
  • Linux横空出世
  • Linux今天的领袖

下篇

  • Unix与黑客文化
  • Unix的历史教训
  • Unix 家族谱
  • Unix的特点
  • Unix的影响和哲学
  • Unix痛恨者手册

阅读全文…

Oracle常用基本操作

日期:2015年1月6日 作者: 分类:数据库 阅读:345

1. 创建临时表空间

create temporary tablespace user_temp 
    tempfile '/home/oracle/oracle_base/oradata/wilson/user_temp.dbf'
    size 50m
    autoextend on
    next 50m maxsize 20480m
    extent management local;

2. 创建数据表空间

create tablespace user_data
    logging
    datafile '/home/oracle/oracle_base/oradata/wilson/user_data'
    size 50m
    autoextend on
    next 50m maxsize 20480m
    extent management local;

3. 创建用户并指定表空间

create user test_user identified by test_user
    default tablespace user_data
    temporary tablespace user_temp
    account unlock;

阅读全文…