??xml version="1.0" encoding="utf-8" standalone="yes"?>成人免费网站久久久,亚洲av日韩精品久久久久久a,国产精品99精品久久免费http://www.shnenglu.com/Onway/category/18209.html我是一只菜菜菜菜鸟...zh-cnMon, 13 Feb 2017 05:39:05 GMTMon, 13 Feb 2017 05:39:05 GMT60认识matplotlibhttp://www.shnenglu.com/Onway/archive/2017/02/11/214675.htmlOnwayOnwaySat, 11 Feb 2017 07:12:00 GMThttp://www.shnenglu.com/Onway/archive/2017/02/11/214675.htmlhttp://www.shnenglu.com/Onway/comments/214675.htmlhttp://www.shnenglu.com/Onway/archive/2017/02/11/214675.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/214675.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/214675.html一Q?/span>matplotlib是什?/span>

?/span>python中用于数据库可视化的2Dl图库?/span>


二,安装

http://matplotlib.org/users/installing.html


三,交互模式与非交互模式

1Q非交互模式

?/span>python shell里面执行

import matplotlib.pyplot as plt
plt.plot([12])
plt.show()

执行show之后?x)打开一?/span>GUIH口昄Q同时交互命令会(x)d?/span>



2Q交互模?/span>

matplotlib.is_interactive()可以查看当前是否在交互模式;

matplotlib.pyplot.ion()用于打开交互模式Q?/span>

matplotlib.pyplot.ioff()用于关闭交互模式Q?/span>

import matplotlib.pyplot as plt
plt.ion()
plt.plot([12])

执行plot之后打开?jin)一?/span>GUIH口Q交互命令没有阻塞,l箋(hu)执行Q?/span>

plt.plot([23])

可以看到在窗口里面再M(jin)一条线?/span>

也就是在非交互模式,需要一ơ画好再调用show昄Q而交互模式在每次l制后都能实时看到效果?/span>


3Qipython?/span>magic command 

在ipython?matplotlib也可以打开交互模式?/span>

在交互模式中如果某些修改没有自动hQ可以调用matplotlib.pyplot.draw()h?/span>


四,在jupyter notebook中用matplotlib

1Q?matplotlib

以交互模式打开独立的GUIH口Q对同一个figure的绘刉自动h到对应的GUIH口?/span>


2Q%matplotlib notebook

?matplotlibQ只是会(x)GUIH口嵌入到cell的输出?/span>



3Q?matplotlib inline

绘制的图{换ؓ(f)?rn)态图片嵌入到cell的输出。在不同的cellq行l制效果不会(x)叠加?/span>




五,figure的各个组成部?/span>

http://matplotlib.org/faq/usage_faq.html#parts-of-a-figure


六,matplotlib的两U绘图接?/span>

1Q?/span>matlab风格接口

所有的plt命o(h)都会(x)应用到自动创建的当前?/span>figure?/span>axes对象。?/span>plt.gcf?/span>plt.gca获取当前?/span>figure?/span>axes?/span>

调用plt.plot([1, 2])即绘制到自动创徏?/span>figure?/span>axes?/span>

plt.plot([12])
plt.plot([21])


2Q面向对象接?/span>

昑ּ获得l制对象Q在特定对象执行相应操作?/span>

fig, ax = plt.subplots()
ax.plot([12])
ax.plot([21])


3Q差?/span>

对于单绘制两U接口的差别不大Q复杂情况面向对象接口会(x)更合适?/span>

另外plt的很多函数都可以直接转ؓ(f)ax的函敎ͼ例如plt.plot() -> ax.plot()Q但某些?x)有差别Q例?/span>plt.xlabel() -> ax.set_xlabel()?/span>


七,各类囑Şdemo

http://matplotlib.org/gallery.html


八,API

http://matplotlib.org/api/index.html



参考:(x)

1Q?a >http://matplotlib.org/index.html#

2Q?a >http://matplotlib.org/faq/usage_faq.html#what-is-interactive-mode

3Q?a >http://jupyter.org

4Q?a >http://www.labri.fr/perso/nrougier/teaching/matplotlib/#introduction

5Q?a >http://nbviewer.jupyter.org/github/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/04.00-Introduction-To-Matplotlib.ipynb#Two-Interfaces-for-the-Price-of-One



Onway 2017-02-11 15:12 发表评论
]]>
APUEW二?UNIX标准化及(qing)实现http://www.shnenglu.com/Onway/archive/2015/12/08/212438.htmlOnwayOnwayTue, 08 Dec 2015 14:35:00 GMThttp://www.shnenglu.com/Onway/archive/2015/12/08/212438.htmlhttp://www.shnenglu.com/Onway/comments/212438.htmlhttp://www.shnenglu.com/Onway/archive/2015/12/08/212438.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/212438.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/212438.html
1, 三个标准
1.1, ISO C标准由ISO/IECl护开?/span>
最新版本是C11Q共?9个标准头文g?/span>

1.2, POSIX是一pd由IEEE制定的标?/span>
POSIX包括ISO C标准库函数?/span>
POSIX标准?988版本是IEEE 1003.1-1988Q经q修改后作ؓ(f)IEEE Std.1003.1-1990提交ISOQ成为国际标准ISO/IEC 9945-1:1990,该标准通常UCؓ(f)POSIX.1?/span>
当前最新版本是POSIX.1-2008Q由IEEE和Open Group共同开发?/span>

1.3, SUS是POSIX的超集,其系l接口全集称为XSI
The core specifications of the SUS are developed and maintained by the Austin Group, which is a joint working group of IEEE, ISO JTC 1 SC22 and The Open Group.
只有遵@XSI的实现才能称为UNIXpȝ?/span>
当前的最新版本是SUSv4?/span>

1.4, 扑ֈ一些网址
C11
http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=57853

POSIX.1-2008
http://pubs.opengroup.org/onlinepubs/9699919799/
https://standards.ieee.org/findstds/standard/1003.1-2008.html

SUSv4
https://www2.opengroup.org/ogsys/jsp/publications/PublicationDetails.jsp?publicationid=12310
https://en.wikipedia.org/wiki/Single_UNIX_Specification#cite_note-11

2, 限制
2.1 两种限制
~译旉制和q行旉制?/span>
~译旉刉过头文件获取;
不与文g或目录相关的q行旉刉过sysconf函数获取Q?/span>
与文件或目录相关的运行时限制通过pathconf和fpathconf函数获取?/span>

2.2 ISO C限制
都是~译旉Ӟ主要定义?lt;limits.h>里面?/span>
http://en.cppreference.com/w/c/types/limits

2.3 POSIX限制和XSI限制
书中列出的都是实C必须支持的各U最|特定pȝ实际支持的限制值需要通过头文件或者三个函数函数获取?/span>
三个函数的name参数是限制名前面加_SC_或者_PC_前缀得到?/span>
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html

2.4 书中代码
/*
 * If  name  is  invalid, -1 is returned, and errno is set to EINVAL.
 * Otherwise, the value returned is the value of the system resource and errno is not changed.
 * In the case of options, a positive value is returned if a queried option is available, and -1 if it is not.
 * In the case of limits, -1 means that there is no definite limit.
*/

#include 
"apue.h"
#include 
<errno.h>
#include 
<limits.h>

#ifdef OPEN_MAX
static long openmax = OPEN_MAX;
#else
static long openmax = 0;
#endif

/*
 * If OPEN_MAX is indeterminate, we're not
 * guaranteed that this is adequate
 
*/
#define OPEN_MAX_GUESS 256

long
open_max(
void)
{
    
if (openmax == 0) { /* first time through */
        errno 
= 0;
        
if ((openmax = sysconf(_SC_OPEN_MAX)) < 0) {
            
if (errno == 0)
                openmax 
= OPEN_MAX_GUESS; /* it's indeterminate */
            
else
                err_sys(
"sysconf error for _SC_OPEN_MAX";)
        }
    }

    
return(openmax);
}

3, 选项
3.1, 选项定方式
~译旉项定义?lt;unistd.h>中;
与文件或目录无关的选项用sysconf定Q?/span>
与文件或目录有关的选项用pathconf或者f(xi)pathconf定Q?/span>
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/unistd.h.html

3.2, 选项定程
如果W号帔R未定义,
对_POSIX前缀的选项Q将_POSIX前缀替换为_SC或_PC前缀Q?/span>
对_XOPEN前缀的选项Q在_XOPEN前面加上_SC或_PC前缀Q?/span>
然后调用sysconf, pathconf或fpathconf函数?/span>
如果W号帔R已经定义Q则有三U可能:(x)
gؓ(f)-1Q不支持相应的选项Q?/span>
值大?Q支持相应的选项Q?/span>
gؓ(f)0Q需调用函数定选项是否支持?/span>
注:(x)某些pȝ可能出现定义?jin)符号常量,但没有定义值的情况?/span>

3.4, 代码CZ
先占坑?/span>

4, 功能试?/span>
Feature test macros allow the programmer to control the definitions that are exposed by system header files when a program is compiled.
NOTE:  In  order  to be effective, a feature test macro must be defined before including any header files.  This can be done either in the compilation command (cc -DMACRO=value) or by defining the macro within the source code before including any headers.
see man page feature_test_macros(7).


Onway 2015-12-08 22:35 发表评论
]]>
shadowsockshttp://www.shnenglu.com/Onway/archive/2015/12/06/212428.htmlOnwayOnwaySun, 06 Dec 2015 09:18:00 GMThttp://www.shnenglu.com/Onway/archive/2015/12/06/212428.htmlhttp://www.shnenglu.com/Onway/comments/212428.htmlhttp://www.shnenglu.com/Onway/archive/2015/12/06/212428.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/212428.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/212428.html1, shadowsocks home page
https://shadowsocks.org/en/index.html

2, install shadowsocks server
$ sudo apt-get install python-pip
$ sudo pip install shadowsocks
https://shadowsocks.org/en/download/servers.html

3, shadowsocks server config file
$ vi /etc/shadowsocks.json
{
    "server":"my_server_ip",
    "server_port":8388,
    "local_port":1080,
    "password":"barfoo!",
    "timeout":600,
    "method":"table"
}
https://shadowsocks.org/en/config/quick-guide.html

4, shadowsocks server command
$ ssserver -h // help message
$ ssserver -c /etc/shadowsocks.json -d start // start in daemon mode
$ ssserver -d stop // stop the server

5, shadowsocks-qt5 client for ubuntu 14.04
$ sudo add-apt-repository ppa:hzwhuang/ss-qt5
$ sudo apt-get update
$ sudo apt-get install shadowsocks-qt5
https://github.com/shadowsocks/shadowsocks-qt5/wiki/Installation

6, install genpac to generate PAC file from gfwlist
$ sudo pip install genpac // install
$ genpac --init // generate config.ini and user-rules.txt
-- modify config.ini
$ vi config.ini
[config]
proxy = SOCKS5 127.0.0.1:1080
gfwlist-url = https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
user-rule-from = /path/to/user-rules.txt
output = /path/to/proxy.pac
$ genpac -c config.ini // generate pac file
https://github.com/JinnLynn/genpac
https://github.com/gfwlist/gfwlist

7, using a PAC file in Firefox
about:preferences#advanced -> Network -> Settings
check 'Automatic proxy configuration URL:'
file:///path/to/proxy.pac
enable 'Remote DNS'
https://www.youtube.com/watch?v=nKB4FoPw15k

Onway 2015-12-06 17:18 发表评论
]]>
可枚丑֯象与枚D?/title><link>http://www.shnenglu.com/Onway/archive/2015/08/01/211446.html</link><dc:creator>Onway</dc:creator><author>Onway</author><pubDate>Sat, 01 Aug 2015 06:00:00 GMT</pubDate><guid>http://www.shnenglu.com/Onway/archive/2015/08/01/211446.html</guid><wfw:comment>http://www.shnenglu.com/Onway/comments/211446.html</wfw:comment><comments>http://www.shnenglu.com/Onway/archive/2015/08/01/211446.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/Onway/comments/commentRss/211446.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Onway/services/trackbacks/211446.html</trackback:ping><description><![CDATA[     摘要: 1Q最先学?x)的是,l承?jin)IEnumerable接口的类都可以用foreach遍历Q但一直没有多惟?QIEnumerable和IEnumerable<out T>的定义:(x)Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->  &nb...  <a href='http://www.shnenglu.com/Onway/archive/2015/08/01/211446.html'>阅读全文</a><img src ="http://www.shnenglu.com/Onway/aggbug/211446.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Onway/" target="_blank">Onway</a> 2015-08-01 14:00 <a href="http://www.shnenglu.com/Onway/archive/2015/08/01/211446.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dispose模式http://www.shnenglu.com/Onway/archive/2015/07/29/211424.htmlOnwayOnwayWed, 29 Jul 2015 14:50:00 GMThttp://www.shnenglu.com/Onway/archive/2015/07/29/211424.htmlhttp://www.shnenglu.com/Onway/comments/211424.htmlhttp://www.shnenglu.com/Onway/archive/2015/07/29/211424.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/211424.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/211424.html1Q两个链接里面已l解析完Dispose模式?jin),其他的只是自q一些理解?/span>
2Q如果自定义cd装?jin)非托管资源Q或者引用了(jin)一个封装了(jin)非托资源的对象Ӟ比如引用?jin)SqlConnection对象Q,应该实现Dispose模式?/span>

3Q如果自定义cdl承的基c需要DisposeQ但该对象本wƈ没有需要Dispose的资源时Q比如只是附加了(jin)一些简单类型)(j)Q无需考虑Dispose模式?/span>

4Q如果基cdC(jin)DisposeQ则其派生类只需重写protectedU别的DisposeҎ(gu)Q释放本cd的用到的资源?/span>
publicU别的Dispose和FinalizeҎ(gu)都来自ѝ?/span>
重写的DisposeҎ(gu)Q记得最后调用基cd参的Dispose?/span>

5Q附加的CloseҎ(gu)都是直接调用public无参的DisposeҎ(gu)?/span>

6Q类型的析构函数?x)被~译器改为FinalizeҎ(gu)Q不要重载这个方法?/span>
基类的FinalizeҎ(gu)L?x)被自动调用的?/span>
FinalizeҎ(gu)都不应该引用M对象?/span>

7Q不懂这D话Q既然基cL有需要释攄资源Qؓ(f)何要实现Dispose模式Q而ؓ(f)?jin)性能考虑Q又不写析构函数Q?/span>
那我的派生类Q还要先看一下基c,再决定要不要写析构函敎ͼ
Implement the dispose design pattern on a base type that commonly has derived types that hold onto resources, even if the base type does not. If the base type has a Close method, often this indicates the need to implement Dispose. In such cases, do not implement a Finalize method on the base type. Finalize should be implemented in any derived types that introduce resources that require cleanup.

8Q对象在调用Dispose之后Q除?jin)Dispose以外Q都应该抛出ObjectDisposedException异常?/span>

9Q实C(jin)Finalize的对象,在第一ơ垃圑֛收的时候,不会(x)释放对象Q而只是调用其FinalizeҎ(gu)Q第二次回收才会(x)真正释放对象?/span>


Onway 2015-07-29 22:50 发表评论
]]>
变(sh)泛型http://www.shnenglu.com/Onway/archive/2015/07/29/211412.htmlOnwayOnwayWed, 29 Jul 2015 12:23:00 GMThttp://www.shnenglu.com/Onway/archive/2015/07/29/211412.htmlhttp://www.shnenglu.com/Onway/comments/211412.htmlhttp://www.shnenglu.com/Onway/archive/2015/07/29/211412.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/211412.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/211412.html因ؓ(f)某些原因Q一直用的都?NET2Q但渣也d有些q求是不Q说不定哪天q上了(jin)呢?

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplicationTest
{
    /*
     * 变(sh)泛型
     *
     * .NET4Q在泛型接口cd或者泛型委托类型里面,
     * 被关键字in声明的泛型参敎ͼ其类型可以从父类向子c逆变Q只能用作输入参?br />      * 被关键字out声明的泛型参敎ͼ其类型可以从子类向父cd变,只能用于q回?br />      * 整个泛型cd是不限于用作输入参数q是作ؓ(f)q回?br />      *
     * interface IType_IN_OUT<in T1, out T2>
     * IType_IN_OUT<Farmer, Person> farmerPersonType = null;
     * IType_IN_OUT<Person, Farmer> personfarmerType = null;
     * farmerPersonFinder = personFarmerFinder;
     *
     * Z么不支持“变(sh)”class呢?跟字D|关系么?
     
*/

    class Program
    {
        static void Main(string[] args)
        {
            IType_IN<Person> person_in = null;
            IType_IN<Farmer> farmer_in = null;
            farmer_in = person_in;
            Greeting(person_in);
            Console.WriteLine(GetTypeIn() == null);

            IType_OUT<Person> person_out = null;
            IType_OUT<Farmer> farmer_out = null;
            person_out = farmer_out;
            Greeting(farmer_out);
            Console.WriteLine(GetTypeOut() == null);

            Finder_IN<Person> personFinderIn = p => Console.WriteLine(p.GetType());
            Finder_IN<Farmer> farmerFinderIn = f => Console.WriteLine(f.GetType());
            farmerFinderIn = personFinderIn;
            Greeting(personFinderIn);
            Console.WriteLine(GetFarmerFinder().GetType());

            Finder_OUT<Person> personFinderOut = () => new Person();
            Finder_OUT<Farmer> farmerFinderOut = () => new Farmer();
            personFinderOut = farmerFinderOut;
            Greeting(personFinderOut);
            Console.WriteLine(GetPersonFinder().GetType());

            Finder_IN_OUT<Farmer, Person> farmerPersonFinder = f => new Person();
            Finder_IN_OUT<Person, Farmer> personFarmerFinder = p => new Farmer();
            farmerPersonFinder = personFarmerFinder;

            // interface IType_IN_OUT<in T1, out T2>
            IType_IN_OUT<Farmer, Person> farmerPersonType = null;
            IType_IN_OUT<Person, Farmer> personfarmerType = null;
            farmerPersonType = personfarmerType;

            Console.ReadKey();
        }

        static void Greeting(IType_OUT<Person> person)
        {
            Console.WriteLine(person == null);
        }

        static void Greeting(IType_IN<Farmer> farmer)
        {
            Console.WriteLine(farmer == null);
        }

        static IType_OUT<Person> GetTypeOut()
        {
            IType_OUT<Farmer> farmer = null;
            return farmer;
        }

        static IType_IN<Farmer> GetTypeIn()
        {
            IType_IN<Person> person_IN = null;
            return person_IN;
        }

        static void Greeting(Finder_OUT<Person> personFinder)
        {
            Console.WriteLine(personFinder().GetType());
        }

        static void Greeting(Finder_IN<Farmer> farmerFinder)
        {
            Console.WriteLine(farmerFinder.GetType());
        }

        static Finder_OUT<Person> GetPersonFinder()
        {
            Finder_OUT<Farmer> farmerFinder = () => new Farmer();
            return farmerFinder;
        }

        static Finder_IN<Farmer> GetFarmerFinder()
        {
            Finder_IN<Person> person = p => Console.WriteLine(p.GetType());
            return person;
        }
    }

    interface IType_OUT<out T>
    {
    }

    interface IType_IN<in T>
    {
    }

    interface IType_IN_OUT<in T1, out T2>
    {
    }

    delegate T Finder_OUT<out T>();

    delegate void Finder_IN<in T>(T t);

    delegate T2 Finder_IN_OUT<in T1, out T2>(T1 t1);

    class Person
    {
    }

    class Farmer : Person
    {
    }
}


Onway 2015-07-29 20:23 发表评论
]]>
IEEE 754二进制QҎ(gu)表示http://www.shnenglu.com/Onway/archive/2015/06/14/210923.htmlOnwayOnwaySun, 14 Jun 2015 09:41:00 GMThttp://www.shnenglu.com/Onway/archive/2015/06/14/210923.htmlhttp://www.shnenglu.com/Onway/comments/210923.htmlhttp://www.shnenglu.com/Onway/archive/2015/06/14/210923.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/210923.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/210923.html
1Q三个部?/strong>
4字节的单_ֺ点?2个位?个部分:(x)
1.1Q从左往右第一位是W号位,0?负;
1.2Q紧接的8个位是指数部分,不要U结是原码,反码q是补码Q只是一个不带符号位的二q制敎ͼ都一栗取值区间是[0,255]Q??55有特D含义;取值在[1,254]的情况下Q需要减?27才是真正的指数|q时指数取值是[-126,127]?/span>
1.3Q剩余的23位是数部分Q用于表CQҎ(gu)的小数部分;也是一个不带符号位的二q制数?/span>

2Q指数部?/strong>
2.1Q当指数部分?Q且数部分为全0的情况,q表CQҎ(gu)0Q加上符号位表示正负0?/span>
2.2Q当指数部分?Q且数部分不ؓ(f)0的情况,其实际指数是-126Q二q制表示的科学计数法的QҎ(gu)的整数部分按0解析?/span>
2.3Q当指数部分?55Q且数部分为全0的情况,表示一个无IhQ加上符号位表示正反无穷?/span>
2.4Q当指数部分?55Q且数部分不ؓ(f)0的情况,表示不是一个有效数字,NaN?/span>
2.5Q当指数部分取gؓ(f)[1,254]的情况,需要减?27才是实际指数|二进制表C的U学计数法的点数的整数部分?解析?/span>

3QQ点书的规UŞ式与非规UŞ?/strong>
3.1Q上q的W二U情늚点数称为非规约点敎ͼ上述的第五种情况的QҎ(gu)UCؓ(f)规约点数?/span>
3.2Q最的规约点数是指数部分?Q实际指数是-126Q,数部分为全0的时候,l对gؓ(f)1 * 2 ^ -126 Q?/span>
ơ小的规UQҎ(gu)是指数部分ؓ(f)1Q尾数部分最低位?其余位ؓ(f)0的时候,l对gؓ(f)1.000...1 * 2 ^ -126Q?/span>
它们之间的绝对差gؓ(f)(1.000...1 - 1) * 2 ^ -126 = 2 ^ -23 * 2 ^ -126 = 2 ^ -149Q?/span>
而最规U数?的绝对差值是1 * 2 ^ -126 = 2 ^ -126?/span>
在坐标u的表现是Q两个非0的规范QҎ(gu)的间隔很,而最规UQҎ(gu)?的间隔很大,差距?3倍?/span>
3.3Q引入非规约形式的QҎ(gu)Q可以?与最规UQҎ(gu)的间隔变得均匀hQƈ且间隔与两个盔R规约点数的间隔一致?/span>
两个非规UQҎ(gu)的间隔都?.000...1 * 2 ^ -126 = 2 ^ -149?/span>
3.4Q最大的非规U数?.111...111 * 2 ^ -126Q最的规约数是1.000..0 * 2 ^ -126Q?/span>
最大的非规UL于最的规约敎ͼ也可以认识近似相{?/span>

4QQҎ(gu)舍入
4.1Q四舍六入五成双?/span>
Math.Round()
4.2Q向0Q截断)(j)舍入
整型强制转换
4.3Q向负无I大
Math.Floor()
4.4Q向正无I大
Math.Ceiling()


Onway 2015-06-14 17:41 发表评论
]]>
《c专家~程》笔?/title><link>http://www.shnenglu.com/Onway/archive/2012/05/28/176479.html</link><dc:creator>Onway</dc:creator><author>Onway</author><pubDate>Mon, 28 May 2012 03:46:00 GMT</pubDate><guid>http://www.shnenglu.com/Onway/archive/2012/05/28/176479.html</guid><wfw:comment>http://www.shnenglu.com/Onway/comments/176479.html</wfw:comment><comments>http://www.shnenglu.com/Onway/archive/2012/05/28/176479.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Onway/comments/commentRss/176479.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Onway/services/trackbacks/176479.html</trackback:ping><description><![CDATA[     摘要: q个月里诸多不顺Q但q是一点一点翻完了(jin)q本书。自己做的笔记极会(x)看,做个纪念咯?nbsp; <a href='http://www.shnenglu.com/Onway/archive/2012/05/28/176479.html'>阅读全文</a><img src ="http://www.shnenglu.com/Onway/aggbug/176479.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Onway/" target="_blank">Onway</a> 2012-05-28 11:46 <a href="http://www.shnenglu.com/Onway/archive/2012/05/28/176479.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>unixpȝ的限Ӟ选项和功能测试宏http://www.shnenglu.com/Onway/archive/2012/03/26/169063.htmlOnwayOnwayMon, 26 Mar 2012 14:37:00 GMThttp://www.shnenglu.com/Onway/archive/2012/03/26/169063.htmlhttp://www.shnenglu.com/Onway/comments/169063.htmlhttp://www.shnenglu.com/Onway/archive/2012/03/26/169063.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/169063.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/169063.htmlQ仅限个人理解,强烈Ƣ迎指正Q)(j)
一Q理?br />1Q限制常量是Ҏ(gu)个常量进行数g的大规定。其值必定是一个数|~译旉刉常定义?lt;limits.h>头文件中?br />2Q选项帔R是用来决定对某项功能是否支持。其g是一个数|但通常?Q?1Q?或者一个表C年月的数值又或者未定义其倹{编译时选项通常定义?lt;unistd.h>头文件中?br />3Q功能测试宏用来在编译时控制一些头文g的版本。通常定义?lt;features.h>头文件中?br />
二,~译时常量的命名
1QPOSIX的编译时限制以_POSIX_前缀开_(d)XSI~译旉制以NL_或者_XOPEN_前缀开头。特定系l实现的~译旉制不带前~Q对应于POSIX限制L前缀Q其值应该比POSIX要大Q?br />2Q选项用以表明是否Ҏ(gu)个标准的某项功能的支持。其~译时常量通常是以_POSIX_或者_XOPEN_做前~。没有特定系l实现的~译旉项?br />3Q功能测试宏帔R只是以下划线_开_(d)然后没什么规则了(jin)。功能测试宏只在~译时用。详见man feature_test_macros?br />
三,q行时确定限制或选项的三个函?br />1Q如果某个限制或选项无法从编译时定Q那需要调用以下三个函C一QsysconfQpathconfQfpathconf。后两个函数是跟路径相关的?br />2Q三个函数都需要一个整型常量参敎ͼ该参数命名规则ؓ(f)~译时的帔R名去掉前~Q加上_SC_或者_PC_Q调用跟路径相关的两个函敎ͼ(j)前缀?br />3Q注意其q回|详见函数的man手册?br />
四,confstr函数和getconf命o(h)
1Qconfstr用于获取依赖于配|的字符串变量。其参数只有几个Q详见man手册?br />2Qgetconf命o(h)是用于查询系l配|变量,即编译时的限制和选项帔R的倹{该命o(h)都可以查询到confstr函数的字W串变量?br />
http://www.shnenglu.com/Onway/archive/2015/12/08/212438.html


Onway 2012-03-26 22:37 发表评论
]]>
GPG学习(fn)W记http://www.shnenglu.com/Onway/archive/2012/02/17/165847.htmlOnwayOnwayFri, 17 Feb 2012 07:48:00 GMThttp://www.shnenglu.com/Onway/archive/2012/02/17/165847.htmlhttp://www.shnenglu.com/Onway/comments/165847.htmlhttp://www.shnenglu.com/Onway/archive/2012/02/17/165847.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/165847.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/165847.html

Onway 2012-02-17 15:48 发表评论
]]>
gdb常用汇编命o(h)http://www.shnenglu.com/Onway/archive/2012/02/16/165739.htmlOnwayOnwayThu, 16 Feb 2012 06:41:00 GMThttp://www.shnenglu.com/Onway/archive/2012/02/16/165739.htmlhttp://www.shnenglu.com/Onway/comments/165739.htmlhttp://www.shnenglu.com/Onway/archive/2012/02/16/165739.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/165739.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/165739.html

Onway 2012-02-16 14:41 发表评论
]]>
g(jin)ubuntu后驻留在MBR的GRUBQ用win7安装盘没修复好,用个分区ȝ重徏?jin)mbr好?jin)?/title><link>http://www.shnenglu.com/Onway/archive/2012/02/15/165691.html</link><dc:creator>Onway</dc:creator><author>Onway</author><pubDate>Wed, 15 Feb 2012 12:16:00 GMT</pubDate><guid>http://www.shnenglu.com/Onway/archive/2012/02/15/165691.html</guid><wfw:comment>http://www.shnenglu.com/Onway/comments/165691.html</wfw:comment><comments>http://www.shnenglu.com/Onway/archive/2012/02/15/165691.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Onway/comments/commentRss/165691.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Onway/services/trackbacks/165691.html</trackback:ping><description><![CDATA[如题<img src ="http://www.shnenglu.com/Onway/aggbug/165691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Onway/" target="_blank">Onway</a> 2012-02-15 20:16 <a href="http://www.shnenglu.com/Onway/archive/2012/02/15/165691.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>局域网ubuntu使用ftp数据传输http://www.shnenglu.com/Onway/archive/2012/01/26/164547.htmlOnwayOnwayThu, 26 Jan 2012 09:20:00 GMThttp://www.shnenglu.com/Onway/archive/2012/01/26/164547.htmlhttp://www.shnenglu.com/Onway/comments/164547.htmlhttp://www.shnenglu.com/Onway/archive/2012/01/26/164547.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/164547.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/164547.html
ubuntu 11.04安装f(xi)tp服务?/span>
sudo apt-get install vsftpd

默认d需要帐号密码,其根目录是用h目录
客户端命令:(x)
dQ?/span>
ftp [-46pinegvd] [host[port]]
文g下蝲Q?/span>
get remote-file [local-file]
ftp命o(h)行不支持目录下蝲
通过wget得到解决
#wget ftp://IP:PORT/* --ftp-user=xxx --ftp-password=xxx -r
详见Qman ftp


或者直接浏览器下蝲


Onway 2012-01-26 17:20 发表评论
]]>
ubuntu one的同步问?/title><link>http://www.shnenglu.com/Onway/archive/2012/01/20/164402.html</link><dc:creator>Onway</dc:creator><author>Onway</author><pubDate>Fri, 20 Jan 2012 03:56:00 GMT</pubDate><guid>http://www.shnenglu.com/Onway/archive/2012/01/20/164402.html</guid><wfw:comment>http://www.shnenglu.com/Onway/comments/164402.html</wfw:comment><comments>http://www.shnenglu.com/Onway/archive/2012/01/20/164402.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Onway/comments/commentRss/164402.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Onway/services/trackbacks/164402.html</trackback:ping><description><![CDATA[<div><div><span style="font-size: 14pt; ">重装pȝ后或者在另外的机器进行数据同步的时候,都要先在ubuntu one的客L(fng)先登录上帐号Q然后在讑֤选项里删掉原来的讑֤名(hostnameQ,最后在云文件夹里选择需要同步的文gQ文件夹Q?/span></div><div><span style="font-size: 14pt; ">其实我的问题是:(x)我先原来云同步的本地数据拷贝到?jin)另外一个新机器Q然后我在ubuntu one的客L(fng)删掉?jin)旧机器讑֤Q用新机器q行云同步。问题是数据需要下载还是上传进行同步呢Q或者都不需要?Q其实如果文件名和内定w相同的话没必要上传下蝲?jin),?gu)一个类似md5的校验码可以了(jin)Q。另外,云空间的数据的三个时_(d)atime,ctime,mtimeQ都比新机器盘里的数据要旧?/span></div></div><div></div><img src ="http://www.shnenglu.com/Onway/aggbug/164402.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Onway/" target="_blank">Onway</a> 2012-01-20 11:56 <a href="http://www.shnenglu.com/Onway/archive/2012/01/20/164402.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>两ubuntu通过局域网q行数据传输http://www.shnenglu.com/Onway/archive/2012/01/20/164401.htmlOnwayOnwayFri, 20 Jan 2012 03:53:00 GMThttp://www.shnenglu.com/Onway/archive/2012/01/20/164401.htmlhttp://www.shnenglu.com/Onway/comments/164401.htmlhttp://www.shnenglu.com/Onway/archive/2012/01/20/164401.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/164401.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/164401.html
使用的是sshd查看要进行传输的数据Q然后用Zssh的scp命o(h)q行Q速度?1m多点每秒Q其实如果用不加密的ftp应该?x)更快,但对q些|络应用都非常的不熟(zhn)?/span>
安装好ssh的服务器后(忘记?jin)怎么安装的,|上教程很多Q或者直接ubuntu软g中心(j)都可以吧Q?/span>
然后客户端的d命o(h)是:(x)ssh username@hostname
文g从服务器拯回本圎ͼ(x)scp username@host:filepath local-filepath
其实应该有很多这斚w的图像工P但这两个命o(h)已经够本ơ的需要了(jin)Q具体学?fn)留待以后吧。加?r参数或者通配W就可以文件夹或者里面的所有文件拷贝过来了(jin)?/span>


Onway 2012-01-20 11:53 发表评论
]]>
安装win7无法识别的分区,不能安装到指定的分区http://www.shnenglu.com/Onway/archive/2012/01/20/164400.htmlOnwayOnwayFri, 20 Jan 2012 03:51:00 GMThttp://www.shnenglu.com/Onway/archive/2012/01/20/164400.htmlhttp://www.shnenglu.com/Onway/comments/164400.htmlhttp://www.shnenglu.com/Onway/archive/2012/01/20/164400.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/164400.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/164400.html
因ؓ(f)安装ubuntu的时候重Z(jin)分区表,在打安装win7的分区将其删除了(jin)Q变?sh)空闌Ӏ?/span>
在指定win7的安装分区的时候同h无法识别分区格式?/span>
然后脑残(hu)又进入ubuntu其格式化ؓ(f)NTFSQ同栯是无法识别(windows怎么p么娇气呢Q!Q?/span>
其实在指定win7安装分区的时候,不能识别的格式的分区Q只要将其删除,然后创徏Q再格式化就可以?jin)?/span>


Onway 2012-01-20 11:51 发表评论
]]>
lenovo B460安装ubuntuhttp://www.shnenglu.com/Onway/archive/2012/01/20/164398.htmlOnwayOnwayFri, 20 Jan 2012 03:44:00 GMThttp://www.shnenglu.com/Onway/archive/2012/01/20/164398.htmlhttp://www.shnenglu.com/Onway/comments/164398.htmlhttp://www.shnenglu.com/Onway/archive/2012/01/20/164398.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/164398.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/164398.html
׃联想W记本带有一个隐藏的分区Q安装ubuntu的时候说有一个几千字节的偏移Q无法l?/span>
只能重新建立?jin)分。这不是GCQGC的是刚装上驱动的win7ph有了(jin)?/span>


Onway 2012-01-20 11:44 发表评论
]]>
ubuntu 11.04更新软g?/title><link>http://www.shnenglu.com/Onway/archive/2012/01/20/164397.html</link><dc:creator>Onway</dc:creator><author>Onway</author><pubDate>Fri, 20 Jan 2012 03:40:00 GMT</pubDate><guid>http://www.shnenglu.com/Onway/archive/2012/01/20/164397.html</guid><wfw:comment>http://www.shnenglu.com/Onway/comments/164397.html</wfw:comment><comments>http://www.shnenglu.com/Onway/archive/2012/01/20/164397.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/Onway/comments/commentRss/164397.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Onway/services/trackbacks/164397.html</trackback:ping><description><![CDATA[<div><div><span style="font-size: 14pt; ">其实q东西进行过好几ơ了(jin)Q但是每ơ都得上|查查命令,三两条的命o(h)都记不住?/span></div><div><span style="font-size: 14pt; ">学校用的是网通,用自带的源速度非常不错Q回到家里用?sh)信q不给力了(jin)Q然后换?jin)网易的源,速度非常可以?/span></div><div><br /></div><div><span style="font-size: 14pt; ">先备份一?etc/apt/sources.listQ然后用以下内容替换掉整个文Ӟ#开始行是注释?/span></div><div><span style="font-size: 14pt; ">deb http://mirrors.163.com/ubuntu/ oneiric main universe restricted multiverse</span></div><div><span style="font-size: 14pt; ">deb-src http://mirrors.163.com/ubuntu/ oneiric main universe restricted multiverse</span></div><div><span style="font-size: 14pt; ">deb http://mirrors.163.com/ubuntu/ oneiric-security universe main multiverse restricted</span></div><div><span style="font-size: 14pt; ">deb-src http://mirrors.163.com/ubuntu/ oneiric-security universe main multiverse restricted</span></div><div><span style="font-size: 14pt; ">deb http://mirrors.163.com/ubuntu/ oneiric-updates universe main multiverse restricted</span></div><div><span style="font-size: 14pt; ">deb http://mirrors.163.com/ubuntu/ oneiric-proposed universe main multiverse restricted</span></div><div><span style="font-size: 14pt; ">deb-src http://mirrors.163.com/ubuntu/ oneiric-proposed universe main multiverse restricted</span></div><div><span style="font-size: 14pt; ">deb http://mirrors.163.com/ubuntu/ oneiric-backports universe main multiverse restricted</span></div><div><span style="font-size: 14pt; ">deb-src http://mirrors.163.com/ubuntu/ oneiric-backports universe main multiverse restricted</span></div><div><span style="font-size: 14pt; ">deb-src http://mirrors.163.com/ubuntu/ oneiric-updates universe main multiverse restricted</span></div><div><span style="font-size: 14pt; ">保存后执行一下sudo apt-get update可以了(jin)?/span></div></div><div></div><img src ="http://www.shnenglu.com/Onway/aggbug/164397.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Onway/" target="_blank">Onway</a> 2012-01-20 11:40 <a href="http://www.shnenglu.com/Onway/archive/2012/01/20/164397.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu 11.04重装grubhttp://www.shnenglu.com/Onway/archive/2012/01/20/164396.htmlOnwayOnwayFri, 20 Jan 2012 03:38:00 GMThttp://www.shnenglu.com/Onway/archive/2012/01/20/164396.htmlhttp://www.shnenglu.com/Onway/comments/164396.htmlhttp://www.shnenglu.com/Onway/archive/2012/01/20/164396.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/164396.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/164396.html
改自Qhttp://blog.163.com/peng_peng1028/blog/static/107463820118754931710/

q入ubuntu光盘Q?1.04的livecd模式Q?/span>
3打开l端
// 列出所有磁盘, 看清要把grub2修复在那个磁盘里?/span>
sudo fdisk -l
//挂蝲根目录的分区
sudo mount /dev/sda1 /mnt
//q步只给?/boot 另外挂蝲C根目录不同分区的同学
sudo mount /dev/sda2 /mnt/boot
//挂蝲其他分区或设?Q不能漏掉,很重要)(j)
sudo mount –bind /dev /mnt/dev
//另外的教E还有一步是Qsudo mount --bind /proc /mnt/proc
//不知道是否有必要q行q一步,反正是加上了(jin)q步是可以的?/span>
//改变根目?q里不详l解释chroot的含义,讲v来有点玄Q用h׃炚w不玄Q很Ҏ(gu)理解?/span>
sudo chroot /mnt
//以下q一步我是重启后q入?jin)ubuntu后再执行?/span>
//q行update-grub更新配置文gQ其实就是重?boot/grub/grub.cfgQ?/span>
update-grub
//执行sudo chroo /mnt后直接来C面这一步,
//另外教程说可以安装道ubuntu所在分区,但是我试q不行,只能装到MBR
//我的情况是,重装或新装(都试q)(j)win7后MBR被修改了(jin)Q无法引D入ubuntu?/span>
//安装GRUB2到指定硬盘的MBR
grub-install /dev/sda
//然后原文是退出root用户和umount的,不过Q我们态度强硬一点,直接重启
4q入ubuntu 后sudo update-grub
XP在引导里了(jin)Q?/span>
5讄默认xp启动
cd /boot/grub/
sudo gedit grub.cfg

?#8220;set default=4“
U字部分即ؓ(f)你默认OS的启动是的顺?1Q比如说我开机是winXP默认在第五行Q就红色部分改?卛_?/span>
set timeout=2加快开机速度


Onway 2012-01-20 11:38 发表评论
]]>
APUEW十六章到第二十一?W记http://www.shnenglu.com/Onway/archive/2012/01/13/164103.htmlOnwayOnwayFri, 13 Jan 2012 01:44:00 GMThttp://www.shnenglu.com/Onway/archive/2012/01/13/164103.htmlhttp://www.shnenglu.com/Onway/comments/164103.htmlhttp://www.shnenglu.com/Onway/archive/2012/01/13/164103.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/164103.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/164103.html阅读全文

Onway 2012-01-13 09:44 发表评论
]]>
王爽《汇~语a》(W二版)(j) W记http://www.shnenglu.com/Onway/archive/2011/12/31/163271.htmlOnwayOnwaySat, 31 Dec 2011 08:03:00 GMThttp://www.shnenglu.com/Onway/archive/2011/12/31/163271.htmlhttp://www.shnenglu.com/Onway/comments/163271.htmlhttp://www.shnenglu.com/Onway/archive/2011/12/31/163271.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/163271.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/163271.html阅读全文

Onway 2011-12-31 16:03 发表评论
]]>
APUEW十五章q程间通讯 W记http://www.shnenglu.com/Onway/archive/2011/12/31/163269.htmlOnwayOnwaySat, 31 Dec 2011 07:55:00 GMThttp://www.shnenglu.com/Onway/archive/2011/12/31/163269.htmlhttp://www.shnenglu.com/Onway/comments/163269.htmlhttp://www.shnenglu.com/Onway/archive/2011/12/31/163269.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/163269.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/163269.html
2011-12-21 W十五章 q程间通讯
W一?引言
1Q过去,UNIXpȝIPC是各U进E通讯方式的统U?/span>
2Q套接字和STREAMS是仅有的两种支持不同L上各个进E间IPC的类型?/span>

W二?道
1Q管道用例E:(x)
int main()
{
int n,fd[2];
pid_t pid;
char line[MAXLINE];

if(pipe(fd) < 0)
err_sys("pipe error");
if(pid = fork() < 0)
err_sys("fock error");
else if(pid > 0){
close(fd[0]);
write(fd[1],"hello world\n",12);
} else {
close(fd[1]);
n = read(fd[0],line,MAXLINE);
write(STDOUT_FILENO,line,n);
}
exit(0);
}

W三?popen和pclose函数
1Q这两个函数实现的操作是Q创Z个管道,调用fork产生一个子q程Q关闭管道的不用端Q执行一个shell以运行命令,然后{待命o(h)l止?/span>

W四?协同q程
1Q当一个程序生某个过滤程序的输入Q同时又d该过滤程序的输出Ӟ则该qo(h)E序成为协同进E?/span>
2Q注意协同进E的IO~冲方式Q以避免死锁的生?/span>

W五?FIFO
1QFIFO有时被称为命名管道。FIFO是一U文件类型?/span>
2QFIFO有下面两U用途:(x)
aQFIFO由shell命o(h)使用以便数据从一条管道线传送到另一条,为此无需创徏中间临时文g?/span>
bQFIFO用于客户q程-服务器进E应用程序中Q以在客戯E和服务器进E之间传递数据?/span>
3Q管道只能用于进E间的线性连接,然而,因ؓ(f)FIFOh名字Q它可以用于非线性连接?/span>

W六?XSI IPC
1Q有三种IPC我们UCؓ(f)XSI IPCQ即消息队列Q信号量以及(qing)׃n存储器?/span>
2Q以参数key和flag创徏IPCl构Q返回其标识W,以其引用该IPCl构?/span>
3QIPC_PRIVATE是键QIPC_CREATE和IPC_EXCL是flag的位标志?/span>
4QXSI IPC为每一个IPCl构讄?jin)一个ipc_perml构。该l构规定?jin)权限和所有者?/span>
5QXSI IPC的主要问题是Q?/span>
aQIPCl构是在pȝ范围内v作用的,没有讉K计数?/span>
bQ这些IPCl构在文件系l中没有名字。ؓ(f)?jin)支持它们,不得不增加?jin)十几条新的系l调用和一些新的命令?/span>
cQIPCl构不用文件描q符Q不能对它们使用多\转接IO函数?/span>

W七?消息队列
1Qmegget用于创徏一个新的消息队列或打开一个现存的队列?/span>
2Qmsgsnd数据放到消息队列中?/span>
3Qmsgrcv从消息队列中取用函数?/span>
4QmsgctlҎ(gu)息队列指定执行多U操作?/span>
5Q在新的应用E序中不应当再用消息队列?/span>

W八?信号?/span>
1Q信号量是一个计数器Q用于安排多个进E对׃n数据对象的访问?/span>
2Q一个信号量控制一个共享资源的使用情况?/span>
3Q用信号量要先创徏一个信号量集,调用函数semget?/span>
4Qsemctl函数包含?jin)多U信号量的操作?/span>
5Q函数semop自动原子性地执行信号量集合上的操作数l?/span>
6Q虽然记录锁慢于信号量,但如果只需锁一个资源ƈ且不需要用XSI信号量的所有花销功能Q则宁可使用记录锁。理由是使用易,且进E终止时pȝ?x)处理Q何遗留下来的锁?/span>

W九(ji)?׃n存储
1Q共享存储允怸个或更多q程׃n一l定的存储区。因为数据不需要在客户q程和服务器之间复制Q所以这是最快的一UIPC?/span>
2Q用共享存储时需要掌握的唯一H门是多个进E之间对一l定存储区的同步讉K?/span>
3Q通常Q信号量被用来实现对׃n存储讉K的同步。(记录锁也可以Q?/span>
4Q调用shmget获得一个共享存储标识符?/span>
5Qshmctl对共享存储段执行多种操作?/span>
6Q共享存储段创徏之后可以用shmatq接它的地址I间?/span>
7Q当对共享存储段的操作已l结束的时候,调用shmdt脱接该段?/span>
8Q用存储映?dev/zero的优Ҏ(gu)Q在调用mmap创徏映射Z前,无需存在一个实际文件。其~点是:(x)只能在相兌E间起作用。另外,Ҏ(gu)/dev/zero的更好选择Q还可用匿名存储映?/span>

W十?客户q程-服务器进E属?/span>
1Q客戯E和服务器进E的某些属性会(x)受到它们之间所使用的IPCcd的媄(jing)响?/span>

psQ?011q的最后一天算是第一ơ结束了(jin)q一章了(jin)。仅限勉强有个概늚E度?/span>


Onway 2011-12-31 15:55 发表评论
]]>
APUEW十四章高I/O W记http://www.shnenglu.com/Onway/archive/2011/12/27/162890.htmlOnwayOnwayTue, 27 Dec 2011 02:17:00 GMThttp://www.shnenglu.com/Onway/archive/2011/12/27/162890.htmlhttp://www.shnenglu.com/Onway/comments/162890.htmlhttp://www.shnenglu.com/Onway/archive/2011/12/27/162890.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/162890.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/162890.html
2011-12-19 W十四章 高I/O
W一?引言
1Q高UI/O包括Q?/div>
非阻塞I/O
记录?/div>
pȝV机?/div>
I/O多\转接
readv和writev函数
存储映像I/OQmmapQ?/div>

W二?非阻塞I/O
1Q低速系l调用是可能?x)ɘq程永远d的一cȝl调用?/div>
2Q虽然读写磁盘文件会(x)使调用者在短暂旉内阻塞,但ƈ不能与盘I(y)/O有关的系l调用视?#8220;低?#8221;?/div>
3Q对于一个给定的描述W有两种Ҏ(gu)对其指定非阻塞I/OQ?/div>
aQ如果调用open获得描述W,则可指定O_NONBLOCK标志
bQ对于已l打开的一个描q符Q则可调用fcntlQ由该函数打开O_NONBLOCK文g状态标志?/div>
4QPOSIX.1要求Q对于一个非d的描q符如果无数据可读,则readq回-1Qƈ且errno被设|ؓ(f)EAGAIN?/div>
5Q文件状态标志的更改影响同一文g表项的所有用P但与通过其他文g表项对同一讑֤的访问无兟?/div>

W三?记录?/div>
1Q记录锁的功能是Q当一个进E正在读或修Ҏ(gu)件的某个部分Ӟ它可以阻止其他进E修改同一文g区?/div>
2,fcntl记录锁的基本规则是:(x)多个q程在一个给定的字节上可以有一把共享的读锁Q但是在一个给定的字节上只能有一个进E独用一把写锁。进一步而言Q如果在一个给定的字节上已l有一把或多把读锁Q则不能在该字节上再加写锁;如果一个字节上已经有一把独占性的写锁Q则不能对它再加M的读锁?/div>
3Q上面说明的兼容性规则适用于不同进E提出的锁请求,q不使用于单个进E提出的多个锁请求?/div>
4,记录锁的自动l承和释放有三条规则Q?/div>
aQ当一个进E终止时Q它锁徏立的锁全部释放;M时候关闭一个描q符Ӟ该进E通过q一描述可以引用的文件上的Q何一把锁都被释放?/div>
bQ由fork产生的子q程不承父q程锁设|的锁?/div>
cQ在执行exec后,新程序可以承原执行E序的锁?/div>
5Q在接近文g加锁或解锁时需要特别小?j)?/div>
6Q徏议性锁寚w合作q程是不起作用的?/div>
7Qlinux中,使用强制性锁需要在文gpȝ挂蝲的时候mount命o(h)加上_omand选项以打开该机制?/div>
8Q对于一个特定文件打开其设|组ID位,q关闭其l执行位Q则对该文g开始了(jin)强制性锁机制?/div>

W四?STREAMSQ看不懂啊!Q?/div>
1,STREAMS是系lV提供的构造内核设备驱动程序和|络协议包的一U通用Ҏ(gu)?/div>
2Q流在用戯E和讑֤驱动E序之间提供?jin)一条全双工通\。流无需和实际硬件设备直接会(x)话,也可以用来构造伪讑֤驱动E序?/div>
3Q在Linux中,STREAMS子系l是可用的,但是用户必须自行该子系l安装到pȝ中,通常它默认ؓ(f)不包括在pȝ中?/div>

W五?I/O多\转接
1QI/O多\转接Q先构造一张有x(chng)q符的列表,然后调用一个函敎ͼ直到q些描述W中的一个已准备好进行I/O操作Ӟ该函数才q回。在q回Ӟ它告诉进E哪些进E已l好可以q行I/O。这些函数即select和pselect函数?/div>
2Qpoll函数cM于selectQ但是其E序员接口则有所不同?/div>
3Q虽然poll函数可用于Q何类型的文g描述W,但它h于系lVQ所以poll与STREAMSpȝ紧紧相关?/div>
4Qpoll和select函数在被信号中断后都不会(x)被重启动Q即使启用了(jin)SA_RESTART函数?/div>

W六?异步I/O
1Qselect和poll对Q意描q符都能工作?/div>
2Q在pȝVz的系l中Q异步I/O只对STREAMS讑֤和STREAMS道起作用。在BSDz的系l中Q异步I/O只对l端和网lv作用?/div>

W七?readv和writev函数
1Qreadv和writev函数用于在一ơ函数调用中d多个非连l缓冲区?/div>

W八?readn和writen函数
1Qreadn和writen函数qM标准的组成部分?/div>
2Q注意readQwrite函数q回值小于要求值的情况?/div>

W九(ji)?存储映射I/O
1Q存储映I/O使一个磁盘文件与存储I间中的一个缓冲区相映?/div>
2Q将一个普通文件复制到另一个普通文件中Ӟ存储映射I/O比较快。但是有一些限Ӟ例如Q不能用其在某些讑֤Q如|络讑֤或终端设备)(j)之间q行复制Qƈ且在对被复制的文件进行映后Q也要注意该文g的长度是否改变?/div>

W十?结


PSQ这章在STREAMS一节纠l了(jin)好久q是没看懂,其他的也只是基本看了(jin)个概c(din)期间也跛_W十五章看了(jin)一下前几节?/div>


Onway 2011-12-27 10:17 发表评论
]]>APUEW十三章 守护q程 W记http://www.shnenglu.com/Onway/archive/2011/12/18/162333.htmlOnwayOnwaySun, 18 Dec 2011 04:28:00 GMThttp://www.shnenglu.com/Onway/archive/2011/12/18/162333.htmlhttp://www.shnenglu.com/Onway/comments/162333.htmlhttp://www.shnenglu.com/Onway/archive/2011/12/18/162333.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/162333.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/162333.html
2011-12-17 W十三章 守护q程
W一?引言
1Q守护进E通常没有控制l端?/div>

W二?守护q程的特?/div>
1Q所有用户层守护q程都是q程l的l长q程以及(qing)?x)话的首q程Q而且是这些进E组和会(x)话中的唯一q程?/div>
2Q大多数守护q程的父q程是initq程?/div>

W三?~程规则
1Q六个进E规则一个普通进E被正确初始化成一个守护进E?/div>

W四?出错记录
1Q对于守护进E,需要一个集中的守护q程出错记录设施?/div>
2Q该设施的接口是syslog函数?/div>

W五?单实例守护进E?/div>
1Qؓ(f)?jin)正常运作,某些守护q程实现为单实例的,也就是在M时刻只运行该守护q程的一个副本?/div>
2Q文仉和记录锁机制是一U方法的基础Q该Ҏ(gu)用来保证一个守护进E只有一个副本在q行?/div>

W六?守护q程惯例
1Q如果守护进E用锁文gQ那么该文g通常存放?var/run目录中?/div>
2Q若守护q程支持配置选项Q那么配|文仉常存放?etc目录中?/div>
3Q守护进E可用命令行启动Q但通常它们是由pȝ初始化脚本之一启动的。如果在守护q程l止Ӟ应当自动重新启动它,则可?etc/inittab中ؓ(f)该守护进E包括_respawn记录V?/div>
4Qؓ(f)?jin)避免守护进E可能需要停止来重新d配置文gQ可使守护进E捕捉SIGHUP信号?/div>

W七?客户q程-服务q程模型
1Q守护进E常常用作服务器q程?/div>

W八?结


Onway 2011-12-18 12:28 发表评论
]]>APUEW十一十二?U程?qing)其控?W记 http://www.shnenglu.com/Onway/archive/2011/12/16/162222.htmlOnwayOnwayFri, 16 Dec 2011 04:41:00 GMThttp://www.shnenglu.com/Onway/archive/2011/12/16/162222.htmlhttp://www.shnenglu.com/Onway/comments/162222.htmlhttp://www.shnenglu.com/Onway/archive/2011/12/16/162222.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/162222.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/162222.html1Q线E的可取消状态和可取消类型这两个属性媄(jing)响着U程在响应pthread_cancel函数调用旉呈现的行为?
2Q可取消cd分ؓ(f)异步取消和gq取消,使用异步取消ӞU程可以在Q意时d消,而不是非得遇到取消点才能被取消?
3Q当U程处于延迟取消cd的情况下Q可以调用pthread_setcancelstate修改它的可取消状态?
4Q取消点是线E检查是否被取消q按照取消请求进行动作的一个位|?
5Q当可取消状态设|ؓ(f)PTHREAD_CANCEL_DISABLEӞ对pthread_cancel的调用不?x)杀死进E,相反Q取消请求对q个U程来说处于未决状态?
6Q可以调用pthread_testcancel函数在程序中自己d取消炏V?
  阅读全文

Onway 2011-12-16 12:41 发表评论
]]>
个h整理Q字W编?/title><link>http://www.shnenglu.com/Onway/archive/2011/12/04/161420.html</link><dc:creator>Onway</dc:creator><author>Onway</author><pubDate>Sun, 04 Dec 2011 06:39:00 GMT</pubDate><guid>http://www.shnenglu.com/Onway/archive/2011/12/04/161420.html</guid><wfw:comment>http://www.shnenglu.com/Onway/comments/161420.html</wfw:comment><comments>http://www.shnenglu.com/Onway/archive/2011/12/04/161420.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/Onway/comments/commentRss/161420.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Onway/services/trackbacks/161420.html</trackback:ping><description><![CDATA[     摘要: W十?内容转蝲引用自:(x) <br>字符集:(x) http://baike.baidu.com/view/51987.htm <br>字符~码Qhttp://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html <br>ASCIIQ?http://baike.baidu.com/view/15482.htm <br>EASCIIQhttp://zh.wikipedia.org/wiki/EASCII <br> http://zh.wikipedia.org/wiki/ISO/IEC_8859 <br>GBxxxxpdQBIG5Q?<br> http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html <br>UCS&UNICODEQhttp://zh.wikipedia.org/wiki/通用字符?<br> http://zh.wikipedia.org/wiki/Unicode <br>UTF-xpdQhttp://zh.wikipedia.org/wiki/UTF-8  <a href='http://www.shnenglu.com/Onway/archive/2011/12/04/161420.html'>阅读全文</a><img src ="http://www.shnenglu.com/Onway/aggbug/161420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Onway/" target="_blank">Onway</a> 2011-12-04 14:39 <a href="http://www.shnenglu.com/Onway/archive/2011/12/04/161420.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《C++ Primer 中文版》笔?/title><link>http://www.shnenglu.com/Onway/archive/2011/12/04/161418.html</link><dc:creator>Onway</dc:creator><author>Onway</author><pubDate>Sun, 04 Dec 2011 06:12:00 GMT</pubDate><guid>http://www.shnenglu.com/Onway/archive/2011/12/04/161418.html</guid><wfw:comment>http://www.shnenglu.com/Onway/comments/161418.html</wfw:comment><comments>http://www.shnenglu.com/Onway/archive/2011/12/04/161418.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Onway/comments/commentRss/161418.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Onway/services/trackbacks/161418.html</trackback:ping><description><![CDATA[     摘要: 做这些笔记的时候是一q前多了(jin)。当时还在做着ACMQ学q些g只是q充实自己的心(j)态,当时最想的g是看完整本书,但最l还是在面向对象的部分停下来?jin)。现在很多东襉K忘(sh)(jin)Q毕竟这样学而没有实际用,肯定很容易忘的。可能当时也是出C(jin)q么个想法而停下来的吧Q至应该是其中一个原因。这份笔C乎在盘里丢p一ơ,最后在金山快盘里找回来的?011-12-4  <a href='http://www.shnenglu.com/Onway/archive/2011/12/04/161418.html'>阅读全文</a><img src ="http://www.shnenglu.com/Onway/aggbug/161418.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Onway/" target="_blank">Onway</a> 2011-12-04 14:12 <a href="http://www.shnenglu.com/Onway/archive/2011/12/04/161418.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>APUEW十?信号 W记http://www.shnenglu.com/Onway/archive/2011/12/04/161417.htmlOnwayOnwaySun, 04 Dec 2011 05:48:00 GMThttp://www.shnenglu.com/Onway/archive/2011/12/04/161417.htmlhttp://www.shnenglu.com/Onway/comments/161417.htmlhttp://www.shnenglu.com/Onway/archive/2011/12/04/161417.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/161417.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/161417.html1Qsignal在linux的声?
typedef void (*__sighandler_t) (int);
extern __sighandler_t signal (int __sig, __sighandler_t __handler)
__THROW;
2QSIG_ERRQSIG_DFL和SIG_IGN的定?
#define SIG_ERR ((__sighandler_t) -1) /* Error return. */
#define SIG_DFL ((__sighandler_t) 0) /* Default action. */
#define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */

怀疑书上有错:(x)
”如果查看系l的头文?signal.h>Q则很可能会(x)扑ֈ下列形式的声明:(x)
#define SIG_ERR (void (*)())-1
#define SIG_DFL (vo  阅读全文

Onway 2011-12-04 13:48 发表评论
]]>
VirtualBoxW记http://www.shnenglu.com/Onway/archive/2011/11/22/160715.htmlOnwayOnwayTue, 22 Nov 2011 07:58:00 GMThttp://www.shnenglu.com/Onway/archive/2011/11/22/160715.htmlhttp://www.shnenglu.com/Onway/comments/160715.htmlhttp://www.shnenglu.com/Onway/archive/2011/11/22/160715.html#Feedback0http://www.shnenglu.com/Onway/comments/commentRss/160715.htmlhttp://www.shnenglu.com/Onway/services/trackbacks/160715.html一Q用数据空_(d)(x)
环境Q?/span>
宿主机:(x)ubuntu
步骤Q?/span>
1Q进入虚拟机pȝQ将虚拟机开机)(j)Q选择Q设?>安装增强功能
Q最好先在网上下载一个VBoxGuestAdditions.iso的增强功能文Ӟ攑ֈ宿主机的/usr/share/virtualbox目录下)(j)
2Q安装完后就虚拟机x(chng)?jin),选择Q控?>讄->数据I间Q弹出的界面右侧有一个带加号的文件夹图标Q鼠标移动过L提示Q添加数据空间?/span>
3Q弹出的“d数据I间”界面里,数据I间位置选择一个在宿主Z的文件夹Q数据空间名U随便,例如sharedata。选上底下的auto-mount,是否只读Q你喜欢?/span>
4Q确定后开机就行了(jin)?/span>
数据I间在虚拟机的位|是/media/sf_数据I间名称Q如果是XP的虚拟机Q则可以看到一个额外的盘符?/span>
5Q注意在虚拟机(linuxQ中虚拟I间文gҎ(gu)所有者是root,所属组是vboxsfQ这意味着一般用h不能讉K的,你的̎h加到其所属组吧?/span>
具体参见用户手册QGuest Additions->Shared folders章节?/span>


二,修正虚拟机的屏幕大小Q?/span>
XP直接调整分L?/span>
ubuntuq没试成?/span>


三,导入导出虚拟?sh)脑Q?/span>
按照向导操作卛_。问题是Q虚拟电(sh)脑上的驱动会(x)不会(x)因ؓ(f)两台宿主机硬件的不同而出问题。应该不?x)吧Q硬仉是虚拟出来的?/span>
因ؓ(f)导入的XPq不?jin)系l,L自动重启Q导入的ubuntu屏幕大小太大Q原虚拟机是?9寸的台式?sh)脑Q导入到14寸的W记本)(j)Q以为驱动出?jin)问题?/span>
后来重装XP才发玎ͼ装完后蓝屏(原来导入的XP可能也是q个问题而进不了(jin)pȝQ,按照|上教程搞好后,q是要自行调整分辨率?/span>
所以觉得导入导?gu)拟?sh)脑,应该不用担心(j)驱动问题?/span>



四,宿主机和虚拟机通信q且虚拟够上|?/span>
宿主机:(x)ubuntu 11.10 使用adsl拨号上网
虚拟机:(x)centos 6.0

1Q宿L使用ifconfig可以查看到有三个|络接口Qeth0,lo,ppp0Q其中eth0是没有地址的?/span>
2Q宿L~辑/etc/network/interfacesQ修?/span>
auto eth0
iface eth0 inet static
address 192.168.1.1
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
然后重启|络Q?/span>
sudo /etc/init.d/networking restart
3Qvirtualbox在虚拟机中虚拟两个网卡,一个用NATQ一个用Bridged Adapter
4Q虚拟机中编?etc/sysconfig/eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROT=dhcp
NAME=net    //不知道这个是做什么的
HWADDR=        //必须的,对照virtualbox中用NAT方式的网卡MAC地址
5Q虚拟机中编?etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROT=static
IPADDR=192.168.1.2
NETMASK=255.255.255.0
NAME=bridge
TYPE=Ethernet
HWADDR=        //必须的,对照virtualbox中用bridged adapter的网卡mac地址
6Q添加网l管理服务:(x)
chkconfig NetworkManager on    
chkconfig network on
service network restart        //重启|络


Onway 2011-11-22 15:58 发表评论
]]>linux下C语言的httph和信h册简单例?/title><link>http://www.shnenglu.com/Onway/archive/2011/11/22/160700.html</link><dc:creator>Onway</dc:creator><author>Onway</author><pubDate>Tue, 22 Nov 2011 03:55:00 GMT</pubDate><guid>http://www.shnenglu.com/Onway/archive/2011/11/22/160700.html</guid><wfw:comment>http://www.shnenglu.com/Onway/comments/160700.html</wfw:comment><comments>http://www.shnenglu.com/Onway/archive/2011/11/22/160700.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Onway/comments/commentRss/160700.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Onway/services/trackbacks/160700.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/*</span><span style="color: #008000; "><br /> * http.c by Onway 2011-11-14<br /> * 1Q间?U的两次connect避免瞬间造成的错?br /> * 2Q网l读写超旉制参考自《UNIX环境高~程》第二版中文版程序清?0-8Q?br /> * ׃E序是单U程Q避免进E堵塞?br /> * 3Q返回D?br /> *     0 正确q回<br /> *     1 |络q接p|<br /> *     2 |络IO时<br /> *     3 旉注册p|<br /> </span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />#include </span><span style="color: #000000; ">"</span><span style="color: #000000; ">global.h</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">sys</span><span style="color: #000000; ">/</span><span style="color: #000000; ">types.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">sys</span><span style="color: #000000; ">/</span><span style="color: #000000; ">socket.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">netinet</span><span style="color: #000000; ">/</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">arpa</span><span style="color: #000000; ">/</span><span style="color: #000000; ">inet.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">unistd.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">stdlib.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">setjmp.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> PORT 80 </span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> BUFFSIZE 10086</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> sig_alrm(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> jmp_buf env_alrm;<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> QueryWord(</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> GString </span><span style="color: #000000; ">*</span><span style="color: #000000; ">word,</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> GString </span><span style="color: #000000; ">*</span><span style="color: #000000; ">ip,<br />        GString </span><span style="color: #000000; ">*</span><span style="color: #000000; ">gstrHtml)<br />{<br />    g_string_erase(gstrHtml,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br /><br />    </span><span style="color: #008000; ">/*</span><span style="color: #008000; ">    http h    </span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />    GString </span><span style="color: #000000; ">*</span><span style="color: #000000; ">request </span><span style="color: #000000; ">=</span><span style="color: #000000; "> g_string_new(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">GET /search?q=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />    g_string_append(request,word</span><span style="color: #000000; ">-></span><span style="color: #000000; ">str);<br />    g_string_append(request,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\</span><span style="color: #000000; "><br /></span><span style="color: #000000; ">&</span><span style="color: #000000; ">ue</span><span style="color: #000000; ">=</span><span style="color: #000000; ">utf8</span><span style="color: #000000; ">&</span><span style="color: #000000; ">keyfrom</span><span style="color: #000000; ">=</span><span style="color: #000000; ">dict.index HTTP</span><span style="color: #000000; ">/</span><span style="color: #000000; ">1.1</span><span style="color: #000000; ">\r\n\<br />Host: dict.youdao.com\r\n\<br />Connection: close\r\n\<br />\r\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);</span><span style="color: #000000; "><br /></span><span style="color: #000000; "><br />    </span><span style="color: #008000; ">/*</span><span style="color: #008000; ">    |络地址    </span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> sockaddr_in address;<br />    address.sin_family </span><span style="color: #000000; ">=</span><span style="color: #000000; "> AF_INET;<br />    address.sin_addr.s_addr </span><span style="color: #000000; ">=</span><span style="color: #000000; "> inet_addr(ip</span><span style="color: #000000; ">-></span><span style="color: #000000; ">str);<br />    address.sin_port </span><span style="color: #000000; ">=</span><span style="color: #000000; "> htons(PORT);<br /><br />    </span><span style="color: #008000; ">/*</span><span style="color: #008000; ">    |络q接    </span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> socketfd </span><span style="color: #000000; ">=</span><span style="color: #000000; "> socket(AF_INET,SOCK_STREAM,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(connect(socketfd,(</span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> sockaddr </span><span style="color: #000000; ">*</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&</span><span style="color: #000000; ">address,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(address)) </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />    {<br />        sleep(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(connect(socketfd,(</span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> sockaddr </span><span style="color: #000000; ">*</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&</span><span style="color: #000000; ">address,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(address)) </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />        {<br /><br />            g_string_free(request,TRUE);<br />            </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />        }<br />    }<br />    <br />    </span><span style="color: #008000; ">/*</span><span style="color: #008000; ">    信号注册    </span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(signal(SIGALRM,sig_alrm) </span><span style="color: #000000; ">==</span><span style="color: #000000; "> SIG_ERR)<br />    {<br />        g_string_free(request,TRUE);<br />        close(socketfd);<br />        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">3</span><span style="color: #000000; ">;<br />    }<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(setjmp(env_alrm) </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />    {<br />        g_string_free(request,TRUE);<br />        close(socketfd);<br />        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />    }<br />    <br />    </span><span style="color: #008000; ">/*</span><span style="color: #008000; ">    |络IO    </span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />    alarm(</span><span style="color: #000000; ">3</span><span style="color: #000000; ">);<br />    write(socketfd,request</span><span style="color: #000000; ">-></span><span style="color: #000000; ">str,request</span><span style="color: #000000; ">-></span><span style="color: #000000; ">len);<br /><br />    </span><span style="color: #0000FF; ">char</span><span style="color: #000000; "> buf[BUFFSIZE];<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> n;<br />    </span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">( (n </span><span style="color: #000000; ">=</span><span style="color: #000000; "> read(socketfd,buf,BUFFSIZE)) </span><span style="color: #000000; ">></span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; "> )<br />        g_string_append_len(gstrHtml,buf,n);<br />    alarm(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br /><br />    </span><span style="color: #008000; ">/*</span><span style="color: #008000; ">    正常q回    </span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />    g_string_free(request,TRUE);<br />    close(socketfd);<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br /></span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> sig_alrm(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> signo)<br />{<br />    longjmp(env_alrm,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />}<br /></span></div><img src ="http://www.shnenglu.com/Onway/aggbug/160700.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Onway/" target="_blank">Onway</a> 2011-11-22 11:55 <a href="http://www.shnenglu.com/Onway/archive/2011/11/22/160700.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.fvxg.cn" target="_blank">þþƷAVһ </a>| <a href="http://www.qrcj.net.cn" target="_blank">ݲݾþþר</a>| <a href="http://www.o7xcp.cn" target="_blank">ɫþþþþþС˵</a>| <a href="http://www.gdcloth.cn" target="_blank">þֹƷۺ</a>| <a href="http://www.ecscrm.com.cn" target="_blank">ƷۺϾþõһҳ</a>| <a href="http://www.nutiao.cn" target="_blank">˾þĻ</a>| <a href="http://www.utey.cn" target="_blank">þþƷһ</a>| <a href="http://www.m-xc.cn" target="_blank">鶹Ʒþþһ</a>| <a href="http://www.228456.cn" target="_blank">þþƷ9988</a>| <a href="http://www.ltbhs.com.cn" target="_blank">˾þþƷ</a>| <a href="http://www.xhlwd.cn" target="_blank">99þþƷ</a>| <a href="http://www.by2043.cn" target="_blank">þü޾Ʒ?V</a>| <a href="http://www.eagleinsky.com.cn" target="_blank">þòþüӰԺwwwձ</a>| <a href="http://www.damingxing.cn" target="_blank">ݹƷþþþ</a>| <a href="http://www.9bexgq.cn" target="_blank">޹Ʒþþþ </a>| <a href="http://www.coscoshuai.cn" target="_blank">ŷպƷþ</a>| <a href="http://www.gvyf.cn" target="_blank">㽶þ99</a>| <a href="http://www.wyj442.cn" target="_blank">þþƷaĻ þþƷŷƬ </a>| <a href="http://www.lenovophone.com.cn" target="_blank">ž99Ʒþþþþ</a>| <a href="http://www.baojingqi88.org.cn" target="_blank">avþþƷ</a>| <a href="http://www.feichangyemen.cn" target="_blank">һһþaaۺϾƷ</a>| <a href="http://www.5748l.cn" target="_blank">ձþþþĻ</a>| <a href="http://www.020rj.cn" target="_blank">þþƷˬ97 </a>| <a href="http://www.jcwmt.cn" target="_blank">þþƷһӰԺ</a>| <a href="http://www.hkzkzs.com.cn" target="_blank">Ʒ99þaaaһëƬ</a>| <a href="http://www.sowudi.com.cn" target="_blank">þƵ</a>| <a href="http://www.sc-cits.com.cn" target="_blank">þ91Ʒ91</a>| <a href="http://www.86bzpp.cn" target="_blank">þۺ༤</a>| <a href="http://www.uxgj.cn" target="_blank">91ƷۺϾþþƷ</a>| <a href="http://www.tb901.cn" target="_blank">þóСƵ</a>| <a href="http://www.uukibu.cn" target="_blank">þݺҹҹ96׽</a>| <a href="http://www.p146.cn" target="_blank">97Ʒþ찴Ħ </a>| <a href="http://www.yiyaosheji.cn" target="_blank">˾þô߽鶹</a>| <a href="http://www.itsidekick.cn" target="_blank">þþþþþ97</a>| <a href="http://www.tmqywedding.cn" target="_blank">99þó˹Ʒ</a>| <a href="http://www.10000qt.cn" target="_blank">69Ʒþþþ99</a>| <a href="http://www.shop219.cn" target="_blank">þۺ϶</a>| <a href="http://www.njw2008.cn" target="_blank">þۺ㽶AV</a>| <a href="http://www.dguv.cn" target="_blank">Ʒ99þþþ </a>| <a href="http://www.czb668.cn" target="_blank">޹Ʒþ</a>| <a href="http://www.huaigutang.cn" target="_blank">þþþƷҹѲ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>