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