自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

转载 undertow的PUT参数获取问题

今天使用undertow遇到一个问题,记录一下:首先,maven配置如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</art...

2019-01-04 20:48:00 618

转载 工作记录:maven远程下载的问题

最近使用maven的时候遇到一个问题,每次构建都从https://repository.apache.org/snapshots仓库下载一些maven-metadata.xml,但是公司的环境又连不上这个地址,导致每次构建都在等待下载超时,非常的慢,痛苦不堪。找了一下,settings.xml和pom.xml中都没有配置https://repository.apache.org/sna...

2018-07-09 16:18:00 1342

转载 默认组件加载类

引子SpringBoot的根基在于自动配置和条件配置,而在实现自动配置的时候,使用了一个SpringFactoriesLoader的工具类,用于加载类路径下"META-INF/spring.factories"文件中的配置,该配置是一个properties文件,键为接口名/类名/注解类名等(下文统称为接口),值为一个或多个实现类。这个工具类实际上并不是Spring Boot的,而是sp...

2018-04-09 23:14:00 209

转载 加密工具类

昨天的笔记中,包含了CryptoUtils和RSAUtils,今天顺便贴一下两个对称加密的工具类:DESUtilsimport java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.security.Provider;import java.secu...

2018-04-09 12:44:00 165

转载 客户端安全传输密码至服务端的实现改进

两年前在做Java EE开发平台时,因为用户登录相关的模块是委托给另一位同事完成的,所以虽然知道大体概念,但是对客户端怎么安全传输密码到服务端的具体细节并不甚了解。然而这次在做4A系统(认证、授权、监控、审计)时,无论怎样都绕不过这一块内容了,于是在仔细研究了一下之前的方案,并参考网上的一些资料后,做了一些改进,特此记录一下。总体方案服务端生成RSA密钥对,并将公钥返回给客户端客...

2018-04-09 00:34:00 427

转载 开发Angular库的简单指导(译)

1. 最近工作上用到Angular,需要查阅一些英文资料,虽然英文非常烂,但是种种原因又不得不硬着头皮上,只是每次看英文都很费力,因此决定将一些比较重要的特别是需要反复阅读的资料翻译一下,以节约再次阅读的时间。2. 另外一方面,如果只是看英文,不做笔记和记录,通常会很浮躁,很多知识点都是一知半解,因此倒不如翻译一下,以加深自己的理解(虽说是翻译,但实际上只是按照自己的理解,复述一下,...

2017-04-24 20:45:00 141

转载 Windows中搭建Redis集群

从 http://rubyinstaller.org/downloads/ 下载Ruby2.2.5(x64)并安装,安装时勾选添加至路径变量中命令行中执行gem source -a http://gems.ruby-china.org安装ruby的redis支持环境:gem install redis从 https://github.com/MSOpenTech/redis/re...

2016-11-19 20:00:00 86

转载 Mybatis中SqlMapper配置的扩展与应用(3)

隔了两周,首先回顾一下,在Mybatis中的SqlMapper配置文件中引入的几个扩展机制:1.引入SQL配置函数,简化配置、屏蔽DB底层差异性2.引入自定义命名空间,允许自定义语句级元素、脚本级元素3.引入表达式配置,扩充SqlMapper配置的表达能力前面两条已经举过例子,现在来看看怎么使用表达式配置。说到表达式语言,最为富丽堂皇的自然就是OGNL,但这也正是Mybati...

2016-11-19 19:28:00 208

转载 Mybatis中SqlMapper配置的扩展与应用(2)

三、子表删除兼容问题这个问题,使用SQL配置函数不太好处理,而且就算使用SQL配置函数,也不够直观,有点自动生成SQL的意味,太Hibernate了(不过要是可以兼收Hibernate和Mybatis两家之长,那也是一个不错的主意),下面我们使用自定义命名空间的方式来解决。1、编写sqlmapper-extend命名空间的XSD文件,引进新的<db>元素&...

2016-11-08 10:19:00 123

转载 Mybatis中SqlMapper配置的扩展与应用(1)

奋斗了好几个晚上调试程序,写了好几篇博客,终于建立起了Mybatis配置的扩展机制。虽然扩展机制是重要的,然而如果没有真正实用的扩展功能,那也至少是不那么鼓舞人心的,这篇博客就来举几个扩展的例子。这次研读源码的起因是Oracle和MySQL数据库的兼容性,比如在Oracle中使用双竖线作为连接符,而MySQL中使用CONCAT函数;比如Oracle中可以使用DECODE函数,而MyS...

2016-11-08 06:56:00 108

转载 优化与扩展Mybatis的SqlMapper解析

接上一篇博文,这一篇来讲述怎么实现SchemaSqlMapperParserDelegate——解析SqlMapper配置文件。要想实现SqlMapper文件的解析,还需要仔细分析一下mybatis的源码,我画了一个图来协助理解,也可以帮助形成一个整体概念:当然,这幅图不止是原生的解析,也包括了XSD模式下的解析,下面对着这幅图来说明一下。一、Mybatis全局配置M...

2016-11-07 22:30:00 188

转载 使用XSD校验Mybatis的SqlMapper配置文件(2)

编写好XSD文件,然后来看怎么使用XSD文件校验,并解析SqlMapper文件,也就是实现doParseSqlMapperResourceWithSchema()方法。为了实现这个功能,有两个基本要求:(1)兼容性:需要兼容mybatis的原生配置,兼容有两种层级,一种是使用DTD校验,这个前面已经说了,走原来的流程,兼容性没有问题;另一种就是走XSD校验,但也需要兼容mybat...

2016-11-06 22:55:00 129

转载 使用XSD校验Mybatis的SqlMapper配置文件(1)

这篇文章以前面对SqlSessionFactoryBean的重构为基础,先简单回顾一下做了哪些操作:新建SqlSessionFactoryBean,初始代码和mybatis-spring相同;重构buildSqlSessionFactory()方法,将众多的if语句抽取为一组小方法,预留自定义配置的方法,同时添加常用属性的getter方法;提取组件工厂接口,并提供组件创建...

2016-11-06 21:34:00 300

转载 重构Mybatis与Spring集成的SqlSessionFactoryBean(2)

三、代码重构1、先使用Eclipse把buildSqlSessionFactory()方法中众多的if换成小函数protected SqlSessionFactory buildSqlSessionFactory() throws IOException { Configuration configuration; XMLConfi...

2016-11-02 16:45:00 108

转载 重构Mybatis与Spring集成的SqlSessionFactoryBean(1)

一般来说,修改框架的源代码是极其有风险的,除非万不得已,否则不要去修改。但是今天却小心翼翼的重构了Mybatis官方提供的与Spring集成的SqlSessionFactoryBean类,一来是抱着试错的心态,二来也的确是有现实需要。先说明两点:通常来讲,重构是指不改变功能的情况下优化代码,但本文所说的重构也包括了添加功能本文使用的主要jar包(版本):spring-*-...

2016-11-02 12:54:00 195

转载 Mybatis的缺陷

Mybatis是业界非常流行的持久层框架,轻量级、易用,在金融IT领域完全是领军地位,比Hibernate更受欢迎,优势非常多,也是非常值得我们学习的。但Mybatis并不尽善尽美,其自身的设计、编码也还有许多不足,甚至是缺陷,这篇文章来简要讨论一下这些缺陷:1.Mybatis使用DTD作为XML配置文件的校验文件,但是很明显,DTD差不多是快被淘汰的技术了,功能非常有限,扩展性非常...

2016-10-29 14:08:00 210

转载 迷失书海

这段时间没有更新博客,有点虚度了,罪恶啊......。不过,经历了人生一大喜事,宝贝儿子如约来和我们见面了.......虽然没有更新博客,但总还是显得忙忙碌碌的——虽然自己都不知道在忙碌什么,我真的好羡慕那些在书海里面遨游的人——而我只能迷失在书的海洋里。经典要阅读,于是《操作系统》《算法导论》《垃圾回收算法手册》《精通正则表达式》基础要扎实,于是《实战Java虚拟机》《深入...

2016-10-28 00:10:00 181

转载 Java EE开发平台随手记6——Mybatis扩展4

  这篇博客中来说一下对Mybatis动态代理接口方式的扩展,对于Mybatis动态代理接口不熟悉的朋友,可以参考前一篇博客,或者研读Mybatis源码。  扩展11:动态代理接口扩展  我们知道,真正在Mybatis动态代理接口方式背后起作用的是SqlSession接口,类似地,我们的动态代理接口扩展则是基于IDaoTemplate接口,同样的,也需要解决相同的三个基本问题:...

2016-06-05 22:25:00 121

转载 Java EE开发平台随手记5——Mybatis动态代理接口方式的原生用法

  为了说明后续的Mybatis扩展,插播一篇广告,先来简要说明一下Mybatis的一种原生用法,不过先声明:下面说的只是Mybatis的其中一种用法,如需要更深入了解Mybatis,请参考官方文档,或者研读源码。    我们知道,使用Mybatis的方式有很多种,从是否集成上分,可以单独使用,也可以和Spring集成使用;从使用方式上分,可以编写静态工具类,在静态工具中调用SqlS...

2016-06-04 14:56:00 207

转载 Java EE开发平台随手记4——Mybatis扩展3

  接着昨天的Mybatis扩展——IDaoTemplate接口。  扩展9:批量执行1、明确什么是批量执行  首先说明一下,这里的批量执行不是利用<foreach>标签生成一长串的sql字符串——这并不是真正的JDBC批量执行,我这里所说的批量是指在内核调用JDBC的addBatch、executeBatch等方法来实现的。类似下面的示例: 1 pr...

2016-06-01 23:30:00 137

转载 Java EE开发平台随手记3——Mybatis扩展2

  忙里偷闲,继续上周的话题,记录Mybatis的扩展。  扩展5:设置默认的返回结果类型  大家知道,在Mybatis的sql-mapper配置文件中,我们需要给<select>元素添加resultType或resultMap属性,这两个属性有且只能有一个。2013年我在做一个系统的时候,因为业务关系,查询出的结果集字段经常变化,为了简化处理,采用map作为返回数据...

2016-05-31 22:29:00 94

转载 Java EE开发平台随手记2——Mybatis扩展1

  今天来记录一下对Mybatis的扩展,版本是3.3.0,是和Spring集成使用,mybatis-spring集成包的版本是1.2.3,如果使用maven,如下配置:<properties>元素下添加1 <mybatis.version>3.3.0</mybatis.version>2 <mybatis.spring.ve...

2016-05-29 15:25:00 146

转载 Java EE开发平台随手记1

  过完春节以来,一直在负责搭建公司的新Java EE开发平台,所谓新平台,其实并不是什么新技术,不过是将目前业界较为流行的框架整合在一起,做一些简单的封装和扩展,让开发人员更加易用。  和之前负责具体的项目开发不同,不能只是功能实现就可以,还需要考虑更多的非功能性需求,比如性能、安全性、易用性、可维护性、易扩展性、兼容性等等,因此有很多在实际项目中觉得方便易用的功能不得不因种种原因...

2016-05-26 23:06:00 144

转载 XML学习笔记7——XSD实例

  在前面的XSD笔记中,基本上是以数据类型为主线来写的,而在我的实际开发过程中,是先设计好了XML的结构(元素、属性),并写好了一份示例,然后再反过来写XSD文件(在工具生成的基础上修改),也就是说,是以XML结构为主线的。而我在学习XSD的时候,则是以能否看懂spring-beans-3.2.xsd这个文件来检测自己,我的想法很简单,这个文件已经够复杂——对我来说——如果能够看懂这个...

2013-09-09 21:50:00 272

转载 XML学习笔记6——XPath语言

  在上一篇笔记的结尾,我们接触到了两个用于选择XML文档中特定范围的元素<selector>和<field>,这两个元素的取值都是XPath表达式,那么,什么是XPath呢?简单的说,XPath是用于在XML文档中查找信息的语言,可用来在XML文档中遍历元素和属性,很多XML的相关技术比如XSLT、XQuery、XPointer等都是构建于XPath的基础之上,...

2013-09-07 22:06:00 187

转载 XML学习笔记5——XSD复杂数据类型

  和简单数据类型对应就是复杂数据类型了,XML元素的数据类型可以是简单数据类型,也可以是复杂数据类型,而XML属性的数据类型就只能是简单数据类型。这篇笔记,就来学习一下XSD中的复杂数据类型了。1、定义复杂数据类型(1)和<simpleType>元素用来定义简单数据类型相对应,可以使用<complexType>元素来定义复杂数据类型。其语法为:&...

2013-09-06 23:41:00 624

转载 XML学习笔记4——XSD简单数据类型

  XSD提供了数据类型,并且支持自定义数据类型,但这一切都是建立在XSD内置数据类型和一套扩展内置数据类型的规则基础之上的,在这一篇笔记中,就来看看XSD中的数据类型。1、XSD数据类型图先看一下数据类型图,有个大概的轮廓,后面再进一步细化:从上面的XSD数据类型图可以看出,主要分成两个大类:(1)简单类型:可以给属性使用,也可以给元素使用,除了内建类型,也可以使用...

2013-09-05 22:07:00 552

转载 XML学习笔记3——XSD简述

  现在的语言,如果不有那么一点OO的影子,都不好意思称之为语言了。在XML的语义约束方面,DTD虽然简单,但是功能不够强大,完全是直白的描述,于是又有了替代DTD的XSD(XML Schema Definition),XSD引入了数据类型,提供了自定义数据类型的各种机制,甚至还能找到继承、多态等各种OO特征,然而学习起来也就相对复杂了,从这篇笔记开始学习一下XSD。1、XSD文件是...

2013-09-04 21:27:00 236

转载 XML学习笔记2——DTD

  在上一篇笔记中,将文档类型分类时,曾经根据文档是否使用并遵守了DTD或Schema来区分为格式良好的XML和有效的XML,那么什么是DTD和Schema呢?DTD和Schema都是用来规范XML文档的,对XML文档进行语义约束的,DTD简单易用,Schema则功能强大。在这篇笔记中,首先学习一下DTD(Document Type Definition,文档类型定义)。1、在XML...

2013-09-03 12:36:00 120

转载 XML学习笔记1——概述

  我对于XML是很不够重视的,认识也是非常肤浅的,因为在之前的Web经验中,基本上都可以使用JSON来代替XML,JSON网络流量少,解析快,JS支持好等这些特点让我对自己的观点坚信不疑。然而我渐渐地改变了这些观点,最近写了一个基于Spring的服务配置体系,主要思想是将一些常用的服务封装成服务类,预留一些参数接口,然后通过Spring注入这些参数以及服务类之间的各种关系,实现业务逻辑...

2013-09-02 17:53:00 96

转载 JavaScript高级程序设计(第3版)学习笔记15——DOM基础

  从这篇笔记开始整理JavaScript的第三部分:文档对象模型DOM(Document Object Model)。DOM是针对HTML和XML文档的一个API,脱胎于DHTML,由W3C负责制定相关标准,现在已经成为表现和操作页面标记的真正的跨平台、语言中立的一种标准,除了JavaScript外,其它一些语言比如SVG、MathML等也不同程度的实现了各自的DOM。1、DOM组...

2012-10-22 23:33:00 147

转载 JavaScript高级程序设计(第3版)学习笔记14——浏览器对象模型BOM

  访问和操作浏览器窗口的模型称为浏览器对象模型BOM(Browser Object Model),但习惯上是把所有针对浏览器的JavaScript扩展都纳入BOM的范畴。BOM提供了一组独立于网页内容而与浏览器交互的对象,但由于缺乏相关的行业规范,各浏览器提供商在很长一段时间内都是按照各自的想法去实现这些对象的,因而浏览器之间共有的对象也就成为了事实上的标准,这种局面在HTML5出现后...

2012-10-16 17:52:00 169

转载 JavaScript高级程序设计(第3版)学习笔记13——ECMAScript5新特性

  通常而言,JavaScript由ECMAScript核心、BOM和DOM三部分构成,前面的文章将ECMAScript核心部分粗略的过了一篇,接下来应该是BOM和HTML5了,但是鉴于ECMAScript5相对于ECMAScript3的新变化比较多,而且这些变化也非常的有意思,因此在这篇文章中再将我认为的有意思的变化(并非全部变化)集中整理一下,但这里只是列举,不具体展开。一、语法...

2012-10-11 10:36:00 143

转载 JavaScript高级程序设计(第3版)学习笔记12——正则表达式

  前面在分析PhoneGap源码的时候,曾经总结过一次正则表达式的用法,为了不同系列文章的完整性,这里将那里的总结迁移过来。需要指出的是,这里只是总结了正则表达式的常用的且比较简单的语法,而不是全部语法,在我看来,掌握了这些常用语法,已经足够应对日常应用了。正则表达式不只是应用在ECMAScript中,在JAVA、.Net、Unix等也有相应应用,这篇文章则是以ECMAScript中的...

2012-10-10 16:47:00 136

转载 JavaScript高级程序设计(第3版)学习笔记11——内建对象

  内建对象是指由ECMAScript实现提供的、不依赖于宿主环境的对象,这些对象在程序运行之前就已经存在了。内建对象就好比是JDK中的类库,开发者可以直接拿来使用,这极大的方便了常见的编程任务。这篇文章就来浏览一下主要的内建对象,当然,我们并不是第一次接触内建对象,前面已经接触到的就有Object、Function、Boolean、Number、String,对于已经介绍过的,这里再总...

2012-10-10 13:03:00 129

转载 JavaScript高级程序设计(第3版)学习笔记10——再访对象

  在ECMAScript中,两个核心主题就是对象与函数,而这两个主题也有些互相缠绕的,在前面几个博文中大略的过了一遍函数相关的基础知识,这篇文章再回到对象主题上来。1、对象再认识(1)对象属性和特性  什么是属性(Property),什么是特性(Attribute),这有什么区别?我不想也不会从语义学上去区分,对于这系列文章来说,属性就是组成对象的一个部分,广义上也包括对象...

2012-09-14 17:16:00 108

转载 JavaScript高级程序设计(第3版)学习笔记9——函数(下)

  再接着看函数——具有魔幻色彩的对象。9、作为值的函数  在一般的编程语言中,如果要将函数作为值来使用,需要使用类似函数指针或者代理的方式来实现,但是在ECMAScript中,函数是一种对象,拥有一般对象具有的所有特征,除了函数可以有自己的属性和方法外,还可以做为一个引用类型的值去使用,实际上我们前面的例子中已经有过将函数作为一个对象属性的值,又比如函数也可以作为另一个函数的参...

2012-08-31 17:42:00 103

转载 JavaScript高级程序设计(第3版)学习笔记8——函数(中)

  接着看函数——这个具有魔幻色彩的对象。在上篇文章中说函数内部属性时,还遗留了一个this内部属性没有解释,不过在说this之前,我想先说一说执行环境和作用域的概念。6、执行环境和作用域(1)执行环境(execution context):所有的JavaScript代码都运行在一个执行环境中,当控制权转移至JavaScript的可执行代码时,就进入了一个执行环境。活动的执行环境...

2012-08-30 23:41:00 133

转载 JavaScript高级程序设计(第3版)学习笔记7——函数(上)

变量类型  在说函数之前,先来说说变量类型。1、变量:变量在本质上就是命名的内存空间。2、变量的数据类型:就是指变量可以存储的值的数据类型,比如Number类型、Boolean类型、Object类型等,在ECMAScript中,变量的数据类型是动态的,可以在运行时改变变量的数据类型。3、变量类型:是指变量本身的类型,在ECMAScript中,变量类型就只有两种:值类型和引...

2012-08-29 20:50:00 88

转载 JavaScript高级程序设计(第3版)学习笔记6——初识对象

  砌好墙,下面出场的就是房子了,在ECMAScript中,对象就是我们所说的房子,至于你所写的整个应用程序,那就是一整套建筑群了。在房子里面可以放你想放的任意事物——如果你有足够的美学造诣,你甚至可以弄一个房中房试试——当然,为了方便管理,我们会给房子里存放的所有事物都会取上一个不重复的名字,比如医药房间里的各种药品名称。在ECMAScript中,你可以在对象中存放任意你想放的数据,同...

2012-08-28 21:05:00 152

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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