- 博客(33)
- 资源 (44)
- 收藏
- 关注
原创 .Net与Java的思考
首先说明一下,本人专注于C#开发5年,期间做过一年多的IOS开发,现在计划转Java开发,有多个原因吧,主要还是觉得C#的生态没有Java好,基本上所有的大公司都是用Java,而使用C#的非常少, 今天早上在来公司以后,在看电脑时,脑子里突然有一个想法,.Net开发是不是也与Windows一样,要让大家快速上手,而本身互联网具有天然的垄断特性,是少数的几个大公司,掌握着大部分的互联网流量的,而要支
2017-06-27 10:17:48 293
转载 JavaScript闭包(Closure)
最近在整理JavaScript学习笔记时,总是在考虑闭包的用处是什么?JavaScript中为什么要引入闭包?是为了解决什么问题JavaScript引入了闭包呢? 一、变量的作用域 要理解闭包,首先要理解JavaScript变量作用域,JavaScript变量作用域有两种,一种是全局变量、另外一种是局部变量,由于JavaScript是链式作用域,所以子函数可以调用父函数的变量(从本级作用域一级一
2017-06-20 20:54:52 356
原创 设计模式 - 抽象工厂模式
在工厂方法模式中,我们使用一个工厂创建一个产品,也就是说一个具体的工厂对应一个具体的产品。但是有时候我们需要一个工厂能够提供多个产品对象,而不是单一的对象,这个时候我们就需要使用抽象工厂模式。 在讲解抽象工厂模式之前,我们需要厘清两个概念 产品等级结构:产品的等级结构也就是产品的继承结构。例如一个为空调的抽象类,它有海尔空调、格力空调、美的空调等一系列的子类,那么这个抽象类空调和他
2017-06-17 12:53:42 631
原创 设计模式 - 工厂方法模式
在简单工厂模式中只提供一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它需要知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类。简单工厂模式最大的缺点是当有新产品要加入到系统中时,必须修改工厂类,需要在其中加入必要的业务逻辑,这违背了“开闭原则”。此外,在简单工厂模式中,所有的产品都由同一个工厂创建,工厂类职责较重,业务逻辑较为复杂,具体产品与工厂类之间的耦合度高,严重影响了系统的灵活
2017-06-16 20:20:41 367
原创 设计模式 - 简单工厂模式
在设计原则中有这样一句话“我们应该针对接口编程,而不是正对实现编程”。但是我们还是在一直使用new关键字来创建一个对象,这不就是在针对实现编程么? 针对接口编程,可以隔离掉以后系统可能发生的一大堆改变。入股代码是针对接口而写,那么可以通过多态,它可以与任何新类实现该接口。但是,当代码使用一大堆的具体类时,等于是自找麻烦,因为一旦加入新的具体类,就必须要改变代码。在这里我们希望能够调用一个简单的方法
2017-06-16 19:06:28 294
转载 面向对象设计原则概述
对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一。在面向对象设计中,可维护性的复用是以设计原则为基础的。每一个原则都蕴含一些面向对象设计的思想,可以从不同的角度提升一个软件结构的设计水平。 面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,
2017-06-16 16:36:10 456
原创 设计模式-观察者模式
1、基本定义观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象的状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。在这里,发生改变的对象
2017-06-16 16:14:35 404
转载 C# 中的委托和事件
1、引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件
2017-06-16 11:48:30 385
原创 UML类图几种关系说明
####1、UML类图表示 在正式表示UML类图的关系前,先来说一下UML类图怎么表示以及各种符号在UML类图中表示什么意思,,类使用包含类名、属性和操作且带有分隔线的长方形来表示,如定义一个Person类,它包含属性name、age和weight,以及操作Eat(),Sleep(),在UML类图中该类如图1所示,类一般由三部分组成: 图1 类的UML图示 (1) 第一部分是类名:
2017-06-15 12:40:38 775
原创 Asp.Net MVC 路由配置
1、概述 在以前的Web Form开发中,我们请求的URL都对应一个具体的文件,如/System/News.aspx?id=1 ,则在对应的网站目录下面存在一个News.aspx的文件,而ASP.NET路由使您能够使用不必映射到网站中的特定文件的URL。因为URL不必映射到文件,您可以使用描述用户操作的URL,因此用户更容易理解。ASP.NET MVC框架和ASP.NET动态数据扩展路由以提供仅在
2017-06-12 17:21:43 1227
原创 ASP.NET MVC过滤器
1、引言在ASP.NET MVC开发中,在控制器中定义的方面通常与界面上的View是一对一的关系,例如点击一个连接或者提交一个表单,如当用户点击一个连接,请求被路由到目的路由,相应的方法被调用,有时我们想要在方法执行之前或者执行之后指向一个额外的逻辑操作,为了支持这种需求,在ASP.NET MVC中提供了过滤器, 过滤器是自定义类,它们提供了一种声明性和程序性的方法来向控制器操作方法添加动作前和动作
2017-06-10 15:21:20 503
原创 EF操作-事务
在软件开发过程中,我们经常会遇到这样的场景,主从表,主表添加一条记录(主键自动增长),从表添加多条记录,同时从表需要用到刚刚添加的主表的自动增长的主键id,接下来我们就演示一下在EF中怎么实现事务,我们假设TUsers表与TUsersExtInfo表,代码如下: class Program { static void Main(string[] args) {
2017-06-09 18:56:34 1664
原创 EF操作-删除记录
方法一、先查询出来,然后在删除,代码如下: CodeFirstContext context = new CodeFirstContext(); TUsers user = context.Users.Where(d => d.UserId == 0).FirstOrDefault<TUsers>(); if (user != null)
2017-06-09 17:50:07 2606
原创 EF操作-修改部分字段
在做项目的时候,肯定会用到更新数据库中的某条记录,而更新的时候,往往是更新数据库中的某几个字段,而不是全部字段,在此我们假设一个实体(TUsers)有如下字段:UserId,Account,Password,CreateDate,其中UserId是主键,自动增长。 修改方式一(修改全部字段)会比较麻烦CodeFirstContext context = new CodeFirstContext()
2017-06-09 17:36:13 8647 1
原创 EF之Code First设置主键时不自动增长
在做项目时,有时我们设置主键时,并不希望自动增长。代码中设置如下: public class TUsers { [Key] [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None)]//不自动增长 public in
2017-06-09 15:24:45 9840
翻译 EF之Code First使用Fluent API设置实体之间的关系
参考官方文档:Entity Framework Fluent API - Relationships或者:Entity Framework Code First (五)Fluent API - 配置关系
2017-06-09 14:56:30 1517
原创 EF之Code First设置主外键关系(三)
1、前言前两篇博文说的主外键关系都是一对一的外键关系,下面我们来说另外一种情况,一个主类中包含多个外键关键,基本代码如下。 public class B { [Key] public int Id { get; set; } public string Name { get; set; } }
2017-06-09 14:46:53 3183
原创 EF之Code First设置主外键关系(二)
1、前言上篇博文说了设置外键名称的问题,这篇博文我们来说说外键应该在那个实体类中定义的问题。2、实战示例现在有三个实体类,TUsers(用户类)、TRoles(角色)类,TUsersRoles(用户角色类),一个用户可以对应多个角色,一个角色可以对应多个用户,用户与角色是多对多的关系。 方法一(在主实体中定义),代码如下: public class TUsers { [Ke
2017-06-09 14:36:59 3747
原创 EF之Code First设置主外键关系(一)
指定类外键有注释(DataAnnotation)和FluentAPI两种方式,下面我们主要使用DataAnnotation指定外键关系 第一种方式//1-指定导航属性,会自动生成外键,命名规则为:“对象名称_主键名” public class TUsers { [Key] public int UserId { get; set; } pub
2017-06-09 14:23:01 20570
原创 EF之Code First代码优先
1、前言Code First顾名思义,通告代码创建实体与数据库。示例中我们会创建表,分表是TUsers,TRoles、TUsersRoles。2、Code First实战示例打开VS2013,创建一个控制台引用程序,命名为MyCodeFirstDemo,如下图: 选中解决方案资源管理器中的项目,点击右键,选择”管理NuGet程序包” 搜索EntityFrameWrok,搜索到以后,点击安
2017-06-09 11:29:51 6447
原创 EF之Model First模型优先
1、前言Model First顾名思义,先有实体模型,后有数据库,在本例中我们创建一个RightSystemDb的数据库,包含三张表,用户表、角色表、角色用户表。2、Model First实战示例首先打开VS2013创建一个控制台应用程序,命名为MyModelFirstDemo,创建完成以后,如下图: 选中解决方案中的项目名称,点击右键,选择“新建项”,如下图: 选中”ADO.NET实体
2017-06-09 10:20:57 2382 1
原创 EF之Database First数据库优先
1、前言Database First说明需要现有数据库,然后在有实体类,在本例中我们使用NorthWind数据库,废话不多说了,直接代码截图。2、Database First实战示例首先打开VS2013,创建一个控制台应用程序DatabaseFirstDemo,如下图: 选中解决方案资源管理器里面的项目,右键选择“添加项”,选择”ADO.NET实体数据模型”,并命名为MyDBFirstMode
2017-06-08 18:15:47 651
原创 Entity FrameWork介绍
1、Entity FrameWork概述 Entity Framework(简称EF) 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。该框架曾经为.NET Framework的一部分,但version 6之后从.NET Framework分离出来,ADO.NET Entity Framework 以 Entity Data Model (EDM)
2017-06-08 16:59:55 1261
原创 C#5.0新特性
1、异步编程 在.Net 4.5中,通过async和await两个关键字,引入了一种新的基于任务的异步编程模型(TAP)。在这种方式下,可以通过类似同步方式编写异步代码,极大简化了异步编程模型。如下式一个简单的实例: 示例代码暂时没有整理好,整理好了补上。参考资料 1、C# 5.0 新特性——Async和Await使异步编程更简单 2、基于事件的异步编程模式 3、基于任务的异步模式 4、那
2017-06-08 10:36:04 802
原创 C#3.0新特性
C# 3.0 语言和编译器引入了多种新的语言功能。这些新的语言构造可以分别用在各种上下文中,并且可以共同完成语言集成查询 (LINQ)。下表列出了新增的 C# 3.0 语言功能: 1、隐式类型的本地变量和数组(类型推断)1.1、概述 可以赋予局部变量推断“类型”var 而不是显式类型。var 关键字指示编译器根据初始化语句右侧的表达式推断变量的类型。推断类型可以是内置类型、匿名类型、用户定义类型或
2017-06-07 15:56:40 282
原创 C#泛型示例
以前在做项目的时候,也经常会使用到泛型,但是对于泛型接口、泛型约束等总是理解的比较模糊,现在将泛型的使用总结如下1、泛型约束1.1、泛型约束说明 在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制。如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误。这些限制称为约束。约束是使用 where 上下文关键字指定的。下表列出了六种类型的约束:
2017-06-07 14:41:00 441
转载 net framework体系结构
术语解释 CIL(common intermediate language):公共中间语言。.net框架下各种种类、版本的编程语言在经过编译后生成的中间语言(后缀为.il),与平台无关、与语言无关,只要机器上运行了.net框架都可以运行.il文件。 BCL(basic class library):基类库。包含基础的类型(比如Console、string),为IL提供基础的编程支持,所有面向CI
2017-06-07 11:21:04 2072
原创 .net framework、C#、CLR、Visual Studio的对应关系。
.net framework、C#、CLR、Visual Studio的对应关系以及简要概述 一、版本对应关系 C#版本 .NET Framework版本 CLR版本 VS版本 描述 新特性 C#1.0 .NET Framework1.0 CLR1.0
2017-06-07 10:37:31 1408
原创 C#委托之Action、Func与Predicate用法
C#委托之Action与Func用法 一、Action,可以传入参数,没有返回值的委托 1、调用方法static void Main(string[] args) { Action<int, int> addcalc = new Action<int, int>(AddCalc); addcalc(2, 3); Console.ReadKey(); }
2017-06-06 15:47:21 1162
原创 C# 委托的比较 delegate、Action、Func、predicate
一、委托的定义 1、官方定义 委托是一种定义方法签名的类型。当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联。您可以通过委托实例调用方法。 2、个人理解 委托就是执行方法(函数)的一个类。事件是一种特殊的委托 二、如何申明委托及各种申明的区别 1、使用delegate关键字申明委托,如下: public delegate int CalcDelega
2017-06-06 12:24:35 1051 1
IOS UITabBarController 使用示例
2014-10-08
IOS 导航 UINavigationController
2014-09-29
JS实现网页上签名
2017-03-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人