java
文章平均质量分 79
huilangeliuxin
这个作者很懒,什么都没留下…
展开
-
JAVA synchronized关键字解析
一、作用synchronized可以保证方法或者代码块在运行时,同一时刻只有一个线程可以进入到临界区,同时它还可以保证共享变量的内存可见性普通同步方法,锁是当前实例对象静态同步方法,锁是当前类的class对象同步代码块,锁是括号里面的对象二、实现原理2.1 实现方式Java中每一个对象都可以作为锁(todo),这是synchronized实现同步的基础。当...原创 2018-03-25 21:52:55 · 263 阅读 · 1 评论 -
Java事务处理全解析(五)—— Template模式
在本系列的上一篇文章中,我们讲到了使用TransactionManger和ConnectionHolder完成线程安全的事务管理,在本篇中,我们将在此基础上引入Template模式进行事务管理。 这是一个关于Java事务处理的系列文章,请通过以下方式下载github源代码:git clone https://github.com/davenkin/java_transact转载 2015-02-03 10:55:55 · 6867 阅读 · 0 评论 -
Java事务处理全解析(三)—— 丑陋的案例
在本系列的上一篇文章中,我们看到了一个典型的事务处理失败的案例,其主要原因在于,service层和各个DAO所使用的Connection是不一样的,而JDBC中事务处理的作用对象正是Connection对象,所以不同DAO中的操作不在同一个事务里面,从而导致事务失败。从中我们得出了教训:要避免这种失败,我们可以使所有操作共享一个Connection对象,这样应该就没有问题了。 请通转载 2015-02-03 10:44:54 · 8556 阅读 · 2 评论 -
Java事务处理全解析(七)—— 像Spring一样使用Transactional注解(Annotation)
在本系列的上一篇文章中,我们讲到了使用动态代理的方式完成事务处理,这种方式将service层的所有public方法都加入到事务中,这显然不是我们需要的,需要代理的只是那些需要操作数据库的方法。在本篇中,我们将讲到如何使用Java注解(Annotation)来标记需要事务处理的方法。 这是一个关于Java事务处理的系列文章,请通过以下方式下载github源代码:git clo转载 2015-02-03 11:10:23 · 9458 阅读 · 3 评论 -
Java事务处理全解析(六)—— 使用动态代理(Dynamic Proxy)完成事务
在本系列的上一篇文章中,我们讲到了使用Template模式进行事务管理,这固然是一种很好的方法,但是不那么完美的地方在于我们依然需要在service层中编写和事务处理相关的代码,即我们需要在service层中声明一个TransactionTemplate。在本篇文章中,我们将使用Java提供的动态代理(Dynamic Proxy)功能来完成事务处理,你将看到无论是在service层还是DAO层转载 2015-02-03 11:05:20 · 9673 阅读 · 2 评论 -
Java事务处理全解析(二)—— 失败的案例
在本系列的上一篇文章中,我们讲到了Java事务处理的基本问题,并且讲到了Service层和DAO层,在本篇文章中,我们将以BankService为例学习一个事务处理失败的案例。 请通过以下方式下载github源代码:git clone https://github.com/davenkin/java_transaction_workshop.git Bank原创 2015-02-03 10:37:32 · 13844 阅读 · 2 评论 -
java事务处理全解析
最近学习java事务,看到一位前辈的系列博客不错,转载过来作为记录转载地址:http://www.davenkin.me/post/2013-02-16/40048284001 (一)Java事务处理的基本问题 (二)失败的案例 (三)丑陋的案例 (四)成功的案例(自己实现一个线程安全的TransactionManager) (五原创 2015-02-03 10:26:15 · 65127 阅读 · 6 评论 -
Java事务处理全解析(四)—— 成功的案例(自己实现一个线程安全的TransactionManager)
在本系列的上一篇文章中我们讲到,要实现在同一个事务中使用相同的Connection对象,我们可以通过传递Connection对象的方式达到共享的目的,但是这种做法是丑陋的。在本篇文章中,我们将引入另外一种机制(ConnectionHolder)来完成事务管理。 这是一个关于Java事务处理的系列文章,请通过以下方式下载github源代码:git clone https://转载 2015-02-03 10:52:12 · 11608 阅读 · 6 评论 -
java Iterator和ListIterator的区别和用法
我们在使用List,Set的时候,为了实现对其数据的遍历,我们经常使用到了Iterator(跌代器)。使用跌代器,你不需要干涉其遍历的过程,只需要每次取出一个你想要的数据进行处理就可以了。 但是在使用的时候也是有不同的。List和Set都有iterator()来取得其迭代器。对List来说,你也可以通过listIterator()取得其迭代器,两种迭代器在有些时候是不能通用的,Iterat转载 2014-12-24 10:54:27 · 1523 阅读 · 0 评论 -
Java事务处理全解析(八)——分布式事务入门例子(Spring+JTA+Atomikos+Hibernate+JMS)
在本系列先前的文章中,我们主要讲解了JDBC对本地事务的处理,本篇文章将讲到一个分布式事务的例子。 请通过以下方式下载github源代码:git clone https://github.com/davenkin/jta-atomikos-hibernate-activemq.git 本地事务和分布式事务的区别在于:本地事务只用于处理单一数据源事务(比如单个数据转载 2015-02-03 11:21:02 · 6061 阅读 · 0 评论 -
Maven提高篇系列之二——配置Plugin到某个Phase(以Selenium集成测试为例)
在本系列的上一篇文章中,我们讲到了多模块和继承之间的区别,在本篇文章中,我们将讲到如何将Plugin配置到某个Phase中。 持续交付要“自动化所有东西”,对于集成测试也是一样。集成测试和单元测试相比需要更多的环境准备工作,包括测试数据的准备和启动服务器等。在本篇中我们设想以下一种场景: 你开发了一个web应用,集成测试使用了Selenium,你希望通过一个转载 2015-02-05 18:23:12 · 1190 阅读 · 0 评论 -
Java 占用CPU使用率很高的分析
前几天在测试服务器上发现Java进程的CPU使用率暴高,为了分析解决该问题,把过程记录如下: 1. 先找到Java的进程号 Linux下: 用top命令查看所有进程,可以明显看到Java的,因为CPU占用率很高被排在前面。比如, clip_image002Windows下: 打开任务管理器,然后点击 “查看” 菜单,然后点击 “选择列”,把pid勾上,然后就可以在任务管理器里面看到所有进程转载 2016-08-15 19:53:19 · 5832 阅读 · 0 评论 -
生产环境下JAVA进程高CPU占用故障排查
转自:http://blog.chinaunix.net/uid-10449864-id-3463151.html问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高。问题分析:1,程序属于CPU密集型,和开发沟通过,排除此类情况。2,程序代码有问题,出现死循环,可能性极大。转载 2015-04-24 10:47:02 · 832 阅读 · 0 评论 -
大型网站系统架构的演化
http://www.cnblogs.com/leefreeman/p/3993449.html转载 2015-02-27 18:31:59 · 711 阅读 · 0 评论 -
Maven提高篇系列之三——部署到自己创建的Repository(Nexus)
在本系列的上一篇文章中,我们讲到如何将Plugin配置到某个Phase中,在本文中,我们将讲到如何将项目部署到自己创建的Repository中。 平时我们自己做的项目都是直接使用Maven提供的Central Repository,但是对于公司来说直接使用公共的Maven Central Repository就不见得是件好事了,比如我们需要考虑安全问题。此时你可以创建一个公司专属的转载 2015-02-05 19:06:24 · 879 阅读 · 0 评论 -
Maven提高篇系列之六——编写自己的Plugin(本系列完)
在本系列的上一篇文章中,我们讲到了如何处理依赖冲突,在本文中,我们将讲到如何编写自己的Plugin。 Maven就其本身来说只是提供一个执行环境,它并不知道需要在项目上完成什么操作,真正操作项目的是插件(plugin),比如编译Java有Compiler插件,打包有Jar插件等。所以要让Maven完成各种各样的任务,我们需要配置不同的插件,甚至自己编写插件。 你可能转载 2015-02-05 19:16:07 · 1126 阅读 · 0 评论 -
Maven提高篇系列之五——处理依赖冲突
在本系列的上一篇文章中,我们讲到了如何使用Profile,在本文中,我们将讲到如何处理Maven的依赖冲突。 不知道你在使用Maven时是否遇到过诸如"NoSuchMethodError"或"ClassNotFoundException"之类的问题,甚至发生这些问题的Java类你没都没有听说过。要搞清楚这里面的缘由,我们得学习Maven对依赖冲突的处理机制。 Mav转载 2015-02-05 19:11:10 · 1251 阅读 · 0 评论 -
Maven提高篇系列之四——使用Profile
在本系列的上一篇文章中,我们讲到了如何将项目部署到Repository中,在本文中,我们将讲到如何使用Profile。 在开发项目时,设想有以下场景:你的Maven项目存放在一个远程代码库中(比如github),该项目需要访问数据库,你有两台电脑,一台是Linux,一台是Mac OS X,你希望在两台电脑上都能做项目开发。但是,安装Linux的电脑上安装的是MySQ转载 2015-02-05 19:08:04 · 1452 阅读 · 0 评论 -
JVM基础:深入学习JVM堆与JVM栈
最近学习JVM,看到一篇博文讲解的很不错,拿来与大家分享.转自(http://developer.51cto.com/art/201009/227812_all.htm)JVM栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;JVM堆解决的是数据存储的问题,即数据怎么放、放在哪儿,另外JVM堆中存的是对象。JVM栈中存的是基本数据类型和JVM堆中对象的引用。JVM基础概念:转载 2014-12-12 17:47:16 · 1052 阅读 · 0 评论 -
jsessionid所引起的问题 和解决
转自:http://blog.csdn.net/seakingwy/article/details/1933687jsessionid所引起的问题在Spring MVC当使用RedirectView或者"redirect:"前缀来做重定向时,Spring MVC最后会调用:response.sendRedirect(response.encodeRedirectURL(url)转载 2014-12-17 11:58:16 · 2830 阅读 · 1 评论 -
poi从excel中读取父子关系型(树形)数据结构到数据库
poi从excel中读取父子关系型(树形)数据结构到数据库原创 2014-11-27 11:50:17 · 8571 阅读 · 1 评论 -
memcached各种应用分析
这里收集了经常被问到的关于memcached的问题 * memcached是怎么工作的? * memcached最大的优势是什么? * memcached和MySQL的query cache相比,有什么优缺点? * memcached和服务器的local cache(比如PHP的APC、mmap文件等)相比,有什么优缺点? * memcached的cache机制是怎样的?转载 2014-08-28 11:38:44 · 789 阅读 · 0 评论 -
struts2表单提交action路径传参数不成功
" method="post" enctype="multipart/form-data">因为项目要求不能用session传id就只能通过请求action是把参数传进去,但是参数是用struts标签拿出来的,经过n多方法无法传成功,后台得到的id值为,因为表达式解析不成功,所以直接当做参数传递 最后采取了一个折中的方法 " style="visibility:hidde原创 2012-11-23 12:40:39 · 3129 阅读 · 0 评论 -
struts2之从数据库取出文件写进file属性框中
今天项目需要从数据库中读出文件路径然后显示在前台type=“file”属性框中,但是file是只读的也就是不可能写进去,所以只能采取折中的办法即用一个文本框显示路径内容覆盖文件上传框。代码如下 "> 当然这个只是看着像写进了file属性框,但是当你提交时不可能提交给服务器,所以这个就要在后台进行处理,代码如下if(document == null原创 2012-11-22 22:39:33 · 992 阅读 · 0 评论 -
java 异常丢失
package finallyTest;public class FinallyTest {void f() throws VeryImportantException{throw new VeryImportantException();}void dispose() throws HoHumException {throw new HoHumException(原创 2012-11-19 19:36:23 · 886 阅读 · 0 评论 -
HashMap遍历的两种方式
第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object原创 2012-11-19 18:51:26 · 657 阅读 · 0 评论 -
filter和interceptor
1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。 2、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器。 3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。 4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。 5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。过转载 2012-11-19 08:25:49 · 692 阅读 · 0 评论 -
java获取项目路径
在jsp和class文件中调用的相对路径不同。 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。另:在Jsp,Servlet,Java中详细获得路径的方法!1.jsp中取得路径:以工程名为TEST为例:(1)转载 2012-11-18 21:42:56 · 696 阅读 · 0 评论 -
struts2与servlet共存问题
先看一下struts2 的web.xml文件: struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* 在请求应用时,struts2将会截获所有请求,对于servlet请求将不能够正常相应,是struts2把servlet当成action了,因为转载 2012-11-27 14:25:56 · 696 阅读 · 0 评论 -
如何将图片黑白化
package image;import java.awt.Image;import java.io.File;import java.io.FileNotFoundException;import java.io.FileInputStream;import java.io.IOException;import java.util.Iterator;import ja转载 2012-10-13 10:42:42 · 4085 阅读 · 0 评论 -
java关于mysql数据库备份
http://www.open-open.com/lib/view/open1336638222843.html转载 2012-12-26 16:08:30 · 644 阅读 · 0 评论 -
eclipse中几种加入jar包方式的区别的简介与内容
1、jar导入到web项目中的classpath下三种方式 1)这里呢,一种方法是,直接用MyEclipse里自带的相关的项目jar包,右击项目“MyEclipse”菜单,选择对应的jar包就OK了,例“Add Spring Capabilities”,并且可以设置Spring的一些配置信息,不错的可视化操作; 2)添加外部的jar包到web项目的lib包下,右击项目“Propertie转载 2013-03-08 19:02:28 · 7547 阅读 · 1 评论 -
JFinal初始化过程浅析
前段时间粗略看了一下jfinal的原创 2014-07-26 15:45:57 · 23963 阅读 · 2 评论 -
一次群聊天记录的整理(当后台的某个程序忽然死了时,怎么解决,没有日志输出)
电风扇:今天面试一家电子商务公司,一个面试官提的问题:当后台的某个程序忽然死了时,怎么解决,没有日志输出。电风扇:想了半天没出来洗衣机:重启锅:0.0电风扇: 有人,有好的建议吗电风扇: 不可能重启,这是电子商务网站锅: 做好数据备份再重启吧电风扇: 购物的电风扇: 而且只是其中的某个线程死了电风扇: 可能是别人写得某些程序造成的。电风扇: 我想了很久没想出原创 2014-07-26 16:54:41 · 2161 阅读 · 0 评论 -
java容器的线程安全
同步容器类同步容器类包括Vector和Hashtable(二者是早期JDK的一部分),还包括JDK1.2中添加的一些相似的类。同步容器类实现线程安全的方式是:将状态封闭起来,并对每个公有方法进行同步,使得每次只有一个线程能访问容器状态。这里解释一下所谓“状态”指的就是成员变量,“封装起来”即将它们设不private,但是通过公有的方法外界仍然可以访问修改类的私有成员,所以要用synchro转载 2013-10-11 13:38:55 · 9023 阅读 · 0 评论 -
struts2和servlet共存的几种方法
项目要求struts2和servlet能够共存,就是struts的请求发给struts处理,servlet的请求发给servlet处理。目前web.xml文件应该是类似于如下的配置: filter> filter-name>struts2filter-name> filter-class>org.apache.struts2.dispatcher.ng.filter.Strut转载 2013-08-29 10:32:16 · 14957 阅读 · 5 评论 -
Java WEB安全问题及解决方案
1.弱口令漏洞解决方案:最好使用至少6位的数字、字母及特殊字符组合作为密码。数据库不要存储明文密码,应存储MD5加密后的密文,由于目前普通的MD5加密已经可以被破解,最好可以多重MD5加密。2.未使用用户名及密码登录后台可直接输入后台URL登录系统。解决方案:通过配置filter来过滤掉无效用户的连接请求。3.JSP页面抛出的异常可能暴露程序信息。有经验的入侵者,可转载 2013-08-29 10:02:49 · 1436 阅读 · 0 评论 -
flex整合java
java+flex项目整合java+flex2010-12-20 16:11:12 阅读59评论0 字号:大中小 订阅第一种:java工程和flex工程独立这种方式也是很多人使用的方式。flex程序员和java程序员相互独立的工作。下面介绍下.。一、所需要的软件MyEclipes + Tomcat6.0 + Flex Builder3 + BlazeDS,网转载 2013-08-15 15:37:48 · 1059 阅读 · 0 评论 -
eclipse部署web项目至本地的tomcat但在webapps中找不到
一、发现问题 在eclipse中新建Dynamic Web Project,配置好本地的tomcat并写好代码后选择Run on Server,但运行后发现在tomcat的安装目录下的webapps并没有出现所建立的工程名字。 ]二、验证 很明显项目并没有自动部署到Tomcat的Webapps中而是部署在了别的容器中。在内置浏览器中输入http://localhost:8080/we原创 2013-08-22 16:24:34 · 1015 阅读 · 0 评论 -
fckeditor2.6使用心得以及相关异常
本文的内容大纲是: 1. 在web中配置应用Fck; 2. 用Fck自带Api做非空验证; 3. 修改文件上传的保存路径; 4. 对文件上传做大小控制; 一. 配置和应用 去官网上下载fckeditor-java-demo-2.6.rar,里面有我们需要的所有js和用于文件上传的java包。 (1)新建一工程,在webroot下建一文件夹起名为js,把fckedit转载 2013-04-18 13:32:56 · 3300 阅读 · 1 评论