Java
文章平均质量分 83
张伟灿
您还可以输入300个字符
展开
-
深入 Java 调试体系,第 2 部分: JVMTI 和 Agent 实现
Java 程序的诊断和调试开发人员对 Java 程序的诊断和调试有许多不同种类、不同层次的需求,这就使得开发人员需要使用不同的工具来解决问题。比如,在 Java 程序运行的过程中,程序员希望掌握它总体的运行状况,这个时候程序员可以直接使用 JDK 提供的 jconsole 程序。如果希望提高程序的执行效率,开发人员可以使用各种 Java Profiler。这种类型的工具非常多,各有优点,能转载 2014-03-04 15:58:47 · 909 阅读 · 0 评论 -
利用memcached构建高性能的Web应用程序
面临的问题 对于高并发高访问的Web应用程序来说,数据库存取瓶颈一直是个令人头疼的问题。特别当你的程序架构还是建立在单数据库模式,而一个数据池连接数峰值已经达到500的时候,那你的程序运行离崩溃的边缘也不远了。很多小网站的开发人员一开始都将注意力放在了产品需求设计上,缺忽视了程序整体性能,可扩展性等方面的考虑,结果眼看着访问量一天天网上爬,可突然发现有一天网站因为访问量过大而崩溃了,转载 2014-03-23 21:06:22 · 584 阅读 · 0 评论 -
linux 安装Nginx-0.8.54
为了确保能在 Nginx 中使用正则表达式进行更灵活的配置,安装之前需要确定系统是否安装有 PCRE(Perl Compatible Regular Expressions)包。您可以到ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:# wget转载 2014-04-03 15:28:06 · 896 阅读 · 0 评论 -
Maven最佳实践:版本管理
什么是版本管理首先,这里说的版本管理(version management)不是指版本控制(version control),但是本文假设你拥有基本的版本控制的知识,了解subversion的基本用法。版本管理中说得版本是指构件(artifact)的版本,而非源码的版本(如subversion中常见的rXXX,或者git中一次提交都有个sha1的commit号)。比如我有一个项目,其art转载 2014-04-08 14:05:26 · 843 阅读 · 0 评论 -
java Map排序(按key和按value)
1、按照key排序 对于java中Map的排序,有排序Map,比如TreeMap,对于这个Map,首先只能按照键排序,其次再put和remove的时候由于需要排序,性能上会有所牺牲。 这种方案,使用hashmap进行创建和添加,如果需要按照key排序,则可以将该hashmap作为参数传递到new TreeMap(hashmap),则可以完成按照key的排序 Java转载 2014-04-09 14:18:55 · 769 阅读 · 0 评论 -
Native2Ascii和Ascii2Native的Java实现
package util;/** * native2ascii.exe Java code implementation. * * @author * @version 1.0 */public class Native2AsciiUtils { /** * prefix of ascii string of native character转载 2014-05-14 18:22:05 · 904 阅读 · 1 评论 -
Target runtime Apache Tomcat v7.0 is not defined. .
今天整理一个以前做的一个项目时发现项目上有个红叉叉,太不爽了,Problems视图提示"Target runtime Apache Tomcat v7.0 is not defined.",最后Google了一下说要修改这个文件"工程名/.settings/org.eclipse.wst.common.project.facet.core.xml"下的runtime标签的name值,试了下,可以,转载 2014-05-08 16:51:00 · 624 阅读 · 0 评论 -
比较版本大小java代码
public class Scratch { private static int c(String s1, String s2) { if (s1 == null && s2 == null) return 0; else if (s1 == null) return -1; else if (s2 == null) return 1;转载 2014-05-09 15:59:52 · 1412 阅读 · 0 评论 -
java File的getLastModified在不同操作系统下面存在差异
java File 在不同平台的一个差异化原创 2014-06-25 18:05:35 · 2667 阅读 · 0 评论 -
Maven传递依赖的时候,同名包不同版本的包均会下载,但是编译的时候,只会加载一个高版本的。
Maven传递依赖的时候,同名包不同版本的包均会下载,但是编译的时候,只会加载一个高版本的。原创 2014-06-30 11:49:50 · 6555 阅读 · 0 评论 -
Java开发中的23种设计模式详解
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式转载 2014-03-23 22:18:26 · 691 阅读 · 0 评论 -
Nexus启动失败The nexus-webapp service was launched, but failed to start. .
JDK:版本1.6下了最新版的Nexus2.6.4,却始终运行不起来,显示The nexus-webapp service was launched, but failed to start. 查看%Nexus_HOME%下logs目录下的日志文件,报错:JVM... jvm 5 | java.lang.UnsupportedClassVersionError: o转载 2014-04-03 10:50:10 · 924 阅读 · 0 评论 -
Java防止非法和重复表单提交的分析
第一,对于不支持POST的,可以简单的使用如下代码if ("POST".equals(request.getMethod())) { // 正常进行}else{ // 异常请求 out.print("异常访问"); return;}如果是servlet, 可以将doGet方法直接返回,不进行处理就行了public void doGet(Htt转载 2014-04-16 17:44:43 · 739 阅读 · 0 评论 -
深入 Java 调试体系: 第 1 部分,JPDA 体系概览
JPDA 概述所有的程序员都会遇到 bug,对于运行态的错误,我们往往需要一些方法来观察和测试运行态中的环境。在 Java 程序中,最简单的,您是否尝试过使用 System.out.println() 来输出您的 Java 程序的执行中的各种变量状态来发现您的 Java 程序运行时的问题?这种方式方便易用,在一些简单的情况下能够解决您的问题,但是如果当您的程序运行在远程环境上,或者当前转载 2014-03-04 15:48:02 · 771 阅读 · 0 评论 -
深入 Java 调试体系,第 3 部分: JDWP 协议及实现
JDWP 是 Java Debug Wire Protocol 的缩写,它定义了调试器(debugger)和被调试的 Java 虚拟机(target vm)之间的通信协议。JDWP 协议介绍这里首先要说明一下 debugger 和 target vm。Target vm 中运行着我们希望要调试的程序,它与一般运行的 Java 虚拟机没有什么区别,只是在启动时加载了 Agent JD转载 2014-03-04 16:01:29 · 866 阅读 · 0 评论 -
JAVA bootstrap ClassLoader和JAVA核心API替换
JAVA bootstrap ClassLoader和JAVA核心API替换1 双亲委派模型 JAVA虚拟机规范定义了两种类型的类装载器-启动类装载器和用户自定义类装载器,启动类装载器是JAVA虚拟机实现的一部分,通过继承ClassLoader类,用户可以创建自定义的类装载器来完成特定要求的加载。JAVA虚拟机已经创建了2个自定义类装载器-扩展类装载器和系统类装载器。 每一转载 2014-03-04 16:14:46 · 897 阅读 · 0 评论 -
memcached实现hibernate二级缓存
使用memcache实现hibernate二级缓存。本次只是比较简单的实现hibernate二级缓存。还有很多地方需要完善,如果有更高需求的,自己再完善下。1、 需要用到memcache的服务器,下载地址:http://downloads.northscale.com/memcached-win32-1.4.4-14.zip2、 安装memcac转载 2014-03-13 11:12:39 · 1113 阅读 · 0 评论 -
hibernate-memcached--在Hibernate中使用Memcached作为一个二级分布式缓存
官方网址: http://code.google.com/p/hibernate-memcached/目前最新版本为1.0, 支持Hibernate3.3.下面是具体的使用方法:hibernate-memcached需要支持的类库如下:hibernate-memcached-.jarmemcached-2.1.jarspy-2.4.jarcommons-codec 1.3s转载 2014-03-13 11:17:04 · 3468 阅读 · 2 评论 -
分布式环境下session的存储的几个解决方案
分布式环境下session的存储的几个解决方案企业级应用系统很少是部署在单台服务器上的,这样就带来了跨服务器如何进行session共享的问题,笔者提供了两种方案,分别适用于两种不同场合,持久化session适合于高可靠性的环境,性能上可能有所损坏,而基于memcache的解决方案相对来说性能较好,但一旦memcache重启,数据丢失。分布式session之持久化以mysql举例1.转载 2014-03-14 11:11:07 · 1607 阅读 · 0 评论 -
memcached
memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDB转载 2014-03-13 17:23:34 · 816 阅读 · 0 评论 -
浅谈Java的Mina框架传递对象
接触java的Mina框架已经有很多时间了,在网上也读过了很多的相关文章,发现Mina框架的确是一个值得拿来好好研究的东西,前些日子写了一个山寨QQ项目,其中的通信部分用到了java中自带的InputStream,OutputStream,Writer,Reader等等,感觉其中的很大的一个问题就是难以将事务处理的逻辑层与解析层分离开来,造成整个项目看起来比较臃肿,繁琐,不够模块化,接触M转载 2014-03-09 16:13:54 · 905 阅读 · 0 评论 -
nginx rewrite中last和break的区别
在实际配置中,有的地方用last并不能工作,换成break就可以,其中的原理是对于根目录的理解有所区别,按我的测试结果大致是这样的。#location / {#proxy_pass http://www.shortjob.cn;#alias /home/html/;#root /home/html;#rewrite "^/a/(.*)\.html$" /1.html las转载 2014-04-14 15:38:47 · 1239 阅读 · 0 评论 -
JPA 复合主键
定义符合主键的方法: 第一种方法:使用@IdClass 下面是定义一个主键类: Java代码 public class CustomerPK implements Serializable { private String name; private Long ssn; public CustomerPK()转载 2014-08-05 19:04:13 · 807 阅读 · 0 评论 -
java java local cache本地缓存的两种实现,一个基于list轮询一个基于timer定时
最近项目要引入缓存机制,但是不想引入分布式的缓存框架,所以自己就写了一个轻量级的缓存实现,有两个版本,一个是通过timer实现其超时过期处理,另外一个是通过list轮询。 首先要了解下java1.6中的ConcurrentMap ,他是一个线程安全的Map实现,特别说明的是在没有特别需求的情况下可以用ConcurrentHashMap。我是想学习一下读写锁的应用,就自己实现了一个S转载 2014-08-12 15:49:48 · 1104 阅读 · 0 评论 -
ExecutorService生命周期
ExecutorService接口继承了Executor接口,定义了一些生命周期的方法Java代码 public interface ExecutorService extends Executor { void shutdown(); List shutdownNow(); boolean isShutdown();转载 2016-01-04 14:05:50 · 1363 阅读 · 0 评论 -
Spring Cache
缓存是实际工作中非常常用的一种提高性能的方法, 我们会在许多场景下来使用缓存。本文通过一个简单的例子进行展开,通过对比我们原来的自定义缓存和 spring 的基于注释的 cache 配置方法,展现了 spring cache 的强大之处,然后介绍了其基本的原理,扩展点和使用场景的限制。通过阅读本文,你应该可以短时间内掌握 spring 带来的强大缓存技术,在很少的配置下即可给既有代码提供缓存能转载 2016-03-18 15:24:26 · 485 阅读 · 0 评论 -
实现web消息推送
xmpp(openfire)——对消息服务器的要求比较高,没有找到合适的java实现方案;极光推送、百度推送——自动生成的id,不好绑定本地用户,作为公告类的消息推送可以,但作为本地用户间的消息推送机制还是不太合适;comet4j——能实现消息推送,但是每个页面保持连接的js对性能的消耗也厉害,基于Http长连接技术实现。goeasy——java后台推送只需要两行代码, j转载 2016-07-28 09:18:31 · 5769 阅读 · 0 评论 -
BigInteger权限判断示例
这里我介绍一种很常用,也比较Professor的权限控制思路。把具体的权限设置为一个正整数值,如果一个用户有多个权限的话,比如1,2权限,那么我们设置值的时候就是num.setBit(1),num.setBit(2),然后把返回的num值保存在session中,要验证是否有权限的话,只要从session中取得保存的num,然后执行下num.test(权限值),如果返回true就是有权限的,否则转载 2016-06-21 14:43:55 · 696 阅读 · 0 评论 -
Annotation实战【自定义AbstractProcessor】
前言在使用Java的过程中,每个开发人员都接触过@Override, @Deprecated等等各式各样的注解,这些东西是java最基础的一些原生定义好的annotation。本文通过一个实例演示如果自定义自己的annotation,使得在编译源码代码阶段进行额外操作。案例源码预热简单说一下annotation的基本知识,从java的官方技术文档可以直接找到annotation转载 2016-06-21 17:54:45 · 1593 阅读 · 0 评论 -
玩转Java注释:自动调用监听器
【51CTO精选译文】Listener,直译为侦听器或监听器,在面向对象的开发中经常需要用到。如果你需要启动或者停止基于Java的Web系统中不同部分的代码,那么你可以使用一个简单的ServletContentListener来监听容器(container)里面的启动事件和停止事件。这个监听器可以使用java.util.ServiceLoader去寻找这些被侦听事件所对应的已注册类。这个方转载 2016-06-21 17:56:53 · 2418 阅读 · 0 评论 -
AC多模匹配算法过滤敏感词实例
在应用项目中很多时候都需要用到过滤敏感词的功能,自己写个遍历明显在小数据的时候还能凑合下,但是对于大数据的时候就有点力不从心了,这里推荐使用ac多模匹配算法先来写个应用类[java] view plain copy/** * AC多模匹配敏感字符工具类实现类 * * @author shadow转载 2016-07-28 15:28:33 · 1288 阅读 · 0 评论 -
数据对象安全校验(oval框架)
很多时候我们都是忽略了对象数据的合法性,以为简单通过前台的js验证下是否正确就可以了,这后果比较让人但疼,下面举例个简单的例子,页面需要用户提交个简介,用户这个时候可以写脚本在这个内容里,你说你在js有校验合法性,但是你要明白,现在的抓包工具是可以等你提交的时候,拦截住请求,然后通过编辑器修改了提交的值来绕过前台的js验证,这样就造成了数据的不合法,所以如果数据安全要求高的,必须在转载 2016-07-28 16:04:06 · 4340 阅读 · 0 评论 -
Java Service Wrapper简介与使用
在实际开发过程中很多模块需要独立运行,他们并不会以web形式发布,传统的做法是将其压缩为jar包独立运行,这种形式简单易行也比较利于维护,但是一旦服务器重启或出现异常时,程序往往无法自行修复或重启。解决服务器重启的传统做法是编写一段shell脚本随服务器启动而运行,但是这样做只是治标,那么我们想寻求一种“治本”的方式该怎么办呢? Java Service Wrapper就轻松而简转载 2016-06-22 14:39:54 · 5884 阅读 · 3 评论 -
Thread.setDaemon详解
java中线程分为两种类型:用户线程和守护线程。通过Thread.setDaemon(false)设置为用户线程;通过Thread.setDaemon(true)设置为守护线程。如果不设置次属性,默认为用户线程。用户线程和守护线程的区别:1. 主线程结束后用户线程还会继续运行,JVM存活;主线程结束后守护线程和JVM的状态又下面第2条确定。2.如果没有用户线程,转载 2015-10-14 11:53:26 · 807 阅读 · 0 评论 -
SimpleJdbc: 用于简化数据库操作的Java库
我不喜欢Hibernate之类的ORM,因为它会自动给你把一对多和多对一的级联记录给查出来,一级缓存没啥用,二级缓存用处不大。取出的对象还是经过CGLIB代理的,Attach/Detach的状态尤其令人讨厌。对企业应用可能ORM还适合,但Web应用就应该简洁明了,一切以简单、性能和扩展为目标。JDBC速度最快,但代码量大。Spring的JdbcTemplate做了很好的封装,但仍旧需要Ro转载 2015-09-07 16:53:26 · 918 阅读 · 0 评论 -
Java源码分析:深入探讨Iterator模式
本文最早发表于Sun技术社区java.util包中包含了一系列重要的集合类。本文将从分析源码入手,深入研究一个集合类的内部结构,以及遍历集合的迭代模式的源码实现内幕。下面我们先简单讨论一个根接口Collection,然后分析一个抽象类AbstractList和它的对应Iterator接口,并仔细研究迭代子模式的实现原理。本文讨论的源代码版本是JDK 1.4.2,因为JDK转载 2015-09-08 11:06:55 · 434 阅读 · 0 评论 -
Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm
JDK内置工具使用一、javah命令(C Header and Stub File Generator)二、jps命令(Java Virtual Machine Process Status Tool)三、jstack命令(Java Stack Trace)四、jstat命令(Java Virtual Machine Statistics Monitoring To转载 2014-09-24 18:56:05 · 784 阅读 · 0 评论 -
Java实现文本文件按条件过滤的简便方法
程序开发中经常会碰到处理文本文件中数据的情况,这里通过一个例子来看用java实现文本文件按条件过滤的方法:从文本文件employee.txt中读取员工信息,从中找出1981年1月1日(含)之后出生的女员工。 文本文件empolyee.txt的格式如下:EID NAME SURNAME GENDER STATE BIRTHDAY转载 2014-10-17 10:39:05 · 2988 阅读 · 0 评论 -
java实现跨数据库关联运算的简便方法
Java程序开发中会碰到跨数据库关联运算的情况,这里通过一个例子来看Java实现的方法。例子中sales表在db2数据库中,employee表在mysql数据库中。要将sales和employee表通过sales中的sellerid和employee中的eid关联起来,过滤出state=”California”的所有sales和employee数据。 Sales表的结构和数据如下:转载 2014-10-17 10:19:46 · 9180 阅读 · 0 评论 -
Java中非数据库的结构化数据计算
在JAVA中,数据库计算的套路已经很成熟了,即通过SQL去实现。但是结构化数据并非只存在于数据库中,比如Txt/Excel/xml等也常用来存储结构化的数据。针对此类非数据库的结构化数据应当如何计算呢?本文给出3种解决方案供参考:用JAVA API直接实现、转化为数据库计算以及通用的数据计算层。1、用JAVA API直接实现。JAVA API的好处是可以细致的控制每一个转载 2014-10-17 10:47:33 · 1481 阅读 · 0 评论