福峰's profile风刮过的痕迹PhotosBlogListsMore ![]() | Help |
风刮过的痕迹这是没有晒过太阳的风 |
|||||
|
|
August 20 路在何方?好久没有反省,是时候反省一下了。
临近毕业去Achievo签约的那个上午,我的心突然沉重起来,我一直在问自己,我准备好步入社会了吗?这个岗位真的适合我吗?最后去了,签约时,我把合同及附加项翻了一次又一次,看了一次又一次,真怕会被卖了。这份东西正式中带点不正式,好想有个懂法的人先帮我看一下,而且我当时还在想我要不要做这一份工,最后签下了。签完后,去LENOVO上班了,上了五天,入职和离职都是用了一下午中的不到一小时,真是效率优先啊。(对此,我怕会给深大的师弟妹们带来不良影响。)
离开EC后,我报了EIC的一个直通班,我自认为自己四级过得太侥幸了.从入学到考四级,我从来就是围着动漫和工作在转,成绩根本就是虚的,以至于对自己认识更为模糊,自以为学习能力真的很强,更导致后面考研、毕设、公考上的一切败笔。大学阶段关于知识方面,我获得了什么,可以说我感觉不到有,或许有,但不足以影响我。考研阶段,发现自己一个很大的毛病,学会了一句话“凭什么,别人用三个月的努力,你就用一周把他弄通”,对我来说,当时我给自己的答案是IQ+毅力。呵呵,可笑,虽说多次经智商测试发现我算是一个聪明的人,但不至于做到那一步.....
我常问自己大学期间自己最成功的事是什么?想下,好像没有,有的话可能就是向不同的人展现出了不同的我,弄得后面只能弄出另一个我,接近真实的我,但并非真实的我。
大学期间最失败的事是什么?一切自己想做的事都没有去做。
第一件,寻根,这事在我小学就想做了,这是受一个关于家族是纪录片给我带来的冲击。作为客家人,深知客家人并非本土居民,都是南迁的,我想找到中原的根,并不想去看那本那些家里所谓的知识分子(一帮农民老头)编著的、错漏百出的族谱,我相信,我有一定的能耐做好这事,但我被更为世俗的事牵制住了,去寻根本来就很世俗了。我却一直被此世俗束缚,我似乎摆脱不了了。 第二件,是去游玩,大学间去游玩和出来工作后肯定是不一样的。我大学期间似乎没去什么地方玩过。小时候看电视看多了,我经常会产生游学的幻想。直至现今,我这个梦仍在,可是实现不了的机会蛮大的,学不一定,游真的是我现今最想的事情。 第三件,要在大学学有所成。除专业外,要广读史书(不论正史野史),要泛学经管知识,要精通其它,这一切都被自己的恶习所累,正所谓”业精于勤,荒于嬉”、“所得必有所失”,自己太失败了。 更失败的是一直未为自己规划过自己的人生,我想得到什么,我究竟想过怎样的生活,我一直没给自己答案,一直给自己这这那那的理由拖过去。
我想知道我想干什么。我想知道我的路在哪,有路标吗?我的路似乎还没有开始铺,发现自己一路走的路都是边走边铺的。要先铺好,才能走得更好走得更远,至少要有个蓝本。
最近妹妹常和我说,我给她带来了巨大的压力。我实在不懂,一个至今仍在迷茫的我给她什么压力了。自小到大,我受的压力算是够大的啦,家里常在外说我这能干那能干的,为了和这事实相符,言行一致,却很多时是违心的。为此我要付出许许多多额外精力,所以说,要学会收敛一点。 March 08 又到一年生日时 生日,即人出生的那一天。在我家,不论是谁生日只要有人记起来了,我或妈妈必会早上为之煮鸡蛋,不过没有像传统的那样去染红。今天从学校回家,因此也没有什么鸡蛋,父母在忙,自己也帮不了什么,甚是难过。 从前,我对生日的看法是生日是一个纪念日,庆祝我又长大了一岁,是很特别的日子,能受到朋友和家人的特别待遇。在同辈亲戚中,我算是较为出色的,我也希望借此获得多点的表扬(虚荣心十足啊!)。后而变为生日必有大食会,是为了大家高兴一下,也是借口为自己放松啦。 直到爸爸的一位较为年长的朋友和我说,“儿的生日,母亲的难日”。我对生日有另一种看法了,所以逢农历的生日我必回家,也不会像以前那样,想要这这那那的。不说母亲十月怀胎才有子女的诞生。每当一个生命来到这个世界上时,作为孩子的母亲必须忍受巨大的生理和心理痛苦,因此我们要对母亲赋予生命表示感激。听说有这么一种说法,做生日的本义就是要“哀哀父母,生我劬劳”,“劬”就是劳苦、辛苦的意思,希望通过做生日来追思母亲临产及分娩时的痛苦,体会父母哺育的艰辛。《颜氏家训·风操》中记载,南朝梁元帝的生日是农历八月初六,每逢这天,他都要在宫里设“斋讲”。值得注意的是,同样是这篇文章中还曾提到了当时江南某些地区,以设酒庆的方式庆祝生日,这一举动被作者斥之为:“无教之徒,虽以孤露,其日皆为供顿,酣畅声乐,不知有所感伤。”可见,隋唐五代时期在我国北方,做生日多是出于儒家的孝亲观念,以严肃正式的仪式居多,多带有哀戚色彩,据史书上记载,唐太宗及五代时后汉高祖都坚持不搞生日庆贺,生日是多像一种纪念仪式。 生日伴随着一个生命的全过程,它见证了生命最初来到世间时的“哇哇”啼哭声,也记载着岁月流逝中的道道痕迹,代表着年龄的增长和阅历的增加。 今天也感慨良多。我现在都二十四了,仍在家中毫无作为,仍是吃家里的,用家里的,感觉自己....... 写于3月6日 Windows Socket API一、WSAStartup函数 int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ); 使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本信息。当一个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的Socket库中的其它Socket函数了。该函数执行成功后返回0。 例:假如一个程序要使用2.1版本的Socket,那么程序代码如下 wVersionRequested = MAKEWORD( 2, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); 二、WSACleanup函数 int WSACleanup (void); 应用程序在完成对请求的Socket库的使用后,要调用WSACleanup函数来解除与Socket库的绑定并且释放Socket库所占用的系统资源。 三、socket函数 SOCKET socket( int af, int type, int protocol ); 应用程序调用socket函数来创建一个能够进行网络通信的套接字。第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议族,该参数置PF_INET;第二个参数指定要创建的套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM;第三个参数指定应用程序所使用的通信协议。 该函数如果调用成功就返回新创建的套接字的描述符,如果失败就返回INVALID_SOCKET。套接字描述符是一个整数类型的值。每个进程的进程空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的对应关系。该表中有一个字段存放新创建的套接字的描述符,另一个字段存放套接字数据结构的地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个套接字描述符表但是套接字数据结构都是在操作系统的内核缓冲里。下面是一个创建流套接字的例子: struct protoent *ppe; ppe=getprotobyname("tcp"); SOCKET ListenSocket=socket(PF_INET,SOCK_STREAM,ppe->p_proto); 四、closesocket函数 int closesocket( SOCKET s ); closesocket函数用来关闭一个描述符为s套接字。由于每个进程中都有一个套接字描述符表,表中的每个套接字描述符都对应了一个位于操作系统缓冲区中的套接字数据结构,因此有可能有几个套接字描述符指向同一个套接字数据结构。套接字数据结构中专门有一个字段存放该结构的被引用次数,即有多少个套接字描述符指向该结构。当调用closesocket函数时,操作系统先检查套接字数据结构中的该字段的值,如果为1,就表明只有一个套接字描述符指向它,因此操作系统就先把s在套接字描述符表中对应的那条表项清除,并且释放s对应的套接字数据结构;如果该字段大于1,那么操作系统仅仅清除s在套接字描述符表中的对应表项,并且把s对应的套接字数据结构的引用次数减1。 closesocket函数如果执行成功就返回0,否则返回SOCKET_ERROR。 五、send函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;第二个参数指明一个存放应用程序要发送数据的缓冲区;第三个参数指明实际要发送的数据的字节数;第四个参数一般置0。这里只描述同步Socket的send函数的执行流程。当调用该函数时,send先比较待发送数据的长度len和套接字s的发送缓冲区的长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR;如果len小于或者等于s的发送缓冲区的长度,那么send先检查协议是否正在发送s的发送缓冲中的数据,如果是就等待协议把数据发送完,如果协议还没有开始发送s的发送缓冲中的数据或者s的发送缓冲中没有数据,那么send就比较s的发送缓冲区的剩余空间和len,如果len大于剩余空间大小send就一直等待协议把s的发送缓冲中的数据发送完,如果len小于剩余空间大小send就仅仅把buf中的数据copy到剩余空间里(注意并不是send把s的发送缓冲中的数据传到连接的另一端的,而是协议传的,send仅仅是把buf中的数据copy到s的发送缓冲区的剩余空间里)。如果send函数copy数据成功,就返回实际copy的字节数,如果send在copy数据时出现错误,那么send就返回SOCKET_ERROR;如果send在等待协议传送数据时网络断开的话,那么send函数也返回SOCKET_ERROR。要注意send函数把buf中的数据成功copy到s的发送缓冲的剩余空间里后它就返回了,但是此时这些数据并不一定马上被传到连接的另一端。如果协议在后续的传送过程中出现网络错误的话,那么下一个Socket函数就会返回SOCKET_ERROR。(每一个除send外的Socket函数在执行的最开始总要先等待套接字的发送缓冲中的数据被协议传送完毕才能继续,如果在等待时出现网络错误,那么该Socket函数就返回SOCKET_ERROR) 注意:在Unix系统下,如果send在等待协议传送数据时网络断开的话,调用send的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。 六、recv函数 int recv( SOCKET s, char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的第一个参数指定接收端套接字描述符;第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;第三个参数指明buf的长度;第四个参数一般置0。这里只描述同步Socket的recv函数的执行流程。当应用程序调用recv函数时,recv先等待s的发送缓冲中的数据被协议传送完毕,如果协议在传送s的发送缓冲中的数据时出现网络错误,那么recv函数返回SOCKET_ERROR,如果s的发送缓冲中没有数据或者数据被协议成功发送完毕后,recv先检查套接字s的接收缓冲区,如果s接收缓冲区中没有数据或者协议正在接收数据,那么recv就一直等待,只到协议把数据接收完毕。当协议把数据接收完毕,recv函数就把s的接收缓冲中的数据copy到buf中(注意协议接收到的数据可能大于buf的长度,所以在这种情况下要调用几次recv函数才能把s的接收缓冲中的数据copy完。recv函数仅仅是copy数据,真正的接收数据是协议来完成的),recv函数返回其实际copy的字节数。如果recv在copy时出错,那么它返回SOCKET_ERROR;如果recv函数在等待协议接收数据时网络中断了,那么它返回0。 注意:在Unix系统下,如果recv函数在等待协议接收数据时网络断开了,那么调用recv的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。 七、bind函数 int bind( SOCKET s, const struct sockaddr FAR *name, int namelen ); 当创建了一个Socket以后,套接字数据结构中有一个默认的IP地址和默认的端口号。一个服务程序必须调用bind函数来给其绑定一个IP地址和一个特定的端口号。客户程序一般不必调用bind函数来为其Socket绑定IP地址和断口号。该函数的第一个参数指定待绑定的Socket描述符;第二个参数指定一个sockaddr结构,该结构是这样定义的: struct sockaddr { u_short sa_family; char sa_data[14]; }; sa_family指定地址族,对于TCP/IP协议族的套接字,给其置AF_INET。当对TCP/IP协议族的套接字进行绑定时,我们通常使用另一个地址结构: struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; }; 其中sin_family置AF_INET;sin_port指明端口号;sin_addr结构体中只有一个唯一的字段s_addr,表示IP地址,该字段是一个整数,一般用函数inet_addr()把字符串形式的IP地址转换成unsigned long型的整数值后再置给s_addr。有的服务器是多宿主机,至少有两个网卡,那么运行在这样的服务器上的服务程序在为其Socket绑定IP地址时可以把htonl(INADDR_ANY)置给s_addr,这样做的好处是不论哪个网段上的客户程序都能与该服务程序通信;如果只给运行在多宿主机上的服务程序的Socket绑定一个固定的IP地址,那么就只有与该IP地址处于同一个网段上的客户程序才能与该服务程序通信。我们用0来填充sin_zero数组,目的是让sockaddr_in结构的大小与sockaddr结构的大小一致。下面是一个bind函数调用的例子: struct sockaddr_in saddr; saddr.sin_family = AF_INET; saddr.sin_port = htons(8888); saddr.sin_addr.s_addr = htonl(INADDR_ANY); bind(ListenSocket,(struct sockaddr *)&saddr,sizeof(saddr)); 八、listen函数 int listen( SOCKET s, int backlog ); 服务程序可以调用listen函数使其流套接字s处于监听状态。处于监听状态的流套接字s将维护一个客户连接请求队列,该队列最多容纳backlog个客户连接请求。假如该函数执行成功,则返回0;如果执行失败,则返回SOCKET_ERROR。 九、accept函数 SOCKET accept( SOCKET s, struct sockaddr FAR *addr, int FAR *addrlen ); 服务程序调用accept函数从处于监听状态的流套接字s的客户连接请求队列中取出排在最前的一个客户请求,并且创建一个新的套接字来与客户套接字创建连接通道,如果连接成功,就返回新创建的套接字的描述符,以后与客户套接字交换数据的是新创建的套接字;如果失败就返回INVALID_SOCKET。该函数的第一个参数指定处于监听状态的流套接字;操作系统利用第二个参数来返回新创建的套接字的地址结构;操作系统利用第三个参数来返回新创建的套接字的地址结构的长度。下面是一个调用accept的例子: struct sockaddr_in ServerSocketAddr; int addrlen; addrlen=sizeof(ServerSocketAddr); ServerSocket=accept(ListenSocket,(struct sockaddr *)&ServerSocketAddr,&addrlen); 十、connect函数 int connect( SOCKET s, const struct sockaddr FAR *name, int namelen ); 客户程序调用connect函数来使客户Socket s与监听于name所指定的计算机的特定端口上的服务Socket进行连接。如果连接成功,connect返回0;如果失败则返回SOCKET_ERROR。下面是一个例子: struct sockaddr_in daddr; memset((void *)&daddr,0,sizeof(daddr)); daddr.sin_family=AF_INET; daddr.sin_port=htons(8888); daddr.sin_addr.s_addr=inet_addr("133.197.22.4"); connect(ClientSocket,(struct sockaddr *)&daddr,sizeof(daddr)); July 30 留候论古之所谓豪杰之士者,必有过人之节。人情有所不能忍者,匹夫见辱,拔剑而起,挺身而斗,此不足为勇也。天下有大勇者,卒然临之而不惊,无故加之而不怒,此其所挟持者甚大,而其志甚远也。
夫子房受书于圮上之老人也,其事甚怪。然亦安知其非秦之世有隐君子者出而试之。观其所以微见其意者,皆圣贤相与警戒之义。而世不察,以为鬼物,亦已过矣,且其意不在书。当韩之亡,秦之方盛也,以刀锯鼎镬待天下之士,其平居无罪夷灭者,不可胜数;虽有贲、育,无所复施。夫持法太急者,其锋不可犯,而其末可乘。子房不忍忿忿之心,以匹夫之力,而逞于一击之间。当此之时,子房之不死者,其间不能容发,盖亦已危矣!千金之子,不死于盗贼。何者?其身之可爱,而盗贼之不足以死也。子房以盖世之才,不为伊尹、太公之谋,而特出于荆轲、聂政之计,以侥幸于不死,此圮上之老人之所为深惜者也。是故倨做鲜腆而深折之,彼其能有所忍也,然后可以就大事。故曰:“孺子可教也。” 楚庄王伐郑,郑伯肉袒牵羊以逆。庄王曰:“其君能下人,必能信用其民矣。”遂舍之。勾践之困于会稽,而归臣妾于吴者,三年而不倦。且夫有报人之志,而不能下人者,是匹夫之刚也。夫老人者,以为子房才有余,而忧其度量之不足,故深折其少年刚锐之气,使之忍小忿而就大谋。何则?非有平生之素,卒然相遇于草野之间,而命以仆妾之役,油然而不怪者,此困秦皇之所不能惊,而项籍之所不能怒也。 观夫高祖之所以胜,而项籍之所以败者,在能忍与不能忍之间而已矣。项籍唯不能忍,是以百战百胜,而轻用其锋。高祖忍之,养其全锋而待其毙。此子房教之也。当淮阴破齐而欲自王,高祖发怒,见于词色,由此观之,犹有刚强不忍之气,非子房其谁全之?
太史公疑子房以为魁梧奇伟,而其状貌乃如妇人女人,不称其志气。呜呼!此其所以为子房欤! |
||||
|
|