首页
学习
活动
专区
圈层
工具
发布

设计模式了解吗,知道什么是饿汉式和懒汉式吗?

当然了解,设计模式是软件设计中针对常见问题的通用、可复用的解决方案。它能让代码更易于维护、扩展和复用。饿汉式和懒汉式是单例模式的两种经典实现方式。...核心概念:单例模式目的:确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。应用场景:比如数据库连接池、线程池、日志对象、应用的配置类等。...特点:线程安全:因为实例的创建是在类加载阶段完成的,这个阶段由JVM保证线程安全。加载慢,获取快:类一加载就初始化实例,可能会稍微拖慢启动速度,但获取实例对象的速度非常快。...总结对比特性饿汉式懒汉式(基础版)懒汉式(双重检查锁)创建时机类加载时第一次调用 getInstance()时第一次调用 getInstance()时线程安全是否是资源利用差,可能浪费好好性能获取实例快...(线程不安全,无意义)第一次稍慢,之后快实现难度简单简单复杂在现代 Java 开发中,还有更简洁的实现单例的方式,比如使用 枚举(Enum),它天生就是单例的,并且能防止反射和反序列化攻击,是《Effective

19621

高内聚与低耦合_低内聚高耦合是一个好设计的特征吗

大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说高内聚与低耦合_低内聚高耦合是一个好设计的特征吗,希望能够帮助大家进步!!!...这是基本的,那么我们设计的时候就要把相关的功能内聚到一起。当然这是从大功能(下单管理)上来说,当然这些模块还可以再细化分成产品、订单、会员等子模块。...低内聚的模块设计的坏处有:首先模块的功能不单一,模块的职责不明确,比较松散,更有甚者是完成不相关的功能。这样的设计往往是不可取的。可以通过重构来完善。...下面我们来举例说明低耦合的设计与高耦合的设计: 这是一个简单的低耦合的设计,电器与插座之间是低耦合的关系,就算我替换了不同的插座,电器依然可以正常的工作。...下面我们来看下功能分离在不同的设计理念下都是什么样的表现: 上面只是实体性的分析了功能分离的好处及应用的广度,当然我们在后续会结合实例来讲解如何来实现这样的软件设计模式。

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    面试之MongoDB「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 你说的 NoSQL 数据库是什么意思?NoSQL 与 RDBMS 直接有什么区别?为什么要使用和不使用 NoSQL 数据库?...(注意,尽管 fsync 选项在命令行和经过 getLastError_old 是有效的)(译者:也许是坑人的面试题??)。 如何执行事务/加锁?...MongoDB 没有使用传统的锁或者复杂的带回滚的事务,因为它设计的宗旨是轻量,快速以及可预计的高性能。可以把它类比成 MySQL MylSAM 的自动提交模式。...然而,你还能在第二数据库上执行最终一致性查询(eventually consistent query)(在 slaveOk 模式下),即使在这段时间里。 什么是 master 或 primary?...如何理解 MongoDB 中的 GridFS 机制,MongoDB 为何使用 GridFS 来存储文件? GridFS 是一种将大型文件存储在 MongoDB 中的文件规范。

    1.7K10

    95道MongoDB面试题(含答案),1万字详细解析!

    MongoDB没有使用传统的锁或者复杂的带回滚的事务,因为它设计的宗旨是轻量,快速以及可预计的高性能。可以把它类比成MySQLMylSAM的自动提交模式。...34、如何理解MongoDB中的GridFS机制,MongoDB为何使用GridFS来存储文件? GridFS是一种将大型文件存储在MongoDB中的文件规范。...37、如何理解MongoDB中的GridFS机制,MongoDB为何使用GridFS来存储文件? GridFS是一种将大型文件存储在MongoDB中的文件规范。...C++1983年发行是一种使用广泛的计算机程序设计语言。它是一种痛用程序设计语言,支持 多种编程模式。 56、MongoDB的优势有哪些 面向文档的存储:以 JSON 格式的文档保存数据。...由于简单的设计和非常好的性能所以被用于大数据和Web Apps等 64、非关系型数据库有哪些类型 -Key-Value 存储 Eg:Amazon S3 图表 Eg:Neo4J 文档存储 Eg:MongoDB

    9.1K30

    全网最全95道MongoDB面试题1万字详细解析

    MongoDB没有使用传统的锁或者复杂的带回滚的事务,因为它设计的宗旨是轻量,快速以及可预计的高性能。可以把它类比成MySQLMylSAM的自动提交模式。...34、如何理解MongoDB中的GridFS机制,MongoDB为何使用GridFS来存储文件? GridFS是一种将大型文件存储在MongoDB中的文件规范。...37、如何理解MongoDB中的GridFS机制,MongoDB为何使用GridFS来存储文件? GridFS是一种将大型文件存储在MongoDB中的文件规范。...C++1983年发行是一种使用广泛的计算机程序设计语言。它是一种通用程序设计语言,支持 多种编程模式。 56、MongoDB的优势有哪些 面向文档的存储:以 JSON 格式的文档保存数据。...由于简单的设计和非常好的性能所以被用于大数据和Web Apps等 64、非关系型数据库有哪些类型 -Key-Value 存储 Eg:Amazon S3 图表 Eg:Neo4J 文档存储 Eg:MongoDB

    14.2K00

    一个让人遗忘的角落—Exception(三)

    系列回顾: 1.一个被人遗忘的角落—Exception(一) 2.一个被人遗忘的角落—Exception(二) 上一篇中主要介绍了Log的几种方式,接下来说说通知的方式: 通知方式 说明 Email 这是最常见也是最方便的一种通知方式...这里值得注意的是,当你的Email通知方式抛出异常时,请一定要使用另外一种方式进行通知,因为此时可能你的网站已经发生了不可忽视的异常了。...老赵说在内部类的时候最好也能把异常捕捉后,进行封装然后再抛出,不过我个人觉得,如果是类库的话,还是不要去Catch,这是为什么呢?...现在说说我的观点,一般我们的网站会使用三层架构,不过为了解除业务逻辑与页面层的耦合,我们会借助某些模式,以降低它的耦合度。...有人会说在数据层,我们会使用ADO等方法,会与数据库进行一定的联系,其中就会抛出各种异常,难道我们不要去处理吗?是的,如果可能,请不要在这里进行处理,我的方案是,去业务层进行捕捉和处理。

    58860

    从零到一:一个Java全栈开发者的面试实战解析

    我是今天的面试官,可以先简单介绍一下你自己吗? **应聘者**:好的,我叫李明,28岁,本科学历,有5年Java全栈开发经验。...接下来,我想问问你关于前后端分离的架构设计。 **应聘者**:前后端分离是一种常见的架构模式,前端和后端通过RESTful API进行通信。...**面试官**:非常好,这正是我们公司正在采用的一种架构。那你能说说你在项目中是如何设计API接口的吗? **应聘者**:我们通常会使用Swagger来生成API文档,并且遵循RESTful规范。...**面试官**:非常好,看来你对RESTful API的设计有一定的经验。接下来,我想问问你关于JWT认证机制。...**面试官**:非常好,这正是我们公司常用的几种通信方式。那你能说说你在项目中是如何选择通信方式的吗? **应聘者**:我们会根据具体的业务场景来选择通信方式。

    15910

    从全栈开发到微服务架构:一场真实的Java面试实录

    ### 面试官:非常好的思路。那你能举个例子说明你是如何优化一个具体接口的响应时间吗? **应聘者:** 有一次我们发现一个查询订单列表的接口响应时间很长,后来排查发现是SQL语句没有使用索引。...### 面试官:非常好,看来你在实际项目中有不少实战经验。那如果你现在要设计一个分布式事务方案,你会怎么选型? **应聘者:** 我会根据业务场景来选择方案。...如果是强一致性要求高的场景,我会使用Seata这样的分布式事务框架,它支持AT模式和TCC模式。...### 微服务架构设计 在高并发场景下,微服务架构是一种常见解决方案。使用Spring Cloud可以实现服务注册与发现、配置管理、负载均衡等功能。...无论是JVM机制、微服务架构,还是分布式事务和REST API设计,都表现出了良好的理解和实践能力。

    19010

    从零到一:一位Java全栈工程师的面试实战分享

    **小林**:好的,没问题。 **面试官**:首先,我想了解一下你的Java基础。你能说说Java的垃圾回收机制吗? **小林**:Java的垃圾回收(GC)是JVM自动管理内存的一种机制。...**面试官**:非常好,你对GC机制理解得非常透彻。那你知道JVM的内存模型吗? **小林**:JVM内存模型主要包括方法区、堆、栈、程序计数器和本地方法栈。...**面试官**:非常好,那你知道Spring AOP吗? **小林**:Spring AOP是面向切面编程的一种实现方式,主要用于日志记录、权限控制、事务管理等横切关注点。...你熟悉OAuth2吗? **小林**:是的,我使用过OAuth2来进行用户认证和授权。常见的流程包括授权码模式、隐式模式和客户端凭证模式。 **面试官**:那你能说说OAuth2的工作流程吗?...**面试官**:非常好,那你知道JWT是什么吗? **小林**:JWT(JSON Web Token)是一种轻量级的身份验证和信息交换标准。它由三部分组成:头部、载荷和签名。

    14410

    从Java全栈到云原生:一位程序员的面试实战全记录

    面试官(点头):好,那我们就开始吧。首先,请你简单介绍一下你的工作经历。 应聘者(认真):好的,我之前在一家互联网大厂做Java全栈开发,主要负责后端系统设计和前端页面实现。...面试官(认可):没错,这是一个非常常见的问题。那你能举个例子说明你在项目中如何避免内存泄漏吗? 应聘者(回忆):比如在一个电商项目中,我们使用了一个缓存工具类,它会在一定时间后自动清理无用的对象。...### 问题3:你能解释一下Java中的泛型擦除吗? 应聘者(回答):泛型擦除是Java编译器为了兼容旧版本的JVM而采用的一种机制。在编译阶段,泛型信息会被擦除,只保留原始类型。...那你能说说你如何设计一个微服务架构吗? 应聘者(回答):在设计微服务架构时,我会根据业务需求划分服务边界,每个服务独立部署和维护。...那你能说说你如何实现JWT认证吗? 应聘者(回答):JWT是一种无状态的认证方式,通常用于分布式系统。

    20310

    从全栈工程师视角看技术成长:一次真实面试的深度复盘

    # 从全栈工程师视角看技术成长:一次真实面试的深度复盘 ## 面试背景 这是一次真实的Java全栈开发岗位的面试过程,应聘者是一位拥有5年工作经验的资深开发者。...**应聘者**:我主要使用的是Java 11和Java 17,因为它们支持更多的新特性,比如模式匹配、密封类等。不过在一些旧项目中也用到了Java 8。...那你知道JVM的垃圾回收机制吗? **应聘者**:是的,JVM的GC机制主要分为几个区域,比如堆、方法区、栈等。常见的GC算法包括标记-清除、标记-整理和复制算法。...**面试官**:非常好。那你能说说你是如何管理前端状态的吗? **应聘者**:我们主要使用Vuex进行全局状态管理,同时也结合Pinia做一些轻量级的状态管理。...**面试官**:非常好。那你能说说你对服务熔断的理解吗? **应聘者**:服务熔断是在微服务中防止雪崩效应的一种机制,当某个服务调用失败次数过多时,会暂时停止调用该服务,避免资源浪费。

    22110

    从零到一:一个Java全栈工程师的面试实战全记录

    **面试官**:那你能写一个简单的Ant Design Vue的表单示例吗? **李明**:好的,这是一个简单的表单组件。...**面试官**:那你能写一个示例吗? **李明**:好的,这是一个根据用户名和状态筛选用户的示例。...**李明**:微服务是一种将应用拆分为多个独立服务的架构模式,每个服务都可以独立部署和扩展。Spring Cloud是一个常用的微服务框架。 **面试官**:那你是如何实现服务间通信的?...**面试官**:那你能写一个简单的OAuth2配置示例吗? **李明**:好的,这是一个Spring Security的OAuth2配置。...**面试官**:那你能写一个使用Redis的示例吗? **李明**:好的,这是一个使用Spring Data Redis的示例。

    15300

    框架设计原则

    这是其实是说的比较多的东西了。 什么是微核心 + 插件?按照作者的说法,核心只负责装配插件。...同时,如果使用注册机制,那么就需要硬编码。或者说,Spring 本身就是管理 Bean 生命周期的框架,而 Dubbo 的职责不在于此? 最少化概念模型,这个其实是一种优化。...这是在框架设计中,是非常重要的。 PPT 中已经说的非常清楚,我就不再说明。其中,Invocation 一定要轻量。否则,对 GC 来说,将是很大的压力(使用对象池?性能不好。)...所以,需要保证他们是这么设计的,才能实现无锁编程。 ---- 4 接口分离原则 ? 关于接口分离,我认为是单一职责的一种实现。 其中提到 API 和 SPI,API 面向用户,SPI 面向开发者。...关键路径,即在管道使用职责连模式进行拦截,保证每个拦截器职责单一。 非关键路径,需要有监听机制,不能影响主流程运行。 关于协作防御,我理解为防御性编程。 分离可靠操作和不可靠操作。

    1.5K31

    从Java全栈到Vue3实战:一次真实面试的完整记录

    在本次面试中,他被问及了多个关于技术选型、系统设计和代码实现的问题,整体表现较为稳定,但也有部分知识盲点暴露出来。以下是他与面试官之间的详细对话记录。...**面试官**:那你能说说JPA和MyBatis的区别吗? **应聘者**:JPA是基于ORM的,更适合面向对象的设计;而MyBatis更灵活,适合需要复杂SQL查询的场景。...**应聘者**:微服务是一种将单体应用拆分为多个独立服务的架构模式,每个服务都可以独立部署、扩展和维护。 **面试官**:很好,那你能举一个具体的例子吗?...那你知道JWT吗? **应聘者**:知道一点,它是一种无状态的认证方式,通常用于分布式系统。 **面试官**:没错,那你能说说JWT的结构吗?...那你知道Redis的持久化机制吗? **应聘者**:有RDB和AOF两种方式,RDB是快照形式,AOF是日志形式。

    17210

    Java全栈开发面试实录:从基础到实战的深度探索

    ## 三、Spring Boot与Web框架 面试官:你之前提到做过电商平台,能说说你是如何设计后端接口的吗?...面试官:非常好,这说明你对Spring Boot的配置机制有深入了解。 ## 四、前端技术栈与Vue 面试官:除了后端,你还熟悉前端技术,能说说你在项目中使用的前端框架吗?...## 五、数据库与ORM 面试官:你之前提到做过电商平台,能说说你是如何设计数据库的吗? 应聘者:我们使用MySQL作为主数据库,采用MyBatis作为ORM框架。...那你知道OAuth2和JWT的区别吗? 应聘者:OAuth2是一种授权协议,主要用于第三方授权;而JWT是一种令牌格式,常用于身份验证和信息交换。 面试官:非常准确!...那你知道Redis的持久化机制吗? 应聘者:Redis支持RDB和AOF两种持久化方式,RDB是快照形式,适合备份;AOF是日志形式,适合数据恢复。 面试官:非常好!

    8910

    从零到一:一个Java全栈开发者的实战面试之路

    **应聘者**:微服务是一种将单体应用拆分成多个独立服务的架构模式,每个服务都可以独立部署、扩展和维护。我们通常使用Spring Cloud来实现微服务之间的通信和治理。...**面试官**:非常好,那你能举例说明你在实际项目中是如何使用Spring Cloud的吗?...**面试官**:非常好,那你能举一个具体的例子说明你是如何设计一个RESTful API的吗?...**面试官**:那你能说说你对JPA和MyBatis的理解吗? **应聘者**:JPA是一种ORM框架,它简化了数据库操作,支持注解和JPQL查询。...**面试官**:那你能说说JWT的工作原理吗? **应聘者**:JWT是一种无状态的认证机制,用户登录成功后,服务器生成一个Token并返回给客户端。

    14510
    领券