happyhippy

这个世界的问题在于聪明人充满疑惑,而傻子们坚信不疑。--罗素
摘要:1. ModBus的 Client/Server模型2. 数据包格式及MBAP header (MODBUS Application Protocol header)3. 大小端转换4. 事务标识和缓... 阅读全文
posted @ 2011-07-17 23:28 Silent Void 阅读(67395) 评论(105) 推荐(25) 编辑
摘要:SilverLight调用WCF,提交的是一个List<Linq2SqlEntity>;当List中数据量不大的时候,不会报错;当数据量稍微大一点儿,就会出现这个错误。发生了 System.ServiceModel.ProtocolException Message=已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize ... 阅读全文
posted @ 2011-07-02 21:40 Silent Void 阅读(6717) 评论(0) 推荐(0) 编辑
摘要:打印连续纸张的时候,经常会遇到需要自动进退纸的功能,譬如下列场景:1. 打印完一个小标;(自动进纸)2. 用户撕断打印出来的小标;3. (自动退纸,纸张归位) 接着打印下一个小标; 下列代码在爱普生LQ 730k打印机上测试通过: 1: //使用示例 2: new PrintDirect("PrinterName").PrintESC(1);//打印后进纸 3: new PrintDirect("... 阅读全文
posted @ 2011-06-26 00:00 Silent Void 阅读(3643) 评论(0) 推荐(0) 编辑
摘要:1: public static bool IsDefault<T>(this T value) 2: { 3: //... 4: }1. ==的问题 如果用==直接判断(default(T) == value),编译时会提示错误:Error CS0019: 运算符“==”无法应用于“T”和“T”类型的操作数 (CS0019)。2. object.Equals的问题 object提供了一个静态方... 阅读全文
posted @ 2011-06-21 23:00 Silent Void 阅读(6491) 评论(1) 推荐(0) 编辑
摘要:1. Tab/Enter跳转到下一列; 2. 最后一行最后一列,Tab/Enter自动增加新行; 3. 增加新行后,自动跳转到新增行的第一列; 4. 删除行后,自动选中上一行; 5. Up/Down/Left/Right自动编辑; 阅读全文
posted @ 2011-01-12 20:33 Silent Void 阅读(2839) 评论(12) 推荐(1) 编辑
摘要:DataGrid 控件提供了一种灵活的方式来以行和列的形式显示数据集合。但却没有提供增加、删除行、即时输入等功能,若要实现类似于Winform下的DataGrid批量录入功能,还得做一些手脚: 1. 显示行号; 2. 即时输入; 3. 增加新行; 4. 删除行; 5. 复制、粘贴行/多行。 本文针对这几个问题,提出一些解决思路。 阅读全文
posted @ 2010-12-26 21:40 Silent Void 阅读(4435) 评论(6) 推荐(4) 编辑
摘要: .Net Framework 3.0带了个System.Speech.dll,装个语音包,然后就可以实现文字朗读等功能。最近在使用的时候,发现随着程序的运行,程序占用的内存一直在增长,直到程序崩溃。 用WinDbg抓了个Dump,然后看了下,里面一堆没有释放的SPVTEXTFRAG、AudioDeviceOut+InItem、WAVEHDR、WaveHeader对象。。。 阅读全文
posted @ 2010-11-07 20:52 Silent Void 阅读(4364) 评论(14) 推荐(6) 编辑
摘要: FactoryMethod是一个相对比较简单的创建型模式,但是能领悟或者用对的并不多见;很多示例都没有反应出Factory Method的核心思想,只是实现了一个简化版的Abstract Factory,然后给出的解释是Factory Method模式解决“单个对象”的需求变化,Abstract Factory 模式解决“系列对象”的需求变化。 试想一下,如果把1视为N的一种特殊情况,则一个产品系列可能只包含一个对象;那么我们是不是可以认为Factory Method是一个简化版的Abstract Factory呢?实际上,Factory Method模式与Abstract Factory模式虽然同属于对象创建型模式,并且AbstractFactory类通常用Factory Method模式实现,并且效果上都可用于连接平行的类层次,但是这两个模式在思想上有着本质的区别。网上的文章抄来抄去,结果错误也被到处传。上一篇介绍了被普遍误用的Builder模式,这篇继续为Factory Method正名。 阅读全文
posted @ 2010-09-26 19:50 Silent Void 阅读(5811) 评论(10) 推荐(3) 编辑
摘要:最近重读GOF的《设计模式》,读到Builder模式的时候,发现还是不能领悟;网上搜了下其他人的解释,发现很多人都用错了Builder模式,结构形似Builder,实际上却更像Template、或者Factory Method,或者四不像,并没有体现出Builder模式的思想和威力;通过对比学习,也逐渐加深了我对Builder模式的认识,于是就有了这篇文章。 阅读全文
posted @ 2010-09-01 00:12 Silent Void 阅读(17809) 评论(31) 推荐(4) 编辑
摘要: 防止重复提交,通用的思路,就是当用户点击提交按钮后,在浏览器中用JS将按钮disable掉,从而阻止用户继续点击该按钮,实现防止重复提交的目的。网上防止重复提交的文章已经不少了,为啥我还要写呢,显然我不是吃饱了撑的。。。最近一个客户,老抱怨每个月总有几条重复的业务数据;但创建该业务数据的页面,我们已经应用了常规的防重复提交技术,为啥还这样呢…… 阅读全文
posted @ 2010-08-15 23:44 Silent Void 阅读(13975) 评论(5) 推荐(2) 编辑
摘要:1. 使事务处理尽可能地短; 默认的TIL(Read Commited)下,开启事务后,会话中的更新操作会持续占有排它锁,直至事务提交或者回滚;使事务处理尽可能地短,减少持有资源的时间,尽快释放资源... 阅读全文
posted @ 2010-08-07 15:19 Silent Void 阅读(1070) 评论(0) 推荐(0) 编辑
摘要:在项目中,遇到一个场景:希望能在TextArea中输入某条记录中的明细(明细较简单,没有附属信息,只用记录顺序和值即可,譬如用“+”号来作为明细分隔符:1+1.5+2+3.4),如下图所示: 为了让输... 阅读全文
posted @ 2010-08-06 18:50 Silent Void 阅读(14995) 评论(2) 推荐(0) 编辑
摘要:0. 并发冲突的示例 单用户的系统现在应该比较罕见了,一般系统都会有很多用户在同时进行操作;在多用户系统中,涉及到的一个普遍问题:当多个用户“同时”更新(修改或者删除)同一条记录时,该如何更新呢? 下图展示了开放式并发冲突的一个示例: 假设数据库中有一条记录Record{Field1=5, Field2=6, Field3=7}(以下简写为{5, 6, 7}),A、B两个用户按照如下顺序操作这一... 阅读全文
posted @ 2010-01-30 18:23 Silent Void 阅读(6121) 评论(5) 推荐(2) 编辑
摘要:0. 说明 Linq to Sql,以下简称L2S。 以下文中所指的两层和三层结构,分别如下图所示: 准确的说,这里的分层并不是特别明确:(1) 生成的DataContext(Linq t0 SQL Runtime)和Entity是放在一个文件中的,物理上不能切割开来;上图只是展示逻辑上的结构。(2) 拿上图右边的三层结构来说,鉴于第(1)点,UI层就可以跨越BusinessLogic层,直接访... 阅读全文
posted @ 2010-01-29 16:07 Silent Void 阅读(4073) 评论(0) 推荐(0) 编辑
摘要:Linq to SQL支持三种事务处理模型:显式本地事务、显式可分发事务、隐式事务。(from MSDN: 事务 (LINQ to SQL))。MSDN中描述得相对比较粗狂,下面就结合实例来对此进行阐述。 0. 测试环境 OS Windows Server 2008 Enterprise + sp1 IDE Visual Studio 2008, .net framework 3.5 + SP... 阅读全文
posted @ 2010-01-27 14:47 Silent Void 阅读(21540) 评论(5) 推荐(6) 编辑