美文网首页
计算机基础

计算机基础

作者: 大写的程序员 | 来源:发表于2016-06-03 16:36 被阅读0次

栈区(Stack)

在你的程序中,函数的参数值,局部变量的值等都被存在了“栈区”,这部分的内存,是由系统来帮助你来管理的,没有特殊情况的时候,你是不需要对其进行特别处理的。

堆区(Heap)

而针对堆区的内存,一般由程序员进行分配和释放, 使用堆内存的原因一般是“栈上内存比较小,不够用”、“系统管理内存的方式死板,不方便用”这两大类原因。对于堆上的内存,被程序员手动分配后,若程序员不释放就可能会出现“内存泄漏”。

全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 程序结束后由系统释放;文字常量区是用于储存常量字符串的, 程序结束后由系统释放;程序代码区用于存放函数体的二进制代码。


进程与线程:

1. 进程:程序的一次执行

2. 线程:CPU的基本调度单位

进程是正在运行的程序的实例。是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。

线程:线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。

操作系统的设计,因此可以归结为三点:

(1)以多进程形式,允许多个任务同时运行;

(2)以多线程形式,允许单个任务分成不同的部分运行;

(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。


数组(顺序表)与链表的区别

都是数据结构的一种

1、数组是申请的一块连续的内存空间,在编译阶段就已经确定好了空间大小,运行阶段是不允许改变的,所以可能存在数据量小时造成空间浪费,数据量大时造成数组越界;而链表是动态申请空间,根据需求申请或删除内存空间,在增加或删除数据时,链表更为灵活。

2、方位数据数据时,只需要根据下标即可访问,复杂度为O(1),而删除的话,需要移动之后的所有数据,复杂度为O(n);链表是物理上非连续的内存空间,对于访问数据,需要从头便利整个链表直到找到要访问的数据,没有数组有效,但是在添加和删除数据方面,只需要知道操作位置的指针,很方便可以实现增删,数组比较灵活有效率,时间复杂度查找删除都是O(n)。

综合以上,对于快速访问数据,不经常有添加删除操作的时候选择数组实现,而对于经常添加删除数据,对于访问没有很高要求的时候选择链表。


判断两个链表是否相交,如果相交求出交点

1,hash判断,将两个链表的节点进行hash,然后判断出交点

2、遍历两个链表,在遍历的过程中进行比较,看节点是否相同

3、先遍历第一个链表到他的尾部,然后将尾部的next指针指向第二个链表(尾部指针的next本来指向的是null)。这样两个链表就合成了一个链表,判断原来的两个链表是否相交也就转变成了判断新的链表是否有环的问题了:即判断单链表是否有环?

4、如果他们相交的话,那么他们最后的一个节点一定是相同的,否则是不相交的。因此判断两个链表是否相交就很简单了,分别遍历到两个链表的尾部,然后判断他们是否相同,如果相同,则相交;否则不相交;

相关文章

  • 技术书单

    计算机基础书籍 计算机组成原理 《编码:隐匿在计算机软硬件背后的语言》 :零基础入门《穿越计算机的迷雾》:零基础,...

  • 笔记 | 计算机系统基础:00-为什么要学这门课?

    课程链接:计算机系统基础(一):程序的表示、转换与链接计算机系统基础(二):程序的执行和存储访问计算机系统基础(三...

  • 第一天 Java基础入门【悟空教程】

    精心收集整理的教程笔记 第01天 Java基础入门 第1章计算机基础 1.1计算机 计算机(computer)俗称...

  • 1.1_计算机基础

    1.计算机基础知识 1.1_计算机专业分类 1.2_计算机基础课程 1.计算机组成原理 2.软件工程 ...

  • 计算机科学概论图文版笔记(待续)

    一、基础中的基础 计算机三个根本性基础: 计算机是输入、运算、输出的机器 程序是指令和数据的集合 计算机的处理方式...

  • 北邮计算机考研803计算机综合

    803计算机学科基础综合 一、 考查目标 计算机学科基础综合考试涵盖数据结构、计算机组成原理、操作系统和计算机网络...

  • 1 计算机基础和环境搭建

    课程目标:了解基础知识和环境搭建课程概要: 计算机基础 编程的本质 Python的介绍 环境搭建 1.计算机基础 ...

  • 编译过程

    前言 计算机应用都依赖于计算机程序;除此之外,计算机应用还需要基础硬件去执行计算机程序,而基础硬件又是不能识别我们...

  • 校招准备内容

    主要方向:基础知识+编程能力 计算机和编程基础:计算机基础:1.操作系统;2.网络3.数据库编程语言基础:(Jav...

  • 计算机基础

    计算机基础操作系统计算机网络

网友评论

      本文标题:计算机基础

      本文链接:https://www.haomeiwen.com/subject/rifldttx.html