- 博客(22)
- 收藏
- 关注
转载 乔布斯 :斯坦福大学演讲
<br /> 今天,很荣幸能参加斯坦福——这所世界上最优秀的大学之一的毕业典礼。我未从大学毕业,说实话,这是我离大学毕业最近的一刻。今天,我只讲三个故事,不谈大道理,三个故事就好。<br /> 第一个故事,是关于人生中的点点滴滴怎么串连在一起。<br /> 我在里德学院(Reed college)待了六个月就办休学了。到我退学前,一共休学了十八个月。那么,我为什么休学?<br /> 这得从我出生前讲起。我的亲生母亲当时是个研究生,年轻未婚妈妈,她决定让别人收养我。她强烈觉得应该让有大学毕业
2011-02-03 10:19:00
561
原创 对象列表的更改
现在加了一些新的功能,获取列表这个地方又不得不再动了。 首先是加入自定义对象,而且对象有可能是科室,组或操作员 传来的字符窜我要先解析成成一个名单,然后再跟当前的列表比较 比如:字符串为‘departcode:0021|opercode:0039|group:0001’ 我要解析成 0, 0021 2,0039 1,0001 然后在比较的时候的判断 如果是科室和操作员,我可以直接跟当前的USERLIST比较,但如果是GROUP的话,我就要查询数据库
2011-01-26 10:13:00
485
原创 会议讨论结果
<br /> 会议好几天已经说要开了,因为东西还没做完,我也不急着做什么展示,今天教授说公司要看下,丑媳妇儿到底是要见公婆的,于是乎便到会议室跟大家一起讨论去了。<br /> 会议主要的争论点在如何对消息进行处理上,我之前的方式是对用户对消息进行手工处理,就是双击一下就可以把消息消了,但几位老大些都要实现自动消消息,要我们提供相关的函数,在他们处理某条消息的时候,同时把消息删了,本来消息系统跟公司的其他系统都是分开的,几乎没有耦合,如果这样实现的话,很多都只能通过数据库来控制,而且不同的程序
2011-01-24 17:12:00
1357
原创 找到解决方法了。。。
<br /><br />直接上代码,惭愧了<br /> <br /> public<br /> { Public declarations }<br /> procedure LBWndProc(var message:TMessage);<br /> end;<br /> <br />var<br /> Form5: TForm5;<br /> OldWndProc:TWndMethod;<br />implementation<br /> <br />{$R *.dfm}<br />
2011-01-21 15:41:00
498
原创 继续消息窗口
今天准备再把消息窗口完善下,算是完工了,结果还是被一个很普通的问题难住了。 先实现窗口的动画显示,这里没什么,TIMER是最简单的方法,然后是窗口在关闭时的渐隐效果,也没问题,用TIMER照样解决,如果不用TIMER的话,可以写个循环,在循环里加上application.handlemessage就可以了。 然后在双击自动创建的LABEL时问题出来了,我同时在LABEL上加入了单击和双击时间,结果双击时间之前总要执行以下单击事件,双击事件倒是没法激发了,在MOUSEDOWN里用shift状态来
2011-01-21 14:52:00
364
原创 消息窗口的完成
<br /> 今天消息窗口终于差不多做完了,其实按照本来的打算,提示窗口还是比较简单的,但是想的多了,也变的复杂起来,主要是没有读消息界面,所以所有的消息都要在窗口上反映出来,而且最好的情况是在一个窗口上显示,看了不少东西,走了不少弯路,现在基本实现,差不多这一周都在弄这个,的确是超出我的想象,在写的过程中也发现了GDI画图的重要性,以后在这方面要好好学习下,不管是DELPHI还是C++,都少不了学这个。<br /> 做出来的窗口因为用了好几种控件,导致编译出来的东西有1M,再加上实现其他逻辑,最后
2011-01-20 19:43:00
394
原创 当前任务列表
1.完善客户端发送保持在线消息,列表中会有乱码的问题 2.调整消息列表部分,保证消息的正确无遗漏发送。 3.在接受消息的时候采用多线程处理 4.完成几种通知消息的方式,并实现日志写入 5.完善服务端主界面对状态的显示 6.加入消息和用户结构体所占内存的释放 6.完成停止服务器功能 8.确认客户端弹出窗体的显示模式 9.编写客户端,并同时修改服务端对消息的处理 10.开始把客户端封装成DLL
2011-01-14 17:13:00
402
原创 压力测试
<br /> 教授要求做一个压力测试,看多线程下消息的发送情况,之前做起来的确有点心虚,服务端放了太多的逻辑判断和数据库操作,不知道他到底能够承载多少客户端,而且能够同时相应多少条消息。<br /> 写了个测试程序,测试了3种情况,先测试多线程下循环发送,也是压力最大的测试,这样情况下,因为服务器接受的时候没有建多线程,因此会卡死一段时间,10几秒内数据库中插了2700多条记录,不过服务器列表中只保存了10几条记录。<br /> 然后测试同时开50个线程,只发一条记录,相同于客户端同时向服
2011-01-14 17:02:00
548
原创 现在的任务
基础类完成后,还有相当多的任务需要去完成,服务端前台的实现,客户端弹出窗口的实现,客户端DLL的封装,这些都还刚开始,技术上不存在什么难度,不过都需要一些时间,而不是能一蹴而就的,现在我设定的工作顺序是: 1:先实现弹出窗口,这一块主要是客户端在收到消息的时候,弹出消息窗口,并在消息里显示收到的内容,窗口上有退出按钮,当用户点退出按钮,退出窗口。 并考虑实现下面的功能: 如果程序收到很多个消息,将可以显示消息的数量,类似QQ那种,这种方式比较麻烦。实际应用
2011-01-13 14:39:00
389
原创 开始前台的实现
<br /> 现在基础的类都已经实现,昨天把各个部分都测了一下,客户端发消息 服务端接受,保存,然后再定时分发消息都是正确的<br /> <br />,分发后,客户端也可以响应到消息,可以提供一个测试的DEMO,并准备进行一下压力测试,要测试在200个左右的客户端同时连接<br /> <br />的时候,服务器的负载如何。<br /> 还有就是要实现前台的界面显示,因为之前我都是单独建了个TIMSERVER类,这个类有自己的HANDLE,可以响应消息,相当于单独的一个窗体,这时候问题就出来,我需要在
2011-01-13 11:46:00
357
原创 开始测试
<br /> 今天把测试程序基本完成了,包括服务端和客户端,把流程又在梳理了一遍,现在的流程可以按之前的设想来跑了,测试当中碰到一个问题,就是服务器无法响应,而我是是为imserver类创建了句柄,而且在WSAAsyncSelect中也是监听了这个句柄,卡了一会儿找不到原因,而DELPHI本身SERVERCLIENT控件也是采取同样的模式,他又是怎么实现的呢,于是看VCL,发现了他的WndProc中是这么写的<br /><br /> try<br /> Dispatch(Message);<br
2011-01-11 16:50:00
1388
原创 流程部分完成
<br /> 今天把几个要的部分,包括目标列表的获取,消息的分发,还有定时消息的处理,都基本完成了,下面的步骤是完成初始化,明天争取弄完,后天要做出一个客户端和服务端来进行基本的功能测试。<br /> 初始化这一步其实之前都做了,但是现在根据设计的变动,还要进行再修改,这些搞定了,模型也就基本出来了。<br /> 这周内要做出测试程序来,要对之前各种的设计进行验证,肯定还要调整很多地方,有些可能还无法预料。我也很想看能做出什么东西来了,加油干吧!<br /> 这段时间写这个,收
2011-01-10 17:05:00
382
原创 对象列表的实现
实话说这个地方让我有点泄气,复杂度比我想象的高多了,虽然之前考虑过不少,但真正写的时候,总是有所遗漏,要考虑的东西太多了,虽然标志只有那几个,但是几乎每种情况都要判断,而且处理方法各不相同,哎,主要是工作组这块搞复杂了,而现在这个东西还不知道好久开始用,只是为了照顾到可扩展性,又必须加在里面,这里没有什么捷径,必须考虑到各个细节,慢慢写,写完之后就是坦途了,但愿。。。
2011-01-10 10:41:00
332
原创 感觉到困难了
<br /> 基本的设计框架都定下来了,现在基本就剩正式的编码了,可能是经验不够,前期的设计并不是很完善,在真正写的时候,发现经常要修改之前写的函数过程,甚至流程,而且写代码时,还是不可避免地写了不少重复性工作,主要应该是设计的问题,考虑不周,但如果真的考虑周全的话,对现在的我来说,的确也很难,看了不少示例和相关的资料,我觉得按现在的设计来实现是不成问题的,但是可能要花长一点时间。本来系统构想的比较简单,但现在,功能的增加和流程的改变,增加了复杂性,我在写代码的时候多感受到了这一点,我在这这里的时候,要考
2011-01-06 14:37:00
296
原创 客户端在线方式的实现模式
想了一下,我的保持在线信息只是很简单地发所在系统的代码和操作员代码,所以存在这样一个问题,如果这个操作员已经掉过线,再发一道保持在线的消息,便显得没什么用处,虽然可以往服务端发消息,但是无法收到服务器发来的消息。 有一种方法是在服务器端有在线和不在线两种模式,如果掉线,会显示一个灰色的信息,定期(每天)清除一次,这种方式是可行的,但是不太严谨。 如果客户端掉线,只要能收到服务器发来的消息,就说明他是在线的,所以分在线和离线两种模式,还是有必要的,但如果每个结构体都保存客户端信息,并且每次收到一
2011-01-05 16:56:00
353
原创 数据库压力测试
<br /> 昨天下午的时候教授说是做一个对数据库的压力测试,就是采用多线程,循环执行一个存储过程,并且可以设置持续时间。不算困难的任务。<br /> 本来打算用API写,想一想算了,又要同步又要自己控制很多东西,另外的原因是多个线程要调用同一个函数,网上查了一下,说是可能有问题,原因不明,终了还是采用了DELPHI的线程类,简单的事情更简单了。碰到的一个新问题是在线程里创建ado控件的时候报错,说没有调用coinitliazise初始化,是调用COM控件的原因,查了下VCL,找到这个函数,把初始化和释
2011-01-05 11:28:00
474
原创 流程确认
今天又跟教授讨论了一下,流程基本确认了下来,解析XML放在客户端,跟消息有关的逻辑,包括对数据库的操作,都放在服务端, 现在打算这样: 1。客户端传入一个XML,然后发送的时候将其解析为结构体,直接发过去,然后服务器根据这个结构体来处理。 2。实现一个临时的消息列表,将消息临时保存在其中,优先从列表中读数据,减少对数据库的操作。 3。实现保持在线的机制,由客户端定时给服务端发送一个消息来确认其处于在线状态,一旦不在线,则发送的时候,将不再发送给他。 4。在发送消
2011-01-04 11:32:00
418
原创 新年第一周
<br /> 又开始要进入工作状态了,经过三天的忙碌,书没怎看,代码也基本没写,要赶快把状态找回来,时间紧迫啊<br /> 家搬近了的确是方便,至少以后不会再担心迟到了。再者节省了不少时间,而我现在最缺少的就是时间,好好利用起来吧
2011-01-04 09:12:00
274
原创 元旦快乐,新年新希望
<br /> 转眼间2010就过去了,感慨很多,眼见自己已经站在青春的尾巴上了,还是一无所成,在技术上虽然有所进步,但还是窥其门而不入。现在做的事,离自己的真正的兴趣差别还很大,而又不得不在这条路上走下去,就是所谓的南辕北辙,以后的路究竟该怎么走呢?还需要再好好想想。
2011-01-01 11:47:00
642
原创 实现模式的确认
<br /> 昨天经过一些考虑,现在基本可以确定下来采取教授的模式,我之前主要考虑到尽量降低服务器的负载,因为以我的观点,作为一个网络服务器应将资源主要放在手法消息,操作数据这些单独分开比较好,因为要不停地读数据库,比收发一条消息浪费更多的资源。<br /> 但经过仔细考虑,服务器承受这些应该是没问题的,逻辑的判断固然占CPU,但如果有一台单独的机子来做服务器,以现在的电脑配置,完成这个任务应该是没有问题的,所以我考虑将其各种逻辑判断都放在服务器,在把服务端实现之后,要测试一下其最大承载能力,
2010-12-31 12:26:00
316
原创 消息系统定时任务的实现
<br /> <br /> 服务器端基本完成,关键在于handleTimingMsg这个函数<br /> 实现流程如下:<br /> 他是个定时的任务,暂定每30秒循环一次<br /> 先从数据库中消息列表,然后根据数据库中的消息,形成一个TMSG结构体,再根据这个结构体中的流程编号和一些标志,来获取对象列表。<br /> 这里的问题是,需要在之前将TMSG保存在数据库中,然后再读取,这样一来,存在一个性能浪费的问
2010-12-30 15:34:00
467
原创 新博落户了
<br /> 从今天,我打算将这里当做我的一个开发的基地了,这里将记录我在开发中过程中遇到的问题,或者一些解决方法和心得,总之,我想让开发的整个过程都能记录下来,如果能有你的关注当然更好了,不过请原谅我自言自语的风格,因为我在开发的时候写的我文档都是自己提问题,然后再找方法。公司中有点封闭,因为现在用DELPHI的人少,高手更是少了,所以希望能得到各位高人的指点,毕竟咱们程序员都应该保持一种开放的心态,博览广识,才是开发人员应该做的
2010-12-30 15:21:00
278
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人