- 目录概述构造器分析 put 流程get 流程size 计算流程概述JDK1.7中的ConcurrentHashMap间接地实现了Map,并将每一个元素称为分段锁segment,每个segment都是一个HashEntry<K,V>数组,称为table,table的每个元素都是一个HashEntry的单向队列。「HashTable是给整个容器加锁,ConcurrentHashMap是给每个... 目录概述构造器分析 put 流程get 流程size 计算流程概述JDK1.7中的ConcurrentHashMap间接地实现了Map,并将每一个元素称为分段锁segment,每个segment都是一个HashEntry<K,V>数组,称为table,table的每个元素都是一个HashEntry的单向队列。「HashTable是给整个容器加锁,ConcurrentHashMap是给每个...
- 基本ConcurrentHashMap是Java中的一个线程安全的哈希表实现,它是HashMap的一个并发版本。它提供了一种高效的方式来在多线程环境下进行并发访问和更新。与普通的HashMap不同,ConcurrentHashMap使用了锁分段技术,将整个哈希表分成多个段(Segment),每个段维护着一个独立的哈希表。这样,在多线程环境下,不同的线程可以同时访问和修改不同的段,从而提高... 基本ConcurrentHashMap是Java中的一个线程安全的哈希表实现,它是HashMap的一个并发版本。它提供了一种高效的方式来在多线程环境下进行并发访问和更新。与普通的HashMap不同,ConcurrentHashMap使用了锁分段技术,将整个哈希表分成多个段(Segment),每个段维护着一个独立的哈希表。这样,在多线程环境下,不同的线程可以同时访问和修改不同的段,从而提高...
- @TOC 前言本篇文章带大家正式的来学习数据结构,数据结构是学习操作系统,和深入C语言必不可少的,所以这篇文章开始带大家学习数据结构的知识。 一、什么是链表链表(Linked List)是一种常见的数据结构,用于存储和组织数据元素。它由一系列节点(Node)组成,每个节点包含存储的数据(或称为元素/值)以及指向下一个节点的引用(或链接/指针)。链表中的节点可以通过指针连接在一起,形成一个链式... @TOC 前言本篇文章带大家正式的来学习数据结构,数据结构是学习操作系统,和深入C语言必不可少的,所以这篇文章开始带大家学习数据结构的知识。 一、什么是链表链表(Linked List)是一种常见的数据结构,用于存储和组织数据元素。它由一系列节点(Node)组成,每个节点包含存储的数据(或称为元素/值)以及指向下一个节点的引用(或链接/指针)。链表中的节点可以通过指针连接在一起,形成一个链式...
- 快速排序注:若排序是有序的,采用快排,则退化为冒泡排序。解决这个问题,采用两个选取基准的方法:(1)随机选取基数(在这个区间内随机取一个数)出现的恶劣情况是整个数组全相等,还是退化为冒泡排序(2)三数取中法把待排序列分成等长的子序列,最佳的是取中间数为基准举例:待排序序列为:8 1 4 9 6 3 5 2 7 0左边为:8,右边为0,中间为6.我们这里取三个数排序后,中间那个数作为枢轴,则... 快速排序注:若排序是有序的,采用快排,则退化为冒泡排序。解决这个问题,采用两个选取基准的方法:(1)随机选取基数(在这个区间内随机取一个数)出现的恶劣情况是整个数组全相等,还是退化为冒泡排序(2)三数取中法把待排序列分成等长的子序列,最佳的是取中间数为基准举例:待排序序列为:8 1 4 9 6 3 5 2 7 0左边为:8,右边为0,中间为6.我们这里取三个数排序后,中间那个数作为枢轴,则...
- 2023-07-27:最长可整合子数组的长度,数组中的数字排序之后,相邻两数的差值是1,这种数组就叫可整合数组。给定一个数组,求最长可整合子数组的长度。答案2023-07-27:算法maxLen的过程如下:1.检查输入数组是否为空,如果为空,则返回0,表示最长可整合子数组长度为0。2.初始化长度为1的最长可整合子数组长度为ans。3.创建一个空的set容器,用于记录数组中的元素是否已经存在。... 2023-07-27:最长可整合子数组的长度,数组中的数字排序之后,相邻两数的差值是1,这种数组就叫可整合数组。给定一个数组,求最长可整合子数组的长度。答案2023-07-27:算法maxLen的过程如下:1.检查输入数组是否为空,如果为空,则返回0,表示最长可整合子数组长度为0。2.初始化长度为1的最长可整合子数组长度为ans。3.创建一个空的set容器,用于记录数组中的元素是否已经存在。...
- @TOC 一、构建智能指针的原因众所周知,C++是没有垃圾回收的,就会导致以下问题:1、导致动态申请堆空间,用完后不归还。2、会导致程序的内存泄露,进而影响整个程序,甚至可能是整个电脑3、指针无法控制所指堆空间的生命周期我们就需要设计一个类SmartPointer他的功能如下:指针生命周期结束时主动释放堆空间。一片堆空间最多由一个指针标识。原因:因为我们要在析构函数中释放堆空间,如果2个智能... @TOC 一、构建智能指针的原因众所周知,C++是没有垃圾回收的,就会导致以下问题:1、导致动态申请堆空间,用完后不归还。2、会导致程序的内存泄露,进而影响整个程序,甚至可能是整个电脑3、指针无法控制所指堆空间的生命周期我们就需要设计一个类SmartPointer他的功能如下:指针生命周期结束时主动释放堆空间。一片堆空间最多由一个指针标识。原因:因为我们要在析构函数中释放堆空间,如果2个智能...
- 本文关于模版字面量的内部结构的探索过程。整个探索的过程还是很有趣的。虽然从前面的篇幅中看着很简单,但是其实我反复实验了多次,并且借助 String.raw() 的知识点,才很好的理解了输出中的结果。 本文关于模版字面量的内部结构的探索过程。整个探索的过程还是很有趣的。虽然从前面的篇幅中看着很简单,但是其实我反复实验了多次,并且借助 String.raw() 的知识点,才很好的理解了输出中的结果。
- @TOC 前言刷题之——Leetcode道简单题,通过这4道简单题,C/C++有新的理解,提高你的编程能力。leetcode地址 一、寻找正序数组的中位数 中位数的概念中位数是一组数据中的一个特殊值,可以将这组数据划分为两个部分,其中一部分的数值比中位数小,另一部分的数值比中位数大。换句话说,中位数将数据集合分成了两部分,使得左右两边的数据量相等或差距很小。在一个有序的数据集合中,中位数就是... @TOC 前言刷题之——Leetcode道简单题,通过这4道简单题,C/C++有新的理解,提高你的编程能力。leetcode地址 一、寻找正序数组的中位数 中位数的概念中位数是一组数据中的一个特殊值,可以将这组数据划分为两个部分,其中一部分的数值比中位数小,另一部分的数值比中位数大。换句话说,中位数将数据集合分成了两部分,使得左右两边的数据量相等或差距很小。在一个有序的数据集合中,中位数就是...
- 一、题目描述设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。示例 1:输入:["MinStack",... 一、题目描述设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。示例 1:输入:["MinStack",...
- 一、题目描述Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 word 。boolean search(String word) 如果字符串 word ... 一、题目描述Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 word 。boolean search(String word) 如果字符串 word ...
- 算法知识:判别是否需要使用单调栈,如果需要找到左边或者右边第一个比当前位置的数大或者小,则可以考虑使用单调栈 一、题目描述给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。示例 1:输入: temperature... 算法知识:判别是否需要使用单调栈,如果需要找到左边或者右边第一个比当前位置的数大或者小,则可以考虑使用单调栈 一、题目描述给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。示例 1:输入: temperature...
- 一、题目描述 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:grid = [[1,2,3],[4,5,6]]输出:12提示:m == g... 一、题目描述 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:grid = [[1,2,3],[4,5,6]]输出:12提示:m == g...
- 一、题目描述给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。示例 1:输入:nums = [1,1,1], k = 2输出:2示例 2:输入:nums = [1,2,3], k = 3输出:2提示:1 <= nums.length <= 2 * 104-1000 <= nums[i] <= 1000-107 <= k <= 107二、思路... 一、题目描述给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。示例 1:输入:nums = [1,1,1], k = 2输出:2示例 2:输入:nums = [1,2,3], k = 3输出:2提示:1 <= nums.length <= 2 * 104-1000 <= nums[i] <= 1000-107 <= k <= 107二、思路...
- 一、题目描述给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]提示:1 <... 一、题目描述给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]提示:1 <...
- 2023-07-17:给定一个数组arr,长度为n,再给定一个数字k,表示一定要将arr划分成k个集合,每个数字只能进一个集合。返回每个集合内部的平均值都累加起来最小的值。平均值向下取整。1 <= n <= 10^5,0 <= arr[i] <= 10^5,1 <= k <= n。真实大厂笔试题。答案2023-07-17:算法1(minAverageSum1):1.定义一个结构体Info,包... 2023-07-17:给定一个数组arr,长度为n,再给定一个数字k,表示一定要将arr划分成k个集合,每个数字只能进一个集合。返回每个集合内部的平均值都累加起来最小的值。平均值向下取整。1 <= n <= 10^5,0 <= arr[i] <= 10^5,1 <= k <= n。真实大厂笔试题。答案2023-07-17:算法1(minAverageSum1):1.定义一个结构体Info,包...
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中
热门标签