随笔分类 -  Java

摘要:对JVM中分层模型、垃圾回收期、垃圾回收算法趁着周末小结一下。有不对的地方,还请指正和讨论~ 1.JVM内存模型 2.JVM垃圾回收期 3.JVM垃圾回收算法 如果您看了本篇博客,觉得对您有所收获,请点击右下角的 [推荐] 如果您想转载本博客,请注明出处 如果您对本文有意见或者建议,欢迎留言 感谢您 阅读全文
posted @ 2017-09-17 19:43 Scott007 阅读(135) 评论(0) 推荐(0) 编辑
摘要:0 概述 分布式框架中的Master-Slave类型,Slave节点负责工作的具体执行,Master负责任务的分发或者相关元数据的存储等。一般情况下,一个Master节点都会对应多个Slave节点,Master在分配任务时需要知道当前有哪些Slave节点是可以接受自己所发的命令的(Slave节点有可... 阅读全文
posted @ 2014-09-23 23:00 Scott007 阅读(1747) 评论(0) 推荐(2) 编辑
摘要:1 概述 为了增大并发性,Yarn采用事件驱动的并发模型,将各种处理逻辑抽象成事件和调度器,将事件的处理过程用状态机表示。什么是状态机? 如果一个对象,其构成为若干个状态,以及触发这些状态发生相互转移的事件,那么此对象称之为状态机。 处理请求作为某种事件发送到系统中,由一个中央调度器传递给对应的... 阅读全文
posted @ 2014-08-05 21:57 Scott007 阅读(9804) 评论(3) 推荐(5) 编辑
摘要:4.4 Reduce类4.4.1 Reduce介绍整完了Map,接下来就是Reduce了。YarnChild.main()—>ReduceTask.run()。ReduceTask.run方法开始和MapTask类似,包括initialize()初始化,根据情况看是否调用runJobCleanupT... 阅读全文
posted @ 2014-07-13 15:55 Scott007 阅读(1365) 评论(0) 推荐(2) 编辑
摘要:4.3 Map类 创建Map类和map函数,map函数是org.apache.hadoop.mapreduce.Mapper类中的定义的,当处理每一个键值对的时候,都要调用一次map方法,用户需要覆写此方法。此外还有setup方法和cleanup方法。map方法是当map任务开始运行的时候调用一次,... 阅读全文
posted @ 2014-07-12 16:36 Scott007 阅读(2397) 评论(1) 推荐(1) 编辑
摘要:1 概述该瞅瞅MapReduce的内部运行原理了,以前只知道个皮毛,再不搞搞,不然怎么死的都不晓得。下文会以2.4版本中的WordCount这个经典例子作为分析的切入点,一步步来看里面到底是个什么情况。2 为什么要使用MapReduceMap/Reduce,是一种模式,适合解决并行计算的问题,比如T... 阅读全文
posted @ 2014-07-10 22:29 Scott007 阅读(3032) 评论(3) 推荐(2) 编辑
摘要:1 HTTP HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。 虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的... 阅读全文
posted @ 2014-06-30 21:08 Scott007 阅读(88622) 评论(11) 推荐(4) 编辑
摘要:0 机器说明IPRole192.168.1.106NameNode、DataNode、NodeManager、ResourceManager192.168.1.107SecondaryNameNode、NodeManager、DataNode192.168.1.108NodeManager、Data... 阅读全文
posted @ 2014-03-20 23:59 Scott007 阅读(3693) 评论(0) 推荐(1) 编辑
摘要:1 概述 目前多数的NoSql数据库本质上都是键值对形式,Redis也不例外。作为缓存数据库的一种,和Memcached相比,有以下几种主要的优点:(1)速度上,Redis要比Memcached快,这是基于一些Benchmarks的测试结果得出的,而且在内存使用上,Redis突破了物理内存限制,可以... 阅读全文
posted @ 2014-02-24 22:11 Scott007 阅读(5159) 评论(5) 推荐(6) 编辑
摘要:ArrayList、LinkedList、HashMap是Java中常用到的几种集合类型,遍历它们是时常遇到的情况。当然还有一些变态的时候,那就是在遍历的过程中动态增加或者删除其中的元素。 下面的例子就是可以实现动态遍历ArrayList、LinkedList、HashMap。 1 impo... 阅读全文
posted @ 2014-02-21 23:00 Scott007 阅读(2322) 评论(2) 推荐(0) 编辑
摘要:1 环境说明 首次接触Spring,面对这么一个优秀的框架,先从环境搞起,再慢慢学。开发环境选择Spring Tool Suite,得专业点不是?Maven选2.2.1,JDK还是1.6,Tomcat采用7。下面一步步来…2 STS安装 Spring Tool Suite是免费的一款基于Eclip... 阅读全文
posted @ 2014-01-11 22:40 Scott007 阅读(7207) 评论(1) 推荐(0) 编辑
摘要:1 概述 观察者模式(Observer Patern),定义了对象间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。其目的就是为了对象间的解耦。 这个模式的角色有以下几种:(1)抽象主题(Subject)角色:它把所有对观察者对象的引用保存在一个集合中,每个主题都可以有多个观察者,抽象主题提供一个接口,可以增加和删除观察者对象;(2)具体主题(ConcreteSubject)角色:将相关状态存入具体观察者对象,当状态改变时,给所有注册过的观察者发出通知;(3)抽象观察者(Observer)角色:为所有的具体观察者定义一个接口,在得到主题的通知时更新自己;(4)具体.. 阅读全文
posted @ 2013-12-27 00:04 Scott007 阅读(417) 评论(0) 推荐(0) 编辑
摘要:1 概述 模板模式(Template Patern),是在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法中使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 模板就是一个方法,这个方法将算法定义成一组步骤,为了不被子类改变,这个方法通常被限制为final类型。另外还有一个钩子(hook)的概念,所谓的“钩子”就是默认不做事的方法,这个方法在抽象类中是不实现的或者为空,子类可以决定是否要覆盖它,自然,这个方法的调用是在“模板”方法中。 当子类必须提供“模板”中某个方法的实现时,这个方法就在父类中定义为抽象方法;如果这个方法是可选的,或者对于子类的实现不重要... 阅读全文
posted @ 2013-12-25 23:07 Scott007 阅读(967) 评论(0) 推荐(1) 编辑
摘要:1 概述 策略模式(Strategy Patern),是把针对同一件事情的不同的算法分别封装起来,并且相互之间可以替换。这种模式的使用需要以下三种角色:(1)环境角色:应用不同的策略来达到完成某件事情的目的;(2)抽象策略角色:通常由接口或者抽象类实现,所有的具体角色都继承此抽象;(3)具体策略角色:具体的算法实现;2 示例 相对来说,例子还是挺多的,比如淘宝搜索的时候,是按照卖出量排序还是价格排序还是好评度排序等等。 前面的几种模式都是拿手机做例子,那还是继续手机做例子吧。 现在的智能手机基本上都是大屏幕,看着花里胡哨的很爽。流行的手机操作系统都支持换屏幕主题的功能。不同的Theme有着.. 阅读全文
posted @ 2013-12-22 21:28 Scott007 阅读(420) 评论(0) 推荐(0) 编辑
摘要:1 概述 享元模式(Flyweight):享,就是共享;元,就是元数据。简单来说,这个模式就是将系统中的对象公用,不用创建很多对象造成JVM拥塞。类似于平常用到的数据库连接池。 把一个对象的状态分成两部分,变与不变。通过共享不变的部分,变化的状态通过参数传入,达到减少对象数量的目的。享元模式通常结合工厂模式一起实现,具体怎么做呢?最常见的例子就是Java中的字符串常量。下面来看个其他实例。2 示例 还是手机的例子,几乎每个手机都有个通讯录,上面记录了我们的家人、同学、朋友的联系方式。每条记录都有其变化的地方和相对不变的地方。例如,我们可以对通讯录进行分组,家人组、同学组等。一般情况下,这... 阅读全文
posted @ 2013-12-21 00:17 Scott007 阅读(1472) 评论(1) 推荐(0) 编辑
摘要:1 概述 组合模式(Composite),将对象组合成树形结构来表现“整体&部分”这一层次结构。这种模式能让客户以一致的方式处理个别对象以及对象组合。 组合内的所有对象都必须实现相同的接口,当组合结构复杂,遍历的成本太高时,就有必要实现组合节点的缓存。组合的优点是可以让客户端不再区分操作的是组合对象还是叶子对象,而是以一种统一的方式来操作。 组合模式的组成部分有以下三个:(1)抽象构件角色(Component):是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。这个接口可以用来管理所有的子对象。(2)树枝构件角色(Composite):定义有子部件的那些部件的行为。 阅读全文
posted @ 2013-12-12 23:26 Scott007 阅读(2167) 评论(1) 推荐(2) 编辑
摘要:1 概述 桥接模式(Bridge),是把抽象和具体的实现分离开,使得二者可以独立扩展,不会影响到对方。当需要不同的方式去改变接口和实现时,就能体现出桥接模式的功效。2 示例 直接这么说,显得有点不太好理解。Bridge就是桥,用于连接抽象和具体实现,过了桥,就该干嘛干嘛,两不相干。 依然以手机为例,手机浏览到好看的网页或者听到好听的歌曲、好看的视频等都想分享给自己的好友,可以分享到微信好友群中,也可以分享给QQ好友等。这个场景就适合桥接模式。 首先定义一个手机端信息分享的接口:1 package org.scott.bridge;2 /** 3 * @author Scott4 *... 阅读全文
posted @ 2013-12-10 22:08 Scott007 阅读(705) 评论(0) 推荐(1) 编辑
摘要:1 概述 外观模式提供了一个统一的接口,用来访问子系统中的一群接口。这样可以避免客户端和子系统之间的紧耦合。 这种模式需要将一系列的子系统组合到外观中,然后将具体的工作交给各个子系统去完成。如此一来,可以简化接口的调用。 其本质就是将系统与客户端交互的地方封装起来。2 示例 这个模式,总体来说,很简单,理解起来也不困难。 依然以手机为例,手机开机的时候,我们只需要按一下电源键,在电源键的触发事件中,包含了CPU的开启、系统加载、SIM卡信息加载等。如果把每一个模块的接口都暴露出来,让我们一个个去按,那岂不是太坑爹了。而现在我们只需要一个开机接口,就可以实现上述所有模块的通电、加载功能,... 阅读全文
posted @ 2013-12-09 21:05 Scott007 阅读(720) 评论(2) 推荐(2) 编辑
摘要:1 概述 代理模式(Proxy)就是为一个对象创建一个替身,用来控制对当前对象的访问。目的就是为了在不直接操作对象的前提下对对象进行访问。 根据代理类和被代理类的关系来区分的话,可以分为静态代理和动态代理。(1)静态代理:在运行之前,就确定好代理类、被代理类之间的关系。(2)动态代理:在运行时动态的创建一个代理类,实现一个或多个接口,将方法的调用转发到指定的类。 根据不同的功用性,可以分为远程代理、虚拟代理、保护代理、缓存代理、写入代理等。(1)远程代理:为一个位于不同的JVM堆中的对象提供一个本地的代理对象,Java有自带的RMI方式来实现;(2)虚拟代理:为创建开销大的对象提供代理,当对象 阅读全文
posted @ 2013-11-27 22:36 Scott007 阅读(3112) 评论(0) 推荐(2) 编辑
摘要:1 概述 适配器模式(Adapter),说白了就是为了挂羊头卖狗肉而专门设计的模式。也就是把一个类的接口变换成客户端所期待的另一种接口。 适配器模式通过定义一个新的接口(对要实现的功能加以抽象),和一个实现该接口的Adapter(适配器)类来透明地调用外部组件。这样替换外部组件时,最多只要修改几个Adapter类就可以了,其他源代码都不会受到影响。 还是以手机为例子,每一种机型都自带有从电器,有一天自带充电器坏了,而且市场没有这类型充电器可买了,怎么办?万能充电器就可以解决,这个万能充电器就是适配器。 适配器模式有两种形式,一种是类的适配,另一种自然就是对象的适配。1.1 类的适配 这... 阅读全文
posted @ 2013-11-23 23:03 Scott007 阅读(4314) 评论(0) 推荐(0) 编辑