throwsnew

  • 首页

  • 标签

  • 专题

  • 归档

zookeeper,kafka集群安装

发表于 2017-07-26 | 更新于 2018-11-22

系统版本 CentOS 6.6
java version 1.7
zookeeper版本 3.4.10
kafka版本 0.11.0.1

安装zookeeper

1.下载

1
2
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
tar -xvf zookeeper-3.4.10.tar.gz
阅读全文 »

如何设计一个连接池:commons-pool2源码分析

发表于 2017-06-12 | 更新于 2019-05-04 | 分类于 开源框架

前言

大家对连接池的概念应该都很熟悉了,apache commons-pool是apache基金会的一个开源对象池组件,我们常用的数据库连接池dpcp和redis的java客户端jedis都使用commons-pool来管理连接。现在我们通过阅读commons-pool的部分代码来看一看他们在编写连接池组件时采用了什么样的设计思路和技术。

准备工作

首先我们思考一下,连接池除应该具备哪些功能?

  1. 连接池要能够管理不同类型的对象,同时作为一个服务组件不需要关心每种连接的创建细节。
  2. 连接池中的连接当长时间空闲时可能会被服务端主动关闭,或者受网络影响断开,连接池要能够定时检查它的连接是否可用。
  3. 支持并发操作,每个线程各种持有连接互不影响。

带着这三个问题,下面我们一起看一下commons-pool的代码,
它主要提供这个几种类型的对象池:

阅读全文 »

动手编写一个IOC容器

发表于 2016-09-28 | 更新于 2018-11-22

什么是IOC

所谓的IOC(Inversion of control)控制反转,实际是引入一个管理资源的第三方来统一管理分配资源,来代替各个资源持有者,使用者相互依赖的情况。

以打牌为例,之前玩家需要自己摸牌,现在改成由发牌人为所有玩家发牌,这个过程就叫做“控制反转”,发牌人就是IOC容器,发牌人给玩家发牌的过程就被称为“依赖注入(Dependency Injection)”。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//不使用IOC Player自己负责实例化Card
public Class PlayerA{
private Card myCard=new Card();
...
}
public Class PlayerB{
private Card myCard=new Card();
...
}


//实例化在IOC容器(Dealer)中进行
public Class Dealer{
private Card card=new Card();
...
}
//Player感知不到Dealer存在
public Class Player{
@Inject
private Card myCard;
}

在实际的j2ee项目中,使用依赖注入有这样几个好处:

阅读全文 »

JAVA基础————两分钟看懂注解Annotation

发表于 2016-01-26 | 更新于 2019-05-04

什么是注解

注解是一种描述程序的元数据,我们可以把他当做一种特殊的注释 

官方文档 : Annotations, a form of metadata, provide data about a program that is not part of the program itself. 

  • 注解可以为编译器提供信息,如@Override,@SuppressWarnings
  • 可以代替xml等文件,为程序保存所需的配置
  • 可以在程序运行时根据注解执行一些操作,如Spring中的@Autowired
阅读全文 »

Sendmail的一些坑

发表于 2015-12-26 | 更新于 2018-11-22

简介

Sendmail是一个linux邮件服务系统,可以使用它来搭建邮件服务器。

关于邮件的几个名词:

MTA(Mail Transfer Agent) 邮件传送代理,运行在邮件服务器的程序,负责接收发送邮件

MUA(Mail User Agent) 用户端代理,提供查看编辑提交邮件的功能(如foxmail)

MDA(Mail Delivery Agent)主要的功能就是将MTA接收的信件依照信件的流向(送到哪里)将该信件放置到本机账户下的邮件文件中(收件箱),或者再经由MTA将信件送到下个MTA。如果信件的流向是到本机,这个邮件代理的功能就不只是将由MTA传来的邮件放置到每个用户的收件箱,它还可以具有邮件过滤(filtering)与其他相关功能^foot。

阅读全文 »

Shell in Action(一)文本编辑-修改hosts

发表于 2015-12-01 | 更新于 2019-05-04

 把自己工作环境换成linux之后总会遇到各种无语的问题,比如我在web开发时会经常要切换测试环境或者本地环境的hosts,但是在用firefox的hosts插件时发现每次修改都会卡死,最后忍无可忍打算写一个切换hosts环境的脚本,有问题欢迎指正~

##问题分析
 我们都知道hosts文件就长这样,#是注释符、ip和域名用空格分开
下面是测试文件testhosts,用DEV和TEST区分不同环境:

1
2
3
4
5
6
7
#DEV
74.125.207.84 accounts.a.com
74.125.207.83 accounts.b.com
#TEST
64.233.168.106 www.c.com
64.233.168.107 www.d.com
#END

解决步骤

  1.读取用户要切换的环境
  2.读取hosts文件,在指定的行前添加注释
  3.维护一个值 保存hosts所处环境 提示用户当前hosts环境

阅读全文 »

123
Xianfeng Song

Xianfeng Song

a blog learn share practice

26 日志
7 分类
29 标签
GitHub
京ICP备19018367号 © 2021 Xianfeng Song
Powered By 云开发