无鱼之水

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

摘要: 事由是这样的,C#使用了以前的一些COM组件,该COM组件使用多年,Bug相当少见,但是这回经常出现偶见问题。COM内部有容器类,组件类,容器类释放后,内部组件变为无效。这里出现的故障就是经常出现组件还在,但是容器已被释放的情况。代码如下:void UseCOM(){ IContainer container = GetCOMObject(ContainerGUID); IComponent component = container.GetComponent(index); component.DoSomthing(); //此处偶见异常}经过调试COM代码,明确了是容器组... 阅读全文
posted @ 2012-04-04 16:25 陈伟强 阅读(250) 评论(0) 推荐(0) 编辑

2012年4月4日

摘要: 事由来源:C#中使用Delphi本地代码,当调用ZeroMemory或者FillChar时,内存并没有被完全清空,会出现非法内容,当调用多次ZeroMemory/FillChar则完全没有问题。看FillChar的汇编代码完全没问题,只是其中使用了浮点数寄存器ST0,且填充后的内容,有重复的迹象,所以怀疑是st0出了问题。查到一篇类似文章:https://connect.microsoft.com/VisualStudio/feedback/details/181987/debugger-trashes-floating-point-stack由于ntdll.memset也有问题,求解无果,项 阅读全文
posted @ 2012-04-04 16:35 陈伟强 阅读(423) 评论(0) 推荐(0) 编辑

2011年1月5日

摘要: 业务代码Profiler截得,自己加了层皮而已:[代码] 阅读全文
posted @ 2011-01-05 23:12 陈伟强 阅读(426) 评论(0) 推荐(0) 编辑

2011年1月1日

摘要: RH/Fedora下sudo mv /etc/rcX.d/{K,S}xxgdm的方法已经不适用了。在我的Ubuntu10.04下,/etc/rcx.d/目录下不存在gdm的启动链接。且Ubuntu自6.10时代就放弃了/etc/inittab(严格来说是默认安装条件下不使用)。 使用bum或sysv-rc-conf关闭gdm服务也是无效的(Debian系runlevel 2-5都是一样会启动gdm的,以前修改默认启动级别的方法也无效了)。 查资料,Ubuntu中文论坛的一篇稿子有正解,其方法是修改grub2的配置文件。原文链接在此:Ubuntu 10.04 启动进入字符界面。引文如下: 经验证 阅读全文
posted @ 2011-01-01 01:07 陈伟强 阅读(10723) 评论(1) 推荐(2) 编辑

2010年12月31日

摘要: 已经写好的文章,只要再编辑一下,代码就会折为一行... 重做了两次才搞好,情何以堪! 阅读全文
posted @ 2010-12-31 18:59 陈伟强 阅读(129) 评论(0) 推荐(0) 编辑

摘要: C/S架构,做成了伪B/S。性能测试过程中发现并发条件下存在比较严重的延时问题。某些几十K几百K的包,从服务端到客户端居然要走10s。 这只是一些偶然情况,在每个客户端的日志里,大概几百次交互中有一次,几率不高,但是一旦有,就是10s数量级的延迟。 第一步:Perfmon/Network Interface计数器 添加了Bytes Received/sec(简称R),Bytes Sent/sec(简称S), Current Bandwidth(简称CB)。 S计数器高一些,换算后最高3MB/s,CB计数器没有异常,始终显示网卡为100Mbps。测试同时打开的任务管理器的"网络使用率"输出和计数 阅读全文
posted @ 2010-12-31 18:39 陈伟强 阅读(324) 评论(0) 推荐(0) 编辑

2010年12月30日

摘要: 想来管道应该已经深入人心了,可是重定向这玩意就是不入我的心。 唉,像我这个被XWindow惯坏了的,只会重定向个文件啥的。今天好容易静下心来看了看这摊子事。您要是稍微懂一点,就直接移步lightspeed的经典重定向普及贴吧。下面码的都是玩尿泥的技术。。。 stdin0/stdout1/stderr2这三个文件描述符俺还是懂的。最简单的重定向莫过于这个经典例子了:[代码] 只要了解SHELL处理重定向时由左及右的方向就不难理解了。 /dev/null 等同于 1/dev/null ,把标准输出重定向到无底洞扔掉。 2&1是说把标准错误输出重定向到标准输出“指向的地方“。无论标准输出指向了 阅读全文
posted @ 2010-12-30 22:08 陈伟强 阅读(383) 评论(0) 推荐(2) 编辑

摘要: 使用RCSI可以使普通的数据库读取操作不再善用Share Lock,但不是所有的读操作都不会被阻塞。 我一开始就把这个“读取操作”无限放大,认为从此不再有读/写操作相互阻塞的事情了。下面是不久之前系统里的一个例子,用来说明更新操作中,当SQL SERVER引擎用来确认更新范围的时候并不会读取快照,而是会使用和X锁不兼容的U锁。因此,即使一个语句的最终结果不会更新任何记录,他还是有可能会被阻塞。[代码] 开两个会话分别执行SegmentA和SegmentB,会发现,SegmentB被阻塞。查看会话和锁情况: 解决办法比较笨,将Where条件更换为使用临时表:[代码] 因为我们没有想到更好的强迫S 阅读全文
posted @ 2010-12-30 19:41 陈伟强 阅读(289) 评论(0) 推荐(0) 编辑

2010年12月29日

摘要: 本来无驱状态用着挺不错的,自从戒了游戏之后,感觉Ubuntu没有什么不适应的地方。偏偏前几天抽风学人家玩3D桌面。也没怎么详细查资料,听信某些网友片面之言,上来先装了闭源驱动。重启。我了个去,黑屏了。 我这个物语阿,本机非公版HD3850显卡,显示器比较老了,最高支持13**分辨率。再重启一次,看显示器提示信息,超出显示范围。按照之前用电视卡的经历,应该是分辨率设的太高了。 cat /etc/X11/xorg.conf 居然没有显示器分辨率设置: 那fglrx默认的分辨率难道是动态计算的?狗日的。 上links, 放狗,无果。 无奈手动设置Screen的SubSection: 重启,X启动成 阅读全文
posted @ 2010-12-29 20:17 陈伟强 阅读(409) 评论(0) 推荐(0) 编辑

摘要: 自己写来玩的,只做测试用。使用sys.dm_tran_locks表Resource_description列值。完全不排除不准确的可能 只适用Clustered Index,Non-Clustered Index使用DBCC PAGE更快一些。[代码] 用法: usp_PKHash N'TableName', N'PKColumnName', N'Filter' 阅读全文
posted @ 2010-12-29 18:57 陈伟强 阅读(314) 评论(0) 推荐(0) 编辑