专业知识
文章平均质量分 68
thjnemo
这个作者很懒,什么都没留下…
展开
-
Spring线程池开发实战
Spring线程池结合非Spring托管BeanSpring-Config.xml Java Codeprivate Executor executor;public void setExecutor(Executor executor原创 2014-12-29 18:00:33 · 507 阅读 · 0 评论 -
Spring的AOP实现使用的JDK的动态代理必须使用接口
今天,在项目中遇到一个问题,情况是这样的:在一个项目中,我配置了一个用以处理任务的工厂类,然后将这个工厂类注入到其他的service类中进行使用。在Spring中的配置如下:原创 2014-12-26 14:18:20 · 2098 阅读 · 0 评论 -
动态代理:JDK动态代理和CGLIB代理
JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为转载 2015-03-28 17:20:46 · 384 阅读 · 0 评论 -
Spring Transaction属性之Propagation
Spring Transaction中有一个很重要的属性:Propagation。主要用来配置当前需要执行的方法,与当前是否有transaction之间的关系。我晓得有点儿抽象,这也是为什么我想要写这篇博客的原因。看了后面的例子,大家应该就明白了。一、Propagation取值:REQUIRED(默认值):在有transaction状态下执行;如当前没有transaction,转载 2015-03-28 15:45:35 · 413 阅读 · 0 评论 -
servlet webservice 比较
首先比较下servlet和webservice下请求: servlet:提供了请求/响应模式,是JAVA的一种规范,只能使用于java上,用来替代早期使用的难懂的CGI,是一种无状态的请求响应,客户端访问一个服务器的url,只需要发送简单的httprequest即可。 规定了四个范围:pageContext、request、session、application。一定依赖于各种SERV转载 2015-03-11 13:09:40 · 629 阅读 · 0 评论 -
Ubuntu 主机名IP映射
在Ubuntu系统中,主机名是在etc/hostname文件中的,主机名与IP的映射关系是在etc/hosts文件中的,格式如下:127.0.0.1 localhost.localdomain localhost hosts文件格式是一行一条记录,分别是IP地址 hostnamealiases,三者用空白字符分隔,aliases可选。 Linux原创 2015-03-17 18:05:38 · 6336 阅读 · 0 评论 -
Java clone详解
Java中对象的创建clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可以创建对象呢?1 使用new操作符创建一个对象2 使用clone方法复制一个对象那么这两种方式有什么相同和不同呢? new操作符的本意是分配内存。程序执行转载 2015-03-17 10:24:00 · 360 阅读 · 0 评论 -
JAVA并发编程--守护线程(Damon Thread)
在Java中有两类线程:用户线程 (User Thread)、守护线程 (Daemon Thread)。所谓守护 线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。用户线转载 2015-03-05 22:48:34 · 1533 阅读 · 0 评论 -
Java 理论与实践: 正确使用 Volatile 变量
转载地址:http://www.ibm.com/developerworks/cn/java/j-jtp06197.htmlvolatile 变量使用指南 Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错转载 2015-02-15 15:11:46 · 328 阅读 · 0 评论 -
linux文件创建、查看、编辑命令
一、创建文件命令1、touch命令linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件。touch [-acm][-r ref_file(参照文件)|-t time(时间值)] file(文件名)example:touch file1.txt 更新file1.txt的存取和修改时间touch -c fil转载 2015-02-27 14:19:07 · 808 阅读 · 0 评论 -
Spring事务传播属性和隔离级别
一、Spring事务的隔离级别 1. ISOLATION_DEFAULT: 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别. 另外四个与JDBC的隔离级别相对应 2. ISOLATION_READ_UNCOMMITTED: 这是事务最低的隔离级别,它充许令外一个事务可以看到这个事务未提交的数据。 这种转载 2015-02-15 17:07:45 · 506 阅读 · 0 评论 -
RabbitMQ 三种Exchange
Direct Exchange – 处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。如果一个队列绑定到该交换机上要求路由键 “dog”,则只有被标记为“dog”的消息才被转发,不会转发dog.puppy,也不会转发dog.guard,只会转发dog。Channel channel = connection.createChannel();转载 2015-02-13 17:13:44 · 496 阅读 · 0 评论 -
ExecutorService Executors 认识
对于多线程有了一点了解之后,那么来看看java.lang.concurrent包下面的一些东西。在此之前,我们运行一个线程都是显式调用了Thread的start()方法。我们用concurrent下面的类来实现一下线程的运行,而且这将成为以后常用的方法或者实现思路。 看一个简单的例子:public class CacheThreadPool { public转载 2015-03-11 17:35:30 · 634 阅读 · 0 评论 -
ExecutorService理解与使用
接口 java.util.concurrent.ExecutorService 表述了异步执行的机制,并且可以让任务在后台执行。壹個 ExecutorService 实例因此特别像壹個线程池。事实上,在 java.util.concurrent 包中的 ExecutorService 的实现就是壹個线程池的实现。ExecutorService 样例 这里有壹個简单的使用Java 实现的转载 2015-03-11 17:24:34 · 816 阅读 · 0 评论 -
close wait 问题收藏
感谢各位网友提供资料,在此进行整理后放到自己的文章中:Google了半天,发现关于CLOSE_WAIT的问题一般是C的,Java似乎碰到这个问题的不多(这有一篇不错的,也是解决CLOSE_WAIT的,但是好像没有根本解决,而是选择了一个折中的办法)。接着找,由于使用了NIO,所以怀疑可能是这方面的问题,结果找到了这篇。顺着帖子翻下去,其中有几个人说到了一个问题—— 一端的Socket调用c转载 2015-03-12 16:47:29 · 449 阅读 · 0 评论 -
Spring事务与自定义多线程陷阱
Spring事务与自定义多线程陷阱原创 2015-04-08 16:04:18 · 7025 阅读 · 0 评论 -
java并发面试题
多线程java中有几种方法可以实现一个线程? 答:在Java中实现一个线程有两种方法,第一是实现Runnable接口实现它的run()方法,第二种是继承Thread类,覆盖它的run()方法。这两种方法的区别是,如果你的类已经继承了其它的类,那么你只能选择实现Runnable接口了,因为Java只允许单继承的。如何停止一个正在运行的线程? 答:当不转载 2015-03-09 00:18:28 · 318 阅读 · 0 评论 -
Ubuntu 14.04 (降级)安装 SVN 1.6
因项目原因,需要将Ubuntu 14.04上的SVN(原本是1.8.8)降级为1.6方法一、Add deb http://us.archive.ubuntu.com/ubuntu precise main to your /etc/apt/sources.list. Remove your current SVN by apt-get remove libsvn1 subver原创 2015-04-15 18:41:52 · 2368 阅读 · 0 评论 -
maven + eclipse 问题记录
1、警告:The tag handler class for "s:form" (org.apache.struts2.views.jsp.ui.FormTag) was not found on the Java Build Path这个问题终于可以解决了, 在出问题的页面 标签前后删除空格后保存文件 警告即可消失,即为改行的起始,然后保存。 2、Eclipse下Java com转载 2015-04-14 20:18:37 · 953 阅读 · 0 评论 -
Spring AOP+自定义注解实现缓存
Spring AOP+自定义注解实现缓存原创 2015-04-07 14:00:52 · 4668 阅读 · 0 评论 -
初探ThreadLocal类
1、ThreadLocal并不是一个Thread,而是Thread的局部变量,当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本.2、ThreadLocal类中的方法:(JDK5版本之后支持泛型): 一、void set(T value)转载 2015-04-01 15:33:31 · 746 阅读 · 0 评论 -
使用spring aop+自定义注解实现动态使用DataSource
Spring AOP的两种实现方式:JDK动态代理和CGLIB动态代理1、JDK动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。2、CGLIB动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP。2、如果目原创 2015-04-01 10:47:45 · 5156 阅读 · 0 评论 -
linux下校正系统时间的方法
校正系统的时间,以root权限运行:aptitude install ntpdatentpdate clock.cuhk.edu.hkhwclock --systohccrontab:*/1 * * * * /usr/sbin/ntpdate -s clock.cuhk.edu.hk; /sbin/hwclock --systohc修改系统时间date -s转载 2015-03-13 15:30:44 · 3608 阅读 · 0 评论 -
Java工厂模式应用
Java工厂模式应用原创 2014-12-25 18:18:19 · 709 阅读 · 0 评论 -
设置最佳线程数总结
最佳线程数:性能压测的情况下,起初随着用户数的增加,QPS会上升,当到了一定的阀值之后,用户数量增加QPS并不会增加,或者增加不明显,同时请求的响应时间却大幅增加。这个阀值我们认为是最佳线程数。 为什么要找最佳线程数1.过多的线程只会造成,更多的内存开销,更多的CPU开销,但是对提升QPS确毫无帮助2.找到最佳线程数后通过简单的设置,可以让web系统更加稳定,得到最高,最稳转载 2015-03-12 13:28:26 · 1410 阅读 · 0 评论 -
Linux下稳定性测试
ab命令(详见:http://blog.sina.com.cn/s/blog_4d3ff0eb0102v5xp.html)seq命令eg:seq10000 | xargs -n 1 -P 10 curl "http://192.168.1.181/service/mediawise?action=submit&username=test&password=123456"-F "dna=@m转载 2014-12-05 09:54:37 · 2615 阅读 · 0 评论 -
Jmap+MAT 排查内存泄漏
最近在项目中自测的时候(压力测试)遇到内存泄漏的情况,想查看具体是哪个模块甚至哪个类引起的问题,经同事推荐使用Jmap+MAT的组合进行了一次尝试,下面记录一下,以便今后深入学习使用。这里可以用一个linux下的命令(jps)查看所有Java相关线程的pid等信息。然后使用jmap命令,jmap是一个可以原创 2015-01-25 20:17:22 · 5028 阅读 · 0 评论 -
linux硬链接与软链接
Linux 系统中有软链接和硬链接两种特殊的“文件”。软链接可以看作是Windows中的快捷方式,可以让你快速链接到目标档案或目录。硬链接则透过文件系统的inode来产生新档名,而不是产生新档案。创建方法都很简单:软链接(符号链接) ln -s source target 硬链接 (实体链接)ln source targetinode要解释清楚两者的转载 2015-02-27 14:03:17 · 432 阅读 · 0 评论 -
LINUX下SVN命令大全
1、将文件checkout到本地目录svncheckout path(path是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/domain简写:svn co2、往版本库中添加新的文件svn add file例如:svn add test.php(添加test.php)svn add *.php(添加当前目录下所有的p转载 2014-12-04 17:29:33 · 356 阅读 · 0 评论 -
apache2的搭建
在测试过程中,有时会经常需要自己写一个页面进行辅助。比如,在测试爬虫时,就需要测试爬去到的数据是否完全,或者一些特殊的控件等其它资源是否能够成功抓到,等等。这时,为了能够轻松的实现输入url就能看得到这个页面,就需要搭建一个apache2环境。Linux环境下,安装方法非常简单:使用命令aptitude就轻松的完成安装。apache2本地默认端口为:80;默认存放路径为:/var/www/转载 2014-12-04 10:34:19 · 335 阅读 · 0 评论 -
Ubuntu如何搭建mysql的slave
Ubuntu如何搭建mysql的slavemaster:192.168.1.111 slave:192.168.1.2121. master环境配置: (1)修改配置文件:vim /etc/mysql/my.cnf, #设置服务器Id值 server-id=1 (2)数据库配置: #创建转载 2014-12-03 14:07:02 · 383 阅读 · 0 评论 -
常用的Linux命令
常用的Linux命令1. 数据库授权:比如:授权以用户名:maomao,密码:123,在192.168.1.182机器上访问数据库database:GRANT ALL PRIVILEGES ON `database`.* TO 'maomao'@192.168.1.182 identified by'123';在命令行下,可以有两种大同小异的方法来作此设置:(1)转载 2014-12-03 14:17:53 · 301 阅读 · 0 评论 -
针对java程序java.lang.OutOfMemoryError: PermGen space的解决方案
针对java程序java.lang.OutOfMemoryError: PermGen space的解决方案1. 对于Tomcat程序: 一般来说,tomcat程序默认的最大内存占用为128M. 此设置可以通过以下方式查看,查看文件/etc/init.d/tomcat6中的JAVA_OPTS配置. 但是以默认的128M的配置,往往是不够的。当看到有提示“ja转载 2014-12-03 14:16:29 · 298 阅读 · 0 评论 -
如何用Key实现在Linux下方便的远程连接
如何用Key实现在Linux下方便的远程连接在工作中,我们经常使用ssh root@…, password...进行远程登录。那么,有没有什么好的方法,可以实现简单快捷的连接到目标机器呢? OK,ssh host就帮上忙了。 1. 首先,在本机上安装sshpass:sudo aptitude install sshpas。 2. 使用ssh-k转载 2014-12-03 14:09:41 · 881 阅读 · 0 评论 -
mysql数据库远程访问设置方法
mysql数据库远程访问设置方法myeclipse连接mysql数据库错误示例:null, message from server: "Host '127.0.0.1' is not allowed to connect to this MySQL server1、修改localhost更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从转载 2014-12-03 11:36:24 · 372 阅读 · 0 评论 -
Java内存管理机制
Java内存管理机制1. Java的内存区域组成 Java把内存分两种:一种是栈内存,另一种是堆内存。(1)在函数中定义的基本类型变量和对象的引用变量都在函数的栈内存中分配;(2)堆内存用来存放由new创建的对象和数组以及对象的实例变量; 在函数(代码块)中定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉转载 2014-12-03 11:32:23 · 404 阅读 · 0 评论 -
rsync命令详解
rsync命令详解rsync(remote sync)是类unix系统下的数据镜像备份工具。它可以镜像保存整个目录树和文件系统;可以很容易做到保持原来文件的权限、时间、软硬链接等等;无须特殊权限即可安装;具有优化的流程,文件传输效率高;可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接;支持匿名传输,以方便进行网站镜像。 下载安装(htt转载 2014-12-03 14:01:17 · 1267 阅读 · 0 评论 -
netstat命令详解
netstat命令详解在Internet RFC标准中,Netstat的定义是: Netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。 Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、转载 2014-12-03 11:39:04 · 381 阅读 · 0 评论 -
Linux下查看系统信息命令
Linux下查看系统信息命令uname -a 查看内核/操作系统/CPU信息head -n 1 /etc/issue 查看操作系统版本cat /proc/cpuinfo 查看CPU信息hostname 查看计算机名lspci -tv 列出所有PCI设备lsusb -tv 列出所有USB设备lsmod 列出加载的内核模块e转载 2014-12-03 11:33:57 · 354 阅读 · 0 评论 -
Linux下的tar压缩解压缩命令详解
tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出转载 2014-12-04 17:30:41 · 266 阅读 · 0 评论