多副本和分布式一致性
引文 对于一定规模的系统,都会对可拓展和高可用提出需求。针对一个包含应用层和存储层的典型系统来说,拓展也对应分成两个层次,应用层的拓展和存储层的拓展: 应用层的拓展主要是在系统设计上进行,目前选择的方案主要是构建无状态的应用系统,使得应用系统在整个业务逻辑中仅仅是一个处理过程,只要是相同的输入一定会有相同的输出和整个应用的上下文(时间、地点、人物)没有关系。部署上结合分布式部署和服...
引文 对于一定规模的系统,都会对可拓展和高可用提出需求。针对一个包含应用层和存储层的典型系统来说,拓展也对应分成两个层次,应用层的拓展和存储层的拓展: 应用层的拓展主要是在系统设计上进行,目前选择的方案主要是构建无状态的应用系统,使得应用系统在整个业务逻辑中仅仅是一个处理过程,只要是相同的输入一定会有相同的输出和整个应用的上下文(时间、地点、人物)没有关系。部署上结合分布式部署和服...
原文地址:https://www.ibm.com/developerworks/library/j-zerocopy/ 通过zero copy技术实现高效的数据传输 在很多网页应用中,服务端有大量的静态内容,比如文件图片等,这些文件保存在磁盘中。在通过网络访问的时候,从磁盘中读取,然后原样写入到响应Socket中。在现代的计算机体系中,整个行为只需要少量的CPU参与,但是还是有一...
Fork/Join计算框架 随着多核计算机成为主流,各种编程语言也在不停演进以最大化利用多核计算机的计算能力。Java最开始以Thread对象作为核心,构建最初的多线程模型。从JDK1.5加入的J.U.C,通过对线程和线程池的增强,极大便利了在Java平台下开发多线程应用,在J.U.C中,我们一般通过定义线程的执行器例如ExecutorService然后向执行器中提交线程任务,Execut...
问题的起因是DBA通知说在一套之前上线的系统中,对日期创建索引无法生效,导致大量的日期查询效率无法通过创建索引得到提升。通过分析得出如下的结论: 在JDBC中一般通过prepareStatement的各种setXxx()来传递参数,针对时间类型默认提供了三中类型,分别传递不同的时间格式:java.sql.Date用于传递日期类型,不带时分秒信息;java.sql.Time用于传递时间类型,...
关于ByteBuf的部分主要翻译的Netty官方提供的文档 在Java的网络编程体系中,时常会提到一点,堵塞式的IO,以Socket为例是面向Stream构建的,而非堵塞式的NIO,以SocketChannel为代表,则是基于Buffer作为基础。两者之间的区别在与,Stream类似连接在自来水管道上,只能顺序从Stream中读取或者写入数据,并且Stream只能是单向的,Inpu...
本文的主要内容来自温昱的著作一线架构师实践指南中的一些论点,加上自己的一些感受 架构的评判 一流的架构是每个程序设计人员为之奋斗而无法具体说出难以达到的境界,因为这本就是一个即主观又非常客观的论断。主观是指在特定的每一个人对待架构完善程度的判断标准不一,而标准的不同就会带来判断上的区别;而客观又是一流的软件或者架构之间又存在非常多的共性特点,我们可以给一流的架构做出这样的定义:简...
网上关于Mybatis源代码的解析的文章已经有很多,本章节不打算再赘述。而是从提问题的角度入手,回答Mybatis是怎么做的,以及为什么要这么做。 问题1:映射器怎么注入到Mybatis中 通过Configuration实例的addMapper方法注入Mapper类 public <T> void addMapper(Class<T> type) { ...
上一章花费了大量时间描述了Mybatis的产生背景,本章主要参考Mybatis的官方用户文档 简要表述Mybatis的使用方法,并使用一个例子贯穿进行说明和讲解。 如果想要彻底了解Mybatis的使用和配置方式,都可以通过官方用户文档来获取相关的配置资料,本章只适合作为导读 创建SqlSessionFactory 在JDBC中,操作数据库的接口为Connection,在Mybat...
Mybatis源自于ibatis,原本是Clinton Begin 创建的 JPetStore 项目中的 Dao 层,由两个部分组成 ibatis DAO 和 ibatis SQL Map,因为JPetStore的巨大影响,Ibatis也引起广泛的关注,到2004年 ibatis2 发布之后,Clinton将Ibatis捐赠给 Apache Software Foundation。2010年...
什么是ClassLoader Java类要在程序中使用,需要加载到虚拟机中;执行这一过程的类就是类加载器(ClassLoader)。ClassLoader一般通过类的全限定名称,从网络(比如Applet)、文件系统、内存(由代码生成的类)中加载类的二进制字节流,通过校验和链接等一系列动作之后,将类加载到虚拟机中。每一个在虚拟机中的类都可以找到对应的类加载器,通过Class.getClass...