发表时间: 2019-12-16  |  分类: RocketMQ  |  标签: Java RocketMQ Docker

根据该文章搭建的最终成果为:RocketMQ集群内,有一个name server,6个broker节点,其中,每三个broker以master-slave的形式组成一个broker组,当master挂掉时,从broker组选举出一个broker节点成为master节点。

每个broker组至少需要3个broker节点,否则master挂掉后无法完成slave自动切换为master节点,因为剩下的1个broker节点无法获得集群内大多数节点的投票。(详见Raft算法)

阅读
发表时间: 2019-08-19  |  分类: Java  |  标签: Java 字符串拆分
public static void main(String[] args) {
    String src = "abc硕大的dws你好不abca奥凯电缆静安寺;%20流量卡接%20你2额垃圾袋离开2";

    CharsetEncoder coder = StandardCharsets.UTF_8.newEncoder();
    // 要求拆分后,每个字符串的字节数不大于10个字节(String.getBytes().length <= 10)
    ByteBuffer out = ByteBuffer.allocate(10);
    CharBuffer in = CharBuffer.wrap(src);
    // 按顺序存储拆分之后的每个字符串
    List<String> strList = new LinkedList<>();

    int startPos = 0;
    while(true) {
        CoderResult result = coder.encode(in, out, true);
        int endPos = src.length() - in.length();

        strList.add(src.substring(startPos, endPos));

        startPos = endPos;

        out.rewind();
        if (!result.isOverflow()) {
            break;
        }
    }

    // 最终strList中每一个字符串的字节数都不会大于10个字节,可以直接存储到数据库中 
    strList.stream()
           .map(String::getBytes)
          .map(b -> b.length)
          .forEach(System.out::println);
}
阅读
发表时间: 2019-02-26  |  分类: Java  |  标签: Java 翻译 Feign Spring Cloud

转载请注明出处: 翻译: Spring Cloud Feign使用文档

Why Feign and not X?

Feign使用诸如JerseyCXF之类的工具来实现ReSTSOAP服务的java客户端, 此外, Feign允许你在http库(如: Apache HC)之上编写自己的代码. 通过自定义解码器(decoders)和错误处理(error handing), Feign可以用最小的开销和最少的代码将你的代码关联到任何基于文本的http接口(http APIS),

How does Feign work?

Feign是通过将注解(annotations)转换成模板请求来实现它的功能的, Feign可以将请求参数直接应用到这些模板上. 尽管Feign只支持基于文本的接口, 但同样的它能显著地简化系统的方方面面, 如请求重放等, 此外, Feign也可以使你的单元测试更加简单.

阅读
发表时间: 2019-02-25  |  分类: Hystrix  |  标签: Java 翻译 Spring Cloud Hystrix

转载请注明出处: 翻译:Hystrix - How To Use

Hello World!

下面的代码展示了HystrixCommand版的Hello World:

public class CommandHelloWorld extends HystrixCommand<String> {

    private final String name;

    public CommandHelloWorld(String name) {
        super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"));
        this.name = name;
    }

    @Override
    protected String run() {
        // a real example would do work like a network call here
        return "Hello " + name + "!";
    }
}

查看源码

阅读
发表时间: 2016-10-25  |  分类: Java  |  标签: Java 面试 后端开发

转载请注明出处: 贴一贴我的后端开发面试题

本文是面试回寝室后凭记忆罗列出来的问题,大概90%的问题都在这里面了,有几个问题的实在是想不起来了= =,有些问题自我感觉回答的不好,所以我是查了资料后重新整理了再贴上答案的。如有错误或不适合的,欢迎大家评论点出,谢谢!

虽然面试的是Java实习生职位,但问题不局限于Java语言。

阅读
发表时间: 2016-10-19  |  分类: Java  |  标签: Java 日志 log4j slf4j

转载请注明出处: 封装SLF4J/Log4j,不再处处定义logger变量

懒得看实现过程的可以直接跳到最后看实现流程图和代码实现。Logback和log4j是内部实现相似,所以可以用类似的思路实现。

自从开始使用日志组件后, 每个类都是这样子的结构:

public class A {
    public static final Logger logger = LoggerFactory.getLogger(A.class);
}

这是一件相当烦人事,必须对他进行封装,使得我们能够通过这样的方法来调用:

public class A {
    public void methodA() {
        Logger.debug("Nice!");
    }
}
阅读
关闭

分类

Linux JavaScript Raft Java Git iptables 内网穿透 RocketMQ 算法 Go Hystrix

标签

Linux bond JavaScript Vue Raft 分布式 笔记 Java 字符串拆分 Git Socks5 iptables zerotier 内网穿透 网络 RocketMQ Docker 字符串 VPS VPN 算法 kmp Go json 日志 log4j slf4j 面试 后端开发 系统界面 翻译 Feign Spring Cloud Hystrix