happyhippy

这个世界的问题在于聪明人充满疑惑,而傻子们坚信不疑。--罗素
posts - 137,comments - 593,trackbacks - 45

摘要: 1. 问题起因2. 尝试过的处理思路3. 解决方法 1. 问题起因 一个从VS2003(.Net Framework 1.1)升级到.net framework 4.0的项目,每次编译或者部署到服务器上后,首次请求任何一个目录下的默认页面时,都要耗时3~5秒;而以前使用.net framework 1.1的时候,没有这个问题。 我在页面上开启Trace="true"来跟踪,发现页面的处理时间并...阅读全文
posted @ 2012-03-15 13:20 Silent Void 阅读(2164) 评论(2) 编辑
摘要: PageCollectionView,没有使用Filter的时候一切正常;当使用Filter的时候,删除集合中的元素,会抛出如下异常: 1: 指定的参数已超出有效值的范围。\n参数名: index 2: 位于 System.Windows.Data.PagedCollectionView.GetItemAt(Int32 index)\n 3: 位于 System.Wi...阅读全文
posted @ 2012-03-02 11:16 Silent Void 阅读(607) 评论(0) 编辑
摘要: 1. ModBus的 Client/Server模型2. 数据包格式及MBAP header (MODBUS Application Protocol header)3. 大小端转换4. 事务标识和缓...阅读全文
posted @ 2011-07-17 23:28 Silent Void 阅读(51578) 评论(101) 编辑
摘要: SilverLight调用WCF,提交的是一个List<Linq2SqlEntity>;当List中数据量不大的时候,不会报错;当数据量稍微大一点儿,就会出现这个错误。发生了 System.ServiceModel.ProtocolException Message=已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize ...阅读全文
posted @ 2011-07-02 21:40 Silent Void 阅读(5304) 评论(0) 编辑
摘要: 打印连续纸张的时候,经常会遇到需要自动进退纸的功能,譬如下列场景:1. 打印完一个小标;(自动进纸)2. 用户撕断打印出来的小标;3. (自动退纸,纸张归位) 接着打印下一个小标; 下列代码在爱普生LQ 730k打印机上测试通过: 1: //使用示例 2: new PrintDirect("PrinterName").PrintESC(1);//打印后进纸 3: new PrintDirect("...阅读全文
posted @ 2011-06-26 00:00 Silent Void 阅读(2516) 评论(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 阅读(4419) 评论(0) 编辑
摘要: 先看一个例子: 1: DECLARE @Value float 2: SET @Value = 12.1785 3: SELECT '12.1785' as ValueToRound, ROUND(@Value,3) as RoundedValue 4: SET @Value = 12.1745 5: SELECT '12.1745' as ValueToRound,ROUND(@Value,3)...阅读全文
posted @ 2011-06-04 08:04 Silent Void 阅读(963) 评论(0) 编辑
摘要: T-SQL中提供了不少操作DateTime的函数,可惜竟然没有根据年月日创建DateTime类型的函数,例如DateTime(yyyy, MM, dd)这样的“构造函数”,杯具啊~~ 1: DECLARE @Year int, @Month int, @Day int; 2: SELECT @Year=2011, @Month=5, @Day=8; 3: 4: --法1: 5: SELECT C...阅读全文
posted @ 2011-05-28 10:36 Silent Void 阅读(1321) 评论(0) 编辑
摘要: 一般的简单的流水号,由标识+日期+自增序号来组成;但如果考虑通用的话,就稍微复杂点儿的,需要考虑自定义日期格式、自增序号归1、自增序号溢出处理、前缀/中缀/后缀、并发访问、批量获取等,本文抽象出一个通用的生成流水号的方案。 1. 查询原始数据表 vs. 键值表 2. 键值表、取流水号的T-SQL实现 3. 并发处理需要考虑的三个因素 4. C#封装取流水号操作 5. 不给代码怎马叫给力~阅读全文
posted @ 2011-01-29 13:13 Silent Void 阅读(6990) 评论(65) 编辑
摘要: 1. Tab/Enter跳转到下一列; 2. 最后一行最后一列,Tab/Enter自动增加新行; 3. 增加新行后,自动跳转到新增行的第一列; 4. 删除行后,自动选中上一行; 5. Up/Down/Left/Right自动编辑;阅读全文
posted @ 2011-01-12 20:33 Silent Void 阅读(2065) 评论(12) 编辑
摘要: DataGrid 控件提供了一种灵活的方式来以行和列的形式显示数据集合。但却没有提供增加、删除行、即时输入等功能,若要实现类似于Winform下的DataGrid批量录入功能,还得做一些手脚: 1. 显示行号; 2. 即时输入; 3. 增加新行; 4. 删除行; 5. 复制、粘贴行/多行。 本文针对这几个问题,提出一些解决思路。阅读全文
posted @ 2010-12-26 21:40 Silent Void 阅读(3992) 评论(6) 编辑
摘要: .Net Framework 3.0带了个System.Speech.dll,装个语音包,然后就可以实现文字朗读等功能。最近在使用的时候,发现随着程序的运行,程序占用的内存一直在增长,直到程序崩溃。 用WinDbg抓了个Dump,然后看了下,里面一堆没有释放的SPVTEXTFRAG、AudioDeviceOut+InItem、WAVEHDR、WaveHeader对象。。。阅读全文
posted @ 2010-11-07 20:52 Silent Void 阅读(3135) 评论(14) 编辑
摘要: 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 阅读(4874) 评论(9) 编辑
摘要: 最近重读GOF的《设计模式》,读到Builder模式的时候,发现还是不能领悟;网上搜了下其他人的解释,发现很多人都用错了Builder模式,结构形似Builder,实际上却更像Template、或者Factory Method,或者四不像,并没有体现出Builder模式的思想和威力;通过对比学习,也逐渐加深了我对Builder模式的认识,于是就有了这篇文章。阅读全文
posted @ 2010-09-01 00:12 Silent Void 阅读(14242) 评论(31) 编辑
摘要: 防止重复提交,通用的思路,就是当用户点击提交按钮后,在浏览器中用JS将按钮disable掉,从而阻止用户继续点击该按钮,实现防止重复提交的目的。网上防止重复提交的文章已经不少了,为啥我还要写呢,显然我不是吃饱了撑的。。。最近一个客户,老抱怨每个月总有几条重复的业务数据;但创建该业务数据的页面,我们已经应用了常规的防重复提交技术,为啥还这样呢……阅读全文
posted @ 2010-08-15 23:44 Silent Void 阅读(11779) 评论(5) 编辑