![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
[01] .NET随笔
小何同学_
态度决定高度 细节决定成败
展开
-
C# 3DES 加密
public class DESHelper { #region 3des加密 /// /// 3des ecb模式加密 /// /// 待加密的字符串 /// 密钥 /// 加密矢量:只有在CBC解密模式下才适用 /// 运算模式 ///原创 2017-10-26 13:21:32 · 2108 阅读 · 1 评论 -
C#封装程序集自定义类方法注释提示
一.为什么使用封装程序集:在很多分布式应用程序开发中,针对每一种功能可能条用的接口不一样,往往习惯将需要被调用的接口,封装成DLL给调用方应用后使用,这样既规范了调用的方式,又避免了调用出现参数请求方式的异常。二.自定义封装程序集:把需要的参数封装成类,添加好注释,调用的方式封装成类,添加好注释,然后在选择项目>属性>输出>勾选XML文档文件:最后生成的程序集像我们使用.N原创 2016-08-24 17:30:34 · 2788 阅读 · 0 评论 -
使用NPOI创建Excel
一.NPOI 函式庫:NPOI 函式庫檔案有七個,NPOI 函式庫可以在 http://npoi.codeplex.com 中下載,分別是:NPOI.DLL:NPOI 核心函式庫。NPOI.DDF.DLL:NPOI 繪圖區讀寫函式庫。NPOI.HPSF.DLL:NPOI 文件摘要資訊讀寫函式庫。NPOI.HSSF.DLL:NPOI Excel BIFF 檔案讀寫函式庫。原创 2016-08-24 11:53:11 · 2351 阅读 · 0 评论 -
使用NPOI读取Excel到DataTable
一、NPOI介绍:使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作二、安装NPOI新建控制台应用程序>管理NuGet程序包>搜索NPOI>安装NPOI三.下面是我需要的读取的Excel文件,数据原创 2016-08-23 17:24:05 · 13425 阅读 · 0 评论 -
【建议28:理解延迟求值和主动求值之间的区别】
要理解延迟求值(lazy evaluation)和主动求值(eager evaluation),先看个例子: static void Main(string[] args) { List listint = new List() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var temp1转载 2016-08-10 12:02:42 · 395 阅读 · 0 评论 -
c#params关键字
C#中可以修饰方法参数的关键字包括:ref,out,params,三者的区别如下:1. ref:引用传递参数,需要在传递前初始化2. out:引用传递参数,需要在返回前初始化3. params:可以指定在参数可变出采用参数的方法参数关于ref 和 out 在开发中使用的比较常见,下面举例params的用法: class Program { static原创 2016-08-01 13:49:05 · 727 阅读 · 0 评论 -
【httplistener监听获取Post请求参数】
使用httplistener监听来自客户端的http请求,对于Get请求的数据可以通过Request.QueryString["参数"]获取而对于来自客户端的Post请求则不能使用Request[""]获取,需要将获取分析请求流中的数据拿到参数using System;using System.Collections.Generic;using System.IO;using Sys原创 2016-06-23 14:29:53 · 25233 阅读 · 9 评论 -
【C# 计算代码的执行时间】
使用Stopwatch计算代码的执行时间:Stopwatch watch=new Stopwatch ();watch.Start();//---------------//此处为要计算的运行代码//---------------watch.Stop();//获取当前实例测量得出的总运行时间(以毫秒为单位)string time = watch.ElapsedMilli原创 2016-06-22 12:56:49 · 1270 阅读 · 0 评论 -
【Xml配置文件的数据读取】
在开发中的可变配置项常使用xml文件的方式进行配置和读取:假设下面有一个配置文件: 00001 喜羊羊小学 虹口区水电路120号 0001 一年级一班 50 0002 一年级二班 40 这些配置项是可变的,用于项目中的可变配置项,我们使用XmlDocument,XmlElement,XmlNodeList原创 2016-07-18 15:47:37 · 2325 阅读 · 0 评论 -
【通过代码的方式完成服务的寄宿工作】
使用纯代码的方式进行服务寄宿服务寄宿的目的是为了开启一个进程,为WCF服务提供一个运行的环境。通过为服务添加一个或者多个终结点,使之暴露给潜在的服务消费,服务消费者通过匹配的终结点对该服务进行调用,除去上面的两种寄宿方式,还可以以纯代码的方式实现服务的寄宿工作。新建立一个控制台应用程序,添加System.ServiceModel库文件的引用。添加WCF服务接口:ISchool使用S原创 2016-07-06 16:03:26 · 758 阅读 · 0 评论 -
【WCF服务自我寄宿】
WCF服务的寄宿方式WCF寄宿方式是一种非常灵活的操作,可以寄宿在各种进程之中,常见的寄宿有:IIS服务、Windows服务、Winform程序、控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便、高效提供服务调用。签名前面介绍过了WCF常用的一种寄宿方式,IIS服务寄宿。这种寄宿方式是最为方便的方式,而且由于服务只需要IIS运行就能自动运行起来,因此广为使用。 创建原创 2016-07-05 16:38:44 · 1973 阅读 · 0 评论 -
【创建WCF服务寄宿到IIS】
一.WCF简介:Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。由 .NET Framework 3.0 开始引入。WCF的最终目原创 2016-07-05 14:40:12 · 2620 阅读 · 0 评论 -
使用异或运算符对整数进行加密
一:什么是∧运算符:二元 ^ 运算符是为整型和 bool 类型预定义的。对于整型,^ 将计算操作数的按位“异或”。对于 bool 操作数,^ 将计算操作数的逻辑“异或”;也就是说,当且仅当只有一个操作数为 true 时,结果才为 true。二:在进行异或运算规则:如两个二进制数的相应位都为1 或者二进制数的相应位都为0,则返回0;如果两个二进制数相应位一个为0,另一个为1则返回1;原创 2016-10-14 11:32:22 · 2089 阅读 · 0 评论 -
微信卡券JSAPI签名校验算法
微信卡卷的签名规定:1.将 api_ticket、timestamp、card_id、code、openid、nonce_str的value值进行字符串的字典序排序。2.将所有参数字符串拼接成一个字符串进行sha1加密,得到signature。使用C#后台进行字符串的字典序排序,然后SHA1加密于微信卡券JSAPI签名校验工具进行比较:结果一样:其中进行字符串的字典序排原创 2016-09-28 17:58:56 · 3383 阅读 · 0 评论 -
使用HtmlAgilityPack抓取html标签属性内容
使用HtmlAgilityPack抓取hml标签属性内容,C# 爬出,网页内容抓取原创 2017-10-26 12:37:20 · 13845 阅读 · 0 评论 -
c#访问Oracle数据库,执行数据库操作
c#访问Oracle数据库,执行数据库操作,包括执行sql 语句返回受影响的行数,执行存储过程,返回受影响的行数,执行SQL语句,返回DataSet,执行存储过程,返回DataSet,附OracleDBHelper原创 2017-10-31 11:56:35 · 2147 阅读 · 1 评论 -
请求被中止: 未能创建 SSL/TLS 安全通道。
问题:C# 做网页信息抓取,访问https地址返回错误信息>请求被中止: 未能创建 SSL/TLS 安全通道。解决方案:将项目目标框架升级至 .NET 4.5或以上在请求方法里面添加以下代码:ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;request.UserAgent = "Moz原创 2017-09-11 18:32:09 · 7500 阅读 · 1 评论 -
C#Socket 网络通信异步处理
C#Socket 网络通信异步处理 SocketAsyncEventArgs 异步套接字操作1.服务端简单实现:Code: public partial class Form_Server : Form { private Socket socket; public Form_Server() {原创 2017-07-18 18:47:48 · 2505 阅读 · 2 评论 -
C#解决Socket丢包,段包,粘包算法
C#解决Socket丢包,段包,粘包算法: /// /// Socket 丢包,段包,粘包 算法 /// public class RequestHandler { private string temp = string.Empty; /// /// 处理Socket 丢包,段包,粘包 算法转载 2017-03-14 14:50:42 · 8323 阅读 · 1 评论 -
IDisposable接口详解
1. MSDN中关于这个接口的说明[ComVisible(true)]public interface IDisposable{ // Methods void Dispose();} [ComVisible(true)]:指示该托管类型对 COM 是可见的。此接口的主要用途是释放非托管资源。当不再使用托管对象时,垃圾回收器会自动释放分配给该对象的内存。但无法预测进转载 2017-03-28 10:18:39 · 847 阅读 · 0 评论 -
lo4net的简单运用
log4net简介:log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。下面介绍如何在Visual Studio2013中使用log4net快速创建系统日志,如何扩展以输出自定义字段原创 2017-02-08 15:50:38 · 732 阅读 · 0 评论 -
TcpClient和TcpListener断开自动重连
在使用QQ的时候,有时候因为网络原因断网使QQ断线,这时候QQ客户端发现与腾讯代理ServerTCP链接中断,而做出每隔多久进行自动重连的行为。服务端使用TcpListener监听来自客户端的链接: class Program { static void Main(string[] args) { IPAdd原创 2016-12-15 17:27:02 · 19802 阅读 · 0 评论 -
CORS解决ajax跨域
CORS原理:向响应头header中注入Access-Control-Allow-Origin,这样浏览器检测到header中的Access-Control-Allow-Origin,则就可以跨域操作了。 Response.AddHeader("Access-Control-Allow-Origin", "*");句代码中*代码,服务器允许任何人访问。也可以设置规定访问的域名。比如只原创 2016-12-12 15:43:10 · 597 阅读 · 0 评论 -
WinFrom窗体始终置顶
调用WindowsAPI使窗体始终保持置顶效果,不被其他窗体遮盖: [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern int SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int y, int Width, i原创 2016-10-27 14:57:41 · 4369 阅读 · 0 评论 -
SHA1加密
SHA简介:安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)原理:SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串原创 2016-09-14 17:16:36 · 12815 阅读 · 0 评论 -
【C#编写Windows服务】
一.Windows服务介绍:一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序。Windows服务程序虽然是可执行的,但是它不像一般的可执行文件通过双击就能开始运行了,它必须有特定的启动方式。这些启动方式包括了自动启动和手动启动两种。对于自动启动的Windows服务程序,它们在Windows启动或是重启之后用户登录之前就开始执行了。只要你将相应的Window原创 2016-07-04 15:53:35 · 685 阅读 · 1 评论 -
【快速排序算法-C#实现】
使用C#实现快速排序算法。快速排序的基本思想:分治法,即,分解,求解,组合 .分解:在 无序区R[low..high]中任选一个记录作为基准(通常选第一个记录,并记为keyValue,其下标为keyValuePosition),以此为基准划分成两个较小的 子区间R[low,keyValuePosition- 1]和R[keyValuePosition+ 1 , high],并使转载 2016-07-01 17:28:10 · 555 阅读 · 0 评论 -
【添加时间戳防止重放攻击】
如过客户端在向服务端接口进行请求,如果请求信息进行了加密处理,被第三方截取到请求包,虽然第三方无法解密获取其中的数据,但是可以使用该请求包进行重复的请求操作。如果服务端不进行防重放攻击,就会参数服务器压力增大,数据紊乱的后果。而使用添加时间戳的方式可以解决这一问题。 private readonly string TimeStamp = ConfigurationManager.原创 2016-07-01 16:12:43 · 13316 阅读 · 9 评论 -
【通过HttpListener实现简单的Http服务】
使用HttpListener实现简单的Http服务。HttpListener提供一个简单的、可通过编程方式控制的 HTTP 协议侦听器.使用它可以很容易的提供一些Http服务,而无需启动IIS这类大型服务程序。使用HttpListener的方法流程很简单:主要分为以下几步创建一个HTTP侦听器对象并初始化添加需要监听的URI 前缀开始侦听来自客户端的请求原创 2016-04-20 15:30:50 · 10715 阅读 · 0 评论 -
【C#-Socket监听消息处理】
TCP/IP:Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议,又名网络通讯协议。简单来说:TCP控制传输数据,负责发现传输的问题,一旦有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地,而IP是负责给因特网中的每一台电脑定义一个地址,以便传输。TCP协议在许多分布式应用程序中进行消息命令传递是必不可少的部原创 2016-04-28 11:21:42 · 5417 阅读 · 0 评论 -
【C#-Hashtable简单操作】
Hashtable就是哈希表,它是通过类实现一个哈希表,里面存着一个个的键值对,哈希表可以将键映射到相应的值。Hashtable是一个容器,我们可以使用key来快速查找相应的值。并且在Hashtable中key和value均为object类型,也就是说Hashtable可以支持任何类型。简单的Hashtable的简单实用方法如下: Hashtable hshTab原创 2016-04-25 16:54:38 · 2005 阅读 · 0 评论 -
【C#-深度复制和浅度复制的比较】
有的时候我们可能在实际的项目中需要一个对象在某个状态下的副本,这个前提很重要,这点怎么理解呢,例如有的时候我们需要对比一个对象经过处理后的状态和处理前的状态是否发生过改变,可能我们就需要在执行某段处理之前,克隆这个对象此时状态的副本,然后等执行后的状态进行相应的对比,这样的应用在项目中也是经常会出现的。例如:我们有一个对象 A a=new A(); 在进行实际操作完这个A对象之后,它的原创 2016-04-25 12:14:32 · 5739 阅读 · 1 评论 -
【使用Modern UI快速开发WPF应用】
Modern UI 是基于WPF的一个开源项目,托管在 code plex 上,可以利用快速开发好看的WPF窗体应用程序。一. 下载安装Modern UI for WPF Templates 打开VS>工具>扩展和更新>安装 Modern UI for WPF Templates二.新建Modern UI for WPF TemplatesWPF窗体应用:三.观察新建M原创 2016-04-22 15:48:40 · 8952 阅读 · 3 评论 -
【WPF无边框窗体】
WPF是Windows操作系统中一次重大变革,与早期的GDI+/GDI不同。WPF是基于DirectX引擎的,支持GPU硬件加速,在不支持硬件加速时也可以使用软件绘制。利用WPF创建无边框的窗体:第一种方式:设置WindowStyle="None" AllowsTransparency="True"<Window x:Class="WpfApplication1.MainW原创 2016-04-20 18:16:18 · 3006 阅读 · 1 评论 -
【C#dynamic 类型】
在通过 dynamic 类型实现的操作中,该类型的作用是绕过编译时类型检查,改为在运行时解析这些操作。dynamic 类型简化了对 COM API(例如 Office Automation API)、动态 API(例如 IronPython 库)和 HTML 文档对象模型 (DOM) 的访问。在大多数情况下,dynamic 类型与 object 类型的行为是一样的。但是,不会用编译器对包含原创 2016-04-19 15:05:56 · 5636 阅读 · 0 评论 -
【多线程-Join()方法】
一. 什么时候使用Join()方法:当一个线程操作需要等待另一个线程执行完毕之后才能继续进行时,使用Join()方法。二. 使用:比如这里我们要在subthread线程执行完毕,然后才能执行主线程:在下面代码中会出现主线程执行完了,subthread线程还在执行,与我们所要求的想反。 class Program { private static T原创 2016-05-12 17:11:08 · 2784 阅读 · 1 评论 -
【多线程-前台线程和后台线程】
一.前台和后台线程的区别:所有前台线程执行完毕以后,应用程序的进程结束。而不论后台进程是否结束。默认情况下新建的线程为前台线程,可以使用Thread.IsBackground属性查看 // // 摘要: // 获取或设置一个值,该值指示某个线程是否为后台线程。 // // 返回结果:原创 2016-05-12 16:43:17 · 1269 阅读 · 0 评论 -
【多线程-Sleep()和Interrup()方法】
一. Sleep()阻塞线程休息方法的使用情况:Thread.Sleep()方法用于使当前线程暂停指定的时间,然后去执行流程语句。 // 参数: // millisecondsTimeout: // 线程被阻塞的毫秒数。 指定零 (0) 以指示应挂起此线程以使其他等待线程能够执行。 指定 System.Threading.Time原创 2016-05-12 16:10:03 · 1275 阅读 · 0 评论 -
【多线程-线程的概念】
一.什么是线程:线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程原创 2016-05-12 15:10:49 · 904 阅读 · 0 评论 -
【C#关于编码那点事】
在开发过程中,往往会遇到很多关于字符串编码的一些问题。如说乱码呀,在url跳转过程中参数传递不正确,加密的字符串在请求时服务端介绍解码处理异常。经过RSA签名的数据在请求后服务端接收后,解码处理异常等等的问题。这些都是与我们的字符串编码有问题的。先归纳一下知识点:1.字符:字符是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!·#¥%……—*()——+等原创 2016-04-22 14:39:08 · 2104 阅读 · 0 评论