ICode9

精准搜索请尝试: 精确搜索
  • linus提到过的单链表删除节点算法2021-09-13 01:02:28

    linus 提到过的单链表删除节点算法 1 问题描述 在TED上做过一次访谈,linus提到了关于编程的品味,他举了一个例子: linus在TED演讲_哔哩哔哩_bilibili 见原视频15'前后 解法1 解法2 这个例子要删掉一个链表的节点项 传入的参数是一个节点的引用 解法1,使用了prev remove_list_entry(e

  • linkedhashmap实现lru时遇到的问题2021-09-12 17:33:35

    看了一些高浏览转载的博客,大部分都说map.get(1);会改变map中的顺序,经实践发现不会改变。 import java.util.LinkedHashMap; import java.util.Map; class Map1 { public static void main(String[] args) { Map<Integer,Integer> map = new LinkedHashMap<>();

  • Java 集合及底层源码分析,Java零基础入门pdf2021-09-12 09:06:43

    如果该索引位置元素对应的hash值和待插入的元素的hash值相同,且是同一个引用或者是内容相同的话就不能添加 如果索引位置有值且满足一颗红黑树的话,则调用红黑树的算法进行添加 如果索引位置有值且是一个链表的话,则循环比较链表,如果存在相同元素的话,则不允许添加,否则添加到

  • ThreadLocal内存泄露的原因及避免 -- java面试2021-09-11 13:33:36

    内存泄漏 不会再被使用的对象或者变量占用的内存不能被回收,就是内存泄露。 强引用与弱引用 强引用:使用最普遍的引用(New),一个对象具有强引用将不会被GC回收。当内存空间不足时,jvm宁愿抛出OutOfMemoryError错误使程序终止,也不回收这种对象。 弱引用:使用java.lang.ref.WeakRefe

  • Java多线程-ThreadLocal2021-09-11 13:00:55

    1. ThreadLocal是什么 ThreadLocal是一个本地线程副本变量工具类。主要是做数据隔离,填充的数据只属于当前线程,变量的数据对别的线程而言是相对隔离的,在多线程环境下,可以防止自己的变量被其它线程篡改。 2. ThreadLocal的核心机制 每个Thread线程内部都有一个ThreadLocalMap。但是

  • java容器的使用2021-09-11 09:01:16

    Map的正确循环调用 for(Map.Entry<String, String> entry: params.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); }         Iterator<Entry<UserEntity, Long>> iter = countTaskOfUserMap.entry

  • 手写迷你hashMap2021-09-08 16:01:52

    public interface MyMap<K,V> { V put(K k,V v); V get(K k); interface Entry<K,V>{ K getKey(); V getValue(); } } public class MyHashMap<K,V> implements MyMap<K,V> { //默认容量 private static int defaultLength = 16; //加载因子 pr

  • Java基础 - Map2021-09-07 21:02:59

    Map接口特点 Map与Collection并列存在,用于保存具有映射关系的数据:Key-Value(双列元素)Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中Map中的key不允许重复,原因和HashSet一样Map中的value可以重复Map中的key可以为null,value也可以为null;但是key只有一个为

  • 实现HashMap的顺序存储2021-09-07 15:01:48

    从Java API知道,LinkedHashMap继承于HashMap,并且通过双向链表保存各节点的位置信息,实现了顺序存储。但是如果让你自己写一个顺序存储的HashMap,将如何下手呢?从研究LinkedHashMap的源码开始入手,究竟它比HashMap多了哪些东西,让它拥有了顺序存储的能力。 1.放入元素(put) 从放入一个元素

  • HashMap详解2021-09-06 23:59:20

    HashMap详解 一、HashMap数据结构1、HashMap数据结构2、HashMap相关参数3、hash计算4、hash碰撞 二、HashMap扩容原理JDK1.7 存储数据过程1、是否存在相同hash、key2、判断不需要扩容3、需要扩容单线程扩容过程多线程扩容过程多线程扩容引发闭环 JDK1.8 一、HashMap数

  • TreeMap分析2021-09-06 21:57:48

    TreeMap分析 TreeMap和HashMap不同点 TreeMap的数据结构和HashMap不一样,TreeMap是基于红黑树实现的。而HahsMap是数组 + 链表(红黑树)来实现的。 TreeMap不需要调用Hash方法来算hash值。 TreeMap一开始就是红黑树,不像HashMap一样,达到特定的条件之后才会变为红黑树。 TreeMa

  • 区的分类&XDES Entry(3)---独立表空间结构(二十九)2021-09-05 17:59:13

    上篇文章介绍了,表空间分为若干区,叶子节点和非叶子节点又分为不同的段,还有回滚段等,段里会存储碎片区不同数据页的集合和完全区的集合,碎片区是为了在数据刚存入表时候,存储不同段内的数据,当段内数据有32个碎片区时,会升级成为完整的区属于特有的段。 独立表空间结构(2)之段---InnoDB

  • Fault-Tolerant Virtual Machines阅读笔记2021-09-05 17:33:48

    《The Design of a Practical System for Fault-Tolerant Virtual Machines》   FT Protocol primary挂了,backup VM接管后很可能初始状态和primary挂的时候不一样 因为non-deterministic events发生了,但是没有同步到,只同步了deterministic 当backup VM满足了Output Requirement,这

  • 【Java代码之美】 -- 通过Value获取Map中的键值Key的四种方法2021-09-05 14:34:38

    1.简介 最近在项目中遇到一个EasyExcel中需要取invokeHeadMap中headMap里面的具体列名的集合Index,就遇到了需要从Map从反向通过Value取对应的Key的值。 通过搜索了网上比较好的文章案例,于是我写出了下面的Stream流式处理方法代码: @Override public void invokeHeadMap(Map<Intege

  • 数据结构之内核链表2021-09-04 21:33:35

    文章目录 内核链表 .h 文件基于Linux的铁路管理系统简单应用的几个小程序 建议在清楚单向和双向循环链表之后再来使用内核链表,不要上来就使用内核链表 本文直接贴出了内核链表的list.h文件,并相应使用的几段代码和项目 内核链表 .h 文件 #ifndef __DLIST_H #define __DL

  • 【Java Map】简述TreeSet2021-09-04 11:04:54

    一、引出正题 提出需求: 需要对一组数据进行排序,并剔除重复数据。 解决思路: ①:首先你可能会想到使用 List + Comparator,当然这是一种很普遍常用的实现方式。 ②:然后在排序的同时剔除重复数据,那这时候你肯定会跟已有的节点做比较(循环比较,或者将节点存放在一个map中再通过contai

  • 第15章-解释器及解释器生成器2021-09-03 09:35:17

    方法解释执行时需要解释器与解释器生成器的支持。解释器与解释器生成器的继承体系如下: 下面详细介绍解释器与解释器生成器。 1、解释器 解释器是一堆本地代码例程构造的,这些例程会在虚拟机启动的时候写入到StubQueue中,以后解释执行时就只需要进入指定例程即可。 解释器的继承体系

  • 第14篇-生成重要的例程2021-08-31 10:33:54

    之前介绍过TemplateInterpreter::initialize()函数,在这个函数中初始化了模板表和StubQueue实例,通过如下方式创建InterpreterGenerator实例: InterpreterGenerator g(_code); 在创建InterpreterGenerator实例时会调用generate_all()函数,如下:  InterpreterGenerator::Interprete

  • Oracle创建只读账号的详细步骤2021-08-30 14:02:35

    Oracle创建只读账号的详细步骤  更新时间:2021年06月05日 16:16:36   作者:Lexsaints     本文介绍了Oracle创建只读账号的详细步骤,有此需求的朋友可以参考下过程 目录 需求说明 第一步:创建只读账号 第二步:赋予账号连接数据库等基本权限 第三步:获取原账号的查询权限 第四步:

  • 深入Java集合学习之LinkedHashMap的实现原理2021-08-26 12:04:29

    1. LinkedHashMap概述 LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 LinkedHashMap实现与HashMap的不同之处在于,后者维护着一个运行于所有条

  • HashMap1.7源码2021-08-19 18:02:53

    public class HashSet<E>{//1.7版本 private transient HashMap<E,Object> map; private static final Object PRESENT = new Object(); //0-1.会调用HashMap的无参构造方法 public HashSet() { map = new HashMap<>(); }

  • 第6篇-Java方法新栈帧的创建2021-08-16 09:32:02

    在 第2篇-JVM虚拟机这样来调用Java主类的main()方法 介绍JavaCalls::call_helper()函数的实现时提到过如下一句代码: address entry_point = method->from_interpreted_entry(); 这个参数会做为实参传递给StubRoutines::call_stub()函数指针指向的“函数”,然后在 第4篇-JVM终

  • Windows内核--使用内核链表.demo2021-08-15 14:31:24

    typedef struct _MYDATA { LIST_ENTRY ListEntry; ULONG X; ULONG Y; }MYDATA, * PMYDATA; void LinkListTest() { LIST_ENTRY linkListHead;//链表头 InitializeListHead(&linkListHead);//初始化链表 PMYDATA pData; ULONG i = 0; KdPrint

  • 漏洞分析:CVE 2021-31562021-08-11 13:00:51

    漏洞分析:CVE 2021-3156 漏洞简述 漏洞名称:sudo堆溢出本地提权 漏洞编号:CVE-2021-3156 漏洞类型:堆溢出 漏洞影响:本地提权 利用难度:较高 基础权限:需要普通用户权限 漏洞发现 AFL++ Fuzzer   在qualys官方给出的分析中,只是对漏洞点进行了分析,没有给出漏洞利用代码,以及发现漏洞的细

  • Redis学习--渐进式rehash实现原理2021-08-11 02:31:06

    哈希冲突问题 Redis使用哈希表来存放键值对数据,在插入新键值对数据时,会先按照”key“来计算哈希值,再根据哈希值和哈希表的sizemask来计算出该”key“在对于哈希数组中的索引值,然后将键值对数据封装成dictEntry对象并放入到索引值对应的哈希数组中。 不同的Key经过相同哈希函数计算

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有