精华内容
下载资源
问答
  • 以下关于TCP/IP协议中协议和层次的对应关系正确的是 解析: TCP协议和UDP协议都是基于IP协议的。 基于TCP的应用层协议:FTP、Telnet、SMTP、HTTP、POP3与DNS 基于UDP的应用层协议:TFTP、SNMP与DNS 其中DNS既可以...

    以下关于TCP/IP协议栈中协议和层次的对应关系正确的是
    在这里插入图片描述

    解析:
    TCP协议和UDP协议都是基于IP协议的。

    基于TCP的应用层协议:FTP、Telnet、SMTP、HTTP、POP3与DNS
    基于UDP的应用层协议:TFTP、SNMP与DNS
    其中DNS既可以基于TCP,也可以基于UDP。

    技巧:只记住UDP的两个,其余全是基于TCP即可。(DNS两个都是)

    综上,正确答案选C

    展开全文
  • 一、问题背景 在《Android开发艺术与探索》的第1.2.1章节的singleInstance启动模式中,作者举出了下面的一个例子: 在一个应用中,它有A、B、C、D这4个活动,其中C是...这样可以保证A、B在名字为包名的任务中,而...

    一、问题背景

    在《Android开发艺术与探索》的第1.2.1章节的singleInstance启动模式中,作者举出了下面的一个例子:

    在一个应用中,它有A、B、C、D这4个活动,其中C是主活动,另外A、B的启动模式为standard,而C、D的启动模式为singleTask,并将C、D的taskAffinity属性设定为不同于该应用包名的一个字符串。这样可以保证A、B在名字为包名的任务栈中,而C、D在另一个不同的任务栈中。


    首先我们打开这个应用,即最先启动C,再依次通过按钮跳转到活动D、A、B中,即启动各个Activity的顺序为C->D->A->B。这样操作后,从下图中我们可看出前台任务栈从栈底到栈顶分别为A、B两个Activity,后台任务栈从栈底到栈顶分别为C、D两个Activity。


    现在我们所在的Activity是B,我们再通过按钮跳转到活动D,此时后台任务栈便会被切换到前台任务栈。而此时当用户点击3次手机Back按键时,列表中的Activity会依次按D->C->B->A顺序出栈,如下图所示:
    在这里插入图片描述

    当博主李同学在看到上面描述的前台任务栈后台任务栈时,就很迷惑,因为Android官方并没有这2个概念,因为这2个概念是该书作者提出来的。后面博主上面查找资料后终于对此有了一些理解了。

    二、前台任务栈后台任务栈的具体定义

    前台任务栈后台任务栈的定义主要体现在两种不同的场景:两个不同应用中的前台任务栈后台任务栈,或者一个应用中的前台任务栈后台任务栈

    1.两个不同应用中的前台任务栈后台任务栈

    Activity的任务栈就是存放Activity对象实例的栈,默认情况下一个非系统应用只有一个任务栈,比如微信、QQ浏览器等。

    因此两个不同应用中的前台任务栈后台任务栈的定义如下:

    1. 前台任务栈:当前处于前台并运行、可见并能和用户交互的APP应用所在的栈。
    2. 后台任务栈:当前处于后台、不可见也不能和用户交互的APP应用所在的栈。

    举个例子,首先我们打开微信中与任意一个好友的聊天界面,此时微信的任务栈是前台任务栈,后台任务栈是空的。当我们点击该微信好友聊天内容中的一个网页链接时,微信首先用微信内置的浏览器打开该网页,接着我们还可以点击在浏览器打开,这样我们就可以用第三方浏览器打开并浏览这个网页了,如QQ浏览器。此时我们手机的显示界面从微信跳转到了QQ浏览器,这时QQ浏览器的任务栈便是前台任务栈,而微信的任务栈便是后台任务栈。当我们点击返回按钮时,QQ浏览器唯一的Activity被出栈,手机的显示界面又从QQ浏览器返回到了微信,此时微信的任务栈是前台任务栈,后台任务栈又空的。

    2.一个应用中的前台任务栈后台任务栈

    Activity的任务栈就是存放Activity对象实例的栈,默认情况下一个非系统应用只有一个任务栈,比如QQ、微信等。但对某些系统应用来说,一个系统应用可能有多个任务栈,因为这些系统应用的一些很重要的Activity的启动模式都被设置为singleInstance了,如手机桌面应用的桌面Activity、电话应用的通话Activity、闹钟系统应用的响铃Activity。当一个应用有多个任务栈时,在这一个应用中,该应用的任务栈就有了前台和后台之分了。

    因此一个应用中的前台任务栈后台任务栈的定义如下:

    1. 前台任务栈:当前处于前台并运行、可见并能和用户交互的Activity所在的栈。
    2. 后台任务栈:当前处于后台、不可见也不能和用户交互的Activity所在的栈。

    参考文献:
    [1]Activity启动模式与任务栈(Task)全面深入记录(上)
    [2]Activity的任务栈(启动模式等)
    [3]问:Activity有几种任务栈?和Activity的关系是怎样的?

    展开全文
  • 如何正确理解堆和

    2020-12-28 08:36:24
    一、知识描述 学习数据结构一定会学到堆和的相关问题,我想对这个问题谈谈我的理解,希望大家能够互相学习,互相进步。堆和是两种数据结构。堆栈都是一种数据按序排列的数据结构,只能在一端(成为栈顶(top))...

    一、知识描述
    学习数据结构一定会学到堆和栈的相关问题,我想对这个问题谈谈我的理解,希望大家能够互相学习,互相进步。堆和栈是两种数据结构。堆栈都是一种数据按序排列的数据结构,只能在一端(成为栈顶(top))对数据项进行插入和删除。堆栈是个特殊的储存区,主要功能是暂时存放数据和地址。
    栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值和局部变量的值等。其操作方式类似于数据结构中的栈。简单的理解就是当定义一个变量的时候,计算机会在内存中开辟一块存储空间来存放这个变量的值,这块空间就叫做栈,然而栈中一般存放的是基本类型数据,栈的特点是先进后出(或后进先出)
    堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。其实在堆中一般存放变量是一些对象类型。

    展开全文
  • 试题名称 判断输出顺序正确与否 时间限制: 1 秒 内存限制: 10KB 问题描述 给定一个,其中最多存储M个数据。将N个数据以1,2,3,…,N的顺序压栈,然后再随机弹。判断一下哪些是有可能的弹顺序,而哪些不是。...

    试题名称 判断栈输出顺序正确与否
    时间限制: 1 秒
    内存限制: 10KB

    问题描述
    给定一个栈,其中最多存储M个数据。将N个数据以1,2,3,…,N的顺序压栈,然后再随机弹栈。判断一下哪些是有可能的弹栈顺序,而哪些不是。例如M是5,N是7,我们可以得到1, 2, 3, 4, 5, 6, 7的弹栈顺序,而不能得到3, 2, 1, 7, 5, 6, 4这样的弹栈顺序。(M,N<=1000)

    输入说明
    输入包含了一种情况下的测试数据。在每种情况下,有三组输入数据:
    第一组列在首行,包含了三个数据:栈的最大容量M,压栈数据长度N,要验证的弹栈序列个数K。
    第二组为压栈数据:N个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。
    第三组为K行数据,每行包括了一个需要验证的弹栈序列(含N个数据)。
    同行数据间以空格隔开。

    输出说明
    输出应该包括K行,包行了对每个输入的验证序列,输出的一个判断结果。如果这个弹出序列可能发生,就输出“YES”,否则就输出“NO”。

    输入样例
    5 7 5
    1 2 3 4 5 6 7
    1 2 3 4 5 6 7
    3 2 1 7 5 6 4
    7 6 5 4 3 2 1
    5 6 4 3 7 2 1
    1 7 6 5 4 3 2

    输出样例
    YES
    NO
    NO
    YES
    NO

    #include<stdio.h>
    #include<stdlib.h>
    int main(void){
    	int M,N,K;
    	int i,j;
    	scanf("%d%d%d",&M,&N,&K);
    	//定义栈
    	int stack[1000];
    	int top=-1; 
    	//定义数据
    	int array[1000]; //N个数据 
    	int list[1000];//保存弹栈序列 
    	//定义标记位 判断是否正确 0表示错误 1表示正确
    	int flag[1000];
    	
    	//输入N个数据 
    	for(i=0;i<N;i++){
    		scanf("%d",&array[i]);
    	}
    	
    	//对k组数据进行判断
    	for(i=0;i<K;i++){
    		//先输入测试数据
    		for(j=0;j<N;j++){
    			scanf("%d",&list[j]);
    		}
    		
    		int top=-1;//置空栈
    		int arrayIndex,listIndex;
    		arrayIndex=listIndex=0; 
    		//分析:当栈不为空且等于弹栈序列 出栈 弹栈序列向前移动
    		//其余情况则入栈(栈满时,无法入栈;所有数据都已入栈,还需入栈时,则无法入栈) 
    		//top<M 表示不能超出栈的容量
    		//listIndex<N 表示弹栈序列没有弹完
    		//arrayIndex<=N 表示栈不为空且入栈数据已入完还需要进行入栈操作 则退出循环 
    		while(top<M&&listIndex<N&&arrayIndex<=N){
    			if(top!=-1&&stack[top]==list[listIndex]){//栈不为空 且等于弹栈序列  则出栈 
    				//printf("出栈元素%d\n",stack[top]); 
    				top--;//出栈
    				listIndex++; //移动弹栈序列 
    			}else{//栈为空 或者不等于栈顶元素 则入栈 
    				top++; 
    				if(top<M&&arrayIndex<N){//不满则入栈 
    					//printf("入栈元素%d\n",array[arrayIndex]); 
    					stack[top]=array[arrayIndex];
    				} 
    				arrayIndex++; 
    			}
    		}
    		//printf("top=%d\n",top);
    		if(top==-1){
    			flag[i]=1;
    		}else{
    			flag[i]=0;
    		}
    	} 
    
    	for(i=0;i<K;i++){
    		if(flag[i]==1){
    			printf("YES");
    		}else{
    			printf("NO");
    		}
    		if(i<K-1){
    			printf("\n");
    		}
    	}
    	return 0;
    }
    /**
    5 7 2
    1 2 3 4 5 6 7
    1 2 3 4 5 6 7
    3 2 1 7 5 6 4
    */
    
    展开全文
  • 如果有一个类是 myClass , 关于下面代码正确描述的是?
  • 关于堆、描述

    2008-08-15 22:36:00
    程序需要的内存空间分为 heap(堆) 和 stack(); heap 是自由存储区, stack 是自动存储区; 使用 heap 需要手动申请、手动释放, stack 是自动申请、自动释放; 使用 heap 时, 如果只申请不释放, 就会发生...
  • 关于以下代码,哪个说法是正确的? myClass::foo(){ delete this; } .. void func(){ myClass *a = new myClass(); a->foo(); } 正确答案: B A.它会引起溢出 B.都不正确 C.它不能编译 D.它会引起段错误 ...
  • 问题描述 给定一个,其中最多存储M个数据。将N个数据以1,2,3,…,N的顺序压栈,然后再随机弹。判断一下哪些是有可能的弹顺序,而哪些不是。例如M是5,N是7,我们可以得到1, 2, 3, 4, 5, 6, 7的弹顺序,而不能...
  • 题目描述输入两个整数序列,第一个序列表示的压入顺序,请判断第二个序列是否为该的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出...
  • 关于堆内存和内存的简单描述

    千次阅读 2016-10-27 15:02:59
    内存:内存地址连续,先进来的存放在底,所以先进后出,由系统自动分配空间。如:user user;此时,系统已经在内存中为user分配了空间,现在处于顶部,后面再来的会将这个往下推,直到user被推到了最低的内存...
  • 问题描述 给定一个,其中最多存储M个数据。将N个数据以1,2,3,...,N的顺序压栈,然后再随机弹。判断一下哪些是有可能的弹顺序,而哪些不是。例如M是5,N是7,我们可以得到1, 2, 3, 4, 5, 6, 7的弹顺序,而不...
  • 一 问题描述: 两个数组pPush和pPop分别存储了压栈序列和出栈序列,如何判断出栈序列是否正确,假设元素不重复。 需要实现的函数: bool isStackOutRight(int *stackIn,int *stackOut,int length) 二...
  • Linux 中的各种:进程 线程 内核 中断

    万次阅读 多人点赞 2016-09-01 21:52:02
    是什么?有什么作用?首先, (stack) 是一种串列形式的 数据结构。这种数据结构的特点是 后入先出 (LIFO, Last In First Out),数据只能在串列的一端 (称为:栈顶 top) 进行 推入 (push) 和 弹出 (pop) 操作...
  • 用数据结构中的思想解决了迷宫问题,C语言描述,注释详细,VC环境下编译通过,运行正确
  • C++中关于堆和的说法,哪个是错误的: 正确答案: C 堆的大小仅受操作系统的限制,的大小一般一般较小 在堆上频繁的调用new/delete容易产生内存碎片,没有这个问题 堆和都可以静态分配...
  • 问题及代码: /* ...* All rights reserved. * 文件名称:date.cpp * 作 者:单昕昕 * 完成日期:2016年3月31日 * 版 本 号:v1.0 * 问题描述:假设表达式中允许包含3中... 设计一个算法采用“顺序”判断表达式中的括号
  • C++数据结构——

    万次阅读 多人点赞 2018-06-25 21:54:49
    C++数据结构—— 最近计划再复习一遍数据结构,看到一篇博客:https://www.cnblogs.com/QG-whz/p/5170418.html#_label0。 1、(Stack)是一种线性存储结构,它具有如下特点: ...
  • 题目描述输入两个整数序列,第一个序列表示的压入顺序,请判断第二个序列是否为该的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出...
  • 关于多线程和多进程编程,下面描述正确的是(): 正确答案: A C D 多进程里,子进程可获得父进程的所有堆和的数据;而线程会与同进程的其他线程共享数据,拥有自己的空间 线程因为有自己的...
  • 关于堆和的那些事 2014-09-14 分类:算法设计、编程开发、首页精华2人评论 来源:独酌逸醉 分享到:更多7 欢迎分享开发问题到码农社区!将问题帖子私信@程序员俱乐部,将有近60000人为您解答! 问题描述 编程语言...
  • 首先在数据结构上要知道堆栈,尽管我们这么称呼它,但实际上堆栈是两种数据结构:堆和。 堆和都是把一些数据项按序排列的数据结构。 1、(Stack) 就像只有一个口的箱子,它是一种具有“后进先出”性质的...
  • 概览 2 使用 2.1 接口 2.2 初始化一个 2.3 示例应用程序:匹配括号 3 的3种应用 3.1 后缀表达式 3.1.1 计算算数表达式 3.1.2 计算后缀表达式 3.1.3 将中缀表达式转换为后缀表达式 ...
  • 中,下列说法正确的是(C )。 A.每次插入总是在底,每次删除也总是在底。 B.每次插入总是在栈顶,每次删除总是在底。 C.每次插入总是在栈顶,每次删除也总是在栈顶。 D.每次插入总是在
  • 下面有关值类型和引用类型描述正确的是()? A 值类型的变量赋值只是进行数据复制,创建一个同值的新对象,而引用类型变量赋值,仅仅是把对象的引用的指针赋值给变量,使它们共用一个内存地址。 B 值类型数据是在...
  • 数组是分配在中的

    千次阅读 2018-07-03 18:02:00
    关于JAVA堆,下面说法错误的是()? 正确答案: C 你的答案: B (错误) 所有类的实例和数组都...关于堆和 Java 把内存划分成两种:一种是内存,另一种是堆内存。 式存储: 在函数中定义的一些基本类型的变量...
  • java实现--顺序

    2021-04-22 16:15:12
    使用顺序存储结构实现的被称为顺序,这篇文章总结如何实现顺序

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 117,580
精华内容 47,032
关键字:

关于栈的描述正确的是