Druid的Filter机制

作者:JerryXia | 发表于 , 阅读 (0)
之前的这篇文章介绍了Druid的连接池管理实现,但除了基本的连接管理,Druid还支持监控,代理等功能,便于开发人员分析数据库操作的一些性能指标等。其主要使用Filter机制来实现,本文将介绍下其中的Filter实现。
Filter接口定义从Filter接口中,可以看出,Filter主要重新定义了来自Connection,Statement,ResultSet等对象的接口,并且均通过对应的Proxy对象来替代,每个接口中还带有一个FilterChain参数,主要是为了支持Filter链,如:
public interface Filter extends Wrapper {/*** 初始化Filter*/void init(DataSourceProxy dataSource);/*** 销毁Filter*/void destroy();// Connection相关方法/*** 创建一个连接*/ConnectionProxy connection_connect(FilterChain chain, Properties info) throws SQLException;/**...阅读全文

使用数据源Druid

作者:JerryXia | 发表于 , 阅读 (0)
相信日常开发中,开发人员对数据源(DataSource)一词应该不陌生,这里的数据源着重指的是数据库。但通常开发人员面对数据源时,可能面临最多的是做一些配置优化相关的工作,或者当面临数据库连接不足,数据库连接泄露等问题时,才会开始着重关注数据源。但市面上,已经有各种数据源产品,如DBCP,C3P0,BoneCP等,到底哪一个是更优秀,值得信赖呢?本文将对这些数据源作一些简单测试,由于近期也是将业务线的数据源均换为Druid,所以会着重介绍下该数据源。
什么是数据源(DataSource)?在JDBC4.1中,这样描述DataSource接口:
Using a Datasource object increases application portability by making it possible for an application to use a logical name for a data source instead of having to supply information specific to a particular driver. The DataS...阅读全文

使用gulp进行web模块化开发

作者:JerryXia | 发表于 , 阅读 (0)
今天研究了下web前端构建工具: Gulp,相比之前接触过的Grunt,确实要简洁好用一些的,Gulp是基于node的, 所以得安装好node及其node包管理工具npm.
安装Gulpnpm install --global gulp在项目根目录安装一些必要插件npm install gulp-ruby-sass gulp-autoprefixer gulp-minify-css gulp-jshint gulp-concat gulp-uglify gulp-imagemin gulp-notify gulp-rename gulp-livereload gulp-cache del现在我们想达到这样一个目的Gulp需要一个gulpfile.js文件进行build配置, 声明一些build用到的插件var gulp = require('gulp'),sass = require('gulp-ruby-sass'),autoprefixer = require('gulp-autoprefixer'),minifycss = require('gulp-minify-css'),...阅读全文

JavaScript继承

作者:JerryXia | 发表于 , 阅读 (0)
一直对JS的继承概念有点模糊, 大体知道是怎么回事, 但也没有去深究过, 今天翻阅【JavaScript语言精髓】一书的第五章比较深刻进行认知, 特此记录一番。
JavaScript是一门基于原型的语言, 其对象是直接从其他对象继承的
伪类当我们构造一个函数对象时, 会默认生成一个constructor属性, 其值就是自身var Person = function(name){this.name = name;}Person.prototype.whoAmI = function(){console.info(this.name);}构造一个伪类, 继承Personvar Student = function(grade){this.grade = grade;}Student.prototype = new Person('haolin');但这些伪类操作会让人觉得怪异, 我们需要隐藏这些prototype, 这是书中使用的通用代码片段Function.prototype.method = function(name, func){this.prototype[name] = f...阅读全文

React前端组件化开发

作者:JerryXia | 发表于 , 阅读 (0)
我们将上面的页面分为几个比较细粒度的组件为:<LoginPage><Header><HeaderLink icon="icon icon-left-nav" /><HeaderTitle title="快捷登录" /></Header><Body><Input type="text" cls="mobile" placeholder="请输入手机号" /><SendCodeBtn mobile={this.state.mobile}/><Input type="text" cls="valid-code" placeholder="请输入您的验证码" /><Button type="button" cls="btn btn-block btn-warning" >登录</button></Body></LoginPage>可见,即使是简单的input元素,也用Input组件来封装,也是为了能够进行一些简单的定制化,如样式,事件等。
组件通信对于父子级的组件之间,通过属性传递,回调等就能较好的通信,如<Button type="button" cls="btn btn-block bt...阅读全文