左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家,骨灰级程序员
立即订阅
40357 人已学习
课程目录
已完结 108 讲
0/6登录后,你可以任选6讲全文学习。
开篇词 | 洞悉技术的本质,享受科技的乐趣
免费
01 | 程序员如何用技术变现(上)
02 | 程序员如何用技术变现(下)
03 | Equifax信息泄露始末
04 | 从Equifax信息泄露看数据安全
05 | 何为技术领导力?
06 | 如何才能拥有技术领导力?
07 | 推荐阅读:每个程序员都该知道的知识
08 | Go语言,Docker和新技术
09 | 答疑解惑:渴望、热情和选择
10 | 如何成为一个大家愿意追随的Leader?
11 | 程序中的错误处理:错误返回码和异常捕捉
12 | 程序中的错误处理:异步编程以及我的最佳实践
13 | 魔数 0x5f3759df
14 | 推荐阅读:机器学习101
15 | 时间管理:同扭曲时间的事儿抗争
16 | 时间管理:如何利用好自己的时间?
17 | 故障处理最佳实践:应对故障
18 | 故障处理最佳实践:故障改进
19 | 答疑解惑:我们应该能够识别的表象和本质
20 | Git协同工作流,你该怎么选?
21 | 分布式系统架构的冰与火
22 | 从亚马逊的实践,谈分布式系统的难点
23 | 分布式系统的技术栈
24 | 分布式系统关键技术:全栈监控
25 | 分布式系统关键技术:服务调度
26 | 分布式系统关键技术:流量与数据调度
27 | 洞悉PaaS平台的本质
28 | 推荐阅读:分布式系统架构经典资料
29 | 推荐阅读:分布式数据调度相关论文
30 | 编程范式游记(1)- 起源
31 | 编程范式游记(2)- 泛型编程
32 | 编程范式游记(3) - 类型系统和泛型的本质
33 | 编程范式游记(4)- 函数式编程
34 | 编程范式游记(5)- 修饰器模式
35 | 编程范式游记(6)- 面向对象编程
36 | 编程范式游记(7)- 基于原型的编程范式
37 | 编程范式游记(8)- Go 语言的委托模式
38 | 编程范式游记(9)- 编程的本质
39 | 编程范式游记(10)- 逻辑编程范式
40 | 编程范式游记(11)- 程序世界里的编程范式
41 | 弹力设计篇之“认识故障和弹力设计”
42 | 弹力设计篇之“隔离设计”
43 | 弹力设计篇之“异步通讯设计”
44 | 弹力设计篇之“幂等性设计”
45 | 弹力设计篇之“服务的状态”
46 | 弹力设计篇之“补偿事务”
47 | 弹力设计篇之“重试设计”
48 | 弹力设计篇之“熔断设计”
49 | 弹力设计篇之“限流设计”
50 | 弹力设计篇之“降级设计”
51 | 弹力设计篇之“弹力设计总结”
52 | 管理设计篇之“分布式锁”
53 | 管理设计篇之“配置中心”
54 | 管理设计篇之“边车模式”
55 | 管理设计篇之“服务网格”
56 | 管理设计篇之“网关模式”
57 | 管理设计篇之“部署升级策略”
58 | 性能设计篇之“缓存”
59 | 性能设计篇之“异步处理”
60 | 性能设计篇之“数据库扩展”
61 | 性能设计篇之“秒杀”
62 | 性能设计篇之“边缘计算”
63 | 区块链技术的本质
64 | 区块链技术细节:哈希算法
65 | 区块链技术细节:加密和挖矿
66 | 区块链技术细节:去中心化的共识机制
67 | 区块链技术细节:智能合约
68 | 区块链技术 - 传统金融和虚拟货币
69 | 程序员练级攻略:开篇词
70 | 程序员练级攻略:零基础启蒙
71 | 程序员练级攻略:正式入门
72 | 程序员练级攻略:程序员修养
73 | 程序员练级攻略:编程语言
74 | 程序员练级攻略:理论学科
75 | 程序员练级攻略:系统知识
76 | 程序员练级攻略:软件设计
77 | 程序员练级攻略:Linux系统、内存和网络
78 | 程序员练级攻略:异步I/O模型和Lock-Free编程
79 | 程序员练级攻略:Java底层知识
80 | 程序员练级攻略:数据库
81 | 程序员练级攻略:分布式架构入门
82 | 程序员练级攻略:分布式架构经典图书和论文
83 | 程序员练级攻略:分布式架构工程设计
84 | 程序员练级攻略:微服务
85 | 程序员练级攻略:容器化和自动化运维
86 | 程序员练级攻略:机器学习和人工智能
87 | 程序员练级攻略:前端基础和底层原理
88 | 程序员练级攻略:前端性能优化和框架
89 | 程序员练级攻略:UI/UX设计
90 | 程序员练级攻略:技术资源集散地
91 | 程序员面试攻略:面试前的准备
92 | 程序员面试攻略:面试中的技巧
93 | 程序员面试攻略:面试风格
94 | 程序员面试攻略:实力才是王中王
95 | 高效学习:端正学习态度
96 | 高效学习:源头、原理和知识地图
97 | 高效学习:深度,归纳和坚持实践
98 | 高效学习:如何学习和阅读代码
99 | 高效学习:面对枯燥和量大的知识
左耳听风
登录|注册

79 | 程序员练级攻略:Java底层知识

陈皓 2018-07-03
前两篇文章分享的是系统底层方面的内容,今天我们进入高手成长篇的第二部分——Java 底层知识。

Java 字节码相关

首先,Java 最黑科技的玩法就是字节码编程,也就是动态修改或是动态生成 Java 字节码。Java 的字节码相当于汇编,其中的一些细节你可以从下面的这几个教程中学习。
Java Zone: Introduction to Java Bytecode ,这篇文章图文并茂地向你讲述了 Java 字节码的一些细节,是一篇很不错的入门文章。
IBM DeveloperWorks: Java bytecode ,虽然这篇文章很老了,但是这篇文章是一篇非常好的讲 Java 字节码的文章。
Java Bytecode and JVMTI Examples,这是一些使用 JVM Tool Interface 操作字节码的比较实用的例子。包括方法调用统计、静态字节码修改、Heap Taggin 和 Heap Walking。
当然,一般来说,我们不使用 JVMTI 操作字节码,而是用一些更好用的库。这里有三个库可以帮你比较容易地做这个事。
asmtools - 用于生产环境的 Java .class 文件开发工具。
Byte Buddy - 代码生成库:运行时创建 Class 文件而不需要编译器帮助。
Jitescript - 和 BiteScript 类似的字节码生成库。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《左耳听风》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(17)

  • javaee
    有同学认为这种介绍文章没用,一大堆引用。我觉得吧,这文章价值很大。如果只是要写一篇关于字节码或JVM的详细使用,那很多书籍或网站可能有了,反而不值得写。耗子叔这系列文章,在我看来很有大局观,自顶向下梳理了各种技术脉络。授人以渔其实更重要,好的老师是给你指出明路,让你少走弯路,而不是给你讲解几道题。不过这也许要工作几年后才能更深刻的体会到吧,这些总结的资源是一笔财富,至少不用走弯路,可以有选择性的去挑选适合你的认为有价值有兴趣的内容去学习。

    作者回复: 谢谢理解

    2018-07-19
    42
  • 怪盗キッド
    Hi,我利用ASM写了一个简单、快速且无侵入的Java方法监控工具MyPerf4J,通过JavaAgent方式对Java方法进行字节码注入,可以统计出方法的执行性能指标,包括RPS、Avg、TP50、TP90、TP99、TP999等,Github地址:https://github.com/ThinkpadNC5/MyPerf4J

    作者回复: 👍那些统计,你用到了蓄水池算法了吗?

    2018-07-03
    14
  • 吃桔子的攻城狮
    第一次评论。这个专栏看了这么久,第一次觉得有必要说几句,这种风格的专栏真的非常赞。看到有些同学说链接太多缺少耗子哥自己的东西,我想说这个系列随便一篇文章拿出来,如果纯自己写都能单独写成一个系列甚至一本书。这就像重复造轮子,明明已经有了优秀的文献资料,为什么要重新写一套?相反,能把这些优质资源做整合,串联,归纳,提供学习的路径和思路才是受益无穷的!

    有同学说这些都是网上可以找到的,那不妨请想一下,如果只给你本系列某篇文章的题目,凭自己你真的可以找得到这些资料吗?不会陷入现在互相抄来抄去的劣质博客里迷惘困惑,百思不得其解吗?

    支持这种风格,我认为订阅专栏的钱花的很超值!

    作者回复: 谢谢

    2018-08-03
    13
  • superryanguo
    java有必要单独抽一篇来讲吗?而且都是引用
    2018-07-03
    4
  • ruby
    皓哥,后面有大数据文章,怎么学spark.hadoop等吗?
    2018-07-03
    4
  • 鹤鸣
    C++程序员问个问题:怎样对一个已有的基于spring的项目优化性能?目前我这边首先要做的事情是测试出性能瓶颈,但是目前为止我还在使用那种很土的办法,纯体力活的那种,我觉得这个路子不大对头。
    2018-07-04
    3
  • Rolin
    Android 程序猿好好学!
    2018-07-03
    2
  • 墨梵
    耗叔有专门讲c++对象模型方面和内存分配的篇章嚒?
    2018-07-04
    1
  • 葛阳阳
    2018-07-03
    1
  • lion_fly
    看这么多书,耗子叔居然没有掉头发
    2019-12-05
  • 庞雨青_Alice
    非常感谢左耳皓哥的分享。

    读精品的技术文章真是一件很爽快的事情。我个人是喜欢刨根究底的类型,之前在学习编程的过程中一直都没能找到多少成就感。现在看来一是没有找到最精品的文章,二是没有找到适合自己的方式。

    这几天耐着性子慢慢读英文的文章,自己的英语能力也有所提高。

    感谢皓哥🙏
    2019-06-01
  • godtrue
    恩,认同这种风格的文章,感觉很导师风格,指明路线自己去玩,每个人的收获取决于每个人的付出。
    2019-01-09
  • Tony
    耗子哥,我记得你以前写过一篇关于java进阶的比较全面的文章,怎么找不到了?
    2018-07-12
  • 付彬
    2018-07-04
  • Len
    动态生成的代码 debug 起来挺费劲的,尤其是用 IDE。耗叔有什么工具或方法推荐吗?
    2018-07-03
  • 怪盗キッド
    没有使用蓄水池算法,我是通过数组+Map的方式存储数据:
    对于数组来说,下标代表方法的响应时间,下标对应的值代表该响应时间的数量;
    对于Map来说,Key代表方法的响应时间,Value代表该响应时间的数量;(Accurate模式)
    2018-07-03
  • ZYCHD(子玉)
    读耗子书的文章总给人带来新鲜的感觉。视野很开阔。前后穿插纵横千里!
    2018-07-03
收起评论
17
返回
顶部