CentOS 7 几点改变

从 CentOS 6 升级到 CentOS 7 有一些变化,如管理服务的 service ,服务启动脚本,以及软件防火墙等。

查看全文 →

Unix 环境高级编程-进程

程序的执行实例称为进程,Unix确保每个进程都有一个唯一的标识,即进程ID。

查看全文 →

分布式系统的意义

  • 升级单机处理能力的性价比越来越低
  • 单机处理能力存在瓶颈
  • 稳定性和可用性
查看全文 →

ElasticSearch 2.x 安装部署

ElasticSearch 5.x 要求 JDK 必须为 1.8+,并且目前大部分插件也不支持,截至到目前(2017-05-01),2.x 的版本更稳定一些。

查看全文 →

Maven QuickStart

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,即pom.xml配置文件,报告和文档的软件项目管理工具。

个人理解类似C下面的Makefile,用于编译打包jar,解决包依赖。

查看全文 →

Spring QuickStart

Bean

看完 Java 基础和语法,翻开《Spring 实战》,最开始就是 Java Bean 的介绍,Java Bean 是个什么玩意。

查看全文 →

Apache Commons 工具集

Lang

提供JDK java.lang 的扩展功能

ArrayUtils
StringUtils
StringEscapeUtils
RandomUtils
RandomStringUtils
NumberUtils

查看全文 →

Java, JDBC, MySQL 类型转换

一般情况下,MySQL的类型都能转换为 java.lang.String,并且任何数值类型也都能转换为 Java 的数值类型(但是有可能会丢失精度)

查看全文 →

Linux/Mac 下伪分布式 HBase 开发测试环境

准备工作

Mac 下不要使用brew 来安装Hadoop相关软件,因为各组件之间的版本可能不兼容:

查看全文 →

通过 logrotate 配置日志轮滚

logrotate 是一个日志管理程序,用来把旧的日志文件删除(备份),并创建新的日志文件,这个过程称为转储。这个程序目前是 CentOS 自带的。

logrotate 的执行由系统的 crond 服务实现,通过 crond 的日执行脚本 /etc/cron.daily/logrotate 来触发。

logrotata 使用起来非常舒服,能满足大多数情况的需求,我忽然想起 Nginx 竟然有一个网上流传很久的日志切割脚本,这真是多此一举。

查看全文 →

设计模式原则

单一职责原则

对于一个类而言,应该仅有一个引起它变化的原因。

如果一个类承担的职责过多,等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力,这种耦合会导致脆弱的设计。

开放-封闭原则

开放-封闭原则:软件实体(类、模块、函数)应该是可以扩展的,但是不可以修改。

无论模块多么封闭,都会存在一些无法对之封闭的变化,既然不可能完全封闭,设计人员对于模块应该对哪种变化封闭做出选择。等到变化发生时立即采集行动。

面对需求,对程序的改动应该是通过增加新代码进行,而不是更改现有的代码。

依赖倒转原则

抽象不应该依赖细节,细节应该依赖于抽象。

针对接口编程,不要对实现编程。

高层模块不应该依赖底层模块。

观察者模式-行为型

观察者模式:定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。

发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。

观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。

查看全文 →

工厂模式之抽象工厂模式-创建型

抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构,一个工厂等级结构可以负责多个不同产品等级结构中的产品对象的创建。多个产品等级结构构成了一个产品族。

查看全文 →

单例模式-创建型

单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。

  • 单例类拥有一个私有构造函数,确保用户无法通过 new 关键字直接实例化它。 除此之外,该模式中包含一个静态私有成员变量与公有的方法,该方法负责检验实例的存在性并实例化自己,然后存储在静态成员变量中,以确保只有一个实例被创建。
查看全文 →

工厂模式之工厂方法模式-创建型

在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。

具有完整的产品接口、产品实现、工厂接口、工厂实现。

查看全文 →