博客园 - Napoléon
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=6436
2019-02-01T02:17:33Z
Napoléon
https://www.cnblogs.com/guyun/
feed.cnblogs.com
https://www.cnblogs.com/guyun/p/10344929.html
正则表达式大全——持续更新中。。。 - Napoléon
public static class RegexExtensions { /// /// 是否为日期型字符串 /// /// 日期字符串(2008-05-08) /// public static bool IsDate(this string StrSource) {...
2019-02-01T02:18:00Z
2019-02-01T02:18:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】public static class RegexExtensions { /// /// 是否为日期型字符串 /// /// 日期字符串(2008-05-08) /// public static bool IsDate(this string StrSource) {... <a href="https://www.cnblogs.com/guyun/p/10344929.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/9661830.html
sql语句优化 - Napoléon
性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化。 为了获得稳定的执行性能,SQL语句越简单越好。对复杂的SQL语句,要设法对之进行简化。 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN)2)考虑使用临时表
2018-09-17T06:11:00Z
2018-09-17T06:11:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化。 为了获得稳定的执行性能,SQL语句越简单越好。对复杂的SQL语句,要设法对之进行简化。 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN)2)考虑使用临时表 <a href="https://www.cnblogs.com/guyun/p/9661830.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/9646569.html
sql一些语句性能及开销优化 - Napoléon
1、应用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数;通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;能够分开的操作尽量分开处理,提高每次的响应速度;在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;算法的结构尽量简单;在查询时,不要过多地使用通配符如SEL
2018-09-14T06:48:00Z
2018-09-14T06:48:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】1、应用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数;通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;能够分开的操作尽量分开处理,提高每次的响应速度;在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;算法的结构尽量简单;在查询时,不要过多地使用通配符如SEL <a href="https://www.cnblogs.com/guyun/p/9646569.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/8027797.html
高质量图片无损压缩算法 - Napoléon
朋友开了网店,想让我帮忙做一些小工具,其中就包含了图片无损压缩的需求,这一类的软件和代码在网上有很多,但是真正实用的符合自己定制化需求的没几个,于是就想着自己DIY一下(自己动手丰衣足食^o^),并贴出核心代码供大家学习和参考
2017-12-12T06:54:00Z
2017-12-12T06:54:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】朋友开了网店,想让我帮忙做一些小工具,其中就包含了图片无损压缩的需求,这一类的软件和代码在网上有很多,但是真正实用的符合自己定制化需求的没几个,于是就想着自己DIY一下(自己动手丰衣足食^o^),并贴出核心代码供大家学习和参考 <a href="https://www.cnblogs.com/guyun/p/8027797.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6251742.html
分布式系统事务一致性解决方案 - Napoléon
开篇 在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的Bob给Smith转账的案例。传统的企业开发,系统往往是以单体应用形式存在的,也没有横跨多个数据库。我们通常只需借助开发平台中特有数据访问技术和框架(例如Spring、JDBC、ADO.NET),结合关系型数据库
2017-01-05T03:39:00Z
2017-01-05T03:39:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】开篇 在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的Bob给Smith转账的案例。传统的企业开发,系统往往是以单体应用形式存在的,也没有横跨多个数据库。我们通常只需借助开发平台中特有数据访问技术和框架(例如Spring、JDBC、ADO.NET),结合关系型数据库 <a href="https://www.cnblogs.com/guyun/p/6251742.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6208390.html
MVC中的AOP - Napoléon
一、 AOP是什么? AOP(Aspect-Oriented Programming),面向切面编程,看着是跟OOP(面向对象编程)挺相近的,但实际上又有什么区别呢?OOP具有封装,继承,多态等东西来定义从上到下这种层次关系,但要想实现从左到右的关系的话就开始有点水土不服了,例如用户的权限控制,操作
2016-12-21T09:16:00Z
2016-12-21T09:16:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】一、 AOP是什么? AOP(Aspect-Oriented Programming),面向切面编程,看着是跟OOP(面向对象编程)挺相近的,但实际上又有什么区别呢?OOP具有封装,继承,多态等东西来定义从上到下这种层次关系,但要想实现从左到右的关系的话就开始有点水土不服了,例如用户的权限控制,操作 <a href="https://www.cnblogs.com/guyun/p/6208390.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6202905.html
IOC框架 - Napoléon
一、 IOC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。 图1:软件系统中耦合的对象 如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产
2016-12-20T07:41:00Z
2016-12-20T07:41:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】一、 IOC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。 图1:软件系统中耦合的对象 如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产 <a href="https://www.cnblogs.com/guyun/p/6202905.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6198524.html
C#设计模式-备忘录模式 - Napoléon
访问者模式的实现是把作用于某种数据结构上的操作封装到访问者中,使得操作和数据结构隔离。而本文要介绍的备忘者模式与命令模式有点相似,不同的是,命令模式保存的是发起人的具体命令(命令对应的是行为),而备忘录模式保存的是发起人的状态(而状态对应的数据结构,如属性)。下面具体来看看备忘录模式。 一、 备忘录
2016-12-19T10:07:00Z
2016-12-19T10:07:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】访问者模式的实现是把作用于某种数据结构上的操作封装到访问者中,使得操作和数据结构隔离。而本文要介绍的备忘者模式与命令模式有点相似,不同的是,命令模式保存的是发起人的具体命令(命令对应的是行为),而备忘录模式保存的是发起人的状态(而状态对应的数据结构,如属性)。下面具体来看看备忘录模式。 一、 备忘录 <a href="https://www.cnblogs.com/guyun/p/6198524.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6198361.html
C#设计模式-访问者模式 - Napoléon
一、 访问者(Vistor)模式 访问者模式是封装一些施加于某种数据结构之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保存不变。访问者模式适用于数据结构相对稳定的系统, 它把数据结构和作用于数据结构之上的操作之间的耦合度降低,使得操作集合可以相对自由地改变。 数据结构的每一个节点
2016-12-19T09:34:00Z
2016-12-19T09:34:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】一、 访问者(Vistor)模式 访问者模式是封装一些施加于某种数据结构之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保存不变。访问者模式适用于数据结构相对稳定的系统, 它把数据结构和作用于数据结构之上的操作之间的耦合度降低,使得操作集合可以相对自由地改变。 数据结构的每一个节点 <a href="https://www.cnblogs.com/guyun/p/6198361.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6198215.html
C#设计模式-责任链模式 - Napoléon
在现实生活中,有很多请求并不是一个人说了就算的,例如面试时的工资,低于1万的薪水可能技术经理就可以决定了,但是1万~1万5的薪水可能技术经理就没这个权利批准,可能就需要请求技术总监的批准,所以在面试的完后,经常会有面试官说,你这个薪水我这边觉得你这技术可以拿这个薪水的,但是还需要技术总监的批准等的话
2016-12-19T09:11:00Z
2016-12-19T09:11:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】在现实生活中,有很多请求并不是一个人说了就算的,例如面试时的工资,低于1万的薪水可能技术经理就可以决定了,但是1万~1万5的薪水可能技术经理就没这个权利批准,可能就需要请求技术总监的批准,所以在面试的完后,经常会有面试官说,你这个薪水我这边觉得你这技术可以拿这个薪水的,但是还需要技术总监的批准等的话 <a href="https://www.cnblogs.com/guyun/p/6198215.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6198062.html
C#设计模式-策略者模式 - Napoléon
状态模式是对某个对象状态的抽象,而本文要介绍的策略模式也就是对策略进行抽象,策略的意思就是方法,所以也就是对方法的抽象,下面具体分享下我对策略模式的理解。 一、 策略者(Stragety)模式 在现实生活中,策略模式的例子也非常常见,例如,中国的所得税,分为企业所得税、外商投资企业或外商企业所得税和
2016-12-19T08:48:00Z
2016-12-19T08:48:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】状态模式是对某个对象状态的抽象,而本文要介绍的策略模式也就是对策略进行抽象,策略的意思就是方法,所以也就是对方法的抽象,下面具体分享下我对策略模式的理解。 一、 策略者(Stragety)模式 在现实生活中,策略模式的例子也非常常见,例如,中国的所得税,分为企业所得税、外商投资企业或外商企业所得税和 <a href="https://www.cnblogs.com/guyun/p/6198062.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6197956.html
C#设计模式-状态者模式 - Napoléon
一、 状态者(State)模式 每个对象都有其对应的状态,而每个状态又对应一些相应的行为,如果某个对象有多个状态时,那么就会对应很多的行为。那么对这些状态的判断和根据状态完成的行为,就会导致多重条件语句,并且如果添加一种新的状态时,需要更改之前现有的代码。这样的设计显然违背了开闭原则。状态模式正是用
2016-12-19T08:26:00Z
2016-12-19T08:26:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】一、 状态者(State)模式 每个对象都有其对应的状态,而每个状态又对应一些相应的行为,如果某个对象有多个状态时,那么就会对应很多的行为。那么对这些状态的判断和根据状态完成的行为,就会导致多重条件语句,并且如果添加一种新的状态时,需要更改之前现有的代码。这样的设计显然违背了开闭原则。状态模式正是用 <a href="https://www.cnblogs.com/guyun/p/6197956.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6188007.html
C#设计模式-中介者模式 - Napoléon
在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室、QQ群和短信平台,这些都是中介者模式在现实生活中的应用,下面就具体分享下我对中介者模式的理解。 一、 中介者(Mediator)模式 从生活中的例子可以看出,不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中间平
2016-12-16T10:15:00Z
2016-12-16T10:15:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室、QQ群和短信平台,这些都是中介者模式在现实生活中的应用,下面就具体分享下我对中介者模式的理解。 一、 中介者(Mediator)模式 从生活中的例子可以看出,不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中间平 <a href="https://www.cnblogs.com/guyun/p/6188007.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6187857.html
C#设计模式-迭代器模式 - Napoléon
一、 迭代器(Iterator)模式 迭代器是针对集合对象而生的,对于集合对象而言,必然涉及到集合元素的添加删除操作,同时也肯定支持遍历集合元素的操作,我们此时可以把遍历操作也放在集合对象中,但这样的话,集合对象就承担太多的责任了,面向对象设计原则中有一条是单一职责原则,所以我们要尽可能地分离这些职
2016-12-16T09:43:00Z
2016-12-16T09:43:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】一、 迭代器(Iterator)模式 迭代器是针对集合对象而生的,对于集合对象而言,必然涉及到集合元素的添加删除操作,同时也肯定支持遍历集合元素的操作,我们此时可以把遍历操作也放在集合对象中,但这样的话,集合对象就承担太多的责任了,面向对象设计原则中有一条是单一职责原则,所以我们要尽可能地分离这些职 <a href="https://www.cnblogs.com/guyun/p/6187857.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6187733.html
C#设计模式-模板方法模式 - Napoléon
提到模板,大家肯定不免想到生活中的“简历模板”、“论文模板”、“Word中模版文件”等,在现实生活中,模板的概念就是——有一个规定的格式,然后每个人都可以根据自己的需求或情况去更新它,例如简历模板,下载下来的简历模板的格式都是相同的,然而我们下载下来简历模板之后我们可以根据自己的情况填充不同的内容要
2016-12-16T09:15:00Z
2016-12-16T09:15:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】提到模板,大家肯定不免想到生活中的“简历模板”、“论文模板”、“Word中模版文件”等,在现实生活中,模板的概念就是——有一个规定的格式,然后每个人都可以根据自己的需求或情况去更新它,例如简历模板,下载下来的简历模板的格式都是相同的,然而我们下载下来简历模板之后我们可以根据自己的情况填充不同的内容要 <a href="https://www.cnblogs.com/guyun/p/6187733.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6187594.html
C#设计模式-代理模式 - Napoléon
在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可以在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象,然后客户端只需要访问代理对象,由代理对象去帮我们去请求目标对象并返回结果给客户端,这样的一
2016-12-16T08:55:00Z
2016-12-16T08:55:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可以在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象,然后客户端只需要访问代理对象,由代理对象去帮我们去请求目标对象并返回结果给客户端,这样的一 <a href="https://www.cnblogs.com/guyun/p/6187594.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6187423.html
C#设计模式-享元模式 - Napoléon
在软件开发过程,如果我们需要重复使用某个对象的时候,如果我们重复地使用new创建这个对象的话,这样我们在内存就需要多次地去申请内存空间了,这样可能会出现内存使用越来越多的情况,这样的问题是非常严重,然而享元模式可以解决这个问题,下面具体看看享元模式是如何去解决这个问题的。 一、 享元(Flyweig
2016-12-16T08:32:00Z
2016-12-16T08:32:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】在软件开发过程,如果我们需要重复使用某个对象的时候,如果我们重复地使用new创建这个对象的话,这样我们在内存就需要多次地去申请内存空间了,这样可能会出现内存使用越来越多的情况,这样的问题是非常严重,然而享元模式可以解决这个问题,下面具体看看享元模式是如何去解决这个问题的。 一、 享元(Flyweig <a href="https://www.cnblogs.com/guyun/p/6187423.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6187179.html
C#设计模式-外观模式 - Napoléon
在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 ”门面“模式。下面就具体介绍下外观模式。 一、 外观(Facade)模式 外观模式提供了一个统一的接口,用来访
2016-12-16T07:48:00Z
2016-12-16T07:48:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 ”门面“模式。下面就具体介绍下外观模式。 一、 外观(Facade)模式 外观模式提供了一个统一的接口,用来访 <a href="https://www.cnblogs.com/guyun/p/6187179.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6186183.html
C#设计模式-装饰者模式 - Napoléon
在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给手机添加贴膜,手机挂件,手机外壳等,如果此时利用继承来实现的话,就需要定义无数的类,如StickerPhone(贴膜是手机类)、AccessoriesPhone(挂件手机类)等,这样就会导致 ”子类爆炸“问题,为了解决这个问题,我们可以使用
2016-12-16T03:28:00Z
2016-12-16T03:28:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给手机添加贴膜,手机挂件,手机外壳等,如果此时利用继承来实现的话,就需要定义无数的类,如StickerPhone(贴膜是手机类)、AccessoriesPhone(挂件手机类)等,这样就会导致 ”子类爆炸“问题,为了解决这个问题,我们可以使用 <a href="https://www.cnblogs.com/guyun/p/6186183.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/guyun/p/6184206.html
C#设计模式-桥接模式 - Napoléon
这里以电视遥控器的一个例子来引出桥接模式解决的问题,首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视品牌的遥控器都继承这个抽象类,具体设计类图如下: 这样的实现使得每部不同型号的电视都有自己遥控器实现,这样的设
2016-12-15T09:53:00Z
2016-12-15T09:53:00Z
Napoléon
https://www.cnblogs.com/guyun/
【摘要】这里以电视遥控器的一个例子来引出桥接模式解决的问题,首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视品牌的遥控器都继承这个抽象类,具体设计类图如下: 这样的实现使得每部不同型号的电视都有自己遥控器实现,这样的设 <a href="https://www.cnblogs.com/guyun/p/6184206.html" target="_blank">阅读全文</a>