Brandon-Winterfell's Blog

闲寂古池旁,青蛙跳进水中央,扑通一声响


  • 首页

  • 分类

  • 归档

  • 标签
Brandon-Winterfell's Blog

单例模式

发表于 2017-03-26 | 分类于 设计模式 | | 阅读次数

实现的核心在于将类的构造方法私有化,使得外部程序不能通过构造函数来构造改类的对象,而该类通过 一个静态方法 返回一个静态对象。

为什么要使用单例模式

确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有一个。例如,创建一个对象需要消耗的资源过多,如要访问IO和数据库等资源。许多时候整个系统只需要拥有一个全局对象,这样有利于我们协调系统整体的行为。如在一个应用中,应该只有一个ImageLoader实例,这个ImageLoader中又含有线程池、缓存系统、网络请求等,很消耗资源,因此,没有理由让它构造多个实例。

阅读全文 »
Brandon-Winterfell's Blog

Java LinkedHashMap源码解析

发表于 2017-03-16 | 分类于 java | | 阅读次数

LinkedHashMap 概述

HashMap 是无序的,因为HashMap 在 put 的时候是根据key 的 hashcode进行 hash 然后放入对应的桶(发生冲突的话,再根据key的equals()进行判断是否已经有这个key)。所以在按照一定顺序 put 进 HashMap 中,然后遍历出 HashMap 的顺序跟 put 的顺序不同(除非在 put 的时候 key 已经按照 hashcode 排序号了,这种几率非常小)

JAVA 在 JDK1.4 以后提供了 LinkedHashMap 来帮助我们实现了有序的 HashMap!

阅读全文 »
Brandon-Winterfell's Blog

Java HashMap源码解析

发表于 2017-03-16 | 分类于 java | | 阅读次数

tips:HashMap是数组和链表(单向链表)的结合体。(插入链表的时候是头插法。)

HashMap 概述

HashMap 是基于哈希表的 Map 接口的非同步实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

此实现假定哈希函数将元素适当地分布在各桶(每个列表被称为桶bucket)之间,可为基本操作(get 和 put)提供稳定的性能。迭代 collection 视图所需的时间与 HashMap 实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。所以,如果迭代性能很重要,则不要将初始容量设置得太高或将加载因子设置得太低。

阅读全文 »
Brandon-Winterfell's Blog

Java集合框架综述

发表于 2017-03-16 | 分类于 java | | 阅读次数

关键字: 微型数据库、增删改查操作、时空复杂度

本文主要还对Java中的集合框架做一个大致描述,从一个高的角度俯视这个框架,了解这个框架的一些理念与约定,会大大帮助后面分析某个具体类。

与现代的数据结构类库的常见情况一样,Java集合类库也将 接口(interface) 与 实现(implementation) 分类

首先要明确,集合代表了一组对象(和数组一样,但数组长度不能变,而集合能)。Java中的集合框架定义了一套规范(接口),用来表示、操作集合,使具体操作与实现细节解耦。

下面这句话我觉得超赞。

其实说白了,可以把一个集合看成一个微型数据库,操作不外乎“增删改查”四种操作,我们在学习使用一个具体的集合类时,需要把这四个操作的 时空复杂度 弄清楚了,基本上就可以说掌握这个类了。


内容来自:Java集合框架综述 http://liujiacai.net/blog/2015/09/01/java-collection-overview

Brandon-Winterfell's Blog

接口Map

发表于 2017-03-16 | 分类于 java | | 阅读次数

tips: 成员方法 不外乎是“增删改查”,这也反映了我们编写程序时,一定是以“数据”为导向的。

映射表(map)数据结构的设计由来

集是一个集合,它可以快速地查找现有的元素。但是,要查看一个元素,需要有要查找元素的精确副本。这不是一种非常通用的查找方式。

通常,我们知道某些键的信息,并想要查找与之对应的元素。映射表(map)数据结构就是为此设计的。映射表用来存放键/值对。如果提供了键,就能够查找到值。例如,有一张关于员工信息的记录表,键为员工ID,值为Employee对象。

Java类库为映射表提供了两个通用的实现:HashMap 和 TreeMap。这两个类都实现了Map接口。

阅读全文 »
Brandon-Winterfell's Blog

一些链接

发表于 2017-02-23 | | 阅读次数
Markdown语法

掌握这几种 Markdown 语法你就够了
Markdown 语法说明 (简体中文版)
献给写作者的 Markdown 新手指南

萌鹿在线简历
Hexo中文文档

Brandon-Winterfell's Blog

静态-构造-代码块

发表于 2017-02-23 | 分类于 java | | 阅读次数

问题的来由

前几天跟着组件化那门课学习吧,老师在静态代码块里初始化对象,当时老师不管是静态变量还是成员变量都是用的m前缀,那我就喜欢成员变量用m前缀,静态变量用s前缀。我突然在想在这两个大括号之间(静态代码块)构造(new)对象,这个对象到底是静态的,还是普通的成员变量?(其实是局部变量)(在静态代码块里执行初始化操作的对象是静态变量(这个静态变量在代码块外面已经声明的了),因为静态变量是类级别,成员变量是对象级别的,此时对象都没创建(new)出来,或者说还没有执行到初始化成员变量的代码)。

阅读全文 »
Brandon-Winterfell's Blog

Java基础知识总结

发表于 2017-02-22 | 分类于 java | | 阅读次数

转载自:http://www.cnblogs.com/oubo/archive/2012/01/13/2394640.html

1.什么是类和对象?

EVERYTHING IS OBJECT(万物皆对象)所有的事物都有两个方面:

  • 有什么(属性):用来描述对象。
  • 能够做什么(方法):告诉外界对象有哪些功能。
  • 对象:对现实世界的实体的抽象。在计算机中,是指可标识的存储区域。
  • 类:具有共同属性和行为的对象的抽象。类是创建对象的模板。

2.为什么要使用面向对象?

首先,面向对象符号人类看待事物的一般规律。对象的方法的实现细节对其他对象是屏蔽的。我们通过类来看待对象,类是对象的抽象。

其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。对象之间的耦合性一定要低。这样才能使每个对象本身做成最好的。

阅读全文 »
Brandon-Winterfell's Blog

写Hexo博客

发表于 2017-02-17 | | 阅读次数

之前配置好Hexo博客,昨天决定写文章,才发现忘了用哪个终端了,卧槽。第一反应是node.js,好吧,我连要怎么开始都不知道,就是输入什么命令行。用cd命令进入到博客目录D:\HexoBlog\blog,就可以执行hexo的命令了。

看其他文章怎么开始写博客,照着写一下,除了最后一步,一切都还好,就是hexo d命令不能推到远程服务器。以前一切都正常的,而报错信息中还含有乱码,这下子傻眼了,卧槽。

阅读全文 »
Brandon-Winterfell's Blog

这是第一篇自己写的Hexo博客

发表于 2016-11-20 | | 阅读次数

我想说这个鬼东西真麻烦。卧槽。把github 克隆下来的 和hexo的搞混了。

反正不知道写什么好。那就来诗吧。

春江花月夜
春江潮水连海平,海上明月共潮生。
滟滟随波千万里,何处春江无月明!
江流宛转绕芳甸,月照花林皆似霰;

阅读全文 »
12
Brandon-Winterfell

Brandon-Winterfell

闲寂古池旁,青蛙跳进水中央,扑通一声响

11 日志
2 分类
6 标签
© 2017 Brandon-Winterfell
由 Hexo 强力驱动
主题 - NexT.Mist