自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

转载 消息队列简单介绍

模型ZeroMQ 把通讯的需求看成四类。其中一类是一对一结对通讯,用来支持传统的 TCP socket 模型,但并不推荐使用。常用的通讯模式只有三类。 请求回应模型。由请求端发起请求,并等待回应端回应请求。从请求端来看,一定是一对对收发配对的;反之,在回应端一定是发收对。请求端和回应端都可以是 1:N 的模型。通常把 1 认为是 server ,N 认为是 Client 。ZeroMQ ...

2017-11-30 20:24:06 253

转载 粘包问题

1 什么是粘包现象  TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。2 为什么出现粘包现象  (1)发送方原因  我们知道,TCP默认会使用Nagle算法。而Nagle算法主要做两件事:1)只有上一个分组得到确认,才会发送下一个分组;2)收集多个小分组,在一个确认到来时一起发送。  所以,正是Nagle算法造成了...

2017-11-27 16:49:38 277

转载 bitmap

业务需求对技术的要求是永无止境的。我们需要更好的工具:更快速的分析,一次任务就需要个把小时,甚至需要一天,数据的产出,无法支持我们业务的快速调整。更灵活的分析工具,应该比Oracle或者IBM的BI系统更好,我们需要有多维交叉的计算能力,而不只是简单的几种统计数字。更轻量级的系统,动辄几十台服务器组成的Hadoop集群,我们真是无法负担啊,成本太高昂了。二、现有技术分析a) 硬币的

2017-11-21 21:25:50 539

转载 HyperLogLog Counting

在前一篇文章中,我们了解了LogLog Counting。LLC算法的空间复杂度为O(log2(log2(Nmax)))O(log2(log2(Nmax))),并且具有较高的精度,因此非常适合用于大数据场景的基数估计。不过LLC也有自己的问题,就是当基数不太大时,估计值的误差会比较大。这主要是因为当基数不太大时,可能存在一些空桶,这些空桶的ρmaxρmax为0。由于LLC的估计值依赖于各桶ρmax

2017-11-18 17:49:11 362

转载 LogLog Counting

上一篇文章介绍的Linear Counting算法相较于直接映射bitmap的方法能大大节省内存(大约只需后者1/10的内存),但毕竟只是一个常系数级的降低,空间复杂度仍然为O(Nmax)O(Nmax)。而本文要介绍的LogLog Counting却只有O(log2(log2(Nmax)))O(log2(log2(Nmax)))。例如,假设基数的上限为1亿,原始bitmap方法需要12.5M内

2017-11-18 17:47:41 883

转载 Linear Counting算法

在上一篇文章中,我们知道传统的精确基数计数算法在数据量大时会存在一定瓶颈,瓶颈主要来自于数据结构合并和内存使用两个方面。因此出现了很多基数估计的概率算法,这些算法虽然计算出的结果不是精确的,但误差可控,重要的是这些算法所使用的数据结构易于合并,同时比传统方法大大节省内存。在这一篇文章中,我们讨论Linear Counting算法。简介Linear Counting(以下简称

2017-11-18 17:47:01 1050

转载 基数

前几天看了bloom filter,最近又不小心看了有文章提到hyperloglog,于是做了一点searchhttp://blog.csdn.net/heiyeshuwu/article/details/41248379 高压缩空间占用的 Hyper LogLog 算法http://blog.codinglabs.org/articles/algo

2017-11-18 17:45:15 5046

转载 B树

从B 树、B+ 树、B* 树谈到R 树 作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。出处:http://blog.csdn.net/v_JULY_v 。 第一节、B树、B+树、B*

2017-11-18 17:26:22 244

转载 位域

有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 一、位域的定义和位域变量的说明位域定义与结

2017-11-16 14:44:50 263

转载 behaviac

1 项目概况behaviac是游戏AI的开发框架组件,也是游戏原型的快速设计工具。支持全平台,适用于客户端和服务器,助力游戏快速迭代开发。编辑器可以运行在PC上,操作方便直观可靠,支持实时和离线调试;编辑器可以导出xml/bson等多种格式,更可以导出C++/C#源码,提供最高效率。运行时支持全平台,有C++/C#两个版本,原生支持Unity。已被多款知名游戏及更多其他预研项目使用。所有代

2017-11-15 16:07:30 1661

转载 Clumsy

笔者最近因为需要在局域网内模拟一个实际情况(即存在丢包、延迟等情况)。网上搜了很多工具,大多基于linux。后来好不容易在网上搜索到一款2014年出现的网络模拟工具----Clumsy。(参考了http://jagt.github.io/clumsy/)Clumsy是基于C语言开发的一款开源网络模拟工具。它能在Windows平台下人工造成不稳定的网络状态,应用它

2017-11-15 16:04:52 5528 1

转载 哈希表

我们知道,通过对数组进行直接寻址(Direct Addressing),可以在 O(1) 时间内访问数组中的任意元素。所以,如果存储空间允许,可以提供一个数组,为每个可能的关键字保留一个位置,就可以应用直接寻址技术。哈希表(Hash Table)是普通数组概念的推广。当实际存储的的关键字数比可能的关键字总数较小时,这时采用哈希表就会比使用直接数组寻址更为有效。因为哈希表通常采用的数组尺寸与

2017-11-15 10:45:02 241

转载 跳跃表

SkipList在leveldb以及lucence中都广为使用,是比较高效的数据结构。由于它的代码以及原理实现的简单性,更为人们所接受。我们首先看看SkipList的定义,为什么叫跳跃表?“     Skip lists  are data structures  that use probabilistic  balancing rather  than  strictly  enfor

2017-11-14 17:45:43 511

转载 mysql缓冲命中

缓冲池是一块内存区域,在对数据库进行读取操作时,首先将数据从磁盘中读取到缓冲池中,那缓冲池命中率则是客户端请求的数据在直接在缓冲池获取的比例。想象下如果缓冲池命中率很低,大部分数据都要从磁盘读取,可想而知一个数据库的性能。作为一个mysql OLTP系统,缓冲命中率最好在百分99以上。下面介绍几种mysql查看缓冲命中率的方法:方法一:mysql> show engine innodb s

2017-11-09 11:43:21 379

转载 几种常用内存管理底层介绍

需求系统的物理内存是有限的,而对内存的需求是变化的, 程序的动态性越强,内存管理就越重要,选择合适的内存管理算法会带来明显的性能提升。比如nginx, 它在每个连接accept后会malloc一块内存,作为整个连接生命周期内的内存池。 当HTTP请求到达的时候,又会malloc一块当前请求阶段的内存池, 因此对malloc的分配速度有一定的依赖关系。(而apache的内存池是有

2017-11-07 18:13:49 5984

转载 redis源码阅读步骤

Redis简介redis全称REmote DIctionary Server,是一个由Salvatore Sanfilippo写的高性能key-value存储系统,其完全开源免费,遵守BSD协议。Redis与其他key-value缓存产品(如memcache)有以下几个特点。 + Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 + Redis不...

2017-11-06 19:46:25 5005

原创 cpu cache

进程系统资源的使用原理 大部分进程通过glibc申请使用内存,但是glibc也是一个应用程序库,它最终也是要调用操作系统的内存管理接口来使用内存。大部分情况下,glibc对用户和操作系统是透明的,所以直接观察操作系统记录的进程对内存的使用情况有很大的帮助。但是glibc自己的实现也是有问题的,所以太特殊情况下追究进程的内存使用也要考虑glibc的因素。其他操作系统资源使用情

2017-11-06 19:44:18 711

转载 index和key

查看索引mysql> show index from tblname;mysql> show keys from tblname;· Table表的名称。· Non_unique如果索引不能包括重复词,则为0。如果可以,则为1。· Key_name索引的名称。· Seq_in_index索引中的列序列号,从1开始。· Column_name列名称。· Collation列以什么方式存储...

2017-11-06 16:23:36 299

转载 protobuf简单使用

一、介绍        首先,protobuf是一个开源项目,而且是后台很硬的开源项目。网上现有的大部分(至少80%)开源项目,要么是某人单干、要么是几个闲杂人等合伙搞。而protobuf则不然,它是 鼎鼎大名的Google公司开发出来,并且在Google内部久经考验的一个东东。由此可见,它的作者绝非一般闲杂人等可比。   那这个听起来牛X的东东到底有啥用处捏?简单地说,这个东东干的事儿其实和...

2017-11-04 18:04:52 241

原创 c++ makefile编写

一、gcc命令从目的上看,gcc命令和makefile的功能是一样,即是把源文件编译后生成可执行文件或.o二进制文件。gcc命令中有许多的额外的参数,本文仅介绍以下几种最简单和常用的方法:有helloworld.c文件如下:#include <stdio.h>int main(){ printf("helloworld!\n"); ...

2017-11-04 15:02:34 1522

转载 tinyxml和rapidxml

TinyXML有两个不爽的地方,一是它的接口使用FILE*,另外一个是它对wchar_t不能很好的支持。前阵子看Boost库的更新中多了一个PropertyTree,他在处理XML时用到了另外一个小的库--RapidXML。既然间接的是Boost库的一部分,所以是值得一试的。于是找到其官方网站(http://rapidxml.sourceforge.net/ )研究了一番。一看之下,甚是满意,也推...

2017-11-03 15:32:45 613

转载 log4cpp使用

Log4cpp是一个开源的C++类库,它提供了在C++程序中使用日志和跟踪调试的功能。使用log4cpp,可以很便利地将日志或者跟踪调试信息写入字符流、内存字符串队列、文件、回滚文件、调试器、Windows日志、本地syslog和远程syslog服务器中。1、Log4cpp简介  Log4cpp是个基于LGPL的开源项目,移植自Java的日志处理跟踪项目log4j,并保持了API上

2017-11-03 14:13:19 317

原创 游戏一

实时软件应用程序基础模块:数据采集模块显示/计算模块交互模块游戏是受时间限制的,要按指定节奏显示信息,实现无缝交互;我们只能在指定时间段内做硬件允许做的工作量;程序简化:更新和绘制两部分;方案一,更新和绘制在一个循环内,如果更新复杂度发生变化,整体都要调整,性能也容易变差,并且,绘制频率更加不固定;更新阶段,如果人工智能每秒思考的次数

2017-11-01 21:03:57 183

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除