`
lijingyao8206
  • 浏览: 217103 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
        在Java 6版本之后JVM引入了栈图(Stack Map Table)概念。为了提高验证过程的效率,在字节码规范中添加了Stack Map Table属性,以下简称栈图,其方法的code属性中存储了局部变量和操作数的类型验证以及字节码的偏移量。也就 ...
这一篇其实是对前面一篇《JVM字节码执行模型及字节码指令集》的一个延续和举例。结合例子看一下条件判定和无条件跳转指令对虚拟机栈的数据操作。       我们先来看一段代码例子。这里addEspresso()添加浓度方法会判断参 ...
    一个Java类的生命周期概括来说需要经过加载、验证、准备、解析以及初始化、使用及卸载的过程。这里不展开加载Class 的过程以及Class文件格式(后期会陆续探讨)。在执行过程中,JVM是如何把Class文件里的字节码转换成我们的虚拟机栈的操作指令,以及整个虚拟机栈的内部数据结构是怎样的,这篇文章后续会详细介绍,并且稍微扩展下JVM规范中的一些字节码指令集。     其实这篇文章的主要目的还是为了引入后续要介绍的ASM框架的CoreApi 中的Method接口和组件来做一个铺垫。我们知道,Class文件是编译后的以8byte为单位存储的二进制字节流,想要生成和解析一个Class文件 ...
之前一篇简单介绍了一下ASM框架。这一篇继续对CoreApi进行扩展。这里还是继续对ClassWriter ,ClassReader和ClassVisitor的应用的扩展。前面一篇主要介绍的是ClassWriter和ClassReader单独应用的场景。这一篇把这两者作为producer(ClassReader)和consumer(ClassWriter)来结合起来介绍一下另外一些用途。 一、动态迁移转换类 事件的生产者ClassReader通过accept方法可以传递给ClassWriter。上一篇我们知道ClassWriter继承自ClassVisitor。而ClassReader可 ...
    ASM是一个提供字节码解析和操作的框架。Cglib框架就是基于ASM框架实现的,被广泛应用的Hibernate,Spring就是基于Cglib 实现了AOP技术。 在说到AOP的Java实现,可能会优先想到java的Proxy api,通过invoke方法拦截处理相应的代码逻辑,但是proxy 是面向接口的,被代理的class的所有方法调用都会通过反射调用invoke 方法,相对性能开销大。另外的还有Java 5提供的Instrument,比较适用于监控检查方面,但在处理灵活的代码逻辑方面并不合适。 ASM 框架对用户屏蔽了整个类字节码的长度,偏移量,能够更加灵活和方便 ...
         最近一段时间开始复习Objective-C,本来以为看过的东西复习起来很快的,但是发现基本上还是重新来一遍的感觉。比如,我想敲一个Objective-C的Decorator模式示例,然后发现无从下手。13年年初的时候,看完了objc基础教 ...
对于大数据量关联的业务处理逻辑,比较直接的想法就是用JDK提供的并发包去解决多线程情况下的业务数据处理。线程池可以提供很好的管理线程的方式,并且可以提高线程利用率,并发包中的原子计数在多线程的情况下可以让我们避免去写一些同步代码。     这里就先把jdk并发包中的线程池处理器ThreadPoolExecutor 以原子计数类AomicInteger 和倒数计时锁CountDownLatch的一些常用api介绍下。   一、ThreadPoolExecutor JDK建议我们用工厂方法来创建线程池。Executors有四种工厂方法 1、Executors.newCachedThre ...
  整篇基于cglib的3.0 版本实现来介绍下Cglib的一种应用场景。Cglib的底层是调用ASM来实现动态链接的,所以性能方便会比Java原生的Proxy的性能提升很多。Spring框架的AOP也是基于Cglib来实现的,这里不继续扩展ASM框架实现。大家感 ...
    昨晚只睡了两个小时来改进这个属于我们“下午茶”师徒群的同学们。主要是用Flex做前端,Java做后台。其实整个系统搭建起来很容易,因为Flex&Java应该说是我最熟悉的吧。为了快速和友好的交互,当然还是用这个。不过这次比较傻的是,前几天实现的用户列表的增删查改是用iBatis,主要原因是想基于以前一个简单的测试项目,前面几篇博文中有详细的介绍。可是,昨晚抽风又想用Hibernate了。这样就是说我需要两个信道“AMF”和“RTMP”。所以就会出现一些问题。不过还好,最后发现问题应该是AMF信道的配置。Channel当时临时写在了客户端代码里面。其实应该写在一个prope ...
         昨天的论道麓山——蓝杰IT论坛 , 让我有很多感慨。今天发了一条微博“ 哪怕知道希望很渺茫~~人有的时候就是执拗般地坚持~~不计较原因,不在乎结果 ” 。我很喜欢这样的自己,但有时候自己并不是这样的。总是说一些口不对心的话,做一些行不由衷的事。这一阵子看《犬夜叉》,感觉到,一个人想要保护另外一个人的时候会想让自己变得强大。这一点无论男女都是一样的吧。每次要出寝室门的时候会照照镜子扎起头发,才会注意到自己是个女生。昨天在论坛上演讲时说“敲代码的时候基本上就忘记性别了” 的时候才发现,我原来已经在大学期间默默地改变了一些了,莫名其妙地。 有些事情,不去 ...
      年快过完了,寒假也快结束了。与以往不同的是,这次放假不是回学校而是直接去公司实习。现在寒假过了大半了,想唠叨唠叨……      刚放假的时候买了6本书,包括Maven,云计算,架构设计,经济管理,世界咖啡以 ...
     之所以加上lucene来建立搜索引擎,是因为其轻便简单以及快速。Lucene作为开源社区很好的建立搜索引擎的框架也给我们(Java程序员)提供了很友好的方式。这次介绍的也是简单的整合,对于Lucene的一些复杂特性还请大家仔细阅读文档以及书籍或求助Google以及源码。       其实这篇博客早就要写了,只是最近遇到了非常纠结的事情,那就是要考一门我完全不会的课——计量经济学。都是模型,公式,觉得数学和经济学真的是一家人,而我和它们毫无缘分。今天公益劳动实验室的老师说搞技术的工作累,费心费脑,其实觉得也到差不多各行各业,都要承受压力,都要有自己的突破。。。God,跑题……      ...
     现在总结一下iBATIS框架中用到的优美的设计模式。并不是强调设计模式有多强大或者iBATIS有多牛叉,只是在看源码的过程中的一些丝丝缕缕,觉得有很多值得学习的地方。按照不同层次的实现一点点分析和整理。以下的类 ...
     刚看了个恐怖片,总算有点灵感,继续总结Spring和iBATIS的东东。本来想今天梳理下iBATIS源码阅读时总结的经典设计模式。但是现在思绪比较凌乱,留到下一次吧。       先说事务处理。iBATIS对于事务的支持比较基本的是基于JDBC的,当然也有JPA,EXTERNAL。这里就说说JDBC。其实看源码就知道,源码也只是对JDBC事务管理进行了轻量封装。核心处理在TransactionManager和Transaction。Spring对于iBATIS的事务支持也是折腾到jdbc中。       1)可以看一下下面的beans.xml中有关transactionManager的 ...
    iBatis和Spring的进度依然如昨。回馈社区的时间到了,今天是Flex的时间。以前用Java+Flex做一般用LCDS的dataservice组件,其实就是偷懒。因为最近研究了下Spring+iBATIS,也是出于项目需要,决定勤奋一回,用LCDS的RPC服务吧。RPC在FlexLCDS中支持三种服务——WebService,HttpService以及本文用的RemotingObject。LCDS官方文档是一手资料,虽然没人翻译,依然一个人孤独和单词作战到底吧。依然用比较清晰的思路和模式为童鞋们呈现集成环境下开发一下简单web程序的过程。另,最近总是看到分布式之类的讨论,RPC也是 ...
Global site tag (gtag.js) - Google Analytics