上一章中,我们实现了序列器生成器的功能,并成功运用了单例模式。细心的你可能也发现了一个问题:每次获取键值时都要去查询数据库,这样会带来一个性能的问题,那有没有办法优化列?答案是肯定的。做法就是我们常在处理数据库操作时用到的:缓存。
思路是这样的:给整个表做一个缓存,在每次取值的时候先去缓存中获取数据,如果获取不以,将去数据库中查询,注意这些我们不会递增,而是一次性出N个值出来,N的大小可以根据系统的吞吐量来决定,就算我们系统在使用中,突然Down掉了,你也不用怕,无非就是浪费了几个序列键而已。在本例中,为了演示效果,我们将N 将为5。
我们创建一个Bean来保存数据库中的一条记录的相关信息。
接下来,我们看看序列键生成器的代码:
大家可以看到,我们把获取数据库的操作转移到KeyInfo中,每条记录对自己负责,我们在序列键生成器中,只需要调用各自记录的Bean,就能获取到相关信息。当第一次获取某条记录的时候相关信息时,首先我们是去缓存中查询,如果查询不到,我们就会创建该记录的Bean,并缓存起来。如果查询到,我们则直接调查用相关方法,获取我们需要的信息(下一个键值),每条记录对自己负责,而生成器,刚相当于成了一完全的缓存对象,他的所有操作都委托给相应记录的Bean自己处理。
同时,我还在想,这例可不可以用多例模式来做列? 我们将map 放到KeyInfo类中,让KeyInfo类,变成多例模式,这样KeyGenarator就可以省去,这样做也是行得通。但是我个人觉得: 从逻辑上来讲,一个序列键管理器负责管理多条记录更说通。
应该说,两种设计都行通,看个人喜好吧。
分享到:
相关推荐
本资源摘要信息是对《韩顺平_Java设计模式笔记.docx》的总结和分析,该笔记涵盖了 Java 设计模式的基础知识、设计模式的七大原则、原型设计模式、解释器设计模式、单例设计模式等内容,并对每个设计模式的原理、实现...
- Java的发展历程:从1995年由Sun Microsystems公司发布以来,Java经历了多次重大版本更新,成为当今最流行的编程语言之一。 - Java的主要版本介绍:包括Java SE(Standard Edition)、Java EE(Enterprise ...
### JAVA 笔记知识点概述 #### 一、JAVA特点与运行原理 - **JAVA特点**: - 平台无关性:通过Java虚拟机(JVM)实现跨平台兼容。 - 面向对象:支持封装、继承、多态等特性。 - 安全性:提供内存管理机制避免...
Java入门笔记文档详细阐述了Java编程语言的基本概念、开发工具、编程基础、面向对象编程、多线程、集合框架、IO流、网络编程、安全加密、反射机制、新特性、内存管理等多个方面,为初学者提供了一条通往Java编程世界...
### Java基础知识笔记总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机能够执行一系列任务的过程。 2. **Java语言概述,历史、特点** - Java是由Sun ...
不允许多个对象 用单例 2. 装饰者模式:(了解) 装饰者模式指的是在不必改变原类(Input)文件和使用继承的情况下,动态地扩展一个对象的功能。 它是通过创建一个包装对象,也就是装饰来包裹真实的...
Java笔记(J2SE部分)主要涵盖了Java标准版(Java SE)的基础知识,这是学习Java编程语言的关键。Java SE是Java平台的核心,用于开发和运行桌面应用、服务器端应用以及嵌入式系统的程序。这份笔记可能包括了从基本...
12. **设计模式**:介绍单例、工厂、装饰器、代理等常见设计模式,以及它们在实际项目中的应用。 13. **Java Swing和JavaFX**:用于构建桌面应用的图形用户界面库,包括组件使用、布局管理、事件处理等。 14. **...
【Java高级部分代码注释及笔记】 在Java高级部分的学习中,我们主要涉及以下几个关键知识点: 1. **多线程**:Java提供了多种创建线程的方式,如继承Thread类、实现Runnable接口或Callable接口,以及使用...
面向对象的高级主题可能涵盖单例模式、工厂模式、代理模式等设计模式,以及枚举、注解、反射等特性。深入学习这些高级话题,可以提升代码的可读性、可维护性和复用性。 通过这些Xmind思维导图,学习者可以按部就班...
{13.8}java.util.Date与java.sql.Date比较}{200}{section.13.8} {13.9}Meta Data}{201}{section.13.9} {13.10}可滚动结果集}{201}{section.13.10} {13.11}Procedure}{201}{section.13.11} {14}xml}{204}{...
【标题】"cloudnote_java_" 指向的可能是一个基于Java开发的云笔记应用程序,这个项目可能是某个在线教育平台,如X内的结业作业。在这个项目中,学生或学员被要求利用Java编程语言来设计并实现一个云笔记系统,以此...
2. **JDK(Java Development Kit)**:Java开发工具包,包含了JRE以及开发Java应用程序所需的编译器、调试器、文档生成工具等开发工具。因此,要开发Java程序,必须安装JDK。 #### 三、配置环境变量path 配置`path...
面向对象的设计模式,如工厂模式、单例模式、观察者模式等,也可能在笔记中有详细阐述。 接着,异常处理是Java程序健壮性的重要组成部分。JavaSE中的try-catch-finally语句块、异常的分类和抛出,以及自定义异常,...
- Python:动态类型、列表推导、装饰器、生成器等。 通过分析`-My-leetcode-master`中的代码,可以深入理解这些知识点的实际应用,学习如何在不同场景下选择合适的数据结构和算法,提高解决问题的效率。同时,也...
- **单例模式**、**工厂模式**、**装饰器模式**等常见设计模式在实际问题中的应用。 9. **网络编程**: - TCP/IP协议、套接字编程、HTTP请求等基础知识。 10. **数据库知识**: - SQL查询语言:SELECT、JOIN、...