深入单例模式
1. 饿汉模式
饿坏了,上来就先实例化一个对象,好处是代码简单,坏处是这个对象后面如果一直用不到,就是个浪费。
public class A{
private static A a = new A();
private A(){}
public static A getInstance(){
return a;
}
}
2. 懒汉模式
懒洋洋的,用到的时候才抱佛脚。最简单的懒汉模式如下,存在线程安全问题。
public static class A{
private static A a=null;
private A(){}
public static A getInstance(){
if(a==null){
a=new A();
}
return a;
}
}
终极解决办法是使用DCL(double check lock)加volatile,如下所示:
public static class A{
private static volatile A a=null;
private A(){}
public static A getInstance(){
if(a==null){
synchronized (A.class){
if(a==null){
a=new A();
}
}
}
return a;
}
}
- DCL其实就是一锁二判三更新(在一锁之前加一个判断,提高并发时的效率,不需要每次一上来都先锁住消耗性能)。
- 加volatile的目的是防止第8行发生指令重排。
第8行在底层会有3个操作:
- 分配一块内存
- 初始化这块内存(一般是调用类的构造函数)
- 将这块内存赋给变量(如上代码中是变量a)
如果在变量a不加volatile,上面的步骤可能发生指令重排变成1、3、2,导致a先等于一块没有初始化(2还未执行)或初始化一半(2执行了一半)的内存,这时候如果代码其他部分(不需要获取A.class的锁的部分)访问了a变量,就会读到预料外的值。
这有点类似于数据库里的“脏读”,在事务处理中的数据被该事务外读到。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
深入单例模式
1. 饿汉模式 饿坏了,上来就先实例化一个对象,好处是代码简单,坏处是这个对象后面如果一直用不到,就是个浪费。 public class A{ private static A a new A(); private A(){} public static A getInstance(){ return a; } } 2. 懒…...
![](https://www.ngui.cc/images/no-images.jpg)
MongoDB 单机和集群环境部署教程
目录 一、MongoDB 单机环境部署1. 环境准备2. 安装 MongoDB2.1 在 Ubuntu 上安装 MongoDB2.2 在 CentOS 上安装 MongoDB2.3 启动 MongoDB 服务2.4 验证 MongoDB 安装2.5 MongoDB 基本安全设置 3. 单机部署注意事项 二、MongoDB 集群环境部署1. 环境准备2. MongoDB Replica Set …...
【学习笔记】Day 20
一、进度概述 1、机器学习常识12-18,以及相关代码复现 二、详情 12、SVM(support vector machines,支持向量机) 实际上,支持向量机是一种二分类模型,它将实例的特征向量映射为空间中的一些点,…...
![](https://www.ngui.cc/images/no-images.jpg)
StringBuffer与StringBuilder 2024-8-21 22-13
目录 一、StringBuffer二、StringBuilder三、总结 一、StringBuffer StringBuffer是一个可变的字符序列,它的存在是为了解决频繁操作字符串时产生大量临时对象的问题。 构造方法: StringBuffer():创建一个空的字符串缓冲区,初始容…...
![](https://i-blog.csdnimg.cn/direct/8947f2ecdfec4628af25ab50c1a0822a.png)
会声会影剪辑视频收费吗,会声会影最新破解版
会声会影2024:引领视频创作新时代的创新之旅** 在数字时代的浪潮中,视频创作已成为连接世界、表达创意的重要方式。随着技术的不断进步,一款名为“会声会影2024”的视频编辑软件横空出世,它不仅继承了前代产品的优秀传统…...
![](https://i-blog.csdnimg.cn/direct/aafa009508ca4088a1da258c56494e77.jpeg#pic_center)
在Windows11强制开启copilot
在 Windows 11 上启用自带的基于 GPT-4 的 Copilot 功能。以下是具体步骤: 更新系统: 确保你的 Windows 11 系统已经更新到最新版本(23H2 或更高版本)。你可以在“设置” > “Windows 更新”中检查并安装最新更新。 更改区域和…...
![](https://www.ngui.cc/images/no-images.jpg)
基于Java的开源CMS有哪些推荐,各自特点是什么
最强大、最易用的CMS,向大家做一个简要介绍。 01 Alfresco Alfresco是一个开源的企业网站内容管理系统,它提供了文档管理、多人协作、记录管理、知识管理网页内容和图像管理等功能。它使用Spring、 Hibernate、 Lucene 和JSF等最新java技术构建了模…...
![](https://i-blog.csdnimg.cn/direct/4319ffc5941d428f94a6c11e094d2660.png)
IPC进程通信以及网络通信
一、IPC 进程间通信方式 共享内存 //最高效的进程间通信方式 不需要把用户的东西再复制到内核 他们与内核进行绑定 共享内存: 1、是一块,内核预留的空间 2、最高效的通信方式 //避免了用户空间到内核空间的数据拷贝 IPC通信方式 ---操作流程类似的…...
![](https://i-blog.csdnimg.cn/direct/fff5499261c74e108f20f02979ade3a2.png)
【脏数据 bug 解决】ValueError: mean must have 1 elements if it is an iterable, got 3
问题描述: 在训练模型的过程中,出现 clip_image_processor 无法处理数据的问题,说明数据集中很可能出现了脏数据。本文使用的数据为 LAION-Aesthetics-V2-6.5plus,从 https://dagshub.com/DagsHub-Datasets/LAION-Aesthetics-V2-…...
![](https://i-blog.csdnimg.cn/direct/f92e670ca050441985b3b2246862ca9a.png)
【Vue3】集成 Ant Design Vue
【Vue3】集成 Ant Design Vue 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗…...
![](https://www.ngui.cc/images/no-images.jpg)
如何处理前端项目中的SEO优化:从SPA到SSR与SSG
如何处理前端项目中的SEO优化:从SPA到SSR与SSG 在前端开发的日常工作中,你可能经常会遇到这样的情况:辛辛苦苦写了一个功能丰富、界面炫酷的单页应用(SPA),但上线后发现搜索引擎的表现却不尽如人意。页面内…...
![](https://i-blog.csdnimg.cn/direct/e65c0f34d09b40ce987ff8ccdc68a330.png)
【UE5】Groom毛发系统的基本使用——给小白人添加头发
目录 效果 步骤 一、准备 二、使用3DsMax制作毛发 三、在UE中给小白人安装毛发 四、修改毛发材质 效果 步骤 一、准备 1. 新建一个第三人称模板工程 2. 在项目设置中,勾选“支持计算蒙皮缓存” 3. 在插件面板中,启用“Groom”和“Alembic Gro…...
![](https://www.ngui.cc/images/no-images.jpg)
DataWorks函数
文章目录 0、MaxCompute预置的函数分类1、日期函数2、数学函数3、算术运算符4、窗口函数5、聚合函数6、字符串函数7、复杂类型函数8、加密函数9、其他函数 0、MaxCompute预置的函数分类 函数类型说明日期函数支持处理DATE、DATETIME、TIMESTAMP等日期类型数据,实现…...
![](https://i-blog.csdnimg.cn/direct/a31cbc4348504b258d1b83f711de2a82.png)
设计模式学习优质网站分享:refactoring.guru
地址 英文版地址:https://refactoring.guru/design-patterns 中文版地址:https://refactoringguru.cn/design-patterns 介绍 这个网站是专门学习 设计模式 和 软件重构 的网站 整体来说并不花哨,但我觉得他最大的优点就是: 概…...
![](https://www.ngui.cc/images/no-images.jpg)
JVM-Java的四种引用
引用分析 无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象是否可达,判定对象是否可被回收都与引用有关,Java 提供了四种强度不同的引用类型 强引用: 被强引用关联的对象不会被回收,只有所…...
![](https://i-blog.csdnimg.cn/direct/5767683d3bea4bde84a0e8500ded2377.jpeg)
探索《黑神话:悟空》品质保障的背后:ISO体系认证
《黑神话:悟空》横空出世 8月20日上午10点,国产首款大型3A游戏《黑神话:悟空》正式上线。游戏一经上线便吸引了无数国内外用户的关注,不仅仅是因为其高超的游戏制作技术,极高的画面精度,精良的的视觉和战斗…...
![](https://i-blog.csdnimg.cn/direct/a7dae709ca4e4e4494585bc24b4c1bab.png)
ArcGIS Pro 实现人口分布栅格TIFF数据的网格提取与可视化
这里在分享一个人口1km精度栅格数据,LandScan是由美国能源部橡树岭国家实验室(ORNL)提供的全球人口分布数据集,具有最高分辨率的全球人口分布数据,是全球人口数据发布的社会标准,是全球最为准确、可靠&…...
![](https://www.ngui.cc/images/no-images.jpg)
select的缺点;poll ;poll的缺点;epoll
1.select的缺点: 1.select监听的文件描述符集合是一个数组,有上限(1024个) 2.select监听的文件描述符集合在应用层,内核层监听事件后需要传递给用户层带来资源开销 3.select需要用户手动查找产生事件的文件…...
![](https://i-blog.csdnimg.cn/direct/a9b7485e14e64e6cbd718e52e4ce5c92.png)
keli5_报错 Cannot Load Device Description问题
1原因 之前创建的keli5的项目软件版本与当前的软件版本不同 使其算法要重新选择 2解决方法 2-1 点击图中的魔术棒 2-2 在这个界面中进入 Settings选项(ST-Link Debugger 旁边) 2-3 点击Flash Download 选项进入图中界面 在点击天加 2-4选择fla…...
![](https://img-blog.csdnimg.cn/img_convert/bf71ac921597a3d8eb88e6eb0a11dae7.gif)
算法的学习笔记—把二叉树打印成多行(牛客JZ78)
😀前言 在算法面试中,二叉树的层序遍历是一个经典的题目。而这道题的要求是进一步将二叉树的每一层结点值打印成多行,即同一层结点从左至右输出,最终结果存放到一个二维数组中返回。接下来,我们将通过代码实例详细解析…...
![](https://i-blog.csdnimg.cn/direct/39122efd3b8d437282233be109a18ed5.png)
FreeRTOS 时间管理
延时函数介绍 函数 描述 vTaskDelay() 相对延时 xTaskDelayUntil() 绝对延时 相对延时:指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间结束 绝对延时:指将整个任务的运行周期看成一个整体,适用于需要按…...
![](https://www.ngui.cc/images/no-images.jpg)
F. Valuable Cards D. Smithing Skill
D题 F题 F题: 因为是连续的且都要选,我们直接从左到右去取每个区间到不合法的情况即可,可以在n1的位置添加一个x来结束区间判断。因为是要乘积为x,那么我们只需要放x的因子进去,不然会超时,同时也可以用v…...
![](https://i-blog.csdnimg.cn/direct/d719126837d54f13a8908a9b692a3a93.png)
【电子通识】IPC-A-600中对验收标准的定义
在文章【电子通识】IPC-A-610标准对产品的四种验收条件都是什么意思?中我们讲到IPC-A-610标准(电子组件的可接受性)对于产品的四种验收条件。本文中我们同理讲一讲IPC-A-600中对验收标准的定义。 IPC-A-600文件中的多数示意图和照片同时表示每…...
![](https://i-blog.csdnimg.cn/direct/7f726c4e3d634975814c87e2c544340f.png)
MyBatis(初阶)
1.什么是MyBtis MyBatis是持久层框架,⽤于简化JDBC的开发。 2.准备工作 2.1 创建⼯程 数据库: 2.2 配置数据库连接字符串 以application.yml⽂件为例: 2.3 写持久层代码 Data public class UserInfo {private Integer id;private String username;private Stri…...
![](https://img-blog.csdnimg.cn/img_convert/168bd700f4b9df5e938ad244249a31f0.png)
KDP数据平台:以实战案例验证技术领先力
本文由智领云 LeetTools 工具自动生成 申请试用: https://www.leettools.com/feedback/ 在当今快速发展的技术环境中,数据平台的选择对企业的数字化转型和业务发展至关重要。智领云开源KDP(Kubernetes Data Platform)在数据处理和…...
![](https://i-blog.csdnimg.cn/direct/4a070d73c6cc4f0dadd7009fd74647a7.png)
[Linux] 什么是 Shell?
一、什么是 shell ? shell在英语中的意思就是外壳,所以我们习惯称shell程序为壳程序。那为什么又会被叫做壳程序呢?那是因为shell程序是在内核上面的,属于操作系统的外壳部分,因此我们就称之为壳程序(shell)。 在 Linux 中&#…...
![](https://img-blog.csdnimg.cn/img_convert/80223e4ca111a0b515d3bd82927a8a4d.png)
大模型学习应用 2:快速上手大模型基于langchain实现RAG检索应用
快速上手大模型基于langchain实现RAG检索应用 - 项目作业 目录 准备工作镜像选择算力选择安装包数据说明提示参考链接 Task1 申请 api 后,使用 langchain 导入大模型,并打印出大模型信息Task2 使用 langchian 加载数据,并把数据打印出来Task…...
![](https://i-blog.csdnimg.cn/direct/0f0eb589e85f482892f320ebe9da790d.png)
python环境安装之后,cmd输入python回车会打开微软商店
坑爹!python环境安装之后,cmd输入python回车会打开微软商店 最近发现,安装python环境成功之后,可能会出现cmd输入python验证是否安装成功老会打开微软商店! 解决,打开系统环境配置,找到刚安装…...
![](https://i-blog.csdnimg.cn/direct/efdce504c6bf4797b21ae62db8726754.png)
USB Type-C如何取9V、12V、15V、20V电压-PD快充协议芯片ECP5701
相信大家在生活中也发现了,现在越来越多的设备都改用这种type-C接口的母座进行取电了。 因为欧盟决议 :自2024年起部分消费电子产品必须提供单一的USB-C充电接口。 那么这种type-C接口相比之前的Micro-B接口有着一个很大的优势就是可以有更高的电压&…...
![](https://www.ngui.cc/images/no-images.jpg)
Go 语言 Map 17
Go 语言提供了一个强大的 Map 结构体,用于存储键值对。Map 可以用来存储数据,快速查找和修改数据。下面是 Go 语言 Map 的使用教程。 什么是 Map? Map 是一个键值对的集合,它可以存储任意类型的键和值。Map 中的每个键都是唯一的…...
![](/images/no-images.jpg)
做视频网站视频/今日新闻头条新闻最新
如果创建了索引(a,b),再创建索引(a)就是冗余索引,这会影响性能。 在MySQL 5.6 或更高版本,可以直接在sys库中查询schema_redundant_indexes表,就可以能获取到冗余索引信息ÿ…...
![](https://img-blog.csdnimg.cn/20200503195212213.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNDM3MTIy,size_16,color_FFFFFF,t_70)
php网站建设与维护/正规seo排名多少钱
基数排序基本思想 将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。 这样说明,比较难理解,…...
![](https://img-blog.csdnimg.cn/img_convert/4612d220de2eaf25caa50a18a8078115.png)
做淘宝客网站需要多大带宽/查关键词
网慧天下科技为大家讲解网络建设,希望大家能够喜欢。网站建设在经过一番努力之后就可以开始慢慢准备上线工作了,但是在上线之前必须要先对网站做一次整体测试工作,具体测试哪些方面可能有些站长对此比较迷茫,当然最好的测试方法就…...
![](/images/no-images.jpg)
内容管理系统做网站/网络营销推广实训报告
前情提要: 2021 年进了基科班CSP2021, 思考了半小时想到了一个绝妙的A题做法,半小时rush完,半小时对拍。然后觉得 B 是个傻逼题,连写三种 dp 全假,最后只剩了不到一个小时,边抓头发边rush暴力&…...
![](/images/no-images.jpg)
凤台县美丽乡村建设网站/营销网点机构号
1.面向对象的思想主要包括什么?2.什么是ASP.net中的用户控件3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?4.列举一下你所…...
![](http://igoro.com/wordpress/wp-content/uploads/2010/02/image12.png)
做国外网站用什么颜色/潍坊网站seo
网上各种的说法,不外乎这么几种 第一种简单的说呢就是这样的: 第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。 第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器…...