- 博客(20)
- 收藏
- 关注
转载 浅谈MapReduce编程模型
以Wordcount程序为例,简单描述MapReduce程序的编程模型。MapReduce程序组成MapReduce程序一般分成三个部分:一个程序主引导部分;一个Map程序部分;一个Reduce部分。主引导部分用来设置MapReduce(以下简称 “ MR” )程序的一些非业务逻辑属性,例如最终生成jar包时指定MR框架执行该程序的入口、MR程序的map和...
2019-08-25 23:19:00
270
转载 浅谈MapReduce的shuffle机制
Map Reduce是一个计算框架。Map函数发送到所有含有涉及数据的节点上运行,而Reduce之运行在多台主机上用作收集map结果用,reduce数量取决于reduce收集函数分了几个组,只在几个几个节点上运行。 shuffle机制:分组排序MapReduce执行过程map进程数量基于切片思想,一个切片对应一个map进程,切片大小相对块大小而言,块小切...
2019-08-25 23:17:00
179
转载 HDFS文件系统
HDFS存储方式: 将用户的文件分块,分散在多台主机上,同时每个块又有多个备份,多个备份不会出现在一台主机上,以确保即使一台主机出现问题,文件的访问依然正常。但是由于用户访问文件用的是一个路径指向一个文件,而具体的文件是被分块的,所以对于文件具体存储和路径之间存在映射关系,这个映射关系由namenode存储。客户通过虚拟的目录结构访问namenode,进而访问datanode得...
2019-08-25 23:16:00
123
转载 环境搭建-Linux、ZooKeeper、Hadoop
Linux版本:Ubuntu 16.04 Server LTS1. 安装Linux,初始用户名设置为hadoop,host依次是:Lead1,Lead2,Register1,Register2,Register3,Follower1,,Follower2,Follower3,Follower4,Follower5Lead1,Lead2用于安置Namenode和Resource...
2019-08-25 23:13:00
110
转载 垃圾回收器的原则
使用过C++的人应该知道,使用new运算符在堆上创建对象的代价是非常高的——不但创建很麻烦,管理也很麻烦。Java也是通过new运算符在堆上创建对象,但是很明显有着较高的速度。这就要归功于垃圾回收器的存在了。C++的堆分配和Java堆分配的不同之处 C++堆的管理是由程序员来负责的,这就意味着,对于一块分配出去的堆内存回收的时候可能已经碎片化了(有的回收,有的还在用),当再...
2019-08-25 23:06:00
132
转载 Java.NIO小例子
--Client.javapublic class Client { private static String ip = null; private static int port = 10000; public static void main(String[] args) throws Exception{ Docum...
2019-08-25 23:04:00
102
转载 Java.NET小例子
--Client.javapublic class Client { private static String ip = null; private static String websiteName = null; private static int port = 10000; private static int time = 5...
2019-08-25 23:03:00
79
转载 浅谈Java的本地方法实现JNI
最近做了一个数据结构课上迷宫求解的问题,要求在栈结构上最好能带一个图形界面,将找到的迷宫路径展示出来。原本打算连图形界面一起用C语言写,但是C语言的图形界面如果不调用操作系统的图形库真的很难看,所以选择了Java写图形界面,C语言写算法的这样一个混合编程的方案。这里不对Java图形界面的具体实现和C的算法做解释,只介绍Java和C的“连接部分”。使用本地方法的前提虽然现在J...
2019-08-25 23:02:00
291
转载 浅谈Java内存管理(二)
我们几乎无法从Java本身改变其回收机制的策列,但我们可以改变我们的编程方式和在编程中的注意事项。1.Java没有C++中对象析构的功能,但Java的垃圾回收机制是有原则的,它会回收没有变量引用的对象。这种对象没有变量引用它,也就再也不可能有任何方法找到这个“丢失的”对象了——GC回收的就是这种对象。所以当我们确定一个对象不再有任何价值和意义时,将这个对象对应的所有变量引用全部置为N...
2019-08-25 23:00:00
95
转载 浅谈Java内存管理(一)
提到Java的内存管理,我始终抱有一种又爱又恨的心理。作为一门面向对象的高级语言,Java的确为减轻程序员的负担做出了巨大的努力,它的垃圾回收机制帮助百万程序员从C系语言恼人的内存管理问题中解脱出来,成为自身的一大亮点;但同时,垃圾回收机制的不可强制执行的特点,又让了解过C/C++的人觉得自动垃圾回收反而是一种累赘,自己有管理内存的能力也不能施展,在一定程度上又限制了程序员的发挥。然...
2019-08-25 22:59:00
103
转载 浅谈Java的反射机制
Java的反射机制特别适合大型项目尤其是多功能项目的开发。因为它极大的减少了编译时静态加载类的时间并且减少了初期内存的消耗。为什么要有反射机制1. 在涉及某些应用程序时,我们往往需要动态升级以增加修改功能,而在静态编译体系中一切升级操作都需要对源代码进行更改,这就意味着每升一次级就要对整个源代码编译一次。小程序编译还好说,但如果是大型程序的话,编译一次要几个小时甚至几...
2019-08-25 22:58:00
76
转载 不考虑性能的内存管理模拟系统(假内存)的C语言实现
#include<stdio.h> /*头文件*/#define PROCESS_NAME_LEN 32 /*进程名长度*/#define MIN_SLICE 10 /*最小碎片的大小*/#define DEFAULT_MEM_SIZE 1024 /*内存大小*/#define DEFAULT...
2019-08-25 22:56:00
270
转载 磁盘性能和调度
磁盘是计算机系统中最重要的存储设备,其中含有绝大部分文件。对文件的操作直接涉及到磁盘的访问,磁盘IO的速度效率和可靠性将直接影响系统的性能。因此,好的磁盘调度算法、优越的冗余技术,都是提高磁盘系统性能的切入点。磁盘调度算法1.先来先服务:按照进程访问磁盘的先后顺序进行调度。 优点:公平、简单 缺点:效率低,平均寻道时间较长2.最短寻道时间优先:要求访问磁道与当...
2019-08-25 22:54:00
821
转载 中断机构和中断处理程序
中断在操作系统中有着重要地位,它是多道程序得以实现的基础,没有中断就没有多道程序,因此进程之间的切换是通过中断来完成的。此外,为了提高处理机的利用率和实现CPU与I/O设备的并行执行,也必须要有中断的支持。中断和陷入中断:是指CPU对I/O设备发来的中断信号的一种响应。CPU保护暂停当前进程,转而去处理引发中断的进程。执行完后,再返回到原进程,继续执行。I/O设备可以是字符设...
2019-08-25 22:52:00
1281
转载 内存缓冲区管理
在现代操作系统中,几乎所有的设备在涉及数据交换的地方都设置了缓冲区。缓冲区由专门的寄存器组成,但由于硬件成本较高,容量相应也比较小,一般用于速度要求非常高的地方(相对于内存,作为内存的缓冲)。而对于低速的I/O设备,内存就可以作为缓冲区。内存缓冲区管理主要提供组织、获得和释放等能力。引入缓冲的原因1.缓冲CPU与I/O设备间速度不匹配的矛盾。 数据的输入输出速率不一样。...
2019-08-25 22:51:00
1691
转载 IO系统的功能和层次模型
IO系统管理的主要对象是IO设备和相应的设备控制器。其主要作用是完成用户的IO请求,提高IO速率,以及提高设备的利用率,并为高层的进程提供方便的接口。I/O系统的基本功能一、方便用户使用I/O设备1.隐藏物理设备细节 I/O设备通常有很多种类型,每一种又有传输方向、数据粒度、传输速度等不同特性,将这些复杂的细节隐藏,仅向上层暴露简单的接口。2.与设备的无关性 ...
2019-08-25 22:48:00
5786
转载 对I/O设备的控制方式与假脱机SPOOLing
对I/O设备的控制方式1.使用轮询的可编程I/O形式 启动输入数据时,将状态寄存器置为1,然后不断检测该标志,直到标志寄存器变为0,证明输入数据结束。2.使用中断的可编程I/O形式 当进程请求I/O时,立刻中断CPU,保存现场后,交给相应的中断处理程序。有I/O就中断。而在I/O时,CPU可以和I/O设备并行执行。3.DMA直接存储器访问 四类寄存器:指令寄...
2019-08-25 22:44:00
806
转载 指针大小为什么与类型无关
指针的大小与硬件有关。 内存中有各种各样的数据,整型、浮点型、字符型等等。这些数据在内存中占据不同大小的储存空间,用sizeof运算符(注:sizeof是种运算符而不是函数,它在编译时发挥作用)进行运算时结果是不同的。然而不同类型的指针在相同系统环境下进行这种运算时结果却是相同的。 众所周知,C语言中的指针描述的是内存中的地址。而内存地址这种东西则是由CPU进行编址的。对...
2019-08-25 22:41:00
541
转载 链接器如何使用静态库来解析引用
创建静态链接库创建Unix下的静态库 :gcc -c a.c b.c(想要合成静态库的c文件)ar rcs name.a a.o b.o(生成的静态库归档文件包含a.o、b.o,声明为name.a)调用静态库:gcc -O2 -c main.cgcc -static -o p2 main.o ./name.a这里链接器会根据main函数中具体调...
2019-08-25 22:39:00
282
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人