Docker学习笔记
Docker是一个容器化软件,所谓容器化即操作系统级别的虚拟化(Operating-system-level virtualization)。比起硬件虚拟化:
- 容器更加轻量,它不需要运行独立操作系统,因而减少了磁盘(操作系统文件占用GB+空间)、…
Apache HTTP Server知识集锦
名词 | 说明 |
MPM |
Apache2引入的特性,即多处理模块(Multi-Processing Modules)。MPM是Apache用来处理网络请求的模块,其功能包括:绑定网络端口、接受请求、分发给子例程执行请求处理 引入MPM,可以实现针对平台、针对业务… |
Ubuntu下安装SNMP组件
安装必要的软件:
1 2 3 4 5 |
sudo apt-get update #Manager组件 sudo apt-get install snmp #包含标准化MIBs信息的组件,允许通过名字而不是OID访问绝大部分MIB树分支 sudo apt-get install snmp-mibs-downloader |
修改配置文件: sudo vim /etc/snmp/snmp.conf 注释掉: #mibs : ,以允许Manager可以导入额外的MIBs。可以在此文件中设置默认的身份验证信息:
这样,该Manager可以使用简短的命令来访问Agent:
修改配置文件: ,如下:
重新启动代理服务器:
在Manger上尝试执行一个get-request,确认代理服务器正常运作:
以bootstrap为模板,创建用户snmp:
修改密码为snmppswd:
现在可以尝试使用新用户了:
回到代理服务器,注释掉…
阅读全文snmp4j学习笔记
snmp4j是Java社区首选的SNMP协议的开源实现,支持JDK1.4+版本,该框架受C++库snmp++启发,以面向对象的方式进行设计。snmp4j同时支持Manager、Agent两种角色,支持同步、异步通信方式,以及多种验证方式和加密算法。snmp…
阅读全文基于Spring Test和Mockito进行单元测试
本文引入一个简单的银行业务场景,用来阐述如何集成Spring Test、Junit、Mockito,以简化单元测试工作。该场景主要的业务代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
/** * 人员 */ public class Person { private int id; private String name; private Account defaultAccount; } /** * 账户 */ public class Account { private int id; private int balance; private Person person; } /** * 人员服务接口 * */ public interface PersonService { /** * 查询人员用户 */ Person getPerson( int id ); /** * 得到人员默认账户 */ Account getDefaultAccount( Person p ); } /** * 账户服务接口 * */ public interface AccountService { /** * 查询人员默认账户余额 */ int queryBalanceOfDefaultAccount( int personId ); } |
假设你已经实现了服务AccountService:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
@Service ( "accountService" ) public class AccountServiceImpl implements AccountService { private Map<Integer, Object[]> accountDatabase; @Inject private PersonService personService; @PostConstruct public void init() { accountDatabase = new HashMap<Integer, Object[]>(); //字段:账号,余额 accountDatabase.put( 100, new Object[] { "6225100", 68861 } ); accountDatabase.put( 101, new Object[] { "6225101", 1851 } ); accountDatabase.put( 102, new Object[] { "6225102", 845 } ); accountDatabase.put( 103, new Object[] { "6225103", 16598 } ); } @Override public int queryBalanceOfDefaultAccount( int personId ) { Person person = personService.getPerson( personId ); Account defaultAccount = person.getDefaultAccount(); return (Integer) accountDatabase.get( defaultAccount.getId() )[1]; } } |
而你的搭档负责的PersonService还没有开发完毕,如何方便的进行单元测试呢?
你可能会觉得,我们不需要在单元测试中引入Spring。对于上面的例子的确可以这么说,它太简单了,AccountServiceImpl 依赖的PersonService完全可以通过setter手工注入。但是实际的开发场景要比这个例子复杂的多,待测试类可能和S…
阅读全文KVM和QEMU学习笔记
Hypervisor,即虚拟机监管程序(virtual machine monitor ,VMM)。它可以是电脑上的软件、固件或者硬件,用于建立和执行虚拟机。拥有Hypervisor后,你可以执行一个或者多个虚拟机。这些虚拟机称为客户机(guest mac…
阅读全文类UNIX系统下使用Dnsmasq
Dnsmasq是一个轻量级的DHCP服务器、DNS缓存服务器。它可以提供本地的DNS服务,把不能解析的请求转交给上级DNS处理。
Dnsmasq可以读取/etc/hosts文件中的条目,来作域名解析。
可以通过Homebrew安装:
1 |
brew install dnsmasq |
创建配置文件:
1 2 |
mkdir -pv $(brew --prefix)/etc/ touch $(brew --prefix)/etc/dnsmasq.conf |
修改网络配置中的DNS配置,将127.0.0.1放到DNS列表的最前面。
通常Ubuntu已经自带了此软件…
阅读全文Spring对JMS的支持
Spring 提供了JMS的集成,简化JMS的使用,提供的API封装类似于Spring的JDBC集成。
JMS的功能大体上分为两类——接收、发送消息。Spring提供了:
- JmsTemplate来完成消息的发送、同步接收
- 消息监听器容器(message li…