01 2010 档案

摘要:1、 线程同步 线程同步是编写多线程程序需要首先考虑问题。C#为同步提供了 Monitor、Mutex、AutoResetEvent 和 ManualResetEvent 对象来分别包装 Win32 的临界区、互斥对象和事件对象这几种基础的同步机制。C#还提供了一个lock语句,方便使用,编译器会自动生成适当的 Monitor.Enter 和 Monitor.Exit 调用。 a)、同步粒度 同步粒度可以是整个方法,也可以是方法中某一段代码。为方法指定 MethodImplOptions.Synchronized 属性将标记对整个方法同步。例如:[MethodImpl(MethodImplO. 阅读全文
posted @ 2010-01-25 23:48 JoneLee 阅读(2492) 评论(0) 推荐(1) 编辑
摘要:1、使用StringBuilder做字符串连接 string是不变类,使用+操作连接字符串会导致创建一个新的字符串。如果字符串连接次数不是固定的,例如在一个循环操作中,则应该使用StringBuilder类来做字符串连接工作。因为StringBuilder内部有一个StringBuffer,连接字符操作不会每次分配新的字符串空间。只有当连接后的字符串超出Buffer大小是,才会申请信的Buffer... 阅读全文
posted @ 2010-01-22 21:23 JoneLee 阅读(3063) 评论(30) 推荐(4) 编辑
摘要:《软件开发性能优化系列》目录 垃圾回收时现代语言的标志之一。垃圾回收解放了手工管理对象释放的工作,提高了程序的健壮性,但是副作用就是程序代码可以对于创建对象变得随意。1、避免不必要的对象创建 由于垃圾回收的代价较高,所以C#程序开发要遵循的一个基本原则就是避免不必要的对象创建。以下列举一些常见的情型。a)、避免循环创建对象 如果对象并不会随每次循环改变而改变状态,那么在循环中反复创建对象将带来性... 阅读全文
posted @ 2010-01-19 18:00 JoneLee 阅读(1841) 评论(6) 推荐(1) 编辑
摘要:一、SQL拼写建议1、查询时不返回不需要的行、列 业务代码要根据实际情况尽量减少对表的访问行数,最小化结果集,在查询时,不要过多地使用通配符如:select * from table1语句,要用到几列就选择几列,如:select col1,col2 from table1;在可能的情况下尽量限制结果集行数如:select top 100 col1,col2,col3 from talbe2,因为某... 阅读全文
posted @ 2010-01-18 11:09 JoneLee 阅读(2811) 评论(6) 推荐(4) 编辑
摘要:1、参数化sql 对于一般简单查询,数据库能自动参数啊以重用计划缓存,如:SELECT * FROM table WHERE id=1;SELECT * FROM table WHERE id=4 在sqlserver内部能自动参数化这个查询,SELECT * FROM table WHERE id=@1 但是一旦sql语句中带有join、union、top……等关键字... 阅读全文
posted @ 2010-01-17 13:48 JoneLee 阅读(2999) 评论(14) 推荐(3) 编辑
摘要:死锁原因: 死锁是由两个相互阻塞的线程组成,它们互相等待对方完成,一般死锁情况下两个数据库事务之间存在着相反的操作。sqlserver中死锁监视器定时检查死锁,如果发现死锁,将选择其中回滚消耗最小的任务,这时候发生1025数据库错误。可以通过启用sqlserver2005快照模式,避免一些读/写的逆向阻塞造成的死锁.但是对于一些写/写阻塞的死锁可能无法解决,很多时候需要从业务的角度来避免一些写/写... 阅读全文
posted @ 2010-01-16 19:09 JoneLee 阅读(2092) 评论(1) 推荐(3) 编辑
摘要:阻塞原因 在默认事务隔离情况下,数据库事务越长,一方面独占锁被持有的时间越长,写操作阻塞读操作的机会就越多;另一方面,在默认的读提交隔离模式下,读操作使用共享锁与独占锁不兼容,读操作也会阻塞写操作。 阻塞也是死锁产生的基本条件,改善了阻塞就能有效减少死锁。 在软件开发后期,在对大数据量的集成测试工程中,通过活动查看器可以观察到阻塞情况,主要产生阻塞的原因就是读和写相互阻塞在对同一个大表的操作上。因... 阅读全文
posted @ 2010-01-16 11:00 JoneLee 阅读(1844) 评论(1) 推荐(1) 编辑
摘要:无主键、索引或者没有查询索引无效,是产品查询慢的最常见问题,以下是数据库表主键和索引设计的主要原则1、主键主键ID,主键既是约束也是索引,同时也用于对象缓存的键值。2、索引 *组合或者引用关系的子表(数据量较大的时候),需要在关联主表的列上建立非聚集索引(如订单明细表中的产品ID字段、订单明细表中关联的订单ID字段) *索引键的大小不能超过900个字节,当列表的大小超过900个字节或者若干列的和超过900个字节时,数据库将报错。 *表中如果建有大量索引将会影响INSERT、UPDATE和DELETE语句的性能,因为在表中的数据更改时,所有的索引都将必须进行适当的调整。需要避免对经常更新的表进. 阅读全文
posted @ 2010-01-15 17:12 JoneLee 阅读(2080) 评论(5) 推荐(2) 编辑
摘要:树表设计: 树状表都是使用ID和IDParent两个字段来表示树关系。对树进行查找只能使用自关联方式,不光写法麻烦而且记录多的时候查询性能会非常差。建议在设计树表的时候可以考虑加入treePath字段,记载到该节点记录需要经历的树路径。虽然会增加Insert和Update的成本。但是对查询树关系非常有帮助。可以避免大部分的自关联查询。分区表: 记录超过一百万的表要考虑是否需要使用分区表。对于能够明... 阅读全文
posted @ 2010-01-15 16:31 JoneLee 阅读(2198) 评论(4) 推荐(1) 编辑
摘要:一、数据库性能1、表设计2、主键、索引设计3、阻塞4、死锁5、SQL查询性能优化(一)6、SQL查询性能优化(二)二、C#语言1、垃圾回收2、String操作3、多线程4、类型系统5、异常处理6、反射7、基本代码技巧三、ADO.NET1、应用ADO.NET的一些思考原则2、Connection3、Command4、DataReader5、DataSet四、Asp.net1、减少往返进程2、避免阻塞... 阅读全文
posted @ 2010-01-15 12:48 JoneLee 阅读(3541) 评论(14) 推荐(3) 编辑

http://s.click.taobao.com/t_9?p=mm_33531378_0_0&l=http%3A%2F%2Fwww.tmall.com%2Fgo%2Fact%2Fsale%2Ftmmytkpd.php%E8%81%BD
点击右上角即可分享
微信分享提示