芥为之舟

多副本和分布式一致性

引文 对于一定规模的系统,都会对可拓展和高可用提出需求。针对一个包含应用层和存储层的典型系统来说,拓展也对应分成两个层次,应用层的拓展和存储层的拓展: 应用层的拓展主要是在系统设计上进行,目前选择的方案主要是构建无状态的应用系统,使得应用系统在整个业务逻辑中仅仅是一个处理过程,只要是相同的输入一定会有相同的输出和整个应用的上下文(时间、地点、人物)没有关系。部署上结合分布式部署和服...

Timestamp导致Oracle索引失效

问题的起因是DBA通知说在一套之前上线的系统中,对日期创建索引无法生效,导致大量的日期查询效率无法通过创建索引得到提升。通过分析得出如下的结论: 在JDBC中一般通过prepareStatement的各种setXxx()来传递参数,针对时间类型默认提供了三中类型,分别传递不同的时间格式:java.sql.Date用于传递日期类型,不带时分秒信息;java.sql.Time用于传递时间类型,...

架构设计

本文的主要内容来自温昱的著作一线架构师实践指南中的一些论点,加上自己的一些感受 架构的评判 一流的架构是每个程序设计人员为之奋斗而无法具体说出难以达到的境界,因为这本就是一个即主观又非常客观的论断。主观是指在特定的每一个人对待架构完善程度的判断标准不一,而标准的不同就会带来判断上的区别;而客观又是一流的软件或者架构之间又存在非常多的共性特点,我们可以给一流的架构做出这样的定义:简...

Java ClassLoader 运行机制

什么是ClassLoader Java类要在程序中使用,需要加载到虚拟机中;执行这一过程的类就是类加载器(ClassLoader)。ClassLoader一般通过类的全限定名称,从网络(比如Applet)、文件系统、内存(由代码生成的类)中加载类的二进制字节流,通过校验和链接等一系列动作之后,将类加载到虚拟机中。每一个在虚拟机中的类都可以找到对应的类加载器,通过Class.getClass...