7 Ezioooooo

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 1w+

我的春招总结

4月份折腾了一个月,本来打算一周更新一次的设计模式也没有更新,完全让给了春招的实习招聘。那就总结一下我的春招吧。 我的春招只能用一个词来形容:惨不忍睹。好几个公司的笔试都过不了,不过这不怪我啊,笔试出的题太抠细节了。唯一笔试过了的公司就是腾讯,估计是笔试的要求比较低。 3月28日腾讯内推截止,本来有同学在腾讯可以内推的,但是估计自己的简历筛选都没有过,连一个内推的面试都没有。这样的话只能安安静静

2017-04-30 21:29:56

设计模式(3):抽象工厂模式(Abstract Factory Pattern)

1.继续工厂方法模式在工厂方法模式中,介绍了一个工厂类创建一中产品,所有的工厂类都是基于接口实现的,所有的产品也是基于接口实现的。这样当增加新的产品的时候只需要实现新的工厂类和新的产品类即可,满足了开-闭原则。 但是随着产品线的复杂,很多产品并不是由一部分构成,而是由多种产品组件构成,每种产品构成一个产品族。比如,以Pizza为例,生产一个Pizza需要面饼和各种酱料(简化了,实际上需要的更多),

2017-03-22 10:32:52

设计模式(2):工厂方法模式(Factory Method Pattern)

1.接着简单工厂模式谈起在简单工厂模式(静态工厂模式)中,有一个负责创建对象的工厂类,在这个工厂类里负责所有对象的创建,为了根据用户的不同需求创建不同的对象,工厂类需要进行检查与判断:public class ListFactory { public static List createList(String which) { if(which.equals("ArrayLi

2017-03-20 22:26:20

设计模式

引言在学习的过程中,经常会看一些源码,不管是JDK的源码还是各种开源库的源码,在阅读源码的过程中体会作者的设计思想,了解实现的原理,同时还能学习到一些编程技巧以及帮助自己形成良好的编程风格。而且,像JDK和一些开源库的作者在设计的时候都使用了一些设计模式。因此,随着源码的逐渐增多,库的体系不断变大,在阅读的时候如果没能体会到作者设计时使用的设计模式的话,对于理解作者背后的设计思想,甚至对代码的理解都

2017-03-13 22:18:43

设计模式(1):简单工厂模式(Simple Factory Pattern)

1. 从一个简单的例子开始在众多的设计原则中,有一条原则是这么说的:要针对接口编程,不要针对实现编程。 针对接口编程的话,可以使用不同的实现类来创建这个对象。比如需要一个List:List<String> list=new ArrayList<>();而当我们需要使用LinkedList 的时候,我们需要做的只是将上面的new关键字后面的类型变为LinkedList 即可:List<String>

2017-03-13 22:07:50

探索 Java 隐藏的开销

随着 Android 引入 Java 8 的一些功能,请记住每一个标准库的 API 和语言特性都会带来一些相关的开销,这很重要。虽然设备越来越快而且内存越来越多,代码大小和性能优化之间仍然是有着紧密关联的。这篇 360AnDev 的演讲会探索一些 Java 功能的隐藏开销。我们会关注对库开发者和应用开发者都有关系的优化和能够衡量它们影响的工具。介绍 (0:00)在这篇演讲里面,

2016-10-31 22:23:20

Java NIO Channel

Java NIO 通道(Channel)Java NIO的Channel和流(Streams)很相似,但是也有一些区别:Channel是双向的,你可以从Channel中读取,也可以向Channel中写入。但是Streams是单向的(只读或只写);Channel可以异步进行读写操作; Channel只和缓冲区(Buffer)进行交互(读或写);就像上面所说的,我们可以从Channel中读取数据放

2016-09-14 20:33:44

Java NIO概述

Java NIO 概述Java NIO是从Java 1.4加进来的,是另一个IO包。Java NIO可以叫做New IO,也可以叫做Non-blocking IO,提供了和标准IO包不一样的处理文件的方式。Java NIO中有下面几个核心的概念:通道(Channel)缓冲区(Buffer)选择器(Selector)其实,Java NIO包中有很多的类和组件,只不过这几个组件是J

2016-09-14 20:22:15

10+ 最佳的 Node.js 教程和实例

如果你正在找Node.js的学习资料及指南,那么请继续(阅读),我们的教程将会覆盖即时聊天应用、API服务编写、投票问卷应用、人物投票APP、社交授权、 Node.js on Raspberry Pi等等。以下是Node.js入门的简单介绍,如果你对Node.js略有了解可以直接跳过此部分。那什么是Node.js呢?Node.js是迄今运用最多的服务端JavaScr

2016-08-31 22:32:19

虚拟机字节码执行引擎

在前面的几篇文章里,从Java虚拟机内存结构开始,经历了虚拟机垃圾收集机制、Class类文件结构到后来的虚拟机类加载机制,一步步的进入到了Java虚拟机即Java底层的世界。在有了前面的基础之后,接下来就应该进入Java虚拟机最重要的部分了——虚拟机字节码执行引擎,毕竟,这是Java程序得以在不同机器上运行的核心部分。Java是通过实现Java虚拟机来达到平台无关的。“虚拟机”的概念是相对于“

2016-06-09 19:13:50

Java虚拟机类加载机制

本文是《深入理解Java虚拟机》第七章的读书总结。Class文件中存储了类(或接口)中的元数据信息和编译后的字节码。这些信息需要存入Java虚拟机中才能被虚拟机利用和执行。而Class文件是需要Java虚拟机加载到虚拟机内存中的。这就涉及到几个问题,什么时候需要加在一个Class文件?虚拟机如何加载Class文件到虚拟机内存中?Class文件中的信息进入虚拟机内存中后会发生怎么样的变化?1

2016-06-05 21:44:58

Java字节码指令简介

本文是《深入理解Java虚拟机》中第六章的读书笔记。在Class文件中,Java方法里的方法体,也就是代表着一个Java源码程序中程序的部分存储在方法表集合的Code属性中。存储在Code属性中的是字节码,也就是编译后的程序。Java虚拟机的指令由两部分组成,首先是一个字节长度、代表某种含义的数字(即操作码),在操作码后面跟着零个或多个代表这个操作所需的参数(即操作数)。由于Java虚拟机采用

2016-06-04 12:02:30

Class类文件结构

在了解了Java内存的分布、HotSpot虚拟机对Java对象的管理以及Java垃圾收集机制之后,我们大致了解了Java自动内存管理的部分。接下来,就应该看看Java的类加载机制,看看虚拟机是如何将Java代码文件编译后的class文件加载到Java内存中的。Java是一门平台无关语言,只要有Java的运行环境,编写的代码可以运行在各种机器上,做到了“一次编码、处处运行”的目的。为了达到平台无

2016-05-29 16:31:34

Java垃圾收集机制

本文是《深入理解Java虚拟机》一书中第三章的读书总结。前面介绍了Java内存结构和HotSpot虚拟机在堆内存中管理对象的过程。不过,在Java程序中对象的创建是非常频繁的,而内存的大小又是有限的,为了内存的重复利用,就需要对内存中的对象进行垃圾收集。其实,这也是Java和C++的一个区别,在Java中可以进行自动的垃圾收集,而C和C++中需要程序员手动回收不再使用的对象。Java中的垃

2016-05-25 20:24:37

HotSpot虚拟机在Java堆中对对象的管理

在大概了解了Java虚拟机中内存的大致分布后,接下来就应该了解虚拟机是如何在内存中管理对象的,毕竟Java是一门面向对象的语言,在Java程序的运行过程中会不断有对象创建出来。为了方便,这里仅仅以HotSpot虚拟机和Java堆内存为例,介绍下HotSpot虚拟机在Java堆中对象分配、布局和访问的过程。1、对象的创建在Java语言中,我们可以使用new关键字创建一个对象(这里仅仅讨论普通

2016-05-24 19:57:39

Java内存区域分布

本文是《深入理解Java虚拟机》中第二章的读书总结。看了几个星期《深入理解Java虚拟机》,觉得有必要将看到的东西记录下来,以便日后看看。Java是平台无关的语言,也就是说Java代码可以运行在不同的机器上,要实现这种“一次编码,处处运行”的目标,Java使用虚拟机来消除平台多样性。Java相比于C和C++不同的一个地方在于,Java程序员不需要手动回收内存,而C/C++需要使用delet

2016-05-22 14:33:48

Java集合(六):专用集合和遗留类

本文是《Java核心技术 卷1》中第13章的读书总结。Java集合类库中除了前面几节中介绍的8个类之外,还有6个专用集与专用映射表,4个Java一开始就存在的类。这节将简单介绍一下这些集合类。1 弱散列映射表:WeakHashMapWeakHashMap类是为了解决一个有趣的问题。如果有一个值,对应的键已经不再使用了,将会出现什么情况呢?假定对某个键的最后一次引用已经消亡,不再有任

2016-04-17 12:13:10

Java集合(五):Set集

在上一讲中介绍了散列映射表HashMap和树映射表TreeMap,知道了HashMap的底层实现机制。这一讲将介绍Set接口和实现类:HashSet和TreeSet。由于HashSet的实现是基于HashMap的,TreeSet的实现是基于TreeMap的,所以这里不做过多底层的讨论,毕竟这部分已经在Java集合(四):Map映射中讨论过了。1 散列表与Set接口链表和数组可以按照人们的意

2016-04-16 14:03:16

Java集合(四):Map映射

集是一个集合,它可以快速的查找现有的元素。但是,要查看一个元素,需要有要查找元素的精确副本。这不是一个非常通用的查找方式。通常,我们知道某些键的信息,并想要查找与之对应的元素。映射表(map)就是为此设计的。映射表用来存储键值对。如果提供了键,就可以查找对应的值。例如,有一张关于员工信息的记录表,键为员工ID,值为Employee。Java类库为映射表提供了两个通用的实现:HashMap和Tr

2016-04-14 14:31:20

Java集合(三):Queue队列

前面介绍了列表,其中包括List接口和LinkedList链表和ArrayList数组列表。这节介绍一个也很常见的数据结构:队列。我们知道,队列是一个可以从尾部添加新元素、从头部删除元素的数据结构。对于有两个头的队列,即双端队列,可以让人们有效的在头部和尾部同时添加或删除元素。不过,队列不支持在中间添加元素。这节将介绍两个队列接口:Queue接口和双端队列接口Deque,还有实现类:Array

2016-04-13 17:03:38

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!