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

左侧 导航 网站/营销网站建设规划

左侧 导航 网站,营销网站建设规划,百度58同城找工作,胶州网站建设哪里有历史文章(文章累计500) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《…

历史文章(文章累计500+)

《国内最全的Spring Boot系列之一》

《国内最全的Spring Boot系列之二》

《国内最全的Spring Boot系列之三》

《国内最全的Spring Boot系列之四》

《国内最全的Spring Boot系列之五》

《国内最全的Spring Boot系列之六》

《国内最全的Spring Boot系列之七》

一文讲清楚SpringBoot项目打包jar后运行报错template might not exist - 第514篇

idea springboot woff/woff2/eot/ttf/svg等小图标不显示的问题 - 第515篇

Noisee AI中文站网页版 AI 音乐生成视频全新登场,快来抢先体验——国内第一个登场的中文站来袭  - 516篇

Spring的SmartLifecycle可以没用过,但没听过就不好了!- 第517篇

SpringBoot异常处理机制之自定义404、500错误提示页面 - 518篇

悟纤:师傅,你看看,我写了一个Redis的阻塞队列的通用服务,一开始一个开发接入我这个服务的时候,运行的很正常;当有另外一个开发也接入的时候,就会出现一些数据被另外一个改的现象。

师傅:你这个应该是在服务当中定义了一些配置的属性,这些属性对于某个场景是不变的;当另外一个场景是其它的配置了。

悟纤:师傅,不要这样子,感觉你就像我肚子里的蛔虫,怎么我还没告诉你,你就都不知道了。

师傅:你这个不用是蛔虫,都能猜到,这里说明你对于Spring Boot有些知识还了解的不够透彻。要回来深造下了,O(∩_∩)O哈哈~

悟纤:那师傅赶紧给我深造深造~,我要钱多多,我要买车车,我要变美变瘦变酷酷…

导读

最近在开发一个AI音乐项目(地址在下面)的时候,有个场景应用到了Redis的阻塞队列,一开始只在一个地方进行使用,后来有增加了一个新的应用场景,又引入了一下,就导致里面的属性信息,比如队列名称,阻塞队列对象,比较Comparator构造器,在两个业务上数据就被共用了,但是这又不是我所期望的发生的,那么这个时候要怎么办呢?

有粉丝会有疑问:阻塞队列,Java中不是有并发编程的各种队列,

ConcurrentLinkedDeque、LinkedBlockingQueue、DelayQueue,如果你的数据不牵涉到集群的问题,那么你用java提供的这些库进行开发就好了,但是如果数据要集群问题的,那么就不能这么干了。

回到上面一开始提出的问题,我们要怎么办以及要怎么思考呢?带着疑问和博主一起来探讨和学习一下。

项目体验地址:

https://suno4.cn/#/?i=8NCBS8_WXTT

一、SpringBoot的单例模式

Spring Boot的bean默认注入是单例的,它在Spring容器初始化的时候创建对象;

每次调用单例类的实例对象时,都获得同一个对象。

为什么用单例多例:

之所以用单例,是因为没必要每个请求都新建一个对象,这样子既浪费CPU又浪费内存;可以保证系统中一个类只有一个实例而且该实例和外界通信,解约资源,便于维护;当前需要频繁访问一个对象,可以用单例,避免创建过多的垃圾

二、SpringBoot的多例模式

多例模式:每次调用多例类的实例对象时,会获取到不同的对象(会自建新的对象)。

为什么用多例模式:

之所以用多例,是为了防止并发问题;即一个请求改变了对象的状态,此时对象又处理另一个请求,而之前请求对对象状态的改变导致了对象对另一个请求做了错误的处理。

用单例和多例的标准只有一个:当对象含有可改变的状态时(更精确的说就是在实际应用中该状态会改变),则多例,否则单例;

单例和多例的最大的区别:每次获取的美女是同一个就是单例,每次获取的美女都不一样,那么就是多例。

三、多例模式的使用和失效分析

对于Spring Boot默认情况下是单例的,也就是说,你使用了Spring Boot的注解,@Service、@Componment等注解注入的bean都是单例的,那么这个时候要设置为多例的,只需要在类上添加一个注册@Scope,属性值为:prototype,如下代码:

@Service@Scope(value = "prototype")public class MyService {

但我更希望你这么使用:

@Service@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)public class MyService {

对于这里的value值,可配置的值如下:

(1)ConfigurableBeanFactory.SCOPE_PROTOTYPE,即“prototype”: singleton代表多例。

(2)ConfigurableBeanFactory.SCOPE_SINGLETON,即“singleton” : singleton代表单例。

(3)WebApplicationContext.SCOPE_REQUEST,即“request”: request表示请求,即在一次http请求中,被注解的Bean都是同一个Bean,不同的请求是不同的Bean。

(4)WebApplicationContext.SCOPE_SESSION,即“session”: session表示会话,即在同一个会话中,被注解的Bean都是使用的同一个Bean,不同的会话使用不同的Bean。

为什么我的多例不好使?

为什么明明设置了@Scope(value=”prototype”)的属性,仍然不好使呢?这个就和一些用法上有关系了。

多例模式在进行注入时,不能使用 @Autowired,否则注入的还是单例模式,实现多例模式需要使用工厂模式;

@Autowired 在项目启动时已经将bean实例注入到引用类的成员变量中,因此在调用时是直接引用了已被初始化的成员变量,不会再从bean工厂中获取,因此没办法实现多例。也就是说多例模式,必须从bean工厂获取bean才能够实现。

多例获取方式

注入BeanFactory对象,调用其getBean方法即可:

@Autowiredprivate BeanFactory factory;// 此时得到的对象即为多例MyService myService = factory.getBean(MyService.class);

三、我的情况

那这个单例和多例和我们一开始提出的问题有何关联关系呢?

我们的代码是定义了一些属性属性,如下:

@Servicepublic class RedisBlockingService {    @Autowired    private RedissonClient redissonClient;    private String queueName;    private RBlockingQueue blockingQueue;    private Comparator comparator;}

这些属性信息,针对不同的业务场景应该会有不同的配置信息,比如针对音乐场景,那么就是音乐创作的队列信息,如果是视频创作,那么就是视频的队列信息。

那么这个时候,第二个后创建的就会把第一个创建的属性给覆盖掉,因为默认是单例的,也是在创建的时候,这些信息会随着单例一起构造出来。

所以这个时候就要使用多例来进行创建,以此来确保针对不同的业务场景,属性值不一样,如下代码:

@Service@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)public class RedisBlockingService {    @Autowired    private RedissonClient redissonClient;    private String queueName;    private RBlockingQueue blockingQueue;    private Comparator comparator;}

四、灵魂拷问

如下代码:

@Autowiredprivate RedisBlockingService redisBlockingService;@Autowiredprivate RedisBlockingService redisBlockingService1;

以上两个对象是否是同一个对象?(测试对应的Spring Boot版本2.5+)

历史文章(文章累计500+)

《国内最全的Spring Boot系列之一》

《国内最全的Spring Boot系列之二》

《国内最全的Spring Boot系列之三》

《国内最全的Spring Boot系列之四》

《国内最全的Spring Boot系列之五》

《国内最全的Spring Boot系列之六》

《国内最全的Spring Boot系列之七》

ES全文检索[ES系列] - 第508篇

ES 深度分页问题及针对不同需求下的解决方案[ES系列] - 第509篇

抖音主播/电商人员有福了,利用Suno创作产品宣传,让产品动起来-小米Su7 - 第510篇

Spring Boot整合ElasticSearch实战 - 第511篇

Transaction rolled back because it has been marked as - 第512篇

五音不全也浪漫,521清华学霸为爱人写歌 - 第513篇

一文讲清楚SpringBoot项目打包jar后运行报错template might not exist - 第514篇

idea springboot woff/woff2/eot/ttf/svg等小图标不显示的问题 - 第515篇

Noisee AI中文站网页版 AI 音乐生成视频全新登场,快来抢先体验——国内第一个登场的中文站来袭  - 516篇

Spring的SmartLifecycle可以没用过,但没听过就不好了!- 第517篇

SpringBoot异常处理机制之自定义404、500错误提示页面 - 518篇

相关文章:

SpringBoot 中多例模式的神秘世界:用法区别以及应用场景,最后的灵魂拷问会吗?- 第519篇

历史文章(文章累计500) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《…...

基于STM32设计的智能婴儿床(ESP8266局域网)_2024升级版_180

基于STM32设计的智能婴儿床(采用STM32F103C8T6)(180) 文章目录 一、设计需求【1】项目功能介绍【2】程序最终的运行逻辑【3】硬件模块组成【4】ESP8266模块配置【5】上位机开发思路【6】系统功能模块划分1.2 项目开发背景1.3 开发工具的选择1.4 系统框架图1.5 系统原理图1.6 硬…...

C++(第四天----拷贝函数、类的组合、类的继承)

一、拷贝构造函数(复制构造函数) 1、概念 拷贝构造函数,它只有一个参数,参数类型是本类的引用。如果类的设计者不写拷贝构造函数,编译器就会自动生成拷贝构造函数。大多数情况下,其作用是实现从源对象到目…...

第一课:接口配置IP地址:DHCP模式

希望pc1,pc2,pc3自动分配到ip地址。 实验拓扑: 配置:高级一点的路由器还是手动配置: [R1]int g0/0/0 [R1-g0/0/0]ip address 192.168.1.1 255.255.255.0 打开PC1,切换到DHCP模式,点击应用,再到命令行输入ipconfig&…...

esp32_spfiffs

生成 spiffs image python spiffsgen.py <image_size> <base_dir> <output_file> eg, python spiffsgen.py 0x2000 ./folder hello.bin Arduino 的库有例子可以直接用于 OTA 升级 spiffs 分区 HTTPUpdateResult HTTPUpdate::updateSpiffs(HTTPClient &h…...

每日一练全新考试模式解锁|考试升级

&#x1f64b;频繁有小伙伴咨询&#xff1a;我想举办一场历时一个月的答题活动&#xff0c;学生可以每天打开答题&#xff0c;活动完结后可以导出每天的答题成绩 此前我们都会让小伙伴创建30场考试&#xff0c;然后使用批量分享功能组合起来&#xff0c;对外分享一个链接就可以…...

pyqt5图片分辨率导致的界面过大的问题

项目场景&#xff1a;pyqt5的图片分辨率和屏幕分辨率问题 提示&#xff1a;这里简述项目相关背景&#xff1a;图片分辨率&#xff1a;500*500&#xff1b;显示屏分辨率&#xff1a;600&#xff1b;导致界面显示不全&#xff1b; 在其他高分辨率显示屏中没有这个问题。 问题描述…...

(三)前端javascript中的数据结构之集合

集合的特点 1.无序 2.唯一性 3.不可重复 集合相对于前面几种数据结构&#xff0c;比较简单好理解&#xff0c;看看代码实现就能知道他的用法了 集合的创建 function MySet() {this.item {}; } MySet.prototype.has function (value) {return value in this.item; };//增 M…...

VuePress 的更多配置

现在&#xff0c;读者应该对 VuePress、主题和插件等有了基本的认识&#xff0c;除了插件&#xff0c;VuePress 自身也有很多有用的配置&#xff0c;这里简单说明下。 ‍ ‍ VuePress 的介绍 在介绍了 VuePress 的基本使用、主题和插件的概念之后&#xff0c;我们再来看看官…...

问题解决|Python 代码的组织形式与编码规范

一、Python中组织形式 &#xff08;一&#xff09;组织形式&#xff08;函数&#xff0c;类&#xff0c;模块&#xff0c;包&#xff0c;库&#xff09;概览 &#xff08;1&#xff09;概览 组织形式描述特点或用途例子函数一段具有特定功能的代码块&#xff0c;可以接受参数…...

Flask项目搭建及部署 —— Python

flask搭建及部署 pip 19.2.3 python 3.7.5 Flask 1.1.1 Flask-SQLAlchemy 2.4.1 Pika 1.1.0 Redis 3.3.11 flask-wtf 0.14.2 1、创建flask项目&#xff1a; 创建完成后整个项目结构树&#xff1a; app.py: 项⽬管理⽂件&#xff0c;通过它管理项⽬。 static: 存放静态…...

【C++报错已解决】Invalid Use of ‘this’ Pointer

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引言 一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一&#xff1a;修正‘this’指针使用2…...

群晖NAS配置WebDav服务结合内网穿透实现跨平台云同步思源笔记

文章目录 前言1. 开启群晖WebDav 服务2. 本地局域网IP同步测试3. 群晖安装Cpolar4. 配置远程同步地址5. 笔记远程同步测试6. 固定公网地址7. 配置固定远程同步地址 前言 本教程主要分享如何将思源笔记、cpolar内网穿透和群晖WebDav三者相结合&#xff0c;实现思源笔记的云同步…...

内容监管与自由表达:Facebook的平衡之道

在当今数字化信息社会中&#xff0c;社交媒体平台不仅是人们交流和获取信息的主要渠道&#xff0c;也是自由表达的重要舞台。Facebook&#xff0c;作为全球最大的社交网络平台&#xff0c;连接了数十亿用户&#xff0c;形成了一个丰富多样的信息生态。然而&#xff0c;如何在维…...

电脑桌面日历记事本怎么弄 好用的桌面日历记事本

在这个数字化的时代&#xff0c;电脑已成为我们日常生活中不可或缺的伙伴。我常常在电脑上记录各种事项&#xff0c;以便随时查看和提醒自己。而我最钟爱的记事方式&#xff0c;莫过于使用桌面日历记事本。 想象一下&#xff0c;你的电脑桌面上有一个直观的日历&#xff0c;每…...

#招聘数据分析#2024年6月前程无忧招聘北上广深成渝对比情况

#招聘数据分析#2024年6月前程无忧招聘北上广深成渝对比情况 0、根据前程无忧不完全样本统计&#xff0c;北上广深成都重庆平均月工资从高到低依次为 北京15441元、上海14425元、深圳13310元、广州11192元、成都10539元、重庆10290。 1、成都招聘样本数全量35228个&#xff0c…...

STM32 IIC详解(软件模拟)

目录 一、IIC协议基本原理 1.IIC协议概述 2.时序图分析 二、代码分析 1.IIC初始化 2.IIC起始信号 3.IIC发送数据 4.获取应答信号 5.读一个字节 6.产生ACK应答 7.不产生ACK应答 IIC&#xff08;Inter-Integrated Circuit&#xff09;在嵌入式系统中是一种常见的数据通…...

推三返一小程序商城开发搭建

推三返一小程序商城开发主要涉及到以下几个步骤&#xff1a; 确定需求和功能&#xff1a; 首先需要明确小程序商城的开发需求和功能。商家需要思考自己想要实现什么功能&#xff0c;例如推广、销售、裂变等。 同时还需要考虑小程序的页面设计、用户体验等方面。 选择合适的开…...

项目机会:4万平:智能仓,AGV,穿梭车,AMR,WMS,提升机,机器人……

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 如下为近期国内智能仓储物流相关项目的公开信息线索&#xff0c;这些项目具体信息会发布到知识星球&#xff0c;请感兴趣的球友先人一步到知识星球【智能仓储物流技术研习社】自行下载…...

[工具类]Java 合并、拆分PPT幻灯片

本文将介绍在Java程序中如何来合并及拆分PPT文档的方法。示例大纲&#xff1a; 1. 合并 1.1 将指定幻灯片合并到文档 1.2 合并多个幻灯片文档为一个文档 2. 拆分 2.1 按幻灯片每一页单独拆分为一个文档 2.2 按指定幻灯片页数范围来拆分为多个文档 使用工具&#xff1a;F…...

深入了解 Timber:全面掌握 Android 日志记录的最佳实践

深入了解 Timber&#xff1a;全面掌握 Android 日志记录的最佳实践 Timber 是由 Jake Wharton 提供的一个流行的 Android 日志记录库。它旨在简化日志记录、增强日志管理&#xff0c;并提高代码的可维护性。在本文中&#xff0c;我们将深入探讨 Timber 的功能、使用方法以及最…...

阿一课代表随堂分享:红队反向代理之使用frp搭建反向代理

frp反向代理 frp简介 frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件&#xff0c;支持 tcp, udp, http, https等协议。 frp 是一个可用于内网穿透的高性能的反向代理应用&#xff0c;分为服务端frps和客户端frpc&#xff0c;支持 tcp, udp, http, https 协议。详…...

基于vue的引入登录界面

以下是一些常见的登录页面布局&#xff1a; 1. 中心布局 - 登录表单位于页面的中心位置&#xff0c;通常包括用户名输入框、密码输入框、登录按钮等元素。页面背景简洁&#xff0c;以突出登录表单。 - 这种布局常见于大多数网站和应用&#xff0c;简洁明了&#xff0c;用户注意…...

centos7升级到欧拉openeule

centos7升级到欧拉openeule 一、准备工作 1、安装迁移工具&#xff08;安装迁移工具的机器不能给自己升级&#xff0c;请用其他机器作为迁移母机&#xff09; wget https://repo.oepkgs.net/openEuler/rpm/openEuler-20.03-LTS-SP1/contrib/x2openEuler/x86_64/Packages/x2…...

阿里云 Ubuntu 开启允许 ssh 密码方式登录

以前用的 centos&#xff0c;重置系统为 ubuntu 后在ssh 远程连接时遇到了点问题&#xff1a; 在阿里云控制台重置实例密码后无法使用密码进行 SSH 连接登录 原因&#xff1a;阿里云 Ubuntu 默认禁用密码登录方式 解决办法&#xff1a; 先使用其他用户登录到服务器 这里进来…...

利用投标相似度辅助围串标判定

摘要 围标&#xff08;bid rigging&#xff09;是一种非法的竞争行为&#xff0c;对市场公平性和公共资源分配造成严重影响。本文探讨了如何利用投标相似度来辅助判定围标行为。通过详细分析投标文件的内容相似性&#xff0c;选取适当的指标进行相似度计算&#xff0c;并结合实…...

iOS 开发者的 Flutter 入门课

作为一名 iOS 开发者&#xff0c;入门 Flutter 需要了解一些新的工具和概念&#xff0c;但也能利用你已有的知识和技能。以下是一个详细的入门指南&#xff0c;帮助你快速上手 Flutter&#xff1a; 1. 环境设置 首先&#xff0c;你需要设置开发环境。 安装 Flutter SDK 前往…...

单机版k8s搭建

环境配置&#xff1a; 关闭防火墙和交换内存 systemctl stop ufwsudo swapoff -a安装Docker 更新安装包 sudo apt-get update安装依赖 sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates获取证书 curl -fsSL http://mirrors.a…...

IDEA创建Spring项目无法使用Java8的解决方案

文章目录 一&#xff0c;创建Project&#xff0c;无法选择Java81&#xff0c;无法选择Java82&#xff0c;选择JDK17报错 二&#xff0c;原因分析1&#xff0c;Spring Boot将来会全力支持Java17&#xff0c;不再维护支持Java8的版本 三&#xff0c;解决方案1&#xff0c;使用国内…...

无障碍快捷方式图标

问题背景 测试反馈&#xff0c;无障碍快捷方式和setting里的无障碍图标不一致。 无障碍快捷方式悬浮窗 1、悬浮窗在systemui中 frameworks\base\packages\SystemUI\src\com\android\systemui\accessibility\floatingmenu\AccessibilityTargetAdapter.java 图标获取方式&…...