自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 redis实现漏桶算法--https://blog.youkuaiyun.com/m0_74908430/article/details/155076710

本文介绍了基于Redis实现漏桶限流算法的方法。漏桶算法通过固定速率处理请求来平滑流量,防止系统过载。实现方案使用Redis的Hash结构存储漏桶状态(容量、速率、当前水量和最后漏水时间),并通过Lua脚本保证操作的原子性。脚本逻辑包括计算漏水量、更新状态和判断请求是否允许通过。Java示例展示了如何调用该脚本。该方案具有原子性、高性能等优点,但也需注意内存占用和时间精度问题,同时与令牌桶算法相比更适合需要严格平滑流量的场景。

2025-11-24 15:28:22 394 1

原创 redis为什么快,除了基于内存和单线程、io多路复用的原因,还有什么原因?

摘要: 缓存雪崩导致SQL宕机时,需分三阶段处理: 秒级止损:网关限流降级非核心接口,数据库设只读模式,Redis应急处理(热点key永不过期或切本地缓存); 分钟级恢复:逐步放开核心表写权限,缓存预热核心数据,灰度恢复非核心业务; 长期预防:缓存过期时间随机化、集群高可用,数据库读写分离+分库分表,架构层熔断/降级/限流。 根因多为key集中过期、缓存宕机或穿透,需通过监控告警和定期演练提前防范。核心原则:先阻断流量保护数据库,再恢复服务,最终优化架构防复发。

2025-11-24 09:40:56 90

原创 jvm中oom怎么解决

JVM OOM(OutOfMemoryError)的解决关键在于精准定位原因,主要分为堆溢出、栈溢出、元空间溢出等类型。通过分析OOM日志和堆快照(MAT工具)可识别内存泄漏点或配置不足问题。解决方案包括:调整JVM参数(-Xmx、-XX:MaxMetaspaceSize等)、优化代码(避免静态集合泄漏、及时释放资源)、合理使用线程池等。排查工具推荐jps、jstat监控运行状态,结合jmap导出堆快照分析。针对不同OOM类型需采取针对性措施,如堆溢出优先检查内存泄漏,元空间溢出则限制类加载量。

2025-11-22 10:16:13 680

原创 Redis查询很慢的话,如何排查?主要原因?

Redis查询慢的排查流程:「慢查询日志定位命令→INFO/系统工具找资源瓶颈→大key/热key排查→集群/网络确认核心原因:「大key(O(n)命令阻塞)、热key(单线程排队)、资源瓶颈(CPU/内存/IO)、分布式问题(同步延迟/网络)优化核心:「避免单线程阻塞(拆分大key、替换慢命令)、分散负载(集群分片、读写分离)、充足资源(内存/带宽)

2025-11-21 16:51:38 572

原创 Java大厂面试:谢飞机的奇幻求职之旅

方案 | 优点 | 缺点 || 定时任务 | 简单易实现 | 延迟高,DB压力大 || 延迟消息 | 精准,解耦 | 依赖MQ可靠性,需补偿 || Redis过期监听 | 高性能,低延迟 | 事件可能丢失,需兜底 |推荐组合方案:以延迟消息为主Redis过期监听为辅,并配合乐观锁+分布式锁保证数据一致性,最后通过对账系统兜底,确保万无一失。希望这个“谢飞机”的故事能帮你理清订单超时的设计思路。下次面试,别再只会说定时任务啦!

2025-10-23 09:58:04 345

原创 Java大厂面试:谢飞机的奇幻求职之旅

本文以幽默对话形式还原互联网大厂Java工程师面试现场,通过“谢飞机”这一角色展现初级开发者常见误区,并深入解析支付系统设计、分布式锁、乐观锁等核心知识点。结合真实业务场景,帮助读者理解技术选型背后的权衡。

2025-10-23 09:57:17 272

原创 Java大厂面试现场:谢飞机被问懵了,从HashMap到DDD一套带走

面试不仅考记忆,更考理解。谢飞机虽然搞笑,但你也看到了知识盲区。建议扎实掌握底层原理,别只背八股文。

2025-10-20 22:08:21 306

原创 Java大厂面试现场:面试官灵魂拷问,水货程序员刘某某的爆笑对答实录

面试不仅考知识广度,更考深度和准确性。建议系统学习JUC、JVM、MySQL底层、Redis原理、Spring源码及DDD设计思想,避免成为“刘某某”式水货程序员。本文纯属虚构,如有雷同,欢迎对号入座。

2025-10-20 21:44:10 515

原创 Java面试奇遇记:谢飞机大战面试官,笑着学完核心技术栈

核心思想:以业务领域为核心,划分限界上下文(Bounded Context)分层架构表现层应用层领域层(实体、值对象、聚合根、领域服务)基础设施层适用于复杂业务系统,避免贫血模型,提升可维护性总结:谢飞机虽然搞笑,但他提醒我们——基础要牢,细节要抠,别让“我以为”变成“我完了”。希望你在笑声中学到真知识,下次面试,不再是“等通知”,而是“发 offer”!本文纯属虚构,如有雷同,说明你也面过这种题 😄。

2025-10-20 14:49:53 353

原创 Dijkstra(反向建图)

Destination最短路建立两个点 0 和 n+1,让所有 a[i] 为偶数的点与 0 连一条价值为零的边,让所有 a[i] 为奇数的点与n+1 连一条价值为零的边。对于 i - a[i] 和 i + a[i],如果可以到达,就连一条价值为 1 的边。对于偶数点,到达 n+1 的最短路径就是答案。对于奇数点,到达 0 的最短路就是答案。最短路的dij算法是求起点到其他所有点的距离,所以需要反向建图得到其他所有点到某个点的最短了。#include <bits/stdc++.h>

2021-08-23 10:34:49 731

原创 快速乘模板

Destination#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<map>#include<stack>#include<string>#include<cstdlib>#include<queue>#include<v

2021-08-23 08:42:53 205

原创 多重背包的可行性问题

题destination#include <iostream>#include <cstring>#include <algorithm>#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<map>#include<string>#i

2021-08-21 13:24:52 262

原创 多源BFS模板题

D.最近的商店(比赛中叫 不会吧不会有人觉得这不是签到吧)Time limit:1 secondsMemory limit:64 megabytes​ 协会成员马上要入住算协小镇了!他们不想去一个离自己很远的商店,因此每个人都想知道离自己房子最近的商店有多远。​ 他们向你求助,希望你能帮他们做一个标有商店距离的平面图。​ 算协小镇上的房子严格按照n ∗ m n * mn∗m的点阵建造,其中分布有居民楼和商店,距离按照每个单元格进行计算(横与纵坐标差之和)。输入​ 第一行输入n nn和m mm,

2021-08-15 19:43:28 200

原创 树状数组(求逆序对及离散化)

#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 2000010;typedef long long LL;int n;//t[i]表示树状数组i结点覆盖的范围和int a[N], t[N];//Lower[i]表示左边比第i个位置小的数的个数//Greater[i]表示左边比第i个位置大的数的个数int Lower[

2021-08-13 17:26:57 114

原创 DFS(记忆化搜索)

THEME#include <cstdio>#include <iostream>using namespace std; int a[110][110],f[110][110];int r,c;int MAX,maxn,ans;int dx[4]={0,0,1,-1};int dy[4]={1,-1,0,0}; int dfs(int x,int y){ int i; if(f[x][y]!=0) return f[x][y.

2021-08-11 19:39:39 312

原创 最短路径(Dijkstra、Floyd)

Dijkstra:THEME#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<map>#include<string>#include<cstdlib>#include<queue>#include<vector>#define

2021-08-06 21:04:34 113

原创 二进制枚举+三进制枚举

theme#include<bits/stdc++.h>using namespace std;#define ios ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)#define ll long long#define PI acos(-1)#define INF 0x3f3f3f3fconst int N=1e6;int c[20],n,m,x,a[20][20],ans=INF;int main(){ ios; cin&g

2021-07-28 09:25:21 278

原创 二位前缀和及二维差分

二维差分及二维前缀和AC代码:#include<bits/stdc++.h>using namespace std;#define ios ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)#define ll long long#define PI acos(-1)#define INF 0x3f3f3f3fconst int N=1e6+9;int a[N][N],b[N][N],c[N][N];int main(){ ios

2021-07-28 08:45:52 125

原创 相关字符操作

int a = atoi(num.c_str()); // atoi() 函数可以把 char数组里的数字转化为 整型, c_str() 表示把string转化为 char 数组[thmem](https://vjudge.ppsucxtt.cn/contest/447446#problem/J)```

2021-07-16 21:22:41 104

原创 结构体内重载运算符

结构体内重载运算符struct student{ string name; int sum; //bool operator < (const student a) const{ // return this->sum>a.sum;(第一种重载形式) bool operator <(const student & a) const{ return sum>a.sum;(第二种重载形式) }};...

2021-07-16 09:38:55 844

原创 DFS根节点大小(一块分成两块)

Theme#include<bits/stdc++.h>using namespace std;const int N=1e5+100;vector<int> G[N];long long depth[N],siz[N];long long w[N]; void DFS(int u,int fa){ siz[u]=w[u]; //depth[u]=depth[fa]+1; for(int v:G[u]){ if(v==fa) continue; DFS

2021-05-09 09:34:14 113

原创 BFS(最短路径问题)

简单最短路径问题Theme#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<queue>#include<cmath>#include<vector>//#include<pair>using namespace std;const int N=333;int dis[N][N],

2021-05-09 08:27:42 396

原创 【杭电oj】1251-统计题

题目其实这个题的思路是很有意思的,在读取单词表的时候用一个map将每个单词的所有的前缀都存起来,查询的时候直接访问键值就可以了。str.substr(pos,i)的意思就是从pos位置开始的长度为i的子串。getline(cin, s); //默认为回车符,若以其他符号为分隔符,改为getline(cin, s, ','),例如逗号代码:#include <bits\stdc++.h>#include <map>using namespace std;int m

2021-04-22 21:20:53 308 1

原创 二分,前缀和,差分,lower_bound(),upper_bound()

二分查找:while(l<=r){//二分查找,需先排序再查找 int mid=(l+r)/2; if(a[mid]==4){//查找4 cout<<mid<<endl; break; } if(a[mid]>4){ r=mid-1; } else{ l=mid+1; } }前缀和:#include<bits\stdc++.h>using namespace std;int main(){/

2021-04-22 20:52:56 200

原创 4.stack和queue

4.stack和queue栈(stack)和队列(queue)各自封装在#include和#include中。定义方法为:stack<int> st;//先进后出queue<int> q;//先进先出优先队列:定义:他的返回队列首元素是top与栈的相同;priority_queue<int> a; //int类型按从大到小排序...

2021-04-21 11:31:57 82

原创 map嵌套例题以及map输出

例题:map嵌套#include<bits/stdc++.h>using namespace std;int main(){ int T,n,amount,i; string place,fruit; map<string,map<string,int>>a; cin>>T; while(T--) { cin>>n; a.clear(); for

2021-04-20 16:25:58 331

原创 c++入门(结构体,vector,set)

新生入门:1:结构体结构体的创建:struct abc{ int a; char b; };结构体的命名:abc hh;结构体的引用:hh.a;2:vector#include<iostream>#include<vector>using namespace std;int main(){ int n,x; cin>>n; vector<int> a(n,5);//此表示有n个元素且全都初始为5// for(

2021-04-20 10:52:20 429

转载 C / C++ 保留两位小数(setprecision(n)的一些用法总结)

首先说C++代码#include //不要忘了头文件1//第一种写法cout<<setiosflags(ios::fixed)<<setprecision(2);12//第二种写法cout.setf(ios::fixed);cout<<setprecision(2);123//第三种写法cout<<fixed<<setprecision(2);12要保留几位小数setprecision(n)的括号里n就换成几。

2021-01-22 19:19:59 5750

原创 python 生日悖论概率计算。

from random import randint def list_birth(): list_birth=[] for i in range(23): x=randint(1,12) if x in [1,3,5,7,8,10,12]: y=randint(1,31) elif x==2: y=randint(1,28) else: y=rand.

2020-12-14 16:24:23 2868 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除