【转】从寻找资源的习惯上谈如何获得好的代码及控件(使用Koders查找)

Posted by & filed under Uncategorized.

严格来讲,本文不是一个技术贴,但是却和我们的技术探索息息相关,每个人的寻找资源的习惯不同,因此获得的资源类型及数量也不同。至于如何获取相应的资源,各种习惯和方法,个人有个人的选择,本无可厚非,这里仅仅是从我本人的习惯方法,来谈论下获取资源的思路及途径,抛砖引玉,共同受益。 作为技术人员来说,我们一般常用的查找资源途径,基本上是通过Google、Bing、Baidu的查询,有时候也会跟着去Codeproject、博客园、CSDN等其他地方去寻找所要的资源,这些途径基本上能满足大多数的期望值,但是有时候针对性不够强,需要经过多次的筛选,才能寻到需要的代码或者控件等。 其实作为代码的查找,有一个地方http://www.koders.com/ ,这个是很不错的寻找代码地方,它里面有大量的开源代码,顺藤摸瓜,追本溯源,我们就可以找到优秀开源组件的地址,或下载,或借鉴,善莫大焉。 例如,有一天,我突然有一个想法,想做一个POP3相关的程序,因此在Google上搜索了一下POP3 Read more […]

【转】.NET开发不可不知、不可不用的辅助类(三)(报表导出—终结版)

Posted by & filed under Uncategorized.

.NET导出报表一般是采用导出Excel报表的方式输出内容。而这又分为两种方式:使用Excel模板方式和使用网页输出Excel格式两种。首先介绍简单的一种,网页输出Excel内容,这种不需要引用Excel的程序集。

使用时候代码如下:

另外一种就是先定义好Excel模板,然后输出指定格式的内容,这些内容通过开始单元格名称定位,然后写入内容,但是这种功能比较强大,输出的Excel内容也比较整齐。1. 首先在Web.Config中配置下 <system.web>   <identity impersonate=”true”></identity>    </system.web>2. 创建一个Excel模板文件,如下图所示,当然这个是简单的Excel模板,你可以定义很复杂 3. Read more […]

【转】.NET开发不可不知、不可不用的辅助类(二)

Posted by & filed under Uncategorized.

序列化及反序列化的辅助类SerializeUtil

序列化及反序列化的辅助类SerializeUtil测试代码

数据库字段NULL值转换辅助类SmartDataReader

数据库字段NULL值转换辅助类SmartDataReader测试代码

字符串操作辅助类

字符串操作辅助类测试代码

Web界面层操作的辅助类

Web界面层操作的辅助类测试代码

 转载自:http://www.cnblogs.com/wuhuacong/archive/2007/12/03/980956.html Read more […]

【转】.NET开发不可不知、不可不用的辅助类(一)

Posted by & filed under Uncategorized.

1. 用于获取或设置Web.config/*.exe.config中节点数据的辅助类

AppConfig测试代码:

2. 反射操作辅助类ReflectionUtil

反射操作辅助类ReflectionUtil测试代码:

3. 注册表访问辅助类RegistryHelper

注册表访问辅助类RegistryHelper测试代码:

4. 压缩/解压缩辅助类ZipUtil

压缩/解压缩辅助类ZipUtil测试代码:

 转载自:http://www.cnblogs.com/wuhuacong/archive/2007/12/03/980882.html Read more […]

C# BackgroundWorker的使用

Posted by & filed under Uncategorized.

BackgroundWorker 可以用于启动后台线程。 主要的事件及参数: 1.DoWork——当执行BackgroundWorker.RunWorkerAsync方法时会触发该事件,并且传递DoWorkEventArgs参数; 2.RunWorkerCompleted——异步操作完成或中途终止会触发该事件。 如果需要提前终止执行后台操作,可以调用BackgroundWorker.CancelAsync方法。 在处理DoWork事件的函数中检测BackgroundWorker.CancellationPending属性是否为true,如果是true,则表示用户已经取消了异步调用,同时将DoWorkEventArgs.Cancel属性设为true(传递给处理DoWork事件的函数的第二个参数),这样当退出异步调用的时候,可以让处理RunWorkerCompleted事件的函数知道是正常退出还是中途退出。 3.ProgressChanged——操作处理中获得的处理状态变化,通过BackgroundWorker.ReportProgress(int)方法触发该事件,并且传递ProgressChangedEventArgs,其中包含了处理的百分比,这个参数在UI界面上设置progressbar控件。 主要的方法: 1. Read more […]

【转】KeepAlive详解

Posted by & filed under Uncategorized.

KeepAlive既熟悉又陌生,踩过坑的同学都知道痛。一线运维工程师踩坑之后对于KeepAlive的总结,你不应该错过! 最近工作中遇到一个问题,想把它记录下来,场景是这样的: 从上图可以看出,用户通过Client访问的是LVS的VIP, VIP后端挂载的RealServer是Nginx服务器。 Client可以是浏览器也可以是一个客户端程序。一般情况下,这种架构不会出现问题,但是如果Client端把请求发送给Nginx,Nginx的后端需要一段时间才能返回结果,超过1分30秒就会有问题,使用LVS作为负载均衡设备看到的现象就是1分30秒之后, Client和Nginx链接被断开,没有数据返回。 原因是LVS默认保持TCP的Session为90s,超过90s没有TCP报文在链接上传输,LVS就会给两端发送RESET报文断开链接。LVS这么做的原因相信大家都知道一二,我所知道的原因主要有两点: 1. Read more […]

【转】.Net中的加密解密

Posted by & filed under Uncategorized.

引言 在一些比较重要的应用场景中,通过网络传递数据需要进行加密以保证安全。本文将简单地介绍了加密解密的一些概念,以及相关的数字签名、证书,最后介绍了如何在.NET中对数据进行对称加密和解密。 加密和解密 说到加密,可能大家最熟悉的就是MD5了,记得几年前我刚开始接触Web编程的时候,研究的一个ASP论坛程序,它的用户密码就是采用的MD5进行加密。MD5实际上只是一种散列运算,或者可以称为单向的加密,即是说无法根据密文(加密后的数据),推导出明文(原数据)。而我们下面要说明的,是在加密后可以进行解密、还原数据的。对于欲进行加密的对象,有的人称为消息,有的人称为数据,有的人称为信息,为了避免混淆,在本文后面部分,我统一将其称为消息。那么加密是什么呢?加密是通过对消息进行编码,建立一种安全的交流方式,使得只有你和你所期望的接收者能够理解。 那么怎么样才能叫安全呢?消息在接收方和发送方进行安全传递,一般要满足下面三个要点: 消息的发送方能够确定消息只有预期的接收方可以解密(不保证第三方无法获得,但保证第三方无法解密)。 消息的接收方可以确定消息是由谁发送的(消息的接收方可以确定消息的发送方)。 消息的接收方可以确定消息在途中没有被篡改过(必须确认消息的完整性)。 加密通常分为两种方式:对称加密和非对称加密,接下来我们先看看对称加密。 对称加密 对称加密的思路非常简单,就是含有一个称为密钥的东西,在消息发送前使用密钥对消息进行加密,在对方收到消息之后,使用相同的密钥进行解密。根据密钥来产生加密后的消息(密文)的这一加工过程,由加密算法来完成,加密算法通常是公开的。它的流程如下: 发送方使用密钥对消息进行加密。 接收方使用同样的密钥对消息进行解密。 可以使用下面一副图来表示: 对称加密存在这样两个问题: 虽然可以通过密钥来保证消息安全地进行传递,但是如何确保密钥安全地进行传递?因为发送者和接收者总有一次初始的通信,用来传递密钥,此时的安全如何保证? 接收者虽然可以根据密钥来解密消息,但因为存在上面的问题,消息有可能是由第三方(非法获得密钥)发来的,而接收方无法辨别。 为了解决上面两个问题,就需要介绍一下非对称加密。 非对称加密 非对称加密的接收者和发送者都持有两个密钥,一个是对外公开的,称为公钥,一个是自行保管的,称为私钥。非对称加密的规则是由某人A的公钥加密的消息,只能由A的私钥进行解密;由A的私钥加密的消息只能由A的公钥解密。此时我们可以得出接收方、发送方有两个公钥两个私钥一共四个密钥,我们先看看两种简单的方式,这两种方式都是只使用两个密钥。 第一种模式只使用接收方的公钥和私钥,称为加密模式。 加密模式 在加密模式中,由消息的接收方发布公钥,持有私钥。比如发送方要发送消息“hello,jimmy”到接收方,它的步骤是: 发送方使用接收者的公钥进行加密消息,然后发送。 接收方使用自己的私钥对消息进行解密。 可以使用下面一幅图来描述: 在这种模式下,如果第三方截获了发送者发出的消息,因为他没有接收者的私钥,所以这个消息对他来说毫无意义。可见,它能够满足本文最开始提出的消息安全传递的要点一:消息的发送方能够确定消息只有预期的接收方可以解密(不保证第三方无法获得,但保证第三方无法解密)。 除此以外,因为接收方的公钥是公开的,任何人都可以使用这个公钥来加密消息并发往接收者,而接收者无法对消息进行判别,无法知道是由谁发送来的。所以,它不满足我们开始提出的消息安全传递的要点二:消息的接收方可以确定消息是由谁发送的(消息的接收方可以确定消息的发送方)。 这个问题可以在下面的认证模式中得到解决。 认证模式 在认证模式中,由消息的发送方发布公钥,持有私钥。比如发送者要发送消息“Welcome Read more […]

【转】.NET应用程序与数据库交互的优化

Posted by & filed under Uncategorized.

我们知道,在应用程序中与数据库进行交互是一个比较耗时的过程,首先应用程序需要与应用程序建立连接,然后将请求发送到数据库,数据库执行操作,然后将结果集返回。所以在程序中,要尽量晚的与数据库建立连接,并且较早的释放连接。 然而在很多时候,我们需要频繁的查询和更新数据库中的记录,比如我们的一张表中有1000条记录,假设有一个场景,需要一条一条的判断这1000条记录,如果不存在,插入;如果存在,更新某一个字段。这种场景很常见,比如银行的用户转账或者汇款,在完成之后需要更新账户余额等操作。 最近项目中也遇到了类似的情况,通过实践也简单总结了一些如何提高应用程序执行效率的方法,当然这些都是通过减少和数据库进行交互以及当数据达到一定程度,通过批量实现的。下面就简要介绍一下。 一 Read more […]

【转】.NET项目开发的几个非常重要的项目设置

Posted by & filed under Uncategorized.

在开发.NET项目的时候,包括Winform项目和Web方面的项目,编译和部署的时候,都需要考虑到是32位的X86方式,还是64位的方式,有时候还需要进行调试,如果没有合理设置好这些关系,还可能出现无法调试的问题,本文基于我对Winform的开发总结,介绍在.NET项目中对项目工程的设置操作。 1、设置编译平台的属性 一般情况下,我们为了同时兼容32位和64位操作系统,我们需要对设置好.NET项目的编译属性,一般设置为X86的方式。在VS的IDE里面,选择生成-》配置管理器菜单。 如我的混合框架的项目,统一设置为了X86的兼容模式,请确保所有的项目均为X86的平台设置。 2、WCF服务或者Web项目的设置 项目设置了以上的编译平台属性后,一般情况下,WinForm程序或者类库运行是没什么问题了,但是如果是项目里面有WCF服务或者Web项目的,还需要注意一个设置,就是bin目录的设置。默认如果你修改了X86的平台设置属性后,WCF服务或者Web项目的输出目录也会发生变化,一般情况下,会是bin\x86\Debug\ 这个时候这个项目也是能够顺利编译的,一切似乎都显得正常的,但是我们在修改部分代码,并进行调试问题的时候,可能会出现源代码和原始版本不同的情况。  如果这时候,你根据这些去百度或者Google问题,可能会给你找出很多不同的解决方案,但是可能都不太解决问题,其实这个时候的问题处理很简单,就是把输出目录重新设置为Bin就可以了,编译调试源码也一致了。 3、Winform启动项目的目标框架问题 在创建Winform启动项目的时候,默认VS创建的Winform启动项目,它的目标框架总是Client Read more […]

【转】软件项目开发一般流程

Posted by & filed under Uncategorized.

一:编写目的 本文档的编写旨在探寻规范的软件开发流程、加快软件开发速度、提高软件开发质量、降低项目综合成本。 IT界有一句格言:”You can do it right; you can do it fast; you can do it cheap. Pick two.” 而我们要做的就是:提供优质服务、项目周期短、成本低廉 二:总体说明    项目从用户需求说明书的提出,到系统的第一个完整版本的交付使用经历了若干或复杂或简单的过程,但不管项目大小如何一般需要经历以下几个步骤: 1.   需求分析。 2.   撰写需求规格说明书 3.   总体设计 4.   详细设计 5.   编码实现 6.   测试、(UAT : User Acess Test)试运行、上线 7.   验收 8.   日常维护 9.   Read more […]