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

数据结构代码总结(C语言实现)

目录

  • 如何应对数据结构的代码题?
  • 采取的学习流程
    • ①首先对C语言的语法的熟悉
    • ②学习掌握基本代码的写法,做到熟练
      • 2.1插入排序
      • 2.2快速排序
      • 2.3二分查找
      • 2.4树的遍历
    • ③跟着网上视频开始熟悉对一些问题的解答
    • ④结合真题的代码,寻找其中的结题规律

如何应对数据结构的代码题?

一开始我对代码题还是无从下手的,通过这些流程,对408真题上的代码逐渐理解并能自己写出个大概。希望我的复习流程可以大家提供一定的参考意义。

采取的学习流程

首先要明白几点,真题的代码是在一些基础代码的基础上进行增加参数,或者增加步骤,进而得到的

①首先对C语言的语法的熟悉

包括对结构体的定义,指针、数组、重命名,以及一些打印输出的句子。
学习的资料网址:菜鸟教程

基础的一些语法格式

定义结构体、以及重命名
typedef struct node{int data;struct node  next;
}Lnode ,*List;   
//这里利用typdef对结构体数据类型进行重命名,方便后面定义变量
//结构体变量struct node,命名为了Lnode,结构体变量struct node的指针命名为了,List
那么你可以用分别用:Lnode代替struct node  ;List 代替struct node*  进行变量的定义数组
int nums[5]={1,2,3,4,5};
nums=(int *)malloc(sizeof(int)*(n+1));打印
char *a="123asd"
printf("(");
printf("%c",s);

②学习掌握基本代码的写法,做到熟练

基础代码

2.1插入排序

链表实现
注意插入排序链表实现的特点
维护的几个变量
LastSorted:已经排好序的最后一个结点
curr:需要进行插入排序的当前结点
Pre:寻找第一个大于当前结点之前的结点

//将结点指针变量的声明符号重新定义为 list  方便后续定义结点指针变量
typedef struct ListNode* list;
struct ListNode *insertionSortList(struct ListNode *head) {if (head == NULL) {return head;}list dummyHead = malloc(sizeof(struct ListNode));//虚拟头结点为了更好的对第一个元素之前进行插入dummyHead->val = 0;dummyHead->next = head;list lastSorted = head;//已排序元素的最后一个元素list curr = head->next;//当前需要进行判断的元素while (curr != NULL) {//当,当前元素大于等于已排好的最后元素,直接改最后元素if(lastSorted->val<=curr->val){lastSorted=lastSorted->next;}//当,当前元素小于已经排好元素时,需要从头开始找到第一个大于当前元素的前一个结点else{list pre=dummyHead;while(pre->next&&pre->next->val<=curr->val)//当下一个结点大于时,或者当前结点为最后一个结点时,跳出循环{pre=pre->next;}lastSorted->next=curr->next;//最后结点不变,最后结点的下一个结点变为原节点的下一节点curr->next=pre->next;//当前结点的下一节点先修改pre->next=curr;//然后修改pre结点的下一节点为当前结点}curr=lastSorted->next;//将已排序的后一个元素进行排序}return dummyHead->next;//最后返回head结点
}

数组实现

int insersorted(int a[],int n)
{for(int i=2;i<n;i++)//从第二个元素开始{if(a[i]<a[i-1])//小于往前插入{a[0]=a[i];for(int j=i-1;a[j]>a[0];j--){a[j+1]=a[j];}a[j+1]=a[0]}
}

2.2快速排序

//设计两个函数
//第一个函数实现每趟的交换排序
int partition(int *nums,int low,int high)
{	int tem=nums[low];while(low<high){while(low<high&&nums[high]>=tem)high--;nums[low]=num[high];while(low<high&&nums[low]<=tem)low++;nums[high]=nums[low];}nums[low]=tem;return low;//最后返回元素被最终放置的位置,然后以此为基点,对左右两边的数进行划分
}
//第二个函数实现递归的调用
int * quicksort(int * nums,int low,int high)
{if(low<high){int piv=partition(nums,low,high);quicksort(nums,piv+1,high);quicksort(nums,low,piv-1);}
}

2.3二分查找

维护的变量
low:最左边的位置
high:最右边的位置
middle:中间的位置
每次根据中间位置值与目标变量的大小关系调整low和high的值

int searchInsert(int* nums, int numsSize, int target){int low=0,high=numsSize-1,middle;while(low<=high){middle=(low+high)/2;if(nums[middle]==target)return middle;else if(nums[middle]<target){low=middle+1;}else{high=middle-1;}}if (nums[middle]>target)return middle;elsereturn middle+1;
}

2.4树的遍历

递归实现

//先序遍历
typedef struct  BiNode
{struct BiNode* lchild,rchild;int data;
}BNode,*BiTree;
void preorder(BiTree T)
{
if(T!=NUll){visit(T);preorder(T->lchild);preorder(T->rchild);}
}
//中序遍历
void inorder(Bitree T)
{if(T!=NUll){inorder(T->lchild);visit(T);inorder(T->rchild);}
}
//后续遍历
void postorder(Bitree T)
{
if(T!=NUll){postorder(T->lchild);postorder(T->rchild);visit(T);}
}

非递归实现

//中序遍历
void  inorder(BiTree T)
{InitStack(S);//用于存储有左子树的根节点BiTree p=T;//用于向下探索结点while(P||isempty(S))//当T不为空,同时栈内存在元素时,循环{//如果当前结点不为空,则把器左节点放入栈中if(p){push(S,p);p=p->lchild;}else{pop(S,p);visit(p);p=p->rchild;}}
}

③跟着网上视频开始熟悉对一些问题的解答

B站一位up主的的讲解视频:23考研数据结构编程代码题逐句精讲
看完视频并写完代码后,对于线性表的相关问题会有比较好的理解。
看视频时注重积累相关问题的结题方法,需要设置几个参数。
涉及的题目的结题代码

④结合真题的代码,寻找其中的结题规律

2009年
在这里插入图片描述
寻找倒数第k个结点,利用两个指针p,q, q先向后探测到第k-1个结点,如果此节点不是最后一个结点,那么p,q共同向后移动,知道q为最后一个结点,此时的p即为所求、

int  find_k(Lnode *head, int k){Lnode *p=head,*q=head;int count=k-1;while(count<k-1&&q->next){q=q->next;}if(q->next==null) return 0;while(q->next){p=p->next;q=q->next;}printf("倒数第%d个位置上的值为%d",k,p->data);return 1;
}

2010年
在这里插入图片描述
将数组元素玄幻啊左移p位,那么可以采用对前p位反转,后n-p为反转,然后整体反转

void reverse(int *num,int low, int high)
{int mark=(low+high)/2,tem;for(int i=0;i<=mark;i++){tem=num[i];num[i]=num[low+high-i];num[low+high-i]=tem;}
}
void leftmove(int *num,int p,int n){reverse(num,0,p-1);reverse(num,p,n-1);reverse(num,0,n-1);
}		

2011年
在这里插入图片描述
因为s1、s2等长为L,那么中位数为第L个元素,因为s1、s2均为升序排序,所以我可以用p、q表示s1、s2的下标,每次比较s1[p],s2[q]的大小,更小的元素指针后移,同时记录下次数更小的那个数,当后移了L次时,即找到了答案。
时间复杂度为O(n),空间复杂度为O(1)

int  find_middle(int* s1,int* s2,int L){int count=0,p=0,q=0,pre_min;whiel(count<L){if(s1[p]<s2[q]){pre_min=s1[p];p++;}else{pre_min=s2[q];q++;}count++;return pre_min;}

2012年
在这里插入图片描述
思路:
后缀的起始位置的点的特点,结点的地址的指针相同。(注意不是结点的值相同,虽然这里结点的值页相同但是,只考虑地址相同会更方便)
我们可以从后往前看,只要我们同时从后面往前数第一个重合的元素开始比较,然后第一个相同的就是我们要找的。
在这里插入图片描述

所以,可以先分别算出str1、str2的长度
然后算出长度的差值:distance
用pq分别记录各链表的点的指针
对于长的链表,p先后移distance个结点,然后pq开始比较

Lnode* find(Lnode* str1,Lnode* str2)
{int m=0,n=0;Lnode* tem=str1->next;//先计算长度m、nwhile(tem){m++;tem=tem->next;}tem=str2->next;while(tem){n++;tem=tem->next;}Lnode *p=str1->next;Lnode *q=str2->next;//将链表队尾对齐while(m>n){p=p->next;m--;}while(n>m){q=q->next;n--;}int flag=1;//寻找第一个相同地址的结点,结束条件可能是找到最后没有找到那么就是nullwhile(flag&&p&&q){if(p=q)flag=0;else{p=p-next;q=q-next;}return p;
}

2014年
在这里插入图片描述
基础代码:先序遍历的递归实现
积累点
涉及对于需要考虑层数的,添加变量deep。

//在先序遍历的递归的基础上,加上参数deep(深度),然后在找到叶子节点时,计算权重:weight*deep,每次进行累加
typedef struct node{struct node * left,*right;int weight;
}*Btree;
static int count=0;//用来记录权重void func1(Btree root,int deep)
{if(root->left=NULL&&root->right=NULL){count=count+(root->weight)*deep;//找到叶子节点时,计算权重}if(root->left)func1(root->left,deep+1);//未找到叶子结点,继续往下找,深度+1if(root->right)func1(root->right,deep+1);
}func1(root,0)//一开始我根节点,属于第0层
return count;

2015
在这里插入图片描述
思路
首先,目标是删除绝对值相同的结点,然后这里只考虑时间复杂度尽可能高效,所以,我们用空间换时间,采取数组,存放对于以访问数的情况。
数组下标为数的绝对值,0表示未被访问到,1表示已存在。数组的长度为n+1
空间复杂度o(n):创建的数组
时间复杂度o(m):只要扫描一遍链表即可

typedef struct Lnode{int data;struct Lnode *link;
}List,LNode;
List funt(List L,int n)
{int * nums=(int*)malloc(sizeof(int)*(n+1));List tem,pre=L;int num;while(L->link){	num=L-link->data;if(nums[num]==0)num[num]=1;else{tem=pre->link;pre->link=pre->next->next;free(tem);}}free(nums);return L;
}		

2016
在这里插入图片描述
思路:
首先满足n1-n2最小,s1-s2绝对值最大,那么我们需要找出最小n1个数,以及最大的n2个数,同时,n1=n/2(向下取整,n1)
采用快速排序,每次排序对元素进行划分,确定一个元素的最终位置,将元素分为左右两部分,左边的都是小于其的右边的都是大于其的。
所以我们需要在快速排序的基础上,尽快的排到第n/2这个位置。

int func(int *nums ,int n)
{int low=0,high=n-1;int pre_low=0,pre_high=n-1;//用来保存前一次的low,和high 的值,因为每次排序后,low最终等于highint mark=n/2,int flag=1;tem;//mark最为最终要排序的点的位置,  flag 用来控制循环的进行while(flag){	tem=nums[low];while(low<high){while(nums[high]>=tem&&low<high)high--;nums[low]=nums[high];while(nums[low]<=tem&&low<high)low++;nums[high]=nums[low];}nums[low]=tem;//排序完一次,查看一下排好的元素的位置与最终位置的差距if(low=mark){flag=0;}else{if(low<mark){low=low+1;pre_low=low;high=pre_high;}else{high=low-1;pre_high=high;low=pre_low;}		}}int s1=0,s2=0;for(int i=0;i<n;i++){if(i<=mark)s1=s1+nums[i];else s2=s2+nums[i];}return s2-s1;
}

2017
在这里插入图片描述
思路
首先二叉树的采用递归的中序遍历
首先,对于每个结点来说,要打印结点的字符串。
然后,对于根节点和叶子结点直接打印字符串,而对于非叶子结点,需要先打印"(“然后打印”)".

所以需要对结点进行区分,区分叶子结点,只需要判断结点的左右子树是否都为空,而判断根节点,非叶结点我们只能引入层数deep变量来加以区分

void func(BTree *root,int deep)
{if(root->left==NULL&&root->right==NULL)printf("%c",root->data);else{if(deep>1)printf("(");if(root->left!=NULL)func(root->left,deep+1);prinf("%c",root->data);if(root->right!=NULL)func(root->right,deep+1);if(deep>1)printf("(");}
}
void real(BTree * root)
{func(root,1);
}

2019
在这里插入图片描述
思路
首先找到链表的中点结点
然后对中点后的结点采用头插法进行逆序
然后对中点后的结点按指定位置插入中点前方的结点
维护的变量
p:中间结点
q:用来逆序,以及插入时作为标记后面结点的指针

void  reorder(Lnode* head  ){Lnode * p,q,r,s;p=head;q=head;while(q->next){p=p->next;q=q->next;if(q->next)q=q->next;//p每次移动一下,q每次移动两下。假设7个节点,当为奇数个结点时,p移动到了4位置,当为偶数个结点(6)时,p移动到了3}保持p结点不变,头插法逆转后续序列q=p->next;p->next=NULL;while(q){r=q->next//记录下一个要插入的结点q-next=p->next;p->next=q;q=r;}s=head->next;//第一个结点q=p->next;//中点的后一个结点,需要第一个插入到前面的结点p->next=NULL;//p最终变为为最后的结点,下一节点为空while(q){r=q->next;//记录下一个需要插入的结点q->next=p->next;//先记录p的下一个结点p->next=q;//p的下一个结点为qp=q->next;//下一个p为q的nextq=r;}
}

时间复杂度为O(n),空间复杂度为O(1)
这里需要多次对链表进行操作,需要对头插法实现序列的转置比较熟悉

2020
在这里插入图片描述
首先看清题目要求,只是输出最小距离,不需要输出相应的三元组。
这类问题先进行问题的简化,搞清楚我们要求什么。
要使距离D最小,怎么找。
假设a《b《c
那么,D= b-a + c-b + c-a= 2(c-a)也就最大值-最小值的两倍。
那么,要使D最小,我们就要不断的让最小值a向最大值c接近。
假设用a,b,c分别表示3个数组中遍历的数,那么我们每次将其中最小的数的下标后移1,知道某个数组的下标超出数组的长度时停止。
为什么的数不需要计算了?
首先,当一个列表的元素到了末尾,,说明上一次结尾找出的最小值为这个元素的最后一个元素,然后下标进行加1,但此时数组里已经没有元素了。如果,你取其他的数组里的元素,由于数组是从小到大排序的,那么其他数组的后一个元素必然导致与最小值的距离最变大,既c-a变大,相当于a以及不变了,你去移动其他元素。
所以此时得到的就是最小距离了。

#define MAX 9999999;
//计算绝对函数
int abs_(int a,int b){if(a>b) return a-b;else return b-a;}
int calculate(int* s1,int n1,int*s2,int n2,int* s3,int n3){int i=0,j=0,k=0;int pre_min=MAX;int dis=0;while(i<n1&&j<n2&&k<n3){dis=abs(s1[i],s2[j])+abs_(s2[j],s3[k])+abs_(s3[j],s1[k]);if(dis<pre_min){pre_min=dis;}if(s1[i]<s2[j]&&s1[i]<s3[k]){i++;}else if(s2[j]<s3[k]&&s2[j]<s1[i]){j++;}else{ k++;}}return pre_min;
}

相关文章:

数据结构代码总结(C语言实现)

目录如何应对数据结构的代码题&#xff1f;采取的学习流程①首先对C语言的语法的熟悉②学习掌握基本代码的写法&#xff0c;做到熟练2.1插入排序2.2快速排序2.3二分查找2.4树的遍历③跟着网上视频开始熟悉对一些问题的解答④结合真题的代码&#xff0c;寻找其中的结题规律如何应…...

zookeeper 复习 ---- chapter04

zookeeper 复习 ---- chapter04zookeeper 的精髓是什么&#xff1f; 1&#xff1a;它有四个节点类型 持久无序的节点 临时无序的节点 持久有序的节点 临时有序的节点 临时的节点的特征&#xff1a;当客户端和服务器端断开连接&#xff0c;当前客户端创建的节点被服务器端自动删…...

thinkphp6.0连接MYSQL

目录8.连接多个数据库7.多级控制器不存在6.分页5.非法请求4.关于路由**3.初体验页面****2.加入fileheader添加注释****1.配置mysql0. 官方开发手册一些网址 http://127.0.0.1:8000/index 原桌面 http://127.0.0.1:8000/hello/fsh hello,fsh&#xff08;index中hello方法&#x…...

商家必读!超店有数分享,tiktok达人营销变现如何更快一步?

近几年来&#xff0c;“粉丝经济”发展越来越迅猛&#xff0c;“网红带货”已经成为了一种营销的方式。这种方式让商家能基于达人的影响下迅速抢占自己的私域流量池。消费者会基于对达人的信任&#xff0c;购买达人推荐的产品。达人效应可以助力品牌走出营销困境。如果商家想要…...

操作系统(day11)--快表,两级页表

具有快表的地址变换机构 时间局限性&#xff1a;会有大量连续的指令需要访问同一个内存块的数据的情况&#xff08;程序中的循环&#xff09; 空间局限性&#xff1a;一旦程序访问了某个存储单元&#xff0c;在不久之后&#xff0c;其附近的存储单元也很有可能被访问。&#xf…...

预告| 亮点抢先看!第四届OpenI/O启智开发者大会主论坛24日启幕!

2023年2月24日至25日&#xff0c;第四届OpenI/O启智开发者大会将在深圳隆重举行。“算网筑基、开源启智、AI赋能”作为今年大会的主题&#xff0c;吸引了全球业界关注的目光。大会集结中国算力网资源基座、开源社区治理及AI开源生态建设、国家级开放创新应用平台、NLP大模型等前…...

猪齿鱼(Choerodon UI )的通用提交的封装 —— 两种方案,A.使用dataSet的自身的submit,B.使用axios.post来提交

submit组件&#xff08;otherSubmit/axiosSubmit&#xff09; 一、背景与简介 1、首先我们申请表提交&#xff0c;分为【保存】提交与【其他】提交&#xff1b; 1.1【保存】提交&#xff0c;要求表单必须要有变更&#xff0c;DataToJSON默认为dirty&#xff08;只转换变更的…...

CISCN(Web Ezpentest)GC、序列化、case when

目录 REGEXP的一个点&#xff08;正则&#xff09; like&#xff08;默认不区分大小写&#xff09; 当禁用了空格 regexp&#xff0c;like的区分大小写的使用方法 [CISCN 2022 初赛]ezpentest 卡点 2022 HFCTF babysql 最近又学到了一道新知识&#xff0c;case when的错…...

OSG三维渲染引擎编程学习之五十七:“第六章:OSG场景工作机制” 之 “6.1 OSG访问器”

目录 第六章 OSG场景工作机制 6.1 OSG访问器 6.1.1 访问器模式 6.1.2 osg::NodeVisitor 6.1.3 访问器示例...

Python3 输入和输出实例及演示

在前面几个章节中&#xff0c;我们其实已经接触了 Python 的输入输出的功能。本章节我们将具体介绍 Python 的输入输出。 输出格式美化 Python两种输出值的方式: 表达式语句和 print() 函数。 第3种方式是使用文件对象的 write() 方法&#xff0c;标准输出文件可以用 sys.std…...

召回-回忆录(持续更新)

0.召回方法 词召回 swing、itemCF 缺点&#xff1a; 有冷启动问题不是全局召回&#xff0c;冷门活动难以得到召回结果容易召回过多的头部热门活动 向量召回 参考文献&#xff1a; 经典推荐算法学习&#xff08;七&#xff09;| Graph Embedding技术学习 | 从DeepWalk到No…...

1243. 糖果/状态压缩dp【AcWing】

1243. 糖果 糖果店的老板一共有 M种口味的糖果出售。 为了方便描述&#xff0c;我们将 M种口味编号 1∼M。 小明希望能品尝到所有口味的糖果。 遗憾的是老板并不单独出售糖果&#xff0c;而是 K颗一包整包出售。 幸好糖果包装上注明了其中 K颗糖果的口味&#xff0c;所以小…...

【Spring Cloud Alibaba】001-单体架构与微服务架构

【Spring Cloud Alibaba】001-单体架构与微服务 文章目录【Spring Cloud Alibaba】001-单体架构与微服务一、单体架构1、单体应用与单体架构2、单体应用架构图3、单体架构优缺点优点缺点二、微服务1、微服务的“定义”2、微服务的特性3、微服务架构图4、微服务的优缺点优点缺点…...

Renderer 使用材质分析:materials、sharedMaterials 及 MaterialPropertyBlock

一、materials 与 sharedMaterials 1.1 使用上的区别与差异 Unity 开发时&#xff0c;在 C# 中通过 Renderer 取材质操作是非常常见的操作&#xff0c;Renderer 有两种常规获取材质的方式&#xff1a; sharedMaterials&#xff1a;可以理解这个就是原始材质&#xff0c;所有使…...

java学习----网络编程

网络编程入门 网络编程概述 计算机网络 ​ 计算机网络是指地理位置不同的具有独立功能的计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理协调下&#xff0c;实现资源共享和信息传递的计算机系统…...

这些「误区」99%的研发都踩过

意识不到误区的存在最为离谱&#xff1b; 01生活中&#xff0c;职场上&#xff0c;游戏里&#xff0c;都少不了正面对喷过&#xff1a;意识太差&#xff1b; 在个人的认知中意识即思维&#xff0c;意识太差即思维中存在的误区比较多&#xff1b; 每个人或多或少都存在思维上的…...

Bi系统跟数据中台的区别是什么?

随着数据时代的发展&#xff0c;BI分析是当今数据时代必不可少的能力之一。BI系统通过系统化产品化的方法&#xff0c;能够大幅降低数据的获取成本、提升数据使用效率。同时借助可视化、交互式的操作&#xff0c;可以高效支持业务的分析及发展。 BI如此火热&#xff0c;随之而…...

微信小程序反编译方法分享

文章目录一、前言二、准备工作&#xff08;一&#xff09;安装Nodejs&#xff08;二&#xff09;解密和逆向工具三、小程序缓存文件解密&#xff08;一&#xff09;定位小程序缓存路径&#xff08;二&#xff09;源码解密&#xff08;三&#xff09;源码反编译四、小结一、前言…...

有了这些接口测试用例+工具,测试效率想不提升都难

写在前面&#xff1a;在日常开发过程中&#xff0c;有人做前端开发&#xff0c;有人负责后端开发。接口的主要作用就是连接前后台。但是&#xff0c;由于前端和后端开发的速度可能不一样&#xff0c;尤其是后端开发好了&#xff0c;但前端还未开发。这种时候我们需要做接口测试…...

麒麟 arm架构安装nginx

目录 1、下载nginx安装包并解压 在线安装&#xff1a; 离线安装&#xff1a; 上传nginx安装包&#xff08;下载地址&#xff1a;https://nginx.org/download/nginx-1.20.2.tar.gz&#xff09;到指定目录 2、安装系统相关依赖软件、组件包 1、上传或者下载对应的组件包 2、安…...

logrotate失效的排查---selinux开启状态拦截问题及解决方法

首先测试环境selinux 处于关闭状态 disable # getenforce disable重新开启selinux配置与生产环境一致 [rootlocal]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX can take one of these three values: # enforcing - S…...

Allegro使用总结-查看Layout基本操作:

好久没用CSDN写过笔记了&#xff0c;没想到无意间打开&#xff0c;编辑器更新啦&#xff01;以前巨难用的“富文本编辑器”终于改观了&#x1f62d;变的好像语雀&#xff0c;うれしい1. 视图/画面操作a. 画面缩放&#xff08;Zoom&#xff09;&#xff1a;F11/F12 或 鼠标滚轮b…...

cmd del命令笔记

使用 /s 删除文件夹下所有的 del /s sub # 删除目录下所有文件&#xff0c;这个目录不会删除 /p 确认提示 /q 静默模式&#xff0c;不会提示要不要删除 如过和/p同时使用&#xff0c;那么不提示 /a 根据属性删除&#xff0c;a是attribute的意思 del /a:r 01.jpg # 01.jp…...

apifox持续集成+java+企微机器人+xxljob定时推送

总览&#xff1a; apifox做接口测试后&#xff0c;把用例合并组装成测试套件&#xff0c;然后apifox-cli通过终端命令实现把套件执行后&#xff0c;输出本地文件的测试报告html或json。本地解析后拿到有用的解决通过定时执行推送到企微群里。 然后把html一起推到群里。 这个…...

盘点Linux内核网络知识100道题,这篇就够了

计算机网络模型 1、五层因特网协议栈和七层OSI&#xff08;Open System Interconnections&#xff09;参考模型分别是什么&#xff1f; 5层&#xff1a;应用层、传输层、网络层、数据链路层、物理层 7层&#xff1a;应用层、表示层、会话层、传输层、网络层、数据链路层、物理…...

数据库敏感字段脱敏

文章目录什么是脱敏脱敏后带来什么问题解决方案一解决方案二具体实施方案一方案二存量数据处理什么是脱敏 如果你有申请过一些软件资质&#xff0c;应该会被要求敏感数据进行加密&#xff0c;比如密码不能明文&#xff0c;用户的手机号&#xff0c;身份证信息&#xff0c;银行…...

skynet 游戏服务器探索(1)--熟悉skynet(网络)

因为做游戏服务器开发&#xff0c;大多数都跟脚本打交道&#xff0c;要么是lua,要么是python,要么是php,方便热更新的只有lua与php, php相关的游戏服务器开发&#xff0c;参考我另外的文章https://blog.csdn.net/guoyilongedu/article/details/121049511lua脚本相关的&#xff…...

select、poll、epoll

select、poll、epoll select int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); int nfds&#xff1a;被select管理的文件描述符的个数&#xff0c;最大描述符编号1fd_set *readfds&#xff1a;读文件描述符集合fd_se…...

rollup的基本使用 基本配置与处理各种文件

rollup rollup是一个javascript的模块化打包工具 可以帮助我们编译小的代码到一个大的负载的代码中 比如一个库或者一个应用 rollup与webpack的区别 rollup主要针对ES Module进行打包 另外webpack通常可以通过各种loader处理各种各样的文件 以及处理他们的依赖关系 rollup更多…...

ubuntu-debian系-redhat系

debian系 包类型&#xff1a;.deb包 本地安装包安装工具&#xff1a;dpkg 本地包管理命令&#xff1a;dpkg -i package 安装包 dpkg -r package 卸载包 dpkg -l package 查看已安装包 远程安装包安装工具&#xff1a;apt / apt-get 远程包管理命令&#xff1a;apt-get apt-cac…...

logo免费网站/简述搜索引擎优化

本文主要介绍了新版本TP-Link路由器上网设置的详细步骤&#xff0c;新版的TP-Link无线路由器的设置网址、设置界面、管理员密码等方面&#xff0c;与旧版本的TP-Link路由器是完全不一样的。但是&#xff0c;无论是什么版本的TP-Link路由器&#xff0c;设置思路都是一样的。一台…...

交互式网站制作/东莞企业网站设计公司

了解生产中内部使用的API的性能是一项艰巨的任务。实际上&#xff0c;大多数团队还没有监控API。随着市场的变化&#xff0c;越来越多的团队将API监控作为Ops团队和QA团队的优先事项&#xff0c;因此每个版本都经过了适当的测试&#xff0c;并设置了一个监控器确保在生产环境中…...

软件或者网站的搜索怎么做/百度网盘资源分享

这里只是突然发现jquery 1.7 之后的事件绑定推荐了一些变化。jquery推荐使用on方法来绑定事件。 相信以前都是用的click,bind,unbind方法吧。 如果你仔细看看jquery的源码的话&#xff0c;那么你会发现bind的方法也是用的on方法来实现的。 在一定程度上on方法比bind或者是click…...

电脑做试卷的网站/google play谷歌商店

2019独角兽企业重金招聘Python工程师标准>>> 有时需要限制对Tomcat Web应用的访问&#xff0c;如只有指定的主机或IP地址可以访问指定的应用。这样一来&#xff0c;就只有那些指定的客户端可以访问服务的内容。本实例将介绍如何在Tomcat下制定主机访问。 Tomcat提供…...

亚马逊网站建设的意义/总排行榜总点击榜总收藏榜

【http://msdn.microsoft.com/zh-cn/library/bb861909.aspx】 在 Microsoft SharePoint Foundation 中&#xff0c;修改 web.config 设置的一种方法是使用 Microsoft.SharePoint.Administration 命名空间的 SPWebConfigModification 类&#xff0c;这使得您能够动态地对实体进行…...

中国空间站完整图/seo优化报价公司

本节主要是要介绍下,做一个这样的测试平台,都需要提取掌握哪些技术呢?还没掌握的可以在看完本节之后,去好好学习一下相关技术。本公众号会用直白的土话给您讲讲,并不是百度百科那种晦涩难懂的定义哈。 1.Django 说到python,大家应该都会的差不多,平时写个小脚本,写个小…...