摘要: 项目中的一次MySQL性能优化经历,百万数据表使用JOIN带来的性能问题改进。 阅读全文
posted @ 2010-08-04 23:08 木子博客 阅读(2147) 评论(5) 推荐(0) 编辑
摘要: 转自:人月神话重构是对软件内部结构的一种调整,目的是在不改变软件之可察性前提下,提高其可理解性,降低其修改成本。关于重构的至理明言如下:任何一个傻瓜都能写出计算器可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员; 事不过三,三则重构; 当你接获bug提报,请先撰写一个单元测试来揭发这个bug; 当你感觉需要撰写注释,请先尝试重构,试着让所有的注释变得多余; 当你发现自己需要为程序增加一... 阅读全文
posted @ 2010-07-08 23:46 木子博客 阅读(516) 评论(0) 推荐(0) 编辑
摘要: HashTable数据结构存在问题:空间利用率偏低、受填充因子影响大、扩容时所有的数据需要重新进行散列计算。虽然Hash具有O(1)的数据检索效率,但它空间开销却通常很大,是以空间换取时间。所以Hashtable适用于读取操作频繁,写入操作很少的操作类型。 Dictionary 也是用的Hash算法,通过数组实现多条链式结构。不过它是采用分离链接散列法。采用分离链接散列法不受到装填因子的影响,扩容时原有数据不需要重新进行散列计算。 SortedDictionary是按照K有序排列的(K, V)数据结构,以红黑树作为内部数据结构对K进行排列保存– TreeSet,红黑树是一棵二叉搜索树,每个结点具有黑色或者红色的属性。它比普通的二叉搜索树拥有更好的平衡性。 阅读全文
posted @ 2010-05-23 12:06 木子博客 阅读(13659) 评论(16) 推荐(7) 编辑
摘要: 随着网站访问量的增加,在线用户实体信息的存储方式变得重要起来。存储在线用户的信息一般有这三种方案: 1、用户的实体信息保存在Session里,简单方便,随着Session的过期用户信息自动过期。 2、用户信息保存在数据库中,用一个表存储在线的用户信息。 3、用户信息保存在内存 这里选择第三种解决方案,把用户信息保存到内存。 阅读全文
posted @ 2010-05-22 16:12 木子博客 阅读(6233) 评论(21) 推荐(5) 编辑
摘要: 1、选取最适用的字段属性  MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的,... 阅读全文
posted @ 2010-04-21 00:15 木子博客 阅读(303) 评论(0) 推荐(0) 编辑
摘要: MySQL数据类型的简单优化原则: 1、更小通常更好:一般来说,要试着使用能正确地存储和表示数据的最小类型。如果不确定需要什么数据类型,就选择你认为不会超出范围的最小类型。最好的策略就是只分配真正需要的空间。 2、简单就好:越简单的数据类型,需要的 CPU周期就越少。 3、尽量避免NULL:要尽可能地把字段(Field)定义为NOT NULL。除非真的要保存NULL,否则就把列定义为NOT NULL。把NULL列改为NOT NULL带来的性能提升很小。 阅读全文
posted @ 2010-04-21 00:07 木子博客 阅读(929) 评论(0) 推荐(0) 编辑
摘要: 每个项目都在无休无止的用到跨站脚本过滤,大家都是自己写,于是各种各样的正则表达式层出不尽。推荐的这个微软的反跨站脚本库,个人感觉是非常棒的,也不再需要为自己的代码是否过滤完全而绞尽脑汁了。 阅读全文
posted @ 2010-03-04 00:23 木子博客 阅读(3075) 评论(7) 推荐(3) 编辑
摘要: 前端开发部分总结[兼容性、DOM操作、跨域等],项目背景:.Net 3.5+MySQL+jQuery+WebService。在公司做这个项目已经6个多月了,总结一些问题,也算是抛砖引玉吧,希望园子里更多的朋友一起分享一些技巧。 阅读全文
posted @ 2010-03-03 23:33 木子博客 阅读(3422) 评论(11) 推荐(1) 编辑
摘要: 从官网下载ckeditor,我下载的是ckeditor_3.0.2。CKEditor与原来的FCKeditor有太大的不同了,作为开发人页,在做自己的博客的时候总是需要贴代码的,只好给它先做一个插入代码的插件了。高亮代码用的是"SyntaxHighlighter"。 阅读全文
posted @ 2010-01-06 00:50 木子博客 阅读(13133) 评论(54) 推荐(7) 编辑
摘要: 升级了一下原先用的BlogEngine1.4.5,改了不少东西,现在提供下载 1.为分类添加了自定义URL别名。 2.为自定义页面增加URL别名。 3.把BlogEngine的编辑器换成了FCKEditor。 4.为FCKEditor增加了“插入代码”和“插入MP3”功能。 5.为BlogEngine添加了日志URL别名、自定义页URL别名的自动翻译功能,这个是利用Google的翻译API实现的。 6.美化了BlogEngine的分页。 7.增加了记录日志查看数量的功能。 8.修改Widget中分类,呈树状缩进显示。 9.增加ICP备案号及第三方统计代码的后台管理。 10.修改网页关键字,使SEO更友好[有待于继续改进]。 阅读全文
posted @ 2009-07-28 23:43 木子博客 阅读(2745) 评论(24) 推荐(8) 编辑
摘要: NUnit的使用是非常简单的,但是它在项目中使用时,有许多最佳实践。这章我们把上一章没有讲到的NUnit的一些重要属性及其用法介绍给大家。 要想熟练地使用NUnit还是要在实践中使用和体会,单纯地学习知识点是没有用的。接下来的章节会从实例出发学习NUnit。 阅读全文
posted @ 2009-03-21 20:54 木子博客 阅读(2830) 评论(9) 推荐(0) 编辑
摘要: 执行单元测试,是为了证明某段代码的行为确实和开发者所期望的一致。 而单元测试的核心内涵:这个简单有效的技术就是为了令代码变得更加完美。 在这篇文章,我们开始NUnit第一个简单示例... 阅读全文
posted @ 2009-03-17 13:00 木子博客 阅读(2563) 评论(11) 推荐(0) 编辑
摘要: 小明和小强都是张老师的学生,张老师的生日是M月N日, 2人都知道张老师的生是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强, 张老师问他们知道他的生日是那一天吗?相信很多朋友都看过这个逻辑推理题吧,正确的答案是9月1日,但是你知道怎么用C#来得到这个推理结果吗?^_^ 阅读全文
posted @ 2008-12-05 17:52 木子博客 阅读(4666) 评论(25) 推荐(0) 编辑
摘要: 这几天博客都被垃圾评论困扰着,于是就有了一个写一个验证码的想法。这个验证码主要是增加机器识别的难度,当前网上各种流行的验证码中,感觉动网的验证码比较优秀,比较不容易被机器识别。这个验证码方法能够自动生成中文、数字、字母的混合字符串,并且自动设置有效的验证码值。上图中的有效验证码值为“mejjh”,而图片全文为“mej的jh”,这样就可以有效地防止被机器识别出验证码了。我把动网里的验证码代码剥离出来,并作了一些易用性修改。 阅读全文
posted @ 2008-11-28 20:06 木子博客 阅读(2978) 评论(20) 推荐(0) 编辑
摘要: 最近的项目中涉及到Asp.Net扩展性,考虑了两种扩展方法,一种是使用Web Services实现,另一种是动态生成代码然后利用反射来实现插件功能。现在网上博客什么的都是用插件的形式来扩展功能的,所以我也打算用插件来扩展asp.net网站的功能。使用插件机制来扩展B/S程序,主要需要实现两个功能,首先是动态编译插件中的C#代码,然后利用反射来执行插件已经编译的C#代码。 阅读全文
posted @ 2008-11-19 09:48 木子博客 阅读(5162) 评论(18) 推荐(1) 编辑