MENU

Java关于String、StringBuffer、StringBuilder区别

  • 都是final类,都不允许被继承
  • String类长度是不可变的,StringBuffer和StringBuilder类长度是可以改变的
  • StringBuffer类是线程安全的,StringBuilder不是线程安全的
  • String的不可变因素,因此它是线程安全的,而StringBuffer内部采用synchronized 进行同步,因此它也是线程安全的。

阅读全文

分布式事务之CAP/BASE理论

前言

对于互联网业务系统来说,随着高本发、高流量的趋势,单机系统已经无法满足我们的业务系统要求,因此出现有分布式系统。对于单机系统,ACID已经保证业务系统数据的严格一致性,对于分布式系统如何保证数据的严格一致性?如何构建一个兼顾可用性和一致性的分布式系统。

阅读全文

Zookeeper学习整理笔记之一

Zookeeper介绍

zookeeper是一个致力于提供一个高性能、高可用的,而且具有严格的顺序访问控制能力的分布式协调服务。
分布式应用程序基于zookeeper实现数据发布/订阅、负载均衡、命名服务、分布式协调与通知、集群管理、Dubbo注册中心、Master选举、分布式锁、分布式队列等。

Zookeeper分布式一致性保证

  • 顺序一致性:从一个客户端发起的事务请求,最终将会严格按照其发起顺序被应用到Zookeeper中。
  • 原子性:整个集群所有机器要么都成功应用了某一个事务,要么都没有应用,一定不会出现集群中部分机器应用了该事务,而另外一部分没有应用的情况。
  • 单一视图:无论客户端连接的是哪个Zookeeper服务器,其看到的服务端数据模型都是一致性的。
  • 可靠性:一旦服务端成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会被一直保留下来,除非有另外一个事务又对其进行了变更。
  • 实时性:Zookeeper仅仅保证在一定的时间段内,客户端最终一定能够从服务端上读到最新的数据状态。

阅读全文

static关键字初始化加载

前言

前几天在复习中遇到一个Java问题。静态变量的加载顺序问题。有点模棱两可,写个笔记记录一下吧。

重点

静态变量的存在父子继承的情况,初始化加载顺序为:

父类(静态变量、静态语句块)
子类(静态变量、静态语句块)
父类(实例变量,普通语句块)
父类(构造函数)
子类(实例变量、普通语句块)
子类(构造函数)