![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 88
wxy_fighting
这个作者很懒,什么都没留下…
展开
-
Kafka&MetaQ
Memorphosis介绍:Memorphosis是一个消息中间件,它是linkedin开源MQ------kafka的Java版本,针对淘宝内部应用做了定制和优化。Memorphosis做到了啥:顺序(没做到,只能保证先进先出)安全(部分如磁盘掉电会最多丢失1000条消息或10秒内信息)性能(性能很好单台meta,10个同组256大小每秒4.5W)消耗(消耗低单台原创 2013-04-27 15:44:36 · 3437 阅读 · 0 评论 -
Apache Common-validator验证框架
Commons-Validator(一) Commons -Validator包用来把验证规则程序提取出来,以供重复使用。这个包可以使用在Struts中,也可以独立的应用在任何其它的应用中。用户可以通过 java类的方式自定义验证方法,也可以在配置文件中通过正则表达式配置验证方法。它不但支持服务器端的验证,客户端的验证也支持,具体需要使用tag把 相应的js方法写入相应的页面原创 2013-04-30 14:56:44 · 8464 阅读 · 0 评论 -
关于ThreadLocal
正确理解ThreadLocal: http://www.iteye.com/topic/103804 简明扼要,再谈ThreadLocal和synchronized:http://www.iteye.com/topic/179040 关于ThreadLocal模式的体会:http://www.iteye.com/topic/617368 Thread原创 2013-04-30 15:38:18 · 643 阅读 · 0 评论 -
RMI、Hessian、Burlap、Httpinvoker、WebService的比较
一、综述本文比较了RMI、Hessian、Burlap、Httpinvoker、WebService5这种通讯协议的在不同的数据结构和不同数据量时的传输性能。RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。Hessian和Burlap是caucho公司提供的开源协议,基于HTTP传输,服务端不用开防火墙端口。协议的规范公开,可以转载 2013-04-30 15:40:36 · 893 阅读 · 0 评论 -
Java集合的Stack、Queue、Map的遍历
Java集合的Stack、Queue、Map的遍历 在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack、Queue、Map类型的遍历,还是有一些讲究的。下面是常用的写法: 一、Map的遍历Java代码 import java.util.HashMap; import jav原创 2013-04-30 15:54:31 · 3279 阅读 · 0 评论 -
Java 7已经完成的七大新功能
Java 7已经完成的7大新功能:1)对集合类的语言支持;2)自动资源管理;3)改进的通用实例创建类型推断;4)数字字面量下划线支持;5)switch中使用string;6)二进制字面量;7)简化可变参数方法调用。 下面我们来仔细看一下这7大新功能: 对集合类的语言支持Java将包含对创建集合类的第一类语言支持。这意味着原创 2013-04-30 15:46:05 · 973 阅读 · 0 评论 -
Tomcat启报错,error:too many open files
原因:tomcat下面工程太多,其它一些项目正常启动,但我们的项目启动不了,并且项目报出的错误根本找不到原因,因为报出的错是开源项目里的。项目错误:Java代码 SEVERE: Servlet.service() for servlet default threw exception java.lang.NoClassDefFoundError:原创 2013-04-30 15:52:18 · 1187 阅读 · 0 评论 -
log4j xml模式配置
Xml代码 xml version="1.0" encoding="UTF-8"?> > log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> appender name="CONSOLE" class="org.apac原创 2013-04-30 15:56:30 · 986 阅读 · 0 评论 -
javassist:增强型的java反射工具,获取方法参数名
java的反射是不能获取方法的参数名的。比如:public String concatString(String param1,String param2){ return param1+param2; } 想获取"param1",和"param2"这个参数名,貌似是不行的。借助第三方包javaassist就可以获得。 整合原原创 2013-04-30 15:59:21 · 4026 阅读 · 0 评论 -
ThreadLocal和线程同步机制相比有什么优势呢?
ThreadLocal和线程同步机制相比有什么优势呢?ThreadLocal和线程同步机制都是为了解决多线程中相同变量的访问冲突问题。在同步机制中,通过对象的锁机制保证同一时间只有一个线程访问变量。这时该变量是多个线程共享的,使用同步机制要求程序慎密地分析什么时候对变量进行读写,什么时候需要锁定某个对象,什么时候释放对象锁等繁杂的问题,程序设计和编写难度相对较大。而ThreadLocal则原创 2013-04-30 16:02:20 · 784 阅读 · 0 评论 -
apache 关于对象数据的复制工具PropertyUtils类和 BeanUtils类的 copyProperties方法
PropertyUtils类和 BeanUtils类的 copyProperties方法语法一致,功能也几乎一样。它们的区别,很多人已经给出了很专业的归纳,今天我又多发现了一个,这个问题纠结了很久,分享出来供大家参考。BeanUtils.copyProperties(A,B);如果B中的Integer类型的数据是null的,那么通过这个方法复制给A后,这个null的Inte原创 2013-04-30 15:33:07 · 873 阅读 · 0 评论 -
Velocity字符串模板替换
Java代码 public class VelocityTest { private static Properties props = new Properties(); static { props.setProperty(Velocity.INPUT_ENCODING, "UTF-8");原创 2013-04-30 15:43:57 · 6358 阅读 · 1 评论 -
精妙的单例类(Singleton)
Effective Java》中给出了一种精妙Singleton的解决方法,充分利用了Java虚拟机的特性 Java代码 public class Singleton { // an inner class holder the uniqueInstance. private static class Si原创 2013-04-30 16:00:52 · 723 阅读 · 0 评论 -
java几种对象验证框架
(1) Apache Commons Validator Commons -Validator包用来把验证规则程序提取出来,以供重复使用。这个包可以使用在Struts中,也可以独立的应用在任何其它的应用中。用户可以通过 java类的方式自定义验证方法,也可以在配置文件中通过正则表达式配置验证方法。它不但支持服务器端的验证,客户端的验证也支持,具体需要使用tag把 相应的js方法原创 2013-04-30 14:52:46 · 3256 阅读 · 0 评论 -
Java 8 的重要新特性以及 Java 9、10 的发展规划
我们一直在期待着Java 8的新功能,虽然很大一部分是对Java 7的扩展,发布时间也一推再推。但如今甲骨文终于承诺:新版本将是彻底的变革而不仅仅是Java 7的扩展。那Java 8到底是什么样的呢? 甲骨文的Java总架构师马克•雷纳德在2011年JavaOne大会上为大家透露了Java 8的新功能,同时也谈到了一些关于Java 9的计划。他说,Java 7未能实现五个关键的功能是非原创 2013-04-30 15:46:41 · 765 阅读 · 0 评论 -
滕振宇谈如何进行单元测试
说起单元测试的好处相信大家都能列举出不少,可是很多时候,开发人员面对自己产品的代码,想写单元测试却无从下手,久而久之,便会有人大喊:“我讨厌单元测试。”资深敏捷咨询师腾振宇(Daniel Teng)在GTUG-TopGeek开发工程管理沙龙就以此为题,结合最近的一个项目,和大家分享了他对单元测试的一些看法。Daniel先介绍了下最近的一个项目,虽然不是遗留系统,但代码已经惨不忍睹,而且缺乏原创 2013-04-30 15:50:03 · 1192 阅读 · 0 评论 -
String.format使用
JDK1.5中的String.format的用法看了一下,写的文档很详细,但没有适当的例子,看起来容易,用起来调试了好一会儿,费时死了。下面是一个中文版的说明:http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/util/Formatter.html#syntax文中的%[argument_inde原创 2013-05-01 09:30:55 · 1024 阅读 · 0 评论 -
JDK Aarrays 类中的二分查找方法
String str [] = {"cc","ee","bb","aa"} Arrays.binarySearch(p1,p2) 查找到元素,则返回元素下标值,未找到返回负值注:执行 Arrays.binarySearch(str,"bb") 先对 str进行排序 Arrays.sort(str),二分查找是针对有有序的集合或数组原创 2013-05-01 09:32:54 · 1722 阅读 · 0 评论 -
开放平台两三点感悟(下)
产品化 09年8月,阿里软件被多家子公司合并,我主动要求从云公司来到淘宝,因为我还有没有完成的目标,开放平台,同时也只有在这里我才会体会到产品化的含义,踏踏实实的在我30岁的时候经历一个产品,而不在存粹的技术实验室中打滚。 虽然以前和淘宝的同学一起合作走了大半年,但是进入TOP团队的时候,其实对整个团队和技术格局并不了解,所以从最基础学习,给大家打杂解决问题转载 2013-05-02 10:22:53 · 669 阅读 · 0 评论 -
Hessain调用expected end of map ('z') at '?'错误原因
调用的接口与实际的接口参数个数、类型不一样 Java代码 com.caucho.hessian.client.HessianRuntimeException: com.caucho.hessian.io.HessianProtocolException: expected end of map ('z') at '?' at com.原创 2013-05-01 09:32:06 · 2149 阅读 · 0 评论 -
通过批处理自动配置环境变量
wmic ENVIRONMENT create name="JAVA_HOME",username="",VariableValue="D:\Program Files\Java\jdk1.5.0_04"wmic ENVIRONMENT where "name='PATH' and username=''" set VariableValue="%PATH%;%%JAVA_HOME%%\bin原创 2013-05-01 09:33:29 · 623 阅读 · 0 评论 -
查询数据库中不存在的ID
假设你数据库有个A表: IDNAME1aaa2bbb3ccc4ddd 需求:给你几个ID,返回A表中不存在的ID? 给你1,2,8,9 返回8,9. 1. 一般会这么处理:select id from A where A.ID in (1,2,8,9)原创 2013-05-01 09:33:40 · 2865 阅读 · 1 评论 -
什么是整洁的代码(Clean Code)?
什么样的代码才是真正好的、整洁的代码?来看看大牛们怎么说。 Bjarne Stroustrup,C++之父: 引用我喜欢优雅、高效的代码: 逻辑应该是清晰的,bug难以隐藏;依赖最少,易于维护;错误处理完全根据一个明确的策略;性能接近最佳化,避免代码混乱和无原则的优化;整洁的代码只做一件事。Grady Booch,《面向对象分析与设计》作者:原创 2013-05-01 09:35:17 · 878 阅读 · 0 评论 -
8种常见的Java不规范代码
在工作上,我最近对一个现有的Java项目代码进行了清理。完成之后,我发现了一些反复出现的不规范代码。所以,我把它们整理成了一个列表出来分享给我的同行希望能引起注意并改善代码的质量和可维护性。这个列表不区分顺序,全部来自一些代码质量检查工具,如 CheckStyle, FindBugs 和 PMD。在Eclipse中格式化源代码并管理import语句Eclip原创 2013-05-02 10:19:15 · 826 阅读 · 0 评论 -
PipeComet测试
PipeComet这个支持长连接,异步请求事件处理框架做了测试也快有5天了,这里做一个简单的总结,但这个文档中的数字不能作为最终容量的定论,后续还会在优化后有进一步的测试。同时这个文档更倾向于分享过程中的遇到的一些问题,可以避免走一样的弯路。 测试环境:1台部署了Jetty Web容器作为PipeComet服务端。2台windows测试机部署了两个LoadRunner,作为压力测试转载 2013-05-02 10:21:04 · 631 阅读 · 0 评论 -
耗内存应用优化实际案例
这里分享的是一个分布式分析系统的Master内存消耗状况的优化,有些比较特定的优化未必适用于其他系统,但是从这一系列优化过程中,应该能带给其他系统在做设计时提前考虑一点优化点。 下面先描述一下背景,看了背景可以对后续的优化点可以比较清楚一些,注意,部分设计仅适用于大量计算中,会牺牲可维护性来换取性能提升。最后一点优化应该是比较有通用性意义的。 背景:转载 2013-05-02 10:21:13 · 761 阅读 · 0 评论 -
Web服务请求异步化介绍(概念篇)
前话 在前面的文章中,先给出了Web服务请求异步处理的压力测试报告,从数据角度描述了支持Web请求异步化的容器在不同并发用户下的处理能力及性能消耗。本文从概念的角度对于应用系统异步化,Web服务请求异步化和Web请求异步化规范及实现三方面做一个介绍,为系统异步化改造做好基础准备。(同样,文中大部分都是个人意见和想法,非完全正确,欢迎讨论)应用系统异步化转载 2013-05-02 10:22:12 · 799 阅读 · 0 评论 -
javax.net.ssl.SSLHandshakeException: sun.security.validator 问题解决,与环境有关
用httpclient访问https 资源时,会出现异常,与环境也有关系,有些机器请求正常. 错误详情:Java代码 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.securi原创 2013-05-01 09:31:33 · 5203 阅读 · 0 评论 -
java递归遍历文件
this recursive functionJava代码 public class Test { public static void main(String[] args) throws IOException { File file = new File("E:\\plan"); Test原创 2013-05-01 09:32:30 · 810 阅读 · 0 评论 -
Java语言中的两种异常
Java提供了两类主要的异常:runtime exception和checked exception。所有的checked exception是从java.lang.Exception类衍生出来的,而runtime exception则是从java.lang.RuntimeException或java.lang.Error类衍生出来的。 它们的不同之处表现在两方面:机制上和逻辑原创 2013-05-01 09:32:41 · 672 阅读 · 0 评论 -
高效代码审查的十个经验
代码审查(Code Review)是软件开发中常用的手段,和QA测试相比,它更容易发现和架构以及时序相关等较难发现的问题,还可以帮助团队成员提高编程技能,统一编程风格等。1. 代码审查要求团队有良好的文化团队需要认识到代码审查是为了提高整个团队的能力,而不是针对个体设置的检查“关卡”。“A的代码有个bug被B发现,所以A能力不行,B能力更好”,这一类的陷阱很容易被扩散从而影原创 2013-05-02 10:18:53 · 532 阅读 · 0 评论 -
如何避免重构带来的危险
重构代码很危险,它会给测试工作增加巨大的负担。除非你的程序需要重构,一定不要轻易重构代码。我这里所说的并不是把一个for循环改成while 循环,或把一个StringBuffer改成StringBuilder,我说的是大动作,例如重写一个方法,一个函数,甚至整个类或包。如果你缺乏对一 个方法或一个类的了解,那你重构它的条件就不充分。即使你有一个天才的计划,你也需要和团队一起设计其中重大的修改。原创 2013-05-02 10:19:03 · 740 阅读 · 0 评论 -
Beatles小记-分布式数据流分析框架(二)
局部设计首先要说明的是,这部分内容和第一篇不同,必须对照代码看才会理解其中的含义,光看设计实现会比较难懂其中所说的细节点。代码:https://github.com/cenwenchu/beatles IComponent: 做系统就像搭积木一样,这些组件最后都会拼装起来,而积木往往由于内部机制可定制化需要config,同时组合在一起的积木往往会有一转载 2013-05-02 10:20:16 · 621 阅读 · 0 评论 -
Beatles小记(三)-分布式数据流分析中Master的横向扩展
读前先看: 这篇文章主要讲述的是beatles流式数据分析框架中对于master的横向扩展真实的设计演进,是beatles框架介绍的第三篇,看第三部分的时候如果看过前两篇文章,这篇文章的递进应该比较容易理解(如果看过前面的代码,那么会更深入的理解其中的细节,文字图片描述一分钟,代码写写1个周)。如果没有看过前两篇,那前提你要理解hadoop等常用的分布式分析系统再看,否则最后可转载 2013-05-02 10:20:32 · 752 阅读 · 0 评论 -
细节优化提升资源利用率
这里通过介绍对于淘宝开放平台基础设置之一的TOPAnalyzer的代码优化,来谈一下对于海量数据处理的Java应用可以共享的一些细节设计(一个系统能够承受的处理量级别往往取决于细节,一个系统能够支持的业务形态往往取决于设计目标)。 先介绍一下整个TOPAnalyzer的背景,目标和初始设计,为后面的演变做一点铺垫。转载 2013-05-02 10:20:42 · 926 阅读 · 0 评论 -
对同学性能优化总结的一点回复
写这篇文章的目的是希望能够分享给一些处于技术上升阶段的同学,更快找到技术分享关键所在。(当然自己能力有限,有些内容也就自己根据自己实际情况来思考) 记得这两届淘宝技术大学分享的时候,都有同学问我,能说清楚技术这件事情是自己天生的能力还是后天培养的,如果是后天培养的,那么靠什么方式提升自己。我把技术人员成长分了个类:1.会解决问题的。2.会分析问题的。3.会总结问题的。4.会深化思考转载 2013-05-02 10:21:46 · 512 阅读 · 0 评论 -
Web服务请求异步化介绍(实践篇)
在概念篇介绍完以后,开始实际的对TOP开始做技术改造。(这篇东西更像是对短期工作的总结和汇报,写的不是很详实,后续会有一个ppt来深化异步化的一些思想)下面将第一阶段的工作做个总结,第一阶段主要做了以下几个方面的事情:1. 典型taobao后台应用(主要是用到了多个内部组件)的Jetty迁移。2. TOP管道化体系的异步改造。3. 测试不同容器不同模转载 2013-05-02 10:22:03 · 691 阅读 · 0 评论 -
一个输入框作为两种条件查询
一个输入框作为两种条件查询,可能描述不是很好,看图: 商品表 product p_id, p_name oracle:select * from product t where t.p_id||p_name like '%条件%'原创 2013-05-01 09:31:15 · 2304 阅读 · 2 评论 -
java 获得相对偏移 N 月的时间
Java代码 /** * 根据原来的时间(Date)获得相对偏移 N 月的时间(Date) * @param protoDate 原来的时间(java.util.Date) * @param dateOffset(向前移正数,向后移负数) * @return 时间(java.util.Date)原创 2013-05-01 09:31:48 · 1161 阅读 · 0 评论 -
Tomcat6 配置多虚拟主机,多域名绑定一IP
实现效果:http://localhost 访问一个项目例如一个助学网。http://localhost1 访问一个项目例如一个办公系统实现方案,需要修改两个地方一个是C:\WINDOWS\system32\drivers\etc\hosts文件,改为127.0.0.1 localhost127.0.0.1 localhost1原创 2013-05-01 09:33:06 · 666 阅读 · 0 评论