博文
一位初中生的程序人生 转(2007-04-10 21:47:00)
摘要:我是一名软件人员,是一位初中毕业的软件开发人员。
没有学历,国家承认的学历只有初中。也没有程序员证书之类的东西。工作主要是在网络通讯,流媒体,音视频编解码方面。在华为做过一年的外包工作。对C/C++的理解还不赖。
初中毕业,高中读了半年就出了校门。
从91年开始,做过5年木工,95年到深圳打工,在一家五金厂做清洗工作做了一年。
有过刻骨铭心的经历。
曾在华为做过外包工作,是做C/C++,VC。也是第一次做VC,学到很多东西,除了专业水平也有所提高外,懂得怎么做人,怎么做软件,怎么和人交流,合作。
在华为感触很深,和他们的员工在一起工作,生活过一年的时间。能感受到他们的热情,有内涵,有修养,有能力。在华为培训中心门口有一字碑,在马路边就能看到,刻有“小胜靠智,大胜于德”。对华为很是敬仰。以后看到“自强不息,德厚载物”,感觉他们温慈厚善的思想,足可以让我们追捧。为社会,为国家甚至人类带来光明。
技术篇
作为一个软件人员,应是高素质,有修养。先做人,再做事。
做软件,是以项目为单位,由多个人聚在一起,形成一个团队,共同完成任务。既然是多个人共同完成任务,你必须要融入到他们当中,要与他们多交流,才能做好事情。既然是一个团队,就要学会怎样去交流,怎样相处。
这是我从事软件工作的一些心得,做项目所要注意的一些东西。希望对大家有所帮助。
宽容,我们都是年轻人,难免犯错,我们这个年龄不犯错的人不多,几乎没有。要包容。犯错的人不要不好意思,下次注意一点不要再犯了就可以。对方也不要计较,包容他们。
要多问多想,做软件是这样的,一个人解决问题,如果不问,可能2-3天也处理不了,问一问人家5分钟解决问题。这就是做软件交流的好处。不要碍于面子,要多问。不要认为问的问题太简单,而不愿意回答。也不要因为问题过于复杂,而随便应付,随便......
老程序员给年轻程序员的忠告!(2007-04-07 14:52:00)
摘要:
1、好好规划自己的路,不要跟着感觉走;
根据个人的理想来安排自己的生活,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,痛快一些,那么就需要慎重安排自己的的轨迹,从一个行业入手逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你对一个行业有那么几年的体会以后,钱根本不是问题,频繁地动荡不是上策,最后你对哪个行业都没有摸透,永远是新手。
2、可以做技术的,切不可沉湎于技术;
千万不可一门心思钻营技术,给自己造成很多压力,如果你的心思全部放在上面那么注定你将成为孔乙己一类的人物,适可而止为之,因为技术只不过是你今后前途的支柱之一,而且还不是最大的支柱,除非你只愿意到老,还是个工程师。
3、不要去做技术高手,只去做综合素质高手;
在企业里工作,我们时常瞧不起某人,说他“什么都不懂,凭啥拿那么多钱,凭啥升官,”这是普遍的、典型的工程师的迂腐之言,你想想,老板搞经营那么多年难道见识不如你这个新兵?人家或许善于管理,善于领会老板意图,善于部门协调等等等,因此务必培养自己多方面的能力,包括,管理,亲和力,公关能力等要成为最综合素质的高手则前途无量,技术以外的技能才是更重要的本事,从古到今,一律如此。
4、多交“三教九流”的朋友;
不要只和工程师交往,认为有共同语言,其实更重要的是和其他类人物交往,如果你希望有朝一日当老板或高层管理者,那么你整日面对的就是这些人。了解他们的经历,思维习惯,爱好,学习他处理问题的模式,了解社会各个角落的现象和问题,这是以后发展的巨大本钱,没有这些以后就会笨手笨脚,跌跌撞撞,遇到重重困难,交不少学费的成功的概率大大降低。
5、知识涉猎不仅要专,还一定要广;
多看看其他方面的书,金融,财会,进出口,税务,法律等等为以后做一些积累的以后的用处会更大,会少交许多的学费。
6、抓住时机向技术管理或市场销售方面转变;
要想有前途就不能一直搞开发,适当时候要转变为管理和或销售的前途会更大,以前搞技术也没有白搞,以后还用得着,搞管理可以培养自己的领导能力,搞销售可以培养自己的市场概念和思维,同时为自己以后发展积累庞大的人脉,应该说这才是前途的真正支柱。
7、逐渐克服自己的心理弱点和性格缺陷;
多疑,敏感,犹豫不决,胆怯,多虑,这些工程师普遍存在的性格弱点必须改变,很难吗,只......
足不出户的热门兼职盘点 IT、设计创意最走俏(2007-04-07 11:26:00)
摘要:在家里就能完成的兼职中,IT、设计创意、文案策划可以说是比较热门的三类行业,但因为性质和要求的不同,大家在完成任务的过程中也需要关注不同的重点。前几次的小试牛刀虽然都以失败告终,但也找到了自己最适合的文社会分工越来越精细化的今天,兼职也可谓五花八门。在家里就能完成的兼职中,IT、设计创意、文案策划可以说是比较热门的三类行业,但因为性质和要求的不同,大家在完成任务的过程中也需要关注不同的重点。
IT类:
苦学技术是上策
在某公司电脑技术部门工作的郭先生,利用空余时间做编
程的兼职已经有2年之久了。“这类兼职不太需要什么创意,关键看你技术是否过硬。很多任务只要你懂得这个程序,很短时间就可以搞定。”
“新手们可以从小编程入手,虽然它们的酬劳偏低,但是完成的速度相应也比较快的,所以多完成几项收入也是不菲的。”郭先生提醒到,新手们此时还有一个重要的任务就是多看别人上传的作品,遇到不懂的地方可以向别人请教。
设计创意:
走出去寻找灵感
“能否做好设计创意类的兼职讲究的是灵感,完成这类任务有点可遇不可求的感觉。”美术类专业毕业的刘先生聊到这份兼职的经历时说道,曾经有一段时间自己状态不好,闷在房间里好久也没有出来自己满意的效果。后来决定放弃了就去郊外玩了一天,没想到旅途中的景色正好和作品的立意相似,突然之间就有了想法,最后也得到了客户的认可。
“从事一份创意型的工作,就需要打破原有的生活圈子,多走走看看接触新鲜事物,也许某一天接到的任务就会和经历碰撞出火花。”刘先生分析说,所以呆在电脑前工作应该是有了灵感之后才做的事,而之前尽可以大胆走出去享受生活。
而对于如何选择自己能胜任的工作,刘先生表示,刚入行可以选择小任务或者内容熟悉的任务。当然作品的收入是和作品的难度直接相关的,从几十元到上千元不等。只贪图数量而不求质量的人,很难真正学到本领而去接一些大任务,是得不偿失的事情。
文案策划:
条理清晰最重要
“文案创作有一定的条理性,通常做久了就能按照类别摸出一套规律出来,比如活动文案一般包括活动内容、活动对象、资金预算、预期目标等几大部分。”一直在智客网从事媒体文案工作的钱小姐说起这份兼职来头头是道。
“这类工作比较特殊的地方是兼具了创意性和技术性。”钱小姐分析......
我的一次技术讨教,感触很深(2007-04-05 20:53:00)
摘要:请问我的程序关于网络的在同一种情况下,有时运行正常,有时运行不正常。这里面是不是有网络方面的原因?
☆~豺狼~☆ 19:03:37
不一定
旺 19:04:07
我的表现为消息收到了一部分
旺 19:04:14
在不正常的时候
☆~豺狼~☆ 19:05:31
怎么个不正常法?
旺 19:05:44
等消息传过来的时候,我让对话框做出一些反应,可是只是做了一部分反应
旺 19:06:14
这个是不正常的
旺 19:06:28
这个是正常的
旺 19:07:11
就是想让它们结束的时候从上面的画面变成下面的画面
旺 19:07:36
双方都能够知道谁赢谁输
旺 19:07:50
可是画面有时转不过来
☆~豺狼~☆ 19:07:55
接收到消息就结束?
旺 19:08:03
异步选择的
旺 19:08:36
有时能转换过来
☆~豺狼~☆ 19:08:56
检查一下是不是消息还没到就处理了
因为你是异步操作
旺 19:09:35
应该是到了,屏幕上显示出了谁赢谁输,这里也是消息的一部分
旺 19:09:49
是不是我发的消息过多了?
☆~豺狼~☆ 19:10:17
跟消息多少应该没关系
你的问题应该是在消息相应上
旺 19:11:09
哦,我设了断点,它执行到那里的语句了,而且在单步调试的时候是正常的
旺 19:11:31
可是我在直接运行的时候又不正常了
旺 19:12:13
这个是不是消息响应设的不合理造成的?
旺 19:13:02
我只传了个消息的类型,等对方接到这种类型就会作出某些操作
☆~豺狼~☆ 19:13:09
你的响应是对消息进行分析还是接收到消息就马上响应?
旺 19:13:50
对消息里面设了编号,等到编号3的时候去执行
旺 19:13:57
用的case
旺 19:14:10
只传了个编号
旺 19:15:06
应......
五子棋的核心算法(2007-04-04 22:34:00)
摘要:五子棋的核心算法
五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣
性。这里设计和实现了一个人机对下的五子棋程序,采用了博弈树的方法,应用了剪枝
和最大最小树原理进行搜索发现最好的下子位置。介绍五子棋程序的数据结构、评分规
则、胜负判断方法和搜索算法过程。
一、相关的数据结构
关于盘面情况的表示,以链表形式表示当前盘面的情况,目的是可以允许用户进行
悔棋、回退等操作。
CList StepList;
其中Step结构的表示为:
struct Step
{
int m; //m,n表示两个坐标值
int n;
char side; //side表示下子方
};
以数组形式保存当前盘面的情况,
目的是为了在显示当前盘面情况时使用:
char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE];
其中FIVE_MAX_LINE表示盘面最大的行数。
同时由于需要在递归搜索的过程中考虑时间和空间有效性,只找出就当前情况来说
相对比较好的几个盘面,而不是对所有的可下子的位置都进行搜索,这里用变量
CountList来表示当前搜索中可以选择的所有新的盘面情况对象的集合:
CList CountList;
其中类CBoardSituiton为:
class CBoardSituation
{
CList ......
PlaySound函数详解(2007-04-01 18:16:00)
摘要:PlaySound函数的声明为:
BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound);
使用这个函数时要加入“WINMM.lib”库,还要加入“MMSYSTEM.h”头文件。
参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。参数hmod是应用程序的实例句柄,当播放WAV资源时要用到该参数,否则它必须为NULL。参数fdwSound是标志的组合,如下表所示。若成功则函数返回TRUE,否则返回FALSE。
播放标志以及含义:
SND_APPLICATION
用应用程序指定的关联来播放声音。
SND_ALIAS
pszSound参数指定了注册表或WIN.INI中的系统事件的别名。
SND_ALIAS_ID
pszSound参数指定了预定义的声音标识符。
SND_ASYNC
用异步方式播放声音,PlaySound函数在开始播放后立即返回。
SND_FILENAME
pszSound参数指定了WAVE文件名。
SND_LOOP
重复播放声音,必须与SND_ASYNC标志一块使用。
SND_MEMORY
播放载入到内存中的声音,此时pszSound是指向声音数据的指针。
SND_NODEFAULT
不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。
SND_NOSTOP
PlaySound不打断原来的声音播出并立即返回FALSE。
SND_NOWAIT
如果驱动程序正忙则函数就不播放声音并立即返回。
SND_PURGE
停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。
SND_RESOURCE
p......
大学生面试三诀:自信 细节 执着(2007-04-01 14:50:00)
摘要:
怎样进入微软这样的组织?几年以来,我曾面试过上千名毕业生。总结起来,对大学生的忠告无非三点:自信、细节、执着。用口头语言来诙谐地表达,那就是胆大、心细、脸皮厚!"
胆大
“同学们在进入面试室的时候,能否把头抬起来?眼神和声音在面试时是很重要的!我接触到的毕业生85―90%的人都是眼神朝下的,而一位成功者的眼神要么是平视的,要么是向上倾斜15度。还有声音要足够大。”
心细
“有位同学穿着新衣服来面试,西装上带着商标,衬衫上还有褶痕,这都不合适。有个真实的案例,有名同学进入唐骏的房间,刚开始面试时手机响了,他接起电话:‘我现在正在面试,今晚咱们的聚会还在陆家嘴某某地啊,菜不要多点啊……’他刚收起电话,准备重新投入面试时,唐骏开口了:‘谢谢,今天的面试到此结束’。事后,唐骏说起这则面试案例时的评论是:‘不专业!’”
脸皮厚
“曾有位原来学生物的同学来面试,初次面试失败后,他缠上了,主管没办法,就丢给他一大本四五百页的《WINDOW2000 NT SERVER》,让他一礼拜后再来。说实话,哪怕对计算机专业毕业生来说,一周内消化这本书都是不太容易的事。一周后,这孩子来了,可他的确还是有点生疏。又过了一周,这孩子带着他妈来了,家长的述说把微软人感动了,原来这位同学几周来每天在家苦读手册20小时!最后,唐总亲自拍板要人。
“在微软,‘技术功底’不是最主要的,而‘执着精神’是最关键的。正如唐骏所说的那样:‘我们要的就是这样的人’”。
......
WSAAsyncSelect()函数详解(2007-03-28 23:55:00)
摘要:WSAAsyncSelect()
简述:
通知套接口有请求事件发生.
#include <winsock.h>
int PASCAL FAR WSAAsyncSelect ( SOCKET s, HWND hWnd,
unsigned int wMsg, long lEvent );
s 标识一个需要事件通知的套接口的描述符.
hWnd 标识一个在网络事件发生时需要接收消息的窗口句柄.
wMsg 在网络事件发生时要接收的消息.
lEvent 位屏蔽码,用于指明应用程序感兴趣的网络事件集合.
注释:
本函数用来请求Windows Sockets DLL为窗口句柄发一条消息-无论它何时检测到由lEvent参数指明的网络事件.要发送的消息由wMsg参数标明.被通知的套接口由s标识.
本函数自动将套接口设置为非阻塞模式.
lEvent参数由下表中列出的值组成.
值 &n......
Windows Sockets:操作顺序(2007-03-25 11:21:00)
摘要:本文以对照方式阐释了服务器套接字和客户端套接字的操作顺序。因为这些套接字使用 CArchive 对象,所以它们必然是流式套接字。流式套接字通信的操作顺序
在构造 CSocketFile 对象之前,下面的顺序对 CAsyncSocket 和 CSocket 都是准确的(只有少数几个参数不同)。从构造 CSocketFile 对象开始,顺序只适用于 CSocket 。下表阐释了在客户端和服务器之间设置通信的操作顺序。
设置服务器和客户端之间的通信
服务器
客户端
// construct a socket
CSocket sockSrvr;
// construct a socket
CSocket sockClient;
// create the SOCKET
sockSrvr.Create(nPort); 1,2
// create the SOCKET
sockClient.Create( ); 2
// start listening
sockSrvr.Listen( );
// seek a connection
sockClient.Connect(strAddr, nPort); 3,4
// construct a new, empty socket
CSocket sockRecv;
// accept connection
sockSrvr.Accept( sockRecv ); 5
// construct file object
CSocketFile file(&sockRecv);
// construct file object
CSocketFile file(&sockClient);
// construct an archive
CArchive arIn(&file,
CArchive::load);
- 或 -
CArchive arOut(&file,
CArchive::store);
- 或两者 -
// construct an archive
CArchive arIn(&file, ......
Socket CAsyncSocket CSocket CSocketFile(2007-03-24 18:55:00)
摘要:Socket有同步阻塞方式和异步非阻塞方式两种使用,事实上同步和异步在我们编程的生涯中可能遇到了很多,而Socket也没什么特别。虽然同步好用,不费劲,但不能满足一些应用场合,其效率也很低。
也许初涉编程的人不能理解“同步(或阻塞)”和“异步(或非阻塞)”,其实简单两句话就能讲清楚,同步和异步往往都是针对一个函数来说的,“同步”就是函数直到其要执行的功能全部完成时才返回,而“异步”则是,函数仅仅做一些简单的工作,然后马上返回,而它所要实现的功能留给别的线程或者函数去完成。例如,SendMessage就是“同步”函数,它不但发送消息到消息队列,还需要等待消息被执行完才返回;相反PostMessage就是个异步函数,它只管发送一个消息,而不管这个消息是否被处理,就马上返回。
一、Socket API
首先应该知道,有Socket1.1提供的原始API函数,和Socket2.0提供的一组扩展函数,两套函数。这两套函数有重复,但是2.0提供的函数功能更强大,函数数量也更多。这两套函数可以灵活混用,分别包含在头文件Winsock.h,Winsock2.h,分别需要引入库wsock32.lib、Ws2_32.lib。
1、默认用作同步阻塞方式,那就是当你从不调用WSAIoctl()和ioctlsocket()来改变Socket IO模式,也从不调用WSAAsyncSelect()和WSAEventSelect()来选择需要处理的Socket事件。正是由于函数accept(),WSAAccept(),connect(),WSAConnect(),send(),WSASend(),recv(),WSARecv()等函数被用作阻塞方式,所以可能你需要放在专门的线程里,这样以不影响主程序的运行和主窗口的刷新。
2、如果作为异步用,那么程序主要就是要处理事件。它有两种处理事件的办法:
第一种,它常关联一个窗口,也就是异步Socket的事件将作为消息发往该窗口,这是由WinSock扩展规范里的一个函数WSAAsyncSelect()来实现和窗口关联。最终你只需要处理窗口消息,来......