自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (2)
  • 收藏
  • 关注

原创 spring request的处理过程

在spring项目中,一个request过来后,都经过了哪些步骤才到controller那里呢?下面直接亮出结论,有兴趣的可以继续往下读(当然了,只是粗略的记录,要想深刻理解,还需要自己一步步跟进去看)。1、经过servlet框架的filter2、进入FrameworkServlet#processRequest(...)(spring的),经过若干层会进入到DispatcherServlet.d...

2018-03-05 22:21:59 2745

原创 javax的Valid注解对泛型失效

我们知道javax的@Valid注解的效果是递归下去的。比如有一个如下的Controller:request的结构分别如下:那么QueryContractRequest的chainId字段上面的Min注解是会生效的。但是,如果ApiBaseRequest的定义如下,及使用了泛型,那么QueryContractRequest的chainId字段上面的Min注解不会

2017-12-09 15:45:09 5214 10

原创 证书和SSL或TLS

本篇说明如下问题:1、证书是啥,有哪些内容?2、证书编码及格式?3、证书如何用?4、tomcat如何启用SSL?5、keystore是什么keytool有何用?1、什么是证书      一个证书包含(当前证书的公钥(私钥是单独存储的)、证书颁发者、证书使用者、签名(来自生成当前证书的那个证书))签名的计算是使用私钥,签名的验证是使用公钥,因此验证当前证书

2017-12-09 15:30:20 751

原创 tomcat的日志文件权限与启动用户的权限不一致

现象:用户work的文件权限(umask=0002)为u=rwx,g=rwx,o=rx但是tomcat的日志文件的权限却是:为什么会不一样呢?这是因为tomcat在启动(catalina.sh)时会重新设置UMASK,(其默认值为0027,根操作系统的默认值0022不一样),去那个脚本里修改一下即可,如下:改成系统当前用户的uma

2017-12-09 15:15:01 4916

原创 Logback

解决两个问题:1、日志文件先按日期分割,再按指定大小分割;2、日志输出到catalina.out; 1、日志输出到catalina.out在logback.xml里如下配置后就能输出到console里, <?xml version="1.0" encoding="UTF-8"?><configuration> <appende...

2017-11-30 14:10:49 361

原创 Java日志框架

在java的众多开源项目中,有很多日志框架,如Commons-logging、Log4j、logback和JDK自带的logging。这些日志框架也有自己的接口,但是这些接口定义不统一,在项目开发时不容易相互切换。于是有了SLF4J。可以看出SLF4J只是一个统一的定义,并未提供日志功能的实现。但是在业务项目开发时,可以使用SLF4J进行编码,然后再引入两个依赖,一个是具体的日志框架,一个是从

2017-11-30 13:58:12 175

原创 Spring的component-scan

base-package  1、basePackages扫描basePackage制定包(及其子包)下的类,以尝试创建bean。将带有@Repository,、@Service、@Controller和@Component的都创建一个bean。注解@ComponentScan的basePackages属性的默认值是注解@ComponentScan所在类所处的包。2、use-

2017-11-30 13:36:37 350

原创 java项目相对路径问题

1、背景在做开发时,经常遇到这样的情形:IDE、cmd、web容器,对于一个项目的主目录路径的获取方式总是不一样,而且跨os(如windows和linux)时更是如此,这样太影像编码了,因为总不能一个一个if else吧 ~囧~。那么有没有办法解决呢?2、解决方案:看需求!2.1、如果你是想拿到路径,那么  =>  没有(除非仅限制在linux或mac上),因为

2017-11-30 13:21:39 801

原创 Spring自定义xml标签

1、总体思路:1.1) 编写标签schema1.2) 添加文件spring.schemas和spring.handlers(目录固定在classpath:/META-INF下,被依赖代码必须打成一个jar包)1.3) 编写一堆handler。2、详细说明自定义的标签一定有属于自己的namespace,所以要有个namespaceHandler(继承Namespace

2017-11-30 13:13:50 2298

原创 javax注解适用范围

javax的各种注解分别适用于什么类型,有哪些边界条件呢?先汇总如下:DecimalMax 通过最大值指定取值范围 null是合法的 BigDecimal、BigInteger、CharSequence、byte、short、int、long、Byte、Short、Integer、LongDecimalMin null是合法的 同上Digits 通过有效位数指

2017-11-30 11:47:51 1416

原创 javax的NotBlank和Email注解失效

使用javax的NotBlan和Email注解,结果保类似错误no validator could be found for constraint 'javax.validation.constraints.notblank'原来是由于javax只提供了注解的定义,未提供对应的处理器,一般使用hibernate提供的注解处理器。但是hibernate未提供NotBlank和

2017-11-30 11:40:45 7326 2

原创 idea部署项目com.intellij.javaee.oss.admin.jmx.JmxAdminException-未使用最新版本的war包

本篇解决这样的问题:使用idea在本地部署项目,按照链接的方法添加LocalTomcat,结果报错误说”com.intellij.javaee.oss.admin.jmx.JmxAdminException xxx1.0.0-SNAPSHOT.war”包找不到?而如果重新check代码,然后创建一个项目就不会发生这个问题。疑惑:明明打包的war包版本是3.2.0,为什么

2017-10-16 15:45:24 29623

原创 spring配置解析过程

1、到直接引用的jar包的META-INF/下查找文件spring.handlers和spring.schemas文件,并加载业务方自定义的namespace parser和bean definition parser。spring的是ContextNamespaceHandler。2、从WEB-INF/web.xml开始读取webService所涉及的所有xml文件。按顺序读取解析,

2017-10-10 15:38:01 365

原创 spring-controller

1、@RequestBody && @ResponseBodyhttp://www.jianshu.com/p/7097fea8ce3fhttp://snowolf.iteye.com/blog/1628861应用场景:1、适用于非键值对的情形,content-Type是application/json、application/xml等,但不是application/x-www-f

2017-10-10 15:33:38 253

原创 spring-aop

aop代理的实现是通过beanPostProcessor来实现的,标签被解析成一个类型是AnnotationAwareAspectJAutoProxyCreator的bean,这个bean就是一个beanPostProcessor(见AbstractAutoProxyCreator#wrapIfNecessary(…)),该beanPostProcessor会为被Aspect覆盖到的所有bea

2017-10-10 15:20:02 180

原创 tomcat远程debug

本地idea远端服务器(必须是tomcat)(事先配置按下面的配置好,否则要重启的):http://flyer2010.iteye.com/blog/6585061)linux系统:修改bin/catalina.sh添加一条语句即可,如下:declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -D

2017-10-10 15:08:46 185

原创 spring properties

1、取一个配置值,分割成list@Value("#{'${image.product}'.split(',')}")private List imageProducts;2、获取配置文件里的所有key除非自己定义一个property-place-holder,或者自己去读取那个配置文件,否则办不到。3、获取配置文件里所有key对应的value注入一个Envi

2017-10-10 15:03:15 233

原创 HTTP请求客户端

Http请求的客户端(在java里)目前有两种,java.net.HttpURLConnection和org.apache.http.client.HttpClient。java.net.HttpURLConnection这是java自带的http请求工具类。HttpURLConnection的API提供的比较简单,更加容易地去使用和扩展它,但是在2.2以前存在bug,所以

2017-10-10 14:59:41 1341

原创 java-mysql-mybatis日期类型

本篇包含以下内容:MYSQL的五种时间类型java、mybatis、mysql类型对应关系1、MYSQL的五种时间类型(参考http://blog.csdn.net/nich002/article/details/8950065)DATETIME 8B 范围[1000-01-01 00:00:00, 9999-12-31 23:59:59]TIM

2017-10-10 14:53:34 1529

原创 HTTP-POST数据

本篇主要涵盖HTTP-POST数据的四种格式;HTTP-POST数据时一些常见的坑。HTTP-POST数据的四种格式可参见http://blog.csdn.net/a236209186/article/details/51736886HTTP读取参数和header时踩过的坑:有关ServletRequest.getParameter(“xxx”)

2017-10-10 14:34:20 522

原创 linux下mysql安装相关

主要内容:安装、卸载和配置mysql配置和管理msyql终端启动mysql和停止mysql检查mysql进程是否开启登陆和退出忘记root密码的解决方案查看数据库、表、列、存储过程等信息命令——Show创建用户、赋访问权限、修改密码数据定义、数据操作语句数据的备份与恢复外部IP无法访问问题1、安装、卸载和配置mysql见(http://www.cnblogs.com

2017-03-19 21:59:12 270

原创 linux 安装JDK

这里以Ubuntu12.04安装JDK8来加以说明。首先从官网下载linux版的JDK8:http://www.oracle.com/technetwork/java/javase/downloads/server-jre8-downloads-2133154.html然后,将下载好的JDK压缩包传输到目的机器上。如:再将其解压缩:tarzxvf jdk-8u5

2017-03-19 21:50:21 222

原创 Spring的bean创建顺序

解答以下疑惑:Spring配置文件里bean,究竟是按什么样的顺序加载呢?Spring项目在部署时,究竟创建了多少各beanFactory呢?按什么顺序创建?长话短说,总结成如下几点:Rule1:首先读取WEB-INF/web.xml文件,该文件内一般会配置spring-config和spring-mvc。按顺序加载对应的xml文件。Rule2:若web.xml中还有除springmvc和默认的s...

2017-03-19 20:28:21 14669

原创 JAVA HttpClient使用

为达到以下目的:要发送的参数json和platformKey, 以post方式传送,对参数进行Encode,只针对参数的值进行encode,否则解析不了;引用的包import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.Inpu

2017-03-19 20:07:32 309

原创 Spring AOP demo 和获取被CGLIB代理的对象

本文分为两部分:1)给出Spring AOP的一个例子(会使用CGLIB代理);2)给出获取被CGLIB代理的原始对象。1、Spring AOP Demo这部分参考了博文(http://www.voidcn.com/blog/daguanjia11/article/p-4628090.html)1.1添加maven依赖 org.springframework spr

2017-02-16 22:55:00 8097

转载 mac下安装wget命令

本文参考http://www.hollischuang.com/archives/548执行下述命令可在mac上安装wget命令。curl -O http://ftp.gnu.org/gnu/wget/wget-1.13.4.tar.gztar xzvf wget-1.13.4.tar.gzcd wget-1.13.4./configure --with-ssl=openssls

2017-02-15 19:06:50 3672

原创 curl常用功能

本文介绍curl的:1)参数被截断;2)自动转义编码;3)如何发GET和POST;参数被截断若欲发送:curl http://host:port/test?a=1&b=2curl会将其作为两条命令发送,此时需要对参数分割符&进行转义,即改为curl http://host:port/test?a=1\&b=2或者curl "http://localhos

2017-02-12 01:54:27 655

原创 linux机器之间互传文件

可以使用scp等命令来拷贝。也可以通过HTTP服务来实现。具体就是,机器A开启一个HTTP服务,机器B发出请求从而获取到文件。假设在机器A上的当前目录为/home/work,目录结构如下(有个子目录subDir)-  -test1.txt  -subDir      -test2.txt使用python,执行:python -m SimpleHTTPServer 8

2017-02-12 00:31:45 784

翻译 Mysql多列索引——最左精确匹配

若mysql的一张表上有一个多列索引,那么在编写where条件时,究竟哪些真正起到作用了呢?本文参考(http://blog.codinglabs.org/articles/theory-of-mysql-index.html)假设有如下的一张表:DROP TABLE IF EXISTS testTable;CREATE TABLE testTable(ID BIGINT NOT

2017-02-04 19:41:09 3668

原创 Mysql使用多列索引查询

在mysql中,如果使用多列索引进行查询,那么命中的记录是按插入的顺序还是按key的顺序返回呢?这个问题在不同的存储引擎下,结果是不一样的,这里仅介绍InnoDB下的情形(按key的顺序返回)。在InnoDB存储引擎下,索引分为聚集索引(对主键)和辅助索引两类(参见http://blog.codinglabs.org/articles/theory-of-mysql-index.html、

2017-02-04 19:14:08 3961

原创 java 注解的实例化

这里介绍诸如@Override、@Test的注解是如何实现(实例化)的?其实注解是一个被final修饰、继承Annotation的interface。不过既然是interface,那么就不能直接实例化,但是却可以通过getAnnotation(Class)方法取得注解对象,这说明开发人员或内置注解一定在某个地方有个实现类。而这个实现类,其实就是JVM在运行时生成的,名称一般遵循$Proxy

2017-01-28 22:17:03 8746 1

原创 mvn 阶段被执行几次

对于命令:mvn -e -U clean compile package install deploy其中,compile截断究竟被执行几次呢?实际上是compile被执行4次,package被执行3次,install被执行2次,deploy被执行一次。之所以这样,是跟maven的生命周期有关,具体可参见:http://juvenshun.iteye.com/blog/213959

2017-01-28 21:51:00 514

原创 maven 父子模块

父子模块的pom文件里会涉及dependencies、dependecyManagement、packaging元素。packaging元素父模块里的packaging必须是pom。子模块一般是jar,但也可以是pom,此时子模块仅包含一些依赖,没有代码,或者也是父模块。dependencies元素一般出现在父模块的pom文件里。被dependencies包含的依赖会被子项

2017-01-28 21:24:42 3161

原创 JAVA-AbstractQueuedSynchronizer

Java的AbstractQueuedSynchronizer的lock动作,其实是通过CAS操作去修改一个int型整数,该整数表示一个状态,不同的子类对状态的含义可以有不同的解释。而挂起自己则是通过Unsafe类的park()方法(不是Object的wait()哦)来实现,该方法是一个native方法,具体实现在JDK中。唤醒是通过Unsafe类的unpark()方法(也不是Obje

2017-01-01 16:47:01 310

翻译 maven项目打包

现欲将项目源码打成可执行jar包,但不将(resources)资源文件打入jar包,而是在jar包中指定classpath,那么如何编写POM文件呢?项目的结构是:-src-main+java+sources+webapp+test现需要打成一个可执行的jar包,运行时的结构如下:-work+lib+resources-runnable.jar-

2016-12-31 15:37:04 286

原创 mybatis插件原理

mybatis的插件原理可参考博文,http://blog.csdn.net/hupanfeng/article/details/9247379,本文可作为补充。1、mybatis的自定义插件,需要实现Interceptor接口,里面有三个接口:Object intercept(Invocation var1) throws Throwable;Object plugin(Obje

2016-12-31 14:42:57 555

原创 maven pom文件样例

本篇给出maven3的pom文件样例。包括:项目打包方式;项目如何打成可执行jar包;如何预定义一些常量,如版本号;生成站点(site),如生成javadoc文件;如何自定义项目源代码的主目录;如何自定义项目测试代码的主目录;如何添加项目依赖的jar包,并指定依赖范围;如何添加可选依赖;下面直接贴出样例代码。<project xmlns="http://maven.a

2016-06-22 15:24:16 881

原创 maven 设置JAVA_HOME

在idea中编写maven的pom脚本,想为项目的主代码生成javadoc文件,结果却提示"JAVA_HOME"变量设置不正确,具体提示如下:Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.0:site (default-site) on project QSProject: Error during pa

2016-06-22 13:31:54 5274

原创 java 使用org.w3c.dom操作XML文件

本篇介绍在java中,如何使用org.w3c.dom中的相关内容来操作XML文件。包括:如何在内存中构建XML文件并写入磁盘;如何从磁盘读取XML文件到内存;如何添加注释,读取注释;如何添加属性,读取属性;如何添加子元素,读取子元素;也可以参考如下连接:http://www.cnblogs.com/ITEagle/archive/2010/03/03/1677431.h

2016-06-17 10:00:15 7764

原创 shell 脚本样例

怎么写shell脚本呢,书上描述的挺容易,真正上手的时候一堆问题就来了,包括:shell获取脚本名shell获取传进脚本的所有参数shell的if elif怎么编写shell的for循环怎么写,包括数值运算shell的while循环怎么写shell的数组怎么定义,元素如何赋值,如何获取元素个数shell的数值之间大小的比较shell的字符串之间大小的比较shell的逻辑操作&amp;&amp;,|...

2016-06-16 16:37:20 385

spring的bean加载顺序样例项目

该项目展示spring配置文件的那些bean的加载顺序

2017-03-19

旋塞阀的详细绘制过程

本文档介绍了旋塞阀的 绘制的完整过程,仅供参考,如有错误,还请指正,谢谢。

2012-04-27

空空如也

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

TA关注的人

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