精华内容
下载资源
问答
  • 初步理解和深入理解
    2021-06-17 04:16:33

    《深入理解计算机系统》从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性、性能和实用性。全书共12章,主要内容包括信息的表示和处理、程序的机器级表示、处理器体系结构、优化程序性能、存储器层次结构、链接、异常控制流、虚拟存储器、系统级I/O、网络编程、并发编程等。书中提供大量的例子和练习,并给出部分答案,有助于读者加深对正文所述概念和知识的理解。

    本书的最大优点是为程序员描述计算机系统的实现细节,帮助其在大脑中构造一个层次型的计算机系统,从最底层的数据在内存中的表示到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户态应用。通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更好地理解程序的行为为什么是这样的,以及效率低下是如何造成的。

    此书的不要章节和主要内容有:

    第1章 计算机系统漫游

    这一章主要通过一个简单的hello

    world程序给我们介绍了一个程序是如何在计算机系统中运行的。让我们大致了解了计算机的工作方式,同时引起我们继续深入了解计算机的工作。

    第一部分:程序结构和执行

    第2章 信息的表示和处理

    第3章 程序的机器级表示

    第4章 处理器体系结构

    第5章 优化程序性能

    第6章 存储器层次结构

    第二部分:在系统上运行程序

    第7章 链接

    第8章 异常控制流

    第9章 虚拟存储器

    第三部分:程序间的交互和通信

    第10章 系统级I/O

    第11章 网络编程

    第12章 并发编程

    进过第一遍的略读之后,我发现,里面还有许多我还不懂的知识,也局限于现在的知识水平,有一些东西也是我现在还不能够理解的。但是,它对我的作用还是挺大的,它让我对于我们的计算机系统有了更系统更深入的了解,让我初步了解了程序的编写时应该要注意什么问题。相信如果可以花更多的时间来研读此书的话,我会丛中的获益更多。《深入理解计算机系统》这本书是我们计算机专业的一本经典之作,如果只是读一两遍的话,你很难从中收获很多,只有不断地反复看、琢磨,你才能真正的提高你在计算机基础方面的知识。所以,我们应该在长时间内都花些时间来研读此书。

    更多相关内容
  • 之前看了很多关于Swift派发机制的内容,但感觉没有一篇能够彻底讲清楚这件事情,看完了这篇文章之后我对Swift的派发机制才建立起了初步的认知.一张表总结引用类型,修饰符它们对于Swift函数派发方式的影响.函数派发...
  • 【IT168 技术】权限两个字,一个权力,一个限制。在软件领域通俗的解释就是哪些人可以对哪些资源做哪些操作。在SQL Server中,”哪些人”,“哪些资源”,”哪些操作”...对于主体,安全对象权限的初步理解,见图1.图
  • 深入理解Kotlin协程

    2021-01-17 14:42:26
    (1)作者是腾讯的不错工程师,是Kotlin领域的先驱者、知名布道师、Kotlin领域的网红级专家(2)本书从工作机制、实现原理、应用场景、使用方法、实践技巧、...它同时提供了多语言视角,亦可通过本书了解其他语言的协...

    (1)作者是腾讯的不错工程师,是Kotlin领域的先驱者、知名布道师、Kotlin领域的网红级专家(2)本书从工作机制、实现原理、应用场景、使用方法、实践技巧、标准库、框架、应用案例等8个维度对Kotlin协程进行了全面讲解

    这是一部从工作机制、实现原理、应用场景、使用方法、实践技巧、标准库、框架、应用案例等多个维度全面讲解Kotlin协程的专著,它同时提供了多语言视角,亦可通过本书了解其他语言的协程。

    本书作者是腾讯的的不错工程师,是靠前Kotlin领域的先驱者和布道者,不仅在工程实践领域积累了丰富的经验,而且在Kotlin开发者社群里有广泛的影响力和号召力。

    全书共9章:

    章从协程的核心应用场景——异步程序设计的思路和关键问题切入,引出Kotlin协程的概念;

    第2章首先介绍了协程的概念、分类,然后讲解了Python、Lua、Go等不同语言的协程实现和对比;

    第3、4章以Kotlin标准库的协程API为核心,讲解了简单协程的使用方法和运行机制,以及通过简单协程设计和实现复合协程的思路和方法;

    第5、6章以Kotlin的官方协程框架为模板,通过逐步实现其中的核心功能,分析了其中的实现细节和复合协程的运行机制,并对框架的使用做了深入探讨;

    第7、8章讲解了协程在Android应用开发和Web服务开发中的应用场景、面临的挑战,以及解决各种常见问题的方法和思路;

    第9章探讨了JavaScript和Native等非JVM平台对协程的支持情况,以及协程在这些平台上的应用。

    英文书名:Understanding Kotlin Coroutine(1)腾讯不错工程师、Kotlin布道师、Kotlin中文社区负责人撰写(2)从工作机制、实现原理、应用场景、使用方法、实践技巧、标准库、框架等维度全面剖析协程,提供多种语言视角和丰富案例

    前言

    章 异步程序设计介绍

    1.1 异步的概念

    1.1.1 程序的执行

    1.1.2 异步与回调

    1.1.3 回调地狱

    1.2 异步程序设计的关键问题

    1.2.1 结果传递

    1.2.2 异常处理

    1.2.3 取消响应

    1.2.4 复杂分支

    1.3 常见异步程序设计思路

    1.3.1 Future

    1.3.2 CompletableFuture

    1.3.3 Promise与async/await

    1.3.4 响应式编程

    1.3.5 Kotlin协程

    1.4 本章小结

    第2章 协程的基本概念

    2.1 协程究竟是什么

    2.2 协程的分类

    2.2.1 按调用栈分类

    2.2.2 按调度方式分类

    2.3 协程的实现举例

    2.3.1 Python的Generator

    2.3.2 Lua标准库的协程实现

    2.3.3 Go的go routine

    2.4 本章小结

    第3章 Kotlin协程的基础设施

    3.1 协程的构造

    3.1.1 协程的创建

    3.1.2 协程的启动

    3.1.3 协程体的Receiver

    3.1.4 可挂起的main函数

    3.2 函数的挂起

    3.2.1 挂起函数

    3.2.2 挂起点

    3.2.3 CPS变换

    3.3 协程的上下文

    3.3.1 协程上下文的集合特征

    3.3.2 协程上下文元素的实现

    3.3.3 协程上下文的使用

    3.4 协程的拦截器

    3.4.1 拦截的位置

    3.4.2 拦截器的使用

    3.4.3 拦截器的执行细节

    3.5 Kotlin协程所属的类别

    3.5.1 调用栈的广义和狭义

    3.5.2 调度关系的对立与统一

    3.6 本章小结

    第4章 Kotlin协程的拓展实践

    4.1 序列生成器

    4.1.1 仿Python的Generator实现

    4.1.2 标准库的序列生成器介绍

    4.2 Promise模型

    4.2.1 async/await与suspend的设计对比

    4.2.2 仿JavaScript的async/await实现

    4.3 Lua风格的协程API

    4.3.1 非对称API实现

    4.3.2 对称API实现

    4.4 再谈协程的概念

    4.4.1 简单协程与复合协程

    4.4.2 复合协程的实现模式

    4.5 本章小结

    第5章 Kotlin协程框架开发初探

    5.1 开胃菜:实现一个delay函数

    5.2 协程的描述

    5.2.1 协程的描述类

    5.2.2 协程的状态

    5.2.3 支持回调的状态

    5.2.4 协程的初步实现

    5.3 协程的创建

    5.3.1 无返回值的launch

    5.3.2 实现invokeOnCompletion

    5.3.3 实现join

    5.3.4 有返回值的async

    5.4 协程的调度

    5.4.1 协程的执行调度

    5.4.2 协程的调度位置

    5.4.3 协程的调度器设计

    5.4.4 基于线程池的调度器

    5.4.5 基于UI事件循环的调度器

    5.4.6 为协程添加默认调度器

    5.5 协程的取消

    5.5.1 完善协程的取消逻辑

    5.5.2 支持取消的挂起函数

    5.5.3 CancellableContinuation的实现

    5.5.4 改造挂起函数

    5.6 协程的异常处理

    5.6.1 定义异常处理器

    5.6.2 处理协程的未捕获异常

    5.6.3 区别对待取消异常

    5.6.4 异常处理器的运用

    5.7 协程的作用域

    5.7.1 作用域的概念

    5.7.2 作用域的声明

    5.7.3 建立父子关系

    5.7.4 很好作用域

    5.7.5 协同作用域

    5.7.6 suspend fun main的作用域

    5.7.7 实现异常的传播

    5.7.8 主从作用域

    5.7.9 完整的异常处理流程

    5.7.10 父协程等待子协程完成

    5.8 本章小结

    第6章 Kotlin协程的官方框架

    6.1 协程框架概述

    6.1.1 框架的构成

    6.1.2 协程的启动模式

    6.1.3 协程的调度器

    6.1.4 协程的全局异常处理器

    6.1.5 协程的取消检查

    6.1.6 协程的超时取消

    6.1.7 禁止取消

    6.2 热数据通道Channel

    6.2.1 认识Channel

    6.2.2 Channel的容量

    6.2.3 迭代Channel

    6.2.4 produce和actor

    6.2.5 Channel的关闭

    6.2.6 BroadcastChannel

    6.2.7 Channel版本的序列生成器

    6.2.8 Channel的内部结构

    6.3 冷数据流Flow

    6.3.1 认识Flow

    6.3.2 对比RxJava的线程切换

    6.3.3 冷数据流

    6.3.4 异常处理

    6.3.5 末端操作符

    6.3.6 分离Flow的消费和触发

    6.3.7 Flow的取消

    6.3.8 其他Flow的创建方式

    6.3.9 Flow的背压

    6.3.10 Flow的变换

    6.4 多路复用select

    6.4.1 复用多个await

    6.4.2 复用多个Channel

    6.4.3 SelectClause

    6.4.4 使用Flow实现多路复用

    6.5 并发安全

    6.5.1 不安全的并发访问

    6.5.2 协程的并发工具

    6.5.3 避免访问外部可变状态

    6.6 本章小结

    第7章 Kotlin协程在Android上的应用

    7.1 Android上的异步问题

    7.1.1 基于UI的异步问题分析

    7.1.2 “鸡肋”的AsyncTask

    7.1.3 “烫手”的回调

    7.1.4 “救世”的RxJava

    7.2 协程对UI的支持

    7.2.1 UI调度器

    7.2.2 协程版AutoDispose

    展开全文
  • 深入理解计算机网络

    2018-05-05 12:01:12
    深入理解计算机网络是计算机网络领域的...深入理解计算机网络既适合想全面深入了解计算机网络技术的网络工程师们深入学习作为工作时的参考手册,又适合各高等院校的老师学生们用作系统学习计算机网络技术的教材。
  • 内存对齐的初步讲解 内存对齐可以用一句话来概括: “数据项只能存储在地址是数据项大小的整数倍的内存位置上” 例如int类型占用4个字节,地址只能在0,4,8等位置上。 例1: 代码如下:#include <stdio>struct xx{ ...
  • 深入理解Android

    2019-05-28 08:28:18
    通过基础知识的学习,使大家了解手机屏幕显示的原理及各种手机硬件的传感器使用方法。通过讲解基本的设计规范及图标设计方法,使读者初步掌握移动应用设计知识。 下篇为道之篇,是进阶应用设计知识,详细讲解了从...

    深入理解Android

    《深入理解Android:卷I》是一本以情景方式对Android的源代码进行深入分析的书。内容广泛,以对Framework层的分析为主,兼顾Native层和Application层;分析深入,每一部分源代码的分析都力求透彻;针对性强,注重实际应用开发需求,书中所涵盖的知识点都是Android应用开发者和系统开发者需要重点掌握的。
    全书共10章,第1章介绍了阅读本书所需要做的准备工作,主要包括对Android系统架构和源码阅读方法的介绍;第2章通过对Android系统中的MediaScanner进行分析,详细讲解了Android中十分重要的JNI技术;第3章分析了init进程,揭示了通过解析init.rc来启动Zygote以及属性服务的工作原理;第4章分析了Zygote、SystemServer等进程的工作机制,同时还讨论了Android的启动速度、虚拟机HeapSize的大小调整、Watchdog工作原理等问题;第5章讲解了Android系统中常用的类,包括sp、wp、RefBase、Thread等类,同步类,以及Java中的Handler类和Looper类。

    目录案例


    下载地址:
    深入理解Android

    其它资料

    展开全文
  • 深入理解计算机系统lab1——gdb调试初步与debug x86汇编初步 以下仅供最简单的入门参考!!!!!!! 安装Linux环境,并进行简单程序的编译GDB调试 一、安装linux系统与环境 第一步,在所使用的电脑平台...

    深入理解计算机系统lab1——gdb调试初步

    以下仅供最简单的入门和参考!!!!!!!

    安装Linux环境,并进行简单程序的编译和GDB调试

    一、安装linux系统与环境

    在这里插入图片描述
    第一步,在所使用的电脑平台上安装linux系统与环境;
    下载VM这个虚拟机后,又下载ubantu的32位Linux操作系统,在VM成功创建了Linux环境的虚拟机。

    在这里插入图片描述

    二、在linux系统中使用gcc完成简单c语言的编译和执行

    第二步,成功在linux系统中使用gcc完成简单c语言的编译和执行;
    打开终端,vim hello.c进行编辑,编辑完成后按:wq保存并退出,gcc hello.c -o hello编译生成可执行文件,./hello将结果成功输出。

    1.打开终端,vim hello.c 新建hello.c

    在这里插入图片描述

    2.编辑hello.c

    在这里插入图片描述

    3.保存hello.c并退出

    在这里插入图片描述

    4.gcc编译,生成可执行文件,执行并查看运行结果

    在这里插入图片描述

    三、GDB进行程序基本的程序调试和反汇编

    第三步,使用GDB进行程序基本的程序调试和反汇编。

    1. gcc -g hello.c -o hello 生成可调试文件,gdb hello进入调试界面
      在这里插入图片描述

    2. list(l)将代码全部加载出来
      在这里插入图片描述

    3. breakpoint (b) 4(第四行)然后设置断点 ,并查看info b,添加成功。
      在这里插入图片描述

    4. run(r)执行,到断点处停止。
      在这里插入图片描述

    5. disassemble得到汇编代码。
      在这里插入图片描述

    实验补充
    四、使用指令新建、编辑、汇编、链接汇编语言程序
    4.1新建并编辑源代码

    命令:getdit sum.c
    说明:gedit是一个GNOME桌面环境下兼容UTF-8的文本编辑器。使用vi或者vim同样可以实现新建与编辑。
    在这里插入图片描述
    在这里插入图片描述

    4.2预处理

    命令:gcc -E sum.c -o sum.i
    说明:预处理时,编译器会将C源代码中包含的的头文件编译进来
    在这里插入图片描述
    在这里插入图片描述

    4.3编译

    命令:gcc -S sum.i -o sum.s
    说明:gcc首先检查代码的规范性,是否有语法错误,确定代码实际要做的工作,让后将代码翻译成汇编语言。
    在这里插入图片描述
    在这里插入图片描述

    4.4汇编

    命令:gcc -c sum.s -o sum.o
    说明:gcc进行汇编阶段,将编译阶段生成的”.s”文件转成二进制目标代码
    在这里插入图片描述

    4.5链接

    命令:gcc sum.o -o sum.out
    说明:链接过程将有关的目标文件彼此连接起来,使得所有目标文件成为一个能够执行的统一整体。
    在这里插入图片描述

    4.6执行

    命令:./sum.out
    说明:执行可执行文件,输出结果
    在这里插入图片描述

    五、能够使用gdb对汇编语言进行调试

    5.1生成汇编代码

    命令:gcc -g sum.c -o sum
    说明:使用命令生成可以调试文件
    在这里插入图片描述

    5.2开始调试

    命令:gdb sum
    说明:使用gdb对生成的可调试文件进行调试
    在这里插入图片描述

    5.3设置新的断点

    命令:breakpoint(b)
    说明:设置断点的命令是break,它通常有如下方式:
    break 在进入指定函数时停住
    break 在指定行号停住。
    break +/-offset 在当前行号的前面或后面的offset行停住。offiset为自然数。
    break filename:linenum 在源文件filename的linenum行处停住。
    break … if …可以是上述的参数,condition表示条件,在条件成
    立时停住。比如在循环境体中,可以设置break if i=100,表示当i为100时停住程序。
    可以通过info breakpoints [n]命令查看当前断点信息。
    在这里插入图片描述

    5.4单步执行程序

    命令:si/ni
    说明:ni/si都是汇编级别的断点定位。si会进入汇编和C函数内部,ni不会。

    5.5查看寄存器

    命令:info regs(i r)
    说明:命令i r能够查看所有寄存器的值
    在这里插入图片描述
    执行命令i r后打印出所有寄存器的列表
    在这里插入图片描述
    程序运行到第七行输出,此时查看寄存器的值,可见eax=9结果正确

    5.6查看指定内存内容

    命令:examine(x)
    说明:x的命令语法如下图所示
    在这里插入图片描述

    执行命令:x/10x $sp
    说明:打印当前栈stack的10个元素
    在这里插入图片描述
    当前栈的第6、7元素对应于a、b的值

    展开全文
  • 深入入理理解解Python 代代码码优优化化详详解解 本文初步探讨了 python 常见的性能优化技巧以及如何借助工具来定位分析程 的性能瓶颈并提供了相关可以 进行性能优化的工具或语言希望能够更相关人员一些参考 ...
  • 要达到看懂并深入理解这本书,一定要明白自己当前所处的阶段,这本书并不适合刚接触计算机的同学就来读,适合学习计算机系统,并在中级阶段时作为入门教材来学习。 那么如果要学习计算机系统学,如何逐渐由浅入深的...
  • 初步了解计算机系统,开启软件系统学习旅程。
  • 二、算法的初步思考 二、简单的网络结构 三、数据集的处理 四、LOSS函数的形成 1、类别部分 2、存在物体的置信度部分 3、不存在物体的置信度部分 4、宽高的部分 5、LOSS公式中的几个lambda参数 五、预测 六、总结 ...
  • 主要介绍了Vue router的部分高级用法,主要是针对已经有初步了解Vue-router的人,通过本文主要给大家介绍路由元信息,滚动行为以及路由懒加载这几个的使用方法。感兴趣的朋友一起看看吧
  • 转载于:https://www.cnblogs.com/xuezou/p/9148795.html
  • 深入理解分布式事务:原理与实战》草图曝光,快来围观吧!!
  • 如何阅读《深入理解计算机系统》

    千次阅读 2021-03-03 17:51:25
    作者:Randal E. Bryant,David R. O'Hallaron来源:华章计算机(hzbook_jsj)《深入理解计算机系统》(简称CS:APP)的主要读者是计算机...
  • JavaScript初步理解

    千次阅读 热门讨论 2022-04-10 08:57:06
    今天看了一篇较为基础的文章,做个简要的总结,把文章内容进行提炼,再加上一些自己的理解。 JavaScript 是怎么运行起来的? (qq.com)https://mp.weixin.qq.com/s/VyHpI_AkCdv5OM9JjgeNyg 解释型语言编译型语言 ...
  • 深入理解计算机系统-cachelab

    万次阅读 多人点赞 2018-07-18 22:01:04
    ③然后函数会根据选项字符串去你的输入进行匹配,当某个选项匹配时,函数会返回该选项对应的字符,而该选项对应的参数会存入变量optarg中,该变量是包含在头文件中的,这样一来的话我们就可以快速而简洁地分析...
  • 字迹清晰,有目录。本人初步浏览了书籍内容,非常适合Linux网络开发的技术人员学习,本人正在研究。
  • Kotlin进阶必读:深入理解Kotlin协程

    千次阅读 2020-07-06 07:00:00
    新书速递Kotlin协程现在是一个很大的麻烦,国内外都没有很好的资料,官方文档又过于精练,不太适合大家入门进阶。今天为大家推荐一本新书《深入理解Kotlin协程》,作者是Kotli...
  • 集合的深入理解

    2021-12-05 15:22:20
    集合下有Set集合List集合,两大类,均属于接口; Set系列集合: HashSet:添加的元素是无序的,不重复的,无索引的 LinkedHashSet:添加的元素是有序的,不重复的,无索引的 TreeSet:不重复,无索引,...
  • 深入理解Android-JNI的理解

    千次阅读 2018-07-27 00:04:04
    理解JNI需要理解以下问题: JNI的认识 JNI库的加载、相关native函数分析总结【借助于MediaScanner】 JNI函数注册 JNI里面类型转换 JNIEnv的认识 JNIEnv操作jobject JNI的异常处理 JNI的认识 JNI是Java ...
  • import java.util.ArrayList; import java.util.Random; /** * 抽奖器 */ public class ProductGame<T> { Random random = new Random();//生成随机下标获取奖品池奖品 private T product;...}
  • 深入理解Java虚拟机-走近Java

    万次阅读 多人点赞 2020-01-02 15:02:08
    阅读《深入理解Java虚拟机》受益匪浅,对Java虚拟机有初步的认识。这里写博客主要出于以下三个目的:一方面是记录,方便日后阅读;一方面是加深对内容的理解;一方面是分享给大家,希望对大家有帮助。 ...
  • 前面大家分享了 SecurityBuilder 以及它的一个重要实现 HttpSecurity,在 SecurityBuilder 的实现类里边,还有一个重要的分支,那就是 AuthenticationManagerBuilder,AuthenticationManagerBuilder 看名字就知道...
  • 深入理解Java虚拟机-高效并发

    万次阅读 2020-01-04 18:22:38
    文章目录Java内存模型与线程概述硬件的效率与一致性Java内存模型主内存与工作内存内存间交互操作对 volatile 型变量的特殊规则对 long double 型变量的特殊规则原子性、可见性有序性先行发生原则Java与线程线程...
  • Keras的安装(pycharm)和初步理解

    千次阅读 2020-10-23 09:56:02
    配置Keras后端 windows下,在个人文件夹(如果你没改windows默认设置的话是C:/Users/%你的用户名%).keras\keras.json 基于keras的模型训练中tensorflowtheano使用 如果采用keras搭建模型,需要配置~/.keras/keras...
  • 今天就让我们从形参实参的角度深入学习函数。 接下来让我们上一个简单的代码,是判断是否为闰年的代码,初步了解函数的参数。 #include<stdio.h> int isLeapYear(int year)//判断年份是否为闰年,是闰年...
  • 深入理解Java虚拟机-虚拟机执行子系统

    万次阅读 多人点赞 2020-01-04 17:00:27
    文章目录类文件结构概述无关性的基石Class类文件的结构魔数与 Class 文件的版本常量池访问标志类索引、父类索引与接口索引集合字段表集合方法表集合属性表集合字节码指令简介公有设计私有实现Class文件结构的发展...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,292
精华内容 20,916
热门标签
关键字:

初步理解和深入理解