- 博客(27)
- 收藏
- 关注
原创 基于需求分析模型来结构化剖析 IM 系统
普适的需求分析模型,首先区分【功能需求】和【非功能需求】,再从【功能需求】中分析出【基础功能需求】和【扩展功能需求】,将一团需求点拆分成同类要素,化繁为简。
2024-11-01 21:39:01 750
原创 分布式存储系统学习(1)--概述
1 在分布式环境下,计算机之间的函数调用(RPC)的返回时间通常是毫秒或亚毫秒级(0.1-1.0毫秒),所以分布式环境下的RPC通常采用异步调用方式。2 常见存储引擎:hash B-Tree LSM-Tree 常见数据模型:文件 关系 表格 K-V3 分布式系统涉及数据分布、复制、一致性、容错、可扩展性等分布式技术。4 分布式存储系统要解决的问题: (1)数据
2017-02-14 13:48:11 981
原创 关于全球即时通讯系统架构的点滴思考
全球化的IM系统,用户量大,并发访问高,这样的系统如何架构?笔者刚刚结束相关产品的研发工作,做点滴总结。一、 全球IM系统的基本要求 1 首先即时性要好,在海量用户高并发访问时,减少用户消息到达的延迟,要求服务端计算要快; 2 高可用性和可靠性,在拥有如此海量用户的系统,势必采用集群化部署,机器故障发生率高,在机器发生故障时,要求仍可以正常提供服务; 3 伸缩性好
2017-02-14 11:41:42 1589
转载 机器学习算法工程师需要掌握的技能与要踩的坑
1. 前言本来这篇标题我想的是算法工程师的技能,但是我觉得要是加上机器学习在标题上,估计点的人会多一点,所以标题成这样了,呵呵,而且被搜索引擎收录的时候多了一个时下的热门词,估计曝光也会更多点。不过放心,文章没有偏题,我们来说正经的。今天就说说机器学习这个最近两年计算机领域最火的话题,这不是一篇机器学习的技术文章,只是告诉大家机器学习里面的坑实在是太多,而且很多还没入门或者刚刚入门
2016-09-18 19:19:45 808 3
原创 服务端日志应该记录些啥
日志,类似于飞机或轮船上的“黑匣子”,在出现问题时应该提供给我们证据和解决问题的线索,那么具体而言日志应该记录些啥呢?日志应该如何分类和规划,以满足我们开发者的需求呢? 服务端的日志应该根据客户端的行为或客户端看到的提示来划分:第一类日志:运行日志 适用情况:客户端发出请求后,服务端进行了正常处理,并最后将结果响应给客户端,比如“操作成功”。记录内容:运
2016-06-23 14:08:59 4185
原创 数据库基础知识
1 消除重复记录的sql语句 delete s from Student s where s.rowID > (select min(rowID) from Student t where t.number = s.number)
2016-06-21 13:17:13 388
原创 golang学习———sync.Once(2)
在开发时,我们经常碰到这样的应用场景:只需要执行或初始化一次,例如,单例模式或是系统开启时的初始化。一般的语言通用做法是利用互斥操作设置标志变量,通过判断标志变量的值决定是否执行相关代码;golang语言的实现非常简单,只需一行代码,如下: import "sync"var once sync.Oncefunc init() { //初始化代码}
2016-06-21 10:57:51 2572
原创 几个有意思的小程序
1 共有x个人,每6人一个房间,共多少房间? (x + 5)/62 让 x在0--9之间循环变化 int x=0; while(true) {x=(x+1)%10;}
2016-06-20 12:59:34 651
原创 golang学习———方法别名(1)
前言:本系列文章记录笔者使用golang开发过程中碰到的稍微有点含量的知识点,供大家分享,欢迎拍砖。 “方法别名”,似乎不太准确,延续C语言中的typedef叫法,在golang中表述如下; type MyFunc func(string) string用法1: 为相同的方法签名提供统一的访问入口 举例,使用golang编写一个http服务器,提供学生管理的基
2016-06-20 11:14:22 4352
原创 go语言与node.js的点滴思考
node.js基于V8引擎和JavaScript语言通过非阻塞I/O和事件驱动实现了一个非常纯正的异步平台,在处理I/O密集型任务时表现出了优秀的性能。但node.js具有两个非常明显的缺陷:一是单线程运行,不能很好的利用多核;二是异步编程,对业务逻辑的表现非常不自然。 go语言通过封装的协程的概念很好的解决了node.js的上述两个问题:首先go语言中的协程通过系统线程的方式并
2016-06-13 18:04:08 2474
原创 关于移动即时通讯协议的点滴思考
一 为什么需要优化应用层通讯协议? 因为存在数据丢包现象,用户体验不好!二 为什么会有丢包发生? 应用层协议基于TCP,TCP协议本身提供可靠的端到端的数据传输,但前提是网络良好;在弱网络环境中,TCP连接会经常中断(防火墙掐断、网络无信号心跳包不到达、终端网络切换、终端故障......),而TCP连接两端对中断感知较迟,发现中断后,TCP缓冲区中的数据会被清空,即发生丢
2016-06-13 12:25:01 903 1
原创 关于mqtt不适合移动聊天消息推送的个人见解
很多网站和文章介绍mqtt特性,因其头部很小(2Byte),适合弱网络环境的数据传输,但在聊天信息过于密集的场景下,其会表现出消息延迟的现象,原因分析如下:mqtt 协议支持三种QoS,以Qos=2(保证消息可达)为例介绍,服务端一条消息发送到客户端需要交互4次:第一次: server发送 publish到client;第二次: client发送pubrec到server;第三
2016-06-12 18:09:22 13733 1
原创 Java 基础知识
1 一次编译,到处运行 Java字节码解释程序(JVM, Java CPU) Java是一种编程语言(Java源程序)、是一套开发工具(Java编译程序)、是一个运行环境(Java字节码解释程序)2 JDK 指开发工具(Javac及基础核心类)和运行环境(Java及基础核心类)3 环境变量指操作系统中的变量, 在windows中的环境变量相关操作如下: 查看环境
2016-06-12 12:51:37 370
原创 关于Authorware和文本格式
1 Authorware能够直接识别写字板格式文件(rtf);2 txt 文本是纯ASCII码文本文件,纯文本文件是无格式的;3 所有的文字编辑软件和多媒体集成工具软件均可直接调用txt文本的编辑和存储工具。
2016-06-08 12:42:57 794
转载 什么对人生最重要
对人生的影响最大的,不是你人生的最初十几年生活在什么样的地方,而是你形成了什么样的思维方式,特别是你的思维方式是否具备一定的开发度、灵活性、通透性。 几乎所有人都以为,学历和名校意味着知识,其实不是,它们更多的意味着思维方式和学习能力。一个博士比一个本科生拥有的广义上的知识多不了多少。普通学校的博士多是那个专业领域的一点点知识,名校的博士则会多出“如何思考”,“如何学习”。
2016-06-08 11:32:46 349
原创 网络编程中的TCP协议的几点总结
在基于TCP协议的网络通讯中,经常会发生丢包现象,TCP协议不是可靠传输的吗?在网上经常听到大牛在说,可靠的TCP其实并不可靠......是呀,既然TCP是可靠的,为什么还要在应用层增加接收回执机制或是心跳机制呢?经过几天的思考、调研、讨论后我总结了以下几点:
2016-06-03 13:21:43 415
转载 大型网站构架演变
架构演变第一步:物理分离webserver和数据库最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统的压力越来越高,响应速度越来越慢,而这个时候比较明显的是数据库和应用互相影响,应用出问题了
2015-08-21 14:35:18 439
转载 大型网站动态应用系统架构
动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。大型动态应用系统平台主要是针对于大流量、高并发网站建立的底层系统架构。大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用
2015-08-21 14:33:23 492
转载 QQ百万级服务器架构
QQ游戏于前几日终于突破了百万人同时在线的关口,向着更为远大的目标迈进,这让其它众多传统的棋牌休闲游戏平台黯然失色,相比之下,联众似乎已经根本不是QQ的对手,因为QQ除了这100万的游戏在线人数外,它还拥有3亿多的注册量(当然很多是重复注册的)以及QQ聊天软件900万的同时在线率,我们已经可以预见未来由QQ构建起来的强大棋牌休闲游戏帝国。服务器程序,其可承受的同时连接数目是有理论峰值的,通
2015-08-21 14:30:59 843
转载 在JavaScript中实现命名空间
在引入命名空间之前,一个令开发人员头疼的问题就是如何防止函数名/类名和其他人的冲突,在一个公司内部项目组之间可以通过命名预定(比如加前缀等)解决这个问题,但是把视线放到整个软件开发领域,在当今协作开发相当盛行的时代,这个问题却依然存在。在使用多个第三方框架或类库的时候,你唯一能作的就是祈祷它们的命名不要冲突,如果真正发生这种灾难的话,你唯一能作的就是放弃其中一个(注:可能是我孤陋寡闻,呵呵)。命名
2015-06-30 09:58:25 659
转载 程序员职业规划发展路线图
锐哥准备为大家烹饪红烧鲤鱼,小丫主动要求跟锐哥学习烧鱼,这也使小蔡和大熊非常感兴趣变得积极主动。锐哥首先要求他们把配料准备好,小丫又进行配料准备任务分工,没有的配料分头到超市购买。用料如下:鲤鱼(一斤半到两斤的鱼最好)、蒜头两头整的、姜片5~6片、小香葱3根、小红辣椒10个左右,分两段切(超市有的卖盒装的),辣豆豉(可用老干妈代替)1大匙、豆瓣酱2大匙、盐少许、鸡精1小匙、料酒1匙、清水2
2015-06-11 15:43:04 838
转载 Socket.IO进阶
在上一篇博文Socket.IO中,我简要介绍了Socket.IO的基本使用方法并创建了一个简单的聊天室DEMO。本篇在入门篇的基础上,继续探讨Socket.IO的进阶用法。本篇将从配置、房间、事件等方面入手,介绍一些Socket.IO中实用的API和注意事项。1. 配置Socket.IO提供了4个配置的API:io.configure, io.set, io.enable, i
2015-05-22 13:36:29 429
原创 JavaScript中的prototype
万事万物皆为对象,笔者将与prototype有关的对象分为:函数对象、原型对象和实例对象。 每一个函数对象都有一个prototype属性,每一个原型对象和实例对象都有一个_proto_属性(chrome)。 函数对象的prototpe属性值为原型对象(内存块),原型对象的constructor属性值为函数对象,另外原型对象的_proto_属性值为其继承的原型对象。 如果希望
2015-04-09 12:03:42 313
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人