念奴娇 赤壁怀古
     [北宋]苏轼
大江东去,浪淘尽,千古风流人物。
故垒西边,人道是,三国周郎赤壁。
乱石穿空,惊涛拍岸,卷起千堆雪。
江山如画,一时多少豪杰。

遥想公瑾当年,小乔初嫁了,雄姿英发。
羽扇纶巾,谈笑间,樯橹灰飞烟灭。
故国神游,多情应笑我,早生华发。
人生如梦,一樽还酹江月。
摘要: Java EE 开发平台随手记 Java EE开发平台随手记1 Java EE开发平台随手记2——Mybatis扩展1 Java EE开发平台随手记3——Mybatis扩展2 Java EE开发平台随手记4——Mybatis扩展3 Java EE开发平台随手记5——Mybatis动态代理接口方式的原 阅读全文
posted @ 2012-08-16 14:11 linjisong 阅读(1116) 评论(0) 推荐(1) 编辑
摘要: Github地址:https://github.com/andyslin/spring ext 编译、运行环境:JDK 8 + Maven 3 + IDEA + Lombok spring boot:2.1.0.RELEASE(Spring:5.1.2.RELEASE) 如要本地运行github上的 阅读全文
posted @ 2019-09-30 10:25 linjisong 阅读(291) 评论(0) 推荐(0) 编辑
摘要: Github地址:https://github.com/andyslin/spring ext 编译、运行环境:JDK 8 + Maven 3 + IDEA + Lombok spring boot:2.1.0.RELEASE(Spring:5.1.2.RELEASE) 如要本地运行github上的 阅读全文
posted @ 2019-09-30 10:17 linjisong 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 通过一个案例,扩展SpringMVC,添加一种新的参数绑定机制。 阅读全文
posted @ 2019-09-30 10:15 linjisong 阅读(1735) 评论(0) 推荐(0) 编辑
摘要: 今天使用 遇到一个问题,记录一下: 首先, 配置如下: 然后,通过页面传参数: 但是后台SpringMVC接受参数的时候,发现并没有接受成功,调试了一下,发现 都获取不到,估计是和'PUT'方法有关,后面改回 之后正常了。 阅读全文
posted @ 2019-01-04 20:48 linjisong 阅读(541) 评论(0) 推荐(0) 编辑
摘要: 最近使用maven的时候遇到一个问题,每次构建都从https://repository.apache.org/snapshots仓库下载一些maven metadata.xml,但是公司的环境又连不上这个地址,导致每次构建都在等待下载超时,非常的慢,痛苦不堪。 找了一下,settings.xml和p 阅读全文
posted @ 2018-07-09 16:18 linjisong 阅读(950) 评论(0) 推荐(0) 编辑
摘要: 引子 SpringBoot的根基在于自动配置和条件配置,而在实现自动配置的时候,使用了一个 的工具类,用于加载类路径下 文件中的配置,该配置是一个 文件,键为接口名/类名/注解类名等(下文统称为接口),值为一个或多个实现类。这个工具类实际上并不是Spring Boot的,而是spring core包 阅读全文
posted @ 2018-04-09 23:14 linjisong 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 昨天的笔记中,包含了CryptoUtils和RSAUtils,今天顺便贴一下两个对称加密的工具类: DESUtils AESUtils 阅读全文
posted @ 2018-04-09 12:44 linjisong 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 两年前在做Java EE开发平台时,因为用户登录相关的模块是委托给另一位同事完成的,所以虽然知道大体概念,但是对客户端怎么安全传输密码到服务端的具体细节并不甚了解。然而这次在做4A系统(认证、授权、监控、审计)时,无论怎样都绕不过这一块内容了,于是在仔细研究了一下之前的方案,并参考网上的一些资料后, 阅读全文
posted @ 2018-04-09 00:34 linjisong 阅读(590) 评论(1) 推荐(0) 编辑
摘要: 1. 最近工作上用到Angular,需要查阅一些英文资料,虽然英文非常烂,但是种种原因又不得不硬着头皮上,只是每次看英文都很费力,因此决定将一些比较重要的特别是需要反复阅读的资料翻译一下,以节约再次阅读的时间。 2. 另外一方面,如果只是看英文,不做笔记和记录,通常会很浮躁,很多知识点都是一知半解, 阅读全文
posted @ 2017-04-24 20:45 linjisong 阅读(2206) 评论(0) 推荐(1) 编辑
摘要: 1. 从 http://rubyinstaller.org/downloads/ 下载Ruby2.2.5(x64)并安装,安装时勾选添加至路径变量中 2. 命令行中执行gem source a http://gems.ruby china.org 3. 安装ruby的redis支持环境:gem in 阅读全文
posted @ 2016-11-19 20:00 linjisong 阅读(625) 评论(0) 推荐(0) 编辑
摘要: 隔了两周,首先回顾一下,在Mybatis中的SqlMapper配置文件中引入的几个扩展机制: 1.引入SQL配置函数,简化配置、屏蔽DB底层差异性 2.引入自定义命名空间,允许自定义语句级元素、脚本级元素 3.引入表达式配置,扩充SqlMapper配置的表达能力 前面两条已经举过例子,现在来看看怎么 阅读全文
posted @ 2016-11-19 19:28 linjisong 阅读(1236) 评论(7) 推荐(0) 编辑
摘要: 三、子表删除兼容问题 这个问题,使用SQL配置函数不太好处理,而且就算使用SQL配置函数,也不够直观,有点自动生成SQL的意味,太Hibernate了(不过要是可以兼收Hibernate和Mybatis两家之长,那也是一个不错的主意),下面我们使用自定义命名空间的方式来解决。 1、编写sqlmapp 阅读全文
posted @ 2016-11-08 10:19 linjisong 阅读(802) 评论(0) 推荐(0) 编辑
摘要: 奋斗了好几个晚上调试程序,写了好几篇博客,终于建立起了Mybatis配置的扩展机制。虽然扩展机制是重要的,然而如果没有真正实用的扩展功能,那也至少是不那么鼓舞人心的,这篇博客就来举几个扩展的例子。 这次研读源码的起因是Oracle和MySQL数据库的兼容性,比如在Oracle中使用双竖线作为连接符, 阅读全文
posted @ 2016-11-08 06:56 linjisong 阅读(2376) 评论(0) 推荐(1) 编辑
摘要: 接上一篇博文,这一篇来讲述怎么实现SchemaSqlMapperParserDelegate——解析SqlMapper配置文件。 要想实现SqlMapper文件的解析,还需要仔细分析一下mybatis的源码,我画了一个图来协助理解,也可以帮助形成一个整体概念: 当然,这幅图不止是原生的解析,也包括了 阅读全文
posted @ 2016-11-07 22:30 linjisong 阅读(3995) 评论(0) 推荐(3) 编辑
摘要: 编写好XSD文件,然后来看怎么使用XSD文件校验,并解析SqlMapper文件,也就是实现doParseSqlMapperResourceWithSchema()方法。 为了实现这个功能,有两个基本要求: (1)兼容性:需要兼容mybatis的原生配置,兼容有两种层级,一种是使用DTD校验,这个前面 阅读全文
posted @ 2016-11-06 22:55 linjisong 阅读(848) 评论(0) 推荐(0) 编辑
摘要: 这篇文章以前面对SqlSessionFactoryBean的重构为基础,先简单回顾一下做了哪些操作: 现在来看怎么扩展,首先创建SchemaSqlSessionFactoryBean,继承重构后的SqlSessionFactoryBean,在XML配置中同步修改为新建的类: 对于一些简单的功能扩展, 阅读全文
posted @ 2016-11-06 21:34 linjisong 阅读(1343) 评论(0) 推荐(1) 编辑
摘要: 三、代码重构 1、先使用Eclipse把buildSqlSessionFactory()方法中众多的if换成小函数 说明一下: 这里的重构全部使用Eclipse完成,操作步骤是选定需要重构的代码,右键选择Refactor—>Extract Method,然后输入新的方法名,点击OK完成 新方法名规则 阅读全文
posted @ 2016-11-02 16:45 linjisong 阅读(1895) 评论(2) 推荐(0) 编辑
摘要: 一般来说,修改框架的源代码是极其有风险的,除非万不得已,否则不要去修改。但是今天却小心翼翼的重构了Mybatis官方提供的与Spring集成的SqlSessionFactoryBean类,一来是抱着试错的心态,二来也的确是有现实需要。 先说明两点: 通常来讲,重构是指不改变功能的情况下优化代码,但本 阅读全文
posted @ 2016-11-02 12:54 linjisong 阅读(16880) 评论(0) 推荐(1) 编辑
摘要: Mybatis是业界非常流行的持久层框架,轻量级、易用,在金融IT领域完全是领军地位,比Hibernate更受欢迎,优势非常多,也是非常值得我们学习的。但Mybatis并不尽善尽美,其自身的设计、编码也还有许多不足,甚至是缺陷,这篇文章来简要讨论一下这些缺陷: 1.Mybatis使用DTD作为XML 阅读全文
posted @ 2016-10-29 14:08 linjisong 阅读(3207) 评论(13) 推荐(6) 编辑
摘要: 这段时间没有更新博客,有点虚度了,罪恶啊......。不过,经历了人生一大喜事,宝贝儿子如约来和我们见面了....... 虽然没有更新博客,但总还是显得忙忙碌碌的——虽然自己都不知道在忙碌什么,我真的好羡慕那些在书海里面遨游的人——而我只能迷失在书的海洋里。 经典要阅读,于是《操作系统》《算法导论》 阅读全文
posted @ 2016-10-28 00:10 linjisong 阅读(318) 评论(1) 推荐(0) 编辑
摘要: 这篇博客中来说一下对Mybatis动态代理接口方式的扩展,对于Mybatis动态代理接口不熟悉的朋友,可以参考前一篇博客,或者研读Mybatis源码。 扩展11:动态代理接口扩展 我们知道,真正在Mybatis动态代理接口方式背后起作用的是SqlSession接口,类似地,我们的动态代理接口扩展则是 阅读全文
posted @ 2016-06-05 22:25 linjisong 阅读(1031) 评论(0) 推荐(3) 编辑
摘要: 为了说明后续的Mybatis扩展,插播一篇广告,先来简要说明一下Mybatis的一种原生用法,不过先声明:下面说的只是Mybatis的其中一种用法,如需要更深入了解Mybatis,请参考官方文档,或者研读源码。 我们知道,使用Mybatis的方式有很多种,从是否集成上分,可以单独使用,也可以和Spr 阅读全文
posted @ 2016-06-04 14:56 linjisong 阅读(1402) 评论(0) 推荐(1) 编辑
摘要: 接着昨天的Mybatis扩展——IDaoTemplate接口。 扩展9:批量执行 1、明确什么是批量执行 首先说明一下,这里的批量执行不是利用<foreach>标签生成一长串的sql字符串——这并不是真正的JDBC批量执行,我这里所说的批量是指在内核调用JDBC的addBatch、executeBa 阅读全文
posted @ 2016-06-01 23:30 linjisong 阅读(741) 评论(3) 推荐(1) 编辑
摘要: 忙里偷闲,继续上周的话题,记录Mybatis的扩展。 扩展5:设置默认的返回结果类型 大家知道,在Mybatis的sql-mapper配置文件中,我们需要给<select>元素添加resultType或resultMap属性,这两个属性有且只能有一个。2013年我在做一个系统的时候,因为业务关系,查 阅读全文
posted @ 2016-05-31 22:29 linjisong 阅读(949) 评论(0) 推荐(2) 编辑
摘要: 今天来记录一下对Mybatis的扩展,版本是3.3.0,是和Spring集成使用,mybatis-spring集成包的版本是1.2.3,如果使用maven,如下配置: <properties>元素下添加 1 <mybatis.version>3.3.0</mybatis.version> 2 <my 阅读全文
posted @ 2016-05-29 15:25 linjisong 阅读(1079) 评论(0) 推荐(1) 编辑
摘要: 过完春节以来,一直在负责搭建公司的新Java EE开发平台,所谓新平台,其实并不是什么新技术,不过是将目前业界较为流行的框架整合在一起,做一些简单的封装和扩展,让开发人员更加易用。 和之前负责具体的项目开发不同,不能只是功能实现就可以,还需要考虑更多的非功能性需求,比如性能、安全性、易用性、可维护性 阅读全文
posted @ 2016-05-26 23:06 linjisong 阅读(384) 评论(4) 推荐(0) 编辑
摘要: 在前面的XSD笔记中,基本上是以数据类型为主线来写的,而在我的实际开发过程中,是先设计好了XML的结构(元素、属性),并写好了一份示例,然后再反过来写XSD文件(在工具生成的基础上修改),也就是说,是以XML结构为主线的。而我在学习XSD的时候,则是以能否看懂spring-beans-3.2.xsd这个文件来检测自己,我的想法很简单,这个文件已经够复杂——对我来说——如果能够看懂这个文件,那基本上已经够我用的了,倘若实际开发的时候遇到超出这个范围的,那到时候再找相关资料学习也不晚。一、为XML结构编写相应XSD片段1、定义一个没有属性也没有内容的元素——没有属性的空元素: 2... 阅读全文
posted @ 2013-09-09 21:50 linjisong 阅读(8221) 评论(0) 推荐(3) 编辑
摘要: 在上一篇笔记的结尾,我们接触到了两个用于选择XML文档中特定范围的元素和,这两个元素的取值都是XPath表达式,那么,什么是XPath呢?简单的说,XPath是用于在XML文档中查找信息的语言,可用来在XML文档中遍历元素和属性,很多XML的相关技术比如XSLT、XQuery、XPointer等都是构建于XPath的基础之上,在这一篇笔记中,就来学习一下XPath语言。1、相关术语(1)节点(Node):格式良好的XML文档都可以转换为一个树型结构,XPath中的节点也就是这个树型结构中的节点。概况起来,有如下所列的七种节点:节点类型说明XML文档根节点XML文档的根称为文档节点或根节点元.. 阅读全文
posted @ 2013-09-07 22:06 linjisong 阅读(3148) 评论(1) 推荐(1) 编辑
摘要: 和简单数据类型对应就是复杂数据类型了,XML元素的数据类型可以是简单数据类型,也可以是复杂数据类型,而XML属性的数据类型就只能是简单数据类型。这篇笔记,就来学习一下XSD中的复杂数据类型了。1、定义复杂数据类型(1)和元素用来定义简单数据类型相对应,可以使用元素来定义复杂数据类型。其语法为: (annotation?,(simpleContent|complexContent|((group|all|choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?))))其中元素的属性说明如下:属性说明id唯一标识元素本身name... 阅读全文
posted @ 2013-09-06 23:41 linjisong 阅读(4947) 评论(0) 推荐(0) 编辑
摘要: XSD提供了数据类型,并且支持自定义数据类型,但这一切都是建立在XSD内置数据类型和一套扩展内置数据类型的规则基础之上的,在这一篇笔记中,就来看看XSD中的数据类型。1、XSD数据类型图先看一下数据类型图,有个大概的轮廓,后面再进一步细化:从上面的XSD数据类型图可以看出,主要分成两个大类:(1)简单类型:可以给属性使用,也可以给元素使用,除了内建类型,也可以使用自定义简单类型,而自定义的方式有三种:限制、列表、联合。(2)复杂类型:只能给元素使用,并且全部需要使用来自定义,根据内容又可进一步区分为含简单内容的复杂类型和含复杂内容的复杂类型,分别使用和定义其内容。另外,复杂类型还可以使用限.. 阅读全文
posted @ 2013-09-05 22:07 linjisong 阅读(8096) 评论(0) 推荐(4) 编辑