win10-x64系统下编译OpenJDK 欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
java内存模型和多线程 单个处理器的频率越来越难以提升,因此人们转而面向多处理器,这么多年来致力于提高程序的运行效率,然而面向多核处理器的并发编程却不是那么的轻松,java在语言级别提供的多线程并发能力为我们编写并发的程序提供了不少便利。但是本文并不打算讲述如何编写多线程并发程序,而是尝试从另一个角度理解一下java并发和多线程的基础,理解其中的内容能够帮助我们更好的使用java的并发库。本文所涉及的有些内容可能和我
pipeline机制 最近在看netty的源码,准备将一些理解和总结写出来,netty的源码写的很漂亮理解起来也不是那么容易,很值得我们去学习和借鉴。我们知道在设计模式里面提到过一种责任链的模式,据我看一些源码的了解(不管是公司的中间件还是一些开源的项目),责任链的应用非常广泛,包括现在在公司做的东西。其中netty很好的扩展了责任链模式来实现netty的骨架,我们这里称它为pipeline模式。如果将数据比作是水
java异步编程 很多时候我们都希望能够最大的利用资源,比如在进行IO操作的时候尽可能的避免同步阻塞的等待,因为这会浪费CPU的资源。如果在有可读的数据的时候能够通知程序执行读操作甚至由操作系统内核帮助我们完成数据的拷贝,这再好不过了。从NIO到CompletableFuture、Lambda、Fork/Join,java一直在努力让程序尽可能变的异步甚至拥有更高的并行度,这一点一些函数式语言做的比较好,因此jav
oracle事务和锁 oracle中的语句级一致性可以保证一个事务只能看到查询开始之前已经提交的事务更改的数据,未提交的事务和查询开始之后提交的数据不会被查询到。做下面的一个实验来验证一下数据准备如下:----------create table-----------------create table test (id varchar2(128),name varchar2(128));-------
mybatis入门 mybatis作为一种ORM框架,实现了数据库中表和普通java pojo的映射,使得我们从繁重和重复的jdbc中解脱出来。举个例子:假如我们有下面一张表很简单,表名称是t_user,字段如图所示。我们知道写sql语句可以将表里的数据查询出来,如果使用java将数据查询出来,需要用到mysql的jdbc驱动,然后针对jdbc去编写查询的逻辑。大概的过程如下//第一步:加载M
简单实现一个rpc框架 与其说框架不如讲是个小demo,废话不多说直接上代码package com.tang.rpc;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.lang.reflect.InvocationHandler;import j
自定义spirng schema spring已经为我们提供了很丰富的xml元素,但是有时候我们需要自己扩展spring schema来定制标签,spring已经为我们提供了扩展的api,使用起来非常方便。本片文章来自于spring官网的教程。如果要定义自己的schema,通常有如下几步:1、自定义xml schema,在这里是编写自己的xsd文件,xsd文件可以理解为描述xml文件的元文件,定义了一个xml文件中可以有哪
认识kafka kafka是一个分布式的消息队列由scala编写,不同于传统的一些消息队列,kafka的设计理念与众不同。1、kafka的特点。快速单台kafka的broker实例能够支撑几千台机器每秒几百兆字节的读写,如果组成集群性能会更强进,从很多人的测试情况来看kafka的读写性能表现不输于当前流行的消息队,甚至领先很多。。扩展性弹性透明的扩展,不需要停机,kafka的数据是分区的,可以
zookeeper实现分布式的思路 Hadoop生态系统为开源届提供很多优秀软件,zookeeper便是其中一员。前段时间项目中用到了zookeeper,主要是用作服务的注册和发现使用方式类似阿里的dubbo。实际上zookeeper的功能不仅仅只有这些内容,它提供了一系列非常方便使用的功能,后面会提到。这篇文章仅仅是我个人的一点儿理解,如有错误烦请指正,以免给别人误导。1、zookeeper是什么zookeeper的名
How Tomcat Works 6 了解tomcat的人可能知道tomcat是由一个个的组件组成的,有些组件可以包含子组件,比如容器中可能包含loader、manager等组件。不了解tomcat结构的可以看下本系列的第三节。tomcat用catalina类来表示整个tomcat,在Catalina中负责初始化和启动这些组件。我们不需要去依次处理每个组件的启动,tomcat中父组件负责启动和停止它下面所有的子组件,因此我们只需要启动