- 博客(40)
- 收藏
- 关注
原创 掌握好这几个模块,进大厂就稳了!!多个大厂SSP选手超详细分享
【必备】JUC:线程、ThreadLocal、并发工具类、内存模型、AQS、Synchronized、volatile、ReentrantLock、CAS、原子类、线程池。【进阶】分布式原理:CAP、BASE、Paxos、Raft、Gossip、分布式事务、分布式ID、分布式锁、分布式配置中心。【必备】Java基础:Java基础概念、面向对象、异常、常用类、泛型、反射、序列化、代理模式、I/O、新特性。【必备】操作系统:基础、进程与线程、死锁、内存管理(分段、分页)、文件系统、零拷贝、I/O类型。
2025-02-17 09:48:31
396
原创 26届进大厂计划——小红书后端实习面经
工作原理:当客户端成功获取锁后,Redisson 会启动一个后台线程(看门狗),定期刷新锁的过期时间,防止因业务逻辑执行时间过长而导致锁提前释放。订单生成:库存扣减成功后,将订单信息写入消息队列(如 RabbitMQ),由后台消费者异步处理订单入库。线程池调优:调整线程池的核心线程数和最大线程数,避免线程过多导致上下文切换开销过大。动态扩展不足:线程池大小固定,无法动态扩展,可能不适合任务量波动较大的场景。AOF:记录每个写操作命令,数据更完整,但文件体积较大,恢复速度较慢。
2025-02-14 12:39:16
472
原创 【详解】后端研发常用的服务端之间通信的五种方式
通过 Dubbo 提供服务的方式,通常是基于服务注册与发现的机制。通过 RocketMQ 提供服务的方式,通常是基于消息队列的异步通信机制。这种方式将功能封装成一个可复用的库(Library),并通过 Maven 等依赖管理工具分发给调用方。它通过封装功能为库的形式,简化了调用方的集成过程,同时提供了良好的版本管理和分发能力。下面依次介绍常用的三种方式:SDK(maven)、RPC(Dubbo)、MQ(RocketMQ)。使用高效的二进制协议(默认为 Dubbo 协议),支持高吞吐量的服务调用。
2025-02-14 09:41:09
1018
原创 【详解】后端研发常用的服务端之间通信的五种方式
后端研发常用的五种通信方式:MQ、SDK、RPC、HTTP、WebSocket。8000字详解其中常用的MQ、SDK、RPC方式。
2025-02-11 20:49:37
998
原创 【超全面】IDEA必备插件,效率嘎嘎提升
工欲善其事,必先利其器。Java后端研发者经常使用的IDEA,有非常多好用的插件,这里介绍最常用的15个,帮助大家嘎嘎提升开发效率,快到起飞🛫
2025-02-04 22:47:38
2173
原创 小白也会的DeepSeek-R1安装教程
🔥手把手教学!零基础5分钟搞定DeepSeek-R1安装【保姆级教程】,无需代码经验!本地部署专属AI助手,数据永不外传,轻松打造媲美ChatGPT的超能模型!
2025-01-28 13:00:13
906
原创 如何让`~/.kube/config` 文件中的配置应用到minikube的kubectl中
然而,在使用Minikube时,它会创建一个独立的虚拟机,并在该虚拟机上安装和运行一个单独的Kubernetes集群。这意味着在默认情况下,Minikube使用自己的Kubernetes配置,并不会直接使用本地的。请注意,Minikube配置文件是独立于您本地的~/.kube/config文件的。选项可以创建和管理多个Minikube配置文件,以便在不同的场景中使用不同的配置。这会将kubectl的上下文设置为Minikube的配置文件中的上下文。这将把您本地的配置复制到Minikube的配置文件中。
2023-10-04 16:37:16
482
原创 OpenSSL SSL_connect: Connection was reset in connection to github.com:443
OpenSSL SSL_connect: Connection was reset in connection to github.com:443
2023-03-22 09:32:57
940
原创 Chrome显示‘无法访问此网站’
问题描述Chrome无法访问开发过程中的一个网站,会显示“无法访问此网站”错误。但是Edge浏览器则可以访问。解决方案尝试了对Chrome的清除缓存、清除DNS、处理网站代理等一系列常见操作后,仍然无法访问。考虑到我通常是使用VPN对网站进行访问。有种可能出现的情况是:断连VPN之后我尝试登录系统,但是由于没有公司DNS的正确解析,而是被解析到错误的地址;那么当重连VPN之后,缓存里面就是错误的。可以采取的方法是:修改Win10系统的hosts文件,在里面添加解析记录:ip地址(192
2022-05-12 10:23:09
2263
原创 docker bug之/bin/bash: netstat: command not found
问题描述在docker部署的容器中有用到netstat命令,但是会报/bin/bash: netstat: command not found这个错误解决方案1、docker容器中很多命令都是没有的,需要自己进行安装包。出现上述问题是因为缺少net-tools包。所以执行需要执行以下命令:apt-get updateapt-get install net-tools2、在执行过程中遇到了权限不够的bug:E: List directory /var/lib/apt/lists/partia
2022-04-29 16:21:12
1784
原创 docker容器使用/bin/bash命令
问题描述本地运行命令和docker运行命令的解释器不同,在本地已经是/bin/bash,但是docker中仍然是/bin/sh,需要修改docker中/bin/sh为/bin/bash解决方案1、首先看docker容器的详细信息。输入“docker container ls |grep xxxx”,看其中的命令部分,如果是“/bin/sh”说明使用的不一定是bash,可能是dash解释器。使用命令ls -l /bin/sh,如果显示的是/bin/sh -> dash,说明用的是dash2、
2022-04-29 15:51:09
16554
原创 python bug之ModuleNotFoundError: No module named ‘xxxxx‘
File "/usr/lib/python3.8/pkgutil.py", line 493, in find_loader spec = importlib.util.find_spec(fullname)File "/usr/lib/python3.8/importlib/util.py", line 94, in find_spec parent = __import__(parent_name, fromlist=['__path__'])ModuleNotFoundError
2022-04-27 10:00:20
1007
原创 ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘xx.xx.xx.xx:端口号‘ (111)
MySQL远程连接ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'(111)
2022-04-15 08:43:35
1032
原创 2002 - Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘
问题描述Navicat连接mysql的localhost数据库显示 2002 - Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2 “No such file or directory”)解决方案1、首先确保mysql在运行2、参考其他的一些教程:https://www.cnblogs.com/xiaobingch/p/12825240.html,例如这个。总结对我来说,方案1就解决了。好久没用Navi
2022-03-24 15:00:01
814
原创 《算法笔记》编程笔记——第五章:简单数学题
《算法笔记》编程笔记——第五章:简单数学题一、最大公约数与最小公倍数//最大公约数的递归计算公式int gcd(int a, int b){ if(b == 0)return a; //0和任意一个整数a的最大公约数都是a,注意不是0 else return gcd(b, a % b);}二、分数的计算分数的化简:①结果为负,分子分母变为相反数(最简需要分母为正);②结果为0,使分子为0,分母为1;③其他情况下,计算出分子分母最大公约数,分别除以最大公约数,表示约分。
2021-03-03 21:56:07
148
原创 《算法笔记》编程笔记——第四章:散列、贪心、二分、two pointers和其他技巧
《算法笔记》编程笔记——第四章:散列、贪心、二分、two pointers和其他技巧一、散列bool hashTable[1000] = {false};//如果要计算出现的次数,可以将bool变为intint hashTable[1000] = {false};hashTable[x]++;//采取把输入的数作为数组下标来处理key为整数,可以用线性探查法、平方探查法等线性探查法:不断将hash值加1平方探查法:H(key) + k^2(k = 1, 2, 3, 4……), H
2021-03-03 21:55:16
126
原创 《算法笔记》编程笔记——第十章 图算法专题
《算法笔记》编程笔记——第十章 图算法专题图的存储邻接矩阵只适用于顶点数目不太大的时候,一般不超过1000.邻接表(vector容器)顶点数目较大时,一般情况下都是需要用邻接表而不是邻接矩阵来存储图先补充一个关于结构体内构造函数的小知识//示例代码struct studentInfo{ int id; char gender; //构造函数 //格式为“函数名(变量):赋值{}” studentInfo(int _id, c
2021-03-03 21:54:44
156
原创 《算法笔记》编程笔记——第十一章 动态规划
《算法笔记》编程笔记——第十一章 动态规划动态规划DP,是用来解决一类最优化问题的算法思想。动态规划会将每个求解过的子问题的解记录下来,这样当下一次遇到同样的子问题时,就可以直接使用之前记录的结果,而不是重复计算。动态规划一般可以用递推或者递归的方式来写。递归写法又叫做记忆型搜索。一个问题必须拥有重叠子问题和最优子结构,才能使用动态规划去解决。使用递推写法的计算方式是自底向上,即从边界开始,不断向上解决问题,知道解决了目标问题;而使用递归写法的计算方式是自顶向下,即从目标问题开始,将他分解
2021-03-03 21:53:00
237
原创 《算法笔记》编程笔记——第十三章 专题扩展
# 《算法笔记》编程笔记——第十三章 专题扩展分块思想问题描述:给出一个非负整数序列A,元素个数为N(N<=10^5, A[i]<=10^5),在有可能随时添加或者删除元素的情况下,实时查询元素第K大,即把序列元素从小到大排序后从左到右的第K个元素。【在线查询,当暴力法排序做时容易超时】思想:将有序元素划分为若干块。对一个有N个元素的有序数列来说,除最后一块,其余每块中元素的个数都应当为int(sqrt(n))【即根号n往下取整个】,总共的块数应该为根号n往上取整。查找思
2021-03-03 21:47:35
296
原创 《算法笔记》编程笔记——第十二章 字符串专题
《算法笔记》编程笔记——第十二章 字符串专题KMP算法给出两个字符串,判断其中一个字符串是否是另一个字符串的子串。如果用暴力求解,时间复杂度将达到O(n*m),如果用KMP算法,时间复杂度仅为O(n + m)。next数组int型数组,其中next[i]表示使子串s[0……i]的前缀s[0……k]等于后缀s[i-k……i]的最大的k。(注意前缀跟后缀可以有部分重叠,但是不能是s[0……i]本身);如果找不到相等的前后缀,就令next[i] = -1. 显然,next[i]就是所求最
2021-03-03 21:43:41
126
原创 《算法笔记》编程笔记——第七章与第六章部分 栈、队列、链表
《算法笔记》编程笔记——第七章与第六章部分 栈和递归、队列、链表一、栈栈的使用:#include + using namespace std;栈的定义:stack st;栈内元素的访问:st.top()。只有这个方法进行元素的访问常用函数:st.push(x);//压入数值st.pop();//弹出栈顶元素st.top();//获取栈顶元素st.empty();//栈判空,如果为空,返回true,否则返回falsest.size();//返回栈内元素个数//上述操作
2021-03-03 21:40:54
279
原创 《算法笔记》编程笔记——第六章 c++标准模板库(STL)
《算法笔记》编程笔记——c++标准模板库(STL)写在开头的总结性话:除去vector、String、map可以用取下标的形式来访问元素之外,其余(例如set、queue、stack)都不可以。一、vector的用法vector为变长数组,使用时,需要加头文件“ #include”,并且加上"using namespace std".vector定义:vector name (其中name是一个可变数组); vector name[100] (这里name是一个二维数组,
2021-03-03 21:40:15
176
原创 《算法笔记》编程笔记——第九章 数据结构专题
第九章 数据结构专题树与二叉树概念子树的棵树称为结点的度。完全二叉树判断是否是完全二叉树可以用结点下标的关系代码模板//层序遍历中,如果一个结点没有左孩子,那么这个结点编号 * 2 > n,如果不满足这个条件,就说明不是完全二叉树;右孩子的情况同理。bool isCom = true;void LayerOrder(int root){ queue<node> q; q.push(tree[root]); while(!q.empty()){
2021-03-03 21:39:50
127
原创 《算法笔记》编程笔记——第八章 搜索专题
《算法笔记》编程笔记——第八章 搜索专题递归解题模板求解最大值、最小值。返回的值设置为全局变量,条件值设置为全局变量。如果是函数表达式,则返回函数表达式。总的结构:第一步——递归边界;第二步——递归过程主函数中传入递归函数初始值一类dfs常见问题给定一个序列,枚举这个序列所有的子序列(可以不连续)。可以变形为,枚举从N个整数中选择K个数满足某种条件,并可能需要输出最优方案。模板//例题2:选择K符合条件的数,并输出 #include<cstdio>#in
2021-03-03 21:39:09
141
原创 复杂输入输出
复杂输入输出规律复杂输入与输出,用cin和cout可能会超时,最好使用scanf。A 1095:排序 + 输入所有数据+从所有数据中挑选有效数据;一辆车的in与out匹配,计算停车时间。(记录匹配问题)思路:①定义结构体变量all来存储所有记录,valid来存储有效记录,这是打破从输入开始处理的常规思路。②对所有all数组记录,先按车牌号从小到大排序,然后再按时间从小到大排序。排序之后就可以方便地进行匹配。即寻找同一辆车(车牌号相同)中相邻时间并且一个为in另一个为out的记录。
2021-03-03 21:31:42
465
原创 PAT字符串专题复习
PAT字符串专题复习最长连续公共子串求解用最长不连续公共子序列的变形来做思路:①令dp[i] [j]表示字符串a中结尾为i和字符串b中结尾为j的前一段字符子串中连续公共子串的长度。例如afbc和abcde中,dp[4] [3] = 2, dp[4] [4] = 0.②状态转移方程:int maxlen = 0; //记录最长连续子串长度,注意不能最后直接输出dp[i][j].if(a[i] == b[j]){ dp[i][j] = dp[i-1][j-1] + 1;
2021-03-03 21:31:04
203
原创 PAT题目题型总结
PAT题目题型总结A1058-1155题型总结题目知识点A1155(30)堆的判断;二叉树遍历化简为dfs+vector与数组下标操作;很难A1154(25)vector+set解决图的边顶点颜色判断,不用建立图!;较难A1153(25)输入处理(排序、分情况、使用STL工具),输出处理;较难A1152(20)判断素数;简单A1151(30)中序+先序确定树的核心思想(实质是对树结点进行排序)+最近祖先;很难A1150(25)图旅行商环路
2021-03-03 21:30:34
586
原创 PAT第五章专题复习
PAT第五章专题复习数学题A 1049 :统计从1-N中1的个数思路:①逐位进行考虑。从低位开始,如果当前位now = 0的话,就只需要考虑左边部分的个数。表达式为ans += left * a;②如果now = 1的话,左边部分计算同理;now位有1个,再加上右边部分的数值。可以得到表达式为ans += left * a + 1 + right③如果now >= 2的话,没有任何限制,可以得到表达式ans += (left + 1) * a;代码实现#include&
2021-03-03 21:30:01
90
原创 PAT第四章专题复习
PAT第四章专题复习二分法A 1010:给出两个很大数(用字符串来读取)并给出其中一个数的进制,要求另一个数为多少进制时满足两个数相同。如果存在这样的进制,输出进制值;如果不存在,输出“Impossible”.思路:①首先讲一下这道题当中的坑点,十分的多。第一个,所有的数据应该用long long型来存储,不然肯定溢出; 第二个,即使使用了long long型, 在运算过程中,也有可能溢出,即会发生正数变成负数的情况,这一情况在二分法的while循环if条件判断中需要特别注意。 第三
2021-03-03 21:29:27
140
原创 PAT第十章专题复习
PAT第十章专题复习图的定义哈密顿图(PAT A 1122)第一步:首尾结点相同?、输入个数是否合法?第二步:除首尾结点外,每个顶点是否有且仅出现一次?第三步:结点之间的边是否存在?欧拉图(PAT A 1126)首先统计结点度数,然后dfs判断是否是连通图。如果是连通图且结点度数都是偶数,则为欧拉图;如果是连通图且仅有两个奇数度数的结点,则为半欧拉图;如果不是连通图或者结点度数不是以上两种情况,则不是欧拉图。旅行商环路(PAT A 1150)相邻结点是否可达?首尾结点
2021-03-03 21:28:53
164
原创 PAT第十一章专题复习
PAT第十一章专题复习本专题还需要多重复几遍,很不熟悉!!最长公共子序列变形:允许元素重复A 1045 Favorite Color Stripe (30 分)思路:①本题一开始想到的是用最长不下降子序列做。②也可以用最长公共子序列来做,不过状态转移方程是经过变形的。//不允许元素重复的状态转移方程if(a[i] == b[j]){ dp[i][j] = dp[i-1][j-1] + 1;}else{ dp[i][j] = max(dp[i-1][j]
2021-03-03 21:28:10
80
原创 PAT第七章专题复习
PAT第七章专题复习链表链表题目总结:链表题目尤其要注意去掉题目中所给的无效结点,将得到的有效结点链表ans再进行相关操作。另外要注意,题目是否可能1个有效结点都没有。链表经典操作struct node{ int add, data, next;}vector<node> linklist(10005), ans;//linklist用来放输入的链表;ans是去掉无效结点后得到的顺序链表int main(){ int st, n; cin
2021-03-03 21:27:46
72
原创 PAT第九章专题复习
PAT第九章专题复习二叉树遍历与树的遍历二叉树中序+层序/先序/后序建立树,输出中序/先序/后序/ 层序序列。(背模板即可)层序+中序确定树模板还需要反复加强理解不建树做法:当结点数比较大并且比较容易操作时给出中序序列和先序序列,再给出两个点,求这两个点的最近公共祖先【PAT A 1151】思路:①不用建树,则需要中序序列的inl和inr下标以及先序序列的根节点下标preRoot。②求最近公共祖先,函数参数还需要传入的两个数的值。③在递归函数中,第一步是递归边界;第
2021-03-03 21:26:08
87
原创 PAT第八章专题复习
PAT第八章专题复习本章的算法笔记上的题目已做,蓝桥杯题目大致看了一下。dfs题题目描述【PAT A 1103】,分解因子思路:①用dfs做思路是清晰的,不过自己在写dfs时超时了。在选择最优解时,时间复杂度不是O(1),导致超时。②如果使用原先的递归式,将不能够保证存储到temp中的数是从大到小排序的,如果需要从大到小排序,就必须事先将数存储起来,然后dfs的时候直接调用,类似dfs时调用的是数组下标,而不是数组值本身。③看了题解,发现可以事先将因子存储起来,然后dfs求最优
2021-03-03 21:24:42
74
原创 PAT复习专题题目
PAT复习专题题目图A1003(25)最短路径Dijkstra算法+最短路径条数+点权最大;简单A1013(25)图的DFS遍历求无向图连通分量,简单A1018(30)图最短路径+Dijkstra+DFS;较难A1021(25)图的dfs两遍遍历确定树的最高高度的根节点;数学证明知识;较难A1030(30)最短路径Dijkstra算法+最少花费+输出最短路径;简单A1034(30)图dfs遍历计算连通分量;复杂处理;较难A1072(30)
2021-03-03 21:12:45
189
原创 蓝桥杯国赛第八届c++ A组 区间移位
题目描述数轴上有n个闭区间:D1,…,Dn。其中区间Di用一对整数[ai, bi]来描述,满足ai < bi。已知这些区间的长度之和至少有10000。所以,通过适当的移动这些区间,你总可以使得他们的“并”覆盖[0, 10000]——也就是说[0, 10000]这个区间内的每一个点都落于至少一个区间内。你希望找一个移动方法,使得位移差最大的那个区间的位移量最小。具体来说,假设你将Di移动到[ai+ci, bi+ci]这个位置。你希望使得maxi{|ci|} 最小。【输入格式】输入的第一行
2020-11-07 19:13:19
595
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人