笔记
lkcc
眼光放长远
展开
-
布隆过滤器(Bloom Filter)
文章目录布隆过滤器位图实际面试题hash函数的实现:a+i*b位图大小和失误率的关系hash函数个数和失误率的关系布隆过滤器一个黑名单,优点占用空间少,缺点存在失误率。已经进入黑名单的查询时肯定不会出错,未加入过滤器的可能会报存在8bit = 1Byte位图布隆过滤器是一个大位图,过程:URL经过k个hash函数得到值mol位图大小m把所有得到的位置都“描黑”新的值加入的时候 若所有的值都是 ”黑“ 则已存在黑名单里(可能有误的地方)实际面试题前两个公式一旦发生小数都是向上原创 2022-04-07 15:58:30 · 164 阅读 · 0 评论 -
一致性Hash
hadoop是一个分布式文件系统,含有过滤器查找时:key先hash找到一些可能文件再遍历找key普通hash再多个服务器间,均等存放数据,冷门热门都均等。当新增或者减少服务器的时候,数据迁移的代价非常大,因为需要重新计算所有数据,再mol新服务器总数,所以需要一个新的结构一致性hash假如有·三台数据服务器数据增加方法在环上找到hash后的值,数据存储到顺时针下一个服务器上。数据迁移删掉新服务器则把数据迁移到顺时针的第一个服务器1中怎么实现顺时针寻找下一台服务器?在每.原创 2022-04-07 15:50:51 · 787 阅读 · 0 评论 -
二叉树遍历(非递归)
文章目录二叉树遍历非递归版本前序遍历中序遍历后序遍历层序遍历层序遍历+map记录高度二叉树遍历非递归版本前序遍历如果右侧不为空,则右侧进栈,随后是左侧进栈。因为栈是先进后出,所以实现先序遍历。void aaa2(node *head){ if(head==NULL)return; stack<node> s; s.push(*head); while(!s.empty()){ node a = s.top();s.pop(); cout<<a.val<&原创 2022-04-07 15:43:32 · 1512 阅读 · 1 评论 -
表达式求值 (郭炜)
文章目录表达式求值是对于数学上的式子求值。 + - * / ( )例如 (2+2)*(1+1)思路:表达式 = 项±项项 = 因子*/因子因子 = (表达式) 或者 普通数字#include <bits/stdc++.h>using namespace std;int factor_value(); // 求因子int term_value(); // 求项int expression_value(); // 求表达式// 输入: (2+3)*(5+7)+9原创 2021-05-08 19:49:16 · 250 阅读 · 0 评论 -
Java 面向对象多态&重写&接口 抽象
文章目录多态重写多态多态注意事项多态是方法的多态,属性没有多态父类和子类,有联系 ,类型转换异常! ClassCastException存在条件:继承关系,方法需要重写,弗雷引用指向子类对象! Father f1 = new Son();static 修饰的方法属于类,不属于实例,所以不能多态final 常量,…private 方法: 不能多态当继承没有重写父类方法时,多态执行父类方法。当子类重写父类方法时:多态执行子类方法重写添加static 之后的是重原创 2021-04-25 20:48:09 · 180 阅读 · 0 评论 -
中缀表达式转后缀表达式
一 : 手工1:按照顺序抄下数字 再按照逻辑在两个运算数后面添加运算符。2:为每个运算添加括号,按括号运算顺序写下后缀表达式二 : 栈弹出优先级大于等于自己的运算符,直到栈空符号栈------数字栈三: 树...原创 2021-03-05 18:36:53 · 107 阅读 · 0 评论 -
c++ 逆序数 未完善
思路1.笨方法 o(n^2)2.分治 o(nlogn)(1).将数组分成两份 求两部分的逆序数(2).再算有多少逆序是从左边选择一个逆序,再从右边选择一个逆序组成的。o(n)/* 求全排列的逆序数 */#include <bits/stdc++.h>using namespace std;int MergeAccount(int a[] , int left , int mid , int right);int Mer原创 2021-03-05 18:34:36 · 233 阅读 · 0 评论 -
浮点数运算误差
文章目录浮点数运算时 会发生精度损失由于计算机底部数据存储是二进制形式8.25 用十进制表示为:8.25 * 10°120.5 用十进制表示为:1.205 * 102原创 2021-03-05 18:33:09 · 363 阅读 · 0 评论 -
Java-反射
文章目录反射:框架设计的灵魂1.概念2.具体实现反射:框架设计的灵魂1.概念JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。#mermaid-svg-1P9JHTl1SOvv8ZDT .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-原创 2020-12-28 00:58:43 · 157 阅读 · 0 评论 -
Junit单元测试
文章目录Junit单元测试Junit测试的使用方法结果java环境下Junit单元测试测试分类黑盒测试:不关注程序执行的过程(Code),只关注结果白盒测试:需要写代码,关注程序执行的具体流程Junit测试的使用方法定义一个测试类(测试用例)建议写上* 测试类名: 类名+test* 导包 cn.itcast.test定义测试方法建议写上方法名: 方法名+test返回值: void参数:无参方法上面加 @Test结果绿色原创 2020-10-23 09:27:23 · 292 阅读 · 0 评论 -
memset fill 实用总结·
文章目录头文件memset 按照字节填充字符fill 按照元素填充头文件fill函数的头文件为: std;memset函数的头文件为: string.h (c++中为 cstring)memset 按照字节填充字符#include <cstring>const int INF = 0x3f3f3f3f;memset(a,INF,sizeof(a));适用情况: 0 -1 char INF(正负都行)优点: 快,适用情况少fill 按照元素填充#include <a原创 2020-09-17 09:27:08 · 197 阅读 · 0 评论 -
c++ 全排列
转载自:http://blog.sina.com.cn/s/blog_9f7ea4390101101u.html头文件: algorithm文章目录int类型的全排列char类型的全排列String类型的全排列寻找下一个全排列正常全排列自定义规则的全排列int类型的全排列#include <iostream>#include <algorithm>using namespace std;int main(){ int a[3]; a[0] = 1; a[1.转载 2020-09-12 19:35:35 · 467 阅读 · 0 评论 -
最大公约数 GCD
文章目录偷懒版本gcd内部原理gcd的优化头文件:algorithm偷懒版本#include <bits/stdc++.h>using namespace std;int main(){ int n,m; cin>>n>>m; cout<<"最大公约数:"<<__gcd(n,m); return 0;}gcd内部原理//裸的_gcd(a,b);int gcd(int n,int m){ return (!m)?n原创 2020-08-22 15:50:16 · 303 阅读 · 0 评论 -
c++ 双端队列deque 单调栈stack
文章目录滑动窗口的最大值Code涉及知识点:双端队列 deque滑动窗口的最大值由于需要直到某个区间的最大值,在区间向右滑动的时候,可以拆解为R向右一位,L也向右一位。由于我们只需要最大值,所以deque里的内容单调递减的,开头的最大,记录的是arr的【下标】Code返回每个长度为size的区间内最大值vector<int> getMaxarr(vector<int>& arr , int size){ vector<int> res;原创 2020-08-17 22:52:33 · 394 阅读 · 0 评论 -
Mancher 最长回文字串
文章目录Mancher 最长回文字串暴力方法 O(n^2)1.缺陷版本2.改正版本MancherMancher 最长回文字串暴力方法 O(n^2)1.缺陷版本遍历每个字符以每个字符为中间位置向左右两边扩一位。不能发现偶数回文2.改正版本先再字符串每个字符之间插入 #再逐个向两边阔就不会错过偶数回文 得到的值 /2 就是每个位置(包括虚轴)的回文长度插入的字符不一定必须是# ,可以是任何字符,和原串内容的相同字符也可以Mancher...原创 2020-08-07 14:04:15 · 227 阅读 · 0 评论 -
KMP 字符串匹配 个人笔记
文章目录kmp算法解决的是两个字符串的匹配问题先考虑暴力方法KMP算法正片开始kmp时间复杂度低在哪?kmp优化在哪个地方kmp算法解决的是两个字符串的匹配问题及str1里面包含str2子串,返回str1重复的第一个数的下标以此为例子先考虑暴力方法枚举str1的每个字符来做开头 ,在str[i]==str[j]的情况下, k( i ) 和 j 向后移动,受str2遍历结束的时候 , 输出 i结束 ,如果不同 则 i 向下移动一个位置 重新遍历 str2这样做的时间复杂度很明显是o(n2原创 2020-08-03 22:52:33 · 626 阅读 · 0 评论 -
图论-最短路径算法总结
最短路问题文章目录Dijkstra算法Dijkstra算法的策略Dijkstra算法Dijkstra算法:迪杰斯拉特拉算法解决:单源最短路问题特点:只能解决边权非负的问题,如果有负 推荐SPFA算法给一个有向图和一个起点,通过算法求起点到每个顶点的最短距离。Dijkstra算法的策略设置集合S存放已被访问的顶点,然后执行①②每次从集合(未被攻占)中选择与起点最短距离最小的点(记为U),访问并加入集合(被攻占)令顶点U为中介点,优化最短路code for 邻接矩阵int n,G[原创 2020-07-28 11:22:24 · 719 阅读 · 0 评论 -
TCP笔记 java篇
文章目录UDP和TCP的区别UDPTCPIP端口号TCP通信通信的步骤UDP和TCP的区别UDP缺点:可能出现传输的损失优点:传输效率高,资源消耗少场景:视频电话等TCP缺点:传输效率低优点:不会出现数据丢失场景:文件下载,网页加载等不可以出错的地方IP每台计算机都有一个IP地址,计算机之间可以通过IP地址找到对方并传输据IPV4地址约40亿个,已经不够实用IPV6号称可以为地球上每一粒沙(子)币都分配一个IP端口号是一个逻辑端口,被用来区分数据传输到某个应用上。可以手动设原创 2020-07-27 23:47:59 · 154 阅读 · 0 评论 -
HashMap通过键值对,对文件内容进行排序
文章目录思路操作步骤:**先看一下最初的文件**Code**结果:**????.newLine();目的是将文件按照 “ . ” 前面的数字对段落进行排序思路数据结构选HashMap用java IO自带的字符缓冲流操作步骤:1.先创建BufferedReader和BufferedWriter对象2.用readLine()方法获取一个字符串,规则是\n或\r或\n\r为止 3.分割字符串为 "."前数字一部分 "."后内容一部分4.存入HashMap,5.遍历HashMap中的键,用此原创 2020-07-04 20:54:50 · 470 阅读 · 0 评论 -
java比较器两种写法
先补充一下c/c++的思维bool cmp(int a,int b){ return a>b; } //大到小排序第一种:前 -- 后 = 增序(小-->大)后 -- 前 = 降序(大-->小)第二种:返回值负数 (正常c++的思维 大-->小)返回值整数 (c++的思维反过来)package aaa;import java.util.Arrays;import java.util.Comparator;public class test01 {原创 2020-06-29 00:15:09 · 745 阅读 · 0 评论 -
【精简】排序算法总结
文章目录选择排序冒泡排序插入排序快速排序归并排序堆排序完全二叉树选择排序遍历数组记录最小值下标,与第一项依次交换。for(int i=1;i<n;i++){ int count=i; for(int j=i+1;j<=n;j++){ if(num[count]>num[j])count=j; } swap(num[count],num[i]);}冒泡排序将大气泡换到后面for(int i=n;i>=1;i--){ for(int j=1;j<i;j原创 2020-06-24 23:31:21 · 608 阅读 · 2 评论 -
动态规划的个人记录
文章目录线性DP最长上升子序列:最长公共子序列:背包DP一般解题流程:分析原问题找出子问题 --> 状态转移方程 --> 决策线性DP最长上升子序列:n^2作法dp[i]表示以第i个元素结尾的最长公共子序列长度//dp[i]表示以第i个元素结尾的最长公共子序列长度#include <bits/stdc++.h>using namespace std;const int maxn = 55;int n;int num[maxn];int dp[ma原创 2020-06-15 11:10:24 · 213 阅读 · 0 评论 -
STL容器的小归纳 个人向
亲爱的STL容器STL 左闭右开vector<> 可以下标访问 push_back() pop_back() size() clear() insert(it,x)向任意迭代器it插入一个元素x erase(it) 删除迭代器元素 erase(first,last); 删除区间内所有元素 set 去重升序 insert(x) 插入元素 find(x) 查找x返回迭代器 O(logN) size() clear() erase(it) 删除迭代器元素 O(1) st.er原创 2020-05-25 10:17:47 · 171 阅读 · 1 评论 -
RMQ问题 ST表 & 树状数组 线段树笔记
静态区间最值问题推荐使用ST表,倍增思想。此类题目一般查询数量巨大,所以O(log n)不足以AC,需将查询复杂度优化为O(1)ST表模板如下:#include<bits/stdc++.h>using namespace std;const int maxn = 5e4+100;int dpMin[maxn][20],dpMax[maxn][20];int a[maxn];int n,q;int mn[1000006];void RMQ(){ for(int原创 2020-05-12 18:58:20 · 315 阅读 · 0 评论 -
个人杂记-----收录各种新奇方法
2020.05.08STL库nth_element把第k+1小的数放到下标为k的位置上#include <cstdio>#include <iostream>#include <algorithm>using namespace std;long long n,k,a[5000010];int main(){ scanf("%d%d",...原创 2020-05-08 16:02:28 · 215 阅读 · 0 评论 -
C++中size(),sizeof(),strlen(),length() 干货总结
strlen ()char a[]={"asd"}int len = a.strlen(); // 3//参数:字符指针,返回值:字符串的长度 //或者遇到 '\0' 提前结束sizeof()返回字节大小,如果是数组的话,小学乘法。数据类型字节long8int4float4double8short2byte1ch...原创 2020-04-28 00:18:05 · 321 阅读 · 0 评论 -
多重背包问题-笔记
多重背包问题是对物品的数目有了限制 并且加强了数据n2复杂度会超时 所以使用二进制优化7 = 2^0 + 2^1 + 2^2#include <iostream>#include <vector>using namespace std;int N,V;int f[2010]; //dp用struct node{ //存体积 价值 int v,w;}...原创 2020-04-17 22:31:49 · 256 阅读 · 0 评论