Performance
文章平均质量分 70
cywhoyi
这个作者很懒,什么都没留下…
展开
-
ASM通过动态字节码编织JAVA类
最近再写开源的框架,用到ASM字节码框架编织一个类,刚好再看温少写的fastjson中一个ASM的测试类,就模仿着玩起来,对于抽象树的概念比较模糊,主要还是通过opcode生成JAVA类。先简单的仿写一个package com.alibaba.json.test;public class HelloWorld { public static void main(String[...2013-11-05 16:14:08 · 587 阅读 · 0 评论 -
Java 8: From PermGen to Metaspace
As you may be aware, the JDK 8 Early Access is now available for download. This allows Java developers to experiment with some of the new language and runtime features of Java 8. One of these feature...原创 2013-10-13 11:19:09 · 163 阅读 · 0 评论 -
File Serialization的加速度
File读写是我们经常对于File处理经常需要动作,接下来我会用4中方式进行操作,具体在项目中采用哪一种方式,由自己进行判断。最近在Thomas Nagel《What Does It All Mean》,摘录开头一段话:要评估每一种主张,每一条论证和每一套理论,并且尝试着判断它们是否可以被接受,这最终都依赖于每一个人的独立思考,而非听命于权威2B青年方式: private s...2013-10-17 17:10:27 · 108 阅读 · 0 评论 -
Jersey使用HTTP CACHE
在使用Jersey的restful的过程中,对于Http Cache有一定的基础了解,Cache-Control-private/public : private是并不能呗CDN或者代理接受,但是public可以-no-cache,no-store,max-age 属性值用来给Cache的特性设置 @GET @Path("/map") public Respo...原创 2013-10-24 09:28:34 · 120 阅读 · 0 评论 -
扩展下Object Pool的设计
首先需要了解些java并发教程,其实java也是可以通过native的本地方法去操作底层api的,比如大家所知道Aomic、CAS等概念性的操作。下面一篇文章是来源于CSDN的觉得挺好的讲关于unsafe的[url=http://blog.csdn.net/aesop_wubo/article/details/7537278]http://blog.csdn.net/aesop_w...原创 2013-10-30 10:00:42 · 108 阅读 · 0 评论 -
BoneCP+extjs4开源Infographics
使用boneCP已有一段时间,在我还未到现在公司之前,公司采用的是ProxoolDataSource,在使用ProxoolDataSource过程中,碰到的问题异常之多,我开始怀疑这款开源软件质量本身问题,有一个非常显著的问题就是它的主干代码和文档是2007年之后就未动过,后来慢慢看了主流的DS,包括ProxoolDataSource、BoneCP、Druid(阿里温少开源,最崇拜的人)、C3...2013-11-04 16:39:47 · 165 阅读 · 0 评论 -
mybatis自定义解析插件
mybatis自带的解析已经蛮强大,至少我们能够用mybatis简单的语法来表达我们sql拼接时候的语义,比如$、#等诸如此类的符号意思,但是其实你并不喜欢再重新去理解一套它的语法,比如贵公司有自定义的一套组件,也许*代表的意思就是占位符,如果是这样的话,mybatis提供一套语法语义的解析的接口,只需要你注册进去,那么就按照你的想法进行解析。首先我们查看UML图,来查阅下现阶段的myba...2014-04-21 16:40:25 · 192 阅读 · 0 评论 -
Anltr4的编写解释器
Tiny在上周上线TinyUiEnterprise的http://www.tinygroup.org/组件,经过反馈测试发现模板引擎的性能一直有问题,请查看jprofile 当然很多性能问题,我们正在完善中,诸如:非递归DFS、大对象生命周期、异步调用......但是放在我面前的却是把原先ClassLoader加载后,进行调用执行的方式变更为使用anltr的解释性语言去执行。通过一...2015-07-09 13:23:19 · 373 阅读 · 0 评论 -
异步调度设计
平常我们做应用功能的时候,经常会碰到A、B、C等多起事件取数据,进行组装后反馈结果集。 //用户信息userService.getProfile(userId);//用户信用信息accountService.getAccount(userId);//SNSsnsService.getSNS(userId);//send email\smsplatformSe...2015-08-06 14:54:28 · 152 阅读 · 0 评论 -
基于DDD的微服务架构设计
DDD领域驱动设计(DDD:Domain-Driven Design)架构背景: 现有的架构设计实在受不了,业务的反反复复地变化,导致代码圈复杂度之深让人恐惧。之前的微服务架构经验让我更加彻底点,采用DDD领域驱动设计进行整个改变。 随着经过几个月的努力,确实慢慢地体会到ddd的架构设计的优势,聚合根设计能够协助我们整个服务改造,开发起来越来越迅速。 CQRS访...2016-07-20 17:19:43 · 4657 阅读 · 0 评论 -
DDD分布式架构设计的BASE一致性
问题背景: 在DDD的架构设计中最难以解决的就是一致性问题,所以我采纳是BASE的最终一致性的方式,至于最终一致性的概念,不在本博客中阐述,设计理念,不外乎就是弥补的方式。 可用性,无论是传统架构还是CQRS架构,都可以做到高可用,只要我们做到让我们的系统中每个节点都无单点即可。但是,相比之下,我觉得CQRS架构在可用性方面,我们可以有更多的回避余地和选择空间...2016-08-09 16:32:27 · 519 阅读 · 0 评论 -
Spring自定义拦截器配置
前言:公司生产环境频频被报性能瓶颈问题,为了找出问题的所在,现有的很多种方式能够解决,但是为了能够观测到具体的方法,我们想通过拦截那种耗时的方法,然后插入数据库,后台支撑系统能够实时的观察... 为了上述描述的结果,我们采用spring拦截器的方式,通过stopwatch的观察者模式,通过方法进入和方法退出来计算方法调用整个耗时情况 package spring.lifecy...2015-09-27 10:02:49 · 202 阅读 · 0 评论 -
依托于Spring重加载
这几天发现单位同事都在使用JRebel作为热部署工具,它集合多个容器,能够不在重启的情况下进行部署。我们在开发过程中,经常碰到改动xml等配置文件的时候,需要进行重新启动容器,重而带来开发进度缓慢。 我是一个传统的人,感觉WTP部署已经够强悍,但是看着90后小朋友玩这么酷炫的万一,让我由衷的觉得更加无聊的事情,不就是能够热部署,大不了写一个定时任务时不时的去加载xml文件,一直检测文件的...2015-10-05 22:13:27 · 259 阅读 · 0 评论 -
异常处理
首先提倡下Hibernate的验证器,功能强大且使用方面,Hibernate Validator提供包括国际化,传统的字符空,非法的输入等,而且给了很友善的message信息。public class BeanValidators { /** * 调用JSR303的validate方法, 验证失败时抛出ConstraintViolationException, 而不是返回con...2015-10-08 16:12:54 · 179 阅读 · 0 评论 -
基于Netty4网站架构
前言: 本人所在公司在业内比较知名的公司,但是其电商平台真的不敢恭维,都称不上架构,跟传统的软件公司差不多springMVC+Mybatis+redis挂载在nginx+tomcat下,不能说它有问题,就是在高并发、低IO消耗,且移动端使用频繁场景情况下,觉得需要进行改造,所以采用如下的方式: 说明:网关层:我们有部分是放在阿里云平台上,那么在运维层...2015-10-28 10:44:57 · 282 阅读 · 0 评论 -
Vertx与Spring配合完成DML操作
前言vertx相较于Tomcat不同之处引用oschina上关于vertx的文章,感觉他说得非常明白,不在这里过多讨论,这里我简单说明下如何在vertx和spring配合完成基础任务。 服务启动: public static void main( String[] args ) { ApplicationContext context = new Ann...2015-10-29 14:26:58 · 686 阅读 · 0 评论 -
基于Spring支持JMX
前言: 基于Vert写的组件,其中在使用过程中碰到若干瓶颈问题,如果每个组件都采用日志方式,查看资源使用情况略微低廉点,所以采用了JMX来进行管理工作。 提到JMX,就必须按照JMX的规范,写一大堆的MBean、MXBean、Agent等,想起来就挺麻烦的,这个时候想起来Spring支持JMX,发现虽然原理差不多使用MXBeanServer.register,但是就...2015-11-08 00:43:13 · 286 阅读 · 0 评论 -
从demo到支持高并发
前言: Java语言作用很大,因有众多分门杂类的开源框架导致Javaer关注高并发细节问题偏少,常常被面试或者面试的时候,别人总是问你current的包,但是却很少人会询问你,“这段代码在高并发的情况下,会出现问题?我们应该如何改写呢?”所以本篇博客我想从最简单的demo,到支持高并发场景的,如果觉得过程中有问题问大家赐教。 案例: 经典多线程并发问题就是生产者消费者...2016-02-25 18:16:26 · 349 阅读 · 0 评论 -
轻量级的对象池
Pool在N多环境下碰到,比如连接池、线程池、缓存池...当某一对象从池中取得,那只有等待被用完放回去以后,其它的线程才能再次从池中获取。对象在池中是具有自己生命周期:创建、验证、使用、销毁等等。Pool的方式也许是最好的方式用来管理同一的资源。 运用的场景:高频率的运用同一的资源对象大且很消耗内存(DB连接)需要长时间的初始化IO消耗大对象非线程安全 A...2013-10-10 16:32:57 · 110 阅读 · 0 评论 -
Spring Cacheable
缓存已经在我们的系统中成为性能提升最重要的方式,页面级缓存、系统级缓存、数据缓存、数据库内置缓存等等一些列缓存操作,今天要告诉大家spring其实也提供缓存,当然它只支持单点缓存,所以被忽略,局限性比较大,其实N多种框架都是带有缓存。不过最近JavaOne最近一次的大会上,提到如何办到单机下性能最优化,其实包括国内点评网在内的以java为核心技术的互联网公司为了省成本,其实也在最大限度发挥单机的...2013-10-01 21:43:30 · 232 阅读 · 0 评论 -
汇聚10个常用调优工具
文章背景:java在N多领域依旧比较活跃,特别著名的一句话“一次编译,运行在任何平台”。接下来展示8个常用的java开发人员在环境调优的工具。 VisualVMJVisualVM是JDK1.6之后推出一款非常卓越的检测工具,包括内存、线程、CPU GCViewer相当于-verbose:gc and -Xloggc:<file>,它能够同时计算垃圾回收所产生...2013-11-21 15:50:58 · 143 阅读 · 0 评论 -
mybatis框架的设计思路
一直比较喜欢使用这种小的框架,不太喜欢大而复杂的框架,原因比较简单:1.hold住,为己用2.想看下人家的思路,以便以后自己学习而用3.面试时候,忽悠住他人4.代码的优雅都的提炼 mybais是较早引入的开源框架,记得10年刚毕业没多久,SSH很火,我这人就耐不住寂寞,刚好网上推崇一个叫ibatis的框架,那个时候对于ORM已经有较浅的认识,推崇给同事和朋友,但是没人鸟...2013-12-12 15:53:39 · 221 阅读 · 0 评论 -
SpringFramework终极面试策略
在javacodegeeks上看到一篇关于spring面试的问题,推荐给大家http://www.javacodegeeks.com/2014/05/spring-interview-questions-and-answers.html,基本上已经覆盖整个spring框架面试时候提到的问题,比较全面。 文章总体比较简单,我就不在这里全部翻译,大概把几个不常面试的简单描述下spring...2014-05-10 09:48:47 · 110 阅读 · 0 评论 -
Tomcat Listener使用
能拿Tomcat怎么办?Tomcat是非常有名的开源容器,因其开源我们可以对其做定制化的改变,而且Tomcat在其配置文件方面做了很多注释说明摘要,帮助我们更好的定制化我们所需的功能点。 New Tomcat Listener首先看下Tomcat整个比较有名的Listener,在我们的conf/server.xml文件中一目了然类图NEXT 自定义的Listener,本...2014-06-04 14:26:12 · 1822 阅读 · 0 评论 -
Tomcat Valve使用
上一篇关于Listener理解成监听信息,那么Valve就是用来过滤信息用的,而最简单以及朴实无华的Valve非org.apache.catalina.valves.AccessLogValve莫属。AccessLogValve的类图设计 自定义的Valve首先查看下实现ValveBase接口的Valve 设计一个固定的ip和地址才能进来valve,如果按照传统方式有一...2014-06-06 18:04:43 · 1534 阅读 · 0 评论 -
Google Analytics统计ITEYE上blog访问
如何通过Google Analytics去分析在ITEYE上博客访问?其实Google Analytics在任何地方都是一样的,包括使用wordpress建立的blog,在这里特别表扬下iteye,我虽然有自己的的官方blog,包括github和wordpress构造的,但是大部分查看还是iteye引来流量比较大一些,为了解惑之前http://jbuluo.iteye.com/blog/2...2014-02-09 17:13:17 · 113 阅读 · 0 评论 -
Springinsight Web Application Profiling
TC SERVER是一个spring组织改装过的tomcat,提供的开发版里面支持程序的性能分析,最直接的一个功能是能以图形的方式显示出一个请求里面每个 方法及SQL所耗费的时间,这对调优程序有较大的帮助,各位可以在本机进行程序调试时使用。vFabric tc Server 是构建和运行 Java Spring 应用程序的最佳平台,为企业用户提供所需的轻量级服务器,满足其操作管理、...2013-09-01 16:18:29 · 127 阅读 · 0 评论 -
BoneCP的transactionRecoveryEnabled涵义
BoneCP framework的整个框架设计,其实还是比较容易看懂的,大致用两天左右时间把源代码看了大概。 发现能够拿得出比较有意思的点应该是配置transactionRecoveryEnabled参数的意义,虽然在xml配置里面只是配置boolean类型true、false,但是内置的涵义挺有趣、挺cool。 了解transactionRecoveryEnabled参数首先...原创 2013-09-05 16:12:25 · 135 阅读 · 0 评论 -
翻译一篇关于ConcurrentHashMap的扼要
线程安全问题在我们应用中无处不在。线程非安全的HashMap的put()、get()操作会触发引起死循环的问题。有三种不同的同步map操作1.HashTable2.Collection.synchronizedMap(Map)3.ConcurrentHashMapConcurrentHashMap实在JDK1.5以后引入,它是最为线程同步Map中优先级被推荐高于HashTable...2013-09-10 10:13:06 · 265 阅读 · 0 评论 -
GlassFish和AT7比较
server:thinkpadi410ios:ubantu12webapp:jersey+spring+ibatisdatabase:mysql5.5test tool:jmeter\apache benchmark50并发rest请求CAT:BIO glassfish: 200个并发请求CAT BIO: CAT NIO: Glassfish: 5...2013-09-13 13:18:22 · 108 阅读 · 0 评论 -
GC基本调优工具介绍
上次提到了spring insight http://cywhoyi.iteye.com/blog/1934992这次需要使用到以下工具 Eclipse Indigo Release Memory Analyzer via IBM Support Assistant 4.1 (HotSpot Heap Dump analysis) Java VM: Windows H...2013-09-16 17:43:05 · 134 阅读 · 0 评论 -
理解ThreadLocal的涵义
自从碰到N多个性能问题后,看是注意使用ThreadLocal的使用,本章只是体现如何使用ThreadLocal,ThreadLocal在性能方面的提高以及在内存分配方面的优势不再讨论范围内。ThreadLocal的扼要一个线程有它独立的流程的stack,在web的应用容器中都有Thread Pool,因为线程的创建都是重量级的消耗。weblogic、glassfish、jboss都是...2013-09-25 12:57:16 · 95 阅读 · 0 评论 -
Core Java Interview Questions Answers in Finance domain Read more: http://javar
1. What is immutable object? Can you write immutable object?Immutable classes are Java classes whose objects can not be modified once created. Any modification in Immutable object result in new o...原创 2013-09-25 14:05:47 · 173 阅读 · 0 评论 -
通过IO和NIO对于文件的copy
ExecutorService是非常好用的并发工具,在并行的环境下我们经常通过ExecutorService去回调执行任务。ExecutorService的任务机制 我现在有一本鸟哥私房菜的Linux书籍大约80M,我想通过3种方式(IO、NIO、NIO buffer),期待是在80ms内完成。Solution 1: Stream Copy public static v...2013-09-26 14:38:11 · 112 阅读 · 0 评论 -
Batching Opertaion
我们常常说Batching(批量增加、批量操作...),那么Batching会增加延迟性,特别针对于本身延迟比较low的系统。但是从我跟人角度来说,如果Batching的算法如果做得好,不仅会带来吞吐量的增加,而且也降低整个系统的延迟性。在我们的网络传输时候,经常采用把messages/even捆绑在一起形成数据包,然后提高网络传输的吞吐量,同样我们也会类似的方式在系统中IOPS来帮助...2013-09-27 10:06:46 · 129 阅读 · 0 评论 -
String JVM memory internals
有时候也会面试别人,也会被别人面试,问题基本上都会牵扯到String案例,例子都会牵扯到hashcode、equal这些,但是回答的时候基本上是照本宣科的方式应付,今天给大家普及下一些基础String JVM memory internals,以便于大家能够在基础方面有点不一样回答,给面试官留下深刻印象。因为在类的编译中会使用到javap -c -verbose,最好大家能够预先普及下知识...2013-09-27 11:24:31 · 108 阅读 · 0 评论 -
结合Comparable接口优化排序,给新员工
如果抛开语言的限制,给你Turbo C的让你写一个排序规则,我估计很多人会开始思考空间、时间复杂度问题,想到一些列的排序算法归并、冒泡、插入、选择等基础的排序规则,但是落实到项目中,我在看公司很多员工方式都是冒泡或者采用默认的JDK自选的算法进行算法,这对于IT人士而言,如同行尸走肉,你写得每一行代码,其实都需要考虑清楚,要对你的代码负责。在本次项目重构过程中,我看到N多冒泡排序,而且是一...2013-09-28 09:35:14 · 108 阅读 · 0 评论 -
使用Spring-Cloud搭建微服务架构
搭建一套微服务架构的,我个人觉得必须如下模块:config-serviceapi-gatewaycircuit-breakerregistrymonitor***-service第一步构建config-service,登录http://start.spring.io/,选择gradle、maven,基础信息,更重要是选择所需要依赖的 <dependen...2017-02-16 14:00:22 · 582 阅读 · 0 评论