11 liberalmanl

尚未进行身份认证

计算机科班出身。毕业后进入腾讯,有4年后台开发经验,从参与到设计内部使用的游戏消息分发平台,支撑200多款业务,日消息量级过亿。目前在北京创业中,负责带领技术团队。

等级
TA的排名 4w+

程序实现黎曼和(定积分)

想象一下,如果你手里有一块形状不规则的土地(实际上我没有,穷…),要测量它的面积,怎么办呢?拿尺子量,不知如何下手,突然感觉高中几何解决不了,得祭出本科的高等数学才行。所以,惯例我们应该发扬拿来主义,比如 “国际上,如何如何…”:一个叫黎曼的德国数学家(Bernhard Riemann, 1826-1866),他想了个办法:将这不规则图形切成一条条的小长条儿,然后将这个长条近似的看成一个矩形,...

2019-11-02 15:27:56

使用golang实现令牌桶限流和时间窗口控制

这篇文章不是讲令牌桶算法原理,关于原理,请参考 https://blog.csdn.net/lzw_2006/article/details/51768935我这里只是使用golang语言来实现令牌桶算法,以及时间窗口限流。#### 针对接口进行并发控制如果担心接口某个时刻并发量过大了,可以细粒度地限制每个接口的 总并发/请求数以下代码golang实现```gopackage...

2019-05-23 15:54:55

consul 配置/KV/ACL

[TOCM]Consul版本 v0.9.31. 配置1.1 CLI配置Consul Agent有各种各样的配置项可以在命令行或者配置文件进行定义,所有的配置项都是可选择的,当加载配置文件的时候,Consul从配置文件或者配置目录加载配置。后面定义的配置会合并前面定义的配置,但是大多数情况下,合并的意思是后面定义的配置会覆盖前面定义的配置,但是有些情况,例如event句柄,合并仅仅是添加到前面定义的句

2017-11-01 11:43:34

使用nutch搭建类似百度/谷歌的搜索引擎

Nutch是基于Lucene实现的搜索引擎。包括全文搜索和Web爬虫。Lucene为Nutch提供了文本索引和搜索的API。1.有数据源,需要为这些数据提供一个搜索页面。最好的方式是直接从数据库中取出数据并用Lucene API 建立索引,因为你不需要从别的网站抓取数据。 2.没有本地数据源,或者数据源非常分散的情况下,就是需要抓别人的网站,则使用Nutch。1.安装1.安装tomcat[root

2017-10-21 11:09:57

微服务注册发现集群搭建——Registrator + Consul + Consul-template + nginx

在互联网应用领域,服务的动态性需求十分常见,这就对服务的自动发现和可动态扩展提出了很高的要求。微服务系统动辄上万个服务,而且还要动态伸缩。以人工写好的IP、Port 硬编码脚本的方式无法做到大规模自动化,稍微多点服务运维就傻了。微服务必然要做到ip和port自动分配,减少人工干预。我们需要让每个服务能动态的创建地址,同时调用方要能感知地址变化。这就需要有一个服务注册与发现的机制,这篇文件就是讨论如何

2017-07-26 18:54:34

面试圣经(一)

小桔科技 四面面试官是个部门经理,比较和蔼,说话爱笑,比别的公司的总监层面的人严肃的面孔好多了,也让面试者轻松很多。总结下他问的诸多问题以及我的解法,先上几个问题 1有数字1、2、3….直到n+2的递增数列,每个数都是唯一不重复的,以1的步长增长的。去掉其中两个数,然后打乱次序,找出被去掉的数到底是哪两个?(n假设是10w,空间复杂度要求O(1))答:方法1: 这是我的回答 设这些数保存在数组A

2017-05-20 15:40:24

nginx启用HSTS以支持从http到https不通过服务端而自动跳转

最近对我的个人网站启用了Https,所以想设置http默认自动转https访问的功能,但又不想总让服务端做转发操作,那样浪费资源。那么有什么好的办法呢?302跳转通常将 HTTP 请求 302 跳转到 HTTPS,但有问题:1.不安全,302 跳转会暴露用户访问站点,易被劫持。2.多增加一次访问,使得客户端响应速度慢。302 跳转需要一个 RTT(The role of packet loss an

2017-05-18 00:39:04

开发过程中遇到的各种问题汇总

TLS/SSL/HTTPS1.我的个人网站https改造过程中,遇到问题 Mixed Content: The page at ‘https://www.liberalman.cn/login’ was loaded over HTTPS, but requested an insecure stylesheet ‘http://o9gqjr7iy.bkt.clouddn.com/libertyb

2017-05-13 20:53:26

对象池

一个广为人知但鲜有人用的技巧:对象池对象池是一种设计模式,它会预先初始化一组可重用的实体,而不是按需销毁然后重建。在使用套接字描述符时,人们通常会将其池化。实际上,套接字描述符的数量通常比较少(最多上千个),之所以要采用池的方式,是因为它们的初始化成本非常高。而在最近发表的一篇博文中,ClojureWerkz核心成员Alex Petrov探讨了另一种对象池应用场景,即将大量的存活期短且初始化成本低的

2017-05-13 20:48:51

基于AWS S3协议搭建个人云存储服务

相信风靡全球的亚马逊 AWS S3 的存储云服务大家已经耳熟能详了,如何自己搭建一个私有的S3存储云服务呢?Minio 实现了 AWS S3 存储协议,开源并且用Go语言开发,有web操作界面,我们可以用它来搭建兼容S3协议的存储云服务。官网 https://minio.io/详情见如下操作[root@localhost ~]# mkdir /data/aws_s3[root@localhost

2017-03-29 23:25:06

levelDB

levelDB是Google做的内存数据库的开发库,而号称要取代rediss的SSDB就是基于levelDB开发的。1,下载levelDB源码git clone https://github.com/google/leveldb.git我是下载了这个地址的zip包leveldb-master.zip,解压安装的。2,编译LevelDB[root@localhost ~]# unzip leveldb

2017-03-16 01:13:39

OpenResty入门

操作系统:Centos 7OpenResty是整合nginx模块,用作web开发工具之用,具体可以百度!配置安装源[root@localhost ~]# vim /etc/yum.repos.d/OpenResty.repo内容如下:[openresty]name=Official OpenResty Repositorybaseurl=https://openresty.org/yum/ope

2017-03-15 01:20:41

通过UDF使mysql主动刷新redis缓存

UDF是mysql的一个拓展接口,UDF(Userdefined function)用户自定义函数。在什么地方使用这个功能呢,试想有如下场景:你的网站使用mysql作为最终数据落地的存储引擎,而redis作为缓存以减小查询请求穿透到mysql的数量,可以极大的降低数据库性能瓶颈带来的整个网站对外服务的卡顿、不可用等情况。这种方式的架构,当有查询请求的时候,我们可以在业务逻辑层控制,先从缓存中查询,无

2016-08-23 16:25:38

抛弃mysql模糊查询,使用sphinx做专业索引

Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,提供比数据库本身更专业的搜索功能特别为MySQL也设计了一个存储引擎插件,从此抛弃模糊查询吧。Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建100万条记录的索引只要 3、4分钟,创建1000万条记录的索引可以在50分钟内完成,而重建一次只包

2016-08-19 15:16:26

epoll边沿触发漏报消息包问题

开发一个即时通讯后台,底层的网络收发使用 epoll + main loop实现网络事件(conn、read、send)的异步触发读写,以达到能最大限度减少线程的IO等待,提高cup利用率的目的。实际使用中,会发现有少量并没有 因为访问后端阻塞 但是依然反馈慢到超时的情况,我们定义从客户端发消息到收到反馈,3s超时,而我们发现延迟可能好几分钟,这让我觉得肯定不是后端一些复杂逻辑导致的,逻辑层再复杂,

2016-08-05 11:47:33

Haproxy+etcd+confd+Docker搭建节点自动发现的高可用负载均衡框架

记得先要安装docker,具体这里不赘述了,百度或者看我的文章http://www.jianshu.com/p/3ffa4e5cbb86先扔出一张图来解释这四个组件之间的关系下面细说1.HaproxyHaproxy不用多说,负载均衡软件,安装Haproxyyum -y install haproxy版本是haproxy-1.5.4-3.el6.x86_64.rpm2.etcdetcd,是一个高可用的

2016-07-25 20:29:49

docker容器扫盲

Centos 6.5 安装和使用docker基于本人一贯的习惯,关于“某某某是什么”这样的问题,请百度吧,会有更专业的人士,会比我说的更详细更深,这里我只给出本人亲历的安装和使用过程。1.安装先检查服务器环境,docker要求操作系统CentOS6以上,kernel 版本必须2.6.32-431或更高,即>=CentOS 6.5,运行docker时实际提示3.8.0及以上,必须64bit,32bit

2016-07-22 21:55:21

从零实现高并发Web服务器-哈希表

哈希表自定义实现哈希表/** 键值对 */typedef struct { lbt_str_t key; /**< 键 */ lbt_uint_t key_hash; /**< 通过哈希运算,将key投影到整型的哈希值 */ void *value; /** 值 */} lbt_hash_key_t;/** 桶元素 */typedef struct

2016-07-17 16:37:19

基于mysql的分布式数据库中间件-Mycat

一、Mycat根据官网的定义:Mycat是一个可以用于MySQL读写分离和高可用的中间件,一个模拟为MySQL Server的超级数据库,一个能平滑扩展支持1000亿大表的分布式数据库系统,一个可管控多种关系数据库的数据库路由器,一个平滑从关系数据升级到大数据的应用中间件。其前身是阿里的Cobar项目。 介绍就不多说了,可以看官网http://www.mycat.org.cn/ 接下来我们实践吧

2016-07-09 23:08:57

环形队列

环形队列,也可以叫环形缓冲区。我们用数组来举例,通常对于一个放到数组中的队列,生产者将数据写入队尾,消费者从队头取走,两个指针朝着同一个方向运动,消费者追生产者。而“环”在这里的体现,就是不管生产者还是消费者,当指针跑到队尾的时候,掉头到该数组头去,形成一个没有终点的环。 这要做的好处是,当生产者和消费者都是单线程,也就是只有一个生产者和一个消费者的时候,不用加锁。如果生产者或者消费者都是多个,就

2016-07-08 12:09:45

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。