姓名:张雪飞|2014-至今:从事前端相关开发工作,曾做过3年的asp.net mvc开发,潜心在大前端领域深入学习(node,vue,webpack,es6)个人技术博客:http://zhangxuefei.site
最近碰到一个需求,单页应用里面页面切换的效果需要做成跟轮播图滑动slide一样,让这个页面在切换时感觉是一个页面。反复琢磨的vue里面的transition,最终将实现的核心代码贴出来。这里实现的是上下切换,左右的效果类似。
博客已经搬家,欢迎访问我的最新个人技术博客:http://zhangxuefei.site
最近因为工作关系,需要通过HttpWebRequest去请求API,所有就写了个简单的辅助public sealed class HttpRequestHelper { private static string USER_AGENT = "Mozilla/5.
系统里面常常调用服务和读写文件里面需要对发生异常,操作失败时进行Retry来尽可能程序的健壮性。最近工作中遇到了,参考了网上的资料,扩展了下。在博客里面备用下: //Retry机制 public static class Retry { /// ...
简介:Quartz.net是一个开源的作用调度框架,非常强大,能够通过简单的配置帮助我们定时具体的操作。相对于我们用的线程里面while(true)然后sleep来执行某个操作,应该算的上是高端,大气,上档次了。
Cron表达式(在Quartz.net里面会用到) 由7段构成:秒 分 时 日 月 星期 年(可选)"-" :表示范围 MON-WED表示星期一到星期三"," :表示列举 MON,WEB表示星期一和星期三"*" :表是“每”,每月,每天,每周,每年等对于星期里面,SUN=1 SAT=6"/" ...
之前对xml的操作大都是通过XmlDocument对象来进行,但是这样的情况对于没有并发的是非常合适的,最近遇到了并发读写xml文件的情况。通过文件流来操作能解决大部分的并发情况,对于极端的情况会有问题。
什么Redis? 点击这里 最近要开发的一个项目是分布式缓存组件,解决参数缓存高效获取的问题。参数达到了500万级别,刚刚开始了解Redis。做设计的时候考虑到Value使用哪种类型的问题? 主要面临的是使用一般的String还是使用Hash。
序:实现一个基于Socket的简易的聊天室,实现的思路如下: 程序的结构:多个客户端+一个服务端,客户端都是向服务端发送消息,然后服务端转发给所有的客户端,这样形成一个简单的聊天室功能。 实现的细节:服务端启动一个监听套接字。
基础知识 1.进程:具有独立功能的程序在一个数据集合上一次动态的执行过程。通俗点讲就是“一个正在运行的程序” 2.程序:静态的程序以文件的形式保存在磁盘上。 3.操作系统的进程管理: 每一个正在运行的程序都对应着一个独立的进程,当这些程序装入内存开始执行时,操作系统会为每个进程创建好相关的数据结构。
背景:从两张有关联的表查询数据,A表数据量1400万,B表数据量8000万。A与B通过ID逻辑关联,没有实际的外键。B表是后来扩展出来的. 问题:根据某个ID查询时超时,运行时跑不出结果。 原因:使用一个or条件,条件里面有一个是A.ID=B.ID 简单优化:将or条件拆开,使用union all;将之前使用表变量的部分换成了临时表;对排序的字段加上了索引 结果:在50ms内能够查询出结果,这个与之前的超时简直不能相比。
有时很容易对Attribute和Property混淆,因为中文翻译都是“属性”来解释的。其实这两个表达的不是一个层面的东西。 Property属于面向对象理论范畴,在使用面向对象思想编程的时候,常常需要对客观事物进行抽象,再把抽象出来的结果封装成类,类中用来表示事物状态的成员就是Property译为“属性”。
1.最近做的一个小功能是将请求拦截并记录日志,因为要尽可能减少对请求的响应时间,所以自然选择异步执行,我使用的是IAsyncResult模式。到了prd产品测试环境,因为同时有多个请求,所以暴露了一个问题。
1.对象的析构函数与Finalize方法 与C++类似,C#允许程序员为类定义一个”析构函数“: class MyClass { ~MyClass() //析构函数 { //编写释放非托管的资源 } } 上面的代码编译后,可以看到: 这里调用了Object类的Finalize方法,这个方法里面是空的,什么也没有。
所谓同步:如果在代码中调用了一个方法,则必须等待该方法所有的代码执行完毕之后,才能回到原来的地方执行下一行代码。 异步:如果不等待调用的方法执行完,就执行下一行代码。 阅读原文 namespace AsyncProgram { class Program { ...
复制:对象的复制是生成一个与指定对象完全一样的新对象,实现的方式根据定义可以知道,新建一个类型相同的对象,然后复制原对象的每一个成员和字段。 浅复制: class Program { static void Main(string[] args) ...
几天前的一次笔试中遇到了关于StringBuilder的Length和Capacity属性的问题,之前忽略了。今天实践下: 1.普通实践 官方解释如下: StringBuilder.Capacity:获取或设置可包含在当前实例所分配的内存中的最大字符数。
一.子类和父类方法之间的关系 1.当子类和父类有方法完全相同的方法 namespace ConsoleApplication2 { class Program { static void Main(string[] args) { ...
——老赵微博 对与ref和out的区别,我相信很多人都知道,这里我简单罗列下: 1.首先ref和out两种类型的参数都是可以将方法内对参数的修改传递到方法外面 2.ref参数需要在传递之前初始化,out不需要,out参数在返回时必须赋值 3.
定义一个事件成员,表示该类型提供了如下功能: 1.能够在事件中注册方法 2.能够在事件中注销方法 3.当事件发生时,注册的方法会被通知 (事件内部维护了一个注册方法列表) CLR的事件模型是基于委托的,它可以通过类型安全的方式调用回调方法。
上周收到汤姆大叔的赠书《JavaScript编程精解》(顺风快递哦,大叔果然给力),迫不及待浏览了下,首先看到是各种对该书原著的赞誉,非常期待接下来的阅读体验。读完第一章,已经非常吸引我持续读下去。因为书里的内容很对我的胃口——简明扼要,把握细节。
运算符重载方法 一 些编程语言允许定义运算符如果操作类型的实例,例如System.String,System.Decimal,和System.DateTime,它们 重载了==和!=运算符。但是对于CLR来说,它是完全不知道像“==”和“!=”这些运算符是干什么的。
类型构造器也称为静态构造器,类构造器,或类型初始化器 类型构造器可以用于接口(C#不允许这样做),引用类型,值类型。实例构造器用来设置一个类型某个实例的初始化状态,类型构造器用来设置一个类型的初始化状态。
this用法如下: 1.使用this来显示地标识字段的所有者(有点官方味道,看下例子就清楚了) class Student{ public string FirstName; public string LastName; public int Scroe;...
const:表示常量,变量的值是绝不会被改变的,常量的值是在编译时就已经确定了。编译器会把常量的值保存在程序集的元素据里面,在C#里面,下面列举的简单类型才能被定义为 常量:Boolean, Char, Byte, SByte, Int16, UInt16 , Int32, UInt32 , Int64, UInt64 , Single , Double , Decimal, String。
引用类型与值类型 在FCL里面的大多数类型是引用类型,引用类型从托管堆上分配内存,值类型分配在线程栈里。new运算符返回对象的内存地址——指向对象的二进制位,使用引用类型时需要清楚下面几点: 1.从托管堆上分配内存 2.每一个堆上的对象都有额外的成员需要初始化 3.在对象里的其他字节通常置为0 4.从堆分配的对象会导致GC的出现 值类型有装箱和拆箱两种呈现形式,引用类型始终是装箱的形式。
CLR要求对象必须使用new运算符创建,在使用new运算符创建一个对象时具体都做了些什么呢? 1.计算所有定义的实例字段,所有的基类型包括System.Object需要分配的字节数。 每一个堆上的对象还需要两个额外的成员:类型对象指针 和同步块索引,CLR使用它们来管理对象。
关于C#/.NET性能 在上次的例子里面,第二次执行Console.WriteLine()方法时,会完全跳过JITCompiler编译。因为第一次已经完全编译为了本地CPU指令并且返回了指令在内容里的入口地址,所以这一次会直接跳转到该方法的内存地址处执行代码,当然也会比第一次的性能要高。
前言 《CLR via C#》(Jeffrey Richter著)——.NET 界的经典之作,相读"恨晚",读的过程写点笔记跟大家分享: 【我也推荐大家看英文版,能够直接领会原意 】 认识CLR 一 个被多种编程语言使用的运行时。
最近的项目里面使用了比较多的UpdatePanel和repeater搭配使用,但是在IE9里面常常会出现这样一个问题:当显示非常多的数据时,总有一行或几行错位,从而导致样式乱掉了。本来使用UpdatePanel是为了简化自己的工作并提升下用户体验,这样一来有违初衷。
准备要部署的应用程序 在正式进入部署MVC程序到IIS之前,会介绍一些关于应用程序迁移到生产环境之前探测错误以及一旦进入生产环境最大化性能的技术。同时也会展示关于流线型部署过程的有用的功能。 检测视图错误 Razor视图会在服务器需要的时候编译而不是在VS里面生成项目时编译,正常情况下,探测视图编译错误的方式是系统的访问每一个action,从而让每一个view都能够呈现。
本章会简要阐释对用户而言操纵HTTP请求(例如,修改cookies,隐藏或禁用表单字段等)是多么容易的事情,这会让我们在正确的思维框架下清楚地考虑web的安全性。接着会依次介绍常见的避免攻击的指南,并了解它们的工作原理以及它们怎么应用到MVC框架里面。
Ajax是Asynchronous JavaScript and XML的缩写,正如我们看到的,XML部分已经不再像过去那样重要,但是异步的部分却让Ajax非常有用。它是一种在后台从服务端请求数据的模型,而不用重新加载网页。
模型验证是确保接收的数据适合绑定到model的这样的一个处理过程,当不适合的时候能够提供一些有用的信息来帮助用户改正他们问题。模型验证可以分为两个部分:1.检查我们接收的数据。2.帮助用户修正问题。非常庆幸的是,MVC框架对模型验证提供可扩展支持,本章会展示基本功能的使用以及阐释一些针对验证过程的高级技术。
模型绑定(Model Binding)是使用浏览器发起Http请求时的数据创建.NET对象的过程。我们每一次定义带参数的action方法时就已经依靠了模型绑定——这些参数对象是通过模型绑定创建的。这一章会介绍模型绑定的原理以及针对高级使用必要的定制模型绑定的技术。
在前面出现过Html.CheckBoxFox和Html.TextBoxFox等HTML helper方法,这些方法用来指定必要的HTML元素编辑数据。MVC框架还支持另一种方法实现,称为模板化视图helper(辅助)方法,在这些方法里面我们可以指定哪一个模型对象或属性被显示或编辑,并且让MVC框架自己判断应该呈现哪一种类型的HTML元素(是TextBox还是CheckBox)。
接着上一篇Views的笔记 在视图里导入命名空间(Importing Namespaces into a View) Razor视图通过一套常用的命名空间编译,这为我们省去了在使用常用类时指定必要的命名空间的麻烦。
在前面很多的章节里面的,最常用的action result是视图呈现并返回给客户端的ViewResult类型。本章会专注于视图的原理,首先展示MVC框架是如何使用视图引擎处理ViewResults的,包括阐释如何创建一个视图引擎。
本章内容分为两个部分,第一部分:介绍关于controllers工作原理的高级功能,探究从请求到action方法执行的整个请求处理管道的组成部分并阐释控制这个过程的不同的方式;第二部分:介绍两种特殊的控制器,分别是:无会话(sessionless)控制器,异步(asynchronous)控制器.这些能够增进服务器的处理能力。
过滤器(Filters) 过滤器(Filters)向请求处理管道注入了额外的逻辑。他们提供了一种简单而优雅的方式实现了横切关注点,这个术语是针对整个应用程序使用的功能,并不能灵活的适用任何一个点,所以这个会打破分解关注点的模式。
重定向到文本URL(Redirecting to a Literal URL) 最基本的重定向浏览器方式就是调用Redirect方法,该方法会返回一个RedirectResult类的实例。 例如:public RedirectResult Redirect() {return RedirectP...
生成输出(Producing Output) 在controller完成处理请求之后,通常需要生成一个响应。当我们通过直接实现IController接口创建一个简单的controller时,我们需要对处理请求的每一个方面负责,包括创建对客户端的响应。
Controllers入门(Introducing the Controller) 每一个针对应用程序的请求都是通过Controller处理的,controller自由地选择合适的方式来处理这些请求,只要它不偏离到View和Model所负责的区域。
使用Areas MVC框架支持在areas(区域)里面组织一个web应用程序,每一个area呈现应用程序的一个功能段,比如管理,订单,客户支持等等。这对于一个大的项目是非常有用的,因为将所有的controller,model,view都只是放在一套文件夹里面(整个项目所有的Controller都在一个文件夹下)会非常难管理的。
自定义路由系统 通过前面的学习,我们能够感受到路由系统的灵活性和可配置性,如果这些不能满足我们的需求,我们可以自定义行为,下面会介绍如何自定义路由。 创建一个对RouteBase类的自定义实现 如果我们不喜欢标准Route对象匹配URL的方式,或者想实现一些特别的东西。
创建传出的URL(Outgoing URLs) 处理传入的URL(Incoming URLs)仅仅是路由系统的一部分功能。我们也需要使用URL架构来创建Outgoing URLs,我们可以将这些URL嵌入到我们的View里面,并且能够让用户点击URL提交表单给我们的应用程序,并能够命中合适的controller和action。
《Pro ASP.NET MVC 3 Framework》简介: 作者: Adam Freeman 和 Steven Sanderson 出版社: Apress; New 平装: 820页 语种: 英语 ISBN: 1430234040 声明:笔记里面按我自己的理解翻译了大部分内容,写这个笔记的目的:为了方便自己查阅,也为园友提供学习的方便。
整个项目范围的依赖注入(Project-Wide Dependency Injection) 在书接下来的章节里面,我们会看到MVC框架提供的很多不同的方式来让我们扩展和自定义对请求的处理,每一种方式都会用一个实现的接口或一个派生的基类来定义。
上一篇关于mono的是将一个小的系统移植体验,这次折腾了4天把这个小的系统部署到线上(国外的vps)。vps上安装了Ubuntu10.04的服务器版本,意味着是非常纯净的。而我又想都用最新版的环境,所以几乎全部编译安装mono2.10.8 Nginx1.0.11 MySQL5.5.20.现在把折腾的过程跟大家分享下,希望给那些对mono充满好感的朋友一点帮助,我折腾过了,希望大家不用再折腾了,而是比较顺利的完成整个过程。
接下来是关于SportsStore的后台管理功能,也就是通常的CRUD操作。首先添加一个AdminController,代码如下: View Code using System.Web.Mvc; using SportsStore.