自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 aspose.word读取word中的图片并替换为文字

aspose.word读取word中的图片并替换为文字 try { // 新建文档对象 Document doc = new Document(filePath); // 查询文档中所有图片 NodeC...

2019-12-18 14:13:54 137 0

原创 mybatis调用mysql存储过程demo

1、先给出mysql存储过程的实现,是一个支持分页功能和查询参数的例子(ps:单纯的查询功能使用存储过程实现还是不多见,而且亲测效率不会提示,性能提升还是得靠索引,但这个只是一个demo,将就一下)。 CREATE DEFINER=`root`@`%` PROCEDURE `x_pr`( I...

2019-06-10 11:36:48 111 0

原创 java ssdb简单的连接池

一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.,目前有一些互联网公司都在使用ssdb,比如360,百度等。项目地址:http://ssdb.io/zh_cn/。github提供了多种语言的client实现,但是没有给出一个高效的连接池方案,因此本文结合项目的使用,给出...

2019-05-31 14:23:05 191 0

转载 看图学习https原理

前言 之前说到HTTPS,在我的概念中就是更安全,需要服务器配置证书,但是到底什么是HTTPS,为什么会更安全,整套流程又是如何实现的,在脑子里没有具体的概念。所以,我花了几天的时间,通过参考一些文章,学习了HTTPS整套机制的实现,想要通过一篇文章把我学习到的东西总结出来,让更多之前不清楚HT...

2019-03-24 11:48:31 123 0

原创 Java 对象占用内存大小

Java 对象 HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。 Java 对象头包括Mark Word,Class Metadata Address,ArrayList(数组对象)三部分。...

2019-03-24 11:30:12 931 1

原创 Spring FactoryBean应用

Spring 中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean 即 FactoryBean。FactoryBean跟普通Bean不同,其返回的对象不是指定类的一个实例,而是该FactoryBean的getObject方法所返回的对象。本文简单分析工厂FactoryBean的用法。F...

2019-03-24 10:59:58 160 0

原创 Springmvc 在什么时候注入了SimpleUrlHandlerMapping

调试Springmvc时发现,在不启用mvc:annotation-driver配置时,除了注入默认的一些Adapter和Handler之外,还有一个SimpleUrlHandlerMapping被注入了。默认的配置参考如下文件内容 springmvc什么时候注入了SimpleUrlHand...

2018-07-26 10:56:59 422 0

原创 spi机制在servlet3.0中的应用

1、spi简单说明 spi,即service privider interface,是jdk为厂商和插件提供的一种解耦机制。 spi的具体规范为:当服务的提供者,提供了服务接口的一种实现之后,在jar包的META-INF/services/目录里同时创建一个以服务接口命名的文件。该文件里就是实...

2018-07-06 14:54:42 1193 0

原创 支付宝异步回调签名失败

支付不异步回调签名失败,几个可能出问题的点: 1、公钥的设置,不是应用的公钥,而应该是支付宝的公钥。 2、如果配置有xss过滤器,一定要注意不能把回调的参数做过滤。(这个问题导致我在开发的时候疑惑了1天) 3、参考支付宝提供的demo编程。...

2018-07-03 11:41:24 1854 0

转载 不同语言HMAC SHA256创建base64哈希加密实现

Javascript HMAC SHA256 <script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha256.js"></...

2018-06-19 15:18:57 374 0

原创 url下载文件(重定向+cookie设置)

很多时候,下载文件时会重定向,并且要求携带cookie才允许下载,这种情况下,如果让下载支持重定向,并且设置cookie呢?下面的代码可以供大家参考。 public static void main(String[] args) throws Exception { ...

2018-05-08 22:28:38 2703 1

原创 spring+hibernate应用层读写分离

spring+hibernate应用层读写分离方案,是基于AbstractRoutingDataSource和AOP实现的。其中AbstractRoutingDataSource用于管理数据源并且根据key返回相应的数据源,AOP决定了什么时候使用什么数据源的key。1、相关类的代码实现: 1)...

2017-07-19 16:26:02 1013 0

原创 guava cache

1、Guava Cache概述 Guava cache是一种本地缓存轻量级的缓存方案,底层依赖于ConcurrentHashMap,但比ConcurrentHashMap提供了更多的功能,比如缓存的回收(但是需要注意的是这种缓存回收机制并不是guava cache主动回收的,而是被动的基于缓存的...

2017-07-12 11:57:07 1289 0

原创 springmvc controller 统一异常处理

针对springmvc controller层面有多种统一异常处理方法,包括默认的,自定义的,以及注解配置的。这里我推荐一种自定义异常处理方式,它能够处理ajax调用的异常和普通视图调用的异常(比如jsp)。具体的代码如下:public class GlobalHandlerExceptionRe...

2017-05-25 15:04:38 1033 0

原创 Transaction rolled back because it has been marked as rollback-only

我们知道spring事务回滚的机制是需要捕获运行时异常,当然也可以使用rollbackfor指定特殊的unchecked异常。如下代码所示:@Transactional @Override public int getTran() { teamEnrollDao.save(tenroll);...

2017-05-16 16:27:00 947 0

原创 java session基于redis共享方案

session基于redis共享有两种基本的方案 1、基于容器自身的扩展,比如tomcat的session-manage,可以参考如下 地址进行配置https://github.com/jcoleman/tomcat-redis-session-manager 这个方案只适用tomcat容器...

2017-03-29 15:25:37 11408 0

原创 docker dockerfile构建tomcat应用

1、Dockerfile文件 [root@node136 dktomcat]# cat Dockerfile FROM ubuntu:12.04 MAINTAINER <@heetian.com> ENV cSoftPath=/usr/local/software WORKDI...

2017-02-27 10:15:53 473 0

原创 java jackson-mapper-asl 1.9.13 bug

springmvc作为restapi,转换为json视图时使用的是默认的jackson,居然在这个版本上发现一个bug,详情如下:当对象中的属性是”is”开始的,转换为json对象时居然属性中的is字段没有了,这个是框架默认 处理方式吗,换位fastjson框架,一切正常

2016-11-10 10:01:01 2557 0

原创 spring 事务使用的坑

1、业务背景介绍 1)tomcat集群通过数据库的唯一索引来处理并发问题,比如username的唯一性,这样业务代码里面可以不需要写同步逻辑; 2)保存用户的业务逻辑使用事务,先保存用户信息,再统计新增用户数,这个时候新增用户数和数据库中的有效数据记录会不一致,2、原因分析 保存用户的业务逻...

2016-09-24 17:16:16 610 0

原创 maven pom 属性设置

maven是一个很强大的工具,很多时候我们其实只是使用了它的jar依赖功能,它实际上还有很多nb的功能,比如聚合,继承等。另外它也提供了很多很好的插件,提升我们的开发效率,比如mybatis代码生成插件,jar集成插件(生成一个可执行的jar)等。这里记录一下maven的几个简单的属性设置,之前在...

2016-09-06 16:08:17 777 0

原创 jsp application获取全局变量

jsp中如何获取web.xml中定义的全局变量的值,webx.xml定义全局变量 <context-param> <param-name>staticrespath</param-name> <param-value&...

2016-08-30 12:51:42 2094 0

原创 java directmemory监控

DirectBuffer是NIO提供的可以直接使用系统物理内存的结构,目的是提高内存访问速度,但是销毁和创建的成本则比JVM堆内存的大很多,使用的时候需要注意。 当使用nio的DirectBuffer功能时,我们可以通过-XX:MaxDirectMemorySize=100M,指定DirectM...

2016-07-21 16:24:21 2073 1

原创 nginx,tomcat配置动静分离

1、先安装tomcat和jdk,保证tomcat可以部署后服务能正常访问2、再安装nginx,nginx的安装具体如下, 1)准备安装软件 [root@localhost src]# yum install zlib zlib-devel pcre pcre-devel openssl ope...

2016-07-07 14:48:43 375 0

原创 springmvc controller ajax 一些使用说明

springmvc中controller方法的参数有多种定义形式,记录并说明几种常用方式 第1种: RequestMapping(“test1”) String test1(String userName) { } 说明: 1)要求方法参数名称和请求传递的参数名完全一致, 2)通过这...

2016-06-27 16:37:25 658 0

原创 java jvm shutdownhook

shutdownhook是jvm提供给应用程序在jvm退出时,处理应用程序未处理完的任务的一种安全退出机制,通过这种机制,可以在jvm退出时关闭一些资源,中断一些必须优雅关闭的线程等。 使用方式也很简单,可以在主线程启动的时候使用下面的代码注册,具体如下: Runtime.getRunti...

2016-05-13 20:51:37 1219 0

原创 java maven 生成可执行jar

还在为生成可执行jar而烦恼吗,还在为生成可执行jar后资源文件无法读取而烦恼了吗,还在为生成可执行jar依赖的jar包无法读取而烦恼吗,那就使用maven吧,maven强大的插件功能可以帮我们解决一切问题。这里举个例子说明一下,下面是我的文件目录结构: DbUtil.java需要读取resou...

2016-04-06 10:44:34 954 2

原创 cdn 验证码失效

这是一个由servlet访问url命令引起的bug,我们图片验证码的实现方式是采用servlet的方式生成验证码图片,然后将验证码存储在Session里面,当用户登录验证时,会获取当前session中的验证码来验证。 这种实现方式一直都很正常,当我们添加上cdn之后就出错了,通过查找bug我们发...

2016-04-01 09:40:12 3937 0

原创 java 线程中断

java并没有提供一种直接中断或者停止线程的方法,实际上我们说的线程中断或者取消都是基于一种协作的机制来实现的,所谓协作即调用中断或者取消方法后,线程会通过检测某个状态位来决定是否要退出正在执行的工作,从而来停止线程的执行。应该说线程中断是没有一种统一的处理方案的,正确的线程中断处理方案都需要考虑...

2016-03-25 14:34:11 530 0

原创 java ThreadPoolExecutor 自定义线程池优势

java并发线程池建议还是多多使用ThreadPoolExecutor的构造函数来设置自定义的线程池,先来看看这个构造函数的参数列表。 /** * Creates a new {@code ThreadPoolExecutor} with the given initial ...

2016-03-08 16:51:51 3241 0

原创 java active object 并发模式

Active Object 是并发编程实践中典型的异步编程模式,Active Object 模式的核心是通过解耦合方法的调用与执行来提高程序的并发度。 Active Object模式中一个核心概念就是并发对象,它不同于一般的对象,该对象方法的调用与方法的执行不在同一个线程內,也即:该对象方法被调...

2016-03-08 16:20:03 728 0

原创 java ScheduledExecutorService 使用

ScheduledExecutorService的作用是任务的调动和时间密切相关。最常用的两个方法分别是ScheduleAtFixedRate 和 ScheduleWithFixedDelay,这个两个方法在使用上还是有一些差别的。 ScheduleAtFixedRate,它是线程的执行以一个固...

2016-03-08 15:32:34 602 0

原创 java CountDownLatch 多线程文件搜索

基于多线程搜索文件,并且将最终的结果进行打印。这里使用了CountDownLatch线程协作机制,主线程等待多个搜索线程完成,并对最终结果进行打印。具体例子如下:

2016-03-08 00:18:17 1018 0

原创 java thread join

java多线程编程join的作用是等待线程结束,这个作用可以产生很多特定的场景。 1)A线程中调用B线程的join方法,那么A线程需要等待B线程执行完成后才能完成 2)主线程中依次调用A线程的join方法,B线程的join方法,可以保证A,B线程顺序执行;当主线程需要等待多个线程完成后再继续执...

2016-03-08 00:03:07 576 0

原创 java 二叉查找树(搜索树、排序树)实现

二叉查找树,又称二叉搜索树,又称二叉排序树,可以是null树。主要思想如下,如树的左子树非空,则左子树的所有节点值都小于根节点值,若树的右子树非空,则右子树的所有节点值都大于根节点值。下面就基于这个思路来实现代码了,代码只实现了几个简单方法,也参考了网上一些实现代码。class BinarySea...

2016-03-04 15:58:32 523 0

原创 java 单向链表实现

链表是一种常用的数据结构,理解了链表的结构和原理,我们也可以使用java来实现一个简易的链表,麻雀虽小五脏俱全,o(^▽^)opackage com.basic.alogrithm;public class BasicLink { public static void main(Strin...

2016-03-04 14:17:25 453 0

原创 java hashset 原理

1、首先看它的类结构public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable从类结构来看,它是比较简单的,主...

2016-03-04 10:08:51 468 0

原创 java hashset 使用

hashset的使用主要是注意以下几个关键点: 1)hashset可以保证元素唯一,并且能快速查找 2)hashset底层的实现是hashmap(key为set的值,value等于固定的Object对象) 3)hashset支持null元素保存 4)自定义对象作为hashset的值需要重新...

2016-03-04 10:00:31 503 0

原创 java linkedlist 使用

linkedlist的使用过程主要要注意下面几点 1)linkedlis允许插入null节点 2)删除元素最后基于迭代器操作,可以保障并发安全 3)使用Collections.sort方法对list排序时,在没有比较器的情况下,元素必须非空且可排序,在有比较器的情况下,若比较器考虑了元素为空...

2016-03-03 16:01:43 409 0

原创 java linkedlist 原理

linkedlist原理分析的过程,主要是从下面几个方面进行 1、类的继承关系public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, De...

2016-03-03 15:20:35 564 0

原创 java 序列化字节流解析

定义下面一个类然后执行序列化得到字节流写入文件,解析文件,基于这个过程了解java序列化的原理。package com.heetian.erange.studio.crypt;import java.io.FileNotFoundException; import java.io.FileOutp...

2016-02-28 23:43:09 2100 0

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