C#中利用JQuery实现视频网站
摘要:C#中利用JQuery实现视频网站的缩略图采集最近有朋友想要采集优酷的视频标题和缩略图 (哈哈, 并非商业目的). 找到我帮忙, 考虑到有我刚刚发布的SpiderStudio, 我毫不犹豫的答应了.首先在网页上视频的基本结构为:div.v - div.v-meta-title //标题 - div.v-thumb / img //缩略图对应的JQuery表达式为:$("div.v").find("div.v-meta-title");$("div.v").find("div.v-thumb img");然后运行Sp
阅读全文
System.Net.Http 简介
摘要:System.Net.Http 简介System.Net.Http是微软推出的最新的HTTP应用程序的编程接口,微软称之为“现代化的HTTP编程接口”,主要提供如下内容:1.用户通过HTTP使用现代化的WebService的客户端组件;2.能够同时在客户端与服务端同时使用的HTTP组件(比如处理HTTP标头和消息),为客户端和服务端提供一致的编程模型。命名空间System.Net.Http以及System.Net.Http.Headers提供了如下内容:1.HttpClient发送和接收HTTP请求与响应;2.HttpRequestMessageandHttpResponseMessage封装
阅读全文
CLR 的执行模型(2)
摘要:第一章 CLR 的执行模型(2)本篇内容大纲Framework 类库(Framework Class Library , FCL)通用类型系统(Common Type System,CTS)公共语言规范(Common Language Specification,CLS)总结一、Framework 类库(Framework Class Library , FCL)1、mscorlib.dll (Microsoft Core Library,微软核心类库)我们先来看个例子。新建一个控制台程序,然后在Main方法中输入如下代码:1 static void Main(string[]...
阅读全文
事务隔离级别如何影响锁
摘要:目录备注事务隔离级别如何影响锁?更新丢失(最后一个覆盖前面的修改)使用可重复读隔离级别延长共享锁的持有时间一种避免死锁的方式备注备注返回目录我们知道事务的重要性,我们同样知道系统会出现并发,而且,一直在准求高并发,但是多数新手(包括我自己)经常忽略并发问题(更新丢失、脏读、不可重复读、幻读),如何应对并发问题呢?和线程并发控制一样,我们采用锁(乐观锁和悲观锁),大多数场景我们不需要直接管理锁,而是使用有更高语义的事务隔离级别来控制并发问题。关于事务、事务隔离级别如何应对并发问题的文章我之前有过介绍,可以参考如下文章:.NET:脏读、不可重复读和幻读测试。本文重点说一下:事务隔离级别如何影响锁?
阅读全文
C# 从CIL代码了解委托,匿名方法,Lambda 表达式和闭包本质
摘要:C# 从CIL代码了解委托,匿名方法,Lambda 表达式和闭包本质前言C# 3.0 引入了 Lambda 表达式,程序员们很快就开始习惯并爱上这种简洁并极具表达力的函数式编程特性。本着知其然,还要知其所以然的学习态度,笔者不禁想到了几个问题。(1)匿名函数(匿名方法和Lambda 表达式统称)如何实现的?(2)Lambda表达式除了书写格式之外还有什么特别的地方呢?(3)匿名函数是如何捕获变量的?(4)神奇的闭包是如何实现的?本文将基于CIL代码探寻Lambda表达式和匿名方法的本质。笔者一直认为委托可以说是C#最重要的元素之一,有很多东西都是基于委托实现的,如事件。关于委托的详细说明已经有
阅读全文
C# 线程的定义和使用
摘要:C# 线程的定义和使用一、C# Thread类的基本用法 通过System.Threading.Thread类可以开始新的线程,并在线程堆栈中运行静态或实例方法。可以通过Thread类的的构造方法传递一个无参数,并且不返回值(返回void)的委托(ThreadStart),这个委托的定义如下: [ComVisibleAttribute(true)] public delegate void ThreadStart() 我们可以通过如下的方法来建立并运行一个线程。 1 using System; 2 using System.Collections.Generic; 3 using Sy...
阅读全文
.NET项目开发—浅谈面向对象的纵横向关系、多态入口,单元测试(项目小结)
摘要:.NET项目开发—浅谈面向对象的纵横向关系、多态入口,单元测试(项目小结)阅读目录:1.开篇介绍2.使用委托消除函数串联调用2.1.使用委托工厂转换两个独立层面的对象3.多态入口(面向对象继承体系是可被扩展的)4.多态的受保护方法的单元测试(Protected成员的单元测试)1】开篇介绍一如既往,这篇文章是我最近在工作中总结出的一点小小的经验,特此写出来与大家分享,因为我觉得日常开发中这些点点滴滴很有用;2】使用委托消除函数串联调用在一般的函数调用情况下,我们都习惯性的将参数传入到某个被调用的方法,这可能就是我们考虑调用方法的惯用思维,但是现在的C#语言得到了很大的提升,我们可以很自然的使用委
阅读全文
c# in depth之泛型的实现
摘要:c# in depth之泛型的实现1.默认值表达式如果已经明确了要处理的类型,也就知道了它的“默认”值。不知道要引用的类型,就不能直接指定默认值。不能使用null,因为它可能不是一个引用类型,不能使用0,因为它可能不是数值类型。虽然很少需要用到默认值,但它偶尔还是有用的。Dictionary就是一个好的例子,它有个TryValue方法,它的作用有点儿像对数值类型进行处理的TryParse方法:他用一个输出参数来接收你打算获取的值,用一个Boolean返回值显示它是否成功。这意味着方法必须用TValue类型的值来填充输出参数。请记住,输出参数必须在方法正常返回之前赋值。为了满足这方面的要求,c#
阅读全文
Spider Studio 数据挖掘集成开发环境
摘要:Spider Studio 数据挖掘集成开发环境Spider Studio 数据挖掘集成开发环境(最新版本: 2.7.12.1)传统的多线程蜘蛛程序虽然采集速度快, 但是明明不需要所有内容, 却胡子眉毛一把抓, 将整个网页都下载下来当作一个文本进行处理. 由于网页内容参差不齐, 所以抓取质量常常无法保证; 在面对由ajax等动态技术呈现的信息时更是束手无策. 自从所见即所抓技术发明之后, 这一切便得到了改观. Spider Studio 以所见即所抓为核心, 以脚本的方式来完成抓取, 并且提供了大量辅助功能.功能特点1. C# 脚本化抓取比如下面这段代码会打开本页并将产品简介提取出来显示在对话
阅读全文
ASP.Net MVC3 图片上传详解(form.js,bootstrap)
摘要:ASP.Net MVC3 图片上传详解(form.js,bootstrap)图片上传的插件很多,但很多时候还是不能切合我们的需求,我这里给大家分享个我用一个form,file实现上传四张图片的小demo。完全是用jquery前后交互,没有用插件。 最终效果图如下: 玩过花田人可能有些眼熟,原型就是来自于花田网中的图片上传。 引用的脚本有:View Code 基本思路:用户点击相关div触发file元素打开浏览框----》用setInterval不断检测file文件是否选中文件---》选中之后触发form自动提交到后台---》后台将文件存储到临时文件夹返...
阅读全文
C# 利用反射动态创建对象——带参数的构造函数和String类型
摘要:C# 利用反射动态创建对象——带参数的构造函数和String类型最近笔者有一个想法需要利用反射动态创建对象(如string,int,float,bool,以及自定义类等)来实现,一直感觉反射用不好,特别是当构造函数带参数的时候。MSDN上给出的例子十分复杂,网上的帖子则一般都说很简单,那就看看网上比较普遍的说法:反射创建类的实例“反射”其实就是利用程序集的元数据信息。反射可以有很多方法,编写程序时请先导入 System.Reflection 命名空间,假设你要反射一个 DLL 中的类,并且没有引用它(即未知的类型): Assembly assembly = Assembly.LoadFile(
阅读全文
第一章 CLR 的执行模型
摘要:CLR via C# 读书笔记:第一章 CLR 的执行模型(1)第Ⅰ部分CLR基础。这部分为三章(第一章:CLR的只想能够模型,第二章:生成、打包、部署和管理应用程序及类型,第三章:共享程序集和强命名程序集)大部分都是概念性的东西,看起来比较的枯燥无味,由于都是概念性的东西所以也比较难于理解,不过这些知识也是后面深入的前提,要想深入的了解.net平台及C#语言,这些概念性的知识也是必须懂得的。废话不多说了,咱们还是硬着头皮一起来看看第一章吧!由于一章内容较多,我会分开来写。本篇内容大纲:将源代码编译成托管模块将托管模块合并成程序集加载公共语言运行时执行程序集的代码一、将源代码编译成托管代码1、
阅读全文
Moq让单元测试变得更简单
摘要:【ASP.Net MVC3 】使用Moq让单元测试变得更简单前几天调查完了unity。现在给我的任务是让我调查Moq。以下是自己找了资料,总结并实践的内容。如果有表述和理解错误的地方。恳请指正。什么是Moq?Moq(英语发音是Mock-you 或者只是mock)是一个针对.Net开发的模拟库,它从开始就完全充分利用了.NET3.5(LINQ表达式树)和C#3.0的新特性(lambda表达式)。它的目标是让模拟以一种自然的方式与现有单元测试进行集成,使它更加简单、直观,以避免开发人员被迫重写测试或高成本的学习测试框架。这使它成为了一个高生产力、类型安全、重构友好的模拟库。从哪得到Moq?如果你看
阅读全文
事件聚合IEventAggregator和 Ihandle<T>
摘要:-事件聚合IEventAggregator和 Ihandle今天 说一下Caliburn.Micro的IEventAggregator和IHandle分成两篇去讲这一篇写一个简单的例子看一它的的实现和源码下一篇用它们做一个多语言的demo这两个是事件的订阅和广播,很强大,但用的时候要小心发生不必要的冲突。先看一下它的实现思想在Caliburn.Micro里EventAggregator要以单例的形式出现这样可以做到对广播做到统一的管理对象实现IHand接口后通过EventAggregator的subsribe方法把自己加入到Handler集合中这样就能接叫信息能过EventAggregator
阅读全文
基于.NET打造IP智能网络视频监控系统
摘要:开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码开源倾情奉献系列链接开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码开源倾情奉献:基于.NET打造IP智能网络视频监控系统(二)基础类库介绍开源倾情奉献:基于.NET打造IP智能网络视频监控系统(三)命令行工具集开源倾情奉献:基于.NET打造IP智能网络视频监控系统(四)服务端介绍开源倾情奉献:基于.NET打造IP智能网络视频监控系统(五)客户端介绍这是什么系统?OptimalVision(OV)网络视频监控系统(Video Surveillance System),是一套基于.NET、C#、WCF、W
阅读全文
EF POWER TOOLS由数据库逆向CODE FIRST
摘要:EF POWER TOOLS由数据库逆向CODE FIRST前言 利用db first的开发方式有很多可供选择的方案,一种可以用ado.net实体框架模型,由向导直接生成edmx,并生成数据库上下文,持久化类,这是一种方案,其次使用t4模板代码生成器生成上下文及实体类,本文使用Visual Studio 库中EF Power Tools根据现有数据库,生成 POCO 类、映射(配置)类和 DbContext 派生类,来实现code first开发。准备工具:vs2010或者vs2012EF PowerTools插件,下载地址:http://visualstudiogallery.msdn.m.
阅读全文
c#中如何跨线程调用windows窗体控件
摘要:c#中如何跨线程调用windows窗体控件?我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。首先来看传统方法: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { ...
阅读全文
设计模式之观察者模式(Observable与Observer)
摘要:设计模式之观察者模式(Observable与Observer)好久没有写博客啦,之前看完了《设计模式之禅》也没有总结一下,现在回忆一下设计模式之观察者模式。1.什么是观察者模式 简单情形:有A、B、C、D等四个独立的对象,其中B、C、D这三个对象想在A对象发生改变的第一时间知道这种改变,以便做出相应的响应或者对策。 上面的这种情形,就是观察者模式。 当然可以有多个观察者,多个被观察者。 观察者与被观察者也不是对立的,一个对象可以观察其他对象,也可以被其他对象观察。2.观察者模式的应用 为了更好的理解什么是观察者模式,下面我举一些可能用到该模式的情形或例子: (1)周期性任务。比如l...
阅读全文
CLR_Via_C#学习笔记之枚举
摘要:CLR_Via_C#学习笔记之枚举枚举类型(Enum)定义的一组"符号名称/值"配对;因为枚举类型使用程序更容易编写、阅读和维护,而且它是强类型;枚举是值类型;由System.Enum-->System.ValueType-->System.Object;有别于其他值类型是Enum不能定义任何方法、属性、或事件;枚举都有一个基础类型:byte,sbyte,short,ushort,int(C#默认选择的,最常用),unit,long,ulong;1:首先定义两个枚举 public enum Limit { Write, Read, Dele...
阅读全文
C# 多线程学习总结
摘要:C# 多线程学习总结C#多线程学习(一) 多线程的相关概念什么是进程? 当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。什么是线程? 线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。什么是多线程? 多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。多线程的好处: 可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行
阅读全文