NJIT数据结构期末复习

news2024/11/17 7:32:55

任何时候学习都不算晚,保持终身学习!!!

数据结构期末复习

第一章
1.以下程序段的时间复杂是多少?
int sum = 0;
for(i=1;i<=n;i++) {
for(j=1;j<=n;j++) {
sum++;
}
}

答:O(n^2)

第二章
2.遍历单链表,如果将p=p.next语句写成p.next=p,结果会怎样?画出示意图。

答:语句p=p.next使p移动到后继结点,此时结点间的链接关系没有改变。如果写成p.next=p,则使p.next指向p结点自己,改变了结点间的链接关系,并丢失后继结点,如图示,遍历算法也变成死循环。

在这里插入图片描述

3.设front指针指向非空单链表中的某个结点,在front结点之后插入q结点,执行以下语句结果会怎样?画出示意图。
Node q = new Node(x);
Front.next = q; //①
q.next = front.next; //②

答:②句相当于q.next = q;,产生错误,结点间的链接关系如图2.8所示。
在这里插入图片描述

错误原因:上述后两条语句次序颠倒。对front.next赋值将改变结点间的链接关系,从而丢失后继结点地址。因此,在改变结点链接关系时,应该先获得front.next的值,再对其赋值。头插入存在同样问题。

4.能否使用以下语句创建循环单链表的头结点?为什么?
head = new Node(NULL, head);
答:不能。因为申请结点存储空间时head没有初始化,实际语义需要的是将该结点地址作为其next域值,做不到。

5.在长度为n的顺序表中插入第i个元素(0≤i≤n),要移动_________个元素。
答:n-i

6.设指针p指向单链表中的某个结点(非两端),则删除p结点的后继结点的语句为________________________________________________________________。
答:p.next=p.next.next;

7.设p指向双链表的某个结点,在p结点之前插入一个值为x的结点,语句如下:
DoubleNode q = new DoubleNode(x, p.prev, p);
p.prev = q;
p.prev.next = q;

答:
后两句语句次序反了,导致错误。
改正:改变后两句语句次序。
DoubleNode q = new DoubleNode(x, p.prev, p);
p.prev.next = q;
p.prev = q;

8.以下函数功能是什么?算法效率如何?如何改进,使遍历单链表时间复杂度是O(n)?
int min(SinglyList list)
{
if (list.isEmpty())
throw new Exception(“单链表为空,不能计算。”);
int minvalue=list.get(0);
for (int i=0; i<list.length(); i++)
if (minvalue>list.get(i))
minvalue = list.get(i);
return minvalue;
}

答:
① 功能是返回单链表的最小值。
② 由于list.length()和list.get(i)时间复杂度是O(n),遍历单链表的时间复杂度则是 ,效率很低,不可接受。
③ 改进,……,遍历单链表时间复杂度是O(n)。

9.遍历单链表,如果将p=p.next语句写成p.next=p,结果会怎样?画出示意图
在这里插入图片描述

答:语句p=p.next使p移动到后继结点,此时结点间的链接关系没有改变。如果写成p.next=p,则使p.next指向p结点自己,改变了结点间的链接关系,并丢失后继结点,如图2.7所示,遍历算法也变成死循环。

10.设front指针指向非空单链表中的某个结点,在front结点之后插入q结点,执行以下语句结果会怎样?画出示意图。
Node q = new Node(x);
front.next = q; //①
q.next = front.next; //②

答:
②句相当于q.next = q;,产生错误,结点间的链接关系如图所示。在这里插入图片描述

错误原因:上述后两条语句次序颠倒。对front.next赋值将改变结点间的链接关系,从而丢失后继结点地址。因此,在改变结点链接关系时,应该先获得front.next的值,再对其赋值。头插入存在同样问题。

11.能否使用以下语句创建循环单链表的头结点?为什么?
head = new Node(NULL, head);
答:不能。因为申请结点存储空间时head没有初始化,实际语义需要的是将该结点地址作为其next域值,做不到。

第三章
12."“和” “有什么差别?
答:”“是空串,长度为0;” "是空格串

13.串的存储结构有几种?串通常采用什么存储结构?
答:串可采用顺序存储结构和链式存储结构,串通常采用顺序存储结构。

14.已知target=“aaabaaab”、pattern=“aaaa”,画出采用Brute-Force算法的模式匹配过程,给出比较结果、子串匹配次数和字符比较次数。

答:
比较结果:匹配不成功,匹配子串位置为-1;子串匹配5次,字符比较14次。
在这里插入图片描述

模式串"aaaa"的Brute-Force算法模式匹配过程

15.以下算法在什么情况会出现怎样的错误?举例说明。怎样改正?
//将串中所有与pattern匹配的子串替换为str
void replaceAll(MyString pattern, MyString str)
{
int start=search(pattern);
while (start!=-1)
{
remove(start, pattern.n);
insert(start, str);
start = search(pattern, start);
}
}

“abbcdf”
pattern=”a”
str=”ab”
start = 0
start = 0
答:
若欲将"a"替换为"ab",上述函数会将作为替换串"ab"中的"a"再次进行替换,导致死循环。将循环体中第3句改为如下,从替换子串的下一个字符开始再次查找匹配子串。
start = search(pattern, start+str.n); //从替换子串的下一个字符开始再次查找匹配子串

16.已知target=“abcababcabababcababc”,pattern=“ababcababc”,求模式串改进的next数组,画出KMP算法模式匹配过程,给出比较结果,以及子串匹配次数和字符比较次数。
本题目的:理解改进next数组的next[j]=next[k]。
答:

在这里插入图片描述

第四章
17.(A+B)*(C-D)/E的后缀表达式为_________________________________________。
答:AB+CD-*E/

18.已知一个顺序循环队列容量为100,设front=99,若rear=99,表示队列空;若rear=98___,表示队列满。
答:99;98
顺序循环队列空的条件:front == rear
队列满的条件: front=(rear+1)%length,rear=99,front=0
入队操作:rear =(rear+1)%length
出队操作:front=(front+1)%length

19.设一个顺序循环队列的数组容量为length,front和rear分别是队首和队尾下标,判断队列满的条件是___________________________________________________________。
答:front==(rear + 1)% length

20.将顺序存储结构的队列设计成循环结构的理由是_______________________________。
答:避免出现“假溢出”情况。

21.什么是栈?栈有何特点?画出以下序列执行以下操作的顺序栈示意图,标明栈顶位置。{45,17,32,67,51,74,12,92,34,25},{入, 入, 入, 出, 入, 入, 出, 入, 出, 入, 入, 出, 入, 入}
在这里插入图片描述

22.什么是队列?队列有何特点?画出以下序列执行以下操作的链式队列示意图,标明队列首尾位置,说明队列空和队列满条件。{91,52,14,12,67,17,45,25,34},{进,进,进,出,进,出,进,进,进,出,进,进}
答:队列的插入和删除操作分别在线性表的两端进行,队列的特点是“先进先出”。
在这里插入图片描述

23.有个莲花池里起初有一只莲花,每过一天莲花的数量就会翻一倍。假设莲花永远不凋谢,30天的时候莲花池全部长满了莲花,请问第23天的莲花占莲花池的几分之几?请实现递归函数代码。
答:
底层实现.栈
栈遍历二叉树 . 模拟了递归
首先定义最终终止条件f(30)=1;
然后定义递归公式中f(n)=f(n+1)0.5。
Int i=1;
F()
{
Cout<i++;
F()
}
1)边界条件
2)表达式,通式,fn=2
f(n-1)
If(边界条件)
{
Return
}
Else
{
递归公式.递归函数的调用
}
1 public class Test {
2 public static double f(double x){
3 if(x==30){
4 return 1;
5 }else{
6 return f(x+1)*0.5;
7 }
8 }
9 public static void main(String[] args) {
10 System.out.println(f(23));
11 }
12
13 }
结果:0.0078125

第五章
24.已知二维数组a[7][6]采用行主序存储,数组首地址是1000,每个元素占用4字节,则数组元素a[4][3]的存储地址是_____________________。
答:mat+(i*n+j)4=1000+(46+3)4=1108
Mat+(j
m+i)4=1000+(37+4)*4
在这里插入图片描述

25.设A10是一个对称矩阵,将A的对角线及对角线上方的元素aij(0<=i,j<n,i<j)以行为主次序存放在一维数组中,则元素a3,9在数组中的下标(≥0)是33
答:33
10+9+8+7=34, 0,1,2,…,33
在这里插入图片描述

26.分别画出以下稀疏矩阵非零元素三元组的顺序表、行单链表、列单链表和十字链表的存储结构。

答:

在这里插入图片描述
在这里插入图片描述

27.计算下列广义表的长度和深度,并画出广义表双链存储结构。
中国(北京,上海,江苏(南京,苏州),浙江(杭州),广东(广州))

第六章
28.回答以下问题,说明二叉树与树的区别。
① 二叉树是不是度为2的树?二叉树是不是度为2的有序树?为什么?
② 画出3个结点的树和二叉树的基本形态。

答:
① 不是。二叉树与树,定义不同,二叉树有左、右子树之分。详见教材第149~150页图6.7。
② 3个结点的树有2种形态,3个结点的二叉树有5种形态,如图6.1所示。
在这里插入图片描述

③ 先根次序遍历序列和后根次序遍历序列相同是,空树或仅有一个结点的二叉树。
在这里插入图片描述

  1. 已知一棵二叉树的中根和后根遍历序列如下,画出据此构造的二叉树。
    中根遍历序列:C D B E G A H F I J K;
    后根遍历序列:D C E G B F H K J I A

左子树
中:C D B E G
后:D C E G B

B左
中:C D
后:D C
B右:
中:EG
后:EG

右子树:
中:H F I J K
后:F H K J I

答:

30.画出用以下广义表形式表示的一棵二叉树。
A(B,C(D(F,G(J,)),E(H(K,L),I(,M))))
答:
在这里插入图片描述

31.实现BinaryTree类声明的以下基于遍历的操作,采用合适的次序遍历。
public int count() //返回二叉树的结点数
public int height() //返回二叉树的高度
preorder();
preorder(BinaryNode p)
{
If(p==null) return;
Cout<<p.data;
Preorder(p.left)
Preorder(p.right)
}

答:
int count() //返回二叉树的结点数
{ return this.count(this.root);
}
int count(BinaryNode p) //返回以p结点为根子树的结点数,先根次序遍历
{
if (p==NULL)
return 0;
return 1+count(p.left)+count(p.right);
}

int height() //返回二叉树的高度
{
return this.height(this.root);
}
int height(BinaryNode p) //返回以p结点为根的子树高度,后根次序遍历
{
if (p==NULL)
return 0;
int lh = height(p.left); //返回左子树的高度
int rh = height(p.right); //返回右子树的高度
return (lh>=rh) ? lh+1 : rh+1; //当前子树高度=较高子树高度+1
}

32.实现BinaryTree二叉树类的拷贝构造函数。
答:
BinaryTree (BinaryTree bitree) //深拷贝构造函数,由bitree构造
{
this.root = copy(bitree.root);
}
//复制以p根的子二叉树,返回新建子树的根结点。先根次序遍历和构造算法
BinaryNode copy(BinaryNode p)
{
if (p==NULL)
return NULL;
BinaryNode q=new BinaryNode(p.data); //拷贝根节点
q.left = copy(p.left); //递归拷贝左子树
q.right = copy(p.right); //递归拷贝右子树
return q;
}

33.已知一棵完全二叉树的层次遍历序列为LKJIHGFEDCBA,则K在中根次序下的后继结点是____________________,A在后根次序下的前驱结点是_____________________。
答:C,K

34.由n个权值构造的一棵Huffman树共有______________结点,因为________________________________________________。
答:2n-1, Huffman树中没有度为1的节点,且n0=n2+1
N总=n0+n2=n0+n0-1=2n-1

35.程序阅读题:
已知Tree类表示父母孩子兄弟链表存储的树,声明以下成员函数:
TreeNode insertRoot(T x) //插入x元素作为根结点,原根结点作为x的孩子,返回插入结点
TreeNode insertLastChild(TreeNode p, T x) //插入x作为p结点的最后一个孩子
TreeNode insertLastSibling(TreeNode p, T x) //插入x作为p结点的最后一个兄弟结点
TreeNode insertChild(TreeNode p, T x, int i) //插入x元素作为p结点的第i个孩子结点
阅读以下程序,画出所构造的树及其存储结构图。
void make3_3A(Tree tree)
{
tree.root = new TreeNode(‘L’);
TreeNode p=tree.insertLastChild(tree.root, ‘N’);
p=tree.insertChild(tree.root, ‘K’, 0);
tree.insertLastSibling(p, ‘Q’);
tree.insertLastChild(p, ‘M’);
tree.insertChild(p, ‘F’,1);
tree.insertRoot(‘S’);
p=tree.insertLastSibling(tree.root, ‘W’);
tree.insertLastChild(p, ‘X’);
}

答:

在这里插入图片描述

36.已知一棵BinaryTree二叉树采用二叉链表存储,每个结点表示一位学生某门课程成绩,结点数值范围为0~100;实现以下声明的函数,按优、良、中、及格、不及格五个等级统计人数,要求一次遍历操作效率,递归算法。
void printGrade(BinaryTree bitree) //统计bitree二叉树,输出结果
void grade(BinaryNode p, int result[]) //统计以p为根的子树,结果存入result数组,递归算法

答:

递归中共享信息
1)传参
2)全局变量
在这里插入图片描述

37.设一段正文由字符集{A,B,C,D,E,F,G,H}组成,其中每个字符在正文中的出现次数依次为{23,5,17,4,9,31,29,18},采用Huffman编码对这段正文进行压缩存储,画出所构造的Huffman树,并写出每个字符的Huffman编码。
答:
在这里插入图片描述

第七章
38.n个顶点具有最少边数的无向连通图和有向强连通图是怎样的?
答:

在这里插入图片描述

39.画出以下带权无向图的邻接矩阵表示和邻接表表示;再画出删除中顶点D后的邻接矩阵表示和邻接表表示。

答:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

40.构造带权无向图的最小生成树,并给出该最小生成树的代价。
在这里插入图片描述
dda在这里插入图片描述41.图中顶点D的出度是_______;所有顶点的入度之和是_______。 从F到B的最短路径是________________________,路径长度是_________。在这里插入图片描述

答:2,12。
(F,C,E,D,A,B),78

42.已知一个图及其顶点的存储次序如下,从顶点B开始进行一次深度优先搜索遍历,写出遍历序列;画出所选择的边及次序;画出栈的动态变化图,遍历一条最长路径时画一个栈,可包含多次入栈。

答:
在这里插入图片描述
在这里插入图片描述

  1. 构造以下带权无向图的最小生成树,并给出最小代价。在这里插入图片描述

答:

最小代价59

  1. 画出以下带权图顶点A的单源最短路径所选择的边,写出各路径及其长度。
  2. 在这里插入图片描述

答:
在这里插入图片描述

A的单源最短路径:(A,B)长度12,(A,C)长度31,(A,B,D)长度35,(A,B,D,F,E)长度44,(A,B,D,F)长度39,(A,B,D,F,E,G)长度71,(A,B,D,F,H)长度56。

第八章
45.已知关键字序列为{10,20,30,40,50,60,70,80,90},采用二分法查找算法,给定值为90、35时分别与哪些元素比较?画出相应的二叉判定树,计算ASL(成功)、ASL(不成功)
答:
在这里插入图片描述

查找90比较元素是50、70、80、90,查找35比较元素是50、30、40。ASL(成功)=2.5,ASL(不成功)=3~4

46.用代码实现二分法查找的递归算法(以数组存储元素)
答:
int binarySearch(T value[], int n, T key)
{
return binarySearch(value, 0, n-1, key);
}
int binarySearch(T value[], int begin, int end, T key)
{
if (begin<=end)
{ int mid = (begin+end)/2;
if (value[mid]==key)
return mid;
if (key < value[mid])
return binarySearch(value, begin, mid-1, key);
return binarySearch(value, mid+1, end, key);
}
return -1;
}

  1. {56, 81, 26, 51, 21, 29, 74, 69}关键字序列,画出构造的散列表(链地址法),容量length=10,散列函数hash(key)=key % length;计算ASL(写出算式)。
    答:

在这里插入图片描述

48.{51, 69, 82, 61, 27, 48, 51*, 54, 58, 67, 21}关键字序列,画出构造的二叉排序树,计算ASL(写出算式)。
答:

在这里插入图片描述

第九章
49.写出对关键字序列{65,92,87,25,38,56,46,12,25*}进行直接插入排序、希尔排序、快速排序、堆排序、归并排序(升序)的过程,并说明每种排序的稳定性。
答:
快速排序算法不稳定。
关键字序列:65 92 87 25 38 56 46 12 25*
0…8, vot=65, {25* 12 46 25 38 56} 65 {87 92}
0…5, vot=25, {12} 25* {46 25 38 56} 65 {87 92}
2…5, vot=46, 12 25* {38 25} 46 {56} 65 {87 92}
2…3, vot=38, 12 25* {25} 38 46 56 65 {87 92}
7…8, vot=87, 12 25* 25 38 46 56 65 87 {92}

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

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

相关文章

【计算机组成原理】总复习笔记(上)

特别声明&#xff1a; 本文仅供参考&#xff0c;本文部分内容来自AI总结、网络搜集与个人实践。如果任何信息存在错误,欢迎读者批评指正。本文仅用于学习交流,不用作任何商业用途。 文章目录 第 1 章 计算机系统概述1.1 冯诺依曼计算机结构1.2 高级语言与机器级目标代码1.3 计算…

【AI】搭建Windows Linux子系统(WSL2)CUDA环境

0.准备工作 Windows本机安装CUDA Driver 首先去下载页面下载驱动文件 点击Get CUDA Driver进入下载页面&#xff0c;我看下载页面跟普通驱动下载页面相同&#xff0c;感觉应该不是单独的驱动&#xff0c;只要之前显卡已经安装好了CUDA的驱动&#xff0c;就可以先省略这一步。…

使用 CMake 和 Ninja 构建 C/C++ 项目的教程

使用 CMake 和 Ninja 构建 C/C 项目的教程 CMake 是一个跨平台的开源构建工具&#xff0c;它简化了项目的构建过程。而 Ninja 是一个快速、轻量级的构建系统&#xff0c;与 CMake 配合使用可以提高项目的构建效率。本教程将向你介绍如何使用 CMake 和 Ninja 来构建你的 C/C 项…

灰色关联分析

&#xff08;相关性分析&#xff09;反映关系有多么紧密 “在系统发展过程中&#xff0c;若两个因素变化的趋势具有一致性&#xff0c;即同步变化程度较高&#xff0c;即可谓二者关联程度较高&#xff1b;反之&#xff0c;则较低。因此&#xff0c;灰色关联分析方法&#xff0…

一文了解 DeFi 原生公链 Sei,以及钱包添加教程什么是Sei?

Sei&#xff0c;领先Layer 1公链&#xff0c;专攻加密资产交易。不局限于DeFi&#xff0c;还进军游戏、社交媒体和NFTs等领域&#xff0c;构建了多功能区块链生态系统。在众多公链中&#xff0c;Sei凭借卓越处理速度和技术创新崭露头角。独特共识机制和技术创新功不可没。作为通…

【LeetCode每日一题】2807. 在链表中插入最大公约数(模拟+求最大公约数的6中写法)

2024-1-6 文章目录 [2807. 在链表中插入最大公约数](https://leetcode.cn/problems/insert-greatest-common-divisors-in-linked-list/)思路&#xff1a;模拟求最大公约数的几种方法&#xff1a; 1.暴力枚举法2.辗转相除法3.辗转相除法 ---递归调用4.辗转相除法 ---递归调用---…

摄像头视频录制程序使用教程(Win10)

摄像头视频录制程序-Win10 &#x1f957;介绍&#x1f35b;使用说明&#x1f6a9;config.json 说明&#x1f6a9;启动&#x1f6a9;关闭&#x1f6a9;什么时候开始录制&#xff1f;&#x1f6a9;什么时候触发录制&#xff1f;&#x1f6a9;调参 &#x1f957;介绍 检测画面变化…

每日一练:LeeCode-388. 文件的最长绝对路径【字符串、栈方法】

本文是力扣LeeCode-388. 文件的最长绝对路径 学习与理解过程&#xff0c;本文仅做学习之用&#xff0c;对本题感兴趣的小伙伴可以出门左拐LeeCode。 假设有一个同时存储文件和目录的文件系统。下图展示了文件系统的一个示例&#xff1a; 这里将 dir 作为根目录中的唯一目录。…

vue3+vite +element plus日历date picker中文显示

项目情况 element-plus 默认是英文模式&#xff0c;需要中文模式的话需要设置一下&#xff1a; 项目框架&#xff08;vue3&#xff09;&#xff1a;vite JS element-plus 版本&#xff1a;&#xff08;注意版本兼容&#xff0c;element plus 较低版本&#xff1a;1.xx.xx&a…

【深度deepin】深度安装,jdk,tomcat,Nginx安装

目录 一 深度 1.1 介绍 1.2 与别的操作系统的优点 二 下载镜像文件及VM安装deepin 三 jdk&#xff0c;tomcat&#xff0c;Nginx安装 3.1 JDK安装 3.2 安装tomcat 3.3 安装nginx 一 深度 1.1 介绍 由深度科技社区开发的开源操作系统&#xff0c;基于Linux内核&#xf…

基于JAYA算法优化的Elman神经网络数据预测 - 附代码

基于JAYA算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于JAYA算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于JAYA优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针…

解决pip安装第三库echarts报错:Package would be ignored而安装失败的问题

现象&#xff1a; 尝试了很多方法都没解决 &#xff0c;最后终于突然灵光一闪找到原因&#xff08;我这是python虚拟环境&#xff0c;创建的时候会自动升级pip&#xff09; 原因&#xff1a; pip版本过高&#xff01; 想不到是这原因吧&#xff01; 解决办法&#xff1a;手动…

面向对象进阶(static关键字,继承,方法重写,super,this)

文章目录 面向对象进阶部分学习方法&#xff1a;今日内容教学目标 第一章 复习回顾1.1 如何定义类1.2 如何通过类创建对象1.3 封装1.3.1 封装的步骤1.3.2 封装的步骤实现 1.4 构造方法1.4.1 构造方法的作用1.4.2 构造方法的格式1.4.3 构造方法的应用 1.5 this关键字的作用1.5.1…

ejs默认配置 原型链污染

文章目录 ejs默认配置 造成原型链污染漏洞背景漏洞分析漏洞利用 例题 [SEETF 2023]Express JavaScript Security ejs默认配置 造成原型链污染 参考文章 漏洞背景 EJS维护者对原型链污染的问题有着很好的理解&#xff0c;并使用非常安全的函数清理他们创建的每个对象 利用Re…

DNS主从服务器、转发(缓存)服务器

一、主从服务器 1、基本含义 DNS辅助服务器是一种容错设计&#xff0c;考虑的是一旦DNS主服务器出现故障或因负载太重无法及时响应客户机请求&#xff0c;辅助服务器将挺身而出为主服务器排忧解难。辅助服务器的区域数据都是从主服务器复制而来&#xff0c;因此辅助服务器的数…

自动化文件处理软件FileFlows

什么是 FileFlows &#xff1f; FileFlows 是一款文件处理软件&#xff0c;可以转码、转换、压缩和管理任何文件类型&#xff0c;包括视频、音频、图像和漫画书。它支持多个平台、硬件编码器以及强大的流程和报告功能。 FileFlows 通过监视“库”&#xff08;文件夹/路径&#…

3D人体姿态估计(教程+代码)

3D人体姿态估计是指通过计算机视觉和深度学习技术&#xff0c;从图像或视频中推断出人体的三维姿态信息。它是计算机视觉领域的一个重要研究方向&#xff0c;具有广泛的应用潜力&#xff0c;如人机交互、运动分析、虚拟现实、增强现实等。 传统的2D人体姿态估计方法主要关注通…

SPRING BOOT发送邮件验证码(Gmail邮箱)

SPRING BOOT邮件发送验证码 一、Gmail邮箱配置 1、进入Gmail(https://mail.google.com) 2、打开谷歌右上角设置 3、启用POP/IMP 4、启用两步验证(https://myaccount.google.com/security) 5、建立应用程式密码 6、复制保存应用程式密码 二、代码 1、引入依赖 <d…

Java序列化篇----第二篇

系列文章目录 文章目录 系列文章目录前言一、Serializable 实现序列化二、writeObject 和 readObject 自定义序列化策略三、序列化 ID四、序列化并不保存静态变量五、Transient 关键字阻止该变量被序列化到文件中六、序列化(深 clone 一中实现)前言 前些天发现了一个巨牛的人…

Java线程同步机制

第1章&#xff1a;引言 大家好&#xff0c;我是小黑。今天咱们来聊聊并发编程&#xff0c;咱们经常听说并行、并发这些词&#xff0c;特别是在处理大量数据、高用户负载时&#xff0c;这些概念就显得尤为重要了。为什么呢&#xff1f;因为并发编程可以帮助咱们的应用程序更有效…