4 allenxguo

尚未进行身份认证

C++

等级
TA的排名 2w+

Go实现滑动窗口限频

文章目录@[toc]各类限频原理实现方法实现代码压测试压测试输出压测试客户端输出各类限频原理网上有很多讲解限频原理以及限频原因的,限频常用在接口、服务的流量、并发上,主要是为了合理使用后端资源,防止后端被压垮,雪崩等等。实现方法这里使用使用go的ring(环形队列)实现滑动窗口实现代码packagemainimport("fmt""net""os"...

2019-10-06 10:12:45

【Go】学习笔记

Go的学习笔记!Go实现滑动窗口限频

2019-10-06 10:08:46

LeetCode刷题记录4-寻找两个有序数组的中位数

题目给定两个大小为m和n的有序数组nums1和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m+n))。你可以假设nums1和nums2不会同时为空。示例1:nums1=[1,3]nums2=[2]则中位数是2.0示例2:nums1=[1,2]nums2=[3,4]则中位数是(2...

2019-04-26 15:39:29

LeetCode刷题记录3-无重复字符的最长子串

题目给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入:"abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所以其长度为3。示例2:输入:"bbbbb"输出:1解释:因为无重复字符的最长子串是"b",所以其长度为1。示例3:输入:"pwwkew"输出:3解释:因为无重复字符的最长子串是"wk...

2019-04-26 15:15:16

LeetCode刷题记录2-两数相加

题目给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字0之外,这两个数都不会以0开头。示例:输入:(2->4->3)+(5->6->4)输出:7->0->8原...

2019-04-26 14:14:47

【深入理解C++11】第八章 融入实际应用

深入理C++118.1对齐支持8.1对齐支持 对齐的数据在读写上有性能优势,比如频繁使用的数据如果与处理器的高速缓存大小对齐,有可能提高缓存性能。数据不对齐,可能会导致一些应用的崩溃,例如某些平台,硬件无法读取不按字节对齐的的数据,可能会抛出异常。 C++11标准为了支持对齐,主要引入了:操作符alignof、对齐描述符alignas。...

2019-04-24 22:16:20

【深入理解C++11】第七章 为改变思考方式而改变

深入理C++117.1指针空值nullptr7.1指针空值nullptr 在C++中一般一个指针声明都是char*p=NULL;表示一个指针处于初始化状态,NULL一般是一个宏定义,定义如下:#ifndefNULL#ifdef__cplusplus#defineNULL0#else#defineNULL((vo...

2019-04-22 22:31:08

【深入理解C++11】第六章 提高性能及操作硬件能力

现在各类语言百花齐放,大多都有很高的开发效率、或者专用场合使用,但是性能方面C++程序通常会有不可比拟的优势。C++11中我们可以进一步发掘程序运行性能。深入理C++116.1常量表达式6.1.1常量表达式函数6.1.2常量表达式值6.1.3常量自定义类型6.1.4常量表达式其他应用6.2变长模板6.2.1变长函数和变长模板参数6.2.2变长模板:模板参数包和函数参数包6.2....

2019-02-02 17:52:40

【深入理解C++11】第五章 提高类型安全

深入理C++115.1强类型枚举5.1强类型枚举普通枚举在全局区域存在相同的名字则会编译异常例如:enumType{General,Light,Medium};enumCategory{General,Light,Medium};C++11引入强类型枚举,即“枚举类”。enumclassType{General,Light,Medium};他有以下几点优势:...

2018-12-24 22:27:36

【深入理解C++11】第四章 新手易学,老兵易用

深入理C++114.2auto类型推导4.3decltype4.3.1typeid与decltype4.3.2decltype的应用4.3.3decltype推导四规则4.3.4cv限制符的继承与冗余的符号4.4追踪返回类型4.4.1追踪返回类型的引入4.4.2使用追踪返回类型的函数4.5基于范围的for循环4.2auto类型推导auto在C++11中有了新的定义,例如a...

2018-12-24 22:26:48

【深入理解C++11】第三章 通用为本,专用为末

通用为本,专用为末3.1继承构造函数3.1.1使用using声明3.1.2注意继承构造函数使用过多造成的冲突问题3.2委派构造函数3.3右值引用:移动语义和完美转发3.3.1指针成员与拷贝构造3.3.2移动语义3.3.3左值、右值与右值引用3.3.4强制转化为右值3.3.5移动语义的一些其他问题3.3.6完美转发3.5列表初始化3.5.1初始化列表3.5.2防止类型收窄3...

2018-12-24 22:25:12

【深入理解C++11】

深入理C++11第一章第二章第三章继承构造函数使用using声明注意继承构造函数使用过多造成的冲突问题第一章第二章第三章继承构造函数派生类可以自动获得从基类的成员变量和接口,如果派生类需要使用基类的构造函数,通常需要在构造函数显示声明:structA{A(int){}};structB{B(inti):A(i){}};如果构造函数非常多,我们就需要把每个...

2018-10-24 22:53:32

【算法】选择排序

选择排序概述从1-N,循环遍历,每次从剩下的序列中选择最大或者最小的元素放到剩下序列的前一个。n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:初始状态:无序区为R[1…n],有序区为空。第1趟排序在无序区R[1…n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1…1]和R[2…n]分别变为记录个数增加1个的新有序区和记录个数减少1个的...

2018-10-06 12:31:26

【算法】反转队列前K个元素

反转队列前K个元素想到队列的反转那肯定首先想到的就是堆栈(同理堆栈反转也可以利用队列)有一个办法我们可以将K个元素入栈,然后可以另一个队列将剩下的元素放入,随后我们首先将栈元素回归原来的队列,最后将临时队列也入队。//使用一个辅助的队列和堆栈实现//前k个放入堆栈,后面的放入队列//取出时堆栈先入后出,达到反转目的voidreversalQueue(queue<int>&...

2018-09-28 21:49:02

【算法】使用队列实现栈

使用队列实现栈前一篇使用栈实现队列文章用2个栈实现了一个队列,其实实现栈也是同理(修改一点点代码即可实现)。structStack{Stack(){}Stack(std::initializer_list<int>list):first(list){};voidpush(intvalue){first.p...

2018-09-27 16:35:06

【算法】使用栈实现队列

使用栈实现队列栈中的元素采用LIFO(LastInFirstOut),即后进先出。队列(Queue)与栈类似,都是采用线性结构存储数据。它们的区别在于,栈采用LIFO方式,而队列采用先进先出,即FIFO(FirstinFirstOut)。所以2个栈交换数据可以达到队列的效果。具体实现如下:structQueue{Queue(){}Queue(std...

2018-09-27 16:26:46

【算法】使用栈检查表达式的括号匹配

使用栈检查表达式的括号匹配给定一个表达式字符串exp,编写一个程序来检查对和“{”,“}”,“(”,“)”,“[”,“]”的顺序是否在exp中是正确的。例如,程序应该为exp=“[()]{}{[()()]()}”打印为true,对于exp=“[(])”则为false。算法步骤其实这种字符串有一个特点,就是如果当前字符串是“右边”的括号类型,那么它的前一个必定是与之匹配的括号。声...

2018-09-27 15:14:54

【项目调优小结】状态机优化业务交互

ing

2018-09-25 22:57:47

【算法】使用栈为栈的元素排序

使用栈为栈的元素排序栈中的元素采用LIFO(LastInFirstOut),即后进先出。基本思路就是:从源栈中取出一个元素在临时栈中找到元素的位置,该位置到栈顶不合适的元素(大于或者小于,或者其他pred类型)将其全部“扔”回源栈循环1和2即可得到新的临时栈,其中元素就是排好的元素实现代码如下:stack<int>srcStack;stack<in...

2018-09-25 22:52:07

【算法】使用栈计算简单的后缀表达式

###计算后缀表达式计算简单的后缀表达式,形如:“231*+9-”主要还是利用了栈的特性,先入后出。计算的简略步骤如下:第一个元素是2,将其入栈。此时栈元素为2遇到3,将其入栈。此时栈元素为23遇到1,将其入栈。此时栈元素为231遇到操作,弹出2个数字进行乘法操作(先出1,后出3,计算方式为31),将结果3入栈。此时栈元素为23遇到+操作,弹出2个数字进行乘法操作(先出3,后出2,...

2018-09-20 22:56:24

查看更多

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