- 博客(103)
- 收藏
- 关注
原创 2021年终总结
马上就要元旦了,今年工作比较忙碌(找接口为自己懒的写文章开脱),一直没写文章反省自己,实不应该。值此跨年时,简单对自己一年收获做些罗列。工作方面今年工作重心主要放在了呼叫中心业务上,通过对一些功能的分析、重构、优化,改进和稳定了部分功能,以便更好的服务客户。部分项目的定制开发和支持,也花了许多经历。产品改进主要有:重构了呼叫中心模块的外呼路由规则重构了呼叫中心模块的IVR进线规则重构了呼叫中心模块的呼入记录日志、通话结果校验开发了呼叫中心机器人进线相关优化了知识库搜索逻辑,提高准确性学习
2021-12-31 11:30:00
354
原创 一个基于事件回调的业务思考
业务概述某些并发比较高的业务,通常是基于回调事件异步处理的,比如电话系统。历史原因我们实现的方案并不是很优雅,导致出现一些问题,持续了很久。最近花了一些时间,来优化目前的问题,临近上线,特来记录一下。我们实现的是电话的呼入呼出,做一些排队、分配和通话结果等信息分析和记录。业务逻辑流程大致如下:问题抓取和分析对于记录的准确性方面的问题,我大致罗列如下:时间类型字段错误,比如挂机时间小于呼入时间业务字段缺失,比如该有的字段,没记录上业务字段错误,比如本来是A,结果被更新成了B每日分析了几批问
2021-06-16 09:34:38
346
转载 MySQL数据库设计规范
MySQL数据库设计规范目录1. 规范背景与目的 2. 设计规范2.1 数据库设计 2.1.1 库名 2.1.2 表结构 2.1.3 列数据类型优化 2.1.4 索引设计 2.1.5 分库分表、分区表 2.1.6 字符集 2.1.7 程序DAO层设计建议 2.1.8 一个规范的建表语句示例 2.2 SQL编写 2.2.1 DML语句 2.2.2 多表连接 ...
2020-04-04 19:05:40
396
原创 国际化那点儿事儿
国际化那点儿事儿前言方案调研规范说明系统运行说明重要概念实施流程改造过程前言前阵子对一个历史项目做了国际化改造,时下流行框架基本上都提供了自己的国际化标准,预留了国际化模块。本文讲的是从零开始的国际化方案,适用于改造已有项目。如果您使用的是这些标准规范的框架,那可以参考您的框架文档。方案调研市面上提供国际化解决方案有很多种,大致原理都是标记一个带翻译的key, 提供一个语言转换函数和对应的...
2020-04-04 18:57:00
407
原创 2019年终总结-我的收获
新的一年又过去了,又到了年度总结的时候,时光总是这么消无声息的溜走,永远不会等着你去惋惜和懊悔。工作收获私有部署经验收获本年度最大的收获来自随公司小伙伴一起出差去深圳奋斗3个月,从去年年末的需求调研,到真正的去部署实施,每个小伙伴们都付出了巨大的时间和精力,再一次感受到团队的凝聚力和战斗力。我们是最棒的,我为你们自豪。双方在合作过程中,感觉沟通清楚是最重要的。很多需求是需要协调的,从上到下...
2020-01-01 21:45:08
333
转载 Redis功能总结
redis 学习总结Redis 简介Redis 优势Redis 数据类型类型特性场景发布订阅事务持久化RDB 持久化AOF 持久化复制连接过程主从链哨兵分片Redis 简介Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key - value 数据库。Redis 与 其他 key - value 缓存产品有以下三个特点:Redis 支持数据持久化,可以将内存中的数据保存在...
2019-09-08 17:33:52
183
转载 缓存使用过程中的五种策略总结及优缺点组合分析
缓存使用过程中的五种策略总结及优缺点组合分析概述常用缓存策略第一种:Cache-Aside第二种:Read-Though Cache第三种:Write-Through Cache第四种 Write-Around第五种 Write-Back总结概述缓存是提高系统性能的最简单方法之一。相对而言,数据库(or NoSQL数据库)的速度比较慢,而速度却往往又是制胜的关键。如果使用得当,缓存可以减少相应...
2019-09-08 16:53:37
1652
原创 故障监控——服务器带宽告警
本篇将介绍带宽占用过多的处理方案。磁盘占用率linux下使用iftop -i eth0可以查看当前服务器某网卡流量占用情况。产生原因web网站比较占带宽的一般是些静态资源,css/js 之类的,如果是socket连接之类的,得看客户端连接数。排查步骤服务器还可以登录使用iftop -i eth0查看业务网卡流量情况根据靠前的ip地址,定位流量较高的机器检查具体机器上的端口...
2019-04-30 13:48:07
1023
原创 故障监控——磁盘使用率告警
本篇将介绍磁盘占用过多的处理方案。磁盘占用率linux下使用df -hl可以查看当前服务器使用情况。产生原因应用服务器上一般来说,持续写入,产生巨大的文件,一般是日志类文件,如果是db的服务器的话,要注意数据的增长率。排查步骤服务器还可以登录使用df -h查看服务器磁盘占用情况使用find / -size +100M |xargs ls -lh查找大文件列表找到相应的文件...
2019-03-13 22:44:34
2118
原创 故障排查——CPU使用率过高
本篇将介绍CPU使用率过高的处理方案。CPU使用率CPU使用率过高,跟内存和进程都有关系,例如复杂运算,一般都会导致CPU升高。使用top命令查看(按1可以查看多核的CPU使用情况):产生原因第三行 CPU 占用率根据类型有以下几种情况:(us) user:CPU 在低 nice 值(高优先级)用户态所占用的时间(nice<=0)。正常情况下只要服务器不是很闲,那么大部分的 C...
2019-03-10 12:08:08
7120
转载 故障排查——负载Load过高
相信管理过服务器的朋友们都收到过服务器负载过高的报警,今天我们一起来分析下关于服务器负载的那些事儿.一、load average首先,了解下平均负载: top命令中load average显示的是最近1分钟、5分钟和15分钟的系统平均负载。 系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。 如果一个进程满足以下条件则其就会位于运行...
2019-03-07 23:54:20
6532
转载 系统性能优化策略案例
XX银行网银系统是一套全新的对公业务渠道类系统,经过两年的建设,将逐步对外提供服务。该系统融合了原来多个对公渠道系统,并发量是以前多个系统之和,吞吐量要求将大幅上升。为了使广大对公客户使用系统时获得更快的响应时间体验,项目组对系统进行了持续的性能测试和优化。这一过程中,形成了一套针对新建系统进行性能测试和优化的方法论。该方法论包括测试环境准备、测试功能优先级、性能优化原则、常用性能指标及工具、...
2019-01-13 21:21:28
7217
原创 计算机应用层
计算机应用层解决的问题是为用户提供所需要的应用服务。主要介绍:HTTP请求、响应报文格式DNS名称空间和名称服务器分类DNS报文格式以及递归、迭代解析原理DHCP报文分类及格式DHCP服务IP地址目的自动分配原理SMTP和POP3命令及消息SMTP和POP3服务工作原理FTP两个工作模式及对应原理SNMPv1/v2c/v3主要PDU类型及消息格式参考:《深入理解计算机网...
2019-01-12 22:51:28
515
原创 计算机传输层
传输层和数据链路层作用都是建立数据传输的通道,不同的是传输层主要应用在广域网的网络应用中,而数据链路层主要应用在局域网中的数据传输中。传输层是整个广域网体系结构中的核心所在,因为他负责端到端的通信是面向网络通信层的第三层和面向信息处理的最高三层之间的中间一层,起到桥梁作用。主要知识点:OSI/RM体系结构传输连接建立、数据传输和传输连接释放各个阶段的主要TPDUOSI/RM体系结构传输层...
2019-01-12 22:41:48
768
原创 计算机网络层
网络层既要解决不同网络节点间通信的路由和协议识别问题,又要通过路由选择策略解决网络拥塞问题,尽可能的提高网络通信的可靠性。了解网络层的通信原理有助于解决网络故障。重点知识:报文交换与分组交换原理虚电路分组交换和数据报分组交换原理IPv4和IPv6报文格式IPv4数据报分段和重组原理ARP协议报文格式和地址解析原理免费APR、代理ARP和RARP工作原理ICMP报文格式和在Ping...
2019-01-07 23:46:20
421
原创 计算机数据链路层
设计数据链路层(Data Link Layer)的目的在于,在原始的、有差错的物理传输线路的基础上,采取差错检测、差错控制与流量控制等方法,讲有差错的物理线路该进程逻辑上无差错的数据链路,以便向它的上一层——网络层提供高质量的服务。重点内容包括:划分数据链路层的必要性帧封装和解封原理帧组装和帧同步原理奇偶校验法、CRC、反馈检测、空闲重发请求、连续重发请求等差错控制技术原理海明码的检...
2019-01-06 21:44:48
465
2
原创 2018年年终汇报
今天是圣诞节,晚上抽空写下年终总结。总的来说,今年收获还可以,一个是去年既定的公司目标和个人目标都有所突破,没有白白浪费时间。
2018-12-25 21:58:18
262
原创 计算机网络物理层
物理层是计算机网络体系中的最底层,负责为数据通信构建一条连通的,电气化的物理链路层或者传输通道。工作在物理层的设施包括:各种传输介质、集线器(Hub)、中继器、无线AP等。当然在各种网络设备接口上同样也体现了物理层上的功能,包括各种接口的外观、结构、电气和功能等特性。物理层的电气特性EIA/TIA 568A和EIA/TIA 568B标准直通双绞线和交叉双绞线在线序排列和应用方面的区别单模...
2018-12-19 23:08:31
1794
原创 (二)动态轮循调度算法实现
&amp;lt;?php/** * Class RoundCounter * 动态公平循环分配实现算法 * 原理: * 通过整体循环计数和成员循环计数实现轮循调度 * 数据结构: * * 权限人员集合 [1,2,3,4,5] * 本组的轮循次数 1 * 人员初始化轮循次数:0 * * 测试操作: * 1.人员状态变更 * 2.组内人员变更 (不公平) */clas...
2018-12-19 08:16:24
868
原创 (一)静态轮循调度算法实现
&amp;amp;amp;lt;?php/** * Class RoundRobin * 不公平循环分配实现算法 * 原理: * 通过取模实现轮循调度 * 数据结构: * * 权限人员集合 [1,2,3,4,5] * 初始轮循指针位置:4 * * 测试操作: * 1.人员状态变更 * 2.组内人员变更 (不公平) */class RoundRobin{ protected ...
2018-12-19 08:02:09
643
原创 计算机网络通信基础
本文仅简单介绍下网络通信的基础知识重点。主要涉及:基带传输与频带传输区别传输速率和信道带宽的计算奈斯准则、香农公式和采样定律 归零码与非归零码区别 AMI、CMI、HDB3、曼彻斯特码和查分曼特斯特码编码原理 调制与解调工作原理 各种2ASK、2FSK、2PSK的调制和解调方法工作原理数据通信系统基本模型数据通信是计算机与计算机或者终端之间的通信。它传送数据的目的不仅仅是为了...
2018-12-16 19:06:19
1124
原创 JS正则判定常见URL
JS正则URL最近在做聊天链接转卡片消息功能,需要先对URL合法性验证,以便减少不必要的抓取快照和摘要的请求。简单分享两个比较全面的正则表达式。URL定义摘自维基百科统一资源定位符(或称统一资源定位器/定位地址、URL地址等[1],英语:Uniform Resource Locator,常缩写为URL),有时也被俗称为网页地址(网址)。如同在网络上的门牌,是因特网上标准的资源的地址(Ad...
2018-12-16 11:50:24
8681
3
原创 关于私有部署的一些方案思考
大客户私有部署的SaaS方案思考概述近来公司需要给大客户做私有部署,由于客户分公司较多,业务广泛,集团希望共享客户资源,统一服务流程,共享监控数据和统计数据,需要我们这边深入考虑部署方案。 目前我们使用的SaaS架构是多租户中的第三种方案,即共享数据库,共享 Schema,共享数据表。如果你不了解神码是SaaS?请移步维基百科详细查阅(软件即服务-SaaS)。简单来说是实现了在多用户环境下...
2018-12-14 21:19:15
5865
1
原创 计算机网络体系结构
计算机网络体系主要有两种,一种是OSI/RM国际标准的七层结构,由低到高分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,另一种是TCP/IP的非标准的,但是应用最广泛的四层体系结构,由低到高依次是网络接口层、网际互联层、传输层和应用层。底层定义了如何进行端到端的数据传输,高层定义了终端系统的应用程序和用户彼此如何通信,即如何重建从发送方到接收方的应用程序数据流。主要分享下面几点...
2018-12-12 22:27:48
6460
原创 ES在IM组的搜索实践分享
ES在IM组的搜索实践分享前言—没什么用背景—代码写诗难点—重构之前的思考方案—车到山前必有路1. 多个相似问题合并之后加入基础表一个字段的方案2. 相似问题跟标准问题合并到一起,当成标准问题对待,类型区分意义—纸上得来终觉浅,绝知此事要躬行参考前言—没什么用项目用上es也有一阵子了,在统计那边不遗余力的贡献着自己的力量。IM组在去年制定的2018年度计划里,将es重构知识库存储及搜索纳入了计...
2018-11-14 00:22:44
617
原创 观察者模式
### 观察者模式当一个对象状态发生改变时,依赖他的对象全部会收到通知,并自动更新。场景:当一个事件发生后,要执行一连串更新操作。传统操作是在事件发生后的代码中直接处理逻辑。当新的逻辑增加时,代码变的难以维护。这种方式是耦合的,侵入式修改的。增加逻辑需要修改事件主体的代码。观察着实现了低耦合,非侵入式的通知和更新机制。UML类图图 9-1 观察者模式适用场景...
2018-07-21 11:14:55
172
原创 策略模式
策略模式一般来说,使用设计模式时,首先考虑“什么会导致重新设计”?然后要避免那些导致重新设计的因素。 设计模式的主要原则之一是封装变化的内容。大部分情况下,对于不同类别的请求,需要有不同的算法来实现。这时候策略模式就派上用场了。UML类图图 8-1 策略模式 关于策略和状态设计模式 类图上来看,策略模式和状态模式的参与者非常相似,场景的参与者都与一个接口有聚合关...
2018-07-21 11:12:20
153
原创 代理模式
代理模式是一种结构型设计模式。参与者主要有两个,即代理对象和真实对象。远程代理 代理对象在一个地址空间,而实际对象在另一个地址空间,此时代理就是远程的。除了使用远程代理做防火墙,远程代理还可以用于在线游戏平台。虚拟代理 虚拟代理可以缓存一个真实主题的有关信息,从而能延迟对这个真实主体的访问。有时候在真实对象处理登录数据之前,高安全性登录会使用一个虚拟代理来完成登录。保护代理 保护代...
2018-07-21 11:04:04
156
原创 状态设计模式
状态(state)设计模式是一种针对状态改变的有用的模式。游戏通常使用状态模式,因为游戏中的对象会频繁改变状态。状态模式的作用就是允许对象在状态改变时改变其行为。UML类图 图 6-1 状态模式类图使用场景游戏和模拟器经常使用状态模式来处理不同的状态。当目标对象状态需要频繁更新的时候适合使用状态设计模式。比如各种棋盘类游戏等。状态机是一个模型,其重点包括不同的状态、一个状...
2018-07-19 07:12:30
221
原创 模板方法模式
模板方法模式首先来说下反向控制结构(好莱坞原则),好莱坞原则指父类调用子类的操作,而子类不调用父类的操作,仅仅是实现具体方法。(比如面试完毕之后,面试官告诉你,先回去吧,有消息我们会通知你,不要给我打电话问,我们会给你电话的),模板方法是好莱坞原则的最佳实践之一。模板方法定义操作中算法的“骨架”,具体方法由子类实现。UML类图 图 5-1 模板方法类图使用场景如果已经...
2018-07-17 08:34:35
141
原创 装饰器模式
装饰器模式 作为一种结构型设计模式,装饰器模式是对一个已有结构增加“装饰”。对于适配器模式,为现有的结构增加的是一个适配器类,用来处理不兼容的接口。装饰器模式回想现有的对象增加对象。装饰器也称为包装器,Decorator参与者用具体组件包装Component参与者。使用场景一般来说,如果你想为现有对象增加新功能而不影响其他对象,就可以使用装饰器模式。一般来说主要适用于特殊需求...
2018-07-15 16:02:22
158
原创 适配器模式
适配器模式 设计模式有个重要的格言:组合优先于继承。一般来说组合要优先于继承,因为参与者之间的绑定更加宽松,在重用、结构和修改等方面有很多优点,这点与继承不同,继承具体类或者所继承的类中包含已经实现的方法时,存在一种紧密绑定的缺点。适用场景适配器在电气领域非常常见,两项转三项插座,usb转换头等等。适配器就是为了解决兼容问题出现的,你不必重新开发一套专用的功能。而是只要简单改...
2018-07-12 08:49:44
96
原创 关于设计模式那些事儿
关于设计模式那些事儿在开始学习设计模式基础之前,你需要具备的一些基础知识,如OOP思想、PHP开发经验和UML基础,这些有助于你快速理解和掌握设计模式。如果说之前的OOP,PHP开发技巧学的是一招一式的话,设计模式更像是一本武功秘籍,可以让你把之前学会的一招一式融会贯通,发挥更大的威力。开始之前,一起来看几个问题:为什么要采用面向对象编程? 这个问题几乎是面试必问的问题,是个...
2018-07-10 23:24:03
201
原创 原型设计模式
原型设计模式 原型设计模式主要使用克隆技术,复制原型实例来创建新对象。这里Client类是原型设计模式中不可缺少的一部分。客户通过Prototype接口创建一个具体原型的实例,Prototype接口中包含一个克隆方法。应用场景如果一个项目需要你创建某个远行对象的多个实例,就可以使用原型模式。例如克隆一个士兵,来增加同种兵种的数量。UML类图图 2 原型设计模式...
2018-07-10 08:43:08
172
原创 工厂模式
工厂方法模式 作为一种创建型设计模式,工厂方法就是要创建“某种东西”。对于工厂模式,要创建的东西和创建它的工厂类之间不存在绑定。为了保持松耦合,客户一般会通过一个工厂发出请求,工厂去创建所需求的产品。应用场景:如果实例化的对象的子类可能变化,就要使用工厂方法模式。每个子类相当于工厂的一条生产线,Client需要什么样的产品,就找工厂下对应产品的订单,工厂安排不同的生产线去生产...
2018-07-08 11:21:17
175
转载 FastCGI模式下运行php7
众所周知,常用的跟php搭配的web server 有两个,apache 和nginx,编译完server之后需要配置下才可以正常解析php文件。下面我们来看下两种服务器是如何解析php文件。Nginx一、主流的nginx+php的运行原理如下:nginx的worker进程直接管理每一个请求到nginx的网络请求。对于php而言,由于在整个网络请求的过程中php是一个cgi程序的角...
2018-06-17 18:25:14
2930
原创 socket带宽占用过高?
最近部署服务器集群的时候,查看了下原来单节点的配置,4核8G+8M带宽,跟领导申请是否需要保持配置,领导让根据实际情况调整下,尤其带宽部分,带宽太贵了主要是。登录服务器之后,top下发现,cpu、内存占用并不高,iftop -i eth0,之后发现带宽占用居然有5M,检查在线人数发现,并没有太多。这个流量有4M来自某个ip,登录嫌疑ip服务器,检查端口占用情况:netstat -antp ...
2018-06-16 19:42:07
3542
2
原创 socket 莫名其妙的断开连接?
之前有客户反馈,经常会收到客户端断开连接的提醒。影响聊天,希望能查下问题。开始我以为是用户网络波动,导致的连接断开,后来同事跟我反馈,网络正常的时候也会出现断开连接的现象,希望我查下服务器是否配置了什么,会话保持时长之类的参数。问题重现这个问题在c++端比较容易重现,在web端偶现,移动端却没发生过。难道是移动端一直没用户使用,所以他们也不知道?额,不能这样想,不然容易被打。一定是有人用的...
2018-06-16 19:04:53
30721
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人