`
文章列表
前言: MapReduce为了确保每个reducer的输入都按键排序。系统执行排序的过程-----将map的输出作为输入传给reducer 称为shuffle。学习shuffle是如何工作的有助于我们理解mapreduce工作机制。shuffle属于hadoop不断被优化和改进的代码库的一部分。从许多方面看,shuffle是mapreduce的“心脏”,是奇迹出现的地方。 Shuffle过程介绍: shuffle的正常意思是洗牌或弄乱,可能大家更熟悉的是Java API里的Collections.shuffle(List)方法,它会随机地打乱参数list里的元素顺序。如果你不知道Map ...
一、关于序列化:       序列化,可以存储“活的”( 只生存在内存里,关机断电就没有了,一般只能由本地的进程使用,而不能被发送到网络上的另外一台计算机)对象,可以将“活的”对象发送到远程计算机。      而把“活的”对象序列化,就是把“活的”对象转化成一串字节,而“反序列化”,就是从一串字节里解析出“活的”对象。于是,如果想把“活的”对象存储到文件,存储这串字节即可,如果想把“活的”对象发送到远程主机,发送这串字节即可,需要对象的时候,做一下反序列化,就能将对象“复活”了。      将对象序列化存储到文件,术语又叫“持久化”。将对象序列化发送到远程计算机,术语又叫“数据通信”。  ...
一、什么是Hadoop? 基于2003年google发表Map/Reduce 和 Google File System(GFS)论文研发。 用java实现的HDFS(Hadoop分布式文件系统)+Map/Reduce(并行编程计算处理框架)。 对大量数据进行分布式处理的软件框架。   二、Hadoop的优势
前言 本系列文章都是基于Hotspot/JDK源码,从源码角度来分析我们常见的JVM参数,Java概念以及对应的实现原理及玩法等,希望从根本上来理清Java知识点,我们会不定期地分享这个系列的文章,这些文章可能源于最近碰到的问题, ...
你真的了解ClassLoader吗? 这篇文章翻译自zeroturnaround.com的 Do You Really Get Classloaders?(http://zeroturnaround.com/rebellabs/rebel-labs-tutorial-do-you-really-get-classloaders/4/) ,融入和补充了笔者的一些实践、经验和样例。本文的例子比原文更 ...
一、多线程程序设计模式的评量标准   1、安全性-不损坏对象   n 对象的字段、状态出现并非预期的情况就是不安全对象 n 1个以上的线程使用而不危及安全性就是线程安全的类 n ArraList与Vector        JDK中就有很多类似这样的非线程安全及线程安全的类,必须针对不同的场景加以利用。在多线              程环境 下,使用线程安全的类可以保证程序的安全性,但是同时会带来一定的性能损耗,所以在非多            线程环境 下,并没有必要去使用线程安全的类。   2、生存性   n  
       官方介绍:Lambda expressions are a new and important feature included in Java SE 8. They provide a clear and concise way to represent one method interface using an expression. Lambda expressions also improve the Collection libraries making it easier to iterate through, filter, and ...
1、从FileSystemAppllicationContext分析Spring对IOC容器的初始化过程 其类继承体系如下: 通常会调用refresh() 方法,它是IOC容器才初始化的入口。首先会去获取一个beanFactory,实际上为DefaultListableBeanFactory。它持有beanDefinitionMap,里面存 ...

tomcat源码分析

1、运行环境 tomcat 版本:8.0.x 编译工具:ant 运行IDE:idea13.1   2、tomcat架构组成 如下图所示:        Server:  其实就是BackGround程序, 在Tomcat里面的Server的用处是启动和监听服务端事件(诸如重启、关闭等命令。           Service: 在tomcat里面,service是指一类问题的解决方案。  通常我们会默认使用tomcat提供的:Tomcat-Standalone 模式的service。 在这种方式下的service既给我们提供解析jsp和servlet的服务, 同时也提供给 ...
1、Array 与  ArrayList的转化     通常情况下,数组转list,我们会用这样的方式去转换。 List<String> list = Arrays.asList(arr);        最终会得到一个ArrayList,但是这不是一个java.util.ArrayList的类对象,而是java.util.Arrays.ArrayList内部类对象,而它只有get、set、contains方法。也就是说只可以读不能修改,并且大小固定。这样当你再想去修改这个list的时候就会悲剧了。。。         ArrayList如果是转成Integer[ ],那 ...
一、spring架构    Spring IOC :包含了最为基本的IOC容器备案factory的接口与实现,它是spring框架的核心   Spring AOP: 它是spring的另一个核心,是围绕着AOP的增强功能,集成了AspectJ作为AOP的一个特定实现,同时还在JVM动态代理/CGLIB的基础上,视线里声明式事务处理,就是通过AOP集成的。   Spring MVC:支持MVC模式的web应用开发。   Spring JDBC/Spring ORM:Spring对JDBC封装了一层,对关系数据库处理的API,同时支持集成ORM工具,如Hibernate、iBat ...
问题四、java中对象相等的判断——equals           在平常编写代码的过程中,我们经常会需要判断2个对象是否相等,下面就谈谈如何实现满足需求的对象相等方法。          1>  一般自己来实现equals方法可以按照以下几个步骤去实现   1、如果某个class的2个对象占据不同的内存空间,也可以逻辑上认为相等,那就得为这个class定义equals(); 2、检查“==”是否成立,这是最严格的相等判断; 3、比较class中的相关属性值是否相等,这里按照需要,逻辑上要求哪些字段相等; 4、如果该类的base class实现了equals方法,就 ...
1. 引言 当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时……都需要通过一个线程去取消另一个线程正在执行的任务。Java没有提供一种安全直接的方法来停止某个线程 ...
 1、实现线程的三种方式:   使用内核线程实现     内核线程(Kernel Thread, KLT)就是直接由操作系统内核支持的线程,这种线程由内核来完成线程切换,内核通过操作调度器对线程进行调度,并负责将线程的任务映射到各个处理器上。程序一般不会直接去使用内核线程,而是去使用内核线程的一种高级接口——轻量级进程(Light Weight Process,LWP),轻量级进程就是我们通常意义上所讲的线程,由于每个轻量级进程都由一个内核线程支持,因此只有先支持内核线程,才能有轻量级进程。这种轻量级进程与内核线程之间1:1的关系称为一对一的线程模型。轻量级进程要消耗一定的内核 ...
一、类加载器基本概念        类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,然后重新解析成JVM统一要求的格式,最终转换成java.lang.Class类的一个实例(会加载到perm区也就是方法区),每个这样的实例用来表示一个 Java 类。通过此实例的 newInstance()方法就可以创建出该类的一个对象。实际的情况可能更加复杂, ...
Global site tag (gtag.js) - Google Analytics