- 博客(88)
- 收藏
- 关注
原创 消息队列RabbitMQ
在订单提交服务面对突发的订单请求时,如果后续的库存更新和支付处理服务处理不过来,消息队列可以暂时存储订单消息,避免系统因为负载过高而崩溃。后续的库存更新和支付处理服务可以按照自己的处理能力逐步消费消息队列中的订单消息,以平滑处理系统的高峰流量,保证系统的稳定性和可靠性。消费者处理消息的方式可以是同步或异步的,通常使用消费者来处理和执行从队列中接收到的消息。因为队列中的消息是排队处理的,如果使用在消息属性上设置 TTL 的方式,消息可能并不会按时“死亡“,因为 RabbitMQ 只会检查。
2024-02-29 18:21:21
903
原创 HashMap源码分析笔记
实际就是取模,hash%length,计算机中直接求余效率不如位移运算,源码中做了优化hash&(length-1)。当元素越来越多的时候,hashMap的查找速度就从O(1)升到O(n),导致链化严重。为了解决冲突带来的查询效率的下降,因此需要扩容。此时,哈希表的容量和扩容阈值都为0。其中,0.75是默认的负载因子。的哈希值进行扰动:高16位不变,低16位和高16位做异或运算,赋值给低16位。扩容后数组的长度是原来的2倍。链表的元素需要重新计算存放位置。哈希表的长度,没有分配内存时,长度为0。
2024-02-25 18:13:59
450
原创 希尔排序和快排
#include<stdio.h>#define DATA_ARRAY_LENGTH 12int shell_sort(int *data, int length){ //第一层循环,表示要进行多少次分组,也就是跨度 for(int gap = length / 2; gap >=1; gap /= 2) { //第二层循环,表示对于每一次分组,要遍历所有的组 for(int i = gap; i < length; i
2021-11-06 23:01:26
107
原创 在Windows上远程连接Linux,并配置文件共享,实现在Windows敲代码,在Linux上存储、编译运行。
用到的工具:samba + sshSamba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世
2021-11-05 21:14:45
765
原创 vi(vim)的基本使用
vi共分为三种模式:命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。命令模式:刚刚启动 vi/vim,便进入了命令模式。在命令模式下,输入i 切换到输入模式,以输入字符。输入: 切换到底线命令模式,以在最底一行输入命令。命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。输入模式:在命令模式下按下i就进入了输入模式。在输入模式中,可以使用以下按键:字符按键以及Shift组合,输入字符ENTER,回车
2021-11-05 16:43:27
370
原创 计算机中字符编码和字符集科普
字符编码计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码 。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码 。比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。编码:字符(能看懂的)–字节(看不懂的)解码:字节(看不懂的)–>字符(能看懂的)字符编码Character Encod
2021-05-15 09:47:33
1097
原创 关于设置环境变量
系统读的是path,所以有两种写法:一种是直接将位置写在path里,第二种是写在外面,然后在path中引用,引用格式为:%变量名%\bin。最后重启命令行检查是否成功。
2021-03-21 17:51:34
115
原创 LeetCode95. Unique Binary Search Trees II
大意:构建所有二分搜索树(注意vector的遍历方法和返回) 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 ...
2019-05-30 23:23:58
162
原创 LeetCode48. Rotate Image
大意:将一个矩阵顺时针旋转90度。/*方法一: * 1 2 3 7 8 9 7 4 1 * 4 5 6 => 4 5 6 => 8 5 2 * 7 8 9 1 2 3 9 6 3*/ void rotate(vector<vector<int>>& matrix) {...
2019-05-30 22:55:18
136
原创 hdu1166敌兵布阵(树状数组)
#include<bits/stdc++.h>using namespace std;int a[50001],c[50001],n;int lowbit(int x){ return x&(-x);}void add(int x,int d){ while(x<=n) { c[x]+=d; ...
2019-05-11 10:31:38
184
原创 最小代价路径 (Min Cost Path)
#include<bits/stdc++.h>using namespace std;const int maxn=100;int cost[maxn][maxn];int main(){ int a,b; cin>>a>>b;///输入行数列数 ///输入地图 for(int i=0; i<a; i...
2019-04-11 22:13:08
2119
原创 Boolean Expressions (递归相互调用)
The objective of the program you are going to produce is to evaluate boolean expressions as the one shown next:Expression: ( V | V ) & F & ( F | V )where V is for True, and F is for Fals...
2019-04-07 15:00:43
2487
原创 整数划分
整数划分问题其实和在篮子里放苹果问题是一样的。从第二个角度思考比较容易。#include<bits/stdc++.h>using namespace std;///把m个苹果放在n个篮子里int fun2(int m,int n){ if(m==0) return 1; ///没有苹果,规定有一种放法 if(n==1) return 1; ///有...
2019-04-07 08:31:03
151
原创 Shuffle'm Up POJ - 3087
https://vjudge.net/problem/POJ-3087#author=0模拟。按步骤往下写就行,如果形成一个环,说明无解。#include<iostream>#include<cstring>using namespace std;char s1[101],s2[101],s12[201],s[201];int len,k,step;...
2019-03-09 12:53:17
91
原创 Prime Path POJ - 3126
广搜寻找最短路径,替换素数的一位就意味着一条路。#include<iostream>#include<cstring>#include<queue>using namespace std;///step记录到每个素数的步数,visited记录该素数是否访问过///path记录路径int m,n,step[10000],visited[10...
2019-03-09 10:46:02
123
原创 Find The Multiple POJ - 1426
深搜,广搜都能做,用long long int 即可,广搜得出的结果是最小的。但是,广搜会超时,我也不知道为啥,所以还可以直接本地算出来前200.就像这样long long int a[200]={1,10,111,100,10,1110,1001,1000,111111111,10,11,11100,1001,10010,1110,10000,11101,1111111110,11001,1...
2019-03-07 21:28:26
179
原创 Fliptile POJ - 3279(超详解)
https://vjudge.net/problem/POJ-3279#author=0先说一下整体思路,先枚举第一行的2^(行数)种情况,然后往下深搜,实际上,第一行的状态确定了,下面行的状态也随之确定。最后判断最后一行是不是都是白色即0,否,则该情况不行。还有,发现个问题,系统的测试数据中可能没有针对字典序要求的用例。#include<iostream>#includ...
2019-03-03 23:15:16
2109
6
原创 问题 B: 打印极值点下标
时间限制: 1 Sec 内存限制: 32 MB提交: 969 解决: 139[提交][状态][讨论版][命题人:外部导入]题目描述在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。输入每个案例的输入如下:有2×n+1行输入:第一行是要处理的数组的个数n;对其余2×n行,第一行是此数...
2019-02-09 19:47:26
735
原创 区间贪心
区间不相交问题题目描述暑假到了,小明终于可以开心的看电视了。但是小明喜欢的节目太多了,他希望尽量多的看到完整的节目。现在他把他喜欢的电视节目的转播时间表给你,你能帮他合理安排吗?输入输入包含多组测试数据。每组输入的第一行是一个整数n(n<=100),表示小明喜欢的节目的总数。接下来n行,每行输入两个整数si和ei(1<=i<=n),表示第i个节目的开始和结束时...
2019-02-05 21:31:55
152
原创 n皇后问题总结
#pragma GCC diagnostic error "-std=c++11" ///使用c++11编译#include <bits/stdc++.h>using namespace std;///总之,n皇后问题的解法借助了求全排列的方法///实际上,将n皇后问题转换成了求合法的行排列const int maxn = 21,n=8;int p[maxn], h...
2019-02-05 17:30:24
1207
原创 生成全排列
///法一:递归实现#include <bits/stdc++.h>using namespace std;const int maxn=21;int n,p[maxn],hashTable[maxn]={false}; ///p存放排列void generatep(int index){ if(index==n+1){ ///递归结束条件 for(in...
2019-02-03 08:46:05
737
2
原创 PTA 悄悄关注
7-11 悄悄关注 (25 分)新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列表和其对其他用户的点赞情况,扒出有可能被其悄悄关注的人。输入格式:输入首先在第一行给出某用户的关注列表,格式如下:人数N 用户1 用户2 …… 用户N其中N是不超过5000的正...
2019-01-02 12:16:39
1070
原创 7-6 旅游规划
有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编...
2018-12-27 12:21:40
356
原创 7-14 Dijkstra算法(模板)
给一个n(1 ≤ n ≤ 2500) 个点 m(1 ≤ m ≤ 6200) 条边的无向图,求 s 到 t 的最短路。输入格式:第一行四个由空格隔开的整数 n、m、s、t。之后的 m 行,每行三个正整数 si、ti、wi(1≤wi≤109),表示一条从si 到 ti 长度为 wi 的边。输出格式:一个整数,表示从s 到t 的最短路径...
2018-12-26 11:20:32
6068
1
原创 7-13 并查集【模板】
给出一个并查集,请完成合并和查询操作。输入格式:第一行包含两个整数N、M,表示共有N个元素和M个操作。接下来M行,每行包含三个整数Zi、Xi、Yi。当Zi=1时,将Xi与Yi所在的集合合并。当Zi=2时,输出Xi与Yi是否在同一集合内,是的话输出Y;否则的话输出N。输出格式:对于每一个Zi=2的操作,对应一行输...
2018-12-25 22:37:45
867
原创 哈夫曼树
7-11 哈夫曼树 (25 分)哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出哈夫曼树的带权路径长度(WPL)。输入格式:第一行输入一个数n,第二行输入n个叶结点(叶结点权值不超过1000,2<=n<=1000)。输出格式:在一行中输出WPL值。输入样例:5...
2018-12-17 18:25:16
3698
原创 《算法竞赛入门经典》习题2-5 分数化小数
#include<bits/stdc++.h>using namespace std;int main(){ int a, b, c; cin >> a >> b >> c; int x = a, y = b; int z = x / y; printf("%d.", z); for (int i = 1; i <= c...
2018-11-21 21:22:50
264
原创 二叉树相关算法
void CreateTree(BTNode* &b, char str[]){ int i = 0; BTNode *tstack[MaxSize], *bb; int top = -1; int k = 0; while (str[i]) { switch (str[i]) { case '(': tstack[++top] = bb; i++; k = 1...
2018-11-19 20:58:51
193
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人