摘要:
1. JavaScript是分段分析执行的,并不像一般的解释性语言那样一句一句解释执行。 这里一个段是指<script ...></script> 2. 定义函数的2种方法: function myfunc(){}; 在一个段中重复定义,只保留最后一次定义,覆盖之前定义 var myfunc = function(){}; 和变量一样, 3. 函数的caller属性可以取得此函数的调用者,如果caller为null,则函数是在全局作用域中被调用的 4. eval()函数动态执行的代码并不创建新的作用域, 普通的函数执行时会创建新的作用域 5. js的函数也像对象一样可以 阅读全文
摘要:
由于工作的需要,越来越多的接触到linux系统。最近看了《Linux与Unix Shell》这本书,安装书的章节整理了一些自己认为比较重要的命令,方便以后查阅。No.001 文件安全与权限1. umask 决定了新建文件的权限 2. 软链接(符号链接) ln -s source_path target_pathNo.002 find和xargs1. find pathname -options [-print -exec -ok] 其中exec参数的命令格式: 'command-' {} \; 注意必须包含【{} \;】 -perm 按权限来查找 ex. find . -per 阅读全文
摘要:
APM的介绍请参见《CLR Via C# 第3版》笔记之(二十一) - 异步编程模型(APM)。EAP是Event-based Asynchronous Pattern的缩写,指基于事件的异步模式。主要内容:EAP和APM的比较APM转换为TaskEAP转换为Task1. EAP和APM的比较EAP是基于事件的异步模型,比如winform中很多事件***Changing,***Changed,***Completed等等。这里的异步是指这些事件方法(即***Changing方法,***Completed方法等)是被异步调用的。但是这些事件方法执行时是同步的,比如***Changing方法执行时 阅读全文
摘要:
APM是.NET中异步编程模型的缩写(Asynchronous Programing Model)。通过异步编程,使得我们的程序可以更加高效的利用系统资源。主要内容:一个APM的例子GUI中的APMAPM的优劣点AMP使用中的注意事项1. 一个APM的例子.Net中的异步模型非常完善,只要看到Begin***者End***方法。基本都是相对***方法的异步调用方式。(注:***是方法的名称)所以在.Net中实现一个异步调用是很方便的,下面用个小例子来演示一个异步操作。首先是同步的方式请求百度搜索10次。(分别搜索1,2,3。。。。10)public class CLRviaCSharp_21{ 阅读全文
摘要:
计时器在很多应用场景中广泛应用,System.Threading命名空间下,有个Timer类可以完成计时器的操作。下面来讨论下Timer类的使用及多个CPU内核同时运行线程时如何共享高速缓存(cache)的。主要内容:计时器的使用CPU高速缓存的伪共享1. 计时器的使用1.1 计时器的创建及改变设置计时器创建的API都类似,有以下5种:public Timer(TimerCallback callback);public Timer(TimerCallback callback, object state, int dueTime, int period);public Timer(Timer 阅读全文
摘要:
除了上篇中提到的线程池,本篇介绍一种新的实现异步操作的方法--任务(Task)。主要内容:任务的介绍任务的基本应用子任务和任务工厂任务调度器并行任务Parallel1. 任务的介绍利用ThreadPool的QueueUserWorkItem方法建立的异步操作存在一些限制:异步操作没有返回值没有内建的机制来通知异步操作什么时候完成而使用任务(Task)来建立异步操作可以克服上述限制,同时还解决了其他一些问题。任务(Task)对象和线程池相比,多了很多状态字段和方法,便于更好的控制任务(Task)的运行。当然,任务(Task)提供大量的功能也是有代价的,意味着更多的内存消耗。所以在实际使用中,如果 阅读全文
摘要:
利用线程池可以对线程进行有效的控制,使得线程能够更好的协作。在我们实际使用线程时,应当尽量使用线程池来构造线程,避免直接new一个线程。主要内容:控制资源消耗提高线程性能取消运行中的线程1. 控制资源消耗线程池(ThreadPool)启动线程的方法很简单,和上一篇直接new一个线程类似,也有带参数和不带参数两种。public static bool QueueUserWorkItem(WaitCallback callBack);public static bool QueueUserWorkItem(WaitCallback callBack, object state);其中的WaitCa 阅读全文
摘要:
最近项目中要用到线程相关的知识,所以先看了本书后面线程的内容,并做了一些总结。主要内容:线程开销线程的创建前台和后台线程1. 线程开销1.1 线程的概念如果没有线程,当应用程序出现死循环时,应用程序所在的进程会一直占据CPU,导致"死机"的现象。那么线程是如何避免这种"死机"现象,使得应用程序能更好的响应用户的请求呢?Windows系统中引入了线程的概念后,每个进程至少有一个专有线程(相当于这个进程专用的CPU),系统已线程为单位分配CPU时间片,如果一个应用程序进入无限循环,那么它的专有线程会"死机"。但是其它进程的专有线程不会&q 阅读全文
摘要:
.Net中的字符串是被谈论最多的话题,这里也进行一些总结,供以后参考。主要内容:字符串的不可变性和字符串留用语言文化格式化器1. 字符串的不可变性和字符串留用字符串(string)在.Net中是一个特殊的类。.Net中的字符串是不可变的(immutable)。也就是说,字符串已经创建就不能更改,变长,变短,修改字符都不行。对字符串进行的任何操作都不能改变原字符串,只会生成新的字符串。由于String是不可变的,我们在使用大量的字符串拼接的时候不宜使用 【+】运算符,比如"A" + "B" + "C"而是可以使用StringBuilde 阅读全文
摘要:
由于项目需要测试windows下的IO性能,因此要写个小程序,按照要求读取磁盘上的文件。在读取文件的时候,测试Windows的IO性能。主要内容:程序的要求一般的FileStream方式利用kernel32.dll中的CreateFile函数1. 程序的要求程序的要求很简单。(1)命令行程序(2)有3个参数,读取的文件名,一次读取buffer size,读取的次数count(3)如果读取次数count未到,文件已经读完,就再次从头读取文件。使用格式如下:C:\>****.exe “c:\****.bin” 32768 32768读取文件“c:\****.bin”,每次读取4K,读取327 阅读全文