LINQ执行表达式
摘要:.NET深入解析LINQ框架(六:LINQ执行表达式)在看本篇文章之前我假设您已经具备我之前分析的一些原理知识,因为这章所要讲的内容是建立在之前的一系列知识点之上的,为了保证您的阅读顺利建议您先阅读本人的LINQ系列文章的前几篇或者您已经具备比较深入的LINQ原理知识体系,防止耽误您的宝贵时间。到目前为止我们对LINQ的执行原理已经很清楚了,从它的前期构想到它真正为我们所用都有足够的证据,但是似乎问题并没有我们想的那么简单,问题总是在我们使用中频频出现尤其是新技术的使用,当然有问题才能有进步。[王清培版权所有,转载请给出署名]一:LINQ执行表达式在研究LINQ的过程中,参考了很多技术文章还有
阅读全文
利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出
摘要:我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现。我的博客介绍过几篇关于Aspose.Word控件和Aspose.Cell控件的使用操作,如下所示。《使用Aspose.Cell控件实现Excel高难度报表的生成(一)》《使用Aspose.Cell控件实现Excel高难度报表的生成(二)》《使用Aspose.Cell控件实现Excel高难度报表的生成(三)》《使用Aspose.Cell控件实现多个Excel文件的合并》以及关于Word的操作的《利用Asp
阅读全文
.Net程序集(.exe/.dll)文件剖析
摘要:我们在用Visual Studio进行开发的时候,经常会跟dll或者exe的文件打交道,懂一点计算机的同学会想,dll文件里面存的应该是二进制吧,它不能直接运行,不过可以被exe的程序调用。懂点.Net的同学:哦,原来dll文件中存放的是经过编译后的MSIL,运行时,它会由一个叫JIT的编译器再编译为适合本地运行的二进制,供程序运行。那么今天,作为懂得不是一点点的我们,就应该了解这里面到底是些什么东西,这样会更好的理解.Net框架。已经不记得是在哪里记下的哪位大神笔记,贴在自家墙上的,如今拿出来晒晒,只为跟众多园友们分享分享!如图所示: 在.Net Framewo...
阅读全文
.NET(C#):使用UPnP来穿透NAT使内网接口对外网可见
摘要:在写完Object 672后,软件的一个致命问题暴露出来,如果服务器和客户端都在内网环境下,即双方都通过NAT来接触外网,那么此时客户端是无法直接和服务器交流的。解决方案可以是:1:把服务器部署在不存在NAT的公网环境下。2:使用常见的NAT穿透方法比如UDP打洞,或者STUN协议,但是这些方法都需要另一个已知的部署在公网环境下的服务器。3:就是这篇文章主要讨论的方案,即不需要部署任何公网环境下的服务器,通过路由器支持的UPnP协议来把内网的接口绑定到公网接口上。UPnP的一大优势就是不会像UDP打洞那样,内网接口不需要先向外部接口发送UDP包来把绑定的公网接口告诉NAT,而且对于对称NAT,
阅读全文
利用表达式树构建委托改善反射性能
摘要:最近搞一个系统时由于在比较关键地方用到反射了,所以要关注了一下反射的性能问题。搜索一下,不难搜到老赵的这篇文章,下面是一些杂乱的笔记。(建议先看老赵的文章).Net4.0反射性能改善看老赵的文章,老赵得到的结果是这样的:?12300:00:00.0125539 (Directly invoke)00:00:04.5349626 (Reflection invoke)00:00:00.0322555 (Dynamic executor)而我把代码搞下来自己运行得到这样的结果:?12300:00:00.0009710 (Directly invoke)00:00:00.4142893 (Refle
阅读全文
WinForm实现类似QQ停靠,显示隐藏过程添加特效效果
摘要:这可能是个老题长谈的问题了,只是在项目中会用到这个效果,所以今天做个记录。大家见了别喷我。在项目中的需求是这样的。打开程序,在屏幕的右下角会显示一个窗体,一般情况下该窗体会隐藏停靠在右边,只露出很小部分,当鼠标移动到这个很小部分时,窗体全部显示,显示过程是从右边滑动到左边,当鼠标离开窗体时,窗体需要隐藏在右边,只露出很小部分,隐藏过程是从左边滑动到右边。实现此类效果我碰到的连个难点是:1、如何判断鼠标离开了窗体?2、窗体显示隐藏过程中效果如何表现平滑(就是给人一种流畅感觉)?1、判断鼠标离开窗体我开始想的是在WndProc方法中来获取鼠标坐标然后根据窗体的Location来判断,可能是小弟愚笨
阅读全文
ASP.NET的适配器设计模式(Adapter)
摘要:前天有一网友问及有关设计模式的适配器模式(Adapter)时,说不太好理解。让Insus.NET能否举个简单的例子来说明一下。下面的动画是Insus.NET做出来的效果:上面的演示,两个灯的规格一样,要求输入的电压为15伏。Light1是直接使用,而Light2是使用Adapter(电源适配器)。因此Light1只能接收15伏的电压,小于15伏,会提示电压过低,如果超过了15伏,Light1肯定被烧坏。Light2使用了电源适配器,它接收15伏至220的电压,在这电压范围之内,电源适配器会把电压转为15的电压。小于15伏,会提示电压过低,如果超过了220伏,适配器被烧坏。好,我们程序开始,先创
阅读全文
利用委托减少Try/Catch
摘要:http://www.cnblogs.com/yangcaogui/archive/2013/02/03/2890862.html前段时间利用了一点空闲时间优化了项目中的代码,其中减少Try/Catch是这次优化的重点。主要是参考了老A的大作:如何编写没有Try/Catch的程序,看了一下,老A主要介绍了怎么减少按钮事件中的Try/Catch,不过我们项目是WCF,基本上就没有按钮事件,不过老A也提供了一个很好的思路,那就是利用委托动态的为每个方法加上Try/Catch,有了这个思路之后就很好做了。核心代码: 1 private T InvokeHandler<T>(strin..
阅读全文
VS2010+C#写的3D
摘要:先声明首先声明1:源代码我只发给 有Unity3D经验10天以上的朋友。如果Unity3D经验不足10天,请勿所要源代码。我也忙,关于环境配置啦之类的问题我.....2:没有10天以上Unity3D朋友可以留邮箱我吧APK发给你,让你体验一下,争取激起你对于U3D的兴趣。QQ邮箱哦...... 必须是ANdroid的机子。还有,如果你的手机是1500以下就算了哈。我这小游戏模型比较精致,你懂得.......3:游戏资源均从Unity的资源商店搞的.....,如果你觉得模型好看想商用别找我,去资源商店看哈........4:游戏采用VS2010+Unity4,纯C#开发。没错!VS2010+C#
阅读全文
C#一步一步实现插件框架的示例(四)
摘要:C#一步一步实现插件框架的示例(四)C#一步一步实现插件框架的示例(三)C#一步一步实现插件框架的示例(二)C#一步一步实现插件框架的示例(一)前面有朋友反应,运行时出现:“ExampleAddin.WorkBenchSingleTon”的类型初始值设定项引发异常错误,这是由于在执行插件的加载过程中出现了错误,比如我们这本篇的例子中,判断查询按钮是否有效时的判断:有这样的语句:var form = WorkBenchSingleTon.WorkBench.ActiveMdiChild;由于最初执行时workbench可能为空,所以就会报错,例子中加了if (WorkBenchSingleTon
阅读全文
C# 实现 MemCache 监控管理工具
摘要:网上一直想找一个C# 写的MemCache监控工具,无奈都是Php写的工具(memadmin 是一款不错的监控工具),于是自己花费一周时间实现了部分memadmin 的功能,然后加入了部分自己需要的部分功能,下面详细介绍一下,主要是通过 常用的命令 stats 显示服务器信息、统计数据等 stats reset 清空统计数据 stats malloc显示内存分配数据stats cachedump slab_idlimit_num显示某个slab中的前limit_num个key列表,显示格式如下ITEM key_name [ value_lengthb; expire_time|a...
阅读全文
并行编程(PLINQ)学习笔记
摘要:在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Microsoft为了利用这个硬件特性,于是在Visual Studio 2010 和 .NET Framework 4的发布及以上版本中,添加了并行编程这个新特性,我想它以后势必会改变我们的开发方式。 在以前或者说现在,我们在并行开发的时候可能会想到利用多线程和锁技术来做,充分利用多CPU的特性,但是当我们了解并掌握了并行编程技术之后,我们可以不必担心在多线程中的资源死锁和繁琐的DEBUG查找等低级操作。新的并行编程简单了并行开发,使我们可以用新的方法来编程并行运算的代码,从而不必直接去处理线程或者线程池。下图从较高层面上概述了 .N.
阅读全文
1.01和0.99的365次方的结
摘要:最近关于1.01和0.99的365次方的结果燃爆了网络,大家一致推崇为年底正能量。个人对这些文字游戏不甚感冒。不过这的确让我对其算法有了兴趣。之前在园子里看到过大数据相乘的算法,这个应该类似吧,只是多了小数点而已。一下是我写的代码,首次发,望轻喷。 //参数合法性检查略 //去除正负号和小数点 string first = double1.TrimStart('-').Replace(".",""); string second = double2.TrimStart('-').Replace(".",
阅读全文
初探IronJS
摘要:初探IronJS话说最近有特别的需求,要用C#调用一种动态的语言执行一些经常改变的操作。由于我对Lua情有独钟,所以一开始就想到了它,了解了下LuaInterface,貌似问题挺多(issue list上有许多没有解决的defect),而且好像与时下很火的DLR没什么关系。MS支持的Iron系语言看起来比较牛的样子,不过Python和Ruby我都没有接触过,最近也没有学门新语言的时间。搜了下IronLua,Google上有工程却没有代码。由于本人经常用JS写一些WSH的脚本(CMD太烂了),所以对JS还挺熟,于是IronJS就这样被我找到了!!IronJS功能是非常地牛,但文档确实是少了点,除
阅读全文
C#调用脚本语言(三)-- IronJS 与 IronLua 简单方法性能比较
摘要:1. 测试环境1.1. 硬件环境CPU:intel Core i7-740QM内存:8GDDR3 Memory1.2. 系统系统:Windows 8 Enterprise开发工具:Vs20121.3. 打开应用IE(2个博客园页面),VS(2个),Word,QQ(2个),Kugoo,skyDriver,QQ管家,金山毒霸1.4. 运行前硬件使用率CPU:20%内存:3.8G2. 测试结果以下测试结果取平均值,单位毫秒测试脚本IronJsIronLua测试情况运行循环次数平均每次运行时间平均每次输出时间平均每次运行时间平均每次输出时间脚本(3.1)运行1次3936.56013754.536618
阅读全文
C# 序列化与反序列化几种格式的转换
摘要:这里介绍了几种方式之间的序列化与反序列化之间的转换首先介绍的如何序列化,将object对象序列化常见的两种方式即string和xml对象;第一种将object转换为string对象,这种比较简单没有什么可谈的; public string ScriptSerialize<T>(T t) { JavaScriptSerializer serializer = new JavaScriptSerializer(); return serializer.Serialize(t); }第二种将object转换为xml对象: pub...
阅读全文
C# 5.0 新特性之 CallerInformation
摘要:去年8月,Visual Studio 2012和.NET Framework 4.5已经完成了,在.NET Framework 4.5 的C# 5.0的新特性中,其中之一就是CallerInformation,今天跟大家谈谈。CallerInformation的三个AttributeCallerInformation的三个Attribute可以用来获取方法调用者的信息,这三个Attribute在System.Runtime.CompilerServices命名空间下,分别叫做CallerMemberNameAttribute,CallerFilePathAttribute和CallerLine
阅读全文
C#通过简单的Http服务上传下载图片。
摘要:大概的流程如下图所示:1 服务端使用HttpListener类 监听客户端的连接请求。 HttpListener Listerner = new HttpListener(); 服务端新开一个线程,无限循环监听客户端的连接请求。 while (true) { HttpListenerContext Request= Listerner.GetContext(); ThreadPool.QueueUserWorkItem(ProcessRequest, Request); } Listerner.GetContext()函数在没有连接到来的时候,会挂起当前的线程。 当有连接到来的时候, 利用线程
阅读全文
在.NET 中调用COM组件
摘要:本专题概要:引言如何在.NET中调用COM组件——访问Office 互操作对象在.NET 中调用COM组件的实现原理剖析错误处理小结一、引言 COM(Component Object Modele,组件对象模型)是微软以前推崇的一个开发技术,所以现在微软的很多产品都用到了COM组件,如Office,IE等。然而如果.NET 平台下的程序想访问COM组件的方式来实现某个功能怎么办呢? 正是由于开发人员有这个需求,所以微软在.NET FrameWork中为COM和托管代码之间进行互操作提供了支持,这种互操作性的技术就是COM Interop。但是COM Interop(COm互操作)这项技术,不.
阅读全文
Socket报文和端口测试工具的开发(提供源码)
摘要:因为自己经常做Socket开发,经常要调试和维护多个服务器端和客户端的通信、报文数据等,网上的工具都是功能简单,用的不爽,所以一直都想自己写一个。Socket测试工具Socket测试工具源码年底不忙了,终于写了一个,提供给大家使用,源码可以随便使用和修改,欢迎多提意见,让这个工具更易用,方便Socket编程开发人鱼。主要的功能如下:1.建立Socket测试服务器端和测试客户端,并向其他端发送或接受报文数据,支持自动发送和自动应答,支持UDP和TCP;2.录入的IP地址和端口等参数数据进行本地XML序列化,下次自动打开。(这个是我需要的,不用每次都录入各种IP地址端口了);3.接受或发送的报文数
阅读全文