Mr_Smile2014的博客

Mr_Smile2014的博客
私信 关注
Mr_Smile2014
码龄6年

加油↖(^ω^)↗,smile....

  • 742,707
    被访问量
  • 82
    原创文章
  • 9,669
    作者排名
  • 276
    粉丝数量
  • 于 2015-07-14 加入CSDN
获得成就
  • 博客专家认证
  • 获得700次点赞
  • 内容获得383次评论
  • 获得125次收藏
荣誉勋章
兴趣领域
  • #大数据
    #数据仓库
TA的专栏
  • Tomcat源码分析
    2篇
  • 分布式与集群
    17篇
  • web编程技巧与常见问题
    14篇
  • 移动端HTML5
    10篇
  • java常见问题
    18篇
  • web
    23篇
  • 并发编程
    7篇
  • JAVA
    46篇
  • 集群
    9篇
  • JAVA框架
    10篇
  • 设计模式
    2篇
  • mysql
    5篇
  • 问题集锦
    31篇
  • 项目体会
    6篇
  • redis
    2篇
  • 移动应用
    10篇
  • JVM
    7篇
  • 消息队列
    3篇
  • fastdfs文件系统
    8篇
在线交流
点击这里给我发消息 点击这里给我发消息
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

Tomcat源码分析之HostConfig.start方法解析

HostConfig是standedHost的生命周期状态的监听类,主要是根据监听状态进行相应的操作。今天我们主要讲start状态下,hostConfig的解析过程,大概的解析过程如下: 1.获取到start监听。lifecycleEvent(LifecycleEvent event)是具体的状态处理方法,在里面根据状态判断走具体的步骤,当状态为start时,将会调用start()方法。代码如下:public void lifecycleEven...
原创
91阅读
0评论
0点赞
发布博客于 8 月前

Tomcat源码分析之启动过程流程图

1.Tomcat启动过程流程图:2.Bootstrap.start()方法执行过程图:3.Tomcat处理请求过程:
原创
106阅读
1评论
1点赞
发布博客于 8 月前

路由器升级千兆后xshell连接局域网服务器很慢和连接linux服务器mysql很慢问题

        最近公司路由器升级成千兆后windows电脑xshell连接局域网linux服务器和使用Navicat连接mysql都很慢,刚开始以为是交换机还是使用百兆的原因,然后把交换机也升级了,还是不行。最后在网上查找了相关资料,找到了解决方法,如下:        1.检查网关是否正确。             1).通过grep GATEWAY /etc/sysconfig/networ...
原创
709阅读
0评论
0点赞
发布博客于 3 年前

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...
原创
18397阅读
0评论
8点赞
发布博客于 3 年前

使用google身份验证器实现动态密码验证java

使用google身份验证器实现动态密码验证
rar
发布资源于 4 年前

使用google身份验证器实现动态密码验证java demo

使用google身份验证器实现动态密码验证,采用JAVA语言。包含客户端和服务端key的生成和app动态口令的验证
rar
发布资源于 4 年前

使用google身份验证器实现动态口令验证

google身份验证器的原理是什么呢?客户端和服务器事先协商好一个密钥K,用于一次性密码的生成过程,此密钥不被任何第三方所知道。此外,客户端和服务器各有一个计数器C,并且事先将计数值同步。进行验证时,客户端对密钥和计数器的组合(K,C)使用HMAC(Hash-based Message Authentication Code)算法计算一次性密码,公式如下:HOTP(K,C) = Truncate(HMAC-SHA-1(K,C))
原创
29792阅读
27评论
9点赞
发布博客于 4 年前

redis哨兵模式使用lua脚本实现分布式锁

spring redis和redis包在设置key值的时候,都是先调用setnx设置值,成功就返回1,然后通过Expire设置超时时间,这样会出现一个问题假如setnx成功,但是expire的时候,失败了,那么该值就会一直存在,这样会造成大的问题,这个问题怎么解决呢?我们可以通过redis lua脚本,让设置值和设置超时时间在redis服务端一次执行,就不会造成前面描述的问题。下面是实现分布式锁的
原创
3806阅读
1评论
1点赞
发布博客于 4 年前

在div中显示图片的指定区域的图像方法

用CSS控制,这是比较常用的方法:CSS代码: .i{ background-image: url("/images/icon.png"); background-position:-26px -79px; } DIV代码:效果:
原创
4212阅读
1评论
1点赞
发布博客于 4 年前

使用缓存cache 的大坑

这段时间发现系统取数据过程中,偶尔出现取数据错乱的问题,按逻辑应该取出A数据,结果取出了B数据。仔细检查了代码,发现代码逻辑没有问题,瞬间就蒙了,是哪里出现问题了呢。仔细想了一下,以前都没出现问题,自从加了缓存之后就偶尔出现了问题,那肯定问题是缓存有问题。
原创
3761阅读
8评论
1点赞
发布博客于 4 年前

JVM垃圾回收全景图

虽然只是张图片,但是简洁明了的描述了各种jvm回收器的特点、使用的场景及优点。
转载
1674阅读
2评论
3点赞
发布博客于 4 年前

java金钱处理方法收集

在支付行业中,涉及到对金钱的处理比较多。比如分转化成元、费率计算、手续费计算等等。
原创
2510阅读
0评论
4点赞
发布博客于 4 年前

The method getTextContent() is undefined for the type Node解决方法(eclipse)

在使用org.w3c.dom.Node.getTextContent()出现了The method getTextContent() is undefined for the type Node的提示,产生原因在j2ee项目中的xml-apis.jar下的org.w3c.dom干扰了Java的类查找,所以我们只需要把jdk的优先级调整到它之前就可以了。
原创
3507阅读
0评论
3点赞
发布博客于 5 年前

使用zxing解析二维码图片

使用zxing技术,通过图片地址和传图片BufferedImage的方式解析二维码图片,并把解析结果返回。
原创
1861阅读
2评论
4点赞
发布博客于 5 年前

zxing解析二维码图片所需的javase.jar

zxing解析二维码图片所需的javase.jar
jar
发布资源于 5 年前

使用zxing批量生成二维码立牌

使用zxing批量在做好的立牌背景图的指定位置上,把指定的文本内容(链接地址、文本等)生成二维码并放在该位置,最后加上立牌编号。
原创
4862阅读
14评论
6点赞
发布博客于 5 年前

JAVA进程高CPU占用故障排查

JAVA进程高CPU占用故障排查:在线上怎样结合linux命令和JDK工具定位问题。
转载
3276阅读
3评论
9点赞
发布博客于 5 年前

java虚拟机(jvm)垃圾收集算法剖析

目前商业虚拟机的垃圾收集都采用“分代收集”算法,这种算法根据对象的存活周期把内存划分为“新生代”和“老年代”。然后根据不同的年代的特点采取不同的收集算法。在新生代中,由于每次minor GC都发现有很多对象死去,存活的非常少,因此采用复制算法。而老年代中对象存活率非常的高,而起没有额外的内存空间进行分配担保就采用“标记-清理”或“标记-整理”算法来进行回收。但是基本上使用的“标记-整理”算法,“标记-清理”算法使用非常的少。
原创
2142阅读
1评论
4点赞
发布博客于 5 年前

你知道JVM性能怎么调优吗?

系统崩溃前的一些现象:每次垃圾回收的时间越来越长,由之前的10ms延长到50ms左右,FullGC的时间也有之前的0.5s延长到4、5s;FullGC的次数越来越多,最频繁时隔不到1分钟就进行一次FullGC;年老代的内存越来越大并且每次FullGC后年老代没有内存被释放;之后系统会无法响应新的请求,逐渐到达OutOfMemoryError的临界值。
转载
2878阅读
1评论
7点赞
发布博客于 5 年前

使用jdk的jps、jstack工具检测代码问题,提高程序性能

今天给大家分享怎样利用jdk的jps和jstack工具结合定位代码的问题,提高程序的稳定性、健壮性和性能。通过jps命令查找到对应程序的进程,记录进程号,通过jstack命令把该进程号所在的程序的线程堆栈信息输出到文件,然后对文件里面的信息进行分析,找到原因并解决问题。
原创
3155阅读
1评论
5点赞
发布博客于 5 年前

Mysql报Got error 28 from storage engine错误问题

今天早上准备把数据库里面的表结构导出来,在执行sql的过程中报Got error 28 from storage engine错误如下图所示:根据报的错误的语义很明显发现时存储发生了问题,通过看磁盘发现0空间可以使用,那就很明显是空间不足导致的。问题原因:磁盘空间不足。
原创
2084阅读
0评论
4点赞
发布博客于 5 年前

收集的java问题和技巧

下面的java编程的问题和技巧,部分是自己遇到的问题和总结,部分是自己在网上看到的有意思的问题。本篇文章内容将会不断的对自己收集的问题和技巧进行更新。1).List遍历过程中删除元素推荐做法使用Iterator遍历,但是不用list来remove。代码如下:List list = new ArrayList(); list.add(1); list.add(2); list.add(2);
原创
2096阅读
0评论
5点赞
发布博客于 5 年前

fastdfs分布式文件系统之与dubbo整合实现分布式服务接口

fastdfs是开源的轻量级分布式文件系统,它提供了java版本的client api。通过client API可以实现对文件的上传、追加、下载、删除等功能。为了避免每个应用都配置fasdtfs参数、读取配置文件、调用client api获取trackerServer和StorageServer进行上传、下载、删除等操作及返回结果的处理。所以采用与dubbo整合,提供分布式服务接口,来简化其它服务和应用的文件操作处理,同时提高代码的复用性。
原创
8324阅读
5评论
7点赞
发布博客于 5 年前

fastdfs与dubbo整合实现分布式服务接口

fastdfs开源的轻量级分布式文件系统,它给我们提供了java版本的client api。通过该API可以实现对文件的上传、下载和删除。 为了避免每个应用都配置fasdtfs参数、读取配置文件,调用client api获取trackerServer、StorageServer然后再近些上传、下载 、删除等相关的调用和返回结果的处理。所以采用与dubbo整合,提供分布式服务接口,其它应用只需调用相应接口就可以了。
zip
发布资源于 5 年前

使用spring+html5实现安全传输随机数字密码键盘

随着互联网的飞跃式发展,移动支付已经越来越受欢迎并且已成为常态,很多三方公司推出了很多支付方式,比如快捷支付、认证支付、扫码支付等等。快捷支付和认证支付可以分为移动app控件和移动HTML5网页。在用户第一次使用快捷支付和认证支付进行支付的时候,需要先绑定银行卡在绑定银行卡的过程,需要对银行卡信息的验证,不同的银行、不同的银行卡验证的要素不一样,有些需要验证四要素,有的需要验证八要素。对于需要要验证银行卡的交易密码,那么怎样保证交易密码的安全不被别人所窃取呢?所以出现了安全传输随机数字密码键盘。
原创
5595阅读
5评论
6点赞
发布博客于 5 年前

fastdfs分布式文件系统之JAVA client工具类封装

工具类当中进行连接池的初始化及上传、下载、删除功能的实现并在spring配置文件中配置,生成对应的java bean 方便其它类访问。
原创
9106阅读
4评论
10点赞
发布博客于 5 年前

fastdfs分布式文件系统之TrackerServer连接池实现

公司使用fastdfs文件系统来存储文件和图片,为了避免每个系统都直接通过客户端直接访问fastdfs文件系统,所以我们做了一个dubbo服务。要实现图片上传、下载的服务或工程直接调用dubbo接口就可以了。为了提高性能对fastdfs文件系统TrackerServer写了个连接池,同时写了空闲连接是否可用的监测类。
原创
8761阅读
20评论
8点赞
发布博客于 5 年前

android支付宝客户端html5网页偶尔无法自动关闭问题

公司产品使用支付宝移动网页接口支付,当三方商户传入跳转地址,在支付宝页面支付成功后跳转到该地址,如果没传将会自动关闭页面。测试的时候在ios客户端上面可以,但是在android客户端上偶尔行偶尔不行。
原创
3521阅读
1评论
6点赞
发布博客于 5 年前

使用apache log解决高并发下log4j引起大量线程block问题

由于项目用户量比较大,测试同事采用两百并发进行测试,在测试查过程中,查看jvm 虚拟机发现很多java.lang.Thread.State: BLOCKED (on object monitor) at org.apache.log4j.Category.callAppenders(Category.java:204)问题
原创
16647阅读
5评论
4点赞
发布博客于 5 年前

在高并发的情况下小小的日志打印会严重影响到性能。

程序的性能与日志的输出内容及输出到控制台、文件的格式有非常重要的影响。下面将给大家讲解是怎么影响的。
原创
11875阅读
2评论
8点赞
发布博客于 5 年前

百度钱包ios移动端html5网页无法自动关闭问题

我们公司最近在做百度钱包的移动网页支付的一款产品,产品使用场景是当用户通过百度钱包扫描我们的产品的二维码,进入我们的产品中,然后用户选择商品并点击购买,然后在我们系统后台生成订单并提交信息到百度钱包进行支付,当支付完成后我们系统页面会自动的关闭。这个功能在android手机上面可以,但是在ios上面无法关闭。
原创
2262阅读
1评论
4点赞
发布博客于 5 年前

在spring mvc项目中实现登录账号单浏览器登录

在很多web产品中都需要实现在同一时刻,只能允许一个账号同时只能在一个浏览器当中登录。通俗点讲就是当A账号在浏览器1当中登录了,此时在浏览器2中登录A账号。那么在浏览器1中的A账号将会被挤出去,当用户操作浏览器1的页面,页面会跳到登录页面,需要重新登录。那么我们怎么实现这样的功能呢?
原创
10470阅读
9评论
11点赞
发布博客于 5 年前

小小的session配置,说不定会影响你的web项目性能

以前公司做了一个web项目。发布以后,随着访问量的逐渐增大,发现JVM的内存使用比较多,full gc比较频繁,而且full gc后old区的大小变化不大。刚开始以为是JVM虚拟机的各项参数配置的不合理,我们就对JVM虚拟机的参数进行调整,调整后发现GC还是非常的频繁。funll GC频繁非常影响性能,我们把jvm的heapdump( Java 堆栈的快照)文件导出来,采用IBM HeapAnalyzer 的分析工具进行分析。经过分析发现堆中存在很多session对象。这些session对象占用空间
原创
2297阅读
0评论
4点赞
发布博客于 5 年前

降低Java垃圾回收开销的5条建议

保持GC低开销的窍门有哪些?随着一再拖延而即将发布的 Java9,G1(“Garbage First”)垃圾回收器将被成为 HotSpot 虚拟机默认的垃圾回收器。从 serial 垃圾回收器到CMS 收集器, JVM 见证了许多 GC 实现,而 G1 将成为其下一代垃圾回收器。随着垃圾收集器的发展,每一代 GC 与其上一代相比,都带来了巨大的进步和改善。parallel GC 与 serial GC 相比,它让垃圾收集器以多线程的方式工作,充分利用了多核计算机的计算能力。CMS(“Concurren
转载
2049阅读
2评论
5点赞
发布博客于 5 年前

spring mvc +HTML5实现移动端底部上滑异步加载更多内容分页效果

由于手机的携带的方便性和手机的越来越智能和移动网速越来越快,手机已经充斥着人们的生活。随着手机的流行,移动应用也快速的火了起来比如微商城、手机网页、移动APP等等。既然移动应用这么火,我们今天来讲一下怎样实现在移动网页中动态加载数据,那么我们怎么实现呢,是像pc网页那样,有个上一页和下一页还是其它的方式。其实像pc网页那样上一页和下一页肯定不行的,手机屏幕很小,不好点击同时用户体验很差,今天来给大家介绍使用spring mvc +HTML5实现移动端底部上滑异步加载更多内容分页效果的方式。
原创
12168阅读
7评论
6点赞
发布博客于 5 年前

金融、支付行业的开发者不得不知道的float、double计算误差问题

在大多数行业涉及到浮点数的计算的场景比较少,但是在金融、支付行业就比较多了,而且在这两个行业一个小小的错误可能将会给公司带来极大的损失。在浮点运算中,浮点运算很少是精确的。虽然一些数字(譬如 0.5 )可以精确地表示为二进制(底数 2)小数(因为 0.5 等于 2 -1),但其它一些数字(譬如 0.1 )就不能精确的表示。因此,浮点运算可能导致舍入误差,产生的结果接近但不等于你可能希望的结果。
原创
6069阅读
4评论
8点赞
发布博客于 5 年前

synchronized与ReentrantLock的介绍、使用、适合场景及比较

JDK 5.0为开发人员开发高性能的并发应用程序提供了一些很有效的新选择,目前存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,ReentrantLock是Lock的实现。在实际的工作中,大家对synchronized和ReentrantLock都使用的比较多,今天对这两种锁机制进行了总结并分享给各位朋友们,希望对大家有所帮助。
原创
7073阅读
2评论
7点赞
发布博客于 5 年前

使用RSA、MD5对参数生成签名与验签

在日常的工作中,我们对外提供的接口或调用三方的接口往往有一步生成签名或验签的步骤,这个步骤主要是验证调用方是不是合法的以及内容是否被修改。比如:对于某些网上公开下载的软件,视频,尤其是镜像文件。如果被修改了可能会导致用不了或者其他的问题,发布者镜像MD5算法计算一组数值。让下载的用户进行MD5数值对比,也就是MD5校验啦。由于MD5加密不可逆算,如果数值一样,那就表示文件没被修改的。反之,则被修改。
原创
22875阅读
3评论
9点赞
发布博客于 5 年前

使用RSA、MD5对参数生成签名及接收方验签

使用RSA、MD5对参数生成签名及接收方验签
zip
发布资源于 5 年前

使用RSA、MD5对参数生成签名与验签

使用RSA、MD5对参数生成签名与验签
zip
发布资源于 5 年前

Fastdfs分布式文件系统之文件同步机制

从fastdfs文件系统结构中我们可以看出不管是上传文件、删除文件、修改文件及新增storager server,文件的同步都是同组内多台storager server之间进行的;tracker server的配置文件中没有出现storage server,而storage server的配置文件中会列举出所有的tracker server。这就决定了storage server和tracker server之间的连接由storage server主动发起,storage server为每个track
原创
9423阅读
1评论
6点赞
发布博客于 5 年前

百度糯米app中关闭网页或窗口的方法,99%的人都不知道,网上也找不到

前端时间我们公司做了一款使用百度钱包的移动网页支付进行支付的产品,用户通过百度钱包、百度糯米扫描我们产品的二维码,选择商品,点击支付将会自动调用百度钱包进行支付,支付成功后返回成功页面,在我们的成功页面有关闭网页按钮,点击关闭按钮或者返回按钮将会关闭页面
原创
3423阅读
1评论
3点赞
发布博客于 5 年前

fastdfs分布式文件系统文件上传、下载、删除交互过程讲解

fastdfs中的工程流程:首先客户端client 调用fastdfs的api,获取可用的tracker server ,再调用tracker server 获取可用的组,tracker server 通过负载均衡返回一个最优的storage server,这样客户端与client就建立了连接,client就可以调用storage server对文件进行上传、删除和追加的操作。
原创
9910阅读
5评论
6点赞
发布博客于 5 年前

fastdfs分布式文件系统之tracker server介绍

tracker server是FastDFS文件系统的协调者,其主要作用是负载均衡和调度。Tracker server在内存中记录分组和Storage server的状态等信息,不记录文件索引信息,占用的内存量很少。另外,客户端(应用)和Storage server访问Tracker server时,Tracker server扫描内存中的分组和Storage server信息,然后给出应答。由此可以看出Tracker server非常轻量化,不会成为系统瓶颈。
原创
5439阅读
1评论
7点赞
发布博客于 5 年前

fastdfs分布式文件系统之Storage server介绍

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器(tracker)主要做调度工作,就像公交车站里面的调务员一样,它负责通过负载均衡选出最优的存储节点(storage)。存储节点(storage)顾名思义就是负责存储、数据同步、数据的操作的一个服务。
原创
3790阅读
1评论
4点赞
发布博客于 5 年前

【好文推荐】Spring中ApplicationContext的事件机制

ApplicationContext事件机制是观察者设计模式的实现,通过ApplicationEvent类和ApplicationListener接口,可以实现ApplicationContext事件处理。如果容器中有一个ApplicationListener Bean,每当ApplicationContext发布ApplicationEvent时,ApplicationListener Bean将自动被触发。
转载
1406阅读
1评论
4点赞
发布博客于 5 年前

fastdfs分布式文件系统概述

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
原创
1496阅读
1评论
4点赞
发布博客于 5 年前

【好文推荐】并发性能优化 : 降低锁粒度

在高负载多线程应用中性能是非常重要的。为了达到更好的性能,开发者必须意识到并发的重要性。当我们需要使用并发时, 常常有一个资源必须被两个或多个线程共享。
转载
2002阅读
2评论
4点赞
发布博客于 5 年前

工作中比较实用的js验证和数据处理的干货

在开发web项目的时候,难免遇到各种对网页数据的处理,比如对用户在表单中输入的电话号码、邮箱、金额、身份证号、密码长度和复杂程度等等的验证,以及对后台返回数据的格式化比如金额,返回的值为null,还有对指定日期之前或之后某一天或某一月的计算。遇到需要对数据及表单验证的,我相信大家都像我一样,喜欢在网上找相关的方法,因为自己写的话,是比较耗时的。今天就给大家分享一下,自己在工作中总结的一些常
原创
3242阅读
4评论
7点赞
发布博客于 5 年前

常用正则表达式语法

在实际开发中,不管使用java、C++、PHP、Object C、js以及各种脚本语言等等都无法避免使用正则表达式。有了正则表达式,使得我们对数据的判断更加的灵活和方便。下面分享常用的正则表达式语法,希望对大家有所帮助:字符说明\将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n”匹配字符“n”。“
原创
694阅读
0评论
5点赞
发布博客于 5 年前

在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口

最近在使用微信、支付宝、百度钱包实现网页支付,对支付成功将自动关闭页面,对于支付失败,将显示错误信息。当在错误页面的时候,点击返回或者Android物理按键上一步的时候,将关闭页面。在微信、支付宝、百度钱包中,他们对页面关闭进行了封装,传统的window.close()是无效的,必须要使用它们的js代码才能关闭。下面是三种移动app的关闭方式:WeixinJSBri
原创
8581阅读
4评论
9点赞
发布博客于 5 年前

很多人都不知道的监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法

在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回、后退、上一页等按钮实现自己的关闭页面、调整到指定页面或执行一些其它操作的需求,那在代码中怎样监听当点击微信、支付宝、百度糯米、百度钱包等app的返回按钮或者浏览器的上一页或后退按钮的事件呢。我相信很多朋友像我一样,在百度、搜狗里面搜索很久都没找到方法。下面就来告诉大家怎样监听的方法:首先我们要了解浏览器的h
原创
53177阅读
37评论
17点赞
发布博客于 5 年前

Spring中你不知道的注入方式

在实际的应用中,某个实例的属性值可以是某个方法的返回值,或者类的Field值,或者属性值,Spring同样支持这种非常规的注入方式。本文将逐一介绍。部分内容来自书籍。
转载
1174阅读
5评论
6点赞
发布博客于 5 年前

在windows、linux中开启nginx的Gzip压缩大大提高页面、图片加载速度

为了降低tomcat服务的压力,把页面上的图片采用windows版的nginx进行加载,由于有些图片比较大,加载特别的慢,所以在nginx中打开了gzip的压缩功能。加载图片的速度快了很多。通过站长工具中的"网页GZIP压缩检测"工具检测图片的压缩率达到了69.53%,如下图:下面介绍nginx.conf文件是怎么配置的:1、打开nginx.co
原创
6731阅读
9评论
7点赞
发布博客于 5 年前

使用java实现多种方式解决图片压缩的问题

前端时间在使用对图片加水印后,由于需加水印的图片的宽度和高度都非常的大,加了水印后图片从几百KB,变成了几MB,严重影响了图片在页面的加载速度!经过仔细的琢磨,决定先对图片进行压缩,再加水印。采用这种方式户,图片占用的空间没多大变化。下面对压缩的代码的分享 一、采用指定宽度、高度或压缩比例 的方式对图片进行压缩 方法:         /** * 采用指定宽
原创
30173阅读
9评论
14点赞
发布博客于 5 年前

腾讯云cos对象存储服务文件上传api就是一个大坑

一、介绍对象存储服务(Cloud Object Service)是基于腾讯多年海量服务经验,对外提供的可靠、安全、易用的海量存储服务。提供多样化接入方式,以及全国部署的上传加速集群,可以无缝衔接CDN进行加速下载。二、cos 文件上传api源码/** * 单个文件上传,适用于小文件 * * @param bucketName *
原创
35884阅读
18评论
12点赞
发布博客于 5 年前

身为大神的你知道为什么Java要把字符串设计成不可变的嘛!

String是Java中一个不可变的类,他一旦被实例化就无法被修改。不可变类的实例一旦创建,其成员变量的值就不能被修改,不可变类有很多优势。 这些大家都知道,那大家知道为什么JAVA的设计者要把它设计成一个不可变的类嘛, 下面讲给大家进行讲解。字符串池字符串池是方法区中的一部分特殊存储。当一个字符串被被创建的时候,首先会去这个字符串池中查找,如果找到,直接返回对该字符串的引
转载
4123阅读
11评论
7点赞
发布博客于 5 年前

8张图让你轻轻松松理解Java的各种特性

这篇文章我是在其它网站看到的,感觉写的很好,图片也描述的比较形象,根据图能够非常轻松的理解JAVA的异常、集合、同步、堆栈、JVM等各种特性。下面是转载的文章内容:一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选。如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟。1、字符串不变性下面这张图展示了这段代码做
转载
1299阅读
3评论
7点赞
发布博客于 5 年前

使用jquery.qrcode生成二维码及常见问题解决方案

一、jquery.qrcode.js介绍jquery.qrcode.js 是一个纯浏览器 生成 QRcode 的 jQuery 插件((可以从https://github.com/jeromeetienne/jquery-qrcode 获取)),它使用非常简单,生成的 QRcode 无需下载图片,并且不依赖第三方服务,插件压缩之后大小小于 4K。二、参数说明te
原创
40444阅读
20评论
15点赞
发布博客于 5 年前

移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)

前两天在开发在微信访问的HTML5页面,里面有个订单查询要选择时间,刚开始使用的输入框,没加任何的样式,效果是白色的背景再加上边框很丑,完全与整个背景不协调。刚开始设置了输入框背景色透明(background-color:transparent;),在ios上面背景色和边框都没有了,但是在andriod上边框和背景色还是存在。后来加上样式FILTER: alpha(opacity=
原创
28469阅读
8评论
8点赞
发布博客于 5 年前

java实现斜水印铺满整张图

今天遇到一个需求对上传的图铺满水印,在网上找了半天都是在指定位置设置水印,下面代码是我通过在网上找的代码,然后改造而成的。我们先看一下效果图下面讲实现方法:第一步:使用ps或美图软件设计水印图片,比如:第二步:把下面代码放入类中:package org.platform.framework.commons.util;import java
原创
11766阅读
8评论
9点赞
发布博客于 5 年前

nginx 代理https后,spring mvc web应用redirect https变成http

前几天用nginx 代理https后,应用redirect https变成http,导致网站无法访问的问题,在网上找了半天,终于找到了解决方法了。虽然自己解决了,我相信还有其他朋友遇到过这个问题,所以转载分享一下:原因分析:浏览器到nginx是https,nginx到应用服务器变成http,应用服务器,再做302 redirect的时候,返回的redirect 地址就好变成
转载
10639阅读
5评论
7点赞
发布博客于 5 年前

使用spring mvc+localResizeIMG实现HTML5端图片压缩上传

最近在做一个移动端HTML5的应用,使用到了上传功能,起初使用传统的上传方式上传手机拍照的照片,由于手机拍照出来的照片一般都是好几MB,所以上传速度是非常慢的。在网上找了很久找到了localResizeIMG压缩框架,感觉非常的实用,所以在此分享给大家。   第一步:下载localResizeIMGlocalResizeIMG放在github中的,地址是:https://g
原创
10899阅读
5评论
7点赞
发布博客于 5 年前

Java日志记录的5条规则

日志记录是在软件开发过程中常常需要考虑的关键因素。当产品运行出错时,日志文件通常是我们进行错误分析的首要选择。而且,在很多情况下,它们是我们手上唯一可以用来查明发生状况和问题根本原因的信息。可见,正确记录需要的信息是极其重要的。以下5条日志规则,让我们可以检查和改进在代码中操作日志记录的方式。同时也请注意,我们既不会讨论怎么配置一个日志引擎,也不会相互比较。
转载
3907阅读
2评论
9点赞
发布博客于 5 年前

采用nginx_upstream_jvm_route模块解决tomcat多节点session不一致问题

这种方式不需要修改web工程只需要对nginx下载nginx_upstream_jvm_route插件,修改tomcat和nginx配置,就能解决session问题。由于这种方式不会把session存储起来,所以当某tomcat节点挂掉之后就会造成用户需要重新登录的问题。思路:是通过对nginx里面每个参与访问的server都打上不同的标签值,这个值和tomcat的jvmRoute值相同。
原创
5089阅读
1评论
7点赞
发布博客于 6 年前

使用redis解决tomcat6在nginx负载下多节点共享session问题

使用redis共享tomcat多节点session,需要安装redis、nginx、tomcat6以及用于tomcat存储session到redis的jar包:tomcat-redis-session-manager-1.2-tomcat-6.jar、commons-pool-1.6.jar、jedis-2.1.0.jar等。这些jar包、配置文件及demo程序可以在最后的demo地址中下载。
原创
4464阅读
8评论
9点赞
发布博客于 6 年前

使用redis在nginx负载下tomcat6多节点共享session

使用redis,解决在nginx负载下tomcat6多节点共享session问题
zip
发布资源于 6 年前

web集群中常用的session同步解决方案及对比

随着网站的功能越来越多,用户量越来越庞大,单节点模式已经严重不能支撑整个系统的正常运作,轻则用户页面访问时间越来越慢,重则就会导致整个系统瘫痪。这时候就需要优化或调整目前的架构,大部分人就会采用各种负载均衡软件例如nginx、hproxy、LVS等,也有的采用分布式的方式把系统根据功能拆分成很多系统,也有的根据地域和网络不同来实现访问不同节点部署的系统,也有的大型高流量、高负载的系统把负载
原创
5373阅读
4评论
14点赞
发布博客于 6 年前

实现使用3des在页面js加密,后台java解密

前段时间根据功能的需要,需在页面对用户提交的表单数据采用3des加密,然后提交到后台。之前在网上通过百度、谷歌搜索了很久,虽然找到了很多的资料,但是总有各种问题。要嘛是js加密后,后台不能解密,要嘛是部分数据后台java代码解密失败。
原创
8019阅读
12评论
8点赞
发布博客于 6 年前

实现使用3des在页面js加密,后台java解密

实现使用3des在页面js加密,后台java解密
zip
发布资源于 6 年前

java常用的几种线程池比较

一:newCachedThreadPool       (1)缓存型池子,先查看池中有没有以前建立的线程,如果有,就reuse,如果没有,就建立一个新的线程加入池中;        (2)缓存型池子,通常用于执行一些生存周期很短的异步型任务;因此一些面向连接的daemon型server中用得不多;        (3)能reuse的线程,必须是timeout IDLE内的池中线程,缺省
转载
7312阅读
3评论
9点赞
发布博客于 6 年前

解决部分浏览器ajax提交数据,数据已改变,却后台数据接收数据还是上一次值的问题

最近在工作中遇到了QQ浏览器ajax提交数据,表单数据改变,却后台数据接收数据还是上一次值的问题,但是在其它浏览器中是正常的。代码如下:$.ajax({ url : "/secretkey/uploadKey", async:false, type : 'post', data : { merKey : $('#merKey').val(), keyType :
原创
4533阅读
3评论
8点赞
发布博客于 6 年前

不得不看的Java代码性能优化总结

前言代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考
转载
8393阅读
9评论
15点赞
发布博客于 6 年前

剖析js对浮点数运算精度问题

js对浮点数操作精度会出现什么问题呢?比如: 10-9.99 =?。按照常理10-9.99应该等于0.01,但是通过js操作后结果不是0.01而是0.0099999999999999...大家不信可以尝试一下。再比如0.7+0.1等于多少呢,按照常理应该等于0.8,而在js操作时,结果却是0.7999999999999999。那么我们该怎样解决这个问题呢?
原创
2590阅读
5评论
7点赞
发布博客于 6 年前

解决java读取大文件内存溢出问题、如何在不重复读取与不耗尽内存的情况下处理大文件

1、传统的在内存中读取读取文件行的标准方式是在内存中读取,Guava 和Apache Commons IO都提供了如下所示快速读取文件行的方法:123Files.readLines(newFile(path), Charsets.UTF_8); FileUtils.readLines(new
转载
15447阅读
5评论
8点赞
发布博客于 6 年前

个人整理的web开发中常用的表单验证的正则表达式JS

1.在input框中只能输入金额,其实就是只能输入最多有两位小数的数字 一种在input输入框限制 元 第二种对于表单动态增加的方式,只能在js方法中验证。 var amount=$("#amount").val(); if (amount.search(/^\d*(?:\.\d{0,2})?$/)==-1) { alert("金额格式不对,最多有两位小数");
原创
2832阅读
0评论
6点赞
发布博客于 6 年前

解决在Safari、IE高版本中采用自定义选择文件按钮ajaxFileUpload不能上传问题

在web页面中常常使用文件上传功能,如果在页面中使用默认的文件输入框和选择按钮,那么样式看起来很丑,而且不同的浏览器中样式不一样。所以很多开发人员喜欢把文件类型的输入框采用display:none隐藏了,采用自定义的输入框和选择按钮,这样看起来与页面整体风格比较统一而且美观。但是如果采用ajaxFileUpload异步进行上传的话,在Safari、IE高版本中就会上传失败。那么问题改怎么解决呢
原创
3914阅读
0评论
7点赞
发布博客于 6 年前

java中不同的ORM框架实现对数据库批量插入数据库的方式与技巧

1.jdbc方式中使用executeBatch实现JDBC中在做数据插入、更新、删除操作,可以使用executeBatch()方法减少数据库调用次数,如:Statement pstmt = conn.createStatement(); pstmt.addBatch("insert into settings values(3,'小米','女')"); pstmt.addBatch("
原创
2935阅读
1评论
8点赞
发布博客于 6 年前

深入理解volitale关键字

一、java内存模型与多线程编程中的三个感念1、原子性原子性是指一些操作或者全都执行,要么或者全都不执行,整个操作作为一个整体是不可分割的,例如,一个银行中有两个账户A,B,现在要从A账户中转账500元到B账户,那么一共可以分为两个步骤:1、从A账户取出500元:A = A - 500 ;2、向B账户存入500元:B = B + 50
转载
2238阅读
1评论
7点赞
发布博客于 6 年前

剖析怎样使用Spring的PropertyPlaceholderConfigurer占位符

1. PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是BeanFactoryPostProcessor接口的一个实现。PropertyPlaceholderConfigurer可以将上下文(配置文件)中的属性值放在另一个单独的标准java Properties文件中去。在XML文件中用${key}替换指定的properties文件中的值。这样的话,
转载
957阅读
0评论
6点赞
发布博客于 6 年前

剖析Java同步块synchronized及常用使用方法

Java 同步块(synchronized block)用来标记方法或者代码块是同步,避免线程的资源竞争和数据的不一致问题。 Java中的同步块用synchronized标记。同步块在Java中是同步在某个对象上。所有同步在这个对象上的同步块在同一时刻只能被一个线程进入并执行操作。其它对该对象的同步块的线程将被阻塞,直到执行该同步块中的线程执行完成退出。接下来介绍同
原创
1255阅读
0评论
6点赞
发布博客于 6 年前

剖析java.lang.OutOfMemoryError: Java heap space产生原因及解决方法

解释:   JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置。JVM在启动的时候会自动设置Heapsize的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。   可以利用JVM提供的-Xmn-Xms-Xmx等选项可进行设置。Heapsize的大小是YoungGeneration和TenuredGenerai
转载
2355阅读
0评论
6点赞
发布博客于 6 年前

剖析OutOfMemoryError: PermGen space产生原因及解决方法

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。OutOfMemoryError: PermGen ; 这一区域用于存放Class和Meta的信息。  产生原因:         Class在被加载的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Col
原创
3839阅读
0评论
6点赞
发布博客于 6 年前

Java并发编程:深入剖析ThreadLocal

有多年编程经验的软件行业艺术家们应该都知道ThreadLocal。ThreadLocal很多地方叫做线程本地变量,也有些地方叫做线程本地存储。通俗的讲ThreadLocal可以让创建的变量只被同一个线程进行读和写操作。所以尽管有两个线程同时执行一段相同的代码,而且这段代码都指向同一个ThreadLocal变量的引用,但是这两个线程依然不能看到彼此的ThreadLocal变量域。Th
原创
1260阅读
0评论
6点赞
发布博客于 6 年前

spring事务常见问题、异常分析和解决方法

1.spring事务超时transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException;   可能原因1:spring事务设置的时间比较短。   解决方法:把spring事务设置长一点,如果事务中有很多复杂的查询及更新
原创
6276阅读
0评论
7点赞
发布博客于 6 年前

自己整理的编码规范总结。(个人觉得很受用)

在很多人眼里面,我们写代码的就是码农,是屌丝。其实我们是艺术家,我们的艺术品就是代码。不知道有朋友和我有相同的看法。废话不多说,开始总结自己整理的一些编码规范:        1.在我们编写的每个类应该描写本类的作用,对于关系比较复杂的,我们应该描写清楚数据的存储过程。2.不管在接口类中方法描述的再详细,在我们的实现类的方法上都应该进行描述。这样其它人接手我们的项目时能够很
原创
1293阅读
0评论
8点赞
发布博客于 6 年前

spring事务(Transaction )报 marked as rollback-only异常的原因及解决方法

很多朋友在使用spring+hibernate或mybatis等框架时经常遇到报Transaction rolled back because it has been marked as rollback-only的异常,这个异常是怎么造成的呢,下面将给大家进行详细的分析。    这是专门写的一个造成该异常的代码:@Transactional public void add(Op
原创
78580阅读
12评论
11点赞
发布博客于 6 年前

数据库优化总结

以下是自己对数据库的一些总结,如果有错的地方,希望大家及时的提醒我。。。     1).对查询比较平凡的表中的列加索引;     2).对像数据字典类型的表我们可以在程序启动过程中就加载到非关系数据库。     3).对sql的优化:                         1.包含时间段的列的表,尽量每次查询都需把时间带上;                    
原创
1308阅读
3评论
6点赞
发布博客于 6 年前

ActiveMQ安装教程

ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。从设计上保证了高性能的集群,客户端-服务器,点对点。完全支持JMS1.1和J2EE1.4规范的JMSProvider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。一、下载ActiveMQ去官网下载:http://activemq.apache.org/download
原创
1522阅读
0评论
6点赞
发布博客于 6 年前

在项目中使用消息队列的 10 个理由

很多朋友觉得在项目中没必要使用消息队列。以前我也是这样认为,但是自己使用一段时间后以及自己的一些经历使得自己觉得有些时候是非常必要的。而且是必不可少的,尤其是在大型项目中和支付类的系统中。下面是我转载的一篇关于“使用消息队列的 10 个理由”。个人觉得写得非常好。   过去几年中,我们一直在使用、构建和宣传消息队列,我们认为它们是很令人敬畏的,这也不是什么秘密。我们相信对任何架构或
转载
2402阅读
0评论
6点赞
发布博客于 6 年前

把list数据转化成easy ui树标签能够识别的json字符串

首先list的object对象必须是包含父id属性的对象,如本文的function,下面就给大家分享怎样实现。function类的代码如下:/** * * @ClassName: Function * @Description: 权限功能树 * @date 2015年9月16日 上午11:07:32 * */public class Function { private
原创
1520阅读
1评论
6点赞
发布博客于 6 年前

在IE、fixfox、chrome等浏览器中ajax提交成功后,打开新标签页面被浏览器拦截问题

最近做了一个项目,在项目中涉及到先向后端发送ajax请求,根据ajax返回的结果来觉得是否跳转。刚开始我是这样做的。代码如下:提交的表单:                  执行的js脚本:$.ajax({ type : 'post', url : "/pay/pay.do", data : { payChannel:payCha
原创
3065阅读
1评论
6点赞
发布博客于 6 年前

使用StringBuilder或StringBuffer代替string

很多时候,我们在开发项目过程中,我们常常涉及到对字符串的拼接。对于普通的开发者来说,常常使用+的方式进行拼接,例如:string str="abc";str=str+"cdefghjik"+"lmn";不知道大家是否这样使用过,当使用过程中想没想过创建了多少个string对象,因为在string对象内部是一个固定长度的字符数组。所以每次拼接的时候都会创建一个新的string对象。所以采用这样
原创
1970阅读
1评论
7点赞
发布博客于 6 年前

定义系统级别的异常代替接口、类中方法处理失败的信息返回

以前编写代码时,不喜欢在方法中抛出异常。喜欢不管操作成功或失败都喜欢返回结果。按道理这样是没问题的。但是现实的实际项目中业务逻辑层和业务控制层中的逻辑是非常复杂的,往往在这里面会调用其它很多的接口。在调用这些结果往往会对数据处理失败就会停止执行返回错误信息到上一级。按照返回结果的方式的话,就会在每一层代码中有很多的判断,尤其那种需要返回一个对象(比如User)的方法,如果在这个方法中出现错误,我们
原创
2326阅读
0评论
6点赞
发布博客于 6 年前

重载tostring()方法重要性

以前知道继承于object的类都有这个toString方法,重来没在项目中使用过这方法,同时也没对该方法进行重载。在现在这个公司上班,才知道了toString方法的重要性。而且也懂得了重载tostring方法的必要性。那么toString方法有哪些用呢,以下是我总结的几个用处吧。而且这几个用处对我来说是挺有帮助的。1.在需要大量日志输出的系统中重载toString()方法是非常
原创
3047阅读
1评论
7点赞
发布博客于 6 年前

消息队列(message queue)产生的背景、常用的技术

消息队列是在消息的传输过程中保存消息的容器,消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。                   一、  产生背景:现今,越来越多的企业面临着各种各样的数据集成和系统整合,CORBA、DCOM、RMI等RPC中间件技术也应运而生,
原创
2942阅读
4评论
5点赞
发布博客于 6 年前

对spring默认的单列模式的理解

我想大部分朋友对spring的单例模式都比较了解。什么叫单例模式呢,顾名思义就是不管有多少个请求,都只生成一个实例。比如在spring中a,b请求都在调用相同的bean ,他们都是调用的同一个bean,而不会为这两个请求都分配一个不同的实例。那么两个请求都调用的同一个实例,那么就容易出现同步问题。这个同步问题主要出现在该实例的各种变量上。当我们a请求调用方法A,对变量a进行操作,b请求
原创
2293阅读
0评论
6点赞
发布博客于 6 年前

负载均衡软件HAProxy学习

一、介绍               HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护
原创
1255阅读
0评论
5点赞
发布博客于 6 年前

jvm的四种GC

java虚拟机有四种GC分别是:                      第一种为单线程GC,也是默认的GC。,该GC适用于单CPU机器。第二种为ThroughputGC,是多线程的GC,适用于多CPU,使用大量线程的程序。第二种GC与第一种GC相似,不同在于GC在收集Young区是多线程的,但在Old区和第一种一样,仍然采用单线程。-XX:+UseParallelGC参
原创
1421阅读
0评论
6点赞
发布博客于 6 年前

代理模式

一、概述                   自己不亲自做,找代理对象来实现,节约资源。                        比如我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被代理的人能干活呀。  二、结构示意图        三、买
转载
887阅读
0评论
6点赞
发布博客于 6 年前