《Redis深度历险》Chapter 1 Learn Note

1.7 布隆过滤器其数据结构包含一个大型的位数组和若干个不一样的无偏hash函数。所谓无偏即能够把元素的hash值计算得比较均匀,让元素被映射到位数组中的位置比较随记。输入预计元素数量:n错误率:输出位数组长度 lhash函数的最佳数量 k = 0.7 * (l / nf = 0.6185 ^ (l / n空间占用估计http://krisives.github.io/bloom-calculator误判率f = (1 - 0.5^t) * k # k 是 hash函数的最佳数量应用爬虫重复URL过滤NoSQL数据库领域,降低磁盘IO垃圾邮箱过滤1.9 漏斗限流维护漏斗属性:漏斗容量、漏嘴流水速率、漏斗剩余容量与上一次漏水时间。每次灌水(请求)前,进行计算给漏斗腾出空间。能够腾出多少空间根据时间过去了多久(上一次漏水时间)以及流水速率有关。然后,判断当前请求是否具有足够空间。如果... Read More

《MySQL High Availability》Chapter 1&3 Learn Note

Part I. High Availability and ScalabilitOne of the database features that supports both high availability and scalability in an application is replication.Replication is used to create redundancy in the database layer as well as to make copies of the databases available for scaling the reads.Part I covers how you can use replication to ensure high availability and how you can scale your system.Chapter 1 Introductio... Read More

[维护中]基于文本图形(ncurses)的文本搜索工具 ncgrep

源码下载http://github.com/ncgrep/ncgre背景作为一个VIM党,日常工作开发中,会经常利用grep进行关键词搜索,以快速定位到文件。如图但是,这一过程会有两个效率问题展示的结果无法进行直接交互,需要手动粘贴文件路径在打开展示的结果没有进行分组,直接将结果罗列出来可想而知,当搜索的内容结果集比较大时,可谓痛苦。那可以用Vim中的Ag插件进行搜索啊?是的,但他只解决了交互的问题。仍然没有解决结果集分组分类的痛点。思路在使用Eclipse等IDE进行文本全局搜索时,在加载效果(懒加载)可视化方面有很大优势。那么,期望基于linux系统,提供一个类似的搜索工具。优点(功能)如下结果集可以直接交互结果集可以进行分组展示结果集通过“懒加载”方式装载基于文本图形界面的类库是什么呢?网上大致了解了下VIM、htop类似的软件,其都是基于一个叫ncurses的类库实现的。项目... Read More

[开发中]基于树莓派的智能家居项目的设想与实现 Hestia

注:本文内容的准确性仅限于笔者写该篇文章时的情况,不保证后续与实际项目代码一致。实时内容还请关注Github项目托管页面:https://github.com/GenialX/hestia-serve树莓派,一个五脏俱全,集几乎所有功能于一身的微型计算器。大约一两月之前,屈屈300百大洋收入囊中。入手之后,出于对自动化的兴趣,慢慢地研究如何实现室内家电的智能自动化控制。在断断续续地,不断地摸索之后,有了若干想实现的点子,迄今为止也有所实践。点子利用红外线传感器智能控制空调、电视等基于红外遥控的家电设备;智能控制家中的灯泡设备(部分基于网络协议);方案硬件首先,除了树莓派之外,还需要如下硬件移动端设备 Android手机一台(iPhone手机当然也没问题,但是本案例中只基于Android手机做了实现外网可直接访问的服务器一台(本案例使用阿里云服务器基于树莓派(点我购买)的传感器若干基于光敏电阻的光线传感器一个... Read More

深入MySQL用户自定义变量:使用详解及其使用场景案例

一、前言在前段工作中,曾几次收到超级话题积分漏记的用户反馈。通过源码的阅读分析后,发现问题出在高并发分布式场景下的计数器上。计数器的值会影响用户当前行为所获得积分的大小。比如,当用户在某超级话题下连续第n(n即计数器的值)次进行转发帖子时,将会获得与n相关的分数。然而,在第一次改进后问题依然存在。所以,这次在之前的基础上,通过使用MySQL变量的途径来解决该问题。二、到底MySQL的变量分哪几类?MySQL变量一共分为两大类:用户自定义变量和系统变量。如下用户自定义变量局部变量会话变量系统变量会话变量全局变量本文涉及的内容为用户自定义会话变量,若对其他分类无感,请点击这里。PS:用户定义的会话变量和系统定义的会话变量有什么区别?局部变量局部变量一般用于SQL的语句块中,比如存储过程中的begin和end语句块。其作用域仅限于该语句块内。生命周期也仅限于该存储过程的调用期间。[code lang="sql"... Read More

高并发、分布式数据库场景下需要注意的 UPDATE SQL 写法

业务模块超级话题签到积分具体场景更新签到积分行为表integration_record - 每次产生积分行为的记录表。即每当用户产生积分行为(如:在超级话题内进行签到、转发和回复等行为),就会增加一条integration_record表的记录。表明该用户在该超级话题下通过哪些行为产生了多少积分增量。integration - 每个用户的总积分表。即在每次写入一条integration_record记录后,会将积分增量累计加入到该表的总积分字段中。表明目前为止,该用户在该超级话题下通过积分行为一共获取的积分总数。表的细节就不给出了(也没必要)。这两张表都以话题ID(topic_id)和用户ID(uid_id)进行联合索引。具体问题在某些情况下,某个用户所在某个话题下的所有integration_record记录的积分总和小于该用户在该话题下的integration表记录的总积分。异常日志通... Read More

Memcache 内存管理之查看所有 key 方法

今天在做一个Memcache的session测试,但是在测试的过程中,发现Memcache没有一个比较简单的方法可以直接象redis那样keys *列出所有的Session key,并根据key get对应的session内容,于是,我开始查找资料,翻出来的大部分是一些memcache常用命令等,但是对列出key的办法,讲解却不多,于是来到google,找到了一个国外的资料具体的内容我套用我的测试环境中,操作如下1. cmd上登录memcach telnet 10.73.13.155 1722. 列出所有keySTATS itemSTAT items:1:number 4143STAT items:1:age 3651STAT items:1:evicted 2STAT items:1:evicted_nonzero 2STAT items:1:evicted_time 2... Read More

高并发场景下的缓存使用误区

十一聚会,某谈及人生理想。我要的是“地位,身份和爱情!”,其实就是金钱,面子和美女。O.正文9月份,连续两天(AB两天)线上出现业务故障,redis监控曲线瞬间上涨。业务场景:一千万UV / 日redis监控曲线(修改图片好麻烦,曲线意会下吧~)redis日志业务代码(self::$_debug) ? Helper_Log::writeApplog('newFeatureOfMixedFeed', "初始化配比数据.") : null;if(self::$_redisDb == null) self::$_redisDb = new Comm_Redisdb(self::REDIS_SERVER);/** 判断是否有缓存数据 **$total = self::$_redisDb->lSize(Conf_Sailmixfeed::REDIS_CONF_RATIO_KEY, ... Read More

SQL 优化分享 还有那大部门 TB

今天例会中,作为新同学,向大家分享了自己在工作中关于SQL优化的分享(长微博)。尽管只是皮毛,但不积跬步无以至千里,不积小流无以成江海。下面给出PPT的内容。分析浅显,大家海涵! ^.PP问题其中,有同学指出:“如果复合索引中的state字段为0的概率大于50%,可以考虑不建立state的索引;否则,反之”。天天T前段时间,我们大部门TB啦!猜猜这是哪里?走到这里才发现,这不是跑男第二季中某一集的场地么。难怪这一路都觉得似曾相识 Read More

MySQL 数据库优化笔记

视频地址:http://www.imooc.com/video/368可以从以下几个方面进行优化硬件系统配置数据表结构SQL语句和索引一般来说,上述方式的实现成本(自上而下)由高到低,而效果(自上而下)由低到高。使用慢查询日志使用系统的慢查询日子来监控有问题的SQL。show variables like 'slow_query_log'set global slow_query_log_file = '/home/mysql/log/slow_query_log.log'set global log_queries_no_using_indexes = onset global long_query_time = 慢查询分析工具pt-query-diges如何发现有问题的SQ查询次数多,且占用时间长的(通常为pt-query-digest分析中前几个SQL);IO大得SQL(注意... Read More