分类 Java 下的文章

public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {
    @SuppressWarnings("unchecked")
    T[] copy = ((Object)newType == (Object)Object[].class)
        ? (T[]) new Object[newLength]
        : (T[]) Array.newInstance(newType.getComponentType(), newLength);
    System.arraycopy(original, 0, copy, 0,
                     Math.min(original.length, newLength));
    return copy;
}

可以看到,最终调用的是System.arraycopy()方法,关于这个方法使用,可查看System.arraycopy详解

Read more...

Published on by


Published on by


在使用JAX-RS,Spring Boot或任何其他技术的RESTful Web服务中,必须使用机器可读且人性化的自定义业务错误代号。

假设您正在编写订单处理系统,客户可能没有资格使用某种付款方式下订单,您想通过Web前端或HTTP API调用的结果向用户反馈这种问题。可以通过查看http规范,并使用代码405:“不允许使用方法”来解决。

听起来完全符合您的需求。它可以在您的测试中工作得很好,并且可以投入生产正常运行一段时间。但是随后,对负载均衡器进行例行更新时会破坏系统。很快,在开发人员和运维人员之间进行了相互指责,最终爆发了一场全面的责任大战。看起来好像是由ops运维人员进行更新引起的问题,但他们声称负载平衡器中没有错误,原因是由于旧版本的安全性问题,必须对其进行更新。

Read more...

Published on by


HTTP幂等性

一、什么是幂等性?什么是幂等操作?

幂等:是一个数学概念,表示N次变换和1次变换的结果相同。

幂等操作:其特点是任意多次执行所产生的影响均与一次执行的影响相同(不会改变资源状态,对数据没有副作用)。

幂等性:一系列操作都是幂等操作。

幂等接口:幂等接口认为,外部调用者会存在多次调用的场景,为了防止重试对数据状态的改变,需要将接口的设计为幂等的

HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用。说白了就是,同一个请求,发送一次和发送N次效果是一样的!幂等性是分布式系统设计中十分重要的概念,而HTTP的分布式本质也决定了它在HTTP中具有重要地位。下面将以HTTP中的幂等性做例子加以介绍。

Read more...

Published on by


分布式事务是什么

先看看百度百科的解释,分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单来说就是

一个大的操作由两个或者更多的小的操作共同完成。而这些小的操作又分布在不同的网络主机上。这些操作,要么全部成功执行,要么全部不执行。

PS:拿转帐来说。张三和李四在不同的城市,存储他们账户信息的服务器也在不同的网络主机上。张三有30元钱,李四有30元钱。张三给李四转账5元就是一个事务。完成这个事务,需要两个操作。首先得从张三账户上扣5元,然后再给李四账户上加5元。事务执行完毕后,必须是两个操作都执行成功,要么都失败。

所以本质来说,分布式事务就是为了保证不同数据库的数据一致性

Read more...

Published on by