随笔分类 - 学习区1.5【.Net、C#】
摘要:前面讲了 "文件的上传" ,今天来聊聊文件的下载。 老规矩,还是从最简单粗暴的开始。那么多简单算简单?多粗暴算粗暴?我告诉你可以不写一句代码,你信吗?直接把一个文件往IIS服务器上一扔,就支持下载。还TM么可以断点续传(IIS服务端默认支持)。 在贴代码之前先来了解下什么是断点续传( 这里说的是下载
阅读全文
摘要:做为程序员的我们,经常会要用到文件的上传和下载功能。到了需要用的时候,各种查资料。有木有..有木有...。为了方便下次使用,这里来做个总结和备忘。 利用表单实现文件上传 最原始、最简单、最粗暴的文件上传。 前端代码: 【注意】 1、需要post提交 2、enctype="multipart/form
阅读全文
摘要:为什么要编写单元测试
对于为什么要编写单元测试,我想每个人都有着自己的理由。对于我个人来说,主要是为了方便修改(bug修复)而不引入新的问题。可以放心大胆的重构,我认为重构觉得是提高代码质量和提升个人编码能力的一个非常有用的方式。好比一幅名画一尊雕像,都是作者不断重绘不断打磨出来的,而优秀的代码也需要不断的重构。
当然好处不仅仅如此。TDD驱动,使代码更加注重接口,迫使代码减少耦合,使开发人员一开始就考虑面对各种情况编写代码,一定程度的保证的代码质量,通过测试方法使后续人员快速理解代码...等。
额,至于不写单元测试的原因也有很多。原因无非就两种:懒、不会。当然你还会找更多的理由的。
阅读全文
摘要:新异步的优势
在此之前已经有了多种异步模式,为什么还要引入和学习新的async\await异步呢?当然它肯定是有其独特的优势。
我们分两个方面来分析:WinForm、WPF等单线程UI程序和Web后台服务程序。
对于Web后台服务程序
也许对于后台程序的影响没有单线程程序那么直观,但其价值也是非常大的。且很多人对新异步存在误解。
【误解】:新异步可以提升Web程序的性能。
【正解】:异步不会提升单次请求结果的时间,但是可以提高Web程序的吞吐量
阅读全文
摘要:新进阶的程序员可能对async、await用得比较多,却对之前的异步了解甚少。本人就是此类,因此打算回顾学习下异步的进化史。
本文主要是回顾async异步模式之前的异步,下篇文章再来重点分析async异步模式。
阅读全文
摘要:简述什么是协变性、逆变性、不变性 协变性,如:string->object (子类到父类的转换) 逆变性,如:object->string (父类到子类的转换) 不变性,基于上面两种情况,不可变。具体下面再做分析。 泛型委托的可变性 先使用框架定义的泛型委托Func和Action做例子(不了解的请戳
阅读全文
摘要:《物联网基础组件IoTClient开发系列》 IoTClient开发1 - 你也可以写个聊天程序 IoTClient开发2 - 你也可以写个服务器 IoTClient开发3 - ModBusTcp协议客户端实现 IoTClient开发4 - ModBusTcp协议服务端模拟 《.NET Core》
阅读全文
摘要:接上篇《先说IEnumerable,我们每天用的foreach你真的懂它吗?》 最近园子里定制自己的orm那是一个风生水起,感觉不整个自己的orm都不好意思继续混博客园了(开个玩笑)。那么在此之前我们有必要仔细了解下 IQueryable
阅读全文
摘要:那得从很久很久以前说起了,记得那个时候... 懵懂的记得从前有个叫委托的东西是那么的高深难懂。 委托的使用 例一: 什么是委托? 个人理解:用来传递方法的类型。(用来传递数字的类型有int、float、double,用来传递方法的就有委托) 例二: 又经过了很久很久... 匿名方法 很多时候委托接收
阅读全文
摘要:我们先思考几个问题: 接下来,先开始我们的正文。 自己实现迭代器 .net中迭代器是通过IEnumerable和IEnumerator接口来实现的,今天我们也来依葫芦画瓢。 首先来看看这两个接口的定义: 并没有想象的那么复杂。其中IEnumerable只有一个返回IEnumerator的GetEnu
阅读全文
摘要:
什么是Linq表达式?什么是Lambda表达式?
如图:
由此可见Linq表达式和Lamdba表达式并没有什么可比性。
那与Lamdba表达式相关的整条语句称作什么呢?在微软并没有给出官方的命名,在《深入理解C#》中称为点标记。
阅读全文
摘要: 工欲善其事,必先利其器。我们使用EF和在很大程度提高了开发速度,不过随之带来的是很多性能低下的写法和生成不太高效的sql。虽然我们可以使用SQL Server Profiler来监控执行的sql,不过个人觉得实属麻烦,每次需要打开、过滤、清除、关闭。在这里强烈推荐一个插件MiniProfiler。实时监控页面请求对应执行的sql语句、执行时间。简单、方便、针对性强。
阅读全文
摘要:为什么要用扩展方法 在说什么是扩展方法之前我们先来说说为什么要用扩展方法。 首先我们定义一个 Person 类: 加入这个类来自第三方的dll引用,且现在我们需要添加一个方法 GetAge 获取年龄。你可能会想到自己定一个子类继承: 是的,这样可以实现我们的需求。不过实现新增的方法就去继承真的是最
阅读全文
摘要:首先我们都知道引用类型默认值都是null,而值类型的默认值都有非null。为什么引用类型可以为空?因为引用类型变量都是保存一个对象的地址引用(就像一个url对应一个页面),而引用类型值为null的时候是变量值指向了一个空引用(如同一个空的url)那为什么值不能有空值呢?其实很简单,因为如int值范围是-2147483648到2147483647。其中根本就没有给null值留那么一个位置。
阅读全文
摘要:在说依赖注入之前,先了解下什么是接口。
我们在学编程的时候都知道,接口的相关规则:(来源百度百科)
1. 接口是一个引用类型,通过接口可以实现多重继承。
2. C#中接口的成员不能有new、public、protected、internal、private等修饰符。
3. 接口中只能声明"抽象"成员(所以不能直接下一步对接口进行实例化(即不能使用new操作符声明一个接口的实例对 象)),而不能声明共有的域或者私有的成员变量。
阅读全文
摘要:什么是反射,反射能干嘛? 反射是:指程序可以访问、检测和修改它本身状态或行为的一种能力 反射是一种能力,所以给的定义就是说明了它能干嘛。 我们平时用反射主要做: 获取类型的相关信息 动态调用方法 动态构造对象 从程序集中获得类型。 获取类型的相关信息 反射的核心Type类,Type对象提供的属性和方法可以获取对象的一切信息,如:方法、字段、属性、事件...等等。 我们获取已加载程序集的Type对象...
阅读全文
摘要:前言 我们初学C#的时候看到类上面一对中括号里面有个高亮了的关键字,不知道那是什么有什么用。想问人又不知道它叫什么。纠结的要命。其实,它就是特性。如: 这就是我们今天要分析的主题。 特性是什么? 个人理解,特性就是修饰对象元数据的修饰符。 那么什么是“元数据”? 元数据就是用来描述数据的数据。(挺拗口的) 如: 图中的1.是特性 2.是访问修饰符 3.声明修饰符 4.数据类型 5.变量名 6.变量数据值,其中1、2、3、4、5就是元数据,用来描述数据(6)的数据。 特性到底是什么? 如上面的Obsolete ,会不会也是一个如publicstatic这样类似的修饰符...
阅读全文
摘要:我们不管是做博客系统还是其他网站,图片是免不了要使用到的。但是,我们都知道图片的访问是很耗资源的,同时也是很占磁盘空间的,且还特别占带宽。
所以,我们一般都会用到特定的图片服务器。不过,像我等屌丝平时闹着玩肯定是不会花钱整那些东西。今天我就来介绍一个高速免费无限量图片存储支持外链。是的,你没听错。就是无限量免费。它的名字:贴图库,可能有同学知道并且使用过了。那你可以略过了。
介绍完贴图库后,我在向大家介绍下。我的图话实现。图话是什么?就是我们经常看到的弹幕,只不过现在到了图片上面了。
阅读全文
摘要:http://blog.csdn.net/zzx3q/article/details/7863797使用工具VS2010凡是调用FindAll的地方,如果传入参数是String类型的变量(数字类型不管),例如:FindAll(item => item.CASE_NO ==caseno)请一律使用以下...
阅读全文