• 2024-07-02LRU
    #include<iostream>#include<unordered_map>#include<list>usingnamespacestd;classLRUCache{private:intcapacity;unordered_map<int,pair<int,list<int>::iterator>>cache;list<int>lruList;
  • 2024-06-14每日一练——有效的括号
    20.有效的括号-力扣(LeetCode)错误记录#include<stddef.h>#include<stdlib.h>#include<assert.h>#include<stdbool.h>typedefcharSTDataType;typedefstructStack{ STDataType*a; intcapacity; inttop;}Stack;voidSTInit(Stack*st)
  • 2024-06-05简单实现限流中间件
    本文由ChatMoney团队出品引言在现代Web应用开发中,限流是一个重要的概念,它能够保护服务器免受流量攻击,确保服务的稳定性和可用性。Go语言以其高性能和并发处理能力在后端服务开发中广受欢迎。Gin是一个使用Go语言编写的Web框架,以其简洁和高效著称。在Gin框架中,通过中间件实现
  • 2024-06-04redis限流
    前提redis+lua 滑动窗口--滑动窗口localkey=KEYS[1]localmaxSize=ARGV[1]localcurrentTime=ARGV[2]localstartTime=ARGV[3]localuuid=ARGV[4]localcurrentCount=redis.call('zcount',key,startTime,currentTime)if(currentCountandtonumber
  • 2024-05-27C++ ─── string的模拟实现
            本博客将简单实现来模拟实现string类,最主要是实现string类的构造、拷贝构造、赋值运算符重载以及析构函数。    下期我们继续讲解完整版string的模拟实现(将不再会是浅拷贝了)        说明:下述string类没有显式定义其拷贝构造函数与赋值运
  • 2024-05-23《分数背包问题》快速求解(贪心法)
    目录前言一、贪心策略二、具体步骤实例如下:三、代码实现伪代码:C++代码:     总结前言分数背包问题:在分数背包问题中,物品可以被分割成更小的部分,可以部分装入背包,而不是只能选择整个物品装入或不装入背包。一、贪心策略贪心法在解决分数背包问题时
  • 2024-05-02c语言实现vector及其相关函数(自存)
    #include<stdio.h>#include<stdlib.h>#definePREALLOC_MAX1024#defineDEFAULT_CAPACITY8typedefintE;typedefstruct{E*elements;//指向堆空间的数组intsize;//元素的个数intcapacity;//数组的容量}Vector;voidpush_back(Vect
  • 2024-04-08【笔记】栈(Stack)
    一、什么是栈栈:一种特殊的线性表,其只允许在固定的一端(也就是在表尾)进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。不含任何数据元素的栈称为空栈 。栈中的数据元素遵守后进先出LIFO(LastInFirstOut)的原则。注意:1、栈是一个线性表,那
  • 2024-04-07C++初级----string类(STL)
    1、标准库中的string1.1、sring介绍    字符串是表示字符序列的类,标准的字符串类提供了对此类对象的支,其接口类似于标准字符容器的接口,但是添加了专门用于操作的单字节字符字符串的设计特性。    string类是使用char,即作为他的字符类型,使用他默认的char_tr
  • 2024-03-25动态规划的工作原理,实现方式,应用场景
    动态规划(DynamicProgramming,简称DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式来求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。工作原理:动态规划的工作原理基于两个核心概念:重叠子问题:在求解问题
  • 2024-03-21ArrayList的扩容机制以及ArrayList与LinkedList的区别
    ArrayList的扩容机制假设采用无参构造器来实列化ArrayList对象ArrayListarrayList=newArrayList();此时,arrayList的初始容量为零,当第一次调用add方法时,会触发扩容机制,容量扩容为10。此后,在调用add方法时,如果容量不足,则容量会扩容为当前容量的1.5倍。capcity=capacity
  • 2024-03-18Java 运行时 Debug 思路
    JStack工具top使用top命令获取占用内存/CPU最高进程的pid输入大写的M按照内存排序,大写的P按照CPU排序top-Hppid使用top-Hppid可以查看该进程下,各个线程的cpu使用情况jstackpid通过top命令定位到cpu占用率较高的线程之后,接着使用jstackpid命令来查看当前j
  • 2024-03-14文心一言 VS 讯飞星火 VS chatgpt (214)-- 算法导论16.2 1题
    一、证明:分数背包问题具有贪心选择性质。如果要写代码,请用go语言。文心一言:要证明分数背包问题具有贪心选择性质,我们可以按照以下步骤进行逻辑推导:理解问题:分数背包问题允许我们选择物品的部分重量,目标是最大化背包内物品的总价值,同时不超过背包的总容量。贪心策略:我
  • 2024-03-12【C++】string类(介绍、常用接口)
  • 2024-03-0906_原型模式
    原型模式是一种创建型设计模式,它通过克隆现有对象来创建新对象,而不是通过实例化类来创建。原型模式允许我们创建具有相同属性和方法的对象集合,从而减少了对象的创建成本。在原型模式中,我们首先创建一个原始对象,然后通过克隆该对象来创建新的对象。这样,我们可以在不重新实例化类的
  • 2024-02-15Go 100 mistakes - #21: Inefficient slice initialization
          ConvertingoneslicetypeintoanotherisafrequentoperationforGodevelopers.As wehaveseen,ifthelengthofthefuturesliceisalreadyknown,thereisnogoodreasontoallocateanemptyslicefirst.Ouroptionsaretoallocat
  • 2024-02-15Go - slice
     Theslicenowreferencesthenewbackingarray.Whatwillhappentotheprevious backingarray?Ifit’snolongerreferenced,it’seventuallyfreedbythegarbagecollector(GC)ifallocatedontheheap.    Tosummarize,theslicelengthi
  • 2024-02-07详解golang实现一个带时效的环形队列
    1.需求mysql执行时间超过100ms以上打warn日志,但是一分钟以内这种warn日志超过10条就需要告警。所以需求就是获得一分钟以内mysql的warn的个数。2.分析为什么使用环形队列而不使用slice?因为队列长度固定,所以可以一开始就分配好空间,不用自动扩容,环形的目的就是不用改变数组的值,只用移
  • 2024-01-25线性表 - 栈和队列
    栈后进先出LIFO两种实现方式使用数组实现的叫静态栈使用链表实现的叫动态栈相关题目简单难度225.用队列实现栈https://leetcode.cn/problems/implement-stack-using-queues/classMyStack{  privateQueue<Integer>q1;  privateQueue<Integer>q2; 
  • 2024-01-2518、拷贝构造、赋值构造、移动构造的简洁代码实现
    classBuffer{public:explicitBuffer(intcapacity):capacity_(capacity),len_(0),buff_(newchar[capacity]{0}){std::cout<<"默认的构造函数"<<std::endl;};~Buffer(){};Buffer(constBuffer&other)n
  • 2024-01-24C++缺省参数
    缺省参数什么是缺省参数呢?简单来说,就是函数的参数可以给一个默认值,如果不给这个函数传递参数的时候那么改参数就是默认值,否则参数就是你指定的参数缺省参数分为全缺省和半缺省全缺省参数:所有的参数都有默认值voidfunc(inta=10,intb=20,intc=30){cou
  • 2024-01-05Java限流功能的实现
    在Java中,限流是一种常见的技术手段,用于控制系统的访问速率,以保护系统免受过载和滥用。以下是一些常见的Java限流实现方法:1.计数器限流这是一种简单而常见的限流方法。在该方法中,我们可以使用计数器来记录每个时间窗口内的请求数量,并与预设的阈值进行比较。如果请求数量超过
  • 2024-01-05通过模板类实现一个简单的vector容器
    什么是模板模板分为类模板和函数模板,关键字为template,基本的声明形式如下:template<classT>;//也可以写成这样template<typenameT>class和typename在声明模板参数时的用法是相似的,一般情况下可以互换但在成员模板内部访问嵌套类型时,需要使用typename。下面举一个例子加以理
  • 2024-01-0511、盛水最多的容器
    法一:暴力解法(超时)intmaxArea(vector<int>&height){intmax=0;for(inti=0;i<height.size();i++){for(intj=i+1;j<height.size();j++){intminHeight=min(height[i],height[j]);intcapacity=(j-i
  • 2024-01-02一篇文章彻底搞懂TiDB集群各种容量计算方式
    背景TiDB集群的监控面板里面有两个非常重要、且非常常用的指标,相信用了TiDB的都见过:Storagecapacity:集群的总容量Currentstoragesize:集群当前已经使用的空间大小当你准备了一堆服务器,经过各种思考设计部署了一个TiDB集群,有没有想过这两个指标和服务器磁盘之间到底是啥关