Java 调试技术 JPDA 架构解读

2021-08-06
阅读 6 分钟
5.5k
JPDA 的全称是 Java Platform Debugger Architecture,它是 Java 官方针对 Java 代码调试所设计的一个机制。在 Oracle 官网上有专门的页面介绍。它属于多层架构,包括:JVMTI 接口规范、JDWP 通信规范、JDI API 层。

JDBC 4.2 Specifications 中文翻译 -- 第十二章 分布式事务

2021-06-15
阅读 6 分钟
2k
到目前为止,对于事务的讨论基本上都聚焦在本地事务上,本地事务只会涉及到一个单一的数据源。本章开始介绍分布式事务,分布式事务会在单个事务内涉及多个数据源。以下内容主要包括:

阿里分布式事务中间件 Seata 用法与原理

2019-10-11
阅读 49 分钟
3.8k
seata 官方给出了一系列 demo 样例,不过我在用的过程中发现总有这个那个的问题,所以自己维护了一份基于 dubbo 的 demo 在 github 上,适配的 seata 版本是 0.8.0。案例的设计直接参考官方 quick start给出的案例:

JDBC 4.2 Specifications 中文翻译 -- 第十一章 连接池

2018-11-24
阅读 9 分钟
2.2k
在基本的 DataSource 实现中,客户端的 Connection 对象与物理数据库连接有着1:1的关系。当 Connection 被关闭以后,物理连接也会被关闭。因此,连接的频繁打开、初始化以及关闭,会在一个客户端会话中上演多次,带来了过重的性能消耗。而连接池就能解决这个问题,连接池维护了一系列物理数据库连接的缓存,可以被多个客...

简易 RPC 框架

2018-11-10
阅读 13 分钟
4.3k
RPC 全称 Remote Procedure Call ,简单地来说,它能让使用者像调用本地方法一样,调用远程的接口,而不需要关注底层的具体细节。

Java 中的 Monitor 机制

2018-09-16
阅读 4 分钟
15.2k
管程,英文是 Monitor,也常被翻译为“监视器”,monitor 不管是翻译为“管程”还是“监视器”,都是比较晦涩的,通过翻译后的中文,并无法对 monitor 达到一个直观的描述。

浅析操作系统同步原语

2018-09-16
阅读 6 分钟
8.1k
日常开发中,我们经常会碰到并发编程,我们使用的大多数编程语言,基本上都为我们提供了并发编程的 API,例如 Java 中的 Thread,Golang 中的 Goroutine。

Java 线程的实现方式

2018-09-16
阅读 3 分钟
3.5k
在传统的操作系统中,最核心的概念是“进程”,进程是对正在运行的程序的一个抽象。进程的存在让“并行”成为了可能,在一个操作系统中,允许运行着多个进程,这些进程“看起来”是同时在运行的。如果我们的计算机同时运行着 web 浏览器、电子邮件客户端、即时通讯软件例如QQ微信等多个进程,我们感觉这些进程都是同时在运行的...

线程安全实现与 CLH 队列

2018-09-16
阅读 6 分钟
2.6k
在 Java 中,我们经常使用 synchronized 关键字来做到互斥同步以解决多线程并发访问共享数据的问题。synchronzied 关键字在编译后,会在 synchronized 所包含的同步代码块前后分别加入 monitorenter 和 monitorexit 这两个字节码指令。synchronized 关键字需要指定一个对象来进行加锁和解锁。例如:

分布式事务概览

2018-09-16
阅读 7 分钟
2.2k
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系数据库中,一个事务由一组SQL语句组成。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

JDBC 4.2 Specifications 中文翻译 -- 第十章 事务

2017-09-14
阅读 4 分钟
2.2k
事务用来提供数据集成性、正确的应用语义,以及并发访问时数据的一致性视图。所有符合 JDBC 规范的驱动都必须支持事务,JDBC 的事务管理 API 参照 SQL:2003 标准并且包含了以下的概念:

JDBC 4.2 Specifications 中文翻译 -- 第九章 连接

2017-09-07
阅读 6 分钟
2.8k
一个 Connection 对象,表示了与某个数据源的一条连接,数据源的种类可以是关系型数据库,文件系统等等之类,只要有对应的 JDBC 驱动,都可以称之为数据源。应用程序使用 JDBC API 来维护多条连接,这些连接可能访问的是多个数据源,也可能访问的只是一个数据源。从 JDBC 驱动的角度来看,一个 Connection 对象就意味着...

JDBC 4.2 Specifications 中文翻译 -- 第八章 异常

2017-08-11
阅读 4 分钟
2.4k
当访问一个数据源时发生错误或者警告,JDBC 用 SQLException 这个类及其子类来表示并提供相关的异常信息。 8.1 SQLException SQLException 由一下几部分组成: 描述错误的文本信息。可以通过 SQLException.getMessage() 来获取。 一个 SQLState 对象。可以通过 SQLException.getSQLStateType() 来获取。 错误码,是某种...

JDBC 4.2 Specifications 中文翻译 -- 第七章 数据库元数据

2017-08-11
阅读 3 分钟
2.6k
JDBC 驱动需要实现 DatabaseMetaData 这个接口,以便向驱动的使用者提供一些关于底层数据源的信息。这个接口主要被应用服务器以及一些工具型代码使用,以决定如何与一个数据源交互,应用程序有时候也会使用这个接口里的方法去获得数据源的信息,但这种用法并不是典型的用法。

netty4.x ByteBuf 基本机制及其骨架实现

2017-07-07
阅读 15 分钟
6.4k
netty 是一个 NIO 框架,在 JDK API 已提供相对直接的 NIO Library 的情况下,几乎很少的软件系统会直接用 NIO 进行编程,也很少有开发者会直接使用 NIO 技术开发网络相关的程序。因为 native nio library 已饱受诟病,API 难用,容易出错,存在一些声称解决但还没解决的 bug(bug id = 6403933,JDK 1.7 声称解决了该 B...

Java Trouble Shooting

2017-04-24
阅读 15 分钟
2.5k
线程栈是某个时间点,JVM所有线程的活动状态的一个汇总;通过线程栈,可以查看某个时间点,各个线程正在做什么,通常使用线程栈来定位软件运行时的各种问题,例如 CPU 使用率特别高,或者是响应很慢,性能大幅度下滑。线程栈包含了多个线程的活动信息,一个线程的活动信息通常看起来如下所示:

logback 配置与原理

2017-02-10
阅读 31 分钟
49.5k
原文链接:《logback 配置与原理》http://www.ytbean.com/posts/logback-intro/概览简单地说,Logback 是一个 Java 领域的日志框架。它被认为是 Log4J 的继承人。Logback 主要由三个模块组成:logback-corelogback-classiclogback-accesslogback-core 是其它模块的基础设施,其它模块基于它构建,显然,logback-core 提...

剖析 Druid SQL 解析器

2017-01-14
阅读 8 分钟
12.7k
Druid 是一个 JDBC 组件库,包括数据库连接池、SQL Parser 等组件,DruidDataSource 是最好的数据库连接池。

JDBC 4.2 Specifications 中文翻译 -- 第六章 遵守规范

2017-01-14
阅读 5 分钟
3.6k
JDBC API 的实现者必须支持 Entry Level SQL92 标准,以及 Drop Table 命令。对 Entry Level SQL92 标准的支持是实现 JDBC API 的最小要求,对于 SQL99 和 SQL2003 特性的实现,必须遵照 SQL99 和 SQL2003 的规范。

JDBC 4.2 Specifications 中文翻译 -- 第五章 类与接口

2017-01-14
阅读 3 分钟
2.5k
JDBC API 的核心部分都藏在了 java.sql 这个包里,所有的枚举类,普通类以及接口,都在下方列了出来,其中,枚举和普通类是粗体,接口是正常字体。

JDBC 4.2 Specifications 中文翻译 -- 第四章 JDBC API 概览

2017-01-02
阅读 4 分钟
3.4k
JDBC API 给 Java 程序提供了一种访问一个或者多个数据源的途径,在大多数情况下,数据源是关系型数据库,使用 SQL 语言来访问。但是,JDBC Driver 也可以实现为能够访问其它类型的数据源,比如说文件系统或面向对象的系统。 JDBC API 最主要的动机就是提供一种标准的 API ,让应用程序访问多种多样的数据源。

JDBC 4.2 Specifications 中文翻译 -- 第三章 新特性

2017-01-02
阅读 3 分钟
3.1k
JDBC API 4.2 规范在以下几个方面有所改动 3.1 增加对 REF CURSOR 的支持 有些数据库支持 REF CURSOR 数据类型,在调用存储过程后返回该类型的结果集。 3.2 支持大数量的更新 JDBC 当前的方法里返回一个更新数量时,返回的是一个 int,在某些场景下这会导致问题,因为数据集还在不停地增长。 3.3 增加 java.sql.DriverAc...

JDBC 4.2 Specifications 中文翻译 -- 第二章 目标

2017-01-02
阅读 2 分钟
2.3k
JDBC API 是一种成熟的技术,1997 年, 首次提出了 JDBC 规范,初始的版本中, JDBC API 仅提供一套针对数据库的调用级别接口。

JDBC 4.2 Specifications 中文翻译 -- 第一章 简介

2017-01-02
阅读 1 分钟
2.5k
JDBC API 为 Java 语言提供了一种访问关系型数据库的方法。有了 JDBC API,应用程序便可以通过它来执行 SQL 语句、获取执行结果,以及对底层的数据库进行写入。JDBC API 也可以用来和多个数据源交互,这些数据源以分布式的形式部署。

Netty4.x Internal Logger 机制

2016-06-25
阅读 7 分钟
11.7k
Netty不像大多数框架,默认支持某一种日志实现。相反,Netty本身实现了一套日志机制,但这套日志机制并不会真正去打日志。相反,Netty自身的日志机制更像一个日志包装层。

ZooKeeper 安装部署与配置

2016-06-03
阅读 5 分钟
3.1k
zookeeper使用Java编写,依赖的JDK版本为1.6+,因此zookeeper的运行需要Java环境的支持。可以在以下网站下载到zookeeper的安装包apache镜像下载到的安装包为:zookeeper-3.4.8.tar.gz

MySQL Replication 配置与原理

2016-03-14
阅读 12 分钟
2.9k
原文链接:《MySQL Replication 配置与原理》http://www.ytbean.com/posts/mysql-replication/总体架构内部架构连接管理MySQL服务端采用线程池维护客户端连接SQL解析分析查询语句,生成解析树,并将解析结果放入缓存中优化器优化包括选择合适的索引,数据的读取方式,分析语句执行的开销以及统计信息,优化器可以和存储...

Java 实现配置加载机制

2016-01-21
阅读 8 分钟
5.6k
现如今几乎大多数Java应用,例如我们耳熟能详的tomcat, struts2, netty...等等数都数不过来的软件,要满足通用性,都会提供配置文件供使用者定制功能。

Java 实现生命周期管理机制

2016-01-13
阅读 11 分钟
9.5k
最近一直在研究某个国产开源的MySQL数据库中间件,拉下其最新版的代码到eclipse后,启动起来,然后做各种测试和代码追踪;用完想要关闭它时,拉出它的STOP类想要运行时,发现这个类里赫然只写以下几行代码,于是我感觉瞬间受到了很多伤害。

Java IO 中的流与设计模式

2016-01-06
阅读 4 分钟
20.8k
原文链接:《Java IO 中的流与设计模式》http://www.ytbean.com/posts/java-io-stream-and-design-pattern/流概述Java中,流是一种有序的字节序列,可以有任意的长度。从应用流向目的地称为输出流,从目的地流向应用称为输入流。Java的流族谱Java的java.io包中囊括了整个流的家族,输出流和输入流的谱系如下所示:InputS...