Profilo di Bin蜉蝣之冢FotoBlogElenchiAltro ![]() | Guida |
|
17 febbraio house for rent华锈路255弄 整套2500块.
08年底的新房源,刚装修结束.
房子的外面.房间在4楼和5楼.2套.下面是4楼的. 这个是大门... 冰箱.. 厨房 浴室.. 还是浴室 小房间 阳台,还没打扫过... 朝南的 大房间.. 朝南的 大房间.. 朝南的 大房间..家里的大床.
18 gennaio 动画片里的场面06 gennaio 转:C#和C++结构体Socket通信转: C#和C++结构体Socket通信最近在用C#做一个项目的时候,Socket发送消息的时候遇到了服务端需要接收C++结构体的二进制数据流,这个时候就需要用C#仿照C++的结构体做出一个结构来,然后将其转换成二进制流进行发送,之后将响应消息的二进制数据流转换成C#结构。 1、仿照C++结构体写出C#的结构来 1using System.Runtime.InteropServices; 2 ![]() 3 [Serializable] // 指示可序列化4 [StructLayout(LayoutKind.Sequential, Pack = 1)] // 按1字节对齐5 public struct Operator6 ![]() 7{ 8 public ushort id;9 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 11)] // 声明一个字符数组,大小为1110 public char[] name;11 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 9)]12 public char[] pass;13 ![]() 14 public Operator(string user, string pass) // 初始化15 { 16 this.id = 10000;17 this.name = user.PadRight(11, '\0').ToCharArray();18 this.pass = pass.PadRight(9, '\0').ToCharArray();19 }20 }21 ![]() 22 ![]()
2、注意C#与C++数据类型的对应关系
整个结构的字节数是22bytes。 对应的C++结构体是:
1 typedef struct2{ 3 WORD id; 4 CHAR name[11];5 CHAR password[9];6 }Operator;7 ![]() 8 ![]() 3、发送的时候先要把结构转换成字节数组
1 using System.Runtime.InteropServices; 2 ![]() 3 /// <summary> 4 /// 将结构转换为字节数组5 /// </summary>6 /// <param name="obj">结构对象</param>7 /// <returns>字节数组</returns>8 public byte[] StructToBytes(object obj)9 { 10 //得到结构体的大小11 int size = Marshal.SizeOf(obj);12 //创建byte数组13 byte[] bytes = new byte[size];14 //分配结构体大小的内存空间15 IntPtr structPtr = Marshal.AllocHGlobal(size);16 //将结构体拷到分配好的内存空间17 Marshal.StructureToPtr(obj, structPtr, false);18 //从内存空间拷到byte数组19 Marshal.Copy(structPtr, bytes, 0, size);20 //释放内存空间21 Marshal.FreeHGlobal(structPtr);22 //返回byte数组23 return bytes;24 ![]() 25 }26 ![]() 27 ![]() 接收的时候需要把字节数组转换成结构
1/// <summary> 2 /// byte数组转结构3 /// </summary>4 /// <param name="bytes">byte数组</param>5 /// <param name="type">结构类型</param>6 /// <returns>转换后的结构</returns>7 public object BytesToStruct(byte[] bytes, Type type)8 { 9 //得到结构的大小10 int size = Marshal.SizeOf(type);11 Log(size.ToString(), 1);12 //byte数组长度小于结构的大小13 if (size > bytes.Length)14 { 15 //返回空16 return null;17 }18 //分配结构大小的内存空间19 IntPtr structPtr = Marshal.AllocHGlobal(size);20 //将byte数组拷到分配好的内存空间21 Marshal.Copy(bytes, 0, structPtr, size);22 //将内存空间转换为目标结构23 object obj = Marshal.PtrToStructure(structPtr, type);24 //释放内存空间25 Marshal.FreeHGlobal(structPtr);26 //返回结构27 return obj;28 }29 ![]() 4、实际操作:
1 using System.Collections;2 using System.Collections.Generic;3 using System.Net;4 using System.Net.Sockets;5 ![]() 6 byte[] Message = StructToBytes(new Operator("user","pass")); // 将结构转换成字节数组7 ![]() 8 TcpClient socket = new TcpClient();9 ![]() 10 socket.Connect(ip,port);11 ![]() 12 NetworkStream ns = Socket.GetStream();13 ![]() 14 ns.Write(Message,0,Message.Length); // 发送15 ![]() 16 byte[] Recv = new byte[1024]; // 缓冲17 ![]() 18 int NumberOfRecv = 0;19 ![]() 20 IList<byte> newRecv = new List<byte>();21 ns.ReadTimeout = 3000;22 try23{ 24 do25{ 26 // 接收响应27 NumberOfRecv = ns.Read(Recv, 0, Recv.Length);28 for (int i = 0; i < NumberOfRecv; i++)29 newRecv.Add(Recv[i]);30 }31 while (ns.DataAvailable);32 byte[] resultRecv = new byte[newRecv.Count];33 newRecv.CopyTo(resultRecv, 0);34 ![]() 35 Operator MyOper = new Operator();36 ![]() 37 MyOper = (Operator)BytesToStruct(resultRecv, MyOper.GetType()); // 将字节数组转换成结构38 ![]() 在这里取值的时候可能会出现只能取到一个字段,剩余的取不到的问题,怎么回事我也搞不懂,反正我的解决办法就是按照字节的顺序从resultRecv里分别取出对应的字段的字节数组,然后解码,例如: Operator.name是11个字节,最后一位是0,Operator.id是2个字节,那么从第3位到第12位的字节就是Operator.name的内容,取出另存为一个数组MyOperName,Encoding.Default.GetString(MyOperName)就是MyOper.name的内容。
1 socket.Close();2 ![]() 3 ns.Close();4 ![]() 以上是从别处转过来的,方便自己看看.特此注明! 12 dicembre 国之将亡,必有妖孽国之将亡,必有妖孽.
妖孽之甚,若秋叶.
昔一白丁,始从安保,痴游戏,遂三荐于国,冀国策,诺!
随诸策议,寐,君温而不怒,若才之性,惹诸策.遂策之议,癫者癫,寐者寐,莫不现才之性,君大乐.
才之将帅者,于国出.君顿悟,无奈癫者当道,求良方,白丁谏曰妖孽不除何以正国.诺!遂逐其去.
25 maggio ibatis与MYSQL问题解决记录软件环境: 新项目用IBATIS+spring +struts数据库用MYSQL
IBATIS问题:
SQLMAPCONFIG不能正确加载:检查之后发现是相对路径问题。
接着又发现SQLMAP解析出错:
1,DTD被我删掉了(之前因为路径问题,手动改了很多东西)
2,在正确添加DTD以后还是不能正常解析,访国外BBS,发现是命名空间被我禁用造成。(我是用ECLIPSE查件ABATOR自动生成的)
至此问题解决。暂时只测试了一个表。
下面问题又来了,中文问题
我是UTF-8的JSP页面+FILTER请求UTF-8,在插入数据库以后,中文是??。
MYSQL我是第一次用。GOOGLE一把,发现在MY.INI里,也要设一下,不过没用。。。。
最后一高人大哥的BLOG里找到答案,在连接URL最后加上?characterEncoding=utf-8
一下给出那位大哥的文章连接 http://netbeyond.blog.hexun.com/12666107_d.html 10 maggio 被MS郁闷了两天.这个问题很妖异我本来做了2个下拉框,一个省,一个城市,用Icallbackeventhandler接口来实现所谓的AJAX效果.郁闷从此开始,回调不执行了.我开始用ALERT查JS代码,无果.接着看后台代码,那几行也没什么问题,在PAGEONLOAD里只有2段代码,一段是注册JS,一段是填充省份下拉框,我把填充那段注释掉,再运行一次,结果奇迹般的正常了,我开始怀疑是不是代码冲突.试了几个位置,只要是执行了填充的,就不能正常回调了.
以下是我的代码:
protected void Page_Load(object sender, EventArgs e)
{ initSelect(); ClientScriptManager cm = Page.ClientScript; String cbReference = cm.GetCallbackEventReference(this, "args", "GetData", "", false); String callbackScript = @"function CallServer(args,context) { args=select('"+this.DropDownList2.ClientID+"',context);" + cbReference + ";}"; cm.RegisterClientScriptBlock(this.GetType(), "CallServer", callbackScript, true); } private void initSelect() { Bo.ProvinceBo pbo = new Bo.ProvinceBo(); this.DropDownList2.DataSource = pbo.GetAll(); this.DropDownList2.DataTextField = "prov"; this.DropDownList2.DataValueField = "prov"; this.DropDownList2.DataBind(); } 然后开始分段测试initSelect()里面的语句发现,只要把DataValueField 等于ID列,就可以正常执行.prov列是中文,ID列是数字,只有这2个区别.
现在问题找到了.中文......网上搜了一下,也有一位大哥碰到过这样的问题,他讲的比较全面.
15 aprile 史前一万年开始:
男主角倒在地上,他面前是一只剑齿虎,它看了看他,就走了,
迷之声:"我们有自己的预言,能和剑齿虎沟通的人,会带领我们"
这个时候,镜头很严肃的转向一块石头,上面的涂鸦,就是之前的场景.
看到这里,我笑了,整个放映厅都笑了.我想起了陈凯歌,想起了满神,想起了馒头.....
结尾:
男主角带领众人干倒了法老,可是就在女主角满心欢喜的跑向男主角的时候,她中箭了......
男主角悲痛欲绝,奔到了长齿象面前,挑逗它,可是,这次的男主角不是金城武,长齿象也不是刘德华.......
它没有和他对决,走了......
男主角若有所悟,奔回女主角身边.
迷之声:"老妈妈用最后一口气,就了她!"
女主角倒吸了一口凉气,醒了,他们拥抱,他们欢呼......
她就是 张子仪.....(对不起,我现在才发现,不知道她的名字具体怎么写,如果写错了,请原谅.)
26 novembre 微软面试问题上礼拜5去微软面试了,职位是SDET,SOFTWARE DEVELOPMENT ENGINEER IN TESTING
结果么,当然是大败而归了.我把我记得的面试题放上来.都是细节问题,要吃透一门语言,真是不容易的事情.
连表结构和ARRAYLIST的区别
ASP.NET里面代码后置。。页面和后台是怎么关联的
为什么C#不支持基类多重继承出于什么样的考虑
如果继承的多个类中有相同名称的方法,调用方法就会产生歧义----我暂时只能说这么多了 SOAP和HTTP有什么区别为什么说WEB服务用SOAP的
COOKIE是怎么回师没状态怎么找到我要的COOKIE
URL请求一个TXT页面的请求流程
IIS和APS.NET之间的关系
XML和HTML有什么联系
怎么样把XML转换成HTML
什么是XSTL?XSTL和XML是怎么联系的
写一个具体的XSTL
什么是线程。?线程之间是怎么控制的
怎么跟踪SQL语句
Stringbuilder和string的区别
你知道什么是GAC吗
什么是聚合索引
======================
AJAX是什么? 请具体说一下请求流程;返回是什么? 用IE打开一个XML会发生什么情况? URL请求一个ASPX页面的请求流程
HAVING的作用,outjoin innerjoin leftjoin rightjoin分别讲述一下。
HAVING用于对使用了聚合函数的某一列进行条件判断,比如HAVING SUM(COST)>300 class a(){f()}
class b() :a{f()} a a1 = new b(); a1.f(); 调用的是哪个类的方法;a类的f();---我写过代码测试过了,如果A类和B类都有构造函数,那么调用的过程是这样的,A构造,B构造,A.F()方法 f(int a)这个方法的入参是一个值类型,怎么把他转换成引用类型;f(ref int a)
管理COOKIE是谁的工作?
值类型和引用类型在内存中的什么位置;GC是什么,GC会对哪种类型产生效果;
值放在栈中,引用放在堆中,GC是垃圾回收,它只对引用类型产生效果 简单讲一下堆和栈;
讲一下常用算法,描述一下他们的实现
VIEWSTATE是什么;在页面以什么形式存在;VIEWSTATE中的数据会回传到服务器吗?如果在一个页面的输入框中添写了数据,VIEWSTATE会改变吗?服务器怎么知道客户端需要改变什么?
页面缓存,HIDE标签, 20 luglio 在AJAX中使用JSON串来传递数据用JSON串,从客户端把数据扔到服务器,服务器解析.
把我的包名,类名,方法名,和变量找出来,控制类调用相应的方法.我的测试方法返回的是STRING.在页面又遇到了AJAX的中文问题,这是一个老问题了,我没有理会,测试的主要目的是动态调用服务器端的方法.上次就做到这里为止.
这次我在想,从服务器端,扔一个JSON串,到客户端解析成JS对象,然后显示.这样可以用.RESPONSETXT而不用XML格式来处理大量数据了,而且,XML在客户端生成,JAVA和.NET里都比较累,一不小心弄错了,找起来也麻烦.如果用JSON串,可能会好一些,不知道是不是这样,一会去试试.
17 luglio 关于AJAX与JSON我之前用AJAX做过一个项目,虽然在用户体验方面表现的确实不错,但是数据的传递做的不太好,当时只是小试,而且XML的解析和构成是自己YY出来的,相当笨拙.虽然在HTML上看不出什么问题,但是我自己心里知道,这些代码是经不起WEB考验的.而且,对于AJAX来说,我的使用显得太狭隘,只是传传数据,当时就觉得自己的技术有些干涩.
前段日子,有人对我说,可以用AJAX调用服务器端的 类.方法() ,我当时就觉得这才是一个广义上的AJAX使用,但是一直想不出怎么实现,我被GET 和POST的传值方式束缚住了,那个时候我就否定了用GET方法来实现,理由很简单,太笨拙,而且一个太长的URL本身就是包袱,但是POST在AJAX中,老实说,我没有用过.
知道最近我开始看JSON,我觉得这样的数据结构太好了,似乎很容易实现方法的调用.
虽然在一开始学习AJAX的时候,JSON的书已经在硬盘上了,而且就在AJAX边上,如果当时早一点看,我想,之前那个项目,应该有更多有趣的地方.
不过看了总不算晚.总比没看要好.
明天试试这个想法.JAVA和ASPX上都试试吧...... 30 giugno 转: IIS打不开ASP解决方案 暑假回来后IIS(XP下)突然出了问题(未作过任何设置,只是升级过):无法解释ASP/PHP,对于一个网站设计人员来说,这就象吃饭没有筷子一样不爽。后来试过多种解决方案均无效,算了,等不及,还是用APACHE了,但用起来总是感觉怪怪的;后来又在虚拟机中装了2K Server 来运行IIS,但这样总是太麻烦,遂决定彻底解决XP下IIS无法解释动态页的问题,又在网上搜索之,终于于今日解决,下面将流程写于下,以供来人方便: 出错原因: XP下IIS无法解释ASP等动态页主要是由微软的一个BUG造成的。由于系统原因使IWAM帐号的密码错误,致使出现IIS500内部错误。 IWAM 帐号简介: IWAM 账号是安装 IIS5 时系统自动建立的一个内置账号,主要用于启动进程之外的应用程序的Internet信息服务。IWAM账号的名字会根据每台计算机 NETBIOS 名字的不同而有所不同,通用的格式是IWAM_MACHINENAME,即由“IWAM”前缀、连接线“_”加上计算机的NETBIOS名字组成。我的计算机的NETBIOS名字是JALLEN,因此我的计算机上IWAM账号的名字就是IWAM_JALLEN,这一点与IIS匿名账号ISUR_MACHINENAME的命名方式非常相似。 IIS 500错误最终原因: IWAM账号建立后被Active Directory、IIS metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,并由操作系统负责这三方保存的IWAM密码的同步工作。按常理说,由操作系统负责的工作我们大可放心,不必担心出错,但不知是BUG还是其它什么原因,系统的对IWAM账号的密码同步工作有时会失败,使三方IWAM账号所用密码不统一。当IIS或COM+应用程序使用错误IWAM的密码登录系统,启动IIS Out-Of-Process Pooled Applications时,系统会因密码错误而拒绝这一请求,导致IIS Out-Of-Process Pooled Applications启动失败,也就是我们在ID10004错误事件中看到的“不能运行服务器{3D14228D-FBE1-11D0-995D-00C04FD919C1} ”(这里{3D14228D-FBE1-11D0-995D-00C04FD919C1} 是IIS Out-Of-Process Pooled Applications的KEY),不能转入IIS5应用程序,HTTP 500内部错误就这样产生了。 解决方法: 知道了导致HTTP 500内部错误的原因,解决起来就比较简单了,那就是人工同步IWAM账号在Active Directory、IIS metabase数据库和COM+应用程序中的密码。 操作过程/步骤: 具体操作分三步,均需要以管理员身份登录计算机以提供足够的操作权限(IWAM账号以IWAM_MACHINENAME为例)。 (一)更改Active Directory中IWAM_MACHINENAME账号的密码 因IWAM账号的密码由系统控制,随机产生,我们并不知道是什么,为完成下面两步的密码同步工作,我们必须将IWAM账号的密码设置为一个我们知道的值。 1、控制面版中选择“管理工具”->"计算机管理"->"本地用户和组" ->"用户" 2、找到“IWAM_MACHINENAME”,右击选择“重设密码(T)...”,在跳出的重设密码对方框中给IWAM_MACHINENAME设置新的密码,这儿我们设置成“IIS500”(没有引号的),确定,等待密码修改成功。 (二)同步IIS metabase中IWAM_MACHINENAME账号的密码 可能因为这项改动太敏感和重要,微软并没有为我们修改IIS metabase中IWAM_MACHINENAME账号密码提供一个显式的用户接口,只随IIS5提供了一个管理脚本adsutil.vbs,这个脚本位于C:\inetpub\adminscripts子目录下(位置可能会因你安装IIS5时设置的不同而有所变动)。 adsutil.vbs脚本功能强大,参数非常多且用法复杂,这里只提供使用这个脚本修改IWAM_MACHINENAME账号密码的方法: adsutil SET w3svc/WAMUserPass Password "Password"参数就是要设置的IWAM账号的新的密码。因此我们将IIS metabase中IWAM_MACHINENAME账号的密码修改为“IIS500”的命令就是: c:\Inetpub\AdminScripts>adsutil SET w3svc/WAMUserPass "IIS500" 具体操作:"运行"->"CMD"->转到"C:\Inetpub\AdminScripts>"目录->输入 adsutil SET w3svc/WAMUserPass "IIS500" 确定即可; 修改成功后,系统会有如下提示: WAMUserPass: (String) "******" (三)同步COM+应用程序所用的IWAM_MACHINENAME的密码 实际上可能微软已经发现IWAM账号在密码同步方面存在问题,因此在IIS5的管理脚本中单独为IWAM账号密码同步编写了一个脚本synciwam.vbs,我们就使用这个IWAM账号的同步脚本synciwam.vbs来操作,这个脚本同adsutil.vbs一样,也位于C:\inetpub\adminscripts子目录下(位置可能会因你安装IIS5时设置的不同而有所变动)。 synciwam.vbs脚本用法比较简单: cscript synciwam.vbs [-v|-h] “-v”参数表示详细显示脚本执行的整个过程(建议使用),“-h”参数用于显示简单的帮助信息。 我们要同步IWAM_MACHINENAME账号在COM+应用程序中的密码,只需要执行“cscript synciwam.vbs -v”即可,如下: cscript c:\inetpub\adminscripts\synciwam.vbs -v 具体操作:在以上界面接着输入 cscript synciwam.vbs -v 确定即可; 以下是成功后的系统显示信息: Microsoft (R) Windows Script Host Version 5.6 版权所有(C) Microsoft Corporation 1996-2000。保留所有权利。 WamUserName:IWAM_MACHINENAME WamUserPass:IIS500 IIS Applications Defined: Name, AppIsolated, Package ID w3svc, 0, {3D14228C-FBE1-11d0-995D-00C04FD919C1} Root, 2, IISHelp, 2, IISAdmin, 2, IISSamples, 2, MSADC, 2, ROOT, 2, IISAdmin, 2, IISHelp, 2, Root, 2, Root, 2, Out of process applications defined: Count: 1 {3D14228D-FBE1-11d0-995D-00C04FD919C1} Updating Applications: Name: IIS Out-Of-Process Pooled Applications Key: {3D14228D-FBE1-11D0-995D-00C04FD919C1} 它首先从IIS的metabase数据库找到IWAM账号"IWAM_MACHINENAME"并取出对应的密码“IIS500”,然后查找所有已定义的IIS Applications和Out of process applications,并逐一同步每一个Out of process applications应用程序的IWAM账号密码。 使用synciwam.vbs脚本时,要注意一个问题,那就是在你运行synciwam.vbs之前,必须保证IIS metabase数据库与Active Directory中的IWAM密码已经一致。因为synciwam.vbs脚本是从IIS metabase数据库而不是从Active Directory取得IWAM账号的密码,如果IIS metabase中的密码不正确,那synciwam.vbs取得的密码也会不正确,同步操作执行到“Updating Applications”系统就会报80110414错误,即“找不到应用程序{3D14228D-FBE1-11D0-995D-00C04FD919C1}”。 PS:在同步COM+应用程序所用的IWAM_MACHINENAME的密码时又发生"Error: 8004E00F:"错误,于是在"控制面版"->"管理工具"->"组件服务"->"计算机"->"我的电脑"查看COM+应用程序,恩!居然这里出错,说无法与MICROSOFT 分布式事件处理协调程序交谈……;于是再查,得到如下解决方案。 解决步骤: 1、删除注册表中的键: &S226; HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC &S226; HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC &S226; HKEY_CLASSES_ROOT\CID 2、停止MSDTC服务:net stop msdtc 3、卸载MSDTC服务:msdtc -uninstall 4、重新安装MSDTC服务:msdtc -install 5、重新启动电脑 08 giugno 齐太公周文王有一天外出打猎,路上遇到一个算命的,-----古人都好占卜,尤其是那个时候,传说和历史交叉的时代,-----让那人给自己算了一卦,说是,打到的猎物,非兽非禽,乃是辅佐朝政,成就霸王之业的辅臣.文王当然是很高兴了。
西周时期,最有能力的人,那当然姜尚一定能算上一个。不过他当时,也不太被人认可,周游各个诸侯国,想做官,想发挥才能,可能是面试发挥不好,而且跑去求做官,诸侯大多是喜欢刁难刁难的,结果,老了老了,还没混出个名堂,算算也只有文王那里没有试过了,想了个法子,在文王狩猎的地方钓鱼,想给文王感觉是不期而遇,其实是,早等着,就怕他不来,所以我觉得,说,姜太公钓鱼,愿者上钩,我感觉,这鱼,就是文王嘛。。。。
果然这天终于被他等到了,碰巧了西伯侯也没心思打猎,都朝人打着注意呢。突然看到一老头,做在石头上,钓鱼呢。这老头,也没心思钓鱼,就指着人看他呢,看了他,他能有机会说话。这一下,两人一谈,和拍嘛。行,西伯侯首先忍不住了,就问他,周国的太公说,定有圣人会来西周辅佐我们,老人家这么博学,我想就是你吧。老姜果然辣,想了想,慢慢说,是的。然后直接被接回西周,尊为太师。叫他姜太公也是有由来的,就是因为从西伯侯的太公那里传出的话。西伯侯就说,吾太公望子久矣---意思是,我的太公期待你这个人,很久啦。他就被称为太公望了。
故事到这里,标题的三个字里,后两个字已经有了。
然后么,古时,能人执政,都有一个共同特点,就是制定刑法,时间一长,国家就强大了。文王这个时候死了,他儿子是武王。姜太公还活着。武王决定要完成大业。
商纣王倒霉催的,杀了王子比干,武王是准备要打了,不过,他也不急,想知道诸侯什么反映,摆出架势准备出征的时候,太公手拿黄钺念咒语似的说,集结船只,统领众兵,迟者斩首。军队走到一个地方,诸侯不请自来,武王这个时候说,不行,现在不是时候,撤兵了,又过了两年,真要打了,占卜---古人就这样---说不吉利,打了要吃亏,诸侯说,别打了吧,姜尚说,现在不打,还等到什么时候,打!这就打了,一打就灭了一个商,成就了一个周,后来因为姜尚功劳太大,就封给他一个齐国。 齐太公,就这么来的。。。。13 aprile 卡拉赞站在死亡十字的入口,警示排上写着:警告,死亡十字!
职业的优势,稍微给了我一点自信,走一走以前没有想过要走的路,骑着瘦马,我前进了.未到深处,便已是一条窄路,每隔一段距离盘踞着一只秃鹫,路相当漫长.尽管有马代步,依旧相当危险,可能我的瘦马不够快.
这条路的另一头,是一座自然风化的窄桥,通向另一座山,站在这窄桥上,我看到了崖底的小溪,看到了一座高塔,时间给它刻下了深深的印记,我仰望塔顶,几只乌鸦在盘旋,隐隐的透着亡魂的悲鸣,高塔的下面是城堡,似乎他的主人已舍弃它很久了,看着久了,就有一种想跳下去的冲动,幸好及时的克制住了.继续赶路,但我的目的地变了,我要去那里,那高塔的下面.
从一座山,到了另一座山,在一个丁字路口,我决定走向悬崖下城堡的路,路有点长,两边是食人魔的村庄,有点危险,但最终还是走向了下山的路,城堡的外围是一个村庄,房子已经破败,居住的已经不是人,而是亡灵,来到了城堡的范围,屏幕的中央突然出现一行小字,卡拉赞!
城堡入口的铁门忠诚的执行着主人最后的命令,但依旧阻止不了渴望的目光,那入口,便是进入副本的风墙.
原来,它一直在这里.我以为它是在我之后,原来是我在它之后! 02 aprile 写个演练项目,有个地方阻塞了.大家直接看代码吧....
private void DoRead(IAsyncResult ar)
{ int BytesRead; string strMessage; try
{ // Finish asynchronous read into readBuffer and return number of bytes read. BytesRead = _client.GetStream().EndRead(ar); if (BytesRead < 1) { // if no bytes were read server has close. Disable input window. //MarkAsDisconnected(); return; } // Convert the byte array the message was saved into, minus two for the // Chr(13) and Chr(10) strMessage = Encoding.GetEncoding("gb2312").GetString(readBuffer, 0, BytesRead-2); ProcessCommands(strMessage); // Start a new asynchronous read into readBuffer. _client.GetStream().BeginRead(readBuffer, 0, READ_BUFFER_SIZE, new AsyncCallback(DoRead), null); }
catch( Exception e) { //MarkAsDisconnected(); Console.WriteLine(e.Message); } } 这里接受到数据以后,收到聊天信息,一个FORM运行下面的代码SHOW一个聊天窗口,并加载聊天信息
chatFrm chatfrtemp;
private void Chatwith(UserConnect sender,string data) { if(chatRoom.Count==0) { chatfrtemp = new chatFrm(sender.Client,sender.Name); chatRoom.Add(sender.Name,chatfrtemp); chatfrtemp.Chat(data); chatfrtemp.Show(); } else if(chatRoom.Contains(sender.Name)) { chatfrtemp = (chatFrm)chatRoom[sender.Name]; chatfrtemp.Chat(data); chatfrtemp.Focus(); //chatfrtemp.Update(); } else { chatfrtemp = new chatFrm(sender.Client,sender.Name); chatRoom.Add(sender.Name,chatfrtemp); chatfrtemp.Chat(data); chatfrtemp.Show(); } } 执行到SHOW()以后,这个窗口就卡住了.如果换用ShowDialog().那么上面的那个接受方法被阻塞,收不到数据,窗口不卡了,不过也失去了显示的意义...哎.有什么能人,帮忙看看吧. 08 gennaio "卓越"的图书,"好"难找啊在卓越买了这么多年的书,我最近渐渐发现,在卓越找书越来越难了,我又不是那种喜欢跟着排行榜买书的人,想想以前高中的时候,学校附近的那家小书店,还是年轻的时候有时间有精力啊,现在家这附近也没有这个条件,另外人也懒了,大概就是高中毕业了开始依赖"卓越",但是最近手头的书再一次看完的时候,哎... 28 novembre 无为昨天在地铁里,被人摸了口袋,拿掉了公司的门卡。其实并非没有感觉到,只是三次阻挠,三次向那人看去,终究他还是没有放弃,我当时在想,又要被人说“发现了还被偷,傻!”,是我犹豫、从容了,不该。
幸好口袋里只有一张门卡,拿了遍拿了去吧。又幸好那人摸的是我口袋,不是别人的,只道,没有比一张门卡对他更无用处的东西了。
君子用钥匙开门,既是拿了去,应有所感悟才不枉这不告而借。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|