当前位置: 首页 > news >正文

数据结构 study 5: typedef 结构体 数组 作为形参

代码

/* c1.h (程序名) */
#include<string.h>
#include<ctype.h>
#include<malloc.h> /* malloc()等 */
#include<limits.h> /* INT_MAX等 */
#include<stdio.h> /* EOF(=^Z或F6),NULL */
#include<stdlib.h> /* atoi() */
#include <sys/io.h> /* eof() */
#include<math.h> /* floor(),ceil(),abs() */#include<pthread.h> /* exit() */
/* 函数结果状态代码 */
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
/* #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行 */
typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef int Boolean; /* Boolean是布尔类型,其值是TRUE或FALSE */#if 0
请输入集合A和B的元素个数m,n:6,4
请输入集合A的元素(共6个):cbegfd
请输入集合B的元素(共4个):abnf
c e g d n a
#endif #define N 2
typedef char ElemType;/* c2-3.h 线性表的静态单链表存储结构 */
#define MAXSIZE 12 /* 链表的最大长度 */
typedef struct
{ElemType data;int cur;
}component,SLinkList[MAXSIZE];/* bo2-3.c 实现算法2.15、2.16的程序 (数据结构由c2-3.h定义) (3个) */
int Malloc(SLinkList space) /* 算法2.15 */
{ /* 若备用链表非空,则返回分配的结点下标(备用链表的第一个结点),否则返回0 */int i=space[0].cur;if(i) /* 备用链表非空 */space[0].cur=space[i].cur; /* 备用链表的头结点指向原备用链表的第二个结点 */return i; /* 返回新开辟结点的坐标 */
}void Free(SLinkList space,int k) /* 算法2.16 */
{ /* 将下标为k的空闲结点回收到备用链表(成为备用链表的第一个结点) */space[k].cur=space[0].cur; /* 回收结点的"游标"指向备用链表的第一个结点 */space[0].cur=k; /* 备用链表的头结点指向新回收的结点 */
}void DestroyList()
{ /* 静态数组不能被销毁 */
}/* bo2-32.c 一个数组可生成若干静态链表(数据结构由c2-3.h定义)的基本操作(12个) */
void InitSpace(SLinkList L) /* 算法2.14。另加 */
{ /* 将一维数组L中各分量链成一个备用链表,L[0].cur为头指针。“0”表示空指针 */int i;for(i=0;i<MAXSIZE-1;i++){L[i].cur=i+1;L[i].data = ' ';}L[MAXSIZE-1].cur=0;#if 1printf("MAXSIZE = %d\n",MAXSIZE);i=0;   while(i < MAXSIZE) /* 输出教科书中图2.10(a)的状态 */{printf("%3d",i); /* 输出链表的当前值 */printf("%3s"," ");i++ ;}    printf("\n");i=0;   while(i < MAXSIZE) /* 输出教科书中图2.10(a)的状态 */{printf("%3d",L[i].cur); /* 输出链表的当前值 */printf("%3s"," ");i++ ;}    printf("\n");    #endif   
}int InitList(SLinkList L)
{ /* 构造一个空链表,返回值为空表在数组中的位序 */int i;i=Malloc(L); /* 调用Malloc(),简化程序 */L[i].cur=0; /* 空链表的表头指针为空(0) */return i;
}Status ClearList(SLinkList L,int n)
{ /* 初始条件:L中表头位序为n的静态链表已存在。操作结果:将此表重置为空表 */int j,k,i=L[n].cur; /* 链表第一个结点的位置 */L[n].cur=0; /* 链表空 */k=L[0].cur; /* 备用链表第一个结点的位置 */L[0].cur=i; /* 把链表的结点连到备用链表的表头 */while(i) /* 没到链表尾 */{j=i;i=L[i].cur; /* 指向下一个元素 */}L[j].cur=k; /* 备用链表的第一个结点接到链表的尾部 */return OK;
}Status ListEmpty(SLinkList L,int n)
{ /* 判断L中表头位序为n的链表是否空,若是空表返回TRUE;否则返回FALSE */if(L[n].cur==0) /* 空表 */return TRUE;elsereturn FALSE;
}int ListLength(SLinkList L,int n)
{ /* 返回L中表头位序为n的链表的数据元素个数 */int j=0,i=L[n].cur; /* i指向第一个元素 */while(i) /* 没到静态链表尾 */{i=L[i].cur; /* 指向下一个元素 */j++;}return j;
}Status GetElem(SLinkList L,int n, int i,ElemType *e)
{ /* 用e返回L中表头位序为n的链表的第i个元素的值 */int l,k=n; /* k指向表头序号 */if(i<1||i>ListLength(L,n)) /* i值不合理 */return ERROR;for(l=1;l<=i;l++) /* 移动i-1个元素 */k=L[k].cur;*e=L[k].data;return OK;
}int LocateElem(SLinkList L,int n,ElemType e)
{ /* 在L中表头位序为n的静态单链表中查找第1个值为e的元素。 *//* 若找到,则返回它在L中的位序,否则返回0 */int i=L[n].cur; /* i指示表中第一个结点 */while(i&&L[i].data!=e) /* 在表中顺链查找(e不能是字符串) */i=L[i].cur;return i;
}Status PriorElem(SLinkList L,int n,ElemType cur_e,ElemType *pre_e)
{ /* 初始条件:在L中表头位序为n的静态单链表已存在 *//* 操作结果:若cur_e是此单链表的数据元素,且不是第一个, *//*           则用pre_e返回它的前驱,否则操作失败,pre_e无定义 */int j,i=L[n].cur; /* i为链表第一个结点的位置 */do{ /* 向后移动结点 */j=i;i=L[i].cur;}while(i&&cur_e!=L[i].data);if(i) /* 找到该元素 */{*pre_e=L[j].data;return OK;}return ERROR;
}Status NextElem(SLinkList L,int n,ElemType cur_e,ElemType *next_e)
{ /* 初始条件:在L中表头位序为n的静态单链表已存在 *//* 操作结果:若cur_e是此单链表的数据元素,且不是最后一个, *//* 则用next_e返回它的后继,否则操作失败,next_e无定义 */int i;i=LocateElem(L,n,cur_e); /* 在链表中查找第一个值为cur_e的元素的位置 */if(i) /* 在静态单链表中存在元素cur_e */{i=L[i].cur; /* cur_e的后继的位置 */if(i) /* cur_e有后继 */{*next_e=L[i].data;return OK; /* cur_e元素有后继 */}}return ERROR; /* L不存在cur_e元素,cur_e元素无后继 */
}Status ListInsert(SLinkList L,int n,int i,ElemType e)
{ /* 在L中表头位序为n的链表的第i个元素之前插入新的数据元素e */int l,j,k=n; /* k指向表头 */if(i<1||i>ListLength(L,n)+1)return ERROR;j=Malloc(L); /* 申请新单元 */if(j) /* 申请成功 */{L[j].data=e; /* 赋值给新单元 */for(l=1;l<i;l++) /* 移动i-1个元素 */k=L[k].cur;L[j].cur=L[k].cur;L[k].cur=j;return OK;}return ERROR;
}Status ListDelete(SLinkList L,int n,int i,ElemType *e)
{ /* 删除在L中表头位序为n的链表的第i个数据元素e,并返回其值 */int j,k=n; /* k指向表头 */if(i<1||i>ListLength(L,n))return ERROR;for(j=1;j<i;j++) /* 移动i-1个元素 */k=L[k].cur;j=L[k].cur;L[k].cur=L[j].cur;*e=L[j].data;Free(L,j);return OK;
}Status ListTraverse(SLinkList L,int n,void(*vi)(ElemType))
{ /* 依次对L中表头位序为n的链表的每个数据元素,调用函数vi()。一旦vi()失败,则操作失败 */int i=L[n].cur; /* 指向第一个元素 */while(i) /* 没到静态链表尾 */{vi(L[i].data); /* 调用vi() */i=L[i].cur; /* 指向下一个元素 */}printf("\n");return OK;
}void show_space_content(SLinkList space)
{ int i ;printf("\n\n\nMAXSIZE = %d\n",MAXSIZE);i=0;   while(i < MAXSIZE) /* 输出教科书中图2.10(a)的状态 */{printf("%3d",i); /* 输出链表的当前值 */printf("%3s"," ");i++ ;}    printf("\n");i=0;   while(i < MAXSIZE) /* 输出教科书中图2.10(a)的状态 */{printf("%3c",space[i].data); /* 输出链表的当前值 */printf("%3s"," ");i++ ;}        printf("\n");  i=0;   while(i < MAXSIZE) /* 输出教科书中图2.10(a)的状态 */{printf("%3d",space[i].cur); /* 输出链表的当前值 */printf("%3s"," ");i++ ;}    printf("\n");        
}void difference_abc(SLinkList space, int *pt_start,char *ArrayA, int arraya_len, char *ArrayB,int arrayb_len){int head ; //静态链表 头结点int tail ; //静态链表 尾结点int i ; int index = 0 ;InitSpace(space);show_space_content(space);        head = Malloc(space);show_space_content(space);  *pt_start = head ;tail = head ;for(i=0;i<arraya_len;i++){index = Malloc(space);show_space_content(space);  space[index].data = ArrayA[i];space[tail].cur = index ;tail = index ;}space[tail].cur = 0 ;show_space_content(space);int pos = 0 ;int pre_pos =0  ;printf("\n\n begin to compare: \n\n");for(i=0; i< arrayb_len; i++){pos = space[head].cur ;pre_pos = pos ;while(pos !=space[tail].cur){if(space[pos].data == ArrayB[i]){break ;}pre_pos = pos ;pos = space[pos].cur ;}if(pos == space[tail].cur){/* 当前表中不存在该元素,插入在tail所指结点之后,且tail的位置不变 */printf("new %c\n", ArrayB[i]);    index=Malloc(space);space[index].data=ArrayB[i];space[index].cur=space[tail].cur;space[tail].cur=index;   show_space_content(space);}else{/* 该元素已在表中,删除之 */space[pre_pos].cur=space[pos].cur;printf("delete %c\n", ArrayB[i]);  Free(space,pos);show_space_content(space);if(tail==pos){tail=pre_pos; /* 若删除的是尾元素,则需修改尾指针 */}                }}show_space_content(space);
}void difference(SLinkList space,int *S) /* 算法2.17 */
{ /* 依次输入集合A和B的元素,在一维数组space中建立表示集合(A-B)∪(B-A) *//* 的静态链表,S为其头指针。假设备用空间足够大,space[0].cur为备用空间的头指针 */int r,p,m,n,i,j,k;ElemType b;ElemType ch ;InitSpace(space); /* 初始化备用空间 */*S=Malloc(space); /* 生成S的头结点 */r=*S; /* r指向S的当前最后结点 */printf("r = %d\n",r);printf("请输入集合A的元素个数m:\n");scanf("%d",&m);scanf("%*c"); /* %*c吃掉回车符 */printf("m = %d\n",m);  //printf("请输入集合A和B的元素个数m,n:");//scanf("%d,%d%*c",&m,&n); /* %*c吃掉回车符 */printf("请输入集合A的元素(共%d个):\n",m);for(j=1;j<=m;j++) /* 建立集合A的链表 */{i=Malloc(space); /* 分配结点 */scanf("%c",&ch); /* 输入A的元素值 */printf("%c -- %d\n",ch,i);space[i].data = ch ;space[r].cur=i; /* 插入到表尾 */printf("i = %d,r = %d, ch = %c\n",i, r,ch);r=i;}printf("i = %d,r = %d, ch = %c\n",i, r,ch);scanf("%*c"); /* %*c吃掉回车符 */space[r].cur=0; /* 尾结点的指针为空 */printf("请输入集合B的元素个数n:\n");scanf("%d",&n);scanf("%*c"); /* %*c吃掉回车符 */printf("n = %d\n",n);printf("请输入集合B的元素(共%d个):\n",n);for(j=1;j<=n;j++){ /* 依次输入B的元素,若不在当前表中,则插入,否则删除 */scanf("%c",&b);printf("b = %c\n",b);    p=*S;k=space[*S].cur; /* k指向集合A中的第一个结点 */printf("k = %d\n",k);while(k!=space[r].cur&&space[k].data!=b){ /* 在当前表中查找 */p=k;k=space[k].cur;}printf("refer data  :  cbegfd\n");printf("p=%d,k=%d,r =%d, space[r].cur = %d\n\n\n",p,k,r,space[r].cur);if(k==space[r].cur){ /* 当前表中不存在该元素,插入在r所指结点之后,且r的位置不变 */i=Malloc(space);space[i].data=b;space[i].cur=space[r].cur;space[r].cur=i;printf("\n not exist \n");}else /* 该元素已在表中,删除之 */{space[p].cur=space[k].cur;Free(space,k);if(r==k){r=p; /* 若删除的是尾元素,则需修改尾指针 */}printf("\n exist \n");}}scanf("%*c"); /* %*c吃掉回车符 */
}void visit(ElemType c)
{printf("%c ",c);
}void main()
{int k;SLinkList s;int m ;int n ;int i ;int ch ;char ArrayA[MAXSIZE];int arrayA_cnt = 0 ;char ArrayB[MAXSIZE];int arrayB_cnt = 0 ;  printf("请输入集合A的元素个数m: %d\n",6);printf("请输入集合A的元素(共6个):cbegfd\n");printf("请输入集合B的元素个数n:%d\n",4);printf("请输入集合B的元素(共4个):abnf\n");printf("c e g d n a\n");printf("请输入集合A的元素个数m--(eg:6):\n");scanf("%d",&m);scanf("%*c"); /* %*c吃掉回车符 */printf("m = %d\n",m); printf("请输入集合A的元素(共%d个):(eg:cbegfd)\n",m);for(i=0; i<m;i++){ch = getchar();ArrayA[i] = ch ;arrayA_cnt++ ;}printf("请输入集合B的元素个数n:(eg:4)\n");scanf("%d",&n);scanf("%*c"); /* %*c吃掉回车符 */printf("n = %d\n",n);printf("请输入集合B的元素(共%d个): (eg: abnf)\n",n);for(i=0; i<n;i++){ch = getchar();ArrayB[i] = ch ;arrayB_cnt++ ;}  // difference(s,&k);//printf("\nk = %d\n", k);difference_abc(s,&k,ArrayA,arrayA_cnt,ArrayB,arrayB_cnt);ListTraverse(s,k,visit);
}

运行:

请输入集合A的元素个数m: 6
请输入集合A的元素(共6个):cbegfd
请输入集合B的元素个数n:4
请输入集合B的元素(共4个):abnf
c e g d n a
请输入集合A的元素个数m--(eg:6):
6
m = 6
请输入集合A的元素(共6个):(eg:cbegfd)
cbegfd
请输入集合B的元素个数n:(eg:4)
4
n = 4
请输入集合B的元素(共4个): (eg: abnf)
abnf
MAXSIZE = 120     1     2     3     4     5     6     7     8     9    10    111     2     3     4     5     6     7     8     9    10    11     0MAXSIZE = 120     1     2     3     4     5     6     7     8     9    10    11m1     2     3     4     5     6     7     8     9    10    11     0MAXSIZE = 120     1     2     3     4     5     6     7     8     9    10    11m2     2     3     4     5     6     7     8     9    10    11     0MAXSIZE = 120     1     2     3     4     5     6     7     8     9    10    11m3     2     3     4     5     6     7     8     9    10    11     0MAXSIZE = 120     1     2     3     4     5     6     7     8     9    10    11c                                                     m4     2     3     4     5     6     7     8     9    10    11     0MAXSIZE = 120     1     2     3     4     5     6     7     8     9    10    11c     b                                               m5     2     3     4     5     6     7     8     9    10    11     0MAXSIZE = 120     1     2     3     4     5     6     7     8     9    10    11c     b     e                                         m6     2     3     4     5     6     7     8     9    10    11     0MAXSIZE = 120     1     2     3     4     5     6     7     8     9    10    11c     b     e     g                                   m7     2     3     4     5     6     7     8     9    10    11     0MAXSIZE = 120     1     2     3     4     5     6     7     8     9    10    11c     b     e     g     f                             m8     2     3     4     5     6     7     8     9    10    11     0MAXSIZE = 120     1     2     3     4     5     6     7     8     9    10    11c     b     e     g     f     d                       m8     2     3     4     5     6     7     0     9    10    11     0begin to compare:new aMAXSIZE = 120     1     2     3     4     5     6     7     8     9    10    11c     b     e     g     f     d     a                 m9     2     3     4     5     6     7     8     0    10    11     0
delete bMAXSIZE = 120     1     2     3     4     5     6     7     8     9    10    11c     b     e     g     f     d     a                 m3     2     4     9     5     6     7     8     0    10    11     0
new nMAXSIZE = 120     1     2     3     4     5     6     7     8     9    10    11c     n     e     g     f     d     a                 m9     2     4     8     5     6     7     3     0    10    11     0
delete fMAXSIZE = 120     1     2     3     4     5     6     7     8     9    10    11c     n     e     g     f     d     a                 m6     2     4     8     5     7     9     3     0    10    11     0MAXSIZE = 120     1     2     3     4     5     6     7     8     9    10    11c     n     e     g     f     d     a                 m6     2     4     8     5     7     9     3     0    10    11     0
c e g d n a

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35509.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

Linux之VFS

一、概述 1.1 VFS简介 Linux支持多种不同文件系统&#xff0c;要实现这个目的&#xff0c;就要将对各种不同文件系统和管理纳 入到一个统一的框架中&#xff0c;让内核中的文件系统界面成为一条文件系统“总线”&#xff0c;使用户程序 可以通过同一个文件系统操作界面&#x…...

隐私保护与生成模型: 差分隐私GAN的梯度脱敏方法

一、差分隐私是什么&#xff1f; 这篇文章以差分隐私和生成模型为主要研究对象&#xff0c;针对面临的问题&#xff0c;先介绍相关的背景知识和现有研究方法&#xff0c;后展示解决方案和实验结果。 机器学习模型的训练需要大量的数据喂食&#xff0c;而这些数据的应用就会涉…...

web前端开发学习路线图!

移动互联网时代&#xff0c;HTML5前端开发成为“抢手货”&#xff01;各大招聘网站前端相关岗位空缺大、薪资高&#xff0c;很多人在学习前端开发&#xff0c;学习前端&#xff0c;我觉得最不缺少的一个是完善的系统的web前端开发/html5学习路线图&#xff0c;另一个就是好的课…...

树和二叉树——数据结构 (严蔚敏C语言版)

1.树 1.1树的定义 树(Tree)是n(n≥0&#xff09;个结点的有限集&#xff0c;它或为空树(n0);或为非空树&#xff0c;对于非空树T: (1&#xff09;有且仅有一个称之为根的结点;(2&#xff09;除根结点以外的其余结点可分为m (m>0)个互不相交的有限集T1, T2,…,Tm&#xff…...

解决国内下载vscode慢的方法

VSCO的的下载地址&#xff1a; https://code.visualstudio.com/Download 下载也太慢了 解决办法&#xff1a; 复制链接到新的窗口&#xff0c;将圈起来的地方改为国内镜像地址&#xff1a;vscode.cdn.azure.cn 然后几秒就下载好啦...

P4173 残缺的字符串

P4173 残缺的字符串 题意&#xff1a; 有A&#xff0c;B两个串&#xff0c;每个串都有通配符&#xff0c;问A为模板串&#xff0c;对于 B 的每一个位置 i&#xff0c;从这个位置开始连续 m 个字符形成的子串是否可能与 A 串完全匹配&#xff1f; 题解&#xff1a; 我们定义…...

Linux 文件系统 整理

独栋别墅&#xff0c;容积率低 root 用户 高层。 用户组 用户 $more 预览 文件名 more /etc/group a.txt 文本 .java Java文件 Linux中不以后缀作为区分&#xff0c; 回车 &#xff1a;换行 空格&#xff1a;换页 q&#xff1a;退出 $tail&#xff1a; 尾巴 $tail -10 /etc/gr…...

cartographer_ros node (三)

上一次我们详细讲述了node_main中对应的开始轨迹的函数StartTrajectoryWithDefaultTopics&#xff0c;这次我们主要讲解在结束SLAM之后调用的node类中的两个函数FinishAllTrajectories和RunFinalOptimization() 首先是FinishAllTrajectories&#xff0c;这个函数用于结束所有处…...

VMware 仅主机模式虚拟机无法 ping 通物理机的问题

前言 最近做了另外一个项目&#xff0c;用的数据库软件版本比较新&#xff0c;我本机装的旧的&#xff0c;因版本原因无法还原数据库&#xff0c;考虑到以最快速度部署开发环境&#xff0c;决定在虚拟机里安装新版数据库软件&#xff0c;使用 VMware 网络类型的仅主机模式&…...

day01_java常识丶环境搭建丶入门程序

Java语言发展历史 Java诞生于SUN&#xff08;Stanford University Network&#xff09;&#xff0c;09年SUN被Oracle&#xff08;甲骨文&#xff09;收购。Java之父是詹姆斯.高斯林(James Gosling)。1996年发布JDK1.0版。 目前最使用最多的版本是Java8。 ​ Java技术体系平台 …...

Python numpy.unpackbits函数方法的使用

NumPy&#xff08;Numerical Python的缩写&#xff09;是一个开源的Python科学计算库。使用NumPy&#xff0c;就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数&#xff0c;涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍一下NumPy中unpackbits方法…...

Docker容器出现exited(0)状态解决办法

Docker容器出现exited&#xff08;0&#xff09;状态解决办法一、情况1&#xff1a;docker run时出现二、情况2&#xff1a;重启服务器后出现1.具体实例2.永久解决3.注意事项一、情况1&#xff1a;docker run时出现 步骤一、docker rm 容器id 将容器删除 步骤二、docker rmi 镜…...

js-如何判断一个对象为空对象

<script> export default{name:demo,data(){return{}},methods:{checkObject(obj){if (JSON.stringify(obj) {}) {return false // 如果为空 返回false}return true // 如果不为空 返回true}} } </script>...

算法刷题计划一----数据结构2-6(leetCode)

415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 &#xff0c;计算它们的和。 提示&#xff1a; num1 和num2 的长度都小于 5100 num1 和num2 都只包含数字 0-9 num1 和num2 都不包含任何前导零 你不能使用任何內建 BigInteger 库&#xff0c; 也不能直接将输入的…...

知乎热议:当代程序员应该去银行上班吗?一个985妹子用亲身经历告诉你们答案

前言 还愿邮储总行&#xff0c;写一下2020届秋招笔经面经&#xff0c;因为我主攻的国企&#xff08;银行和运营商&#xff09;&#xff0c;想去互联网的可以关掉啦 主要涉及邮储总行&#xff0c;浦发银行&#xff0c;农行&#xff0c;招商银行&#xff0c;成都银行&#xff0…...

C#不同状态的按钮 消失or显示

效果展示&#xff1a; 点击前 点击后 //而且 ”备注“ 变成可编辑状态 点击确定后 编辑成功 并变为初始 只有一个的” 编辑 “按钮 并在listView更改成功 列表样式 解决方案&#xff1a; 首先创建三个Button 都放在一个位置上 当然需要有一个按钮重合在编辑上面&#xff08;为…...

锋迷商城SpringCloud+Vue前后端分离2021微服务实战

锋迷商城项目是一个B2C商城&#xff0c;基于SpringCloud构建的大型千万级高并发电商系统。采用当下最主流的微服务分布式架构&#xff0c;前后端分离技术&#xff0c; 涵盖技术栈有&#xff1a;Vue、axios、Springboot、RESTful、mybatis、tkmapper、Swagger、任务调度Quartz/…...

力扣K神图解算法数据结构解析10

十、分治算法 剑指07&#xff0c;重建二叉树 //时间O(n)&#xff0c;空间O(n) //自己一直觉得这道题很难&#xff0c;没想到还是能够拿下&#xff0c;其实理论也清楚&#xff0c;前序遍历和中序遍历 //关键如下 //1.recur递归参数的确定&#xff0c;根节点在前序遍历中的索引&a…...

使用RAK7268网关与RAK3172节点连接至TTN最新的服务器TTS上

一、背景 当需要连接网关到TTN的时候我们突然发现&#xff1a;在TTN V2版本上已经无法创建新的网关了。另外&#xff0c;V2版本对于当前已创建的网关支持在今年年底也要失效了。所以&#xff0c;我们需要了解如何将网关连接到TTN最新的服务器TTS上。 二、目的 本文将会使用到RA…...

树莓派基于Linux内核驱动开发详解

一、驱动认知 首先理解Linux内核框图 文件系统认知&#xff0c;Linux内核框图 1、什么是驱动 linux内核驱动。软件层面上的驱动 广义上是指&#xff1a;这一段代码操作了硬件去动&#xff0c;所以这一段代码就叫硬件的驱动程序。狭义上驱动程序就是专指操作系统中用来操控硬…...

毕设系列之 -- 教程:单片机接入按键控制遥感

文章目录1 简介2 主要器件2.1 双轴摇杆模块2.2 电路原理图3 实现效果4 测试代码6 最后1 简介 Hi&#xff0c;大家好&#xff0c;这里是丹成学长&#xff0c;今天向大家介绍如何使用单片机接入按键遥感 单片机接入按键控制遥感 大家可用于 课程设计 或 毕业设计 技术解答 毕…...

golang中slice的扩容机制

文章目录简介结论关于 len & cap关于 cap 扩容简介 slice 是 golang 中的数组切片&#xff0c;可以理解成是一种动态数组&#xff0c;一般通过 make 声明时候&#xff0c;会指定其 len 和 cap。一般我们常常使用 append 函数时候当 len 超过 cap 时候就会进行扩容处理 结…...

Unable to find instance for XXXX

当你的控制台报了这样的错误 这就是请求的后端服务没启动&#xff0c;联系后端启动后端就行。...

如何html css完成分层金字塔

近期才通过自学了html和css&#xff0c;今日恰好做一个金字塔实例&#xff0c;能够清晰的看得出标志数据信息&#xff0c;必须 的朋友们下边伴随着小编来一起学习学习吧 文中关键详细介绍了html css完成分层次金字塔的实例&#xff0c;共享给大伙儿&#xff0c;实际以下&#…...

学习AlibabaCloud

学习AlibabaCloud一、Maven聚合工程创建1、pom依赖一、Maven聚合工程创建 1、pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema…...

Android Studio Android Device Monitor打开

环境 Android Studio 4.1 for Windows 打开方法 想查看虚拟机中应用生成的文件在之前的Android Studio本版有个工具Android Device Monitor&#xff0c;在网上查看发现已经被弃用了。 打开方法可以参照CSDN Android Studio的Android Device Monitor在哪儿&#xff1f;&#x…...

Typora+Gitee+PicGo上传图片功能

TyporaGiteePicGo上传图片功能 建立Gitee图床 注册登录Gitee账号 这里就不详细讲了 官方地址&#xff1a;https://gitee.com/ 新建仓库当图床 输入下图中仓库名称、路径、选择开源&#xff0c;点击创建。 这样我们就创建了一个Typora_image的仓库&#xff0c;用来保存Typor…...

实训三#3.2导弹防御系统

【问题描述】 某国为了防御敌国的导弹袭击&#xff0c;开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷&#xff1a;虽然它的第一发炮弹能够到达任意的高度&#xff0c;但是以后每一发炮弹都不能高于前一发的高度。某天&#xff0c;雷达捕捉到敌国的导弹来袭&#xf…...

顶刊两天两篇!华中科技大学团队研究成果又登《科学》!

xx团队研究成果又登《科学》&#xff01;顶刊两天两篇&#xff01;华中科技大学团队研究成果又登《科学》&#xff01;顶刊两天两篇&#xff01;华中科技大学团队研究成果又登《科学》&#xff01; 8月19日&#xff0c;《科学》Science在线发表了华中科技大学光电信息学院/武汉…...

Mysql字符串截取 mysql将字符串字段转为数字排序或比大小

SELECT * FROM Student WHERE 1 1 ORDER BY -ID DESC ; SELECT * FROM Student WHERE 1 1 ORDER BY (ID 1); mysql将字符串字段转为数字排序或比大小 2017年09月17日 01:36:31 阅读数&#xff1a;6566 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得…...

web扫码登录

文章目录需求流程交互流程服务交互流程关键思路代码生成二维码&#xff0c;返回给PC展示轮询查询二维码状态APP扫码请求登录总结需求 pc端实现app扫码登录 流程 交互流程 服务交互流程 关键思路 主要问题在于如何识别APP端用户&#xff0c;然后传递给PC端已经登录成功 通过…...

MAX , cad09假激活

MAX , cad09假激活 2010年07月06日MAX激活不了&#xff0c;假激活&#xff0c;出现7组申请码的解决之道2010年05月12日 星期三 10:37因为已产生了注册记录。解决&#xff1a;删除“C:\Documents and Settings\All Users\Application Data\Autodesk\Software Licenses”文件夹里…...

软件工程与计算机科学与技术的区别与联系

软件工程注重实践能力&#xff0c;动手能力较强&#xff0c;从事工作上手快。软件工程主要是软件的开发&#xff0c;程序的编写。软件工程专业以计算机科学与技术学科为基础&#xff0c;强调软件开发的工程性&#xff0c;使学生在掌握计算机科学与技术方面知识和技能的基础上熟…...

vld内存泄露软件测试,在VS2017中配置VLD(Visual Leak Detector)内存泄漏检测工具

首先在官方下载VLD下载地址&#xff1a;https://github-production-release-asset-2e65be.s3.amazonaws.com/566097/583de30e-b359-11e7-99d7-0f1fb50d7654?X-Amz-AlgorithmAWS4-HMAC-SHA256&X-Amz-CredentialAKIAIWNJYAX4CSVEH53A%2F20190221%2Fus-east-1%2Fs3%2Faws4_re…...

程序员必备软件转载自 www.uhdesk.com

XMLSpy 2012 企业版中文破解版软件描述: XMLSpy是XML&#xff08;标准通用标记语言的子集&#xff09;编辑器&#xff0c;支持WYSWYG。支持Unicode、多字符集&#xff0c;支持Well-formed和Validated两种类型的XML文档&#xff0c;支持NewsML等多种标准XML文档的所见即所得的编…...

启用可靠性可伸缩性群集技术(RSCT)作为IBM PowerVM NovaLink的群集软件

IBMPowerVMNovaLink提供了一个PowerVM管理界面&#xff0c;该界面在PowerVM系统上的Linux分区内运行。 此Linux分区充当OpenStack计算驱动程序和其他代理的主机&#xff0c;以提供PowerVM的体系结构&#xff0c;类似于具有基于内核的虚拟机&#xff08;KVM&#xff09;的OpenSt…...

有用的软件、工具、资料地址记录

sz,rz命令安装&#xff1a; http://www.cnblogs.com/clicli/p/5941828.html CentOS: http://ftp.sjtu.edu.cn/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1611.iso Navicat Premium&#xff1a; http://www.cr173.com/soft/126934.html http://wcy.fgtrj.com/nav…...

signature=cdae83b1c2034e2244a378f624349dfb,恶意软件分析 URL链接扫描 免费在线病毒分析平台 | 魔盾安全分析...

\??\SICE\??\SIWVID\??\NTICEC:\Users\test\AppData\Local\Temp\_________v3.exeC:\Windows\System32\ntdll.dllC:\Windows\System32\mscoree.dll.localC:\Windows\Microsoft.NET\Framework\v4.0.30319\mscoreei.dllC:\Windows\Microsoft.NET\Framework\*C:\Windows\Micr…...

性能测试:工具篇:Jmeter实时可视化平台搭建

Jmeter实时可视化平台搭建 部署 influxDB 首先&#xff0c;pull influxBD镜像&#xff08;拉取是1.8的版本&#xff0c;虽有2.0的版本&#xff0c;但我还是喜欢站在巨人的肩头前行…&#xff09;&#xff1a; debugfengdebugfeng:~$ sudo docker pull influxdb:1.8 1.8: Pul…...

软件插件安装激活教程以及密钥

2019独角兽企业重金招聘Python工程师标准>>> &#xfeff;tomcat jdk安装配置脚本&#xff1a; 粘贴另存为文件&#xff1a;install_jdk_tomcat.sh&#xff0c;然后执行。想更换版本修改其中的版本即可。 #!/bin/bash # #########################################…...

02.UML类图

文章目录面向过程 vs 面向对象类继承Generalization抽象Abstract关联Association单向/双向关联自反关联Reflexive Association聚合关联Aggregation组合关联Composition依赖Dependency接口实例-图书管理系统中借阅操作类图逻辑视图-包图面向过程 vs 面向对象 图片来自百度&#…...

通过容器化Python web应用了解Docker容器的核心功能

容器在软件开发、测试和部署环节应用的越来越广泛&#xff0c;那么测试人员应该如何掌握容器技术呢&#xff1f;应该掌握哪些基本的容器操作呢&#xff1f;本文通过容器化一个 Python Web 应用&#xff0c;来快速掌握 Docker 容器和镜像的基本操作。 容器技术中两个基本的概念是…...

mac安装常用软件brew等

2019独角兽企业重金招聘Python工程师标准>>> mac安装java brew cask install java Mac下 Nginx的关闭 正常停止 sudo kill -QUIT 主进程号 快速停止 sudo kill -TERM 主进程号 MAC切换本地的java默认版本&#xff1a; mac下默认的版本是1.7&#xff1a; java…...

软件开发模式的研讨

软件开发有其内在规律和模式&#xff0c;发现规律&#xff0c;总结模式&#xff0c;能给软件开发的过程带来便利和提高开发效率。[colorred][b]1.人员配备[/b][/color] 1. 项目经理 2. 售前人员 3. 需求设计人员&#xff08;刻画交互界面&#xff09; 4. 技术经理&#xff08;搭…...

CentOS-7-x86_64-DVD-1503-01安装盘中Package包中的 软件

2015/03/14 07:35 1,712,492 389-ds-base-1.3.3.1-13.el7.x86_64.rpm2015/03/14 07:35 612,292 389-ds-base-libs-1.3.3.1-13.el7.x86_64.rpm2014/07/04 00:32 100,096 abattis-cantarell-fonts-...

b站 bilibili 黑马Kubernetes 教程

Kubernetes详细教程 1. Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个时代&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参与 缺点&am…...

常用软件1-pycharm的安装教程

PyCharm 是一款功能强大的 Python 编辑器&#xff0c;具有跨平台性&#xff0c;鉴于目前最新版 PyCharm 使用教程较少&#xff0c;为了节约时间&#xff0c;来介绍一下 PyCharm 在 Windows下是如何安装的。 这是 PyCharm 的下载地址&#xff1a;http://www.jetbrains.com/pych…...

Android View的绘制流程简述 Android自定义View(一)

1 Android的UI管理系统层级关系 如上图所示&#xff0c;这就是Android的UI管理系统的层级关系。 1.1 当一个应用启动的时候&#xff0c;会启动一个主Activity&#xff0c;然后Activity会创建出一个窗口系统PhoneWindow(每个Activity都会创建&#xff0c;是Android系统中最基本…...

Android界面绘制流程

1.ViewRoot ViewRoot是连接WindowManager与DecorView的纽带&#xff0c;View的整个绘制流程的三大步&#xff08;measure、layout、draw&#xff09;都是通过ViewRoot完成的。当Activity对象被创建完毕后&#xff0c;会将DecorView添加到Window中&#xff08;Window是对窗口的…...

通过流程图来分析Android事件分发

写在前面 距离前一次写博客&#xff0c;已经过去接近一年&#xff0c;回想起来这一年确实很忙&#xff0c;否则不会连写博客都耽误了。然而忙归忙&#xff0c;也并没有停下学习的脚步&#xff0c;趁着今天有时间&#xff0c;把最近学习并实践于项目当中的知识点给梳理了&#…...