.net进阶
水田如雅
不生产代码,只是代码的搬运工
展开
-
c#——Dapper基本用法
搞了几年Java,现在转过头来再用C sharp写东西,感觉有种沧海桑田的感觉。呵呵。。。 //pay attention:在DAL中,使用MySqlDBFactory获取连接 #region 插入数据--单条,批量 using (var conn = new MySql.Data.MySqlClient.MySqlConnection("server原创 2017-04-27 15:40:41 · 4465 阅读 · 2 评论 -
.net——序列化与反序列化中对日期时间的处理
承接上篇,现在我在类中加入一个日期时间类型的字段:public class Student { public string StudentId { get; set; } public string Name { get; set; } public int age { get; set; } public string Addre原创 2015-06-22 12:04:53 · 2336 阅读 · 7 评论 -
.net 流——流的类型体系简单介绍
流的类型体系 基础流 装饰器流 包装器类 帮助类 继承自基本的stream流 在基础Stream上添加的功能 数据传输 对文件流的操作变简单 基础流 Stream 对应的后备存储是文件 内存 网络资源 FileStream MemoryStream NetWorkStream IsolatedStorgaeFi原创 2015-06-21 20:24:42 · 2139 阅读 · 6 评论 -
.net 流——使用流进行文件复制
流的主要用途就是与应用程序外部的文件或数据源进行数据交互。基类为Stream,定义在命名空间System.IO下原创 2015-06-21 17:12:34 · 2212 阅读 · 7 评论 -
.Net——使用DataContractJsonSerializer进行序列化及反序列化基本操作
在平常中,我们经常会用到将一个T类型的东西,序列化成Json然后返回绑定数据到页面这样一个过程。每次面试,大概都被问到怎么序列化的呀?回答总是底层封装好的,算啦,还是做个简单栗子玩玩儿吧,也好堵住面试官的嘴。 进行序列化和反序列化的时候,主要用到对象DataContractJsonSerializer,然后再配合MemoryStream,就ok啦。 不多说,先来一版简单原创 2015-06-21 22:21:28 · 6522 阅读 · 7 评论 -
ASCII,Utf8,Unicode编码下的中英文字符大小
一,测试Demonamespace 不同编码下的中英文字符大小{ class Program { static void Main(string[] args) { ShowCode(); } private static void ShowCode() {原创 2015-05-21 23:37:23 · 2606 阅读 · 19 评论 -
.Net——Func<>与Action<>
首先来先写几个测试函数: public delegate void SayHello(string strName); public static void Hello(string strName) { Console.WriteLine(strName + " ,原创 2015-05-17 21:09:15 · 2733 阅读 · 14 评论 -
.Net加密与解密——非对称加密之加密模式
一,非对称加密 非对称加密具有一组密钥对,一个是对外公开的,任何人都可以获取,称为公钥; 一个是自行保管并严格保密的,称为私钥。 规则如下: 由某人A的公钥加密消息,只能由A的私钥进行解密; 由A的私钥加密的消息,只能由A的公钥解密。 发送方,接收方都持有公钥/私钥对,因此一原创 2015-05-17 17:23:02 · 2406 阅读 · 9 评论 -
.net缓存——基于文件的缓存
一,.Net中的缓存基础知识.net中支持的两种依赖: CacheDependencySqlDependency表示对于文件或者目录的依赖表示对于SQL数据库的依赖 过期时间绝对过期时间滑动过期时间一个特定原创 2015-05-26 20:59:47 · 2169 阅读 · 16 评论 -
.Net加密与解密——非对称加密之数字签名
一,从非对称加密的认证模式说起由消息的发送方发布公钥,持有私钥。 步骤:1,发送方公布自己的公钥,任何人都可以获得。2,发送方使用自己的私钥对消息进行加密,然后发送。3,接收方使用发送方的公钥对消息进行解密。 缺点:1,任何截获该消息的第三方都能够使用发送方公钥进行解密;2,耗时,不适用于大数据 二,数字签名原创 2015-05-17 19:15:42 · 2355 阅读 · 12 评论 -
.Net加密与解密——对称加密
一,思路 对称加密含有一个被称为密钥的东西,在消息发送前使用密钥对消息进行加密,得到密文并发送,接收方收到密文后,使用相同的密钥进行解密,获得原消息。 PS:使用密钥对消息进行加密的过程,由加密算法来完成的,加密算法通常也是公开的。二,对称加密的流程 1,发送方和接收方持有相同的密钥,并严格保密2,发送方使用密钥对原创 2015-05-17 16:56:33 · 2431 阅读 · 6 评论 -
.Net网络编程——使用TcpClient与TcpListener建立客户端与服务端连接
一,.NET中如何实现建立连接 在网络中,我们可以通过IP地址唯一定位一台主机,而在主机中,我们要确定收到的数据包发给谁,可以通过端口号,端口号的作用简单说就是不至于使你要发给QQ好友的消息数据包被错误发到了你的OC程序上。 通常,我们把发起连接的那一端称为客户端,这是主动的一方;而静默等待连接到来的那一端作为原创 2015-05-20 21:45:55 · 2579 阅读 · 13 评论 -
.Net网络编程——服务端获取客户端连接
一,客户端服务端连接图示 其中,在客户端和服务端的socket中,都报存这连接的信息;客户端通过connect连接,服务端可以调用AcceptTcpClient来获取链接到服务端的客户端,每一个客户端和服务端的连接都对应这唯一一个Socket.二,服务端获取连接示例using S原创 2015-05-20 22:20:09 · 2080 阅读 · 15 评论 -
.Net——缓存机制(一):利用Dictionary模拟缓存
在计算机的硬件设计中,有一个被反复使用的思想——缓存。同样,在软件设计中,这个思想也可以用来解决数据读取非常耗时带来的性能问题(当然,在时间和空间上,我们要寻找一个平衡点)。 首先来看理想的缓存应该是怎么描述的: static Func Cache(Func func) { var mem = new Dict原创 2015-05-14 22:18:19 · 3850 阅读 · 8 评论 -
.Net加密与解密——散列运算
一,散列运算的特点 1,散列运算是不可逆的,可以将散列运算理解为单向的加密:根据原消息经过散列运算就可以得到摘要(密文);但是根据摘要,无法推导出原消息。2,任何两个不相同的文件,哪怕只有一个字节的细微差别,得到的摘要都是完全不同的。这个特点的意义在于,可以用来判断消息是否被篡改,即解决完整性的问题。3,无论原始消息的大小如何,运算得出的摘要的信息是固定长度,原创 2015-05-15 21:52:47 · 1910 阅读 · 11 评论 -
.Net——实现IConfigurationSectionHandler接口定义处理程序处理自定义节点
除了使用.net里面提供的内置处理程序来处理我们的自定义节点外,我们还可以通过多种方法,来自己定义处理类处理我们的自定义节点,本文主要介绍通过实现IConfigurationSectionHandler接口的方式来实现自定义处理程序。 首先,我们先在配置文件里面写如下自定义节点: 13232@qq.com lhc原创 2015-06-23 21:40:27 · 2233 阅读 · 7 评论 -
.Net——使用.net内置处理程序处理自定义节点Demo
在.net中,因为对不同的节点,都对应着类去对它进行处理,。net里面为了方便,已经内置了一些类供我们使用,使我们在读取配置文件时,不必自己去定义类去处理自己定义的自定义节点。 下面我们写了这样一个配置文件: --> 节点名称为:mailServe原创 2015-06-22 21:53:37 · 1660 阅读 · 6 评论 -
Redis——Redis与Log4Net完成了分布式日志记录
一,思路 为了单独记录我们程序中各种异常,我们这样做:创建一个队列,当出现异常的时候,将异常放入到队列中,另外,我们在程序启动时,开启一个线程,用来从存放异常的队列中取得异常信息,进行写入文件。 模拟代码: 自定义异常出现时候的处理类: public class MyExceptionAt原创 2016-04-24 16:32:36 · 2822 阅读 · 2 评论 -
Start Xamarin——与Microsoft 的sales development manager的闲谈
因为之前在Xamarin属于微软之前,就已经有Xamarin的账号,试用过破解版的,所以4月1号微软set Xamarin free之后,就收到了Xamarin的邀请试用邮件。 第二天的时候,收到邮件: 之后简短的回复了一下: 主要还是描述了下自身情况。 之后她的回复: Xamarin的官网文档我1号的时候就已经看过,觉得虽然详尽,但是有点儿乱。原创 2016-04-09 14:22:50 · 3604 阅读 · 1 评论 -
Xamarin打开安卓设计器的那些坑
一,Theinstalled Android SDK is too old. Version 24.3 or newer is required 之前各种配置完成之后,就去准备考试了,也没有再用,后来发现我的SDK确实是缺版本,Xamarin安装中对各个东西的版本要求其实还是蛮严格的。在Xamarin的论坛里面找到了个解决方法:http://forums.xamarin.c原创 2016-04-13 10:13:30 · 4437 阅读 · 0 评论 -
.Net Web Api——获取客户端浏览器信息
第一次接触到web api,发现这个东西是REST风格的:---- 微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,它是简单,代码可读性强的,上手快的,如果要拿它和web服务相比,我会说,它的接口更标准,更清晰,没有混乱的方法名称,有的只有几种标准原创 2016-03-14 21:49:38 · 8442 阅读 · 1 评论 -
Xamarin For Everyone
今天早上收到邮件: 感觉微软土豪买买买之后,下手速度还是很快的,不想多说,我喜欢这个新玩具,不过科学原创 2016-04-05 11:26:49 · 1792 阅读 · 5 评论 -
.Net——Nhibernate实现CRUD
最近用到SSH(spring+struct+hibernate),从java里面的hibernate,不自觉联系到.net里面的Nhibernate。 下面来简单聊下Nhibernate. 一,引入Dll 主要有三个: 基本的就这三个,其他的,比如Castle.Core.dll,Castle.DynamicProxy2原创 2015-09-24 12:34:17 · 2519 阅读 · 12 评论 -
MVC中的AOP思想——Filter
一,AOP(Aspect Oriented Programming) 在谈AOP之前,我们先来说OOP(Object Oriented Programming),这是接触每一门编程语言的时候,都会先学的东西。众所周知,OOP有三个特征:封装,继承,多态。这是从类的角度来说的,如果我们把系统中的关系用UML图来表示的话,会发现有点儿类似树的结构,这棵树是从上到下的或者是从下到上的原创 2015-09-14 09:48:42 · 2360 阅读 · 8 评论 -
Spring.Net——理解控制反转和依赖倒置
一,控制反转(Inversion of Control,缩写IoC)和依赖注入(Dependency Injection,简称DI) 1,控制反转 IoC(Inversion of Control),这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关 系。原创 2015-09-13 08:19:35 · 2450 阅读 · 6 评论 -
强名称程序集(strong name assembly)——为程序集赋予强名称
引言: 在以前的项目开发中,在程序集中见到过一个后缀为*.snk的文件,当时看这个文件的图标,感觉可能是企业内部保护版权啥的一种方式。 一,强程序集解决了哪些问题?1,唯一标识一个程序集2,放置程序集被仿冒和被篡改。3,可以部署到全局程序集缓存(GAC:GlobalAssembly Cache)中;在将强名称程序集不熟在GAC当中以后,强名称程序集也可以称为共享程原创 2015-08-20 21:22:10 · 3731 阅读 · 7 评论 -
C#——await与async实现多线程异步编程
以前,我们或许用过Thread,在主线程执行的时候,新开另一个新线程,来执行新方法。 今天看别人发给我的一段代码的时候发现了一个不认识的await,但是又感觉很熟悉的样子,感觉是线程那块儿的东西,查了下,发现一个简单的方法实现多线程异步编程。(PS:framework 在4.5以上才可以哦~) /// /// 测试方法 ///原创 2015-08-24 21:26:37 · 3505 阅读 · 9 评论 -
Memcached在.net中的应用
一,MemCached下载服务端下载:http://memcachedproviders.codeplex.com/客户端下载:http://sourceforge.net/p/memcacheddotnet/code/HEAD/tarball?path=/trunk 二,服务端的安装及配置1) 解压缩文件到c:\memcached(也可以选择任意位置)2) 命令行输入 'c原创 2015-07-02 23:36:08 · 2950 阅读 · 19 评论 -
.Net配置文件——统一节点配置管理
对于.Net中的自定义节点,如果要单独处理,就要为这个节点添加一个指定的类,如果我们在一个应用程序中,定义了很多个自定义节点的话,还按照这样做,就会多出很多个处理类来,为了避免太多的类,我们将所有自定节点都指定一个自定义节点作为入口,然后只写一个处理类,以此为入口,读取其他节点。 例如,配置文件只定义一个入口节点: 20原创 2015-07-01 19:52:27 · 2239 阅读 · 14 评论 -
.Net配置文件——反射+配置文件存储类型实例
配置文件+反射确实去除了选择语句的繁琐,带来了优美的赶脚! 首先改进了一下类(接上文): namespace ClassLib{ /// /// Interface IGreetingStrategy /// /// Editor:v-liuhch CreateTime:2015/6/28 11:01:58 pub原创 2015-06-30 23:04:03 · 1814 阅读 · 7 评论 -
.Net 配置文件——继承ConfigurationSection实现自定义处理类处理自定义配置节点
除了使用继承IConfigurationSectionHandler的方法定义处理自定义节点的类,还可以通过继承ConfigurationSection类实现同样效果。 首先说下.Net配置文件中一个潜规则: 在配置节点时,对于想要进行存储的参数数据,可以采用两种方式:一种是存储到节点的属性中,另一种是存储在节点的文本中。 因为一个节点可以有很多原创 2015-06-28 00:33:19 · 4398 阅读 · 13 评论 -
消息队列(一)——消息的简单发送与接收
背景 开发者经常遇到需要异步执行操作的情况(即过程不等到操作完成就开始)。消息队列提供一个中心位置或池,您可以在其中放置或从中提取数据,从而满足了这一要求。一个应用程序能够把消息存放在队列中,然后继续自己的业务,另一个应用程序在运行时再提取这些数据。 简单理解 感觉这里的消息队列还原创 2015-05-11 21:02:39 · 4737 阅读 · 5 评论 -
.Net——自定义特性(Custom Attributes)的创建与查看
有时候,我们会看到这样的东西放在类或者方法上面: [Obsolete("请更新方法")] 刚开始的时候,还自己给它起了个名字——小标签,比如,平常会说:你数据契约是不是没打标签啊!~嘿嘿~ 后来跟代码发现了更多的不认识的自定义标签。那么,这些标签是怎么定义和使用的呢?原创 2015-04-25 17:09:21 · 3927 阅读 · 5 评论 -
.Net——动态创建对象
刚开始看到这个标题的时候其实我也是很难接受的,duang~因为实在想不出什么时候我要去这样子创建对象,干嘛不new一个呢?但根据学习设计模式的经验来说,有时候,不去new对象才是最灵活的做法。首先,写个小类拿着玩儿: public class Calculator { private int x; private int y; public原创 2015-04-25 18:16:37 · 2562 阅读 · 6 评论 -
多线程——创建新线程
一,简单单线程 线程是代码的执行序列或者执行路径。线程与进程的概念有一些类似,它类似于一个轻量级的进程;一个操作系统可以运行多个进程,一个进程内可以运行多个线程。每个应用程序至少运行在一个线程上。当只有一个线程时,称作单线程应用程序,该线程由系统自动创建。 下面看一个简单单线程例子:如上图,本短程序从入口函数main进入原创 2015-01-17 21:29:43 · 2476 阅读 · 7 评论 -
序列化的基本操作
在实现反序列化的时候,上个DEMO直接将SQLconnection对象的创建写在了product的构造函数中,而在序列化时,再通过实现IDeserializationCallback接口重新创建SqlConnection对象,以此来还原对象状态。在Product构造函数和OnDeserialization()方法中,都硬编码了数据库连接字符串。 而更常见的情况时原创 2014-12-28 21:16:59 · 1931 阅读 · 9 评论 -
自定义序列化过程
除了使用事件以外,还可以通过自定义序列化来完成这一过程。 自定义序列化只需要实现ISerializable接口就可以了。它位于using System.Runtime.Serialization; SerializationInfo有点儿类似于BinaryWriter和BinaryReader,用于写入和读取对象的属性值。它主要包原创 2014-12-28 21:28:11 · 2066 阅读 · 12 评论 -
序列化与反序列化基本操作
一,为什么需要序列化 当程序运行时,需要访问和处理数据,在面向对象编程中,这些数据通常保存在对象中,当程序关闭或对象销毁时,这些数据需要保存到某处以便日后重建对象时能够还原对象的状态。 将对象及其状态保存起来,就称作序列化(Serialization),最简单和最常见的一种情况就是将对象及其状态保存在文件中; 而反序列化是序列化的反向操作,将文件还原创 2014-12-28 15:10:05 · 2204 阅读 · 13 评论 -
.net应用程序的配置介绍及基本配置方法(一)
一,实现一个应用程序的配置方法应该如何做? 1,创建一个XML文件作为配置文件,在这个文件中定义我们所需要的节点或节点树,在节点的属性或者文本中存储参数值。2,创建一个类,例如:ForumConfig,这个类的属性映射XML中某个配置节点的名称和属性,以提供强类型的访问。3,创建一个配置文件访问类,比如ConfigManager.在其中添加一个方法,比如GetSection(str原创 2014-12-28 21:42:06 · 2370 阅读 · 15 评论 -
委托(二):使用事件来对委托变量进行封装
总结下引入event的好处: 1,event封装了委托类型的变量,相当于为委托类型量身定制的属性(property)。 2,使用事件不仅能获得比委托更好地方封装性,还能限制含有事件的类型的能力。原创 2014-12-07 16:28:44 · 2475 阅读 · 9 评论