摘要: 访问者模式是一种行为型模式,访问者表示一个作用于某对象结构中各元素的操作。它可以在不修改各元素类的前提下定义作用于这些元素的新操作,即动态的增加具体访问者角色。 访问者模式利用了双重分派。先将访问者传入元素对象的Accept方法中,然后元素对象再将自己传入访问者,之后访问者执行元素的相应方法。 主要 阅读全文
posted @ 2018-06-25 23:05 share112 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 备忘录模式又叫做快照模式(Snapshot)或 Token 模式,备忘录模式的用意是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以在合适的时候将该对象恢复到原先保存的状态。 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如, 阅读全文
posted @ 2018-06-25 23:04 share112 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 命令模式:在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式。 角色 阅读全文
posted @ 2018-06-25 23:02 share112 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 这种模式有另一种称呼:控制链模式。它主要由一系列对于某些命令的处理器构成,每个查询会在处理器构成的责任链中传递,在每个交汇点由处理器判断是否需要对它们进行响应与处理。每次的处理程序会在有处理器处理这些请求时暂停。 阅读全文
posted @ 2018-06-25 23:00 share112 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 迭代器模式 (Iterator),又叫做游标(Cursor)模式。提供一种方法访问一个容器(Container)对象中各个元素,而又不需暴露该对象的内部细节。 当你需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,就应该考虑使用迭代器模式。另外,当需要对聚集有多种方式遍历时,可以考虑去使 阅读全文
posted @ 2018-06-25 23:00 share112 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 某个对象可以被设置为是可观察的,只要通过某种方式允许其他对象注册为观察者。每当被观察的对象改变时,会发送信息给观察者。 阅读全文
posted @ 2018-06-25 22:58 share112 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 模板模式准备一个抽象类,将部分逻辑以具体方法以及具体构造形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。 阅读全文
posted @ 2018-06-25 22:56 share112 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 策略模式主要为了让客户类能够更好地使用某些算法而不需要知道其具体的实现。 阅读全文
posted @ 2018-06-25 22:55 share112 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 运用共享技术有效的支持大量细粒度的对象 享元模式变化的是对象的存储开销 享元模式中主要角色: 抽象享元(Flyweight)角色:此角色是所有的具体享元类的超类,为这些类规定出需要实现的公共接口。那些需要外运状态的操作可以通过调用商业以参数形式传入 具体享元(ConcreteFlyweight)角色 阅读全文
posted @ 2018-06-25 22:53 share112 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 门面模式 (Facade)又称外观模式,用于为子系统中的一组接口提供一个一致的界面。门面模式定义了一个高层接口,这个接口使得子系统更加容易使用:引入门面角色之后,用户只需要直接与门面角色交互,用户与子系统之间的复杂关系由门面角色来实现,从而降低了系统的耦 阅读全文
posted @ 2018-06-25 22:49 share112 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 装饰器模式允许我们根据运行时不同的情景动态地为某个对象调用前后添加不同的行 阅读全文
posted @ 2018-06-25 21:59 share112 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 组合模式(Composite Pattern)有时候又叫做部分-整体模式,用于将对象组合成树形结构以表示“部分-整体”的层次关系。组合模式使得用户对单个对象和组合对象的使用具有一致性。 常见使用场景:如树形菜单、文件夹菜单、部门组织架构图等。 阅读全文
posted @ 2018-06-25 21:58 share112 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 将抽象部分与它的实现部分分离,使他们都可以独立的变抽象与它的实现分离,即抽象类和它的派生类用来实现自己的对象 桥接与适配器模式的关系(适配器模式上面已讲解): 桥接属于聚合关系,两者关联 但不继承 适配器属于组合关系,适配者需要继承源 聚合关系:A对象可以包含B对象 但B对象不是A对象的一部分 阅读全文
posted @ 2018-06-25 21:53 share112 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 这种模式允许使用不同的接口重构某个类,可以允许使用不同的调用方式进行调用: 阅读全文
posted @ 2018-06-25 21:51 share112 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 有时候,部分对象需要被初始化多次。而特别是在如果初始化需要耗费大量时间与资源的时候进行预初始化并且存储下这些对象,就会用到原型模式: 阅读全文
posted @ 2018-06-25 21:49 share112 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 建造者模式主要在于创建一些复杂的对象。将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示的设计模式; 结构图: 阅读全文
posted @ 2018-06-25 21:46 share112 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 有些情况下我们需要根据不同的选择逻辑提供不同的构造工厂,而对于多个工厂而言需要一个统一的抽象工厂: 阅读全文
posted @ 2018-06-25 21:45 share112 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 工厂模式是另一种非常常用的模式,正如其名字所示:确实是对象实例的生产工厂。某些意义上,工厂模式提供了通用的方法有助于我们去获取对象,而不需要关心其具体的内在的实现。 阅读全文
posted @ 2018-06-25 21:42 share112 阅读(82) 评论(0) 推荐(0) 编辑
摘要: Singleton(单例模式):单例模式是最常见的模式之一,在Web应用的开发中,常常用于允许在运行时为某个特定的类创建仅有一个可访问的实例。 在很多情况下,需要为系统中的多个类创建单例的构造方式,这样,可以建立一个通用的抽象父工厂方法: 阅读全文
posted @ 2018-06-25 21:39 share112 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 学习PHP,对设计模式永远是逃不掉的:今天把php23种设计模式及其demo好好整理如下: 记录PHP关于23种设计模式的简单Demo。 Demo地址:https://segmentfault.com/a/1190000007797208 设计模式分为:创建型模式, 结构型模式,行为型模式等23种设 阅读全文
posted @ 2018-06-25 21:35 share112 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 在 MySQL 中的行级锁、表级锁和页级锁中,咱们介绍过,行级锁是 MySQL 中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突。行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁和排他锁的概念、使用方式及注意事项。 共享锁(Share Lock) 共享锁又称读锁,是读取操作创建的锁。其他用 阅读全文
posted @ 2018-06-25 21:29 share112 阅读(1072) 评论(0) 推荐(0) 编辑
摘要: 1、背景: 现在有这样的需求,插入数据时,判断test表有无username为‘mraz’的数据,无则插入,有则提示“已插入”,目的就是想只插入一条username为‘mraz’的记录。 2、一般程序逻辑如下: 3、一般少量请求的时候,程序逻辑不会有问题。但是一旦高并发请求执行的话,程序并没有按预期 阅读全文
posted @ 2018-06-25 21:28 share112 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 转自:https://www.cnblogs.com/TinyMing/p/4597136.html 看到有人问Connection: close和Connection: keep-alive有什么区别?想起以前学习到的一篇文章,今天转载来,大家看看,我也再温故知新下。如果有问题补充的在下面可以扩充 阅读全文
posted @ 2018-06-25 10:06 share112 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.infoq.com/cn/news/2018/05/luojisiwei 方圆 曾先后在 Cisco,新浪微博从事基础架构研发工作。十多年一直专注于后端技术的研发,在消息通信,分布式存储等方向有着丰富的经验。个人技术兴趣广泛,主要专注 Go/Java/Python 等编程 阅读全文
posted @ 2018-06-24 22:30 share112 阅读(607) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.infoq.com/cn/news/2017/11/Sincerity-respect-management-tec 如果把高质量的 IT 技术产出比喻成汽车上路,那么技术团队本身就可以看成是马路。它是基础设施,平时不会得到太多关注。然而,想要汽车上路,那么这个路就要先造 阅读全文
posted @ 2018-06-24 22:25 share112 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 转自:https://www.cnblogs.com/IcanFixIt/p/7518146.html 有没有想过要设计多大的企业规模系统?在主要的软件开发开始之前,我们必须选择一个合适的体系结构,它将为我们提供所需的功能和质量属性。因此,在将它们应用到我们的设计之前,我们应该了解不同的体系结构。 阅读全文
posted @ 2018-06-24 21:58 share112 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.infoq.com/cn/articles/2017hongbao-weixin 2017年1月28日,正月初一,微信公布了用户在除夕当天收发微信红包的数量——142亿个,而其收发峰值也已达到76万每秒。百亿级别的红包,如何保障并发性能与资金安全?这给微信带来了超级挑战。 阅读全文
posted @ 2018-06-24 10:51 share112 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 转自:https://my.oschina.net/angelangel/blog/338456 一、高并发和高负载的约束条件 硬件 部署 操作系统 Web 服务器 PHP MySQL 测试 二、解决之道——硬件篇 处理能力的提升:部署多颗CPU,选择多核心、具备更高运算频率、更大高速缓存的CPU; 阅读全文
posted @ 2018-06-10 07:18 share112 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 转自:https://www.cnblogs.com/yangtze-yufei/p/9141385.html redis是一个内存数据库,使用key-value形式在内存中管理数据。 一、redis使用场景 1、热数据存储。对于需要频繁读写的数据,可以放到redis中,不用频繁的请求数据库。再设置 阅读全文
posted @ 2018-06-07 16:44 share112 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 转自:https://www.cnblogs.com/13yan/p/9142568.html 几年前还记得我发表的软件设计的几大误区吗? 随着时代的发展,orm被更多人接受,九十年代出来的设计模式也被动地融入到主流框架,以至于设计模式到现在发展成了架构模式和业务模式,而存储过程也被开发者更少地使用 阅读全文
posted @ 2018-06-07 16:32 share112 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 转自: https://www.cnblogs.com/kclteam/p/5278926.html 新项目,大概情况是这样的:可能存在多国、不同语种使用者,比喻有中文、繁体中文,韩文、日本等等,开发时选择了UTF-8编码,开发顺利,没有问题。昨天做了一个csv导出功能,导出的东西完全乱了: 设置m 阅读全文
posted @ 2018-03-30 17:22 share112 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 由于开发需要,在本地环境中配置了LNMP环境,使用的是Centos 6.5 的yum安装,安装一切正常,但是由于默认网站文件夹比较奇葩,于是把网站文件用mv命令移动到了新的目录,并相应修改了配置文件,并重启Nginx。 那么好,问题来了!本以为重启就OK了。居然报个“403 is forbidden 阅读全文
posted @ 2017-12-20 16:13 share112 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 转自:https://segmentfault.com/a/1190000007769660 考虑过的方法有 直接用时间戳,或者以此衍生的一系列方法 Mysql自带的uuid 直接用时间戳,或者以此衍生的一系列方法 Mysql自带的uuid 以上两种方法都可以查到就不多做解释了 最终选择了Twitt 阅读全文
posted @ 2017-09-02 21:11 share112 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 在mysql 工具 搜索或者插入数据时报下面错误: ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'database_tl.em 阅读全文
posted @ 2017-07-14 17:52 share112 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 转:http://www.lovelucy.info/tencent-sso.html 在 QQ 已经登录的情况下,手动输入网址打开 QQ 邮箱 或者 QQ 空间 等腾讯网站,可以看到网页已经检测到本地 QQ 客户端已经登录,于是用户可以很方便地一键登录网站而不必再输入用户名密码。这实际上是典型的异 阅读全文
posted @ 2017-06-14 18:01 share112 阅读(585) 评论(0) 推荐(0) 编辑
摘要: 本文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架构参考。一部分为读书笔记,一部分是个人经验总结。对大型分布式网站架构有很好的参考价值。 一、大型网站的特点 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣, 阅读全文
posted @ 2017-06-04 13:53 share112 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 背景:对于死锁的问题,人们往往想到出现一些关于访问很缓慢,有白页现象,要是测试环境(我就真实遇到测试环境有本文谈及一样的问题)你也就重启一下PHP的php-fpm进程发现又好了,隔一段时间又出类似的问题,你会看下日志,你会发现有很多日志是“Max execution timeout of 60 se 阅读全文
posted @ 2017-06-02 14:59 share112 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 转自: https://my.oschina.net/editorial-story/blog/882780 PHP 是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,利于学习,使用广泛,主要适用于 Web 开发领域,是大多数后端开发者的首选。PHP 作为最受欢迎的编程语 阅读全文
posted @ 2017-04-30 20:04 share112 阅读(784) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.cnblogs.com/allenblogs/archive/2011/05/19/2051136.html 在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台: /usr/loc 阅读全文
posted @ 2016-12-19 18:14 share112 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.uml.org.cn/sjms/201211023.asp#1 目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大 阅读全文
posted @ 2016-12-19 16:51 share112 阅读(160) 评论(0) 推荐(0) 编辑