草庐IT

手撕HashMap(二)

全部标签

【C++】手撕string(string的模拟实现)

手撕string目录:一、Memberfunctions1.1constructor1.2  Copyconstructor(代码重构:传统写法和现代写法)1.3 operator=(代码重构:现代写法超级牛逼)1.4destructor二、Othermemberfunctions2.1 Iterators(在string类中,迭代器基本上就是指针)2.1.1begin()&&end()2.1.2  范围for的底层原理(鱼香肉丝,夫妻肺片)(这是编译器的活,而且是死活)2.2Capacity2.2.1size()&&capacity()2.2.2reserve(C++语法不存在原地扩容)2.

【C++图解专栏】手撕数据结构与算法,探寻算法的魅力

✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343📣专栏定位:为0基础刚入门数据结构与算法的小伙伴提供详细的讲解,也欢迎大佬们一起交流~📚专栏简介:在这个专栏,我将带着大家一起用C++手撕基础的数据结构与算法,每一讲都有详细的讲解,29篇文章共400多张图,希望能够带领大家快速入门这个课程。数据结构与算法是大学计算机专业课中最重要的一门,学起来必然不轻松,所以遇到困难是非常正常的一件事。相信我,只要能够坚持下去,自己动手敲一遍一定会有不少的收获!❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪🎏唠叨唠叨

英飞凌TC3xx--深度手撕HSM安全启动(三)--TC3xx HSM系统架构

    今天聊TC3xxHSM系统,包括所用内核、UCB相关信息、Host和HSM交互方式。 1、HSM系统架构    下图来源于英飞凌官网培训材料。    TC3xx的HSM内核是一颗32位的ARMCortexM3,主频可达100MHz,支持对称算法AES128、非对称算法PKC(PublicKeyCrypto)ECC256、HashSHA2,以及TRNG(真随机数生成)。    其实,随着目前汽车各大厂商对信息安全的重视,英飞凌TC3x的HSM所提供的密码算法硬件加速已经逐渐不满足需求了,例如现在一些OEM要求支持国密算法,例如SM2\3\4;再例如,OTA更新时要求支持PKCRSA204

手撕promise

观看之前请先熟悉promise的基本使用一、剖析promise由哪些东西组成在日常的使用中,我们可以知道,一个完整的promise应当包含成功、失败、进行中这三个状态,同时还有resolve,reject两个改变状态的成员函数。最后还会有一个then函数来接收promise的执行结果在了解了上述的内容之后,一个promise的雏形就出来了classmyPromise{constructor(executor){//默认状态为pendingthis.status='pending'//成功的默认值为undefinedthis.successVal=undefined//失败的默认值为undefi

HashMap源码解析

数据结构//一个Node数组,Node是一个单向链表transientNode[]table;//Node内部类staticclassNodeimplementsMap.Entry{//hash值finalinthash;//keyfinalKkey;//valueVvalue;//下一个节点,形成单向链表Nodenext;Node(inthash,Kkey,Vvalue,Nodenext){this.hash=hash;this.key=key;this.value=value;this.next=next;}}image.png1.hash算法put操作时,会先计算key的hash值pub

(手撕)数据结构--->堆

文章内容  目录    一:堆的相关概念与结构    二:堆的代码实现与重要接口代码讲解让我们一起来学习:一种特殊的数据结构吧!!!!    一:堆的相关概念与结构        在前面我们已经简单的学习过了二叉树的链式存储结构了,那么二叉树的顺序存储结构是啥呢?其实二叉树的顺序存储结构我们一般将他叫做堆。        二叉树为啥有两种形式的存储结构呢?因为堆是一种特殊的二叉树,它特殊的地方在于它的逻辑结构实际上是一颗完全二叉树,在物理结构上我们一般用数组来表示堆的结构,而如果不是完全二叉树我们一般不会用数组成为二叉树的结构,因为假如不是完全二叉树那么我们数组可能会浪费大量的空间。    用

手撕 Golang 高性能内存缓存库 bigcache!

1.前言你好哇!我是小翔。之前写了三篇 #Golang并发编程 的文章了,这次来换换口味,开个 手撕源码 的新坑!一起来扒一扒Go语言高性能localcache库bigcache,看看能不能把开源大佬们的骚操作带到项目里去装一装(?)2.为什么要学习开源项目个人认为学习开源项目的收益:跟进社区,不做井底之蛙 看到一个开源项目,可以思考下:大佬们最近都在解决哪些问题?他们用到了哪些开源工具?我能拿到项目里用吗?这玩意有bug吗?要不要提个issue或者提个PR呢?面向原理编程 我们在实际项目中会用上很多开源库/框架,你是否好奇过它们的实现机制呢?理解用到的库的实现机制,能帮我们避开很多坑,堪称降

手撕双链表

>作者简介:დ旧言~,目前大一,现在学习Java,c,c++,Python等>座右铭:松树千年终是朽,槿花一日自为荣。>望小伙伴们点赞👍收藏✨加关注哟💕💕  🌟前言        前面我们已经学习了顺序表和单链表,顺序表可以存储动态的数据,但是一旦元素过少,而又要开辟空间,这样就造成空间的浪费,而单链表以节点为单位存储,不支持随机访问,只能从头到尾遍历访问,为了解决上面两个问题,人们发现了双链表,把一个一个元素以链子的形式存储,可以存储相互的地址,那双链表如何实现呢,今天咱们就实现一下--《双链表》。🌙主体咱们从三个方面实现双链表,动态管理,头插头删尾插尾删,增删查改。在程序中为了实现双链表,

HashMap之删除报错ConcurrentModificationException

1HashMap删除报错1.1引言@TestpublicvoidtestPut(){Mapmap=newHashMap();map.put("aa","13456");map.put("bb","456789");map.put("cc","789456");map.forEach((a,b)->{if(a.equals("aa")){map.remove("aa");}});map.forEach((key,value)->{System.out.println(key+":"+value);});}当在使用foreach对HashMap进行遍历时,同时进行remove赋值操作会有问题,异常

【Java 数据结构】HashMap和HashSet

目录1、认识HashMap和HashSet2、哈希表2.1什么是哈希表2.2哈希冲突2.2.1概念2.2.2设计合理哈希函数-避免冲突2.2.3调节负载因子-避免冲突2.2.4 Java中解决哈希冲突-开散列/哈希桶3、HashMap的部分源码解读3.1HashMap的构造方法3.2HashMap 是如何插入元素的?3.3哈希表下的链表,何时会树化?4、相关面试题4.1链表转换成红黑树如何比较?4.2hashCode和equals的区别4.3以下代码分配的内存是多少?5、性能分析1、认识HashMap和HashSet在上期中,学习到TreeMap和TreeSet,因为他们实现了SortedMa