库调多了,都忘了最基础的概念-《单例模式VS状态码》

简介: 库调多了,都忘了最基础的概念-《单例模式VS状态码》

🍁 作者:知识浅谈,CSDN博客专家,阿里云签约博主,InfoQ签约博主,华为云云享专家

📌 擅长领域:全栈工程师、爬虫、ACM算法

💒 公众号:知识浅谈

🔥 联系方式vx:zsqtcc

🤞拿下,拿下🤞

温馨提醒:该说不说,这个真的有用

🎈单例模式有几种写法?

先说单例模式有两种方法,一种是饿汉式,一种是懒汉式。

饿汉式:在类初始化的时候就已经创建了,在声明变量的时候直接创建值并赋值了。

懒汉式:在需要的时候才进行对象的创建,懒汉式的实现方法有两种,一种是双重检查的方式,一种是静态内部类的方式(因为静态内部类只有在第一访问的时候才初始化)。

饿汉式🌰

public class Main {
    private static Main main1 = new Main();
    private Main(){}
    public static Main getMain1(){
        return main1;
    }
}

懒汉式-双重检查🌰

public class Main {
    private static volatile Main main1;
    private Main(){}
    public static Main getMain1(){
        if(main1==null){
            synchronized (Main.class){
                if(main1==null){
                    main1 = new Main();
                }
            }
        }
        return main1;
    }
}

懒汉式-静态内部类方法🌰

public class Main {
    private static volatile Main main1;
    private Main(){}
    private static class A{
        private static Main main1 = new Main();
    }
    public static Main getMain1(){
       return A.main1;
    }
}

🎈为什么单例一定要加 volatile?

主要是用到volatile的两个特性,分别是可见性和有序性。

可见性:因为在不同的线程中有主存中的变量的副本,当某个线程变了之后要让其他线程中也感受到。因为单例对象就是这样的,当单例对象创建后,要让其他线程中能知道volatile修饰的单例对象的变化,这就是用到的volatile的可见性。

防止指令重排序:在船舰对象的是后在底层不是一步完成的,创建对象之后把对象的地址赋值给单例对象的变量,这是单例对象使用volatile的第二个原因。

🎈常见的 HTTP 状态码有哪些?

10x:表示临时响应并需要请求者继续执行操作的状态代码,100: 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分,常用于传输大型文件的是时候。

20x:返回成功的状态,200:表示i请求成功。

30x: 表示重定向的状态,301:永久重定向,302:临时重定向

40x: 表示请求错误,如404:页面不存在

50x:表示服务器错误,如502:错误网关,503:服务器错误。

🍚总结

以上是关于单例模式和状态码的简单总结,希望有所帮助。

相关文章
|
Ubuntu Linux C语言
还在用Alpine作为你Docker的Python开发基础镜像?其实Ubuntu更好一点
一般情况下,当你想为你的Python开发环境选择一个基础镜像时,大多数人都会选择Alpine,为什么?因为它太小了,仅仅只有 5 MB 左右(对比 Ubuntu 系列镜像接近 100 MB),但事实的真相是,我们选择基础镜像并不是为了体验一下Python语法而已,在此基础上,我们需要调试和安装各种扩展,可能会安装很多三方依赖,甚至预设更多服务,在这种环境下,Alpine就并非是一个很好的选择了,本次我们就来分别在Alpine和Ubuntu上来体验一下安装和编译Python的区别。
还在用Alpine作为你Docker的Python开发基础镜像?其实Ubuntu更好一点
|
安全 虚拟化 Docker
解决:VMware Workstation 与 Device/Credential Guard 不兼容
因为在官网下载了win版的docker,而会自带下载虚拟机Hyper-V,这个和我之前下载的vmware虚拟机造成冲突了,导致后者不能使用,所以打开vmware报错如下:
6497 0
解决:VMware Workstation 与 Device/Credential Guard 不兼容
|
10月前
|
存储 SQL 并行计算
【赵渝强老师】达梦数据库MPP集群的架构
达梦数据库提供大规模并行处理(MPP)架构,以低成本实现高性能并行计算,满足海量数据存储和复杂查询需求。DM MPP采用完全对等无共享体系,消除主节点瓶颈,通过多节点并行执行提升性能。其执行流程包括主EP生成计划、分发任务、各EP并行处理及结果汇总返回。为确保高可用性,建议结合数据守护部署。
407 0
|
缓存 负载均衡 应用服务中间件
深入解析Nginx配置文件
Nginx是一个高性能HTTP服务器和反向代理,其配置文件`nginx.conf`包含全局、事件、HTTP、Server和Location块。全局块设置如用户和工作进程数,事件块设定连接数,HTTP块涉及MIME类型、日志和包含其他配置。Server块定义虚拟主机,Location块处理URI匹配。Nginx常用于反向代理和负载均衡,如`proxy_pass`指令转发请求至后端服务器组。理解这些配置有助于服务器优化和测试。
|
9月前
|
存储 弹性计算 资源调度
阿里云服务器收费模式对比:包年包月与按量付费的适用场景与选择参考
在我们购买阿里云服务器的时候,云服务器的收费模式主要有多种收费模式,其中包年包月和按量付费两种主流模式。对于准备在阿里云上部署应用的用户来说,选择合适的收费模式至关重要,因为它直接关系到成本控制和资源使用的灵活性。本文将对这两种收费模式做一个对比,以供参考和选择。
1347 14
|
人工智能 云栖大会
AI Infra 核心技术专题 | 2024 云栖大会预热
AI Infra 核心技术专题 | 2024 云栖大会
|
消息中间件 存储 Java
技术笔记:trident介绍
技术笔记:trident介绍
|
SQL 物联网 数据挖掘
StarRocks:从概念到应用的下一代分析型数据库
在大数据时代,企业对数据处理的需求日益增长,特别是在实时数据分析方面。StarRocks 是一种新兴的分布式关系型数据库,专为快速且高并发的实时分析设计。本文将从 StarRocks 的基本概念入手,逐步深入到其应用层面,探讨这一技术如何在现实世界中发挥作用。
803 1
|
Oracle 关系型数据库 数据库
oracle导入时IMP-00010: 不是有效的导出文件, 头部验证失败
oracle导入时IMP-00010: 不是有效的导出文件, 头部验证失败
658 1
|
开发工具