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

设计模式(持续更新)

本文主要是记录java的设计模式在实际工作中的应用案例,或者是对设计模式的个人理解及备忘

一、单例模式Singleton

工作场景(静态类):
  • 在外部系统对接中,需要调用外部系统A的接口,但是接口是有身份校验的,需要根据指定账户获取token信息,然后把token放在接口的header中,以鉴权和传递身份信息。
    • 这个接口使用十分频繁,如果每次调用接口前,都需要获取token,如果不增加个缓存并且约定过期时间的话,比较耗费网络性能。
    • 最后方案:使用静态类解决这个问题,token缓存在单例类TokenGenerator中,过期时间TTL和外部系统约定好,其他类如果调用TokenGenerator.getToken()方法,先判断缓存中的token有没有过期,如果有效,返回缓存中的token,如果过期了,再去外部系统通过接口进行请求。
    • 代码如下:
      public class TokenGenerator(){private String token;private Date TTL;private String refreshToken(){this.token  = HttpClient.get("http://", params);// 更新TTL至过期时间return this.token;}public String getToken(){if(currentTime > TTL){// 如果token过期了,更新token并返回return refreshToken();}else{// 如果没过期。直接返回缓存的tokenreturn this.token;}}
      }
      
静态类和单例模式
  • 使用完静态类后,发现和单例模式的思想很像,那他们有什么区别?引用下这篇文章的总结:
    • 单例模式是面向对象的设计。本质上还是创建对象,调用方法。单例存在的根本就是为了得到对象。
    • 静态类是单纯使用方法体,对象没有存在的价值。所以直接使用类名调用,不创建对象。静态类存在是为了快捷方便的使用里面的方法。
    • 二者设计目标不同:静态类构造函数没有存在的价值,单例模式需要获取对象,所以必须有构造器,但是私有化。而且可以有非静态的成员。(单例模式推荐使用静态的成员)
  • 什么时候该使用单例模式,什么时候使用静态类?参考这篇文章
单例模式应用场景

相关文章:

设计模式(持续更新)

本文主要是记录java的设计模式在实际工作中的应用案例,或者是对设计模式的个人理解及备忘 一、单例模式Singleton 工作场景(静态类): 在外部系统对接中,需要调用外部系统A的接口,但是接口是有身份校验的…...

Prometheus 告警规则

Prometheus 告警规则 Prometheus官方内置的第三方报警通知包括:邮件、 即时通讯软件(如Slack、Hipchat)、移动应用消息推送(如Pushover)和自动化运维工具(例如:Pagerduty、Opsgenie、Victorops) Promethe…...

mulesoft MCIA 破釜沉舟备考 2023.02.13.02

mulesoft MCIA 破釜沉舟备考 2023.02.13.03 1. According to MuleSoft, which deployment charcateristic applies to a microservices application architecture?2. A mule application designed to fulfil two requirements3. A mule application must periodically process…...

获取DLL运行时路径的方法

之前项目中发现的问题,记录下解决方案1. 问题背景OVVRNTool项目中,底层图像基本操作功能由DLL库函数提供,上层基于DLL封装了两个应用CMD和GUI,然后通过Qt打包分发;发布是直接采用绿色免安装的方式打包,具体…...

“华为杯”研究生数学建模竞赛2006年-【华为杯】D题:学生面试中教师安排的优化与算法(附获奖论文)

赛题描述 高校自主招生是高考改革中的一项新生事物,现在仍处于探索阶段。某高校拟在全面衡量考生的高中学习成绩及综合表现后再采用专家面试的方式决定录取与否。该校在今年自主招生中,经过初选合格进入面试的考生有N人,拟聘请老师M人。每位学生要分别接受4位老师(简称该学…...

【JavaScript】复习 【对象参数】【函数参数】

js不会检查任何参数类型,任何参数都可以作为参数传递 1、对象参数 改变量随便改,改对象要看这个对象是不是有多个变量同时指向这个对象 const 用来定义常量,只能赋值一次。 变量------->对象------->属性 被const修饰的对象 …...

如何批量提取文件名到excel表格?

批量提取文件名到excel表格?关于这个问题相信很多人都遇到过,大多数人在第一次碰到的时候都不知道如何下手,大家都会立即在百度里面搜索相关方法教程,小编也试着搜索了一下,发现找到的很多方法都大同小异,需…...

CUDA线程层次一文搞懂|参加CUDA线上训练营

设备术语 Host:CPU 和 内存 (host memory)Device:GPU 和显存 (device memory) CUDA 线程层次 CUDA 线程层次分为: Thread 所有线程执行相同的核函数并行执行 Thread Block 执行在一个 Streaming Multiprocessor (SM&#xff09…...

Linux文件默认权限:umask

umask就是指定目前用户在建立文件或目录时候的权限默认值 查看方式有两种:一种可以直接输入umask,就可以看到数字类型的权限设置值,一种则是加入umask后加入-S(Symbolic)选项,就会以符号类型的方式来显示出…...

SonicWall:请立即修复SMA 1000 漏洞

近日,网络安全供应商SonicWall发布了关于安全移动访问 (SMA) 1000设备的三个安全漏洞的紧急报告,其中包括一个高威胁性的身份验证绕过漏洞。SonicWall指出,攻击者可以利用这些漏洞绕过授权,并可能破坏易受攻击的设备。 从报告中可…...

基于VS调试分析 + 堆栈观察问题代码段

文章目录问题代码段1 —— 阶乘之和问题代码段2 —— 越界的危害① 发现问题② 分析问题③ 思考问题【⭐堆栈原理⭐】④ 解决问题【DeBug与Release】👨程序员与测试人员👩✒总结与提炼问题代码段1 —— 阶乘之和 先来看一道C语言中比较基础的题目&#x…...

QFramework框架学习

主要学习内容TypeEventSystemActionKitTimer类1、TypeEventSystem-适用于一个条件触发,多个组件响应的情况例如:动物园系统中,点击肉食动物按钮,动物园中有肉食属性的动物都进行显示。步骤:1、动物自身脚本上进行判断是…...

移动OA系统,联动企业协作让办公高效无间断

移动oa系统,近年来随着企业办公节奏的变化及人们个性化办公需求的增加迎来了快速发展。一方面,它兼具OA系统诸多优势,既凝聚了企业基础管理工作,联动了企业协作、沟通交流,又进一步提高了企业的综合实力与市场竞争力。…...

结构体熟练掌握--实现通讯录

魔王的介绍:😶‍🌫️一名双非本科大一小白。魔王的目标:🤯努力赶上周围卷王的脚步。魔王的主页:🔥🔥🔥大魔王.🔥🔥🔥 ❤️‍&#x1…...

腾讯云CVM服务器购买流程手把手方法教程攻略

​购买腾讯云服务器有两种方式。一种是在官方活动中,简单方便,但ECS配置相对固定;另一种是在ECS页面定制购买。配置选项丰富,但地理可用性区域、计费模式、CPU内存实例规格、映像系统、存储系统磁盘、网络带宽和安全组的选择更为复…...

九龙证券|“春季躁动”行情要来?1月新增投资者数大增

新增投资者数量在上一年12月触及多年新低后,2023年1月份开端呈现反弹。 在新增投资者数量之外,近段时刻以来,包含A股商场股票成交额、北向资金净买入额、两融资金规划及成交额在内多个商场目标也呈现回暖的特征,目前A股商场交投氛…...

C语言(按位运算符和位移运算符)

目录 ​编辑 一.按位运算符 1.二进制反码或按位取反&#xff1a;~ 2.按位与&#xff1a;& 3.按位或&#xff1a;| 4.按位异或&#xff1a;^ 二.位移运算符 1.左移&#xff1a; << 2.右移&#xff1a; >> 一.按位运算符 C有四个按位逻辑运算符都用于整…...

删掉的照片怎么恢复?

每一张照片都是生活&#xff0c;留住每一个人的回忆。而这些有意义的照片&#xff0c;我们都会把它保存在我们的手机或电脑上&#xff0c;始终伴随着我们。但无论是手机还是电脑&#xff0c;都是需要时不时清理一下的。如果是清理垃圾图片时&#xff0c;不小心删除了需要的图片…...

【java】40 个 SpringBoot 常用注解(建议收藏)

本文目录一、Spring Web MVC 注解Spring Web MVC 注解RequestMappingRequestBodyGetMappingPostMappingPutMappingDeleteMappingPatchMappingControllerAdviceResponseBodyExceptionHandlerResponseStatusPathVariableRequestParamControllerRestControllerModelAttributeCross…...

【JMC】SMILES‑based deep generative scafold decorator for de‑novo drug design

SMILES-based deep generative scaffold decorator for de-novo drug design 基于SMILES的利用Fragment的分子生成模型 https://github.com/undeadpixel/reinvent-scaffold-decorator 1.背景 深度生成模型因其可以从有限的数量中生成新数据&#xff0c;目前已成功应用于生成…...

鸿蒙系统深度优化与安全实践指南:基于Magisk的模块化配置方案

鸿蒙系统深度优化与安全实践指南&#xff1a;基于Magisk的模块化配置方案 【免费下载链接】Magisk The Magic Mask for Android 项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk 在移动设备生态中&#xff0c;系统深度优化与安全实践始终是技术探索者追求的核…...

消费级GPU福音:OpenClaw+百川2-13B量化版显存占用实测

消费级GPU福音&#xff1a;OpenClaw百川2-13B量化版显存占用实测 1. 为什么关注显存占用&#xff1f; 去年折腾大模型本地部署时&#xff0c;最头疼的就是显存问题。我的RTX3060显卡只有12GB显存&#xff0c;跑Llama2-13B原版模型时&#xff0c;加载阶段就直接爆显存。直到发…...

Python金融计算提速迫在眉睫!(仅剩3类未公开的底层优化手段,第3种已被高盛2023年专利覆盖)

第一章&#xff1a;Python金融计算提速迫在眉睫&#xff01;&#xff08;仅剩3类未公开的底层优化手段&#xff0c;第3种已被高盛2023年专利覆盖&#xff09;高频回测、实时风险敞口计算与蒙特卡洛期权定价正面临Python原生执行效率的严峻瓶颈。当单次万标的风险因子矩阵运算耗…...

ncmdumpGUI:实现NCM格式自由转换的音频解决方案

ncmdumpGUI&#xff1a;实现NCM格式自由转换的音频解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 痛点剖析&#xff1a;NCM格式的技术民主化阻碍 格…...

OpenClaw长期运行秘诀:GLM-4.7-Flash任务守护与自动恢复机制

OpenClaw长期运行秘诀&#xff1a;GLM-4.7-Flash任务守护与自动恢复机制 1. 为什么需要长期运行方案&#xff1f; 去年冬天的一个深夜&#xff0c;我被手机警报惊醒——OpenClaw在连续处理300多份文档后突然崩溃&#xff0c;导致凌晨的自动化报表任务全部中断。这次事故让我意…...

Linux桌面定制——快速迁移状态栏位置的终端技巧

1. 为什么需要调整状态栏位置 第一次用Unity桌面时&#xff0c;我就被左侧的状态栏搞得浑身难受。作为常年使用Windows的用户&#xff0c;总觉得状态栏就该乖乖待在屏幕底部。后来发现不少Linux新手都有类似的困扰——明明是个高效的操作系统&#xff0c;却因为这种小细节影响使…...

DataGrip安装使用全攻略 (DataGrip更改新建查询存储默认位置)

一、DataGrip安装 下载 DataGrip 安装包 访问 DataGrip 官网:https://www.jetbrains.com/datagrip/download ,下载 DataGrip 2025.3.5 版本的安装包: 我这里也有安装包 链接: https://pan.baidu.com/s/1g5aiHWsv9VyIhFD-7TBdEg?pwd=0908 提取码: 0908 --来自百度网盘超…...

Zephyr RTOS 线程实战:从信号量到消息队列,手把手教你搞定多任务通信

Zephyr RTOS线程通信实战&#xff1a;信号量与消息队列的深度应用指南 在嵌入式开发领域&#xff0c;多任务间的有效通信是构建可靠系统的关键所在。想象这样一个场景&#xff1a;你的物联网设备需要同时处理传感器数据采集、实时数据处理、无线通信传输等多个任务&#xff0c;…...

终极指南:Shenyu网关集成Polaris服务治理平台的完整教程

终极指南&#xff1a;Shenyu网关集成Polaris服务治理平台的完整教程 Shenyu网关作为基于Spring Cloud的高性能API网关&#xff0c;与Polaris服务治理平台的集成能够为企业级微服务架构提供强大的流量控制和动态配置能力。本教程将详细讲解如何从零开始配置Shenyu网关与Polaris…...

基于SpringBoot+Vue的AI智能客服系统开发实战:从H5输入到语言提问的完整实现

最近在做一个AI智能客服项目&#xff0c;客户要求既要能在H5页面里打字提问&#xff0c;又要能直接语音对话&#xff0c;后台还得有个清晰的管理界面。这听起来简单&#xff0c;但真做起来&#xff0c;从技术选型到具体实现&#xff0c;坑可真不少。今天就把这次从零到一搭建“…...