设计模式-单例模式
设计模式-单例模式时间:2022年9月20日 本文档摘抄自:菜鸟教程 ,修改部分 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 注意: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 一、介绍意图: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 主要解决: 一个全局使用的类频繁地创建与销毁。 何时使用: 当您想控制实例数目,节省系统资源的时候。 如何解决: 判断系统是否已经有这个单例,如果有则返回,如果没有则创建。 关键代码: 构造函数是私有的。 应用实例: 1、一个班级只有一个班主任。 2、Windows...
软件版本号规范
[TOC] 软件版本号规范一、软件版本阶段说明o Base版: 此版本表示该软件仅仅是一个假页面链接,通常包括所有的功能和页面布局,但是页面中的功能都没有做完整的实现,只是做为整体网站的一个基础架构。 o Alpha版: 此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改。 o Beta版: 该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI。 o RC版: 该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几。 o Release版: 该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标准版。一般情况下,Release不会以单词形式出现在软件封面上,取而代之的是符号(R)。 二、版本命名规范软件版本号由四部分组成 第一个1为主版本号 第二个1为子版本号 第三个1为阶段版本号 第四部分为日期版本号加希腊字母版本号...
JavaSe面试题
JavaSe面试题请你说说多线程1.线程是程序执行的最小单元,一个进程可以拥有多个线程 2.各个线程之间共享程序的内存空间(代码段、数据段和堆空间)和系统分配的资源(CPU,I/O,打开的文件),但是各个线程拥有自己的栈空间...
Spring框架面试题
Spring框架面试题介绍一下Spring MVC的执行流程SpringMVC 的执行流程如下。 用户点击某个请求路径,发起一个 HTTP request 请求,该请求会被提交到 DispatcherServlet(前端控制器); 由 DispatcherServlet 请求一个或多个 HandlerMapping(处理器映射器),并返回一个执行链(HandlerExecutionChain)。 DispatcherServlet 将执行链返回的 Handler 信息发送给 HandlerAdapter(处理器适配器); HandlerAdapter 根据 Handler 信息找到并执行相应的 Handler(常称为 Controller); Handler 执行完毕后会返回给 HandlerAdapter 一个 ModelAndView 对象(Spring MVC的底层对象,包括 Model 数据模型和 View 视图信息); HandlerAdapter 接收到 ModelAndView 对象后,将其返回给 DispatcherServlet...
数据库面试题
数据库面试题请你说说MySQL索引,以及它们的好处和坏处MySQL索引是一种帮助快速查找数据的数据结构,可以把它理解为书的目录,通过索引能够快速找到数据所在位置。场景的索引数据结构有:Hash表(通过hash算法快速定位数据,但不适合范围查询,因为需要每个key都进行一次hash)、二叉树(查找和修改效率都比较高),但是在InnoDB引擎中使用的索引是B+Tree,相较于二叉树,B+Tree这种多叉树,更加矮宽,更适合存储在磁盘中。使用索引增加了数据查找的效率,但是相对的由于索引也需要存储到磁盘,所以增加了存储的压力,并且新增数据时需要同步维护索引。但是合理的使用索引能够极大提高我们的效率! 哪些操作会导致索引失效? 对索引使用左或者左右模糊匹配,也就是 like %xx 或者 like %xx%...
java技术栈(转载)
java技术栈来自大佬博客 http://linyishui.top/2018080801.html Java开发学习路线第一部分 Java基础一、Java1.1 基础 序号 博文 1 Java知识点总结 (一) 2 Java知识点总结 (二) 3 Java对象克隆 4 参数传递 5 面向对象 6 面向对象-多态 7 static,final,transient等关键字原理作用 8 抽象类,接口,注解 9 泛型和类型擦除 10 通配符 12 Java反射 13 代理 14 异常 15 断言和日志 1.2 字符串 序号 博文 1 String,StringBuilder,StringBuffer 2 Java字符串内存分配-字符串常量池 3 String的intern方法详解 4 String的intern方法测试实例分析 5 常用字节码指令 6 equals和hashCode异同 1.3 集合 序号 博文 1 迭代器 2 Java集合(一)...
多线程之操作系统底层工作的整体认识
多线程之操作系统底层工作的整体认识 摘抄至 : https://blog.csdn.net/Xx__WangQi/article/details/117202154 如有侵权,联系我删除! 日期:2022年4月21日 18:11:35 一、冯诺依曼计算机模型详解现代计算机模型是基于-冯诺依曼计算机模型 计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来,再取出第二条指令,在控制器的指挥下完成规定操作。依此进行下去。直至遇到停止指令。 程序与数据一样存贮,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的操作是计算机最基本的工作模型。这一原理最初是由美籍匈牙利数学家冯.诺依曼于1945年提出来的,故称为冯.诺依曼计算机模型。 1.1...
自己封装jar包时如何初始化JpaRepository
[TOC] 自己封装jar包时如何初始化JpaRepository一、基本使用当我们自己需要将部分业务代码封装成jar包时,如果不加以额外的配置,该包内的JpaEntity与JpaRepository是不会被jpa加载的。 需要我们手动的加入以下两个注解。 1、@EntityScan 该注解的作用就是标识扫描哪些包下面的Entity 2、@EnableJpaRepositories 该注解的作用就是标识扫描哪些包下面的Repository 二、拓展当我们需要增加一个配置项来标识是否启用jpa时,我们可以通过springboot的 @ConditionalOnProperty 注解来达成目的。 如 12345678910111213141516171819/** * 是否扫描jpa的实体 * * @author xia17 * @date 2022/4/13 */@ConditionalOnProperty( prefix = "xia17fast.dynamic-datasource", name =...
读点什么-书籍列表
读点什么-书籍列表一、技术书籍 一些技术书籍推荐 https://gitee.com/itwanger/JavaBooks 1.1 《重构-改善既有代码的设计》 作者: [Martin Fowler](https://book.douban.com/search/Martin Fowler) 是否购买纸质书籍:否 已阅:否 阅读时间: 1.2 《Java开发手册》本手册的作者孤尽曾说:代码规范这事情,它是一个吃力不讨好,短期没结果,费心又费力的事情。唯有自己内心的技术情怀。 作者:阿里巴巴 是否购买纸质书籍:否 已阅:是 阅读时间:2021-06-20 1.3 《代码整洁之道》 作者:[美]Robert C.Martin 是否购买纸质书籍:否 已阅:是 阅读时间:2023-01-02 二、哲学书籍2.1 《毛泽东选集》 作者:毛泽东 是否购买纸质书籍:否 已阅:否 阅读时间: 2.2 《资本论》 作者: 是否购买纸质书籍:否 已阅:否 阅读时间: 三、文学书籍3.1 《围城》 作者:钱钟书 是否购买纸质书籍:否 已阅:是 阅读时间:2020-01 3.2...
ReentrantLock的newCondition方法
ReentrantLock的newCondition方法一、简单使用关键字synchronized与wait()/notify()这两个方法一起使用可以实现等待/通知模式, Lock锁的newContition()方法返回Condition对象,Condition类也可以实现等待/通知模式。 用notify()通知时,JVM会随机唤醒某个等待的线程, 使用Condition类可以进行选择性通知, Condition比较常用的两个方法: ● await()会使当前线程等待,同时会释放锁,当其他线程调用signal()时,线程会重新获得锁并继续执行。 ● signal()用于唤醒一个等待的线程。 注意:在调用Condition的await()/signal()方法前,也需要线程持有相关的Lock锁,调用await()后线程会释放这个锁,在singal()调用后会从当前Condition对象的等待队列中,唤醒 一个线程,唤醒的线程尝试获得锁,...