Concurrency Goroutines 一个goroutines就是一个轻量(lightweight)的线程,语法很简单: go f(x,y,z) 这表示创建一个线程来执行f(x,y,z)函数。 **Note: **Goroutines run in the same address space, so access to shared me…
本文档主要是来自官网的tour of Go。 一个程序从main package开始执行 package main import( "fmt" ) func main() { fmt.println("hello world!") } imports 导入多个包以括号包起来,比如说 import( "math" "fmt" ) Exported n…
记录一下反射的基本用法。反射其实很简单,就是能够在让代码在运行时候使用其他类。本篇内容基本来自这里。 Class对象 如果需要对一个类使用反射,那么首先需要获得这个类的class对象。如一个MyClass的类: Class classObj = MyClass.class; 就可以获得这个类的class对象。另外一种来获得Class对象的方式是使用…
这篇文章主要内容来自这里。GNU Make是用于控制产生可执行文件以及像项目中其他非源文件的。 GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program's sour…
计算机中的浮点数 在计算机中对于数的表达,都是使用二进制的方式。对于浮点数也是,不同于整数的表示,浮点数的表示复杂不少。目前而言,大多数的电脑都是使用IEEE 754标准所定义的表示方法。本文的目的是,讲解IEEE 754的基本格式,并且来解释一些浮点数的问题。 定点法来表示二进制数 先不管定点法的意思是什么。先来回想一下十进制表示小数的方法,这个…
环境 ubuntu 20.04 64位系统 part2的内容是从./lab/obj/kernel.img中引导我们的系统JOS,本文很大一部分内容都是翻译Lab1 课程的原地址:MIT-6.828 预先需要的知识: 虽然mit这课提供了相关知识,但是我个人觉得,对保护模式有过实操以后,看相关的保护模式代码确实很容易懂很多。 汇编,要知道基本的语句是…
环境 ubuntu 20.04 64位 正文 这部分的目的是为了让我们了解x86汇编语言和PC引导的过程,逐渐熟悉QEMU和QEMU/GDB的调试。在本次lab中不需要写任何代码,但是需要lab中的各个问题。 Getting Started with x86 assembly 如果你已经熟悉x86汇编,那么就最好了。lab页面给的那个关于x86汇编…
过去很长一段时间都想自己写一个操作系统,走了不少弯路。花了很多时间在学习《30天自制操作系统》,学到后面发现作者讲述的有点绕了,代码也没有讲明白。到最后还是选择了MIT6.828,这门课的难度比较大,要求对x86保护模式下的变成要比较了解。慢慢跟下来,还是受益匪浅的。我没有做完所有的实现,我就做到了lab5。不知道何种原因,lab6代码无法运行,所…
下面是MapReduce的图例: 一个MapReduce的Map任务数量由输入文件大小/块的大小来决定。而Reduce的个数由用户来指定。 The number of partitions (R) and the partitioning function are specified by the user. MapReduce任务的执行流程: M…
对C语言的了解非常薄弱,想知道为什么在一个.c文件当中可以使用另外一个.c文件定以的函数,为了帮助问题的阐述,接下来用简单的代码复现一下我们的问题。 a.c文件: #include<stdio.h> void hello(){ printf("hello world!") } 然后在b.c文件当中调用hello()这…