摘要:本系列的第一篇博文抛砖引玉,大谈领域驱动设计的优势,这里笔者还是希望以客观的态度,谈谈领域驱动设计的缺点及其不适合使用的场景,以让读者可以有选择性的使用领域驱动设计。 我们知道,没有最好,只有最合适,设计也是一样。因此,所谓设计,就是以你和你的团队的知识、经验和智慧,全面充分的考虑各种内外因素后,在 阅读全文
posted @ 2019-04-29 11:55 Cat Qi 阅读(964) 评论(0) 推荐(0) 编辑
摘要:曾经参与过系统维护或是在现有系统中进行迭代开发的软件工程师们,你们是否有过这样的痛苦经历:当需要修改一个Bug的时候,面对一个类中成百上千行的代码,没有注释,千奇百怪的方法和变量名字,层层嵌套的方法调用,混乱不堪的结构,不要说准确找到Bug所在的位置,就是要清晰知道一段代码究竟是做了什么也非常困难, 阅读全文
posted @ 2019-04-29 11:53 Cat Qi 阅读(2662) 评论(1) 推荐(1) 编辑
摘要:http://www.cnblogs.com/PatrickLiu/tag/RabbitMQ/ http://langyu.iteye.com/blog/759663/ 阅读全文
posted @ 2018-08-09 18:33 Cat Qi 阅读(431) 评论(0) 推荐(0) 编辑
摘要:Redis与Memcached的区别 传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的" /> Redis与Memcached 阅读全文
posted @ 2017-11-16 23:26 Cat Qi 阅读(3460) 评论(0) 推荐(1) 编辑
摘要:温馨提示:本文用到了一些可以在启动memcached设置的全局变量。关于这些全局变量的含义可以参考《memcached启动参数详解》。对于这些全局变量,处理方式就像《如何阅读memcached源代码》所说的那样直接取其默认值。 slab内存池分配器: slab简介: memcached使用了一个叫s 阅读全文
posted @ 2017-11-16 22:04 Cat Qi 阅读(336) 评论(0) 推荐(0) 编辑
摘要:一:总结 1、Finalize方法(C#中是析构函数,以下称析构函数)是用于释放非托管资源的,而托管资源会由GC自动回收。所以,我们也可以这样来区分 托管和非托管资源。所有会由GC自动回收的资源,就是托管的资源,而不能由GC自动回收的资源,就是非托管资源。在我们的类中直接使用非托管资源的情况很 少, 阅读全文
posted @ 2017-11-16 15:41 Cat Qi 阅读(799) 评论(0) 推荐(0) 编辑
摘要:1.引言 前面几个章节介绍了Unity的基本使用,主要分为程序和配置文件两种方法的使用,可以参考一下链接, [IoC容器Unity]第一回:Unity预览 [IoC容器Unity]第二回:Lifetime Managers生命周期 [IoC容器Unity]第三回:依赖注入 本节作为结束篇,将介绍一下 阅读全文
posted @ 2017-11-15 00:40 Cat Qi 阅读(130) 评论(0) 推荐(0) 编辑
摘要:1.引言 上节介绍了,Unity的Lifetime Managers生命周期,Unity具体实现依赖注入包含构造函数注入、属性注入、方法注入,所谓注入相当赋值,下面一个一个来介绍。 2.构造函数注入 Unity利用Resolve方法解析一个对象,都是调用注册类型的构造函数来初始化的,初始化时,Uni 阅读全文
posted @ 2017-11-15 00:38 Cat Qi 阅读(251) 评论(1) 推荐(0) 编辑
摘要:1.引言 Unity的生命周期是注册的类型对象的生命周期,而Unity默认情况下会自动帮我们维护好这些对象的生命周期,我们也可以显示配置对象的生命周期,Unity将按照配置自动管理,非常方便,下面就介绍一下 Unity中内置的生命周期管理器。 2.Lifetime Managers生命周期管理 准备 阅读全文
posted @ 2017-11-15 00:37 Cat Qi 阅读(318) 评论(0) 推荐(0) 编辑
摘要:1.引言 高内聚,低耦合成为一个OO架构设计的一个参考标准。高内聚是一个模块或者一个类中成员跟这个模块或者类的关系尽量高,低耦合是不同模块或者不同类之间关系尽量简单。 拿咱国家举例来说,假如你是中国人。 高内聚:就是说你跟中国亲,关系好,国家会保护你。 低内聚:就是说你跟中国的关系不好,那还怎么混, 阅读全文
posted @ 2017-11-15 00:36 Cat Qi 阅读(285) 评论(2) 推荐(0) 编辑
摘要:在有大量事务的数据库中,表和索引随着时间的推移而碎片化。因此,为了增进性能,应该定期检查表和索引的碎片,并对具有大量碎片的进行整理。 1、确定当前数据库中所有需要分析碎片的表。 2、确定所有表和索引的碎片。 3、考虑一下因素以确定需要进行碎片整理的表和索引。 高的碎片水平-avg_fragmenta 阅读全文
posted @ 2017-11-12 15:59 Cat Qi 阅读(900) 评论(0) 推荐(0) 编辑
摘要:一、书签查找的概念 书签可以帮助SQL Server快速从非聚集索引条目导向到对应的行,其实这东西几句话我就能说明白。 如果表有聚集索引(区段结构),那么书签就是从非聚集索引找到聚集索引后,利用聚集索引定位到数据。此处的书签就是聚集索引。如果表没有聚集索引(堆结构)。那么扫描非聚集索引后,通过RID 阅读全文
posted @ 2017-11-12 15:58 Cat Qi 阅读(119) 评论(0) 推荐(0) 编辑
摘要:一、索引的图形界面操作 SQL Server非常强大的就是图形界面操作。关于索引方面也一样那么强大,很多操作比如说重建索引啊,查看各种统计信息啊,都能够通过图形界面快速查看和操作,下面来看看SQL Server索引方面的GUI操作。 二、索引统计信息的图形界面操作 阅读全文
posted @ 2017-11-12 15:58 Cat Qi 阅读(388) 评论(0) 推荐(0) 编辑
摘要:一、索引视图基本概念 索引视图实际上是一种将一组唯一值“物化”为群集索引形式的视图,所为物化就是几乎和表一样,其数据也是会存储一份的(会占用硬盘空间,但是查询速度快,例如可以将count(),sum()等值设在索引视图中)。其优点是它在提取视图背后的信息方面提供了一个非常快的查找方法。在第一个索引( 阅读全文
posted @ 2017-11-12 15:57 Cat Qi 阅读(118) 评论(0) 推荐(0) 编辑
摘要:一、索引压缩 数据和索引压缩在SQL Server2008被引入。压缩一个索引意味着将在一个页面中获得更多的关键字信息。这可以造成重大的性能改进,因为存储索引需要的页面和索引级别更少。因为索引中的键值被压缩和解压缩,也将造成CPU和内存的开销,所以这并不是适合所有索引的方案。 默认情况下,索引将不会 阅读全文
posted @ 2017-11-12 15:57 Cat Qi 阅读(173) 评论(0) 推荐(0) 编辑
摘要:聚集索引、非聚集索引、非聚集唯一索引 我们都知道建立适当的索引能够提高查询速度,优化查询。先说明一下,无论是聚集索引还是非聚集索引都是B树结构。 聚集索引默认与主键相匹配,在设置主键时,SQL Server会默认在主键列创建聚集索引。但是可以手动更改为在任意一个列创建聚集索引,然后在另一个字段或多个 阅读全文
posted @ 2017-11-12 15:56 Cat Qi 阅读(851) 评论(0) 推荐(0) 编辑
摘要:一、非聚集索引维护 非聚集索引的行定位器值保持相同的聚集索引值,即使该聚集索引列物理上重新定位后,也是如此。 为了优化这个维护开销,SQL Server添加一个指向旧数据页的指针,以在页面分割之后指向新的数据页面,而不是更新所有相关非聚集索引的行定位器。这样,虽然降低了非聚集索引的维护开销,但是增加 阅读全文
posted @ 2017-11-12 15:51 Cat Qi 阅读(163) 评论(0) 推荐(0) 编辑
摘要:聚集索引的叶子页存储的就是表的数据。因此,表行物理上按照聚集索引列排序,因为表数据只能有一种物理顺序,所以一个表只能有一个聚集索引。 当我们创建主键约束时,如果不存在聚集索引并且该索引没有被明确指定为非聚集索引,SQL Server会自动将其创建为唯一的聚集索引,这并不是说主键列就一定是聚集索引,这 阅读全文
posted @ 2017-11-12 15:50 Cat Qi 阅读(1695) 评论(0) 推荐(0) 编辑
摘要:SQL Server索引的设计主要考虑因素如下: 检查WHERE条件和连接条件列; 使用窄索引; 检查列的选择性; 检查列的数据类型; 考虑列顺序; 考虑索引类型(聚集索引OR非聚集索引); 一、检查WHERE条件列和链接条件列 当一个查询提交到SQL Server时,查询优化器尝试为查询中引用的所 阅读全文
posted @ 2017-11-12 15:49 Cat Qi 阅读(140) 评论(0) 推荐(0) 编辑
摘要:从CREATE开始 通过显式的CREATE INDEX命令 在创建约束时作为隐含的对象 随约束创建的隐含索引 当向表中添加如下两种约束之一时,就会创建隐含索引。 一、CREATE INDEX语法 CREATE INDEX语句所做的事情与其听上去一样-用于在指定表或视图上基于声明的列创建索引: CRE 阅读全文
posted @ 2017-11-12 15:48 Cat Qi 阅读(1219) 评论(0) 推荐(0) 编辑
摘要:实际上,索引的维护主要包括以下两个方面: 页拆分 碎片 这两个问题都和页密度有关,虽然两者的表现形式在本质上有所区别,但是故障排除工具是一样的,因为处理是相同的。 对于非常小的表(比64KB小得多),一个区中的页面可能属于多余一个的索引或表 这被称为混合区。如果数据库中有太多的小表,混合区帮助SQL 阅读全文
posted @ 2017-11-12 15:47 Cat Qi 阅读(1641) 评论(0) 推荐(0) 编辑
摘要:在SQL Server中,非聚集索引其实可以看做是一个含有聚集索引的表,但相对实际的表来说,非聚集索引中所存储的表的列数要少得多,一般就是索引列,聚集键(或RID)。非聚集索引仅仅包含源表中的非聚集索引的列和指向实际物理表的指针。 一、非聚集索引之INCLUDE 非聚集索引其实可以看做一个含有聚集索 阅读全文
posted @ 2017-11-12 15:46 Cat Qi 阅读(266) 评论(0) 推荐(0) 编辑
摘要:在上一篇教程中我为大家介绍了Web API中Filter的开发使用,其中讲到ExceptionFilter时留了一个坑:ExceptionFilter只能截获并处理Action执行过程中发生的异常,在Action执行过程之外如果出现异常,ExceptionFilter是无能为力的。 这些异常包括: 阅读全文
posted @ 2017-11-09 23:57 Cat Qi 阅读(289) 评论(0) 推荐(0) 编辑
摘要:在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行过程拦截处理。引入了这一机制可以更好地践行DRY(Don’t Repeat Yourself)思想,通过Filter能统一地对一些通用逻辑进行处理,如:权限校验、参数加解密、参数校验等方面我们都可以 阅读全文
posted @ 2017-11-09 23:56 Cat Qi 阅读(917) 评论(0) 推荐(0) 编辑
摘要:在我前一篇博客中已经给各位简单介绍了HTTP协议与RestFul API的关系,以及一些基本的HTTP协议知识,在这些知识的铺垫下,今天,我们一起来讨论一下WEB API的适用场景,然后写我们第一个WEB API接口,并演示如何对其进行简单调用。 很多人都很迷惑,既然有了WCF为什么还要有WEB A 阅读全文
posted @ 2017-11-09 23:55 Cat Qi 阅读(3420) 评论(0) 推荐(0) 编辑
摘要:对HTTP协议的基本了解是能理解并使用RestFul风格API的基础,在了解了这些基础之后,使用各种RestFul的开发框架才能得心应手。我一开始使用WebApi的时候就因为对这些知识缺乏了解,觉得用起来各种不顺手,直到熟悉了这些HTTP的知识后,使用WebApi开发起来才觉得得心应手,我的理解里, 阅读全文
posted @ 2017-11-09 23:54 Cat Qi 阅读(1798) 评论(0) 推荐(0) 编辑
摘要:http://www.cnblogs.com/jin-yuan/tag/ASP.NET%20Web%20API/ http://www.cnblogs.com/UliiAn/archive/2016/04.html 阅读全文
posted @ 2017-11-08 21:46 Cat Qi 阅读(196) 评论(0) 推荐(0) 编辑
摘要:1、概念 1.0 线程的和进程的关系以及优缺点 windows系统是一个多线程的操作系统。一个程序至少有一个进程,一个进程至少有一个线程。进程是线程的容器,一个C#客户端程序开始于一个单独的线程,CLR(公共语言运行库)为该进程创建了一个线程,该线程称为主线程。例如当我们创建一个C#控制台程序,程序 阅读全文
posted @ 2017-11-08 00:47 Cat Qi 阅读(5070) 评论(0) 推荐(2) 编辑
摘要:本篇概述: @FCL4.0中已经存在的线程模型,以及它们之间异同点; @多线程编程模型的选择。 1:异步、多线程、任务、并行的本质 这四个概念对应在CLR中的本质,本质都是多线程。 异步,简单的讲就是BeginInvoke、EndInvoke模式,它在CLR内部线程池进行管理; 多线程,体现在C#中 阅读全文
posted @ 2017-11-07 22:46 Cat Qi 阅读(1183) 评论(0) 推荐(0) 编辑
摘要:通过使用模板,我们可以把model和controller中的数据组装起来呈现给浏览器,还可以通过数据绑定,实时更新视图,让我们的页面变成动态的。ng的模板真是让我爱不释手。学习ng道路还很漫长,从模板开始入手是个不错方式,因为这部分内容相对简单好理解,而且是视图层的东西,大家都喜欢可以立马看得见的东 阅读全文
posted @ 2017-09-06 15:17 Cat Qi 阅读(818) 评论(0) 推荐(0) 编辑