懒人的博客

从未坚持过,希望这次可以

排序:
默认
按更新时间
按访问量

Tomcat-JDBC源码解析及优化

数据库连接池连接池是常见的一种资源复用的技术。利用连接池,可以将那些创建开销较大的资源汇聚到一个池子里缓存起来,需要使用的时候只需要从连接池里取出来就可以了。中间省去了频繁的创建和销毁的过程。数据库连接池就是其中的典型应用。我们可以简单的思考一下,假设让我们来实现一个数据库连接池,会有哪些问题需要...

2017-11-01 13:41:46

阅读数:988

评论数:0

由Cobar引起的Mysql锁问题

使用Cobar将近一年了,但对其原理仍旧不是很了解,更没阅读过源码,说起来也是惭愧。趁着最近线上的一次故障,总算说服自己花时间来看看Cobar的真面目。我们公司对它的印象很差,因为经常出现各种不稳定。比如Cobar在执行一条复杂查询的过程中,同时执行一条普通的selectById都有可能爆出Uns...

2016-12-11 22:23:34

阅读数:1154

评论数:0

queryTimeout对Cobar不生效的原因

queryTimeout对Cobar不生效的原因

2016-09-19 16:00:15

阅读数:923

评论数:0

从Consumer分析Dubbo调用链

继上一篇不成熟的源码分析经历之后,为了搞清楚Consumer是如何与Provider通信的,于是又一言不合翻看起了源码。好,进入正题,依旧从RegistryDirectory这个核心类入手:

2016-07-12 13:54:42

阅读数:11124

评论数:4

初识Postman

在开发APP接口的过程中,一般接口写完之后,后端开发都会模拟调用一下请求。在用Postman之前,对于一般的get请求我基本都会用浏览器来简单模拟。而对于post请求,我一般习惯写代码来调用。可以用Java来模拟,当然用Python会更简洁。我们来看看这种方法存在哪些弊端?

2016-06-30 23:34:55

阅读数:10267

评论数:3

由Dubbo路由引发的一言不合就看源码

由于业务上的需要,很早之前就想自己扩展Dubbo的路由功能。But,之前试了一下,发现好像并没有找到正确的打开方式,而且由于时间不是很充足,加上自己心浮气躁浅尝辄止,于是乎就放弃了这块的研究。

2016-06-30 14:37:15

阅读数:14086

评论数:5

Dubbo的正确打开方式之基本接口定义及异常处理

为什么要写这篇文章呢?因为公司在使用Dubbo时并没有对Dubbo的用法做深入的了解,而是属于拿来就用,随着自己的想法来使用。这样很不好,就像天龙八部的鸠摩智练习错误的六脉神剑一样,方式不对,就容易走火入魔。下面是我近来在空闲时间对Dubbo的一些学习,也纠正了之前的一些错误用法,在此做一下记录:...

2015-11-30 13:26:50

阅读数:6846

评论数:8

C3P0连接池初始化过程分析之二

上一篇我们讲到了C3P0PooledConnectionPool,并且最后说到C3P0PooledConnectionPool中的很多关于连接的操作都委托给了BasicResourcePool来处理,那么下面就隆重请出今天的主角——BasicResourcePool及其帮手——BasicResou...

2015-11-27 15:25:16

阅读数:2629

评论数:0

记一次使用Cobar踩到的坑

起因起因是因为日志里经常报出锁等待超时的错误,并且这个是环环相扣的,一个锁等待会直接引发另外的锁等待,所以危害非常严重,影响非常深远。寻找原因发现是C3P0报出了DEADLOCK,如下图所示: 分析可以看出来ScatteredAcquireTask,也就是获取连接的任务,全部卡在那不动了。那显然...

2015-11-16 07:40:20

阅读数:3721

评论数:2

C3P0连接池初始化过程分析之一

先把上一节的时序图拿来,强化一下印象,然后顺着图往下捋: Created with Raphaël 2.1.0C3P0连接池初始化过程UserUserComboPooledDataSourceComboPooledDataSourceC3P0PooledConnectionPoolManag...

2015-10-25 01:45:29

阅读数:4926

评论数:0

C3P0整体类结构简单分析2

上一篇结构分析我们看了C3P0大概的类图结构,下面我们来看看C3P0连接池初始化的时序图:Created with Raphaël 2.1.0C3P0连接池初始化过程UserUserComboPooledDataSourceComboPooledDataSourceC3P0PooledConnec...

2015-10-24 23:28:06

阅读数:2828

评论数:0

C3P0整体类结构简单分析

直接进入主题吧: 这张图只是C3P0的部分结构类图,不急,先对总体上有一个了解。首先我们需要了解,C3P0是“懒初始化”的。也就是说它并不会自己初始化,而是会等到第一个连接请求进来之后它才会初始化。而那个触发点就是:ComboPooledDataSource.getConnection();了解...

2015-10-18 22:47:09

阅读数:4822

评论数:0

MyEclipse10破解replaceJar一步报错解决方案

MyEclipse10破解replaceJar一步报错解决方案

2015-10-06 10:26:10

阅读数:3831

评论数:0

Spring中实现多数据源事务管理

Spring中实现多数据源事务管理前言由于项目中引入了多个数据源,并且需要对多个数据源进行写操作,那么多数据源的事务管理自然成了不可避免的问题,这也让我对@Transactional注解有了进一步的理解(但实际上也并不是非常深入)然而这是一个演进的过程,刚开始项目中并没有使用@Transactio...

2015-07-25 20:26:43

阅读数:20864

评论数:12

如何在Spring中取得Request对象

这里首先需要说明一点的是,下面讲的获取Request对象都是在非Controller层中进行的操作。因为对于Controller来说,若要用到Request对象的话,直接在方法签名中声明一个HttpServletRequest对象就可以了。另外作为一个良好的Controller-Service-D...

2015-06-05 16:08:37

阅读数:3851

评论数:1

MyBatis Generator常用配置说明

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Gener...

2015-05-20 23:00:52

阅读数:3813

评论数:0

用一个切面来统一返回前端的JSON格式

新项目使用Spring MVC + MyBatis架构来做,这套框架自己应该比较得心应手,这里来写一下这两天做的一些设计。首先是静态资源的处理,关于这个之前有写文章单独讲过,这里不再重复写,不太清楚的童鞋可以移步查看接着需要统一JSON的返回格式,和前端工程师约定,对于字符串类型和日期类型都返回字...

2015-05-19 22:52:49

阅读数:4216

评论数:0

Spring官方文档——日志

2.3.2 Logging 日志对于Spring来说非常重要(废话,日志对哪个系统不重要?),因为 a)它是唯一强制的外部依赖,b)每个人都希望在使用某个工具时可以看到一些提示性的输出,c)Spring继承了很多别的工具,它们也都有自己的日志依赖。应用开发者的一个目标通常是:对于整个应用来说(包...

2015-05-11 01:44:18

阅读数:2981

评论数:2

How Tomcat Works读书笔记2

我们回顾一下,第一章实现的Web服务器类图大致如下: 其中HttpServer中的await()方法会使用一个ServerSocket来监听8080端口,用来接收客户端的请求。当接收到用户请求后会创建一个Socket对象,通过与Socket关联的InputStream来创建并填充一个Reques...

2015-04-17 00:29:21

阅读数:1289

评论数:0

探讨在项目中如何处理错误信息

一个项目中肯定需要处理各种各样的错误。而对于这些错误,一方面需要程序反应出这些错误并可以让程序员快速地 定位到,另一方面,在发生某些错误时需要给用户适当的错误提示。比如某个请求的方法是public User getUserInfo(String userId)此时请求参数userId为null,...

2015-04-16 22:48:47

阅读数:1109

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭