自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ubuntu配置jdk

1.首先要下载jdkwget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/9.0.4+11/c2514751926b4512b076cc82f959763f/jdk

2018-02-05 16:16:53 398

原创 JPA生命周期与detached entity passed to persist异常

今天写代码,需要更新数据。我先在controller里面根据id查询出数据,然后修改其中某些字段的值,传到service中做更新,结果hibernate报错:detached entity passed to persist。然后尝试在service里面先做查询,然后修改更新,程序正常。咨询了下架构师,说是entity从service传到controller中,由受控态变成了游离态,所以h

2017-11-02 15:50:37 1453

原创 TaskServiceImpl代码分析(理解afterPropertiesSet()和getBeansOfType()方法)

这几天翻项目代码,发现处理用户任务的TaskServiceImpl写的很好,今天有时间好好研究下里面的知识点。源码如下:@Service@Transactional(readOnly = true)public class TaskServiceImpl implements TaskService, ApplicationContextAware, InitializingBean

2017-10-30 11:03:47 10366 2

原创 使用phantomjs对网页截图

1.官网:http://phantomjs.org/,里面有下载地址,不过速度很慢,常常下载失败。我是在windows系统做的试验,下载完zip文件解压到任意目录就可以了。加入环境变量:系统变量Path中加入F:\Program Files\phantomjs-2.1.1-windows\bin,然后cmd模式下输入phantomjs -v看能不能正常输出版本号,正常说明加入成功。2.

2017-08-23 09:50:26 1921

原创 mysql 组合排序

ORDER BY FIELD(STATUS,2,0,1,3),start_time DESC

2017-07-20 17:43:50 3520

原创 实现点选式验证码-需求背景及最终效果

1.需求背景:最开始产品注册的时候,验证手机号时没有在发送短信验证码前做什么限制,导致短信平台被第三方恶意调用,短时间发送了大量短信验证码。所以紧急要加一个验证功能,防止短信平台被恶意调用。2.最终效果:

2017-06-26 10:54:32 3300

原创 实现点选式验证码-序

做出来的效果大概就是网易那个样子http://dun.163.com/trial/picture-click不过网易是收费接入的,我这是自己实现的=。=先写个序言,实现细节慢慢写,我搜了下,网上还没有现成的例子,我自己写的时候也是费了不少功夫才做出来,还是挺有意思的。

2017-05-17 09:46:46 3349 3

原创 服务器如何读取文件

首先取得路径,我这边没办法通过session取,只能取当前class的路径,然后拼接下String url = GetBipURL.class.getResource("").toURI().getPath().toString();url = url.substring(1);String []temp = url.split("WEB-INF");if (temp.length >

2017-03-06 18:10:05 2678

原创 封装框架需要的反射技术文章

先收藏下Java使用泛型编程提取类名上T类型http://www.cnblogs.com/wumian/articles/2012-11-1-1726.htmlJava反射机制详解http://www.cnblogs.com/lzq198754/p/5780331.html

2017-03-06 10:59:26 317

原创 Java中需要转义的字符

在Java中,不管是String.split(),还是正则表达式,有一些特殊字符需要转义,这些字符是(    [     {    /    ^    -    $     ¦    }    ]    )    ?    *    +    . 转义方法为字符前面加上"\\",这样在split、replaceAll时就不会报错了;不过要注意,String.contains()

2017-03-02 15:23:18 27053 3

原创 Java生成一定范围内的浮点数

前几天做项目碰到一个需求,要生成1.00-2.00范围内的浮点数,也就是说生成类似1.23之类的数,要求保留两位小数,现将实现方法记录一下。1.生成max到min范围的浮点数/** * 生成max到min范围的浮点数 * */public static double nextDouble(final double min, final double max) { return

2017-02-13 11:08:19 12294

原创 性能优化之list的size

【创建时间】2016/9/2很多java规范中都会要求,遍历list、数组等的时候,要先取得长度,不要在每次循环的时候都调一遍list.size(),以提高性能。然而实际能提高多少性能呢?我做了个小试验,来验证性能提升到底有没有效。首先我创建了一个list,进行循环赋值,可以看到我循环了一千万次// 测试性能List a = new ArrayList();for (int i

2017-02-07 23:34:35 3890

原创 事务详解

【创建时间】2016/9/8事务有这样一种特性,要么都执行,要么都不执行。1.java项目事务处理有这样一个业务场景,需要生成两个文件,这两个文件要么都生成出来,要么都不生成,我们做实现的时候,可以在生成失败的时候,删除已经生成好的另一个文件,这就是事务的实现;2.java web项目事务在没有使用spring框架的web项目,事务是怎么实现的呢?通过jdbc实现事务处

2017-02-07 23:33:23 403

原创 什么是daemon线程

【创建时间】2016/8/31第一次知道java线程还分用户线程和守护线程。。。daemon线程即为守护线程,发音美['di:m?n]用户线程:就是我们平时创建的普通线程。守护线程:主要是用来服务用户线程。在jvm里,如果所有用户线程结束,那么守护线程也会被终止。

2017-02-07 23:32:14 1374

原创 关于拦截方法调用其他内部方法无法被拦截问题的解决

【创建时间】2016/9/8这篇文章是我转载的一篇,当时正好碰到无法理解为什么spring的事务在类内部方法调用时无效,这篇文章解释了这个问题。拦截器的实现原理很简单,就是动态代理,实现AOP机制。当外部调用被拦截bean的拦截方法时,可以选择在拦截之前或者之后等条件执行拦截方法之外的逻辑,比如特殊权限验证,参数修正等操作。但是如果现在一个需求是,当外部调用拦截bean的时候,不但要执

2017-02-07 23:31:31 1429 1

原创 定时器之Timer和TimerTask深入分析

【创建时间】2016/8/31schedule:下一次的执行时间点=上一次程序执行完成的时间点+间隔时间scheduleAtFixedRate:下一次的执行时间点=上一次程序开始执行的时间点+间隔时间 ;并且因为前一个任务要执行6秒,而当前任务已经开始执行了,因此两个任务间存在重叠,需要考虑线程同步timer要注意的问题:每一个Timer仅对应唯一一个线程。Timer不保证任务

2017-02-07 23:29:40 898

原创 定时器之timer.schedule()方法详解

【创建时间】2016/8/31定时器中会用到timer.schedule(new MyTask(),long time1,long timer2);方法,用于重复调用定时器,刚开始的时候以为这个没用,因为线程中有Thread.sleep()方法,后来发现理解错了,sleep只能设置本地线程执行时间,无法设置重复执行时执行间隔,查了点资料,好好了解了timer.schedule的执行过程。

2017-02-07 23:28:56 6789

原创 定时器之contextDestroyed

【创建时间】2016/8/31contextDestroyed为定时器销毁方法,public void contextDestroyed(ServletContextEvent sce) { timer.cancel(); System.out.println("定时器销毁!"); }在执行的时候,并没有看到程序有调用该方法,好奇这个销

2017-02-07 23:28:05 2525

原创 No value specified for Date解决方法

今天我的BeanUtils.copyProperties又出问题了数据源orig有一个参数是java.util.Date类型,没有初始化值,调用BeanUtils.copyProperties方法报错No value specified for Date,百度了下,有人说在copy之前加上ConvertUtils.register(new DateConverter(null), ja

2017-01-11 14:27:52 16631 2

原创 项目启动后开启定时任务方法-->TimerTask中如何调用service

背景:web容器启动后,加载定时线程执行业务处理。这是昨天我写定时任务碰到的问题,我自己写的TimerTask调用service一直报空指针,在action中调用同样的service正常,看来是我的TimerTask调用方法有问题,于是开始研究。刚开始我猜测是ServletContextListener加载时spring还没有加载Bean,所以报空指针,于是我改了实现方式,采用Init

2017-01-07 15:32:02 5504

原创 项目启动后开启定时任务方法-->InitializingBean和ServletContextListener比较

前面两篇文章重点介绍了这两种方式的实现,那么,这两种方式究竟有什么差别呢?其实在技术原理中已经能看出,ServletContextListener在项目启动中执行,执行时spring还没有加载完Bean,所以ServletContextListener实现方式下,需要用特殊的方法来调用spring管理的service。InitializingBean在spring加载完所有的Bean后

2017-01-07 15:22:51 1443

原创 项目启动后开启定时任务方法-->InitializingBean

通过springframework自带的InitializingBean同样可以达到项目启动后开启定时任务效果,具体实现如下。1.写一个继承InitializingBean接口的类import java.util.Calendar;import java.util.Date;import java.util.Timer;import javax.annotation.Resourc

2017-01-07 14:57:35 1728

原创 项目启动后开启定时任务方法-->ServletContextListener

1.项目启动时/启动后加载任务的方法主要有这么两种:1)配置一个listener,继承ServletContextListener,配置到web.xml中,比如这是我自己写的数据字典初始化类import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import com.xx

2017-01-07 14:17:25 1297

原创 MySQL中汉字占多少字节?varchar(x)中的x如何理解?

这几天在写接口校验,碰到个有意思的事,前端开发人员问我某个字段的长度控制在多少?我查了查数据库,发现是varchar(100),于是就说数据库字段限制100,汉字咱们限制50吧。每个汉字占2个字节,100/2=50,看起来没什么问题。这时旁边另一个开发说不对,有的偏僻字占3个字节。。。这就很尴尬了,这长度校验咋写?于是我上网查了查,发现原来我们都理解的不对MySQL中varch

2017-01-03 14:07:37 3360 1

原创 PropertyUtils.copyProperties和BeanUtils.copyProperties使用区别

位于org.apache.commons.beanutils包里面的这两个参数拷贝方法可以复制一个对象中相同名字的参数值到另一个对象,能简化很多代码,但是这两个copy方法使用起来有很大区别。/** * 参数拷贝 * * @param dest 目标 * @param orig 数据源 * @author * */ public static void copyP

2016-12-30 15:53:34 9755 3

原创 MySQL分页

现在有一些MySQL的分页插件,比如com.github.miemiedev.mybatis.paginator,尽管这些插件可以帮助开发,我还是觉得作为一个后端人员,对于MySQL的分页不仅仅只停留在调插件的水平,至少原理要知道,最好能封装自己的分页插件。1.原理MySQL用limit来限制每次查询数据的数量,利用limit,就可以实现分页。实际上,第三方插件也是利用这点来实现分页。

2016-12-22 18:52:03 1450

原创 日期格式yyyy-MM-dd和YYYY-MM-dd有什么区别?

前几天写日期格式化工具类,自己做测试的时候,无意中发现一个好玩的问题,如果把format参数设置成YYYY-MM-DD,输出的结果很奇怪。Date result1 = string2Date("2016-12-15", "yyyy-MM-dd");System.out.println(result1);Date result2 = string2Date("2016-12-15", "YY

2016-12-20 10:20:47 62118 4

原创 消息队列activemq入门教程

关于web系统中队列的使用参看文章http://jinnianshilongnian.iteye.com/blog/2321715前言:消息队列仅仅是队列中的一个分支应用,使用场景:各个微服务之间的通信,包括数据异步同步等等场合,比如下订单业务,可能涉及到用户中心服务,订单服务,财务服务,产品服务,仓库服务等微服务;传统做法是写大量的接口,各个服务间调用接口来进行创建订单、付款、支付、扣减

2016-12-12 15:21:46 627

原创 http接口乱码问题

做项目遇到一个需求,要以get接口传中文到后台,结果后台接收到的中文参数为乱码解决方法如下:1.首先把tomcat的配置文件server.xml中添加编码处理<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="84

2016-12-12 14:52:22 5999

原创 eclipse中如何为生成的get/set方法添加注释

我需要这样的get/set方法 /** * 获取起始页 * * @return the startIndex */ public int getStartIndex() { return startIndex; } /** * 设置起始页 * * @param startIndex the 起始页 to set */ public void set

2016-12-02 10:02:17 2056

转载 微服务架构

http://www.cnblogs.com/Leo_wl/p/5049722.html

2016-11-29 17:24:12 343

原创 java中try/catch性能和原理

部分内容转载自http://blog.csdn.net/tao_zi7890/article/details/17584813记得在做企业云项目的时候,我接了两个有意思的任务,一个是为几个线程加很多的try/catch代码。catch的异常有好几层,范围最小的,或者说最精准的异常放在最上面,最后跟一个Exception e。类似这种try {} catch (IOException e)

2016-11-29 10:26:00 7467 1

原创 ETL系统增量抽取方案

一、触发器在被抽取的源表上建立插入、修改、删除三种触发器,当源表中数据发生变化,相应的触发器将变化的数据写入一个增量日志表,日志表只存储源表名称、更新关键字值和操作类型(insert,update,delete)。ETL先从日志表取源表名称和关键字值,再去源表抽取完整记录,根据操作类型对目标表做处理。二、时间戳通过比较系统时间与源表时间戳字段的值来决定抽取哪些数据,源表需存在时间戳字段

2016-11-14 15:15:08 2092

原创 如何理解Iaas、Paas、Saas

这三个概念随着云计算变得越来越火,面试经常碰到问这个,我查了一些资料,对这三个概念做了一点总结。IaaS:Infrastructure-as-a-Service,基础设施即服务;PaaS:Platfrom-as-a-Service,平台即服务;SaaS:Sotware-as-a-Service,软件即服务。通俗地说,IaaS是卖电脑的,PaaS是卖操作系统的(比如windows),

2016-11-14 14:53:56 703

原创 第一篇博客

从2012年开始工作,到现在也有4年多时间,也算有点积累,一直想找个平台记录下来,csdn是个技术类网站,先在这里写吧,有时间把自己的网站弄好,再转过去。

2016-10-19 14:44:01 284

空空如也

空空如也

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

TA关注的人

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