常用4种限流算法介绍及比较

1、计数器(固定窗口)算法计数器算法是使用计数器在周期内累加访问次数,当达到设定的限流值时,触发限流策略。下一个周期开始时,进行清零,重新计数。此算法在单机还是分布式环境下实现都非常简单,使用redis的incr原子自增性和线程安全即可轻松实现。2、滑动窗口算法滑动窗口算法是将时间周期分为N个小周期,分别记录每个小周期内访问次数,并且根据时间滑动删除过期的小周期。如下图,假设时间周期为1min,将1min再分为2个小周期,统计每个小周期的访问数量,则可以看到,第一个时间周期内,访问数量为75,第二个时间周期内,访问数量为100,超过100的访问则被限流掉了 Read More

Install GCC 4.9.3

#!/bin/bas# this script installs GCC 4.9.# to use it navigate to your home directory and type# sh install-gcc-4.9.3.s# download and install gcc 4.9.wget https://ftp.gnu.org/gnu/gcc/gcc-4.9.3/gcc-4.9.3.tar.gtar xzf gcc-4.9.3.tar.gcd gcc-4.9../contrib/download_prerequisitecd ..mkdir objdicd objdi../gcc-4.9.3/configure --prefix=$HOME/gcc-4.9.3 --enable-languages=c,c++,fortran,go --disable-... Read More

Git Module

有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。我们举一个例子。 假设你正在开发一个网站然后创建了 Atom 订阅。 你决定使用一个库,而不是写自己的 Atom 生成代码。 你可能不得不通过 CPAN 安装或 Ruby gem 来包含共享库中的代码,或者将源代码直接拷贝到自己的项目中。 如果将这个库包含进来,那么无论用何种方式都很难定制它,部署则更加困难,因为你必须确保每一个客户端都包含该库。 如果将代码复制到自己的项目中,那么你做的任何自定义修改都会使合并上游的改动变得困难。Git 通过子模块来解决这个问题。 子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立... Read More

C++ 动态数组初始化

int *pia = new int[10];//array of 10 uninitializedints此new表达式分配了一个含有 10 个int型元素的数组,并返回指向该数组第一个元素的指针,此返回值初始化了指针pia。在自由存储区中创建的数组对象是没有名字的,只能通过其地址间接地访问堆中的对象。注意:C++使用new和delete在堆(自由存储区)上分配和释放动态数组。 Read More

Change the mirror of HomeBrew to AliYun’s

简介Homebrew 是一款自由及开放源代码的软件包管理系统,用以简化 macOS 系统上的软件安装过程。它拥有安装、卸载、更新、查看、搜索等很多实用的功能,通过简单的一条指令,就可以实现包管理,十分方便快捷。配置方法首先确保你已经安装好了 Homebrew 了, 如果没有, 请参考 OPSX 指引页的 Homebrew 文档;然后你只需要粘贴下述命令在对应终端运行。 Read More

Exuberant Ctags Manual

Thectagsandetagsprograms (hereinafter collectively referred to asctags, except where distinguished) generate an index (or "tag") file for a variety of language objects found infile(s). This tag file allows these items to be quickly and easily located by a text editor or other utility. A "tag" signifies a language object for which an index entry is available (or, alternatively, the index entry crea... Read More

PHP-FPM Configuration

pmstrin设置进程管理器如何管理子进程。可用值:static,ondemand,dynamic。必须设置。static- 子进程的数量是固定的(pm.max_children)。ondemand- 进程在有需求时才产生(当请求时才启动。与 dynamic 相反,在服务启动时pm.start_servers就启动了。dynamic- 子进程的数量在下面配置的基础上动态设置:pm.max_children,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers。pm.max_childreninpm设置为static时表示创建的子进程的数量,pm设置为dynamic时表示最大可创建的子进程的数量。必须设置。该选项设置可以同时提供服务的请求数限制。类似 Apache 的 mpm_prefork 中 MaxClients 的设置... Read More

Layers of OSI Model

OSI stands for Open Systems Interconnection. It has been developed by ISO – ‘International Organization of Standardization‘, in the year 1984. It is a 7 layer architecture with each layer having specific functionality to perform. All these 7 layers work collaboratively to transmit the data from one person to another across the globe.1. Physical Layer (Layer 1) The lowest layer of the OSI referenc... Read More

Got “our configuration does not allow connections to ” while using composer install

Got this message while using the composer install command[Composer\Downloader\TransportExceptionYour configuration does not allow connections to http://xxx.com:80/path/to/repo/repo-name-0.0.0.tar.gz. See https://getcomposer.org/doc/06-config.md#secure-http for details.Just run this commandcomposer config -g secure-http falsThen, go aheadReferrenc[1]. Latest Composer version not pulling Larav... Read More

三分钟掌握Go mod常用与高级操作

使用go module之后,go get 拉取依赖的方式就发生了变化下载项目依赖go get ./...拉取最新的版本(优先择取 taggo get golang.org/x/text@lates拉取 master 分支的最新 commigo get golang.org/x/text@maste拉取 tag 为 v0.3.2 的 commigo get golang.org/x/text@v0.3.拉取 hash 为 342b231 的 commit,最终会被转换为 v0.3.2go get golang.org/x/text@342b2指定版本拉取,拉取v3版本go get github.com/smartwalle/alipay/v Read More

The tutorial of Protocol Buffers in Golang

This tutorial provides a basic Go programmer's introduction to working with protocol buffers, using theproto3version of the protocol buffers language. By walking through creating a simple example application, it shows you how tDefine message formats in a.protofile.Use the protocol buffer compiler.Use the Go protocol buffer API to write and read messages.This isn't a comprehensive guide to using p... Read More