- 博客(70)
- 资源 (7)
- 问答 (2)
- 收藏
- 关注
原创 maven项目搭建dubbo的消费者和生产者
生产者: pom.xml需要依赖的:properties> spring.version>3.2.4.RELEASEspring.version>properties>dependencies> dependency> groupId>com.alibabagroupId> artifactId>dubboartifac
2017-08-04 22:24:52 2952
转载 mybatis拦截器的注解说明
@Intercepts( { @Signature(type = Executor.class,method = "query", args = {MappedStatement.class, Object.class, RowBounds.class,ResultHandler.class ) })type:表示拦截的类,这里是Executor的实现类method:表示拦截
2017-08-24 11:00:47 6376
转载 【MyBatis源码分析】insert方法、update方法、delete方法处理流程(下篇)
Configuration的newStatementHandler分析SimpleExecutor的doUpdate方法上文有分析过: 1 public int doUpdate(MappedStatement ms, Object parameter) throws SQLException { 2 Statement stmt = null; 3 try {
2017-08-24 10:53:12 412
转载 MyBatis7:MyBatis插件及示例----打印每条SQL语句及其执行时间
Plugins摘一段来自MyBatis官方文档的文字。MyBatis允许你在某一点拦截已映射语句执行的调用。默认情况下,MyBatis允许使用插件来拦截方法调用Executor(update、query、flushStatements、commint、rollback、getTransaction、close、isClosed)ParameterHandler(getParamet
2017-08-24 10:50:45 302
转载 【MyBatis源码分析】select源码分析及小结
示例代码之前的文章说过,对于MyBatis来说insert、update、delete是一组的,因为对于MyBatis来说它们都是update;select是一组的,因为对于MyBatis来说它就是select。本文研究一下select的实现流程,示例代码为: 1 public void testSelectOne() { 2 System.out.println(mai
2017-08-24 10:49:04 314
转载 【MyBatis源码分析】插件实现原理
MyBatis插件原理----从解析开始本文分析一下MyBatis的插件实现原理,在此之前,如果对MyBatis插件不是很熟悉的朋友,可参看此文MyBatis7:MyBatis插件及示例----打印每条SQL语句及其执行时间,本文我以一个例子说明了MyBatis插件是什么以及如何实现。由于MyBatis的插件已经深入到了MyBatis底层代码,因此要更好地使用插件,必须对插件实现原理及My
2017-08-24 10:47:19 314
转载 mybatis的分页插件pageHelper
好多天没写博客了,因为最近在实习,大部分时间在熟悉实习相关的东西,也没有怎么学习新的东西,这周末学习了MyBatis的一个分页插件PageHelper,虽然没有那么的强大(我在最后会说明它的缺点),但还是挺不错的。这篇博文主要来总结下如何使用PageHelper。 我们知道,在MySQL中,分页的sql是使用limit来做,如果我们自己写sql,那分页肯定是没有任何问题的。但是一旦mode
2017-08-24 10:09:34 446
转载 MyBatis Mapper 接口如何通过JDK动态代理来包装SqlSession 源码分析
我们以往使用ibatis或者mybatis 都是以这种方式调用XML当中定义的CRUD标签来执行SQL 比如这样xml version="1.0" encoding="UTF-8" ?>DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-map
2017-08-24 09:47:00 300
转载 Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring
Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到SpringMybatis在与Spring集成的时候可以配置MapperFactoryBean来生成Mapper接口的代理. 例如bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"
2017-08-24 09:45:16 309
转载 Mybatis SqlSessionTemplate 源码解析
Mybatis SqlSessionTemplate 源码解析在使用Mybatis与Spring集成的时候我们用到了SqlSessionTemplate 这个类。 bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> constructor-arg index=
2017-08-24 09:43:05 297
转载 Mybatis Interceptor 拦截器原理 源码分析
Mybatis Interceptor 拦截器原理 源码分析Mybatis采用责任链模式,通过动态代理组织多个拦截器(插件),通过这些拦截器可以改变Mybatis的默认行为(诸如SQL重写之类的),由于插件会深入到Mybatis的核心,因此在编写自己的插件前最好了解下它的原理,以便写出安全高效的插件。代理链的生成Mybatis支持对Executor、StatementHan
2017-08-24 09:41:53 297
转载 Mybatis中ObjectFactory自定义实现
关于在MyBatis中的ObjectFactory有什么用,在官方文档中有这样的描述(大多数网上的博客都是直接引用这一描述):MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。 如果想覆盖对象工厂的默认行为,则可以通过创建
2017-08-23 21:14:51 1618
转载 使用Xpath递归输出所有数据
public class TestMain { public static void main(String[] args) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder =
2017-08-23 07:17:03 1545
转载 XPath路径表达式
XPath是万维网联盟(W3C)的官方推荐。它定义了一个语言在XML文件中查找信息。它被用于遍历XML文档的元素和属性。 XPath提供各种类型,可用于从XML文档查询相关的信息表现形式。什么是XPath?结构定义 - XPath定义像元素,属性,文本,命名空间,处理指令,注释和文档节点的XML文档部分路径表达式 - XPath提供了强大的路径表达式选择的节点或在XML文档
2017-08-23 07:14:13 4338
转载 使用Xpath读取xml文件
使用XPath的步骤以下是使用XPath解析器在解析文档时使用的步骤。导入XML相关的软件包。创建DocumentBuilder从文件或数据流创建一个文档创建XPath对象和XPath的路径表达式编译XPath表达式使用XPath.compile() ,并由XPath.evaluate()评估计算获得一个节点列表遍历节点列表。检查属性
2017-08-23 07:12:49 877
转载 mybatis中自定义ObjectFactory
关于在MyBatis中的ObjectFactory有什么用,在官方文档中有这样的描述(大多数网上的博客都是直接引用这一描述):MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。 如果想覆盖对象工厂的默认行为,则可以通过创建
2017-08-23 06:42:05 424
转载 Mybatis SqlSessionTemplate 源码解析
Mybatis SqlSessionTemplate 源码解析在使用Mybatis与Spring集成的时候我们用到了SqlSessionTemplate 这个类。 bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> constructor-arg index=
2017-08-22 15:10:59 248
转载 tomcat使用https
一. 创建tomcat证书 这里使用JDK自带的keytool工具来生成证书: 1. 在jdk的安装目录\bin\keytool.exe下打开keytool.exe 2. 在命令行中输入以下命令:keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "g:\
2017-08-22 14:36:22 255
转载 mybaits中一级和二级缓存的使用
MyBatis缓存我们知道,频繁的数据库操作是非常耗费性能的(主要是因为对于DB而言,数据是持久化在磁盘中的,因此查询操作需要通过IO,IO操作速度相比内存操作速度慢了好几个量级),尤其是对于一些相同的查询语句,完全可以把查询结果存储起来,下次查询同样的内容的时候直接从内存中获取数据即可,这样在某些场景下可以大大提升查询效率。MyBatis的缓存分为两种:一级缓存,一级缓存
2017-08-22 11:34:48 474
转载 Mybatis源码解析-MapperRegistry注册mapper接口
知识储备SqlsessionFactory-mybatis持久层操作数据的根本,具体的解析是通过SqlSessionFactoryBean生成的,具体的形成可见>>>Spring mybatis源码篇章-SqlSessionFactoryBeanMapperInterface-mybatis的java接口类,用于service/controller层的调用,具体的解析是通过Mapper
2017-08-22 11:32:24 910
转载 MyBatis源码分析:如何解析配置文件
MyBatis可以使用xml或者注解的方式进行配置,不管是哪种方式,最终会将获取到的配置参数设置到Configuration类中,例如,SqlSessionFactoryBuilder类中就是通过解析XML来创建Configuration。public SqlSessionFactory build(InputStream inputStream, String environment,
2017-08-22 11:19:33 314
转载 mybatis中加载mapper文件
这一章我们来看看mybatis是怎么读取mapper的xml配置文件并解析其中的sql语句。 我们还记得是这样配置sqlSessionFactory的:[java] view plain copy"sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
2017-08-22 11:16:03 5167
原创 采用dom4j解析所有的元素并打印和保存到内存中
public class XMLParser { private Document document; public XMLParser(String filePath){ //从当前source目录下读取文件 InputStream inputStream = this.getClass().getClassLoader().getResource
2017-08-22 10:47:02 558
转载 dom4j操作xml文档
要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:http://nchc.dl.sourceforge.net/sourceforge/dom4j/dom4j-1.6.1.zip解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的
2017-08-22 10:29:26 263
转载 MyBatis源码分析(1)-MapConfig文件的解析
MyBatis源码分析(1)-MapConfig文件的解析1.简述 MyBatis是一个优秀的轻ORM框架,由最初的iBatis演化而来,可以方便的完成sql语句的输入输出到java对象之间的相互映射,典型的MyBatis使用的方式如下:String resource = "org/mybatis/example/mybatis-config.xml";Inp
2017-08-22 09:05:48 504
转载 idea中查看方法的调用链
Eclipse的"Call Hierarchy"可以查看一个Java方法或类成员变量的调用树(caller和callee两个方向),非常方便。 在IDEA中类似功能被划分到了三个命令。 IntelliJ IDEA中可以在主菜单中选择Navigate | Call Hierarchy命令查看一个Java方法调用树(caller和callee两个方向),但是不像Eclipse那样可
2017-08-22 06:56:56 108250 5
转载 mybaits使用注意点
在项目开发中,本人使用Integer类型字段时不小心加了是否为空字符串判断,产生的结果时当那个字段为0时它就会变为""所有mybaits中的判断如果为Integer类型就不要判断是否为空字符串
2017-08-21 14:04:59 252
转载 使用netty开发私有栈协议
基于Netty的私有协议栈的开发书是人类进步的阶梯,每读一本书都使自己得以提升,以前看书都是看了就看了,当时感觉受益匪浅,时间一长就又还回到书本了!所以说,好记性不如烂笔头,以后每次看完一本书都写一些读后感,对于技术书则把对让自己醍醐灌顶的篇章记录下来,以便以后翻阅查看,也是记录自己学习的过程- _ -。OK!言归正传,最近由于公司需要做一个网关项目,需要用到基于TCP/IP私有协
2017-08-21 06:50:51 724
转载 jquery中的html()方法和append()使用注意点
最近做个项目是点击上传文件动态添加上传文件控件,我开始使用html函数,我首先是获取那个div的html然后再追加上去。其结果是上一个文件选择的内容无法获取解决办法使用append就可以做了
2017-08-18 10:51:12 3265
转载 netty实现websocket
现在网上网站为了实现推送基本都采用轮询的方式,比较新的轮询技术是comet,采用ajax,但是还是得发送请求,为了解决html效率低下的问题,html5定义了websocket协议。服务端代码:import java.util.concurrent.TimeUnit;import org.apache.activemq.util.TimeUtils;import io.
2017-08-17 22:42:37 386
转载 使用SpringMVC和js实现文件及字段上传中遇到的坑
界面代码: 后台代码:class TestBean{ private MultipartFil
2017-08-17 18:19:31 564
转载 post400报Bad Request
问题描述:用ajax请求时报post 400 (Bad Request)的异常,前台js参数JSON.stringify(data),后台controller 中@RequestBody XX xx(javabean)接收参数。通常发生400时,即使在后台方法上设置断点,但因400是参数由json转换成Javabean时发生异常,所以不会进入断点。此时如果单
2017-08-17 17:38:20 2343
转载 使用js显示本地图片
如梦技术IT-图片上传预览 ">//图片预览,兼容各个浏览器function previewImage(file) { var porImg = $(file), viewImg = $('#viewImg'); var image = porImg.val(); if (!
2017-08-17 11:15:05 3791
转载 spring扩展schema文件
spring我们在开发过程中是个必不可少的框架,我们通常会将我们程序中的bean交由spring容器来进行管理,应用程序需要用到bean的时候从spring容器中去获取,spring是如何实现这种方式的呢?spring的配置文件,当我们在开发的过程中发现spring提供的配置命令不满足的情况下我们该怎么办呢?我们是不是要自己去解析原生的xml文件?当然不用spring为开发者提供了可扩展的sche
2017-08-16 22:10:54 387
转载 Netty 实现HTTP文件服务器
Netty 实现HTTP文件服务器一,需求文件服务器使用HTTP协议对外提供服务。用户通过浏览器访问文件服务器,首先对URL进行检查,若失败返回403错误;若通过校验,以链接的方式打开当前目录,每个目录或文件都以超链接的形式展现,可递归访问,并下载文件。 二,关键实现代码①文件服务器启动类需要添加的通道处理器如下:@Override
2017-08-16 21:39:27 835
转载 使用netty和messagepack编写网络请求
在我们使用Netty开发基于网络的应用程序的时候,你都需要实现一些符合自己应用的codec,在Netty中也提供了很多种编解码的实现,在实现自定义编解码器的时候,我们只需要继承相关接口后,重写部分方法就可以实现decode和encode。例如在我们继承了ByteToMessageDecoder 类后只需要重写decode()方法就可以实现解码。在学习Netty的过程中我实现了一个编解码的d
2017-08-16 20:24:58 634
转载 LengthFieldBasedFrameDecoder和LengthFieldPrepender
/** * Creates a new instance. * * @param maxFrameLength * the maximum length of the frame. If the length of the frame is * greater than this value, {@link TooLongFrameException} wi
2017-08-15 23:04:38 384
转载 MessagePack使用
在使用MessagePack是主要注意点是要在pojo上添加@Message注解不然就会报错。如果是在netty中就无法发送数据 MessagePack pack = new MessagePack(); Student student = new Student(); student.setUserName("啦啦啦"); student.setGender("男"); stud
2017-08-15 21:27:59 1312
转载 编解码技术
1. 背景1.1. 编解码技术通常我们也习惯将编码(Encode)称为序列化(serialization),它将对象序列化为字节数组,用于网络传输、数据持久化或者其它用途。反之,解码(Decode)/反序列化(deserialization)把从网络、磁盘等读取的字节数组还原成原始对象(通常是原始对象的拷贝),以方便后续的业务逻辑操作。进行远程跨进程服务调用时(例如
2017-08-14 23:10:48 5404 1
转载 java中获取运行路径
1、利用System.getProperty()函数获取当前路径: System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径 2、使用File提供的函数获取当前路径: File directory = new File("");//设定为当前文件夹 try{ System.out.pr
2017-08-13 19:44:37 3020
字符串在虚拟机中执行问题
2016-08-02
关于自定义类加载器的问题
2016-03-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人