- 博客(23)
- 收藏
- 关注
原创 Kaezip 压缩
虽然压缩和解压缩会带来一定的计算开销,但 Kaezip 的设计是为了在保持高压缩比的同时,优化性能。如果原始数据量很大,但可用的存储空间有限,就可能导致索引构建失败,无法有效地查询和检索数据。Kaezip 压缩是一种高效的数据压缩算法,采用无损压缩技术,可以显著减少数据占用的存储空间。压缩后的数据可以继续用于索引构建,而不会占用过多的存储空间。在压缩过程中,原始数据被转换为更小的格式,确保在数据不丢失的情况下,能够高效地存储更多的数据。通过有效的压缩,确保索引能够正常生成,从而提高查询效率。
2024-10-13 10:22:00
249
原创 Bloom Filter工作原理
可能误判:Bloom Filter 可能会错误地表示某个元素在集合中(假阳性),但不会漏掉真实存在的元素(假阴性)。Bloom Filter 是一种空间效率高的概率数据结构,用于测试一个元素是否属于一个集合。*快速查找:可以快速判断某个值是否存在于集合中。
2024-10-13 10:21:19
189
原创 SpringSecurity+JWT实现的三端统一认证,支持密码登录,验证码登录,第三方扫码登录。
特点:可以使用与Web端相同的登录方式,还可以利用设备特性(如指纹识别、面部识别)进行身份验证。特点:主要用于系统间的身份验证和数据交互,通常使用token(如JWT)进行身份验证。特点:通常使用传统的用户名和密码进行登录,也可以支持验证码登录或第三方账号登录(如微信、Google等)。例子:用户在电脑上使用浏览器访问电商网站,填写用户名和密码进行登录。例子:用户在手机上使用电商App,输入手机号和验证码进行登录。定义:指用户通过手机或平板电脑上的应用程序进行登录和操作。
2024-10-13 10:19:58
242
原创 RabbitMQ工作流程
交换机:负责根据路由规则将消息分发到一个或多个队列中。生产者:负责发送消息到 RabbitMQ 的队列中。消息系统:实现微服务之间的解耦,促进系统间的通信。队列:存储待处理的消息,保证消息的顺序和可靠性。工作队列:将任务分发给多个消费者,提高处理效率。异步处理:将任务异步处理,减轻主应用的负担。实时数据处理:如日志处理、监控和分析等。消费者:负责从队列中接收和处理消息。
2024-10-13 10:19:03
147
原创 Spring Boot 2.1.6.RELEASE 中,javax.persistence缺失问题
在 Spring Boot 2.1.6.RELEASE 中,javax.persistence 是通过 JPA 依赖提供的,通常会与你的项目中的 Hibernate 依赖一起使用。你需要确保在 pom.xml 中包含了 JPA 相关的依赖。
2024-10-06 22:33:00
777
原创 已知长度为n的线性表 A=(a1,a2,...,an1 , an) 采用顺序存储结构。将线性表原地转换为 A‘=( an,an1,...,a2,a1),要求转换过程中用尽可能少的空间。
已知长度为 n 的线性表 A=(a1,a2,…,an1 , an) 采用顺序存储结构。编写一算法, 将线性表原地转换为 A’=( an,an1,…,a2,a1),要求转换过程中用尽可能少的辅助空间。void Reverse(Elemtype A[], int n){ for(int i=0;i<n/2;i++){ int j=n-i-1; temp=A[i]; A[j]=A[i]; A[i]=temp; }}...
2020-12-22 16:45:55
1647
原创 在含有 n 个元素的小顶堆中增加一个元素且调整为新的小顶堆。
在含有 n 个元素的小顶堆中增加一个元素且调整为新的小顶堆。算法:由于原来 n 个元素已经是堆,所以调整时仅需从 A[n+1]出发,走一条从叶子结点 A[n+1] 到根结点 A[1]的路径,将该结点与其父亲结点比较,若比父亲结点小,则与父亲 结点交换,再继续跟上一层父亲结点比较。直到根结点为止;若在某层,该结点比父 亲结点大,则算法结束,这时 A[1…n+1]个结点已经成为小顶堆。void heapsort(datataye A[1..n],datatype x){ int i,j,n; n++
2020-12-20 17:50:46
966
1
原创 假设有两个按元素递增有序排列的线性表 A 和 B,均以带头结点的链表作为存储结构,将 A 表和 B 表归并成一个按元素递减有序排列的线性表 C,并要求利 用原表(A 表和 B 表)的结点空
假设有两个按元素递增有序排列的线性表 A 和 B,均以带头结点的链表作为存储结构,编写算法,将 A 表和 B 表归并成一个按元素递减有序排列的线性表 C,并要求利 用原表(A 表和B 表)的结点空间存放表 C。算法:struct Lnode{ datatype data; struct Lnode *next;}void merge_dowum(Linklist &La,Linklist &Lb,Linklist &Lc){ pa=la->next;
2020-12-20 16:32:06
4046
2
原创 —个双向循环链表每当在链表 s 中进行一 次 Locate (s,x)运算时,并使此链表中结点保持按访问频度递减的顺序排列,以便使频繁访问的结点总是靠近表头。
有—个双向循环链表,每个结点有四个域,prior、next、data 和 freq。设计一个实现 下述要求的 Locate 运算的算法:初始化时,freq 域的值都为 0,每当在链表 s 中进行一 次 Locate (s,x)运算时,令元素值为 x 的节点中 freq 域的值增加 1,并使此链表中结点保 持按访问频度递减的顺序排列,以便使频繁访问的结点总是靠近表头。typedef struct DuLNode{ ElemType data; int freq; struct DuLNode
2020-12-18 16:30:08
732
4
原创 删除带头结点的单链表中所有介于给定两个值之间(作为函数参数给出)的元素(若存在),数据值无序。
算法:遍历后删除。void RangeDelete(Linklist &L,int min,int max){ Lnode *p=L->next; Lnode *pre=L; while(p!=NUll){ if(p->data>min&&p->data<max){//寻找被删结点,删除 pre=p->next; free(p); p=pre->next; } else
2020-12-16 16:35:06
432
原创 有一个带头结点的单链表L,设计算法使其元素递增有序。
算法:直接插入排序。O(n^2)void insert_sort(Linklist &L){ Lnode *p,*pre,*r; p=L->next; r=p->next;//r保持*p后继结点指针,以保证不断链 p->next=NULL;//构造只含一个数据结点的有序表 p=r; while(p!=NULL){ r=p->next; pre=L; while(pre->next!=NULL&am
2020-12-16 15:48:00
4898
6
原创 将带头结点的单链表就地逆置
思想:头插法建立单链表Linklist Reverse(Linklist L){ Lnode *p,*r;//p为工作指针,r为p的后继指针,防止断链 p=L->next;//从第一个元素结点开始 L->next=NULL;//将头结点的L的后继置为NULL while(p!=NULL){//依次降元素结点拿下 r=p->next; //暂存p的后继 p->next=L->next;//将p结点插在头结点之后 L->
2020-12-15 22:00:41
1693
1
原创 在带头结点的单链表L中,删除所有值为x的结点,并释放空间,假设值为x的结点不唯一。
算法思想:遍历单链表,遇到值为x的就删除。Del_x(Linklist &L,Elemtype x){ Lnode *p=L->next,*pre=L,*q; while(p!=NULL){ if(p->data==x){ q=p; //q指向该结点 p=p->next; pre->next=p;//删除*q结点 free(p);//释放*q结点 } else{//否则,pre和p后移
2020-12-15 20:51:43
1596
2
原创 计算二叉树的最大宽度
采用层次遍历法(队列),记下各层的结点数,每层遍历完毕,若结点数大于原先最大宽度,则修改最大宽度。int Width(Bitree bt){ if(bt==NULL) return(0);//空二叉树宽度为0 else{ Bitree Q[];//Q是队列,元素为二叉树结点的指针,容量足够大 front=1;rear=1;last=1;//对头指针、队尾指针、last为最右结点在队列中的位置 temp=0;maxw=0; //temp记局部宽度,maxw记最大宽度
2020-11-19 15:16:23
6873
7
原创 简单选择排序
1、数组存储/** * 选择排序 * @param array * @return */public static int[] selectionSort(int[] array) { if (array.length == 0) return array; for (int i = 0; i < array.length; i++) { int minIndex = i; for (int j = i; j < array.length; j++) { if
2020-11-11 17:55:03
167
原创 查找二叉排序树中值为X的结点,若找到则计数加一,否则作为一个新的结点插入,插入后仍为二叉排序树。
1、递归算法void InOrder(BSTree *root,int x){ if(!root) return ; InOrder(root->lchild,x); if(root->data=x){ count ++; } InOrder(root->rchild,k);}2、非递归算法
2020-11-10 15:57:59
956
原创 (二叉排序树)从小到大输出二叉排序树中所有值不小于K的关键字
其实就是对二叉树进行遍历我们知道中序遍历二叉树是先左子树后右子树是从小到大的。void InOrder(BSTree *root,int k){ if(!root) return ; InOrder(root->lchild,k); if(root->data>=k){ visit(root); } InOrder(root->rchild,k);}...
2020-11-10 14:37:52
4628
原创 考研算法总结
1、元素逆置方法一:给定一个字符串C=“a0a1……an-1an”,其采用顺序队列结构存储,现需要将其逆序,即变换成“anan-1……a1a0”,变换后的结果仍然存储在原队列中。若给定一个顺序栈作为辅助结构,请给出实现策略。1. 元素逆置://顺序的入栈 2. for(i = 0;i < n;i++)3. {4. scanf("%d",&a);5. Push(&s,a);6. }7. 8. int stackNumber;9. for(i=0;
2020-10-20 21:15:42
2204
原创 考研1800笔记线性表
请在下列算法的横线上填入适当的语句。【清华大学1994 五 (15分)】 FUNCTION inclusion(ha,hb:linklisttp):boolean; {以ha和hb为头指针的单链表分别表示有序表A和B,本算法判别表A是否包含在表B内,若是,则返回“true”,否则返回“false”} BEGIN pa:=ha^.next; pb:=hb^.next; (1)if(pa==NULL) then return true;//当A为空表 WHILE(2)pb!=NULL &a.
2020-10-19 20:21:16
696
1
原创 第一章绪论
第一章绪论1、与数据元素本身的形式、内容、相对位置、个数无关的是数据的 逻辑结构 ;2、数据>数据元素(基本单位)>数据项(最小单位)6 、试分析下列各算法的时间复杂度(1)`x=90; y=100;while(y>0) if(x>100) {x=x-10;y--} else x++; 我的答案:O(y);正确答案:O(1);ps:因为y的大小已经确定,所以y是常量。...
2020-10-17 21:31:58
675
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人