theory
文章平均质量分 80
Dylanioucn
想写一首关于世界的诗,以编程的方式~
展开
-
让星星⭐月亮告诉你,设计模式入门
原创 2020-11-16 17:21:51 · 86 阅读 · 0 评论 -
静态代理、JDK动态代理及Cglib动态代理各自存在的缺点及代码示例
1.静态代理:基本描述:静态代理代理的是某一个接口的实例对象,以接口的形式对外展示。当然如果不需要以接口的形式对外展示,直接代理对象即可。缺点:只能代理某一种类型,要想代理其他类型,需要修改代码。package unittest.proxy;interface StaticInterface{ void method();}class Target implements StaticInterface{ @Override public void method() { System原创 2020-06-29 22:20:56 · 757 阅读 · 0 评论 -
让星星⭐月亮告诉你,HashMap之往红黑树添加元素-putTreeVal方法源码解读
PS:由于文档是我在本地编写好之后再复制过来的,有些文本格式没能完整的体现,故提供下述图片,供大家阅览,以便有更好的阅读体验:HashMap之往红黑树添加元素-putTreeVal方法源码解读当要put的元素所在数组索引位置已存在元素,且是红黑树类型时,就会调用putTreeVal方法添加元素到红黑树上,具体操作步骤如下:从根节点开始,到左右子树,层层递进,遍历红黑树,找到用于存放元素的合适位置;将元素放入指定位置,并修改链表/红黑树相关节点的前prev后next父parent子(left/r原创 2020-06-18 00:45:51 · 800 阅读 · 0 评论 -
HashMap之链表转红黑树(树化 )-treefyBin方法源码解读(所有涉及到的方法均有详细解读,欢迎指正)
PS:由于文档是我在本地编写好之后再赋值过来的,有些文本格式没能完整的体现,故提供下述图片,供大家阅览,以便有更好的阅读体验:HashMap之链表转红黑树(树化 )-treefyBin方法方法概述:先将链表节点转为树节点,再将都是红黑树节点的链表转为红黑树分析HashMap的put方法的源码时发现,当HashMap中某个链表上存储的元素个数达到TREEIFY_THRESHOLD(树化阈值)=8个时,会调用treeifyBin方法尝试将该链表转换成红黑树。(PS:为什么说是尝试,而不是原创 2020-06-17 10:32:47 · 2654 阅读 · 6 评论 -
让星星⭐月亮告诉你,对Java总体认知(摘抄自《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》)
Java概述:Java不仅仅是一门编程语言,它还是一个由一系列计算机软件和规范组成的技术体系,该技术体系提供了完整的软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等多种场合。时至今日,Java已经吸引超过600多万的软件开发者,这是全球最大的软件开发团队。而且使用Java的设备数量已经超过了45亿部。其中有8亿多台个人计算机、21亿部移动电话和其他手持设备,35亿个智能卡、以及大量机顶盒、导航系统和其他设备。Java优点:Java之所以能收到如此广泛的认可,不仅仅翻译 2020-06-01 22:32:36 · 151 阅读 · 0 评论 -
让星星⭐月亮告诉你,原码、反码、补码以及为什么要用反码和补码
转载自:cumtchwWhen you learn a knowledge, you must reach the level that you can use it profiently, not just know it or be familiar with ithttps://www.cnblogs.com/cumtchw/p/4523332.html机器数一个数在计算机中的二进制表示形式,叫做这个数的机器数,机器数是带符号的,在计算机中用一个数的最高位存放符号,正数为0,负数为1,比如,转载 2020-05-21 21:35:15 · 687 阅读 · 0 评论 -
让星星⭐月亮告诉你,LinkedList和ArrayList底层数据结构及方法源码说明
一、LinkedList(同时实现了List接口和Deque implements Queue接口)1.LinkedList底层数据结构是一个双向链表(每个节点除了本身元素外,还包含了要指向的前一个节点Node prev和后一个节点Node next),双向链表还记录了头节点Node first和尾节点Node last.2.链表的数据结构在逻辑上是连续的,但是在物理空间上是不连续的(因此,索引下标和头元素存放的物理内存地址是不相关的,所以不能根据索引下标直接获取到元素,需要循环遍历);3.Linke原创 2020-05-21 20:57:55 · 946 阅读 · 0 评论 -
让星星⭐月亮告诉你,红黑树实现自平衡的原理图解及与二叉查找树的比较
1.红黑树五大原则:(1)节点为红色或黑色(2)根节点为黑色(3)红色节点的子节点和父节点不能为红色(4)从根节点到所有叶子节点的路径中黑色节点个数相同(5)叶子节点为黑色2.在红黑树增删数据时,先增删,增删后若不满足五大原则,则再对其进行调整(左旋、右旋、颜色改变),调整的处理实际上是节点属性值(节点颜色、节点父子节点的左右子树)的改变。3.有五大原则做保证,红黑树能实现自平衡,保证从根节点到叶子节点的所有路径中的最长路径不超过最短路径的2倍.(举例:根节点到左子树叶子节点全是黑色,而右子树原创 2020-05-21 09:47:56 · 551 阅读 · 0 评论 -
让星星⭐月亮告诉你,HashMap底层数据结构及其增put删remove查get方法的代码实现原理
1.HashMap底层数据结构是数组+链表(jdk1.7头插法<扩容时链表逆序可能会导致环形链表的问题出现> jdk1.8尾插法)+红黑树(jdk1.8).2.HashMap中数组的容量默认为16,负载因子默认为0.75,当数组的0-15个下标里有160.75=12个被使用时,且HashMap中存储的元素总个数大于64时,则发生扩容操作,数组的容量扩大为原来的2n.3.负载因子代表数组中存储数据密度的大小:负载因子越大,数组单位容量内存储的数据越多,不同元素之间(key不同,但计算得到的数组原创 2020-05-21 09:20:03 · 352 阅读 · 0 评论 -
让星星⭐月亮告诉你,二进制加减运算进阶(原码/反码/补码/-1-1=(-1)+(-1)=-2)
计算机中数据以二进制方式0或1进行存储,计算时也采用二进制进行,二进制计算过程中涉及到以下概念原码:数据对应的二进制表示,首位代表符号位0-正数,1-负数;反码:正数的反码等于其原码;负数的反码是在其原码的基础上,符号位不变,其他位取反;补码:由于直接采用反码计算,符号位也会参与计算,导致最终结果不准确,所以引进了补码.正数的补码等于其反码同样等于其原码;负数的补码等于其反码+1.所以,在根据补码推算原码时,需要逆向计算,先补码末位-1,再取反.举例:-1-1=(-1)+(-1)=-2(1)-1的原创 2020-05-20 13:15:08 · 2513 阅读 · 0 评论