JAVA
Mr_Smile2014
加油↖(^ω^)↗,smile....
展开
-
spring cloud中微服务调用出现 Can not parse date while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSS问题
最近在使用spring cloud开发微服务,在测试A服务调用B服务过程中出现了下面的异常: Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Can not deserialize value of ty...原创 2018-04-04 16:59:34 · 21697 阅读 · 0 评论 -
使用spring+html5实现安全传输随机数字密码键盘
随着互联网的飞跃式发展,移动支付已经越来越受欢迎并且已成为常态,很多三方公司推出了很多支付方式,比如快捷支付、认证支付、扫码支付等等。快捷支付和认证支付可以分为移动app控件和移动HTML5网页。在用户第一次使用快捷支付和认证支付进行支付的时候,需要先绑定银行卡在绑定银行卡的过程,需要对银行卡信息的验证,不同的银行、不同的银行卡验证的要素不一样,有些需要验证四要素,有的需要验证八要素。对于需要要验证银行卡的交易密码,那么怎样保证交易密码的安全不被别人所窃取呢?所以出现了安全传输随机数字密码键盘。原创 2016-09-08 17:26:57 · 6180 阅读 · 5 评论 -
小小的session配置,说不定会影响你的web项目性能
以前公司做了一个web项目。发布以后,随着访问量的逐渐增大,发现JVM的内存使用比较多,full gc比较频繁,而且full gc后old区的大小变化不大。刚开始以为是JVM虚拟机的各项参数配置的不合理,我们就对JVM虚拟机的参数进行调整,调整后发现GC还是非常的频繁。funll GC频繁非常影响性能,我们把jvm的heapdump( Java 堆栈的快照)文件导出来,采用IBM HeapAnalyzer 的分析工具进行分析。经过分析发现堆中存在很多session对象。这些session对象占用空间原创 2016-08-17 11:31:11 · 2502 阅读 · 0 评论 -
常用正则表达式语法
在实际开发中,不管使用java、C++、PHP、Object C、js以及各种脚本语言等等都无法避免使用正则表达式。有了正则表达式,使得我们对数据的判断更加的灵活和方便。下面分享常用的正则表达式语法,希望对大家有所帮助:字符说明\将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n”匹配字符“n”。“\n原创 2016-08-01 10:54:56 · 787 阅读 · 0 评论 -
降低Java垃圾回收开销的5条建议
保持GC低开销的窍门有哪些?随着一再拖延而即将发布的 Java9,G1(“Garbage First”)垃圾回收器将被成为 HotSpot 虚拟机默认的垃圾回收器。从 serial 垃圾回收器到CMS 收集器, JVM 见证了许多 GC 实现,而 G1 将成为其下一代垃圾回收器。随着垃圾收集器的发展,每一代 GC 与其上一代相比,都带来了巨大的进步和改善。parallel GC 与 serial GC 相比,它让垃圾收集器以多线程的方式工作,充分利用了多核计算机的计算能力。CMS(“Concurren转载 2016-08-15 15:57:29 · 2191 阅读 · 2 评论 -
使用java实现多种方式解决图片压缩的问题
前端时间在使用对图片加水印后,由于需加水印的图片的宽度和高度都非常的大,加了水印后图片从几百KB,变成了几MB,严重影响了图片在页面的加载速度!经过仔细的琢磨,决定先对图片进行压缩,再加水印。采用这种方式户,图片占用的空间没多大变化。下面对压缩的代码的分享 一、采用指定宽度、高度或压缩比例 的方式对图片进行压缩 方法: /** * 采用指定宽原创 2016-07-18 17:20:18 · 30884 阅读 · 9 评论 -
腾讯云cos对象存储服务文件上传api就是一个大坑
一、介绍对象存储服务(Cloud Object Service)是基于腾讯多年海量服务经验,对外提供的可靠、安全、易用的海量存储服务。提供多样化接入方式,以及全国部署的上传加速集群,可以无缝衔接CDN进行加速下载。二、cos 文件上传api源码/** * 单个文件上传,适用于小文件 * * @param bucketName *原创 2016-07-07 10:46:20 · 41366 阅读 · 18 评论 -
Spring中你不知道的注入方式
在实际的应用中,某个实例的属性值可以是某个方法的返回值,或者类的Field值,或者属性值,Spring同样支持这种非常规的注入方式。本文将逐一介绍。部分内容来自书籍。转载 2016-07-26 16:51:03 · 1283 阅读 · 5 评论 -
身为大神的你知道为什么Java要把字符串设计成不可变的嘛!
String是Java中一个不可变的类,他一旦被实例化就无法被修改。不可变类的实例一旦创建,其成员变量的值就不能被修改,不可变类有很多优势。 这些大家都知道,那大家知道为什么JAVA的设计者要把它设计成一个不可变的类嘛, 下面讲给大家进行讲解。字符串池字符串池是方法区中的一部分特殊存储。当一个字符串被被创建的时候,首先会去这个字符串池中查找,如果找到,直接返回对该字符串的引转载 2016-07-01 15:13:24 · 4309 阅读 · 11 评论 -
8张图让你轻轻松松理解Java的各种特性
这篇文章我是在其它网站看到的,感觉写的很好,图片也描述的比较形象,根据图能够非常轻松的理解JAVA的异常、集合、同步、堆栈、JVM等各种特性。下面是转载的文章内容:一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选。如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟。1、字符串不变性下面这张图展示了这段代码做转载 2016-06-30 14:51:22 · 1456 阅读 · 3 评论 -
金融、支付行业的开发者不得不知道的float、double计算误差问题
在大多数行业涉及到浮点数的计算的场景比较少,但是在金融、支付行业就比较多了,而且在这两个行业一个小小的错误可能将会给公司带来极大的损失。在浮点运算中,浮点运算很少是精确的。虽然一些数字(譬如 0.5 )可以精确地表示为二进制(底数 2)小数(因为 0.5 等于 2 -1),但其它一些数字(譬如 0.1 )就不能精确的表示。因此,浮点运算可能导致舍入误差,产生的结果接近但不等于你可能希望的结果。原创 2016-08-08 20:29:19 · 7069 阅读 · 4 评论 -
java实现斜水印铺满整张图
今天遇到一个需求对上传的图铺满水印,在网上找了半天都是在指定位置设置水印,下面代码是我通过在网上找的代码,然后改造而成的。我们先看一下效果图下面讲实现方法:第一步:使用ps或美图软件设计水印图片,比如:第二步:把下面代码放入类中:package org.platform.framework.commons.util;import java原创 2016-06-25 23:24:14 · 12789 阅读 · 8 评论 -
使用apache log解决高并发下log4j引起大量线程block问题
由于项目用户量比较大,测试同事采用两百并发进行测试,在测试查过程中,查看jvm 虚拟机发现很多java.lang.Thread.State: BLOCKED (on object monitor) at org.apache.log4j.Category.callAppenders(Category.java:204)问题原创 2016-09-01 17:21:15 · 19615 阅读 · 5 评论 -
使用缓存cache 的大坑
这段时间发现系统取数据过程中,偶尔出现取数据错乱的问题,按逻辑应该取出A数据,结果取出了B数据。仔细检查了代码,发现代码逻辑没有问题,瞬间就蒙了,是哪里出现问题了呢。仔细想了一下,以前都没出现问题,自从加了缓存之后就偶尔出现了问题,那肯定问题是缓存有问题。原创 2017-05-18 11:48:46 · 4507 阅读 · 9 评论 -
JVM垃圾回收全景图
虽然只是张图片,但是简洁明了的描述了各种jvm回收器的特点、使用的场景及优点。转载 2017-01-22 11:43:23 · 1812 阅读 · 2 评论 -
在spring mvc项目中实现登录账号单浏览器登录
在很多web产品中都需要实现在同一时刻,只能允许一个账号同时只能在一个浏览器当中登录。通俗点讲就是当A账号在浏览器1当中登录了,此时在浏览器2中登录A账号。那么在浏览器1中的A账号将会被挤出去,当用户操作浏览器1的页面,页面会跳到登录页面,需要重新登录。那么我们怎么实现这样的功能呢?原创 2016-08-22 16:10:24 · 10835 阅读 · 9 评论 -
java金钱处理方法收集
在支付行业中,涉及到对金钱的处理比较多。比如分转化成元、费率计算、手续费计算等等。原创 2017-01-20 13:47:24 · 2823 阅读 · 0 评论 -
收集的java问题和技巧
下面的java编程的问题和技巧,部分是自己遇到的问题和总结,部分是自己在网上看到的有意思的问题。本篇文章内容将会不断的对自己收集的问题和技巧进行更新。1).List遍历过程中删除元素推荐做法使用Iterator遍历,但是不用list来remove。代码如下:List list = new ArrayList(); list.add(1); list.add(2); list.add(2);原创 2016-09-20 14:00:01 · 2228 阅读 · 0 评论 -
使用zxing解析二维码图片
使用zxing技术,通过图片地址和传图片BufferedImage的方式解析二维码图片,并把解析结果返回。原创 2016-12-19 17:08:02 · 2374 阅读 · 2 评论 -
使用zxing批量生成二维码立牌
使用zxing批量在做好的立牌背景图的指定位置上,把指定的文本内容(链接地址、文本等)生成二维码并放在该位置,最后加上立牌编号。原创 2016-12-14 16:36:41 · 5284 阅读 · 14 评论 -
JAVA进程高CPU占用故障排查
JAVA进程高CPU占用故障排查:在线上怎样结合linux命令和JDK工具定位问题。转载 2016-11-11 14:37:20 · 3463 阅读 · 3 评论 -
使用RSA、MD5对参数生成签名与验签
在日常的工作中,我们对外提供的接口或调用三方的接口往往有一步生成签名或验签的步骤,这个步骤主要是验证调用方是不是合法的以及内容是否被修改。比如:对于某些网上公开下载的软件,视频,尤其是镜像文件。如果被修改了可能会导致用不了或者其他的问题,发布者镜像MD5算法计算一组数值。让下载的用户进行MD5数值对比,也就是MD5校验啦。由于MD5加密不可逆算,如果数值一样,那就表示文件没被修改的。反之,则被修改。原创 2016-08-05 16:55:33 · 25120 阅读 · 3 评论 -
实现使用3des在页面js加密,后台java解密
前段时间根据功能的需要,需在页面对用户提交的表单数据采用3des加密,然后提交到后台。之前在网上通过百度、谷歌搜索了很久,虽然找到了很多的资料,但是总有各种问题。要嘛是js加密后,后台不能解密,要嘛是部分数据后台java代码解密失败。原创 2015-12-04 12:02:22 · 8588 阅读 · 11 评论 -
java常用的几种线程池比较
一:newCachedThreadPool (1)缓存型池子,先查看池中有没有以前建立的线程,如果有,就reuse,如果没有,就建立一个新的线程加入池中; (2)缓存型池子,通常用于执行一些生存周期很短的异步型任务;因此一些面向连接的daemon型server中用得不多; (3)能reuse的线程,必须是timeout IDLE内的池中线程,缺省转载 2015-12-02 20:20:19 · 7644 阅读 · 3 评论 -
剖析java.lang.OutOfMemoryError: Java heap space产生原因及解决方法
解释: JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置。JVM在启动的时候会自动设置Heapsize的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。 可以利用JVM提供的-Xmn-Xms-Xmx等选项可进行设置。Heapsize的大小是YoungGeneration和TenuredGenerai转载 2015-11-04 17:11:39 · 2739 阅读 · 0 评论 -
剖析OutOfMemoryError: PermGen space产生原因及解决方法
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。OutOfMemoryError: PermGen ; 这一区域用于存放Class和Meta的信息。 产生原因: Class在被加载的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Col原创 2015-11-04 16:59:38 · 4275 阅读 · 0 评论 -
使用StringBuilder或StringBuffer代替string
很多时候,我们在开发项目过程中,我们常常涉及到对字符串的拼接。对于普通的开发者来说,常常使用+的方式进行拼接,例如:string str="abc";str=str+"cdefghjik"+"lmn";不知道大家是否这样使用过,当使用过程中想没想过创建了多少个string对象,因为在string对象内部是一个固定长度的字符数组。所以每次拼接的时候都会创建一个新的string对象。所以采用这样原创 2015-09-07 22:43:01 · 2676 阅读 · 1 评论 -
重载tostring()方法重要性
以前知道继承于object的类都有这个toString方法,重来没在项目中使用过这方法,同时也没对该方法进行重载。在现在这个公司上班,才知道了toString方法的重要性。而且也懂得了重载tostring方法的必要性。那么toString方法有哪些用呢,以下是我总结的几个用处吧。而且这几个用处对我来说是挺有帮助的。1.在需要大量日志输出的系统中重载toString()方法是非常原创 2015-08-22 23:07:29 · 3272 阅读 · 1 评论 -
spring mvc框架中创建验证码
在spring mvc框架中的公共控制器中创建验证码,并把验证码放入session,并返回图片流/*** 创建验证码* * @throws Exception*/@RequestMapping(value = "/common/createCode", method = RequestMethod.GET)public void createCode(HttpServl原创 2015-08-05 22:11:40 · 1269 阅读 · 0 评论 -
计算两个时间之间相隔天、小时、分、秒
/*** * @Description: 获取两个时间相差的天,时,分,秒* @param str1 时间1* @param str2 时间2 *@ param formmat 时间格式* @return* */public static String differTime(String str1, String str2,String formmat) {原创 2015-08-05 08:42:28 · 2276 阅读 · 0 评论 -
对spring默认的单列模式的理解
我想大部分朋友对spring的单例模式都比较了解。什么叫单例模式呢,顾名思义就是不管有多少个请求,都只生成一个实例。比如在spring中a,b请求都在调用相同的bean ,他们都是调用的同一个bean,而不会为这两个请求都分配一个不同的实例。那么两个请求都调用的同一个实例,那么就容易出现同步问题。这个同步问题主要出现在该实例的各种变量上。当我们a请求调用方法A,对变量a进行操作,b请求原创 2015-08-11 23:00:48 · 2472 阅读 · 0 评论 -
定义系统级别的异常代替接口、类中方法处理失败的信息返回
以前编写代码时,不喜欢在方法中抛出异常。喜欢不管操作成功或失败都喜欢返回结果。按道理这样是没问题的。但是现实的实际项目中业务逻辑层和业务控制层中的逻辑是非常复杂的,往往在这里面会调用其它很多的接口。在调用这些结果往往会对数据处理失败就会停止执行返回错误信息到上一级。按照返回结果的方式的话,就会在每一层代码中有很多的判断,尤其那种需要返回一个对象(比如User)的方法,如果在这个方法中出现错误,我们原创 2015-08-23 22:22:07 · 2475 阅读 · 0 评论 -
Java个人习惯用法总结
1.使用StringBuilder或StringBuffer代替string 不要像这样使用重复的字符串连接:s += item ,因为它的时间效率是O(n^2)。 使用StringBuilder或者StringBuffer时,可以使用append()方法添加文本和使用toString()方法去获取连接起来的整个文本。 优先使用StringBuilde原创 2015-07-15 21:31:46 · 987 阅读 · 0 评论 -
在IE、fixfox、chrome等浏览器中ajax提交成功后,打开新标签页面被浏览器拦截问题
最近做了一个项目,在项目中涉及到先向后端发送ajax请求,根据ajax返回的结果来觉得是否跳转。刚开始我是这样做的。代码如下:提交的表单: 执行的js脚本:$.ajax({ type : 'post', url : "/pay/pay.do", data : { payChannel:payCha原创 2015-09-16 21:42:40 · 3372 阅读 · 1 评论 -
把list数据转化成easy ui树标签能够识别的json字符串
首先list的object对象必须是包含父id属性的对象,如本文的function,下面就给大家分享怎样实现。function类的代码如下:/** * * @ClassName: Function * @Description: 权限功能树 * @date 2015年9月16日 上午11:07:32 * */public class Function { private原创 2015-09-16 21:57:25 · 1633 阅读 · 1 评论 -
剖析Java同步块synchronized及常用使用方法
Java 同步块(synchronized block)用来标记方法或者代码块是同步,避免线程的资源竞争和数据的不一致问题。 Java中的同步块用synchronized标记。同步块在Java中是同步在某个对象上。所有同步在这个对象上的同步块在同一时刻只能被一个线程进入并执行操作。其它对该对象的同步块的线程将被阻塞,直到执行该同步块中的线程执行完成退出。接下来介绍同原创 2015-11-07 22:11:01 · 1386 阅读 · 0 评论 -
不得不看的Java代码性能优化总结
前言代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考转载 2015-11-30 15:19:24 · 8844 阅读 · 9 评论 -
解决java读取大文件内存溢出问题、如何在不重复读取与不耗尽内存的情况下处理大文件
1、传统的在内存中读取读取文件行的标准方式是在内存中读取,Guava 和Apache Commons IO都提供了如下所示快速读取文件行的方法:123Files.readLines(newFile(path), Charsets.UTF_8); FileUtils.readLines(new转载 2015-11-19 15:50:14 · 16040 阅读 · 5 评论 -
Java并发编程:深入剖析ThreadLocal
有多年编程经验的软件行业艺术家们应该都知道ThreadLocal。ThreadLocal很多地方叫做线程本地变量,也有些地方叫做线程本地存储。通俗的讲ThreadLocal可以让创建的变量只被同一个线程进行读和写操作。所以尽管有两个线程同时执行一段相同的代码,而且这段代码都指向同一个ThreadLocal变量的引用,但是这两个线程依然不能看到彼此的ThreadLocal变量域。Th原创 2015-10-31 20:35:34 · 1403 阅读 · 0 评论 -
spring事务常见问题、异常分析和解决方法
1.spring事务超时transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException; 可能原因1:spring事务设置的时间比较短。 解决方法:把spring事务设置长一点,如果事务中有很多复杂的查询及更新原创 2015-10-31 19:48:09 · 6987 阅读 · 0 评论