首页
学习
活动
专区
圈层
工具
发布

java黑科技-操作码

操作码介绍 我们都知在Java中我们的类会被编译成字节码然后放到虚拟机中去执行,字节码里面的内容其实我们也是可以去“阅读”的,方法就是通过 jdk自带的工具翻译成操作码。...在操作码中我们能看到一些我们平时看不到的关于java的秘密。 Java虚拟机的指令由一个字节长度的的数字以及跟随其后的零至多个代表此操作所需的参数构成。即:Java指令 = 操作码 + 操作数。...Java虚拟机本身是采用面向操作数栈而不是寄存器的架构,所以大多数的指令都不包含操作数,只有一个操作码。通过阅读操作码我们能直观的看到一些方法的执行过程。...我们随便找一个 .class 文件(我这里是Test.class),然后在命令行执行: javap -v -l -p -s -sysinfo -constants Test.class Test.java.../io/PrintStream.println:(Ljava/lang/String;)V #6 = Class #31 // java/lang/

65520
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JAVA学习-红黑树详解

    后面阅读源码会涉及到红黑树,查阅资料发现本文不错 1.定义 红黑树是特殊的二叉查找树,又名R-B树(RED-BLACK-TREE),由于红黑树是特殊的二叉查找树,即红黑树具有了二叉查找树的特性,而且红黑树还具有以下特性...有几点需要注意的是: 1.特性3中指定红黑树的每个叶子节点都是空节点,但是在Java实现中红黑树将使用null代表空节点,因此遍历红黑树时看不到黑色的叶子节点,反而见到的叶子节点是红色的 2.特性4保证了从根节点到叶子节点的最长路径的长度不会超过任何其他路径的两倍...,例如黑色高度为3的红黑树,其最短路径(路径指的是根节点到叶子节点)是2(黑节点-黑节点-黑节点),其最长路径为4(黑节点-红节点-黑节点-红节点-黑节点)。...2.实践 2.1 红黑树操作 2.1.1 插入操作 首先红黑树在插入节点的时,我们设定插入节点的颜色为红色,如果插入的是黑色节点,必然会违背特性5,即改变了红黑树的黑高度,如下插入红色结点又存在着几种情况...2.2 红黑树实现 如下是使用JAVA代码实现红黑树的过程,主要包括了插入、删除、左旋、右旋、遍历等操作 2.2.1 插入 private void insert(RBTreeNode node)

    85851

    JAVA集合:TreeMap红黑树深度解析

    上篇中介绍了jdk1.7和jdk1.8中的HashMap【JAVA集合:HashMap深度解析(版本对比)】1.8中的HashMap引入了红黑树的结构,补充一下对红黑树的理解,这里以TreeMap中的红黑树结构为例...,HashMap中的红黑树结构稍微复杂一点,因为涉及到链表和红黑树结构的相互转换(以下源码来自jdk1.8) 红黑树是一种特殊的平衡二叉树,不追求严格的平衡,可以在O(log n)时间内做查找、插入和删除...规则: 每个节点都有颜色(红或黑); 根节点必须是黑色的; 叶子节点(null节点)是黑的,即每个节点都有两个子节点(其中一个或者两个可能是null节点); 相连节点不能都是红色(红色节点的父节点和子节点必须为黑色...红变成1黑)            *            * 即情景1,在x节点上增加一个父节点(红色)。            ...(参照上面) OK,至此红黑树的分析就结束了,希望大家给予意见!

    18110

    大聪明教你学Java | 浅析红黑树

    就比如JDK8中的HashMap就用到了红黑树(当hash值相同时,会转换为链表,链表长度超过8时,就转化成红黑树),那么正好借此机会,和大家分享一下大聪明在学习红黑树时的一些经验与心得。...什么是红黑树红黑树(Red-BlackTree,简称R-BTree),它一种特殊的二叉查找树。...但AVL树在插入、删除结点后旋转的次数比红黑树多,而红黑树用非严格的平衡来降低插入、删除时旋转的次数。...其实道理很简单,添加或删除红黑树中的节点之后,红黑树就发生了变化,可能不满足红黑树的上述5条性质,当然也就不再是一颗红黑树了,变成了一颗普通的树。所以这时候要通过旋转,使这颗树重新成为红黑树。...=null)remove(node);}/**红黑树删除修正函数**在从红黑树中删除插入节点之后(红黑树失去平衡),再调用该函数;*目的是将它重新塑造成一颗红黑树。

    24110

    你说的黑是什么黑

    近一年,随着iOS和安卓陆续支持了深色模式,各个团队的一通操作,也的确为用户带来“眼前一黑”的体验。深色模式也成为了前阵子业界最火的话题之一。...只是当设计师看了无数的关于深色模式的讨论;当无数产品跟进上线了深色模式;再当无数App的深色模式被骂的改了又改,回头来看看,你说的黑,到底是什么黑。...iOS使用不同的灰色和动效来表达界面层级,而Android主要通过阴影来表达,所以底色不能做成纯黑,不然阴影就体现不出来了。 所以这个真的是不同人的期待都是不一样的。...采用纯黑大标题底色,上划时渐变出深色毛玻璃效果,并且降低标题栏的透明度 2. 适用非纯白字色,防止页面对比度过高导致夜间对眼睛的刺激太强 3....如果产品体量不大可以考虑这个快速适配的能力,不过这个功能在比较复杂的产品中不太好用,因为白色可能在深色模式下对应着不同的黑,这个时候还是色板最稳妥。

    1.3K20

    Java数据结构和算法(十一)——红黑树

    第一个很好理解,在红-黑树中,每个节点的颜色或者是黑色或者是红色的。...当插入一个新的节点时,可能会破坏这种平衡性,那么红-黑树是如何修正的呢? 2、红-黑树的自我修正   红-黑树主要通过三种方式对平衡进行修正,改变节点颜色、左旋和右旋。   ①、改变节点颜色 ?   ...如果是第一次插入,由于原树为空,所以只会违反红-黑树的规则2,所以只要把根节点涂黑即可;如果插入节点的父节点是黑色的,那不会违背红-黑树的规则,什么也不需要做;但是遇到如下三种情况,我们就要开始变色和旋转了...6、红黑树的效率   红黑树的查找、插入和删除时间复杂度都为O(log2N),额外的开销是每个节点的存储空间都稍微增加了一点,因为一个存储红黑树节点的颜色变量。...大多数应用中,查找的次数比插入和删除的次数多,所以应用红黑树取代普通的二叉搜索树总体上不会有太多的时间开销。而且红黑树的优点是对于有序数据的操作不会慢到O(N)的时间复杂度。

    1K81

    黑神话?黑科技?两个都要!

    01.引言 8月20日,《黑神话:悟空》这款由腾讯参投的国产首款 3A 游戏正式上线。上线当天短短数小时内便吸引了大量玩家,同时在线人数迅速攀升至 134 万。...作为腾讯前同事的游戏科学 CEO 冯骥在接受外部采访时透露:《黑神话》的开发周期前后大约用了 7 年时间,期间研发投入巨大,而且在游戏画面、关卡设计、音效配音、产品质量等方面提出了极高要求。...话说,你知道《黑神话·悟空》这款游戏是用什么编程语言开发的吗? 答案主要是C++(也用到 C#、Lua 等语言),初期仅有 7 人。...根据游戏科学官网显示,《黑神话》游戏使用的是虚幻引擎(Unreal Engine):这个引擎的底层源码主要使用的就是 C++!...03.程序员的痛点 在这款《黑神话》3A 游戏的辉煌背后,程序员们扮演着至关重要的角色。他们不仅是游戏世界的创造者,更是技术革新的推动者。

    88310

    Java数据结构与算法解析(十一)——红黑树

    但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑树(Red-Black Tree) 红黑树的介绍 红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树...红黑树的每个节点上都有存储位表示节点的颜色,颜色是红(Red)或黑(Black)。 红黑树的特性: (1) 每个节点或者是黑色,或者是红色。 (2) 根节点是黑色。...在最坏的情况下,红黑树的高度不超过2lgN 最坏的情况就是,红黑树中除了最左侧路径全部是由3-node节点组成,即红黑相间的路径长度是全黑路径长度的2倍。...红黑树的平均高度大约为lgN 下图是红黑树在各种情况下的时间复杂度,可以看出红黑树是2-3查找树的一种实现,他能保证最坏情况下仍然具有对数的时间复杂度。...红黑树是一种比较高效的平衡查找树,应用非常广泛,很多编程语言的内部实现都或多或少的采用了红黑树。

    64710

    Java源码阅读之TreeMap(红黑树) - JDK1.8

    如果还未了解过HashMap的,可以移步这里Java源码阅读之HashMap - JDK1.8和这里Java源码阅读之红黑树在HashMap中的应用 - JDK1.8。 接下来,请坐好,准备发车了。...红黑树 看完变量和构造函数,本来想直接分析功能方法,但是仔细一看,虽然TreeMap里红黑树的代码跟HashMap本质上是一样的,但是代码的结构还是有较大区别,所以先拿来来赏析。...,是想说明TreeMap里面的实现比起HashMap可读性更为强一些,但是其实质都是一样的,所以上面关于插入平衡和删除平衡的过程这里不再细说,之前格子的Java源码阅读之红黑树在HashMap中的应用...) throws java.io.IOException, ClassNotFoundException { //设置size this.size = size; //...// TreeMap.java 1057行 //Entry定义 class EntrySet extends AbstractSet> { /** *

    1.1K30

    红黑树(一):构建红黑树

    平衡二叉树 红黑树 红黑树属于平衡二叉树,但是并非严格意义上的平衡二叉树,因为平衡二叉树要求节点的左右子树高度差不超过1, 而红黑树放弃了这种高度平衡,利用对结点上色的操作来保证树相对平衡,这其中原因大概是维护一个绝对平衡的二叉树代价太大...但如果插入频率小或者只有一次构建,那么平衡二叉树的查询性能还是比红黑树高。...从上面的性质我们大概知道红黑树的结构,树根为黑色,不存在连续的两个红色结点,每个子树分支的黑结点个数相同,如下图 ?...此时红黑树构建平衡分为4种情况: 情况一:红黑树为空树,此时插入结点充当根结点,上色为黑 情况二:插入结点已经存在,此时替换插入结点值即可 情况三:插入结点的位置,其父结点是黑色,此时平衡未打破,插入完成...到这里就构建完成了 相对于构建新增,红黑树的删除情况更为复杂,由于时间关系(这周只有一天休息加上绘图太费劲),留到下一次分享。 构建代码 红黑树构建源码

    2.1K42
    领券