首页
Loop in Codes
取消

实现JVM中的JIT

在JVM中,JIT (Just-in-Time) 即时编译指的是在Java程序运行过程中JVM优化部分指令为本地指令,从而大幅提升性能。在上一篇文章写一个玩具Java虚拟机中实现了一个基本可以运行Java字节码的JVM。本篇文章描述我是如何在这个玩具JVM中实现JIT的。 推荐文章“How to JIT - an introduction”,介绍了JIT的基本实现原理。作者把JIT分为两个...

写一个玩具Java虚拟机

本文描述了一个用Java实现的玩具JVM,用Java实现的好处是可以不用处理JVM中的垃圾回收。 Java虚拟机是基于栈的虚拟机。栈虚拟机的特点是所有临时操作数都存放在栈中。编译器生成的指令都会围绕着这个栈展开,相对而言,解释执行这些指令会比较容易。基于栈的虚拟机可能会生成如下指令: push 3 # 把立即数3压栈 push 4 # 把立即数4压栈 add # 从栈中...

RequireJS最简实现

网上有不少解析RequireJS源码的文章,我觉得意义不大。阅读源代码的目的不是为了熟悉代码,而是为了学习核心实现原理。相对RequireJS的源码,kitty.js的实现更简单,更容易理解。本文正是抄了kitty.js的实现,是一个更精简的RequireJS,用于理解RequireJS的实现原理。 github dummy-requirejs。这个实现仅支持核心feature: req...

ReactJS项目中基于webpack实现页面插件

整个Web页面是基于ReactJS的,js打包用的webpack,现在想在Web页面端实现一种插件机制,可以动态载入第三方写的js插件。这个插件有一个约定的入口,插件被载入后调用该入口函数,插件内部实现渲染逻辑。插件的实现也使用了ReactJS,当然理论上也可以不使用。预期的交互关系是这样的: // 主页面 load('/plugin/my-plugin.js', function (pl...

一次逆向网页内容加密

最近写一个爬虫要从这个网页爬取内容。以往爬取网页内容复杂点的,一般就是处理下页面内容动态载入,动态载入的内容可能会要求复杂奇怪的参数,或者找到这个动态载入的HTTP接口在哪里麻烦点。但是这个网页不同。类似: <td><span name="record_yijiaof:feiyongzldm" title="pos||"><span id="5d2999056...

记一次线程局部存储与动态库引起的core

线上的服务退出时coredump,显示堆栈为: google一下发现有人遇到过,产生这个core的条件为: 使用TLS时注册了destructor (pthread_key_create),这个回调函数会在线程退出时被调用 这个destructor符号位于.so中 在线程退出时,这个.so已经被dlclose 我们的程序模型中,类似于一个Web App server...

Java中隔离容器的实现

Java中隔离容器用于隔离各个依赖库环境,解决Jar包冲突问题。 问题 应用App依赖库LibA和LibB,而LibA和LibB又同时依赖LibBase,而LibA和LibB都是其他团队开发的,其中LibA发布了一个重要的修复版本,但是依赖LibBase v2.0,而LibB还没有升级版本,LibBase还不是兼容的,那么此时升级就会面临困难。在生产环境中这种情况往往更恶劣,可能是好几层...

Java GC总结

Java GC相关的文章有很多,本文只做概要性总结,主要内容来源于。 对象存活性判定 对象存活性判定用于确定一个对象是死是活,死掉的对象则需要被垃圾回收。主要包括的方法: 引用计数 可达性分析 可达性分析的基本思想是: 通过一系列的称为”GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用...

写了一个分布式名字服务JCM

之前在公司里维护了一个名字服务,这个名字服务日常管理了近4000台机器,有4000个左右的客户端连接上来获取机器信息,由于其基本是一个单点服务,所以某些模块接近瓶颈。后来倒是有重构计划,详细设计做了,代码都写了一部分,结果由于某些原因重构就被终止了。 JCM是我业余时间用Java重写的一个版本,功能上目前只实现了基础功能。由于它是个完全分布式的架构,所以理论上可以横向扩展,大大增强系统的服...

基于servlet实现一个web框架

servlet作为一个web规范,其本身就算做一个web开发框架,但是其web action (响应某个URI的实现)的实现都是基于类的,不是很方便,并且3.0之前的版本还必须通过web.xml配置来增加新的action。servlet中有一个filter的功能,可以配置所有URI的功能都经过filter。我们可以基于filter的功能来实现一个简单的web框架。在这个框架中,主要改进URI...