定制WPF中的DataGrid控件支持对不同的实体类实现中文标题显示
摘要:定制WPF中的DataGrid控件支持对不同的实体类实现中文标题显示问题提出:这是今天被问到的一个问题。情况是这样的:我们都知道WPF中有一个用来显示列表数据的DataGrid控件,而且该控件具有一个AutoGenerateColumns 属性(默认为true),它可以根据给定的数据,自动地设置列的标题,也就是说,我们可以根据需要读取不同的实体数据,然后绑定到控件上去,它自己知道该如何创建列,以及显示数据。这里的问题在于,我们的实体类定义通常都是英文的,例如下面是一个最简单的例子 public class Employee { public string FirstN...
阅读全文
一个简单基于LRU连接检测实现
摘要:一个简单基于LRU连接检测实现 在做网络应用的时候经常要处理不处于活动的连接,对于不活动的TCP连接可以通过设置KeepAlive来触发SocketError来处理掉.但有更多的时候是使用ping和pong来处理.对于ping,pong这种做法的发起者有两种情况,分别是由server或client发起.对于由服务器发起比较损耗资源毕竟每隔一段时间都要向整个连接列发送ping,当累计到定数量没得到pong回应用的时候杀死;而对于Client发起的话server只需要记录ping时间即可,隔一段时间没有得到ping的client杀死.但两种做法似乎都要对连接列表进行一次扫描,存在大量活动连接的时候
阅读全文
三种批量插入数据的方法
摘要:三种批量插入数据的方法批量插入数据本文将介绍三种批量插入数据的方法。第一种方法是使用循环语句逐个将数据项插入到数据库中;第二种方法使用的是SqlBulkCopy,使您可以用其他源的数据有效批量加载 SQL Server 表;第三种使用的方法是sql server中的表值参数方法,表值参数是 SQL Server 2008 中的新参数类型。表值参数是使用用户定义的表类型来声明的。使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据。 代码示例:此例子为控制台输出程序,有两个类,一个为BulkData类,主要实现了表值参数和sql
阅读全文
高质量代码(一)
摘要:高质量代码(一) 一、Parse与TryParse 我们以Int32为例,首先看一下Int32提供的Parse和TryPase方法: 从Parse和TryParse方法上我们可以看出它们之间的主要区别在于:如果Prase转换失败则会直接抛出异常;而TryParse在转换失败的时候会返回false,并且将out的Int32值设置为0. 如果我们要使用Parse方法来处理任意字符串转换为Int32类型时,则要编写如下代码:View Code1 string str= ...; 2 Int32 value; 3 try 4 { 5 value = Int32.Parse(str);...
阅读全文
Visual Studio 中的工程结构解析
摘要:Visual Studio 中的工程结构解析进来由于需要分析VS的工程结构,大家都知道以.sln结尾的就是vs的解决方案文件废话不多说,首先查看下一个简单的sln文件结构Microsoft Visual Studio Solution File, Format Version 11.00# Visual Studio 2010Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApplication1", "ConsoleApplication1\ConsoleApplicat
阅读全文
.Net 中内置的集合
摘要:基于树状位压缩数组的字符集合.Net 中内置的集合(HashSet<T>)采用的是哈希表数据结构,无论是插入还是删除的效率都非常高,但是作为通用的数据结构,难以对集合操作进行有效的优化。如果集合中存储的数据特定为字符的话,那么可以利用位压缩数组,即获得比较高的插入和删除效率,又能够有很高的集合操作效率。一、基于树状位压缩数组存储字符集合位压缩数组,就是 C# 中的 BitArray,它将 32 个布尔值压缩到一个 int[] 中,int 的一个位表示一个布尔值,以达到节约内存的目的。我这里使用的则是树状的位压缩数组,也就是说,它其实是一棵树,而不是一个简单的数组。这里分析一下一个字
阅读全文
委托与实践1
摘要:平时我们如果要用到委托一般都是先声明一个委托类型,比如:private delegate string Say();string说明适用于这个委托的方法的返回类型是string类型,委托名Say后面没有参数,说明对应的方法也就没有传入参数。写一个适用于该委托的方法: public static string SayHello() { return "Hello"; }最后调用: static void Main(string[] args) { Say say = SayHello; ...
阅读全文
修改方法签名的重构手法
摘要:修改方法签名的重构手法今天看到同事写的一篇博客《依赖快捷键做重构是不行的》。里面讲了一个这样的案例:本来有一方法,假设叫methodA。123public void methodA(){ // blablabla... }后来由于需求变动,需要增加一个参数,姑且看做这个样子。123public void methodA(String param){// blablabla... }他本来想直接修改方法签名(Intellij中快捷键是Ctrl+F6)。但这样会导致所有调用此方法的地方由于缺乏对新加参数的处理,会导致单元测试甚至编译失败。他得出结论说依赖快捷键做重构是不行的。我想说的是并不是依..
阅读全文
C# 预处理器指令
摘要:C# 预处理器指令介绍预处理指令是由编译器解释的命令,并影响输出或生成过程中的行为. 使用术语“预处理指令”只是为了与 C 和 C++编程语言保持一致。在 C# 中没有单独的预处理步骤,不像C和C++中,你不可以使用这些指令创建宏。预处理指令总是占用源代码中的单独一行,并且总是以 #字符和预处理指令名称开头。#字符的前面以及 # 字符与指令名称之间可以出现空白符。接下来我们看看有关以下 C# 预处理器指令的信息:#IF如果 C# 编译器遇到最后面跟有 #endif 指令的 #if 指令,则仅当指定的符号已定义时,它才会编译这两个指令之间的代码。C# 中的 #if 语句是 Boolean,仅测试
阅读全文
c#偏移量分页效果
摘要:c#偏移量分页效果分页效果对程序员来所是常见的,但是在这里我介绍的是一个不一样的分页效果,也许你们也长用,偏移量的分页效果,以前学的不精所以研究一好久觉得还是拿出来分享一下吧,同时也让我记住。好了光说大家可定没兴趣,来个效果图吧:这个效果想必大家不陌生吧。先介绍一下偏移量的思路吧,也方便我以后好记起,呵呵私心哈,但谁都会有忘性滴。。。思路第一步:获取总页数,每页显示多少个,当前页码,和样式。在此在这里css样式也作为参数传递了。思路第二步:上一页,下一页和记录分页位置(分页偏移量)思路第三步:排除过其他可能性的判断后就是分页的过程考虑了,首先我以10为界限吧,如果当前页<10或者不是最后
阅读全文
HelloData 开源net Orm框架
摘要:写在新工作之前的一个下雨天。HelloData 开源net Orm框架。自创,希望大家喜欢。HelloData 欢迎您。hello world是我们新入软件这行必敲得一段字母,深得人心。HelloData是小型的ORM框架,想在开源的时间立一足,必须得到大家的认可才行。现提供各种书写方法,大家有想法就说,文章末会提供源码的下载。HelloData.FrameWork:为数据库底层框架,支持多种数据库操作,加入了BaseEntity与BaseLogic,BaseManager两个有关业务逻辑的继承方式。在数据库生成model的时候使用T4生成,并且生成的数据库表对应的对象类为部分类(partia
阅读全文
Sqler 工具 CMd 更新
摘要:Sqler 工具 CMd 更新sqler工具介绍(监控一)sqler工具介绍(监控二)sqler 工具介绍(报表)sqler工具介绍(cmd)新加入 CMD 功能1 多线程远程创建文件夹2多线程远程操作服务3 多线程远程 操作windows账户4 多线程远程机器 加域、删域5 多线程远程添加 防火墙端口加域模块 1 #region JoinDomain 2 WorkFlow WFSqlerCmdJoinDomain 3 { 4 param([array] $servers,[string] $Domain 5 ,[string] $WmiAccount,[string] $WmiPassWo.
阅读全文
.net 使用 Aspose.Words 进行 Word替换操作
摘要:.net 使用 Aspose.Words 进行 Word替换操作背景: 之前在工作中,需要实现Word打印功能,并且插入图片。当时采取的方式则是使用书签进行操作。首先在word内插入书签,完成后,存为模板。程序加载该模板,找到书签,并在指定位置写入文字即可。 后期维护过程中,发现模板经常需要变更,但是书签在word中不方便查看,用户在编辑word的时候容易出错。于是想采取特殊字符串标识的方式进行替换。此时,图片的插入就存在问题,光标无法直接移动到指定字符串。资源下载: 源代码开发思路: 查阅Aspose.Words提供的API,发现有Range类有该方法:public int Repl...
阅读全文
.NET平台下不借助Office实现Word、Powerpoint等文件的解析(完)
摘要:.NET平台下不借助Office实现Word、Powerpoint等文件的解析(完)【题外话】这是这个系列的最后一篇文章了,为了不让自己觉得少点什么,顺便让自己感觉完美一些,就再把OOXML说一下吧。不过说实话,OOXML真的太容易解析了,而且这方面的文档包括成熟的开源类库也特别特别特别的多,所以我就稍微说一下,文章中引用了不少的链接,感兴趣的话可以深入了解下。【系列索引】Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析(一)获取Office二进制文档的DocumentSummaryInformation以及SummaryInformat
阅读全文
.NET Attribute(特性)的作用与用法
摘要:.NET Attribute(特性)的作用与用法——几句话解决Attribute使用的困惑本小文旨在言简意赅的介绍.NET中Attribute(特性)的作用与使用,算是对Attribute学习的一个总结吧,不当之处烦请热心网友帮忙斧正,不胜感激!切入正题。一点说明只介绍作用与使用方法,不深究原理。[其原理可参考MSDN:http://msdn.microsoft.com/en-us/library/aa288454(v=vs.71).aspx等相关文章]什么是Attribute?Attribute不是别的东西,就是类(貌似废话)。确切的说,它是为C#代码(类型、方法、属性等)提供描述性信息的类
阅读全文
基于事件的异步编程模式(EMP)
摘要:基于事件的异步编程模式(EMP)=============C#.Net 篇目录==============上一篇,我给大家介绍了“.NET1.0中基于IAsyncResult设计模式的异步编程模型(APM)”,它使用System.Threading命名空间的类来构造多线程应用程序。然而要想有效地使用这些工具类,需要有丰富的使用多线程软件工程的经验。对于相对简单的多线程应用程序,BackgroundWorker组件提供了一个简单的解决方案。对于更复杂的异步应用程序,可以考虑实现一个符合基于事件的异步模式的类。使用支持此模式的类,您将能够:1)异步执行耗时的任务。2)获得进度报告和增量结果。3)支
阅读全文
C#实现队列读写操作
摘要:C#实现队列读写操作集合大家都不陌生,但是实际应用确实有时候让人无从下手。其比数组最大的好处就是针对多变的动态的元素降服之功能!妙哉,笔者通过《C#高级编程》集合章节发现集合也会“博大精深,变化多端”的。但是有不同于书本,那么大一本厚书,让人敬而远之,特别一些些一套套理论的东西更是头大。笔者准备从集合的列表,队列,栈,链表,有序表,字典,等分系列发布。尽可呢避免大篇理论(核心的还是要强调的)。然后笔者自己做一些小实例,通过自己总结描述设计思想,结合代码实现,加以重点强调语句。最后配上运行结果!尽可能达到初学者有所悟吧。【队列】队列对元素操作是实现出队和入队的原则,又遵循先进先出准则:即先放进队
阅读全文
.NET平台下不借助Office实现Word、Powerpoint等文件的解析
摘要:Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析(三)【题外话】我突然发现现在做Office文档的解析要比2010年的时候容易得多,因为文档从2010年开始更新了好多好多次,读起来也越来越容易。写前两篇文章的时候参考的好多还是微软的旧文档(2010年的),写这篇的时候重下了所有的文档,发现每个文档都好读得多,整理得也更系统,感觉微软真的是用心在做这个开放的事。当然,这些文档大部分也是2010年的时候才开始发布出来的,仔细想想当年还是很幸运的。【系列索引】Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpo
阅读全文
C#智能视频监控软件
摘要:C#智能视频监控软件2013.01-2013.04用C#写了一个视频监控软件,Smart Vision—基于IP Camera的智能视频监控系统软件,此为项目总结。所参考的开源项目1、底层视频连接:Camera Vision - video surveillance on C#http://www.codeproject.com/Articles/15537/Camera-Vision-video-surveillance-on-C2、异常监测:Motion Detection Algorithmshttp://www.codeproject.com/Articles/10248/Motion
阅读全文
正由另一进程使用,因此该进程无法访问该文件
摘要:/// <summary>/// 写入日志/// </summary>/// <param name="log"></param>private void WriteLog(string log){//edit at 2012.10.17 改成无锁异步写如日志文件using (FileStream fs = new FileStream(DataLogFile, FileMode.Append, FileAccess.Write, FileShare.Write, 1024, FileOptions.Asynchronous)
阅读全文