普通
文章平均质量分 60
lance小码匠
go on
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
如何在Spring环境中进行单元测试
对一个Java开发人员来说,单元测试是我们编码过程中不可或缺的一部分了。单元测试让你关注软件的基本单元的正确性,可以在编码阶段就提前暴露代码缺陷;单元测试具有执行速度快、可复用性的特点;单元测试可以让你进行代码重构时更加从容。所以越是核心的代码,进行单元测试越有必要。很多人觉得单元测试很重要,但是很多人都做不好单元测试,尤其是在集成了spring框架的项目,很多人都不知道怎么方便快捷的进行单元测试。在集成了spring的项目中你是否有这样的困扰,每次执行一个test case你就必须等待spring容器加原创 2022-05-04 16:10:53 · 2080 阅读 · 0 评论 -
什么?ConcurrentHashMap居然有bug
是的你没有看错,JDK8版本的ConcurrentHashMap真的有bug,而且不止一个。作为最基础的集合类,我们有必要了解这些bug,让我们使用时能有意识的避开。话不多说,我们直入主题。ConcurrentHashMap有两个bug,这两个bug都和computeIfAbsent方法有关。如果对相同的key执行多次computeIfAbsent,每次都会加锁。如果对一个key嵌套执行computeIfAbsent,而嵌套执行的key的hash值刚好相同时会导致死循环。我们都知道compute原创 2022-04-06 11:46:09 · 1246 阅读 · 0 评论 -
iterm2跳板机自动登录脚本
前言现在要想访问公司服务器都必须通过跳板机再跳到目标服务器,这么做是运维人员为了安全性考虑和可以高效管理公司庞大的服务器集群。但是我们都知道安全性提高后必定降低我们日常工作的效率,必须先登录到跳板机,再选目标服务器,每次访问服务器都增加了半分钟的操作成本,作为最会偷懒的我来说写个跳板机自动登录脚本是非常必要的。expect 脚本我们可以用expect脚本来实现自动化交互任务,不需要人为干预。如果不用expect脚本我们登录跳板机需要人机交互来输入执行命令,而使用expect脚本可以根据程序提示模拟标准原创 2022-04-02 16:14:31 · 1796 阅读 · 0 评论 -
使用Jackson封装json序列化工具
大家都知道Jackson都是老牌的性能强劲的json序列化工具了,SpringMVC也是使用Jackson作为默认的序列化工具。我以前其实并不是使用Jackson而是国货之光–FastJson。本着支持国货,api简单的想法用了很长一段时间的FastJson,奈何国货不争气天天爆出安全漏洞,想着那些天大半夜爬起来升级版本的夜晚感动的流下了不争气的眼泪。。。。。所以没办法,转用稳定异常的Jackson的怀抱。但是Jackson有个不太友好的API使用,反正用起来就是没有FastJson的api调用来的方便,所原创 2020-08-08 23:50:14 · 710 阅读 · 0 评论 -
CentOS下部署javaWeb项目
# 在项目编码阶段结束,测试结束后就是项目部署了,一般都会将项目部署到更为稳定的Linux操作系统的服务器上,因为Linux的优秀特性,首先Linux是多用户多进程操作系统而Window则是单用户伪多用户不适合服务器。并且Linux下kernel panic几年一遇,也可以好几年不关机,一两年一次磁盘清理。接下来就好好说说在Linux下如何部署javaWeb项目。在部署javaWeb项目前需要在服原创 2016-06-19 17:32:56 · 1406 阅读 · 0 评论 -
自己写一个urlEncoder和urlDecoder
public class Escape { private final static String[] hex = { "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "10", "11", "12原创 2016-07-21 18:24:26 · 510 阅读 · 0 评论 -
使用token在服务器端避免表单的重复提交
原文章地址利用同步令牌来解决重读提交的基本原理1 用户访问包含表单的页面 服务器在这次会话中 创建一个session对象 并产生一个令牌值 将这个令牌值作为隐藏输入域值 随表单一起发送到客户端 同时将令牌值保存到session中2 用户提交页面 服务器端首先判断请求参数中的令牌值和Session中保存的令牌值是否相等 如果相等 则清楚session的令牌值 然后执行转载 2016-06-28 12:13:20 · 1922 阅读 · 0 评论 -
JDK8新特性--Stream
JDK8新特性--StreamJDK8StreamJDK每次更新都会让人惊讶不已,每次更新最主要的目的就是给开发人员提供更佳的开发编程体验,像JDK1.4以后提出的NIO将IO的方式从同步阻塞提升到了性能更佳的同步非阻塞方式。这次JDK1.8更新最大的亮点除了lamada表达式之外,还有极其惊艳的Stream。这里的Stream可不是IO里面的OutputStream或原创 2016-05-21 18:57:17 · 3303 阅读 · 0 评论 -
BIO、NIO、AIO
java到现在jdk1.8,已经经历了三代io,第一代也就是从jdk1.1到1.4使用的是BIO,BIO是select的,也就是同步阻塞的IO方式,到jdk1.4-1.7jdk采用全新的NIO,newIO是poll的,NIO是同步非阻塞的,而到了jdk1.7-1.8出现了AIO,而AIO使用的是epoll方式,该方式最大亮点就是异步非阻塞。同步和异步 同步异步说的是消息原创 2016-01-26 11:50:17 · 646 阅读 · 0 评论 -
使用原生HTML5上传文件
最近碰到个需求,需要使用js上传文件,一般上传文件都是使用表单,并为使用过js上传,这次在这记录一下。 之前网上说使用jquery插件jqueryajaxupload.js。用下来发现坑巨多,果断舍弃,换用原生的HTML5来做上传。具体思想就是创建一个FormData对象,将file标签的值设进formdata对象里面去,再使用xmlhttprequest上传,同时在xhr中添加监听器原创 2016-06-21 14:06:58 · 580 阅读 · 0 评论 -
使用intellj ide搭建spring+mybatis时无法识别mapper.xml文件
解决办法:往maven的pom.xml文件的下添加以下内容,原因是在编译的时候默认没有添加xml文件,所以需要加上以下内容 src/main/java **/*.xml src/main/resources **/*.*原创 2016-10-25 19:16:54 · 1987 阅读 · 0 评论 -
与spring结合的策略模式
策略模式是23种设计模式之一,客户端通过制定多个算法并且封装,使得不同场景可以使用不同的策略算法。使得程序降低了耦合提高代码的复用性。接下来通过一个简单的实例来说明在实战中如何使用(即使是业务逻辑也是可以用设计模式的)。例子很简单,就是通过同一个保存的service来做不同类型产品的保存。如下图:接下来看具体实现:BaseObj:public abstract class BaseObj imple原创 2017-04-05 18:58:29 · 5905 阅读 · 2 评论 -
elasticsearch5.x服务器搭建
引言之前与搜索有关的需求都是使用solrCloud实现的,最近公司在做日志监控的时候使用并没有用solr而是使用了好评更甚的elasticsearch。之前本来就一直想了解es,现在刚好有机会学习,特此记录下学习的过程。what is elasticsearchelasticsearch(以下使用缩写es代替)是一个基于lucene的分布式、近实时的全文搜索引擎。它还是一个分布式非关系型数据库,被e原创 2017-06-21 20:07:58 · 2165 阅读 · 0 评论 -
elasticsearch5.3.0 索引创建及查询
引言上篇文章介绍了elasticsearch5.3.0服务器搭建,接下来说说elasticsearch的java客户端对数据的索引创建和对数据的查询。虽说现在es的api使用文档不少,但是5.3.0版本的太新了,许多都不兼容老版本,所以有了这篇博文。elasticsearch允许HTTP Restful的方式进行数据访问和操作,也同样允许通过JAVA API来访问服务器,HTTP Restful方式原创 2017-06-30 16:49:59 · 1153 阅读 · 0 评论 -
记一次内存泄漏排查过程
引言最近公司一项目写完在进行压测,在压测过程中偶然top了几次,发现项目运行的进程占用的资源RES一直在缓慢增长。于是怀疑是存在内存泄漏。用通俗的话来讲内存泄漏是由于开发人员没有注意到内存管理,没有有效的进行内存回收导致的一部分内存无法被回收,同时在系统运行过程中会不断有新的相关内存占用,最终导致Out of Memory。这种情况在C++ programmer中是非常头疼的一件事,因为C++把内...原创 2018-04-29 21:43:21 · 642 阅读 · 0 评论 -
使用quratz定时调用
最近在工作上需要定时调用的功能,定时调用在web中应用还是蛮多的,比如说课表提醒,每天晚上提醒一遍有什么课要上啦,或者就像目前我需要完成的功能,定时的一个数据库的数据导入到另一个数据库中。而quratz是一个完全由java编写的开源作业调度框架。尽管Quartz框架整合了许多额外功能, 但就其简易形式看,你会发现它易用得简直让人受不了!使用起来确实特别方便,也很实用。废话不多说,直接上!原创 2015-08-10 13:27:17 · 1835 阅读 · 2 评论 -
oracle创建表空间、用户、和权限配置
oracle数据库和mysql、sqlserver不同,它是在同一个数据库中可以定义多个表空间,不同表空间是相互独立的,每个用户都有默认的表空间,所以基本上不同的用户操作的数据表都可以不同,当然如果要相同的话可以在定义表空间的时候设定好那个表空间就行。创建表空间:create tablespace (你的表空间名字如 pfm)datafile 'D:\oracle\product\10.2.0原创 2015-07-03 17:03:58 · 1171 阅读 · 0 评论 -
消息推送(一)Comet介绍
目录(?)[-]服务器推推技术简介基于HTTP长连接的服务器推技术基于客户端套接口的服务器推技术示例环境webxml的配置polling前端jsp代码后端action代码效果展示cometstreaming前端jsp代码后端action代码效果展示iframe-streaming前端jsp代码后端action代码long-poll转载 2015-06-05 14:50:32 · 735 阅读 · 0 评论 -
妈妈再也不用担心我手贱删文件了呢
这个功能不是我无聊发现的,而是因为我在做开发时手贱误删了一个java文件,而又不想再编一边(最主要是不记得细节)抱着试一试的心态在网上搜索了一下。。Myeclipse还真有如此强大的功能,不过据说只能恢复7天内的文件,自己的急便解了。发上博客让更多朋友受益把。。1.首先右键点击你误删文件所属的项目。2.在最后几行找到“Restore from Local History”3转载 2014-10-02 16:48:12 · 785 阅读 · 0 评论 -
hibernate set、arrayList等排序问题
首先我们用hibernate做外键关联的时候常常会用到集合,但是在我们需要用到set的时候就头疼了,set取出来的集合是无序的,但偏偏我需要用到有序的,第一种方法就是,换,换成有序的集合不就行了,TreeSet、arrayList、sortedSet都是有序的TreeSet; private sortedSet test=new TreeSet();省略getter、s原创 2014-12-28 20:04:56 · 1144 阅读 · 0 评论 -
struts2+spring+hibernate+dwr3实现下拉框二级联动
三大框架如何整合我这就不说了原创 2015-01-01 10:03:25 · 1217 阅读 · 0 评论 -
struts2实现文件批量下载
大家都知道struts2提供了文件下载的功能,很方便很好用。废话不多说直接开始。 首先我们先对struts.xml进行配置,struts2的result 类型设为stream,请看如下配置: 2048 在这要介绍一下几个字段属性: 1、contentType,这个和文件上传原创 2015-01-22 13:18:08 · 3449 阅读 · 1 评论 -
前台js获取后台内容
好多时候我们都有需要在前台获取后台的信息,比如说需要在后台出现异常需要在前端跳出提示框,这时我们就要把后台信息送到前台js,别和我说用这个,虽说这个可以用,但是不建议使用,因为这样前台后台的耦合性很高,不利于以后的开发,我们应该把前台代码和后台代码区分开。 其实jsp页面本来就可以接收信息,比如在后台将信息放入ActionContext里面,比如ActionCo原创 2015-01-22 15:05:31 · 983 阅读 · 0 评论 -
struts2+javamail实现邮件发送
要实现邮件发送需要用到mail.jar这个jar包,大家可以去官网下载一个。package com.jxust.util;import java.io.File;import java.io.IOException; import java.util.Date; import java.util.Properties; import javax.act原创 2015-01-25 22:18:29 · 1120 阅读 · 0 评论 -
struts2+spring防止用户重复登录(单点登录)
所有人都知道用户登录session是一个很好的选择,而且几乎都是用的session,但是session是不能跨窗口使用的,每打开一个浏览器,系统会赋予一个新的sessionID,而每个sessionID是不同的,也就是说你每次登录用的都是不同的session,而不是你之前登录使用的那个。那么如果你要在全域只能使用一个用户ID,那怎么办呢?我们可以通过自定义一个sessionListener,用原创 2015-04-18 09:56:23 · 4426 阅读 · 3 评论 -
ueditor精简和实现上传图片文件等
最近项目要求需要用到文本编辑器,之前用的的是FCKeditor,发现在IE下不兼容,而且有比较多漏洞,果断放弃FCK,转投国产百度怀抱。百度的ueditor还是比较强大的音乐、视频、代码模式都有。首先说精简我的项目其实并不需要那么多牛逼的功能,只需要简单的文本编辑,所以把这些功能精简一下:这是dialogs下面的文件接下来还有一些css文件,都留defa原创 2015-04-11 13:32:09 · 2225 阅读 · 0 评论 -
jdk动态代理
jdk动态代理基于接口实现,你需要代理的对象应该实现了一个或者多个接口,这个也是因为接口的好处显而易见,接口使你程序容易扩展,耦合性更低。jdk动态代理需要用到invocationHandler,要了解动态代理了解反射是前提。还是写一个例子吧。首先写一个接口:package com.test.testDymanicProxy;public interface userDAO { pu原创 2015-04-19 10:13:18 · 627 阅读 · 0 评论 -
hibernate的一级缓存和二级缓存
最近在看hibernate的内层实现,说到内层实现就要说到反射和hibernate的缓存机制。今天看到一位大神的博客写得很好,果断转载过来。在这提供链接点击打开链接hibernate有session缓存和sessionFactory缓存两种形式一、session缓存(又称为事物缓存),是hibernate内置的,不可卸除缓存范围:session缓存数据只能被当前se转载 2015-03-11 20:39:38 · 546 阅读 · 0 评论 -
对HashMap一点认识
HashMap其实和Hashtable很像,仅有HashMap是线程不安全的和允许键值对为空这两个不同。HashMap是无序的。以下是源码里面的解释, implementation provides all of the optional map operations, and permits * null values and the null key. (The HashMap原创 2015-04-14 18:47:46 · 643 阅读 · 0 评论 -
HashMap与ConcurrentHashMap的区别
从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心。在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从此Map也有安全的了。ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchronized,那样就变成了HashTable转载 2015-04-26 19:55:53 · 486 阅读 · 0 评论 -
classLoader类加载机制
jvm有三种类加载器,一种用户自定义加载器,从上到下分别是:bootstrap classLoader 该类加载器在java虚拟机启动时将jdk核心类库加载进内存extension classLoader 扩展类加载器,该类加载器是加载jre的一些jar的类库system classLoader 系统类加载器,该类加载器是加载classpath下面的指定类库到内存custom cl原创 2015-04-29 11:41:13 · 632 阅读 · 0 评论 -
struts2拦截器
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.youkuaiyun.com/csh624366188拦截器(interceptor)是Struts2最强大的特性之一,也可以说是struts2的核心,拦截器可以让你在Action和result被执行之前或之后进行一些处理。同时,拦截器也可以让你将通用的代码模块化并作为可重用的类。Struts2中的很多特性都是由拦截器来完成的。转载 2015-05-05 09:06:07 · 502 阅读 · 0 评论 -
maven入门教程
网上看的的觉得不错,因为最近在看maven,跟着这个学吧。点击打开链接Maven是一个采用纯Java编写的开 源项目管理工具。Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编 译,构建,测试,发布,报告等等。目前Apache下绝转载 2015-06-25 10:38:21 · 804 阅读 · 0 评论 -
javascript 的乱码问题
最近碰到一个javascript内置html的原创 2014-09-12 09:41:32 · 810 阅读 · 0 评论
分享