不积跬步,无以至千里;不积小流,无以成江海

Our practice

不积跬步,无以至千里;不积小流,无以成江海

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  40 随笔 :: 0 文章 :: 2 评论 :: 0 Trackbacks

2008年9月2日 #

     摘要: 在Javascript中,一切都是对象,包括函数。在Javascript中并没有真正的类,不能像C#,PHP等语言中用 class xxx来定义。但Javascript中提供了一种折中的方案:把对象定义描述为对象的配方(先看一下例子会比较容易理解)。 定义类的方法有很多种,这里有两中较为通用的方法,大家参考一下。 这两种方法均可以解决构造函数会重复生成函数,为每个对象都创建独立版本的函数的问题。   阅读全文
posted @ 2008-09-02 23:32 陆英怀 阅读(56) | 评论 (0)编辑

2008年8月29日 #

     摘要: 线程安全的本质就是,要保护全局对象,在使用时只能被一个线程使用(包括读,写,删除)(注意,对全局对象只限于只读,那么是线程安全的)。解决的方法无非就是两种, 第一,把这个对象或者资源锁住,即等我用完了,其它线程才能再能,否则其它线程等待,这也是最常见的方式。 第二,给每个线程分配属于只属于自己的"全局对象"(这样听起来好像有点别扭)。  阅读全文
posted @ 2008-08-29 23:34 陆英怀 阅读(93) | 评论 (0)编辑

2008年8月28日 #

     摘要: 以前常听高手告诫MFC对象不要跨线程使用,因为MFC不是线程安全的。比如CWnd对象不要跨线程使用,可以用窗口句柄(HWND)代替。 CSocket/CAsyncSocket对象不要跨线程使用,用SOCKET句柄代替. 那么到底什么是线程安全呢?什么时候需要考虑?如果程序涉及到多线程的话,就应该考虑线程安全问题。比如说设计的接口,将来需要在多线程环境中使用,或者需要跨线程使用某个对象时,这个就必须考虑了。个人的理解是,所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不 用考虑同步的问题。  阅读全文
posted @ 2008-08-28 23:42 陆英怀 阅读(122) | 评论 (0)编辑

     摘要:   memchached的hash方式由Client API决定,余数hash方法是最早版本的memcached Client API中使用的,是比较简单也是比较容易理解的方式,当不考虑动态的添加服务器进程的时候,使用它是比较理想的,hash分布后的比较平均,容易达到多个进程(服务器)负载均衡的效果。   Consistent Hashing+虚拟结点的Hashing方法,可以实现比较好的负载均衡和动态的添加服务器时影响cach的命中率问题。值得大家去回味一下其中的算法。  阅读全文
posted @ 2008-08-28 22:46 陆英怀 阅读(65) | 评论 (0)编辑

     摘要: 在memcached中,我们一直提到key的hash来存取数据,为了更好的理解存取数据的过程。我们先来理解一下hash,即叫散列或者哈希。 google搜索到的头条:散列表(也叫哈希表),是根据关键码值直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 我觉得这个解释太含糊,想要整明白哈希表,那就得明白哈希表到底有什么样的优势。  阅读全文
posted @ 2008-08-28 11:44 陆英怀 阅读(14) | 评论 (0)编辑

     摘要: 在上一篇文章,我们讲了,为什么要使用memched做为缓存服务器(没看的同学请点这里)。下面让我们以memcached-1.2.1-win32版本的服务组件和C#API(Enyim.Caching)为基础,做一个"Hello world"级的程序,让我们真正感受到memcached就在我们身边。后一的文章,我们还讲memcached的核心部分(根据key来hash存取数据,缓存数据在server端的内存存储结构)和一些好的案例。  下面的实例实现的功能很简单,根据key来存取一个object对象(要支持Serializable才行哦),因为服务器端数据都是byte型的数据组实现存在。 第一步:配置config文件   阅读全文
posted @ 2008-08-28 01:16 陆英怀 阅读(95) | 评论 (1)编辑

     摘要: 通常的网页缓存方式有动态缓存和静态缓存等几种,在ASP.NET中已经可以实现对页面局部进行缓存,而使用memcached的缓存比 ASP.NET的局部缓存更加灵活,可以缓存任意的对象,不管是否在页面上输出。而memcached最大的优点是可以分布式的部署,这对于大规模应用来说也是必不可少的要求。 LiveJournal.com使用了memcached在前端进行缓存,取得了良好的效果,而像wikipedia,sourceforge等也采用了或即将采用memcached作为缓存工具。memcached可以大规模网站应用发挥巨大的作用。 Memcached是什么? Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。 Memcached由Danga Interactive开发,用于提升LiveJournal.com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。 如何使用memcached-Server端? 在服务端运行: #   阅读全文
posted @ 2008-08-28 00:10 陆英怀 阅读(53) | 评论 (0)编辑

2008年8月26日 #

     摘要: Threadpool线程池和泛型List,实现同样功能的多线程的例子。 下载原代码 Code: using System; using System.Threading; using System.Collections.Generic; public class OprateClass { public OprateClass( ManualResetEvent doneEvent) { _doneEvent = doneEvent; } // Wrapper method for use with thread pool. public void ThreadPoolCallback(Object threadContext) { int threadIndex = (int)threadContext; Console.WriteLine("Thread parameter:{0}", threadIndex)  阅读全文
posted @ 2008-08-26 23:31 陆英怀 阅读(12) | 评论 (0)编辑

2008年8月24日 #

     摘要: 批处理的本质,是一堆DOS命令按一定顺序排列而形成的集合。批处理,也称为批处理脚本,英文译为BATCH,批处理文件后缀BAT就取的前三个字母。它的构成没有固定格式,只要遵守以下这条就ok了:每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最后一行结束,它运行的平台是DOS。批处理有一个很鲜明的特点:使用方便、灵活,功能强大,自动化程度高。 下面通过实战来认识一下batch朋友。以下例子的代码保存成以cmd或者bat为扩展名的文件。批处理在执行过程中你可以用CTRL+C强行终止命令或者直接关闭命令行窗口。 1,命令的结果保存起来 要点:command > filename.txt 将命令的结果保存到filename.txt文件中(注意如果filename.txt文件已经存在,会覆盖它,而不是追加); 而追加入filename.txt我们可以用>>,如command >> filename.txt。 例子: ping sz.tencent.com > a.txt ping sz1.tencent.com   阅读全文
posted @ 2008-08-24 00:07 陆英怀 阅读(15) | 评论 (0)编辑

2008年8月21日 #

     摘要: 下面是一个简单的实现 操作自定义window performance counter的实例。在运行程序的过程中我们通过操作系统的performance面板查看或者写log文件,对我们应用程序的性能进行监视,分析。将有助于我们分析解决系统的性能等问题。 代码功能: 1,实现添加一个counter 类别 2,添加一个或者多个counter对象 3,获取counter对象,并赋值。 在系统的performance 面板中查看。效果如下图:   阅读全文
posted @ 2008-08-21 00:59 陆英怀 阅读(58) | 评论 (0)编辑