![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 55
逍遥子_
重点关注大并发处理、分布式计算、微服务、物联网、大数据等领域
展开
-
Null对象模式的用法
1、 什么是Null对象模式?为什么要采用Null对象? 个人理解,所谓模式就是程序员们在编程的时候对一些类似问题总结出的通用解决方法或思路。因此,即使你的问题非常吻合某种设计模式所对应的问题,也不能指望现有的某种设计模式能够完全解决我们编程中的具体设计问题。闲言少述,进入正题: Null对象模式,顾名思义就是一种空的对象,它什么都不干。或许你要问:既然它什么都不干,那原创 2012-09-09 16:20:51 · 2383 阅读 · 0 评论 -
nginx源码分析之IO多路复用流程
一、 主流程几乎所有的服务器程序的工作模式都是:(1) 初始化一些参数;(2) 开启监听socket;(3) 在主线程的死循环(一般都是死循环)中对监听socket和业务socket进行IO状态监控(IO多路复用),并对IO进行处理;Nginx的主要工作模式是多进程模式,那么它的工作方式也是类似的。只不过是它的死循环被分散到了各个工作进程中。这原创 2017-03-02 20:35:40 · 4312 阅读 · 1 评论 -
微服务开发过程中需要注意的若干事项
微服务,说比做容易!我们更关注怎样将这种架构设计思想融入到实际工作中,微服务更关注各服务之间的调用、管理,它追求软件研发过程中的自动化,例如:自动编译、打包、发布,自动化运维等等,这里的每一个自动化的地方都需要有相应的软件、脚本做支撑;在实际应用过程中,我们很难短时间内把所有的自动化基础软件熟练应用起来,一方面,时间紧迫,很难有公司会专门抽出来时间来搭建和构造这样的一套自动化系统出来,并且培训好相原创 2017-02-07 18:42:57 · 5088 阅读 · 0 评论 -
优秀REST风格 API的设计原则
本文由逍遥子翻译自:https://codeplanet.io/principles-good-restful-api-design/文中注释由逍遥子根据个人理解填写,转载时请附带本文的连接。设计优秀的REST风格API非常困难!API是服务提供方和使用方之间的契约,打破该契约将会给服务端开发人员招来非常大的麻烦,这些麻烦来自于使用API的开发人员,因为对API的改动会导致他们的移动...翻译 2017-01-10 17:42:27 · 36661 阅读 · 13 评论 -
关于推送系统设计的一些总结与思考(二)
**三、 消息推送的工作模式** 常见的消息推送系统的工作模式有:推模式、拉模式以及推拉混合模式三种,在很多推送系统中,采用在线消息直接推送下去,离线消息让客户端拉取,这种方式很容易造成漏消息的问题。本节将介绍几种“特殊定义“的推送模式的特点和应用场景,它们的含义与通常理解的略微有些差异。 在线用户:个人认为在线用户是指网络正常、弱网、网络异常等情况下的用户,这些用户实际上正在使用系统,只是由于原创 2016-11-24 19:40:05 · 10057 阅读 · 0 评论 -
关于推送系统设计的一些总结与思考(三)
**四、 推送系统的集群化**4.1长连接集群推送系统作为一项基础服务,它需要承载全部在线用户量,对于移动互联网行业,在设计之初的期望目标用户量就非常大,并且用户未来一段时间的增长量通常难以预估,因此要求在设计推送系统时,都要求能够集群化部署、支持动态扩展。那么长连接集群化设计时需要解决那些问题呢? 个人认为长连接服务需要解决三个问题:路由、管理和动态扩展;另外,如果想要锦上添花,让长连接通道更加原创 2016-11-24 19:43:51 · 3362 阅读 · 0 评论 -
如何快速开发一个支持高效、高并发的分布式ID生成器(三)
前面两个ID生成器只是简单的完成功能,如果实际应用到生产环境,则对ID生成器的要求更高,具体包括但不限于以下几点:(1) 产生全局唯一、且单调递增的ID;(2) 任何情况下ID不能重复或者回退;(3) 具备高效率产生ID的能力;(4) 具备提供多种ID的能力;(5) 便于运维管理; ID生成器整个系统需要分为四个部分:web管理端、IdGen服务、redis以及mysql,其中:(1原创 2016-08-10 19:20:12 · 3266 阅读 · 0 评论 -
如何快速开发一个支持高效、高并发的分布式ID生成器(二)
前面介绍的是利用redis快速搭建一个ID生成器服务,这种方式搭建的ID生成器服务还存在一些缺陷:(1) 与应用耦合高,没有对外屏蔽掉内部实现细节,例如redis,用户完全不需要知道ID生成器使用什么产生的ID;(2) 扩展性差,在项目规模较大时,ID的应用会非常多,如果用一组redis无法满足需求时,不方面扩展;下面将对上述的ID生成器进一步改进,改进方式为通过thrif原创 2016-04-09 10:36:45 · 2156 阅读 · 1 评论 -
如何快速开发一个支持高效、高并发的分布式ID生成器(一)
ID生成器是指能产生不重复ID服务的程序,在后台开发过程中,尤其是分布式服务、微服务程序开发过程中,经常会用到,例如,为用户的每个请求产生一个唯一ID、为每个消息产生一个ID等等,ID生成器也是进行无状态服务开发的重要需求之一。ID生成器有其特殊要求:(1) 产生的ID不能重复,在任何情况下产生的ID都不能重复,例如:在ID生成器程序重启之后,ID生成器产生的新ID不能与重启之前产生原创 2016-04-09 10:30:01 · 5075 阅读 · 4 评论 -
mosquitto源码分析(六)
一、 Mosquito的辅助功能介绍Mosquitto代码的辅助功能主要包括:log输出功能、配置参数管理功能和内存封装的功能,这三个功能虽不是mosquitto的核心模块,但是却在其源码实现中经常遇到,它们的实现给mosquitto的代码开发带来了很大的方便。4.1、log输出功能Mosquitto日志输出功能的实现代码主要在文件/ mosquitto-1.2/src/loggin原创 2014-03-18 16:04:53 · 7977 阅读 · 4 评论 -
高效代码审查的十个经验
代码审查摘要:我们在实践中发现,随着开发平台和开发语言的不同,最优的代码审查量有所不同。但是限制每次审查的数量确实非常必要,因为这个过程是高强度的脑力密集型活动。时间一长,代码在审查者眼里只是字母,无任何逻辑联系,自然不会有太多的产出。代码审查(Code Review)是软件开发中常用的手段,和QA测试相比,它更容易发现和架构以及时序相关等较难发现的问题,还可以帮助团队成员提高编程技能转载 2013-03-01 14:52:35 · 901 阅读 · 0 评论 -
几种设计模式
http://houjixin.blog.163.com/blog/static/356284102012317105254918/访问者(Visitor)模式访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。问题提出System.Collection命名空间下提供了大量集合操作对转载 2013-01-23 16:48:12 · 1435 阅读 · 0 评论 -
关于推送系统设计的一些总结与思考(一)
消息与通知本文中的消息是指交给推送系统的待发送字符串;通知是指推送系统内部,通过长连接服务发送给客户端的通知字符串,它只在推送系统内部使用,对于使用推送系统的上层应用无法感知其存在;一、 安全性在推送系统中,安全性最受关注的是长连接的安全管控,以及数据在长连接通道上传输的安全性。举个针对长连接的安全管控的例子:有人知道你的长连接服务的IP地址和端口之后伪造大量的TCP连接,将会对长连接服务器端产生的原创 2016-11-24 19:11:03 · 5456 阅读 · 0 评论