摘要: TFS二次开发系列 TFS二次开发系列:一、TFS体系结构和概念 TFS二次开发系列:二、TFS的安装 TFS二次开发系列:三、TFS二次开发的第一个实例 TFS二次开发系列:四、TFS二次开发WorkItem添加和修改、保存 TFS二次开发系列:五、工作项查询 TFS二次开发系列:六、... 阅读全文
posted @ 2013-10-08 12:02 .NET架构 阅读(3723) 评论(3) 推荐(7) 编辑
摘要: 本系列文章讲述Windows 8 app开发中的一些常用功能和实例,希望能借此抛砖引玉让大家可供参考和学习Windows 8 APP开发。 下面是具体文章和实例: Windows 8实用窍门系列:1.使用Xaml+C#开发第一个Metro Style应用程序 Windows 8实用窍门系列:2.Windows 8开发知识储备 Windows 8实用窍门系列:3.第一个拆分布局应用程序修改Logo Windows 8实用窍门系列:4.Windows 8的常用鼠标事件 Windows 8实用窍门系列:5.Windows 8弹出提示框MessageDialog与await、async关键字 W... 阅读全文
posted @ 2013-03-18 14:42 .NET架构 阅读(2497) 评论(5) 推荐(9) 编辑
摘要: 由浅入深CIL系列文章从基础开始一步一步讲解CIL语言,让我们能够更加了解CIL,了解.NET的中间语言和底层实现,为我们在平时开发和研究C#的过程中打好基础。希望大家能够喜欢~ PostSharp AOP编程系列文章将以实例的方式分析和讲解基于PostSharp框架的AOP编程,为我们在工作中的编码提供方便和快捷,从繁复的次要逻辑中解放出来,让大家用更多的心思去关注主业务流程逻辑。 阅读全文
posted @ 2012-02-13 10:22 .NET架构 阅读(3258) 评论(2) 推荐(9) 编辑
摘要: 这是一个老生常谈的设计模式系列文章,本系列力图从最简洁的语言和最易理解的实例来让大家认识设计模式的思想和思路,从而在实际项目中能够用到一二。现在将本系列文章详列如下: 极速理解设计模式系列:1.建造者模式(Builder Pattern) 极速理解设计模式系列:2.观察者模式(Observer Pattern) 极速理解设计模式系列:3.代理模式(Proxy Pattern) 极速理解设计模式系列:4.原型模式(Prototype Pattern) 极速理解设计模式系列:5.组合模式(Composite Pattern) 极速理解设计模式系列:6.适配器模式(Adapter Pattern) 极速 阅读全文
posted @ 2011-10-31 11:17 .NET架构 阅读(8585) 评论(19) 推荐(33) 编辑
摘要: 在最近的几个月内整理出了Silverlight的一些相关的比较实用的功能讲解文章,并且随着Silverlight 5 beta版本的发布整理出的新特性系列文章,在这里做一个总的概括和索引,以方便大家观看。   Silverlight 5 beta新特性探索系列 内容简介:Silverlight 5 beta新特性探索系列是在Silverlight 5 beta版出现之后第一时间内写出的一个探索新特性的文章,对于绝大部分Silverlight 5 beta的新特性都在此系列文章中有所讲解。 适用于广大Silverlight爱好者或者即将采用Silverlight 5启动新项目的项目开发人员。每篇文章都有实例源码下载运行。 阅读全文
posted @ 2011-05-27 10:01 .NET架构 阅读(9598) 评论(17) 推荐(20) 编辑
摘要: 在多线程编程里面我们经常会锁的使用,实际上在这个过程中,我们的锁主要分为悲观锁和乐观锁,用他们来实现多线程的并发编程控制。 悲观锁: 我们悲观的认为这一段代码或者是数据会发生资源抢占和异常,那么我们在进入这一段代码或者访问某一个数据之前就直接先加上锁,我访问的东西,其他人都不可以再访问,除非我访问完 阅读全文
posted @ 2021-06-29 19:07 .NET架构 阅读(449) 评论(0) 推荐(0) 编辑
摘要: Task 创建每个线程需要占用1MB的虚拟内存,并且线程过多会导致CPU耗费大量时间在切换不同线程上。所以在之前我们会使用线程池来自动分配线程。 在.Net Framwork 4,TPL提供了一个新的方式去创建线程,那就是Task类,它告诉任务调度器有异步工作需要做,任务调度器有多重测量,但是默认是 阅读全文
posted @ 2021-05-21 17:31 .NET架构 阅读(681) 评论(0) 推荐(0) 编辑
摘要: 在.Net的多线程编程中,最基础的一个模块类是Thread类,但是我们在实际开发中却应该少用Thread去直接创建线程。原因如下: 一、Thread.Priority 这个属性允许我们去设置线程的优先级,让线程将时间片(Time Slice)优先分配给优先级高的程序,但是请注意可能会导致优先级高的线 阅读全文
posted @ 2021-05-20 20:26 .NET架构 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 在当今计算机系统中,已经大量存在多核心CPU,或者是在多核心基础上有进一步的超线程技术将虚拟CPU数量翻倍。在计算机发展之初,我们的应用程序是按照一个CPU只做一件事情来应用,也就是顺序执行。随着时间的不断变化,我们的CPU计算能力越加强大,那么我们可以使用线程技术,让每个核心都去做一件事,或者使用 阅读全文
posted @ 2021-05-20 16:15 .NET架构 阅读(1194) 评论(0) 推荐(2) 编辑
摘要: 线性表(Linear List) 线性表是一个线性结构,它是一个含有n≥0个结点的有限序列,对于其中的结点,有且仅有一个开始结点没有前驱但有一个后继结点,有且仅有一个终端结点没有后继但有一个前驱结点,其它的结点都有且仅有一个前驱和一个后继结点。线性表的顺序存储结构—顺序表 线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。顺序表的特点 1.容量固定 存储顺序表的元素需要一整块内存空间,因而顺序表的容量一旦确定,便不能更改。 2.访问速度快 假设每个元素占用的空间大小为L个字节,其中第一个单元的存储地址则是该结点的存储地址,并设表中开 阅读全文
posted @ 2014-01-27 12:28 .NET架构 阅读(2633) 评论(0) 推荐(0) 编辑
摘要: UIMap文件是Coded UI Test的核心文件,它分为三个文件。 1.UIMap.uitest 这是xml文件,里面描述了所有需要操作的目标控件以及进行操作的动作等。 2.UIMap.Designer.cs 根据UIMap.uitest文件自动生成代码的区域,每次生成录像动作的时候都会覆盖上一次的生成结果。所以我们在这个文件里面做的修改都会在下次生成代码时被替换掉。 3.UIMap.cs 自定义代码区域,我们将UIMap.Designer.cs中的动作记录和断言拷贝此文件中,然后进行相应修改之后,下次根据UIMap.uitest文件生成... 阅读全文
posted @ 2014-01-20 17:05 .NET架构 阅读(2099) 评论(0) 推荐(3) 编辑
摘要: 上一篇文章我们编写了此例的DTO层,本文将数据访问层封装为逻辑层,提供给界面使用。 1.获取TFS Dto实例,并且可以获取项目集合,以及单独获取某个项目实体 public static TFSServerBll Instance = new TFSServerBll(); public TFSServerDto dto; public TFSServerBll() { dto = new TFSServerDto("http://server:8080/tfs/Project/"); } ... 阅读全文
posted @ 2013-11-25 12:46 .NET架构 阅读(2054) 评论(4) 推荐(1) 编辑
摘要: CodeUI Test是微软自动化测试的一个比较好的项目,它的原理是获取到Windows窗口上的控件,然后针对控件的部分属性进行获取和对比,模拟对控件进行点击、双击、右键点击等事件。这样可以录制用户测试用例的动作,一次录制完动作,以后只需要运行测试用例程序,即可自动化测试。 注意:Code UI Test只能针对Window 程序。如果是C#编写的将会更加有效。 1.创建一个Code UI Test项目和普通WPF项目。 2.运行测试用例里面的WpfApplication1.exe,然后右键点击测试用例“CodeUITest”项目里面的UIMap.uitest文件,然后点击“使用编码... 阅读全文
posted @ 2013-11-18 11:32 .NET架构 阅读(5756) 评论(0) 推荐(1) 编辑
摘要: 在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI、BUG等工作项进行统计。在本文中将大略讲解如果进行这些数据统计。 一:连接TFS服务器,并且得到之后需要使用到的类方法。 /// /// tfs的 /// private TfsTeamProjectCollection server; private WorkItemStore workstore; private TeamSettingsConfigurationService configSvc; private TfsTeam... 阅读全文
posted @ 2013-10-28 11:40 .NET架构 阅读(1954) 评论(0) 推荐(2) 编辑
摘要: clr基本 CLR(Common Language Runtime)是一个可由多种编程语言使用的“运行时”。(例如:c#,c++/cli,vb,f#,ironpython,ironruby,il...) CLR的核心功能内存管理、程序集加载、安全性、异常处理、线程同步、泛型、尾调用指令和基本的公共语言基础结构 (CLI) 类型系统等。 托管模块是一个标准的32位microsoft windows可移值执行体pe32文件(64位系统为pe32+),他们需要clr才能执行。 托管的程序集总是利用windows的数据执行保护和地址空间布局随机化,这2个功能旨在增强整个系统的安全性。 托管... 阅读全文
posted @ 2013-10-14 11:23 .NET架构 阅读(2180) 评论(3) 推荐(6) 编辑
摘要: 变量 1.局部变量的声明(一个@) declare @n int --声明变量关键字为declare 然后@加变量名 后面是变量类型 declare @s varchar(36) 2.局部变量的赋值 set @s='f4' set @n=@n+1 --变量的赋值有两种方法,一种是通过set,一种是select 如果变量不附初始值则默认为null,null参与计算的结果还是null,这一行的@n就等于null select @n=age from students --如过变量通过select赋值,这里可能在表中查到很多age结果,这里只赋值查询出来的最后一个... 阅读全文
posted @ 2013-09-30 11:25 .NET架构 阅读(3358) 评论(0) 推荐(3) 编辑
摘要: 锁 锁的模式 锁模式描述共享(S)用于不更改或不更新数据(只读操作),如SELECT语句更新(U)用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。排它(X)用于数据修改操作,例如INSERT、UPDATE或DELETE。确保不会同时对同一资源进行多重更新意向SQL Server有在资源的低层获得共享锁或排它锁的意向意向锁的类型为:意向共享(IS)、意向排它(IX)以及意向排它共享(SIX)架构在执行依赖于表架构的操作时使用。架构锁的类型为:架构修改(Sch-M)和架构稳定(Sch-S)大容量更新(BU)向表中大容量复制数据并指定了TABLOCK提. 阅读全文
posted @ 2013-09-23 12:47 .NET架构 阅读(4714) 评论(0) 推荐(5) 编辑
摘要: 触发器 触发器的基础知识create trigger tr_name on table/view {for | after | instead of } [update][,][insert][,][delete] [with encryption] as {batch | if update (col_name) [{and|or} update (col_name)] } 说明: 1 tr_name :触发器名称 2 on table/view :触发器所作用的表。一个触发器只能作用于一个表 3 for... 阅读全文
posted @ 2013-09-11 11:49 .NET架构 阅读(7041) 评论(5) 推荐(6) 编辑
摘要: 在TFS中对于版本控制是在WorkSpace工作区来控制的。 首先我们先整理WorkSpace的一些基本使用方法。 CheckIn:迁入挂起的操作 CreateMapping:创建一个本地映射地址 Delete:删除工作区 GetPendingChanges:获取挂起的工作区 Merge:合并工作项 PendAdd:排队文件或一个文件夹添加到版本控制储存库 PendBranch:计划一个文件或文件夹的分支 PendDelete:队列删除文件或文件夹的从版本控制储存库 PendEdit:编辑签出文件从版本控制储存库 其次我们通过一个实... 阅读全文
posted @ 2013-08-26 11:42 .NET架构 阅读(6167) 评论(2) 推荐(2) 编辑
摘要: 本节将讲述如何查询工作项,用于二次开发中定义获取工作项列表。 使用WorkItemStore.Query方法进行查询工作项,其使用的语法和SQL语法类似:Select [标题]from workitemswhere [工作项类型]='任务' and [指派给] = 'administrator'order by [标题] 我们通过多个步骤来学习,一、我们连接TFS服务: //TFSURI Uri tfsUri = new Uri("http://pc-20130113jkun:8080/tfs"); TfsTeamPro... 阅读全文
posted @ 2013-08-12 11:47 .NET架构 阅读(5682) 评论(1) 推荐(4) 编辑
摘要: WorkItemStore:表示跟踪与运行 Team Foundation Server的服务器的工作项客户端连接。A.添加工作项 1.首先获得某服务器的WorkItemStore。 WorkItemStore workstore = server.GetService(); 2.然后通过对上面WorkItemStore获得Project项目。 Project project = workstore.Projects["Calueng"]; 3.根据Project获得工作项类型WorkItemType,可以是Bug,任务等。 WorkItemType itemtyp... 阅读全文
posted @ 2013-07-29 11:24 .NET架构 阅读(6446) 评论(2) 推荐(4) 编辑
摘要: 首先我们需要认识TFS二次开发的两大获取服务对象的类。 他们分别为TfsConfigurationServer和TfsTeamProjectCollection,他们的不同点在于可以获取不同的TFS API服务类。他们的区别如下:服务TfsConfigurationServer (服务器级别)TfsTeamProjectCollection (集合级别)ITeamFoundationRegistryIIdentityManagementServiceITeamFoundationJobServiceIPropertyServiceIEventServiceISecurityService... 阅读全文
posted @ 2013-07-23 11:26 .NET架构 阅读(8145) 评论(7) 推荐(2) 编辑
摘要: 本系列的实例将采用TFS 2012+Sql Server2012编写。 TFS的完整版本安装最好是在Windows server2008 64位以上版本中,其包括64位的SQL SERVER 2012,SharePoint 2012,Team Foundation Server 2012和Sql Server Reporting Services。 在Windows 7 版本中安装的为非完全版本的。本系列将采用Windows 7中安装进行二次开发。不包括SharePoint组件。 在安装过程中注意SQL Server选择为混合模式,在安装TFS的时候使用Windows身份认证的方式。... 阅读全文
posted @ 2013-07-15 12:23 .NET架构 阅读(5111) 评论(5) 推荐(3) 编辑
摘要: TFS是Team Fundation Server的简称,是微软VSTS的一部分,它是Microsoft应用程序生命周期管理(ALM)工具的核心协作平台,简单的说它是管理和开发软件项目的整个生命周期的平台工具。 TFS的分为客户端层、应用层、数据层。 他们的数据模型流转如下图: 客户端层分为架构师客户端、开发人员客户端、测试人员客户端等。 应用层分为:版本控制、团队生成、团队站点(SharePoint)、工作项跟踪、团队报告(Sql Server Reporting Service)、项目管理、TFS API接口(Web Service)。 数据层:配置数据库、仓库数据库、分析... 阅读全文
posted @ 2013-07-01 12:01 .NET架构 阅读(12606) 评论(4) 推荐(7) 编辑
摘要: Monitor对象 1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁,这就是Monitor最常用的两个方法,当然在使用过程中为了避免获取锁之后因为异常,致锁无法释放,所以需要在try{} catch(){}之后的finally{}结构体中释放锁(Monitor.Exit())。 2.Monitor的常用属性和方法: Enter(Object) 在指定对象上获取排他锁。 Exit(Object) 释放指定对象上的排他锁。 IsEntered 确定当前线程是否保留指定对象锁。 Pulse 通知等待队列中... 阅读全文
posted @ 2013-06-24 11:12 .NET架构 阅读(19597) 评论(7) 推荐(11) 编辑
摘要: 一、Delegate委托可以理解为一个方法签名。 可以将方法作为另外一个方法的参数带入其中进行运算。在C#中我们有三种方式去创建委托,分别如下: public delegate void Print(string str); static void delegatemethod(string str) { Console.WriteLine(str); } public static void Main() { #region 委托 /... 阅读全文
posted @ 2013-05-21 11:29 .NET架构 阅读(17979) 评论(6) 推荐(6) 编辑
摘要: 在Windows 8中SemanticZoom缩放视图支持对GridView和ListView控件的视图效果进行缩放,它提供一个详细信息视图(ZoomedInView)以让用户查看详细信息,另外提供一个缩小索引视图(ZoomedOutView)让用户快速定位想要查看信息的大概范围。 一.想要实现这种效果我们需要使用SemanticZoom控件和CollectionViewSource控件配合使用: SemanticZoom控件: <SemanticZoom.ZoomedOutView> <!--此处填充缩小索引视图的GridView,一般情况下绑定Group.Ti... 阅读全文
posted @ 2013-05-06 13:59 .NET架构 阅读(1905) 评论(0) 推荐(1) 编辑
摘要: C#中如何合理的释放非托管内存?在本文中我们将讲解使用IDisposable释放托管内存和非托管内存。 A.首先需要让类实现IDisposable接口,然后实现IDispose方法。 A.a核心Disponse(bool isDisponse) 1.此方法首先判断isReadyDisposed(判断是否第一次调用此核心方法),如果不是第一次调用则不做任何操作。 2.再判断是否是析构函数调用?如果是析构函数调用不释放托管资源,其交由GC进行释放,如果析构函数释放托管资源可能之前GC释放过,就会导致出现异常。此判断内部释放托管资源内存。 3.释放非托管资源... 阅读全文
posted @ 2013-04-22 13:48 .NET架构 阅读(3443) 评论(2) 推荐(6) 编辑
摘要: 在本文中将从基础角度讲解HashTable、Dictionary的构造和通过程序进行插入读取对比。 一:HashTable 1.HashTable是一种散列表,他内部维护很多对Key-Value键值对,其还有一个类似索引的值叫做散列值(HashCode),它是根据GetHashCode方法对Key通过一定算法获取得到的,所有的查找操作定位操作都是基于散列值来实现找到对应的Key和Value值的。 2.我们需要使用一个算法让散列值对应HashTable的空间地址尽量不重复,这就是散列函数(GetHashCode)需要做的事。 3.当一个HashTable被占用一大半的时候... 阅读全文
posted @ 2013-04-15 11:39 .NET架构 阅读(18674) 评论(10) 推荐(15) 编辑