BlogTest1

Java 实现单例模式的七种写法 单例模式(Singleton Pattern) 是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。 阅读详情
常见数据结构题
  • SparseArray
  • SparseBooleanArray = HashMap<Integer, Boolean>
常见设计模式
  • 单例
  • Builder
  • 观察者
  • 工厂
  • 代理
  • 适配器
3种常见的单例写法
  1. 饿汉式(静态常量)[可用]
    1. public class Singleton {
    2. private final static Singleton INSTANCE = new Singleton();
    3. private Singleton(){}
    4. public static Singleton getInstance(){
    5. return INSTANCE;
    6. }
    7. }

    优点:这种写法比较简单,就是在类装载的时候就完成实例化。避免了线程同步问题。
    缺点:在类装载的时候就完成实例化,没有达到Lazy Loading的效果。如果从始至终从未使用过这个实例,则会造成内存的浪费。
  2. 懒汉式(线程不安全)[不可用]
    1. public class Singleton {
    2. private static Singleton singleton;
    3. private Singleton() {}
    4. public static Singleton getInstance() {
    5. if (singleton == null) {
    6. singleton = new Singleton();
    7. }
    8. return singleton;
    9. }
    10. }
    这种写法起到了Lazy Loading的效果,但是只能在单线程下使用。如果在多线程下,一个线程进入了if (singleton == null)判断语句块,还未来得及往下执行,另一个线程也通过了这个判断语句,这时便会产生多个实例。所以在多线程环境下不可使用这种方式。
  3. 懒汉式(线程安全,同步方法)[不推荐用]
    1. public class Singleton {
    2. private static Singleton singleton;
    3. private Singleton() {}
    4. public static synchronized Singleton getInstance() {
    5. if (singleton == null) {
    6. singleton = new Singleton();
    7. }
    8. return singleton;
    9. }
    10. }
    解决上面第三种实现方式的线程不安全问题,做个线程同步就可以了,于是就对getInstance()方法进行了线程同步。
    缺点:效率太低了,每个线程在想获得类的实例时候,执行getInstance()方法都要进行同步。而其实这个方法只执行一次实例化代码就够了,后面的想获得该类实例,直接return就行了。方法进行同步效率太低要改进。
  4. 双重检查[推荐用]
    1. public class Singleton {
    2. private static volatile Singleton singleton;
    3. private Singleton() {}
    4. public static Singleton getInstance() {
    5. if (singleton == null) {
    6. synchronized (Singleton.class) {
    7. if (singleton == null) {
    8. singleton = new Singleton();
    9. }
    10. }
    11. }
    12. return singleton;
    13. }
    14. }
    Double-Check概念对于多线程开发者来说不会陌生,如代码中所示,我们进行了两次if (singleton == null)检查,这样就可以保证线程安全了。这样,实例化代码只用执行一次,后面再次访问时,判断if (singleton == null),直接return实例化对象。
     
    优点:线程安全;延迟加载;效率较高。
  5. 静态内部类[推荐用]
    1. public class Singleton {
    2. private Singleton() {}
    3. private static class SingletonInstance {
    4. private static final Singleton INSTANCE = new Singleton();
    5. }
    6. public static Singleton getInstance() {
    7. return SingletonInstance.INSTANCE;
    8. }
    9. }
    这种方式跟饿汉式方式采用的机制类似,但又有不同。两者都是采用了类装载的机制来保证初始化实例时只有一个线程。不同的地方在饿汉式方式是只要Singleton类被装载就会实例化,没有Lazy-Loading的作用,而静态内部类方式在Singleton类被装载时并不会立即实例化,而是在需要实例化时,调用getInstance方法,才会装载SingletonInstance类,从而完成Singleton的实例化。
     
    类的静态属性只会在第一次加载类的时候初始化,所以在这里,JVM帮助我们保证了线程的安全性,在类进行初始化时,别的线程是无法进入的。
     
    优点:避免了线程不安全,延迟加载,效率高。

回调机制

  • 示例代码
    1. public interface HttpCallbackListener{
    2. void onFinish(String response);
    3. void onError(Exception e);
    4. }




Java设计模式之单例模式详细讲解和案例示范 单例模式是一种创建型设计模式,它确保某个类在系统中只有一个实例存在,并提供一个全局访问该实例的方式。需要控制资源的唯一性:如数据库连接池、配置文件管理器等。需要对共享资源进行控制:如线程池管理、日志记录器等。 阅读详情

相关推荐

SPF邮件防伪全解析:原理、配置与常见坑

电子邮件作为最基础的互联网通信工具,其安全性长期面临挑战。攻击者常利用SMTP协议对发件人身份校验的缺失,伪造看似真实的钓鱼邮件,诱骗用户泄露敏感信息。为应对这一风险,业界提出了SPF(Sender Policy Framework,发件人策略框架),它通过DNS发布授权记录,让收件方校验邮件发件IP是否合法。SPF不仅大幅提升邮件可信度,更是反垃圾与反钓鱼体系中的基础防线。无论是个人域名还是企业邮箱,配置SPF都是投入产出比极高的安全措施。在实际落地中,从梳理发信通道、编写TXT记录,到验证生效与排查转发

weixin_33947521的博客 256

单例模式

单例模式: 这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 单例模式注意事项: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 意图: ...

weixin_34228387的博客 331

5分钟搞定!用FunASR在本地快速部署达摩院Paraformer语音识别模型(附常见问题解决)

本文详细介绍了如何在本地快速部署阿里达摩院开源的Paraformer语音识别模型。通过FunASR工具包,用户可在5分钟内完成环境配置、模型下载与基础识别,并掌握批量处理、性能调优及构建API服务等进阶技巧。文章重点解析了Paraformer的非自回归架构带来的速度优势,并提供了音频格式转换、依赖冲突、显存不足等常见问题的实战解决方案,助力开发者实现高效、离线的语音转写应用。

p1q2r的博客 705

JAVA设计模式之单例模式

本文继续介绍23种设计模式系列之单例模式。 概念:   java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。   单例模式有以下特点:   1、单例类只能有一个实例。   2、单例类必须自己创建自己的唯一实例。   3、单例类必须给所有其他对象提供这一实例。  单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例...

一个本科小生的奋斗史 101万+

箱式连续提升机

箱式连续提升机,是对具有高度差较大(>1500mm)的输送线之间进行连接,将箱式物资进行连续输送的提升(或下降)的输送设备,可根据输送线的具体输送要求作相应的参数设计。目前的箱式连续提升机种类比较多,常用的形式主要有Z型和C型,工作原理相同,只是入口和出口分别在两侧和同侧。

月生沧溟 1248

【三维重建】基于多视角图像的三维重建

基于多视角图像的三维重建》

m0_64446860的博客 8756

java单例模式

定义:单例模式(Singleton)指一个类只有一个实例,并且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点;

qq_48268296的博客 4366

VLA、世界模型与端到端在智驾中的本质关系与工程落地

世界模型并非3D重建,而是对环境状态转移函数的可微分建模;VLA不是视觉+语言+动作的简单拼接,核心在于跨模态语义对齐。二者共同支撑具身智能系统实现从感知到行动的闭环推演,其技术价值体现在长尾场景泛化能力提升与决策延迟降低。在自动驾驶领域,真实量产方案均采用VLA架构作为多模态感知基础,嵌入轻量级世界模型以支持反事实轨迹推演,并通过WA硬件封装保障实时性,最终由端到端控制层完成像素到扭矩的语义贯通。这种混合架构已成L2+/L3智驾系统的工程共识。

weixin_34163553的博客 365

BlogTest

看了许多网上的Java开发学习路线,选择在B站(遇见狂神说)边看边学。 Java版本 JavaSE:标准版(桌面程序,控制台开发) JavaME:嵌入式开发(手机,小家电) JavaEE:企业级开发(Web端,服务器开发) JDK、JRE、JVM JRE:Java Runtime Environment JVM:Java Virtual Machine 关键词 数据类型 基本类型(primitive type) 数值类型: byte,1字节,-128~127 ..

qq_41849818的博客 65

YOLOv8改进系列:RepVGG重参数化结构——训练多分支,推理单路,极致提速

本文将详细介绍如何将RepVGG的重参数化思想融入到YOLOv8的骨干网络中,实现一种训练时多分支、推理时单路的改进版YOLOv8。我们将提供完整的代码实现、详细的原理讲解,并在COCO数据集和自定义数据集上进行充分的实验验证。

YOLO 200

【CASS精品教程】032:CASS11台阶画法案例大全

一、普通无边台阶 二、普通有边台阶 三、普通圆弧无边台阶 四、U型台阶 五、曲线U型台阶 六、L型台阶

智慧空间实验室 7463

【项目】BlogTest(Web自动化)

【项目】个人博客测试项目

qq_59599094的博客 391

SAP Group Reporting入门指南(3)--公司间匹配对账ICMR及合并版本等主数据

S/4HANA CLOUD公司间匹配和对账

bflyfish的博客 965

python 论坛框架_Python的Django框架完成一个完整的论坛(1.settings.py源码以及-站长资讯中心...

"""Django settings for BlogTest project.Generated by 'django-admin startproject' using Django 2.0.For more information on this file, seehttps://docs.djangoproject.com/en/2.0/topics/settings/For the fu...

weixin_39613089的博客 107

Open3D (C++) 计算点云坐标最值及其索引

使用C++版本的Open3D计算点云最值点及其对应的下标索引

点云侠的博客 727

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

报错:Error: ENOENT, no such file or directory 'c:\Users\Administrator\WebstormProjects\blogtest\views\...

这是我在index上引用<%- include footer %>,找不到该文件 所以报错 建立文件footer.ejs 转载于:https://www.cnblogs.com/liziyou/p/6520186.html

weixin_30509393的博客 660

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

博客系统-测试报告

本文针对"我的博客系统"进行了全面测试,验证了系统的功能可用性、性能表现和用户体验。测试覆盖用户管理、文章管理、导航交互等核心模块,共执行20+测试用例,发现3个功能缺陷和2个性能优化点。严重问题包括表情功能异常、图片发布显示问题和注销体验不佳;性能方面,高频操作表现良好但批量数据加载存在瓶颈。建议优先修复功能缺陷,优化数据库查询效率,并增加用户体验细节设计。整体而言,系统核心功能稳定可用,但需针对性优化以提升用户体验。

gskksg的博客 842

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Phoenix Context 与 Schema 测试完全指南:DataCase、SQL Sandbox 与测试生成机制

本篇技术指南以 Phoenix 官方测试指南为骨架,系统讲解生成器为 Context 与 Schema 自动生成的测试代码如何运作:从 `mix phx.gen.html` 产出的 `blog_test.exs` 入手,深入剖析 `DataCase` 测试基座、SQL Sandbox 事务隔离原理、`async: true` 并发加速的适用场景,以及何时该直接测试 Schema、如何用 `erro

gitblog_00010的博客 419

抢红包算法(公平版和手速版)

这里写自定义目录标题 package test; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Scanner; public class redEnvelope { /*Random 随机生成一个区间在[min , max]的数值 #公式如下 // randNumber 将被赋值为一个 MIN 和 MAX 范围内的随机数 int randNum

『愚』的博客 3万+

Bodyguard与Phoenix上下文集成:7个最佳实践与常见陷阱避免指南

在Phoenix应用中实现权限控制是保障应用安全的关键环节。Bodyguard作为一个专为Phoenix上下文设计的授权库,提供了简洁而强大的解决方案。本文将深入探讨Bodyguard与Phoenix上下文集成的**最佳实践**,并揭示开发过程中常见的**陷阱**,帮助您构建更安全的Elixir应用。 ## 什么是Bodyguard?为什么选择它? Bodyguard是一个专为Phoenix上

gitblog_01155的博客 999

优快云博客下载器终极指南:免费快速构建你的离线技术知识库

你是否曾为优快云上的优质技术文章无法离线阅读而烦恼?是否担心辛苦收藏的技术干货某天突然消失?优快云博客下载器正是为解决这些问题而生的强大工具!这款基于Java开发的免费开源软件,能够帮助你一键下载优快云博客内容,构建专属的离线知识库,让你随时随地学习技术,不再受网络限制。 ## 🔧 技术痛点:为什么你需要这个工具? 在技术学习过程中,我们经常遇到这些困扰: 1. **内容分散难整理*

gitblog_00381的博客 670

“随想录“博客系统测试项目

本文介绍了一个基于SSM框架开发的个人博客系统测试过程。系统包含用户登录、博客展示、编辑发布等功能模块。测试从三个方面展开:1. 手动功能测试,设计测试用例覆盖登录验证、博客管理等功能;2. 自动化UI测试,使用Python+Selenium实现登录、列表页、详情页等模块的自动化验证;3. JMeter性能测试,通过接口测试、梯度压测评估系统性能,并生成测试报告。测试发现部分功能缺陷如未登录状态提示不明确等,同时记录了自动化测试脚本实现和性能测试配置方法。项目测试代码和报告已开源至Gitee平台。

weixin_74865793的博客 1110

hexo test

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quic...

buglong_的专栏 247

UI&API自动化测试框架(通用版/企业级)

该框架采用 Java 语言,集成 Selenium 4、Cucumber、TestNG、RestAssured、UI + API 混合测试、PO + BDD 分层架构、YAML 元素库、 Mock、流量录制回放、 DDT 数据驱动、重试机制、跨浏览器并发线程隔离,故障注入、 Allure + ExtentReports 双报告、Selenium Grid + Docker + K8s 分布式并发执行、CI/CD(Jenkins/GitHub/GitLab CI)持续集成与交付

m0_37606579的博客 467

java基础---异常详解

原文地址:http://www.cnblogs.com/lulipro/p/7504267.html 1、简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。 异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。 Java中的异常可以是函数中的语句执行时引发的,也可以...

yangchuanan的博客 232

Java的异常处理机制

本来想自己写写关于Java的异常机制,看到很多写的非常详尽的文章,这里直接转载一下。转载于lulipro的:Java中的异常和处理详解简介程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。Java提供了更加优秀的解决办法:异常处理机制。异常处理机制能让程序...

花未央D8023的博客 310
上一篇: BlogTest
下一篇: 0.仿微信图片选择器
mrzzzzzzzzzzzzzz
博客等级 码龄12年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值