IT技术博客

IT技术博客,精选各种精华文章供您阅读,是您学习各种IT技术的博客优选之地

使用匿名委托,Lambda简化多线程代码

      .net中的线程也接触不少了。在多线程中最常见的应用莫过于有一个耗时的操作需要放到线程中去操作,而在这个线程中我们需要更新UI,这个时候就要创建一个委托了来更新UI了,不然会报错的。下面我们就来设计一个简单的场景:窗体上有一个按钮和进度条,按钮按下后启动一个线程让进度条滚动。需要说明一下的是,我们这里不讨论使用匿名委托,lambda的好坏,我们只有一个目标就是使得我们的程序:短点,短点,再短点。   最“朴素”写法         我刚开始没有掌握匿名方法这些就是按照下面这些写的,说实话很痛苦。后来接触了匿名表达式,lambda后几乎都不想再想写这样的东西了,除非特殊的一些情况,比如需要自己定义委托。如果您现在还在按照下面这样写,那么这篇文章对你或许有

《NewBluePill深入硬件虚拟机》- 新书预览

一、 概述 在这一章中,我们先介绍一些贯穿全书的概念,比如Hypervisor,VT-x,VT-d,SVM等等。然后我们会简略介绍下NewBluePill项目背景及其所采用的硬件虚拟化技术。 这一章只是介绍这些技术大致的轮廓,详细内容会在后面各章节中逐一介绍。 虚拟化技术概述 虚拟化的历史 在讨论Hypervisor之前首先谈谈虚拟,虚拟(virtualization)指对计算机资源的抽象,一种常用的定义是“虚拟就是这样的一种技术,它隐藏掉了系统,应用和终端用户赖以交互的计算机资源的物理性的一面,最常做的方法就是把单一的物理资源转化为多个逻辑资源,当然也可以把多个物理资源转化为一个逻辑资源(这在存储设备和服务器上很常见)” 实际上,虚拟技术早在20世纪60年代就已出现,最早由IBM提出,并且应用于计算技术的许多领域,模拟的对象也多种多样,从整台主机到一个组件,其实打

方法的长度

《重构之美》之三 我曾经在一次演讲中,问过听众这样一个问题:“一个方法的理想行数最多不超过多少行?”如果问一千个人,或许会有一千条答案吧。   这是一个见仁见智的问题。在《软件开发沉思录》一书中,ThoughtWorks的技术负责人Jeff Bay认为:“一个常见的原则是将方法的行数控制在5行之内……”很多人对此感到不可思议。窃以为,关键不在于方法的最大行数,而是要合理理解方法的微粒度能为我们带来什么好处?   Jeff Bay提倡“利用IDE提供的‘提取方法’功能,不断地提取方法中的行为,直到它只有一级缩进为止。如果方法过长,不可能达到如此清晰的可读性。”Robert C. Martin则强调:“方法的第一规则是要短小。第二条规则还要更短小。”   短小的方法更容易理解,更容易重用。这一点毋庸置疑。不过,短小的方法会导致方法数量的急剧

JavaScript(JS) 压缩 / 混淆 / 格式化(美化) 工具算是完美了。

我是对javascript有特殊情结的…… (被人各种各样的鄙视) 奈何对javascript本身水平不够的, 可是我那么热爱js所以就想在前人的基础上制作一个功能武装到牙齿的js在线工具应该还是可以的吧。 也给自己方便,于是这个工具就诞生了。   http://jscompress.sinaapp.com/   本工具是在线版工具,有以下的功能.好不好请大家验证一下吧。 本工具是基于新浪云计算开发的,应该是很稳定的~~   压缩 (可选) js minify  (默认的压缩,只会清除注视空行空格,不替换变量语法。) yui compressor (这个应该是目前世界上最好的压缩机了吧?姑且这么认为。) Google Closure Compiler  (google 使用的JS压缩机,而且还能优

[EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART4——Unity&PIAB

      在前面几篇有关Unity学习的文章中,我对Unity的一些常用功能进行介绍,包括:Unity的基本知识、管理对象之间的关系、生命周期、依赖注入等,今天则是要介绍Unity的另外一个重要功能——拦截(Interception)。 以下是本文所要介绍的内容: 1、Unity与PIAB的关系。 2、使用Unity来接管PIAB的功能实现。   一、Unity与PIAB的关系       Unity中的Interception可以通过Unity的Container或独立的API(Intercept)来实现,这些具体的实现没有包含在Unity本身的类库中,而独立放在Unity.Interception这个类库中,想深入了解的朋友可以查看下这个类的具体源

VS2010实践RUP4+1架构模型

  RUP4+1架构方法 RUP4+1架构方法采用用例驱动,在软件生命周期的各个阶段对软件进行建模,从不同视角对系统进行解读,从而形成统一软件过程架构描述.                    图 1. RUP4+1架构图 用例视图(Use Cases View),最初称为场景视图,关注最终用户需求,为整个技术架构的上线文环境.通常用UML用例图和活动图描述。 逻辑视图(Logical view),主要整个系统的抽象结构表述主要关注系统提供最终用户的功能,不涉及具体的编译即输出和部署,通常在UML中用类图,交互图,时序图来表述,类似与我们采用OOA的对象模型。 开发视图(Development Vi

MonoDevelop/MonoTouch SDK开发iOS程序体验!

作者:不及格的程序员-八神 首先从http://monotouch.net/官网下载了三个必须的安装文件 Mono for mac 框架,这个大约70M大小,再下载MonoDevelop,这个开发IDE大概10多M,最后下载了Monotouch SDK,这个大约22M. 之后就是一步步安装了很顺利,由于我的mac mini 装的是中文系统,当第一次打开MonoDevelop时,界面居然是乱码,文字全是方块,或是空字符. 后来在设置窗口中的User interface language设置成了英文,界面算是正常了. 乱码的界面: 正常的界面:   下面创建一个Hello World的程序吧.托一个按钮,给按钮加一个事件委托,真的是非常简单.而且根本不用管理对象释放的问题,而且代码的智能提示要比xCode提高一个档次,有点类似VS2010. 工程类型选择: 代码: 默认情况

敏捷宣言准则4-6和一些颠覆式的注解

敏捷开发的12准则(这里我们着重于准则4-6):   准则4:Business people and developers must work together daily throughout the project.  翻译:业务人员和开发人员在项目开发过程中应该共同工作。  注释:客户从一开始就参与项目,这意味着开发团队能比较准确地了解用户的需求,能够根据客户的需求变化及时的作出相应的调整,无疑能对客户的需求理解得最为透彻,能够对需求变化作出最敏捷的反应。    在实际开发中,这个准则一般是很难被满足的,大部分客户会很忙,没有时间坐在开发工程师的身边进行来帮助开发。所以出现了一种新的职业—商务分析师,在下面的例子里,一位来自ThoughtWorks项目团队的的商务分析师就详细描述了其在项目团队里扮演的角色和一些

棋盘覆盖问题

虽然这个问题已经在网上被讨论遍了,但是最近从新拾起算法,感觉有必要夯实一下基础。棋盘覆盖问题:首先大致描述一下题目:在一个2^k×2^k个方格组成的棋盘中,若有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘.显然特殊方格在棋盘上出现的位置有4^k种情形.因而对任何k≥0,有4^k种不同的特殊棋盘.下图–图(1)中的特殊棋盘是当k=2时16个特殊棋盘中的一个:   图(1)题目要求在棋盘覆盖问题中,要用下图—图(2)所示的4种不同形态的L型骨牌覆盖一个给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖.  图(2)思路分析:当k>0时,将2^k×2^k棋盘分割为4个2^k-1×2^k-1子棋盘,如下图–图(3)所

C#实现外部图片的拖拽到应用程序的简单功能,附全部源码,供有需要的参考

通用权限管理系统组件源码里,有职员管理的功能,实现了直接可以把照片拖拽过来的功能,用起来会很方便。 管理软件能支持拖拽功能,会好用很多,用户体验也会改善很多。想做好一个组件需要把放放面面都彻底做好才可以。   想要控件支持拖拽,需要设置 AllowDrop 属性。   还需要写下面的2个事件。   参考代码如下,有需要的可以参考一下,把有需要的代码参考一下就可以了。   代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->//-----------------------------------------------------------// All Rights&nb

也谈Asp.net 中的身份验证

  钱李峰 的这篇博文《Asp.net中的认证与授权》已对Asp.net 中的身份验证进行了不错实践。而我这篇博文,是从初学者的角度补充了一些基础的概念,以便能有个清晰的认识。   .codearea{ color:black; background-color:white; line-height:18px; border:1px solid #4f81bd; margin:0; width:auto !important; width:100%; overflow:auto; text-align:left; font-size:12px; font-family: "Courier New" , "Consolas" , "Fixedsys" , "BitStream Vera Sans Mono", courier,monospace,serif} .codearea

个人管理:从昨天的一个设计评审来谈如何与人交流你的设计思路

昨天项目组进行了一个设计评审,主要是对OpenExpressApp的AutoUI部分进行重构,我相当于评审人。大家也可以把这个评审过程当做与人交流你的设计思路的一个过程,以下从我评审的一些要素来谈谈与人交流设计思路时需要考虑的内容,也许对大家在实际工作中的架构、设计和沟通都有所帮助。   评审并不是审判,你直接说出结果之后,然后等着判官下笔,评审一定是基于特定主题进行的,所讨论的东西都围绕这个主题,那么如何让人先清晰你的这个主题是需要考虑的。对于不同人来说,每个人关注视角不一样,所以还需要针对这个主题,对于不同场合、不同参与者,你需要使用什么方式来讲哪些内容才能够让参与者都清晰。 影响我评审关注的一些观点 技术是为业务服务的,再考虑技术时一定需要想想为实际业务做了什么 你清楚的别人不一定清楚一般自己做的设计会觉得很简单,可维护很好,但是没有做过的人理解起来很可能是相反的 你觉得简单的别人

键盘监控的实现Ⅱ——容易产生误解的CallNextHookEx函数

在上文“键盘监控的实现Ⅰ——Keyboard Hook API函数”中介绍了键盘的Hook API函数。   重点就在按键消息处理函数   Private Function KeyboardHookProc(ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As Integer      Dim MyKeyboardHookStruct As KeyboardHookStruct = DirectCast(Marshal.PtrToStructure(lParam, GetType(KeyboardHookStruct)), KeyboardHookStruct)      

这里的程序员基础太差!!!

博客园里人们的基础都太差了,可能多数都是刚参加工作或是还没毕业吧,有点基础的都走了...   一个关于类型问题的也能讨论好几天,不难想象大家有多菜了.很简单的答案,与一个有毛病的问题,哪些是变量,哪些关键字还没分清简单的测试,就是传递变量给函数,值传递,与引用传递区别立刻就分清了   值传递的变量修改后不会影响传递之前的变量值.引用传递后则效果相返.    作者: 不及格的程序员-八神 发表于 2010-12-08 10:19 原文链接

[VSTO系列]一、Getting Start!

我们的目标: 在这次的系列文章中,我们通过一些小例子,来循序渐进的学习VSTO for excel这个已经出现很久的技术,在平常的使用时,我很少发现比较全面或者具体的文章作介绍,当然,除了MSDN。 在我的博客开始这个系列,一为了巩固自己的相关技术知识,二也是为了和大家一起交流分享自己的技术心得和体会,希望能够获得更多宝贵的经验! 这个系列第一期大致有如下文章: Getting Start(Add-In级别) 简单的UI设计(Robbin) 批量操作(附带一个qq联系人导出例子,Add-In级别)J 丰富的自定义UI交互(Add-In级别) 部署Add-In组件到客户端 第二期将根据第一期的情况做灵活修改和调整,欢迎大家拍砖! 什么是VSTO:  是啊,什么是VSTO呢,其实很多朋友包括MSDN都给出了很好的定义,在此我就不再罗嗦,请大家通过如下网址进行查阅吧: 引用:

Silverlight与HTML双向交互

Silverlight具备很好的用户体验,但有时需要在页面的布局上进行特殊处理,比如作为webpart集成到Sharepoint中等等。 HTML和Silverlight之间的双向交互可以更灵活的使用Silverlight进行开发,上午摸索了一下,记录在此。 一,向Silverlight传递数据,实现个性化加载 Silverlight在HTML中的引用是: <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> <param name="source" value="ClientBi

WPF中的自定义ListBox(一)

上周侯捷大师来京做了一次讲座,有幸和他聊聊。当别人排队,而我也在排队。有意思的是当别人在找侯捷大师签名时,而我确有幸为侯捷大师签了一次名,当然是在我的《葵花宝典——WPF自学手册》上签下了自己难看的名字。这不是重点,重点是他提到他的人生中几件关键的事情。其中一件,如果我的记忆没有错的话,应该是Windows 3.0来的时候的冲击,他当时还在一个台湾的研究所里工作,在考虑窗口,控件如何“Message Based,Event Driven”(以消息为基础,事件驱动之)。Windows3.0来了,一下他的模糊思路明晰起来,尽管侯大师考虑的只是一个雏形,而Windows是实实在在真正的产品。但这并不重要,重要的是他们的思路不谋而合。这样他不至于在DOS到Windows巨变的情况下“死在沙滩上”。很多程序员由于无法从DOS的编

sql-isnull方法的使用

在程序开发过程中,程序员用到最多的估计就是数据库了,几乎在任何一个地方都会和数据库打交道,数据库的增加,删除,更新,查询,都必须用到sql语句或者是存储过程,归根结底还是试用sql数据库,但是在敲写相关sql语句时,我们经常会遇到一些空的字符串或者是字段,这就给我们对数据库造成一定的麻烦,系统经常会提示“某值null不能转换”“插入的值不能为空”等等诸如此类的提示,isnull函数会帮助你搞定这些小菜。 Isnull 函数主要作用是将为空的值替换为指定值,如果不为空返回检查类型的返回值,isnull的语法: Isnull (check_expression , replacement_value) 参数c

C 语言线性表操作

今天老师对数据结构进行了少有的详细讲  由此可见这个知识点是多么的重要  也是因为上课的时候听的晕晕乎乎的  所以下课的时候回头再细细的看看  把当时所有的方法都写了个实例 以后再看看 所以就把每个方法都分开  各位前辈也对这篇文章进行了点评  当时因为对链表和线性的的定义不熟所以有点错误  但是我查了下资料感觉线性表与链表之间只是实现的方式不同  而动态数组是实现线性表的一种方式 而不能说动态数组就是一种线性表 现在正在学习线性链表 还有很多不足之处  还希望各位前辈多多指教 下面是当时写的代码:  定义: 代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighligh

JQuery Smart UI 1.0正式发布&amp;Smart UI网站上线【演示、API、下载等】

很抱歉,据上次Smart UI的简介系列之后一直都没更新,本来计划一周完成Smart UI的网站、API、Demo,结果时间编写的时候才发现内容不是一点的多。在开发网站和写Api的时候,同时也发现不少可以优化的地方,因此对框架进行了一次大范围的优化。现在网站已经上线,地址是:http://smartui.chinamzz.com/。     该网站也是使用Smart UI框架进行开发,主要的内容包括: Smart UI的介绍 Smart UI 各种Plugins的功能演示 框架基础演示与说明【目前主要为基础场景实例,后面会增加其他常用和丰富一点的实例】 各种Demo和框架源文件下载. Plugins API、Smart UI框架API、数据接口、后台框架【未完,后续会在实例应用篇同步更新】 留言功能.   关于代码下载,经过再三考虑,暂不提供Vs2005版,因为在没有JS智能