在C#程序中使用ocx的方法
摘要:在C#程序中使用ocx的方法 在做一个WPF的项目时(VS2008,C#),需要引用一个使用c++编译的ocx组件,但是运行的时候经常报错,无法使用其中提供的接口和方法。上网查了一下解决办法,方法很多,但是很多都没有奏效。最终找到了一个比较有效的方法,下面就是在我的程序中能够成功使用的例子,分享一下。(虽然已经是去年的了—_—|||)1、在c#工程文件中,使用c++等其他语言编译的ocx组件时,若为WinForm工程则不会报错,若使用WPF等其他类型的工程,在调用组件内的方法时,会报错:灾难性故障未处理 System.Runtime.InteropServices.COMException M
阅读全文
在WEB程序中小心使用 “ThreadStatic”
摘要:在WEB程序中小心使用 “ThreadStatic”场景在WEB系统开发中,我们经常面对这样的需求:如何在一个请求中共享数据或对象实例?之前我都会用HttpContext.Current.Items。然而有一天我发现了两个事实:一、每个请求都是在一个线程中执行的;二、[ThreadStatic]可以标注某个静态字段为每个线程提供独立的存储。面对这两个发现,我得出了这个结论:可以用[ThreadStatic]替换HttpContext.Current.Items。问题可以用[ThreadStatic]替换HttpContext.Current.Items吗?实验实验素材 1 using Syst
阅读全文
TDD:MS自带的单元测试 之 线程模型和执行顺序
摘要:TDD:MS自带的单元测试 之 线程模型和执行顺序背景我一直在呼喊“不要靠假设编程”,可是我却常常这么做。我用单元测试就是一种基于假设进行编程的反面教材,今天就下决心弄明白它。主要想弄明白两个问题:执行的所有单元测试方法的线程模型,是单线程?是多线程?执行的一个类型的所有单元测试方法会创建一个实例?还是一个单元测试方法创建一个实例?执行的所有单元测试方法的执行顺序,哪些是随机?哪些是固定?实验实验材料实验结果 1 第1步,AssemblyInitialize in Thread:16,the unittest hashcode is: 2 第2步,单元测试类C__ClassInitialize
阅读全文
ERP框架开发中的License许可验证机制设计与实现 (包含源代码下载)
摘要:ERP框架开发中的License许可验证机制设计与实现 (包含源代码下载)许可机制是ERP框架中必不可少的一部分,可以有效的保护框架资源在授权范围内应用,增加企业投资的回报。在研究了几种类型的许可机制(序列号注册码,Web服务联机验证,授权License文件)后,最后选定以Signed Xml配合RSA算法,作为许可机制的主要技术实现。主要达到的目的如下1 可以实现版本控制。企业版可使用所有的功能,专业版只可用部分功能,个人版免费使用,但功能集更少。public enum Version { Enterprise, Professional, Personal }2 功能点的控制上,同时在线用
阅读全文
通过分析内存来优化.NET程序
摘要:通过分析内存来优化.NET程序最近在做一个MSMQ的Agent服务,在这里分享一下这个服务在优化的一点经验,通过分析内存更准确地定位出程序中存在的性能问题,从而让程序的性能以倍数的提升.问题的引发由于通过.NET MSMQ的Client实现消息分布和故障转移实在测试效果并不理想..所以决定实现一个MSMQ的Agent服务,由于有网络编写的经验所以对实现的效果还有很有信心的.可惜最终实现出来的效果实在惨不忍睹...4个连接并发消息写入只有150/秒,实在是完全坑爹的结果!在架构上的设计并不存在问题,所以问题一定存在程序实现过程中,以往的经验告诉自己做内存分析是最直接的办法.问题排查一Buffer
阅读全文
BarCode条形码基于C# GDI+ 的实现
摘要:BarCode条形码基于C# GDI+ 的实现.-博客很久没有更新了,最近在做仓储系统的东西,所以用到了一维码。在参考了其他人的一些解决方案后加上自己的改良,便有了下面的方法。经过扫描机测试完全可用,跟大家分享一下。 条形码在生活中的应用非常广泛,具体的条形码知识大家自行百度,了解条形码知识对理解下面的代码是必要的。如果只是应用的话,直接拿去就可以用了。废话不多说,上代码 1 public Bitmap GetCode39(string sourceCode) 2 { 3 int leftMargin = 5; 4 i...
阅读全文
线程基础
摘要:.NET线程机制(一) 线程基础线程作用及开销 早期计算机一次只能运行一个程序,长时间执行程序容易出现计算机“瘫痪”的问题,如果程序进入死循环则只能重启系统。即使计算机不崩溃,也难免让用户崩溃。为了解决这个问题,操作系统设计者设计出了进程的概念,使得每个应用程序运行在一个虚拟的内存空间中。进程中又包含多个线程,CPU则根据操作系统调度执行每个进程中的线程任务。通过线程这种对CPU的虚拟化管理方式,操作系统形成了多任务执行的机制。但与一切虚拟化机制一样,线程会产生空间和时间的开销。这其中的开销包括:1、线程内核对象。该数据结构中包含线程上下文。Windows在x86架构CPU上为每个线程内核对.
阅读全文
泛型教程
摘要:30分钟泛型教程一、泛型入门:我们先来看一个最为常见的泛型类型List<T>的定义(真正的定义比这个要复杂的多,我这里删掉了很多东西)[Serializable]public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>{ public T this[int index] { get; set; } public void Add(T item); public void Clear(); public bool Contains(T item); public in
阅读全文
自己写Web服务器(续)
摘要:自己写Web服务器(续)前几天写了篇有关写Web服务器的博文,写得不好,多亏园友们的意见,给了我继续探究的动力。这篇就关于上次做的Web服务器做了些更改。 1.支持ASPX页面的访问多亏了园友的提点,使用了ApplicationHost类,使得宿主程序能够处理ASP.NET请求。后来上网搜了一下,原来就是写一个ASP.NET的宿主程序。上MSDN看了一下还不怎么明白,终究还是找了一些博文来看才明白。ApplicationHost属于System.Web.Hosting命名空间,要使用这个类要添加System.Web.dll引用。先上一点代码再解释吧1 private...
阅读全文
.NET中实现正确的资源释放模式
摘要:.NET中实现正确的资源释放模式在工作中,经常会碰到诸如内存泄漏的问题,有时候会听到同事讨论在.NET中如何释放内存,比如说“不要使用using,要手动调用dispose”,“要手动的编写析构函数”等等,其中横多观点我觉得不对,今天稍微整理一下,本文译自Effective C#。一 问题的由来 在.NET这种托管环境中,垃圾回收为我们管理内存,和其他一些语言如C++不同,我们不必操心内存泄漏,非法指针,没有实例化的指针,以及其他一些内存管理的问题。但是垃圾回收也不是万能的。在有些时候,我们也必须自己手动的使用过的资源进行清理。对一些非托管的资源,如文件句柄、数据库连接、GDI+对象,COM对象
阅读全文
Moon.Orm 4.5技术详解及研发平台免费发布
摘要:Moon.Orm 4.5技术详解及研发平台免费发布Moon.Orm总论一、Moon.Orm概述Moon.Orm是一个历经三年开发一套.Net Orm框架.但凡众多的智慧都是及其简单的,但不为人所知.这也是Moon.ORM的主要特色:大道至简.不得不承认linq和lambda语句带来的优雅,但同时我们需要承认linq的局限性:linq不是银弹,因为负责的场合linq几乎是做不到的,何况linq生成的sql不一定是你真正要的.(不是敌对linq,而是说实话,正如曾说:实际开发中没有银弹,只有平衡点,适合需求能解决实际情况的架构那就够了).而且我也没有必要再去写一个框架,做一个类似Nhibernat
阅读全文
地图控件GMAP.NET
摘要:enjoyeclipse深入理解最强桌面地图控件GMAP.NET --- 街景地图(StreetView)很久没有更新博客了,今天无事把GMAP.NET的代码又重新翻了翻,看到了街景地图的例子。街景地图是谷歌最早提出来的,我不知道谷歌的街景地图是如何实现的,在这个例子中,运用了WPF 3D的原理,对街景地图进行了简单的实现,在我看来更像是全景地图(PanoramaViewer)。先看看实现的效果,在本地运行代码的时候,鼠标拖动后整个图像是可以360旋转的,这里是张静态图片而已。整篇文档需要对WPF 3D有个基本的了解,至少要知道Viewport3D(视野),PerspectiveCamera(
阅读全文
Socket编程 (异步通讯) (Tcp,Udp)Part2
摘要:Socket编程 (异步通讯) (Tcp,Udp) - Part2Socket编程(异步通讯)(Tcp,Udp) 上一章主要展示了Socket的Tcp\Udp两种协议下的基本通讯方式,属于同步通讯。至于一个服务器对应多个客户端,或者对应多个请求,我们采用的是多线程的方式来解决此问题。然而本章节我们将有更好的方式去实现它:Socket在Tcp\Udp两种协议下的异步通讯方式。基于Tcp协议异步: BeginAccept方法和EndAccept方法 包含在System.Net.Sockets命名空间下。异步Tcp使用BeginAccept方法开始接受新的客户端连接请求,该方法中系统自动利用线...
阅读全文
C# PrintDocument 打印
摘要:C# PrintDocument 打印进来搞Window打印,发现还是很好弄的,就是在PrintDocument上画,跟在Canvas画一样,要什么样子就画什么样子,先上示例代码private void button1_Click(object sender, RoutedEventArgs e) { var printDocument = new PrintDocument(); //指定打印机 printDocument.PrinterSettings.PrinterName = "Microsoft XPS ...
阅读全文
.NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
摘要:.NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)前言刚开始做AJAX应用的时候,经常要手工解析客户端传递的参数,这个过程极其无聊,而且代码中充斥着:Request["xxx"]之类的代码。这篇文章的目的就是告诉初学者如何自动将客户端用AJAX发送的参数自动绑定为强类型的成员属性或方法参数。自动绑定到ASPX和ASHX框架支持 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threadi
阅读全文
sso 登录,网页跳转的实现方式
摘要:sso 登录,网页跳转的实现方式在昨天的博客中http://www.cnblogs.com/jake1/archive/2013/04/28/sso_scheme.html,我们介绍了几种单点登录的方案.不过那些方案我都没有实现过,只是在自己的一些客户公司里见过,下面我就要亲自介绍,我亲身设计和参与的sso方案. 首先,我们看看设计图吧.注:1)红色部分为加密传送的内容; 2)绿色部分为门户系统实现的流程; 3)灰色部分为外部应用系统原有已经实现的流程; 4)蓝色部分为外部应用系统需要增加或修改的流程;针对上面的图:流程看如下解释.场景一.用户从门户单点登录进入外部应用系统(参看流程图Step
阅读全文
自己写的Web服务器
摘要:自己写的Web服务器自己写一个使用Http协议的服务器。在谷歌搜了一下,发现其实.NET Framework里面本身提供了HttpListener类,看别人的博文介绍是它是对Socket的简单封装,也有一些人没有用这个类,还是直接用Socekt写了服务器。说是Socket的扩展性反而比较好。HttpListener毕竟是微软封装好的,安全性应该一般会比用Socket写的要高,如果大牛写的就不同了,像我这等水货,其实还是用HttpListener要好一些。但也是个尝试,也是学习,我尝试用Socket写。虽然说是基于Socket,但实际上用的Socket的连接池。连接池的实现细节在上一篇博文《So
阅读全文
Socket连接池
摘要:Socket连接池 “池”这个概念好像最早是在操作系统的课上听过的,到后来出来工作的第二天组长也跟我提起“池”这个东东。它给我的感觉是某种对象的集合,如果要用的话就取出,不用的话就放回。在学多线程的时候有接触过线程池,在写《Socket 一对多通信》的时候想到了Socket连接池这回事,不过在网上谷歌了一下,发现这类的文章貌似不多,看了一下园友的博文《高性能Socket设计实现》,获益良多,下了份源码来看,虽然有一部分看不明白,而且由于个人水平跑不了那份代码,但是从中我学到了不少,至少我写的“池”有一部分是用了这位田大哥的思想。 先来分析各个类之间的结构,整个连接池里面实际上是有两个池,一..
阅读全文
NPOI创建Excel﹑合并单元格﹑设置单元格样式﹑边框
摘要:NPOI创建Excel﹑合并单元格﹑设置单元格样式﹑边框今天在做项目中,遇到使用代码生成具有一定样式的Excel,找了很多资料,最后终于解决了,Excel中格式的设置,以及单元格的合并等等。下面就介绍下,使用NPOI类库操作Excel的方法。 1.首先我们先在内存中生成一个Excel文件,代码如下: HSSFWorkbook book = new HSSFWorkbook(); ISheet sheet = book.CreateSheet("Sheet1"); 2.然后在新创建的sheet里面,创建我们的行和列,代码如下: IRow row = sheet.CreateR
阅读全文
C#实现文件数据库
摘要:C#实现文件数据库如果你需要一个简单的磁盘文件索引数据库,这篇文章可以帮助你。文件数据库描述:每个文档对象保存为一个独立文件,例如一篇博客。文件内容序列化支持XML或JSON。支持基本的CRUD操作。文件数据库抽象类实现View Code 1 /// <summary> 2 /// 文件数据库,这是一个抽象类。 3 /// </summary> 4 public abstract class FileDatabase 5 { 6 #region Fields 7 8 /// <summary> 9 /// 文件数据库操作锁 10 ...
阅读全文