当前位置: 首页 > news >正文

关于加强政府网站信息内容建设/优化关键词具体要怎么做

关于加强政府网站信息内容建设,优化关键词具体要怎么做,wordpress 图片放大插件,做可转债好的网站1.说说hashmap的负载因子 2.Hashmap和Hashtable有什么不一样的?Hashmap一般怎么用? 3.ConcurrentHashMap怎么实现的? 4.分段锁怎么加锁的? 5.分段锁是可重入的吗? 6.已经用了synchronized,为什么还要用CAS呢…

1.说说hashmap的负载因子
2.Hashmap和Hashtable有什么不一样的?Hashmap一般怎么用?
3.ConcurrentHashMap怎么实现的?
4.分段锁怎么加锁的?
5.分段锁是可重入的吗?
6.已经用了synchronized,为什么还要用CAS呢?
7.ConcurrentHashMap用了悲观锁还是乐观锁?
8.HashTable 底层实现原理是什么?
9.HashTable线程安全是怎么实现的?
10.hashtable 和concurrentHashMap有什么区别
11.说一下HashMap和Hashtable、ConcurrentMap的区别?

1.说说hashmap的负载因子?

负载因子为0.75。这是代码编写者在基于概率论和分布的知识,权衡了碰撞发生的可能性和空间浪费。负载因子太低会导致大量的空桶浪费空间,负载因子太高会导致大量的碰撞,降低性能。0.75 的负载因子在这两个因素之间取得了良好的平衡。

2.Hashmap和Hashtable有什么不一样的?Hashmap一般怎么用?

最主要的区别就是线程安全与否,hashmap是线程安全的,扩容机制(很明确了,补充一下:插入元素后如果链表长度大于阈值(默认为8),先判断数组长度是否小于64,如果小于,则扩充数组,反之将链表转化为红黑树,如果小于,则扩充数组,反之将链表转化为红黑树)

HashTable,效率低,是因为保证线程同步,对其内部方法都采用了synchronized修饰。且不可以存储null的key和value。初始容量是11,每一次扩容是2n+1,底层是数组+链表。
基本没有人用了,用ConcurrentHashMap。

3.ConcurrentHashMap怎么实现的?

1.7 大数组Segment,小数组+链表的NodeEntry。Segment 是一种可重入锁(ReentrantLock)。
1.8,进行了修改,抛弃了segment,并引入红黑树提高查找效率。对头结点加锁来保证线程安全的,锁的粒度相比 Segment 来说更小了,发生冲突和加锁的频率降低了,并发操作的性能就提高了。主要通过 volatile + CAS 或者 synchronized 来实现的线程安全的。
一、使用volatile保证当Node中的值变化时对于其他线程是可见的
二、使用table数组的头结点作为synchronized的锁来保证写操作的安全
三、当头结点为null时,使用CAS操作来保证数据能正确的写入。

volatile V val;
volatile Node<K,V> next;

4.分段锁怎么加锁的?

Segment 本身就继承了 ReentrantLock 具备了锁的功能,在每次 put 前都会先尝试 tryLock() 加锁,如果成功则进行元素存储;如果失败,就会调用 Segment 的 scanAndLockForPut() 尝试循环加锁并扫描指定的 key。

5.分段锁是可重入的吗?

继承的时ReentrantLock。是可重入锁。
任意线程在获取到锁之后能够再次获取该锁而不会被锁阻塞,首先他需要具备两个条件:
线程再次获取锁:所需要去识别获取锁的线程是否为当前占据锁的线程,如果是,则再次获取成功
锁的最终释放:线程重复n次获取了锁,随后在第n次释放该锁后,其它线程能够获取到该锁。锁的最终释放要求锁对于获取进行计数自增,计数表示当前线程被重复获取的次数,而被释放时,计数自减,当计数为0时表示锁已经成功释放。

6.已经用了synchronized,为什么还要用CAS(Compare-And-Swap)呢?

权衡。主要是根据锁竞争程度来判断的:一些部分用到synchronized一些部分用CAS。
在putVal中,如果计算出来的hash槽没有存放元素,那么就可以直接使用CAS来进行设置值,这是因为在设置元素的时候,因为hash值经过了各种扰动后,造成hash碰撞的几率较低,那么我们可以预测使用较少的循环+CAS来完成具体的hash落槽操作。
当发生了hash碰撞的时候说明容量不够用了或者已经有大量线程访问了,当发生了hash碰撞的时候说明容量不够用了或者已经有大量线程访问了。

CAS 是乐观锁,线程执行的时候不会加锁,它会假设此时没有冲突,然后完成某项操作;如果因为冲突失败了就重试,直到成功为止。多用于“读多写少“的环境,避免频繁加锁影响性能。
synchronized是悲观锁。对于悲观锁来说,它总是认为每次访问共享资源时会发生冲突,所以必须对每次数据操作加上锁,以保证临界区的程序同一时间只能有一个线程在执行。多用于”写多读少“的环境,避免频繁失败和重试影响性能。
CAS:因为 CAS 是一种原子操作,它是一种系统原语,是一条 CPU 的原子指令,从 CPU 层面已经保证它的原子性。原本有三个元素,一个是要更新的变量,一个是预期值,一个是更新值。首先查看要更新变量是否是预期值,是的话,说明没有其他线程修改过,赋予新值。否则什么都不做。但失败的线程并不会被挂起,仅是被告知失败,并且允许再次尝试,当然也允许失败的线程放弃操作。
自旋锁。结合着锁来理解的话就是,先获取一次锁,如果获取不到锁,会不停的循环获取,直到获取到。不像普通的锁那样,如果获取不到锁就进入阻塞状态。
自旋锁等于循环+CAS。

7.ConcurrentHashMap用了悲观锁还是乐观锁?

用到了synchronized是悲观锁,和CAS是乐观锁。
在这里插入图片描述

8.HashTable 底层实现原理是什么?

Hashtable的底层数据结构主要是数组加上链表,数组是主体,链表是解决hash冲突存在的。
HashTable是线程安全的,实现方式是Hashtable的所有公共方法均采用synchronized关键字,当一个线程访问同步方法,另一个线程也访问的时候,就会陷入阻塞或者轮询的状态。

9.HashTable线程安全是怎么实现的?

在这里插入图片描述

10.hashtable 和concurrentHashMap有什么区别

底层数据结构和实现线程安全的方法,粒度。

11.说一下HashMap和Hashtable、ConcurrentMap的区别?

在这里插入图片描述

相关文章:

每日十题八股-2024年12月7日

1.说说hashmap的负载因子 2.Hashmap和Hashtable有什么不一样的&#xff1f;Hashmap一般怎么用&#xff1f; 3.ConcurrentHashMap怎么实现的&#xff1f; 4.分段锁怎么加锁的&#xff1f; 5.分段锁是可重入的吗&#xff1f; 6.已经用了synchronized&#xff0c;为什么还要用CAS呢…...

VTK编程指南<三>:基于VTK入门程序解析来理解VTK基础知识

1、VTK入门程序 下面是一个完整的Vtk入门程序&#xff0c;我们基于这个程序来对VTK的基本知识进行一个初步了解。 #include <iostream>#include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL2);// VTK was built with vtkRenderingOpenGL2 VTK_MODULE_INI…...

PyQt5快速开发与实战

PyQt5快速开发与实战相关资源 PyQt5快速开发与实战配套代码资源获取 PyQt5快速开发与实战 第一个要跟大家分享的就是的《PyQt5快速开发与实战》。该书既涵盖了 PyQt5 的基础知识&#xff0c;又包含了实战应用技巧&#xff0c;对 PyQt5 的基本概念和技术细节进行了详细阐述&…...

SpringBoot 开源停车场管理收费系统

一、下载项目文件 下载源码项目文件口令&#xff1a; 【前端小程序地址】(3.0)&#xff1a;伏脂火器白泽知洞座/~6f8d356LNL~:/【后台管理地址】(3.0)&#xff1a;伏脂火器仇恨篆洞座/~0f4a356Ks2~:/【岗亭端地址】(3.0)&#xff1a;动作火器智汇堂多好/~dd69356K6r~:/复制口令…...

cmake: error while loading shared libraries: libssl.so.1.1

在ubuntu22.04中编译c文件时出现如下错误&#xff1a; cmake: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory 解决办法&#xff1a;1.进网站下载对应的.deb文件&#xff0c;链接为&#xff1a;https://sec…...

部署loki,grafana 以及springcloud用法举例

文章目录 场景docker 部署grafanadocker-compose部署loki维护配置文件 local-config.yaml维护docker-compose.yml配置启动 grafana 添加loki数据源springcloud用法举例查看loki的explore,查看日志 场景 小公司缺少运维岗位&#xff0c;需要研发自己部署日志系统&#xff0c;elk…...

后端-编辑按钮的实现

编辑一共要实现两步&#xff1a; 1.点击编辑蹦出来一个弹窗&#xff0c;此时需要回显&#xff0c;根据id查出来这条数据 2.修改某些值之后点击保存的时候调用修改的接口 根据id查询的时候正常操作 修改值的时候要注意一些问题 mapper层的Employee和impl层的接收实体不一样...

uniapp中的@tap与@click:点击事件的微妙差异

在uniapp的开发过程中&#xff0c;我们经常会遇到两种点击事件&#xff1a;tap和click。虽然它们都是点击事件&#xff0c;但在实际使用中却存在一些微妙的差异。本文将详细解析这两种事件的区别&#xff0c;帮助开发者更好地理解和应用。 首先&#xff0c;让我们来看看它们的…...

Uniapp的vue、nvue、uvue后缀名区别

在 UniApp 中&#xff0c;.vue、.nvue 和 .uvue 是不同的文件后缀名&#xff0c;每个文件格式的使用场景和兼容性略有不同。下面是每个文件后缀的详细解释以及它们的兼容性&#xff1a; 1. .vue 文件 定义&#xff1a;.vue 是标准的 Vue 单文件组件格式&#xff0c;主要用于基…...

完美解决Qt Qml窗口全屏软键盘遮挡不显示

1、前提 说明&#xff1a;我使用的是第三方软键盘 QVirtualKeyboard QVirtualKeyboard: Qt5虚拟键盘支持中英文,仿qt官方的virtualkeyboard模块,但使用QWidget实现。 - Gitee.com 由于参考了几篇文章尝试但没有效果&#xff0c;链接如下&#xff1a; 文章一&#xff1a;可能…...

寄存器、缓存、内存三者关系

寄存器、缓存、内存三者关系&#xff1a; 按与CPU远近来分&#xff0c;离得最近的是寄存器&#xff0c;然后缓存(CPU缓存)&#xff0c;最后内存。CPU计算时&#xff0c;先预先把要用的数据从硬盘读到内存&#xff0c;然后再把即将要用的数据读到寄存器。于是 CPU<--->…...

九、RNN的变体

RNN的变体 前言一、长短期记忆网络&#xff08;LSTM&#xff09;1.1 LSTM结构分析1.1.1 遗忘门1.1.1.1 遗忘门结构图与计算公式1.1.1.2 结构分析1.1.1.3 遗忘门的由来1.1.1.4 遗忘门的内部演示 1.1.2 输入门1.1.2.1 输入门结构图与计算公式1.1.2.2 结构分析1.1.2.3 输入门的内部…...

高级java每日一道面试题-2024年12月07日-JVM篇-如何选择垃圾收集器?

如果有遗漏,评论区告诉我进行补充 面试官: 如何选择垃圾收集器? 我回答: 在Java高级面试中&#xff0c;选择垃圾收集器&#xff08;Garbage Collector&#xff0c;GC&#xff09;是一个重要且常见的议题。选择合适的垃圾收集器对于优化应用程序的性能至关重要。以下是对如何…...

棋牌游戏项目ctrl + c无法退出进程问题

棋牌游戏项目ctrl c无法退出进程问题 运行的服务为 user , 启动命令为 cd user && go run main.go启动之前先加入调试语句 在 go func() { metric.Serve(...) } 打日志在 app.Run(...) 打日志 user/main.go var configFile flag.String("config", "…...

论文概览 |《Urban Analytics and City Science》2023.03 Vol.50 Issue.3

本次给大家整理的是《Environment and Planning B: Urban Analytics and City Science》杂志2023年3月第50卷第3期的论文的题目和摘要&#xff0c;一共包括18篇SCI论文&#xff01; 论文1 A new kind of search 一种新型的搜索 【摘要】 ChatGPT (2022) was first launched o…...

前端知识1html

VScode一些快捷键 Ctrl/——注释 !——生成html框架元素 *n——生成n个标签 直接书写html的名字回车生成对应的标签 常见标签 span&#xff1a; <span style"color: red;">hello</span> <span>demo</span> span实现&#xff1a; 标题…...

Vue03

目录 一、今日目标 1.生命周期 2.综合案例-小黑记账清单 3.工程化开发入门 4.综合案例-小兔仙首页 二、Vue生命周期 三、Vue生命周期钩子 四、生命周期钩子小案例 1.在created中发送数据 六、工程化开发模式和脚手架 1.开发Vue的两种方式 2.Vue CLI脚手架 基本介绍…...

深入浅出:Gin框架路由与HTTP请求处理

深入浅出&#xff1a;Gin框架路由与HTTP请求处理 引言 在Web开发中&#xff0c;路由和HTTP请求处理是构建API的核心部分。Gin框架作为Go语言中最受欢迎的Web框架之一&#xff0c;提供了简洁而强大的工具来处理这些任务。本文将深入浅出地介绍如何使用Gin框架进行路由定义、处…...

C++初阶——模板初阶

目录 1、如何实现一个通用的交换函数 2、函数模板 2.1 函数模板的概念 2.2 函数模板的格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3、类模板 3.1 类模板的格式 3.2 类模板的实例化 1、如何实现一个通用的交换函数 void Swap(int& lef…...

y3编辑器文档3:物体编辑器

文章目录 一、物体编辑器简介1.1 界面介绍1.2 复用(导入导出)1.3 收藏夹(项目资源管理)1.4 对象池二、单位2.1 数据设置2.2 表现设置2.3 单位势力和掉率设置2.4 技能添加和技能参数修改2.5 商店2.5.1 商店属性设置2.5.2 商店物品设置三、装饰物3.1 属性编辑3.2 碰撞体积四、…...

Linux-USB驱动实验

USB 是很常用的接口&#xff0c;目前大多数的设备都是 USB 接口的&#xff0c;比如鼠标、键盘、USB 摄像头等&#xff0c;我们在实际开发中也常常遇到 USB 接口的设备&#xff0c;本章我们就来学习一下如何使能 Linux内核自带的 USB 驱动。注意&#xff01;本章并不讲解具体的 …...

【配置查询】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…...

JavaWeb学习--cookie和session

目录 &#xff08;一&#xff09;Cookie概述 1.什么叫Cookie 2.Cookie规范 3.Cookie的覆盖 4.cookie的最大存活时间 ​​​​​​&#xff08;Cookie的生命&#xff09; &#xff08;二&#xff09; Cookie的API 1.创建Cookie&#xff1a;new 构造方法 2.保存到客户端浏…...

Next.js系统性教学:动态路由与并行路由

更多有关Next.js教程&#xff0c;请查阅&#xff1a; 【目录】Next.js 独立开发系列教程-CSDN博客 目录 1. 动态路由 (Dynamic Routes) 1.1 动态路由的基础 1.2 获取动态参数 1.3 动态嵌套路由 1.4 捕获所有动态路由 2. 并行路由 (Parallel Routes) 2.1 并行路由的基础…...

Backblaze 2024 Q3硬盘故障质量报告解读

作为一家在2021年在美国纳斯达克上市的云端备份公司&#xff0c;Backblaze一直保持着对外定期发布HDD和SSD的故障率稳定性质量报告&#xff0c;给大家提供了一份真实应用场景下的稳定性分析参考数据&#xff1a; 以往报告解读系列参考&#xff1a; Backblaze发布2024 Q2硬盘故障…...

[创业之路-179]:《领先的密码 - BLM核心方法体系与企业实践》主要章节与主要内容

目录 前言&#xff1a; 1、引言或概述 2、BLM方法论的背景与起源 3、BLM方法论的发展与完善 4、BLM方法论的重要性与价值 5、本书的内容与结构 二、BLM核心方法体系 1. 领先的起点 2. 领先的战略 3. 领先的执行 4. 领先之魂 三、本书的核心思想 1、以战略为核心 …...

uniapp的生命周期

在 UniApp 中&#xff0c;生命周期函数是指在组件&#xff08;如页面、视图等&#xff09;创建和销毁过程中会自动触发的一些函数。UniApp 提供了多种生命周期函数&#xff0c;帮助开发者在适当的时机进行相关的逻辑处理。 UniApp 的生命周期函数可以分为 页面生命周期 和 组件…...

基于 RNN(GRU, LSTM)+CNN 的红点位置检测(pytorch)

文章目录 1 项目背景2 数据集3 思路4 实验结果5 代码 1 项目背景 需要在图片精确识别三跟红线所在的位置&#xff0c;并输出这三个像素的位置。 其中&#xff0c;每跟红线占据不止一个像素&#xff0c;并且像素颜色也并不是饱和度和亮度极高的红黑配色&#xff0c;每个红线放大…...

L2G3000-LMDeploy 量化部署实践

文章目录 LMDeploy 量化部署实践闯关任务环境配置W4A16 量化 KV cacheKV cache 量化Function call LMDeploy 量化部署实践闯关任务 环境配置 conda create -n lmdeploy python3.10 -y conda activate lmdeploy conda install pytorch2.1.2 torchvision0.16.2 torchaudio2.1.…...

verilog编程规范

verilog编程规范 文章目录 verilog编程规范前言一、代码划分二、verilog编码ABCDEFG 前言 高内聚&#xff0c;低耦合&#xff0c;干净清爽的代码 一、代码划分 高内聚&#xff1a; 一个功能一个模块干净的接口提取公共的代码 低耦合&#xff1a; 模块之间低耦合尽量用少量…...