基于Stolon快速构建PostgreSQL集群
环境信息准备3台机器模拟PG HA架构,其中etcd和proxy为单节点,便于测试环境搭建
组件
ip
port
角色
etcd
192.168.5.220
2379
postgres0
192.168.0.200
5432
master
postgres1
192.168.0.220
5432
proxy
192.168.5.220
25432
初始化步骤1、初始化集群
1stolonctl --cluster-name stolon-cluster --store-backend=etcdv3 --store-endpoints= http://192.168.5.220:2379 init
2、启动一个sentinel
12345stolon-sentinel --cluster-name stolon-cluster --store-backend=etcdv3 --store-endpoints=http://192.168.5.220:2379>> sentinel id id=66613766>&g ...
如何减少代码里的if/else
1. 背景if/else是高级编程语言中最基础的功能,虽然 if/else 是必须的,但滥用 if/else,特别是各种大量的if/else嵌套,会对代码的可读性、可维护性造成很大伤害,对于阅读代码的人来说就是一场灾难。
本系列博客的目的不是消除if/else,而是如何“写好”if/else
2. 方法根据if/else的使用方式和场景,大概有如下解决方法
多态
表驱动
职责链模式
卫语句
Optional
调整判断逻辑,抽取方法,逻辑优化
本篇博客我介绍的是表驱动,后续博客会介绍其他案例首先来看下最简单的if…else if…场景,也是经常可以在代码中看到的案例
3. 案例有如下业务代码demo,根据type值,判断然后返回设备的名称
12345678910111213//逻辑表达模式固定的 if…elsepublic String getDeviceName(int type){ if (type == 1) { return "ONT"; } else if (type == 2) { ...
Autowired和Resource的区别
前言在进行属性注入时,@Autowired和@Resource这两个注解经常在项目中可以看到,所以探讨下这两个注解有什么区别
相同点接口有单一实现类时,针对接口的注入,两者可以互相替换,功能是一样的。
不同点1、@Autowired是Spring中的注解。@Resource是Java中的注解
2、@Resource可以指定byName、byType策略注入,默认是byName,如果根据name找不到,就会根据type注入。
@Autowired只能根据type注入,如果有多个type类型,可以配合@Qualifier注解来根据名称注入
代码展示-@Autowired@Autowired源码定义:
首先定义一个需要被注入的接口类型
1234567@Repositorypublic interface UserRepository { User getUserById(Long id); void saveUser(User user); List<User> getAllUsers(); ...