摘要:翻译一篇关于windows线程的文章,原文在此。第一次翻译,如有错误请多指教=========================================华丽的分割线============================================介绍:在现在的编程世界里,无论你使用的是java、.NET或C++,多线程编程已经成为编程语言不可缺少的一部分了。我要利用多线程的能力写出高响应和可扩展的应用程序。在使用.NET框架我遇到了各种像Task Parallel Library (TPL), Parallel LINQ (PLINQ), Task Factories, Threa 阅读全文
关于memory 和 cache
2013-10-05 18:53 by muzinian, 369 阅读, 0 推荐, 收藏,
摘要:这篇文章介绍了cache的相关知识,包括全相关、组相关、缓存与置换策略、WriteThrough和WriteBack策略、cache体系、CPUID和缓存一致性。介绍了两种缓存一致性的协议:snoopy 和 directory based。重点讲述了Snoopy protocols的具体实现MESI协议和MERSI协议(X86体系)和扩展的MERSI协议(Cell体系)。并在结尾给出了几点建议。这篇文章介绍了内存地址转换的相关知识,同时讲述了在X86体系和Cell体系下的内存地址转换。这篇文章在windows下做了相关练习。 阅读全文
MVVM in Depth
2013-10-02 05:06 by muzinian, 450 阅读, 0 推荐, 收藏,
摘要:这篇文章开始粗略的介绍了软件开发中松耦合的概念并讲述了使用MVC、MVP和MVVM三种模式达到松耦合。然后分析了这三种模式适用范围,其中:MVC(Model-View-Controller)适用于web (ASP.NET) forms图一:MVC architectureMVP(Model-View-Presenter)适用于WindowsForms图二:MVP architectureMVVM(Model-View——viewmodel)适用于WPF/Silverlight Applications图三:Detailed MVVM Architecture三层架构中各个层和他们的关系图四:3 阅读全文
linux 网络栈中的queueing
2013-09-26 21:42 by muzinian, 189 阅读, 0 推荐, 收藏,
摘要:这篇文章详细描述了在linux网络栈中queueing,及各种保证系统吞吐量和低延迟的方法机制。 阅读全文
Copying Linked Lists with Random Pointers
2013-09-16 19:43 by muzinian, 231 阅读, 0 推荐, 收藏,
摘要:Copying Linked Lists with Random Pointers两个方法:方法一:1.不考虑随机指针的情况下复制链表;2.在复制过程中建立一个以原链表节点地址为key,相应的复制链表节点地址为value的hash;3.遍历原链表和新链表,得到原链表随机指针值,并复制给新链表。方法二:1.忽略随机指针值复制链表第n个节点并插入到第n个节点与第n+1个节点之间,以此为方式修改链表直到链表尾。2.利用链表节点next指针指向节点的的拷贝这一已知,使用如下语句:1 srcCurrent->next->random = srcCurrent->random->n 阅读全文
IE6下编写CSS
2013-06-09 17:46 by muzinian, 286 阅读, 0 推荐, 收藏,
摘要:在IE6中存在浮动bug,这里有两种技术:条件注释和hack。条件注释条件注释就像普通的HTML注释,只不过有一条额外的信息:<!--[if lte IE 6]><![endif]-->注释部分if后面跟着一个等式,这个等式的含义是“如果版本低于或等于IE6”,意味着版本低于或等于IE6将输出注释块的内容,而不是当做普通的注释。更多关于条件注释,点击这里hackhack是一些技巧,使用这些技巧可以利用CSS分析器中的bug,以包含只在特定浏览器中工作的CSS。以下是两种可能有帮助的hack第一种是下划线back,它允许编写中用于IE6的CSS。语法如下:p{ _heig 阅读全文
vs2010设置取消vmdebugger
2013-03-13 23:03 by muzinian, 868 阅读, 0 推荐, 收藏,
摘要:在装了vmware高版本(本机为wm9)的计算机,vs2010会自动加载vmdebugger,这个,一:会影响vs2010的开启速度;二:会导致有些项目的编译失败。vs2010会有以下提示。并且在相关的的日志文件记录了相应的信息。此处可以查看日志文件的目录地址。这里有取消vmdebugger的方法。在此记录一下。 阅读全文
C语言宏定义中#与##运算符
2012-11-25 21:04 by muzinian, 3630 阅读, 0 推荐, 收藏,
摘要:#运算符 宏定义可以包含两个专用的运算符:#和##。编译器不会识别这两个运算符,他们会预处理时被执行。 #运算符将宏的一个参数转换为字符串字面量。它仅允许出现在带参数的宏的替代列表中。(#运算符所执行的操作可以理解为“字符串化(stringization)”). #运算符有许多用途,这里只来讨论其中的一种。假设我们决定在调试过程中使用PRINT_INT宏作为一个便捷的方法来输出整型变量或表达式的值。#运算符可以使PRINT_INT为每个输出的值添加标签。下面是改进后的PRINT_INT: #define PRINT_INT(n) printf(#n " = %d\n",n) 阅读全文
广度优先搜索算法与双向广度优先搜索算法
2012-11-10 16:41 by muzinian, 3379 阅读, 0 推荐, 收藏,
摘要:广度优先搜索算法与双向广度优先搜索算法 【转】 使用计算机求解的问题中,有许多问题是无法用数学公式进行计算推导采用模拟方法来找出答案的。这样的问题往往需要我们根据问题所给定的一些条件,在问题的所有可能解中用某种方式找出问题的解来,这就是所谓的搜索法或搜索技术。通常用搜索技术解决的问题可以分成两类:一类问题是给定初始结点,要求找出符合约束条件的目标结点;另一类问题是给出初始结点和目标结点,找出一条从初始结点到达目标结点的路径。 常见的搜索算法有枚举法、广度优先搜索法、深度优先搜索法、双向广度优先搜索法,A*算法、回溯法、分支定界法等。这里来讨论一下广度优先搜索法。一.广度优先搜索算法1. 问.. 阅读全文
卡特兰数【转】
2012-11-08 22:29 by muzinian, 1241 阅读, 1 推荐, 收藏,
摘要:什么是Catalan数说到Catalan数,就不得不提及Catalan序列,Catalan序列是一个整数序列,其通项公式是我们从中取出的就叫做第n个Catalan数,前几个Catalan数是:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, …咋看之下没什么特别的,但是Catalan数却是许多计数问题的最终形式。Catalan数的一些性质Catalan数的基本公式就是上个部分所列出的那样,但是却有一些变形和具体的性质:1、这是根据原来的式子推导出 阅读全文