库调多了,都忘了最基础的概念-《单例模式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:服务器错误。

🍚总结

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

相关文章
|
3月前
|
Java
【编程基础知识】《Java 复用魔法:组合、继承与代理的奇妙之旅》
本文《Java 复用魔法:组合、继承与代理的奇妙之旅》深入解析了 Java 中的三种主要代码复用技术——组合、继承和代理,通过实例和图表详细说明了它们的概念、作用及应用场景,旨在帮助读者提升 Java 编程技能。
31 0
|
5月前
|
设计模式 安全 Java
Java 单例模式,背后有着何种不为人知的秘密?开启探索之旅,寻找答案!
【8月更文挑战第30天】单例模式确保一个类只有一个实例并提供全局访问点,适用于需全局共享的宝贵资源如数据库连接池、日志记录器等。Java中有多种单例模式实现,包括饿汉式、懒汉式、同步方法和双重检查锁定。饿汉式在类加载时创建实例,懒汉式则在首次调用时创建,后者在多线程环境下需使用同步机制保证线程安全。单例模式有助于提高代码的可维护性和扩展性,应根据需求选择合适实现方式。
38 1
|
存储 编译器 Linux
【C++从0到王者】第二十四站:多态的底层原理
【C++从0到王者】第二十四站:多态的底层原理
64 1
|
8月前
|
存储 算法 NoSQL
深入浅出JVM(十一)之如何判断对象“已死”
深入浅出JVM(十一)之如何判断对象“已死”
|
8月前
|
程序员 Python
类的设计奥秘:从代码到架构的科普全解
类的设计奥秘:从代码到架构的科普全解
105 2
|
编译器 C++
【C++从0到王者】第二十三站:多态的概念、定义以及实现
【C++从0到王者】第二十三站:多态的概念、定义以及实现
57 1
|
8月前
|
设计模式 Java 数据库
二十三种设计模式全面解析-单例设计模式:解密全局独一无二的实例创造者
二十三种设计模式全面解析-单例设计模式:解密全局独一无二的实例创造者
|
编译器 C++
爱上c++的第三天(核心课程):类和对象--对象特性
初始化数据,主要作用于创建对象时为对象的成员属性赋值,构造函数由系统自动调用,无需手动调用。
100 0
爱上c++的第三天(核心课程):类和对象--对象特性
|
XML 前端开发 JavaScript
web开发标准是什么意思?底层原理是什么?
web开发标准是什么意思?底层原理是什么?
150 0
|
数据采集 算法 Java
库调多了,都忘了最基础的概念-《线程池篇》
库调多了,都忘了最基础的概念-《线程池篇》
134 0
库调多了,都忘了最基础的概念-《线程池篇》