![](https://img-blog.csdnimg.cn/20200716084658920.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA笔记
文章平均质量分 86
JAVA笔记
-无事小神仙-
善始者实繁,克终者盖寡:善于开始去做事的人实在是太多了,而能够克服困难最终把事情做完的人原来那么少。
展开
-
设计模式之观察者模式
1. 观察者模式概述我们不断提到软件系统解耦的重要性,当减少依赖关系时,我们可以扩展、开发和测试不同的模块,而无需了解其他模块的实现,只需要知道它们实现的抽象。尽管如此,在实践中,模块是需要协同工作的,一个对象往往能够知道另一个对象的变化。例如某种商品的物价上涨时会导致部分商家高兴,而消费者会伤心。观察者模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,这种模式有时又被称为发布-订阅模式、模型视图模式。观察者模式的优点:降低了目原创 2022-03-15 17:41:13 · 3840 阅读 · 0 评论 -
设计模式之迭代器模式
1. 迭代器模式概念迭代器模式可能是JAVA中最广为人知的模式之一,JAVA程序员在使用集合时,并不需要关注其类型是List、Set还是其他的,因为它们的遍历都可以通过迭代器来完成。迭代器模式在客户访问类和聚合类之间插入,分离了聚合对象与其遍历行为,对客户也隐藏了其内部细节,满足单一职责原则和开闭原则。迭代器模式优点:访问一个聚合对象的内容而无须暴露它的内部表示。遍历任务交由迭代器完成,这简化了聚合类。增加新的聚合类和迭代器类都很方便,无须修改原有代码。迭代器模式缺点:增加了类的个数,这原创 2022-03-14 09:47:40 · 1214 阅读 · 0 评论 -
设计模式之解释器模式
1. 解释器模式概念计算机用来解释句子或表达式,类似在软件开发过程中,有时需要处理一系列多次重复出现的问题。如果将这类问题归纳成一种简单的语言,那么这些问题实例将是该语言的一些句子,这样就可以用编译原理中的解释器模式来实现了。解释器模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解释器来解释语言中的句子,即用编译语言的方式来分析应用中的实例。解释器模式优点:扩展性好,由于在解释器模式中使用类来表示语言的文法规则,因此可以通过继承等机制来改变或扩展文法。容易实现,在语法树原创 2022-03-10 14:17:05 · 846 阅读 · 0 评论 -
设计模式之命令模式
1. 命令模式概念命令模式的定义是将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。在面向对象编程当中,一个很重要的事情是设计使得代码松耦合。命令模式在生活中的体现就是遥控器和电视,遥控器是命令的触发者会给电视这个命令接受者发送一条换台命令,电视才会去执行这个换台命令,遥控器和电视就是通过命令关联起来,当遥控器坏了,我们不必去直接更换电视这个接受者,我们只需要更换命令的触发者遥控器即可。命令模式优原创 2022-03-05 16:55:56 · 385 阅读 · 1 评论 -
设计模式之责任链模式
1. 责任链模式计算机软件是用来处理信息的,有多种不同的方式来组织和处理信息。当我们讨论面向对象编程时,应该赋予一个类单一的职责,从而使得类容易维护和扩展。设想一个场景,需要对一批从客户端来的数据进行多种不同的操作,我们会使用多个不同的类负责不同的操作,而不是使用一个类集成所有的操作,这样做能够让代码松耦合且简洁。这些类被称为处理器,第一个处理器会接收请求,如果它需要执行操作则会进行一次数据处理,如果不需要则会将请求传递给第二个处理器,依次类推直至走完整个链,这就是责任链模式。责任链模式优点:降低原创 2022-03-04 17:08:14 · 405 阅读 · 0 评论 -
设计模式之原型模式
1. 原型模式原型模式用来解决对象的创建问题,它是指用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的对象。其类图结构如下:抽象原型类(Prototype):声明了clone()方法的接口或基类,其中clone()方法必须由派生类实现。具体原型类(ConcretePrototype):用于实现或扩展clone()方法的类,clone()方法必须要实现。原型模式的优点:JAVA自带的原型模式基于内存二进制流的复制,在性能上比直接new一个对象更加优良。原型模式原创 2022-03-03 10:22:34 · 579 阅读 · 1 评论 -
设计模式之建造者模式
1. 建造者模式对象的创建往往是复杂的,在软件开发过程中有时需要创建一个复杂的对象,这个复杂的对象通常由多个子部件按一定的步骤组合而成。比如房子有各式各样的,但建造方法的步骤大同小异都是先搭建地基、再砌墙、最后封盖屋顶。建造者模式旨在将一个复杂对象的构造与它的表示分离开来,使同样的构建过程可以创建不同的表示,建造者的角色如下:产品:需要构建的对象,是具有不同表现形式的复杂或复合对象。抽象建造者:用于声明构建产品类组成部分的抽象类或接口。具体建造者:用于实现抽象建造者,实现具体的建造过程,生成完整产原创 2022-03-01 16:48:17 · 256 阅读 · 0 评论 -
SpringBoot之自定义场景启动器
1. 场景启动器Spring Boot的自动配置原理中不可或缺的就是那些已经定义好的场景启动器,只要导入某个场景启动器我们的应用就拥有了该场景下的一些核心Bean,有利于快速开发,比如引入Web的场景启动器:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></d原创 2022-02-26 18:42:10 · 2099 阅读 · 1 评论 -
算法之大数相乘
1. 大数相乘问题计算:999999999999999999999999999999 x 999999999999999999999999999999 = ?(30个9乘以30个9)在JAVA语言中表示数字的类型有byte、short、int、long,这些类型都有其表示的数据范围,超过了能表示的范围就会产生数据溢出,比如:// 输出int能表示的最大数加1后的数System.out.println(Integer.MAX_VALUE + 1);int能表示的最大数是2147483647,但原创 2022-02-22 15:28:07 · 2413 阅读 · 0 评论 -
设计模式之工厂模式
1. 工厂模式在面向对象编程中,继承是一个基本概念,它与多态共同构成了类的父子关系。Phone对象可以被当做Product对象处理,Computer对象也可以被当做Product对象处理。一方面,这种抽象方式使得同一段代码能为Phone对象和Computer对象提供同样的处理操作,使代码更加简洁。另一方面,如果要扩展新的Product对象类型,比如Watch,不再需要修改代码,只需添加新的类即可。在大多数情况下,最棘手的问题往往是对象的创建。在面向对象编程中,每个对象都使用特定的构造器进行实例化操原创 2022-02-14 17:57:21 · 415 阅读 · 0 评论 -
设计模式之设计原则
1. 设计原则 无论你是在大型团队中工作还是在单人项目中工作,软件开发都不仅仅是编写代码。构建应用程序的方式对软件应用程序的成败有很大的影响。当我们谈论一个成功的软件应用程序时,不仅讨论应用程序如何执行它应该做的事情,还讨论在开发它时付出了多少努力,以及它是否易于测试和维护。如果没有以正确的方式完成,那么暴涨的开发成本将会导致没人能接受这个应用程序。 创建软件应用程序是为了满足不断变化和发展的需求。一个成功的应用程序还应该提供一种简单的方法来扩展它以满足不断变化的期望。幸运的是,我们不是第一个遇原创 2022-02-11 11:22:52 · 681 阅读 · 0 评论 -
设计模式之单例模式
1. 单例模式自JAVA语言推广使用以来,单例模式(singleton pattern)就是最常用的设计模式,它具有易于理解、使用简便等特点。有时单例模式会过度使用或在不合适的场景下使用,造成弊大于利的后果。因此单例模式有时被认为是一种反模式。但是很多情况下单例模式是不可或缺的。单例模式顾名思义,用来保证一个对象只能创建一个实例。除此之外,它还提供了对实例的全局访问方法,如图所示:2. 模式实现单例模式的实现非常简单,只由单个类组成。为确保单例实例的唯一性,所有的单例构造器都要被声明为私有的,原创 2022-02-09 16:55:15 · 486 阅读 · 1 评论 -
SPI思想应用之拔插式插件
1. 插件简介插件在百度百科中解释为: 插件是一种遵循一定规范的应用程序接口编写出来的程序。其只能运行在程序规定的系统平台下(可能同时支持多个平台),而不能脱离指定的平台单独运行。因为插件需要调用原纯净系统提供的函数库或者数据。很多软件都有插件,插件有无数种。例如在IE中,安装相关的插件后,WEB浏览器能够直接调用插件程序,用于处理特定类型的文件。1.1 插件应用插件已经不再是什么新鲜的事物了,在很多地方都可以看到各种各样的插件,特别是那些业界有名的软件系统。比如我们熟悉的谷歌浏原创 2022-02-08 15:16:30 · 1482 阅读 · 0 评论 -
JAVA中的SPI思想
1. SPI介绍SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,其意义在于为某个接口寻找服务的实现,主要应用在框架中用来寻找组件,提高扩展性。汽车制造是一个比较繁琐的过程,通常的手段是先规定汽车各个零部件的生产规格,各个零部件厂商按照这种规则去生产合格的零部件。汽车生产商挑选合适的零部件去组装以出产汽车。汽车某个零部件损坏也不用废弃掉整个汽车,只需要更换组件即可,这种模式很类似Spring的整合思想。SPI就是用来怎么去寻找汽车零原创 2022-01-28 14:02:51 · 1481 阅读 · 0 评论 -
多线程并行计算案例
1. 提出问题计算 1 + 2 + 3 + 4 + … + 997 + 998 + 999+ 1000 = ?2. 单线程计算采用的单线程进行累加求和,先算1 + 2 = 3 再算 3 + 3 = 6 再算 6 + 4 = 10,依次类推直至加到1000,其中要累加999次,假设每次累加至少耗时1ms,这样计算则至少需要999ms。2.1 代码实现public static void test01() throws InterruptedException{ long sum = 0;原创 2021-12-22 17:02:15 · 2180 阅读 · 0 评论 -
01.JSTL标签库
1. JSTL描述:JSP Standard Tag Library,JSP标准标签库作用提供给Java Web开发人员一个标准通用的标签函数库取代传统直接在页面嵌入Java代码,以提高程序可读性、维护性和方便性依赖:standard.jarjstl.jar引入:<%@ taglib prefix=*"c"* uri=*"http://java.sun.com/jsp/jstl/core" %>2. out标签2.1 用法作用:取值语法<!原创 2020-07-15 23:05:38 · 167 阅读 · 0 评论 -
02.原生JS实现异步请求
1. 原生JS实现异步请求描述:原生JS的AJAX开发,通过XMLHttpRequest对象来完成异步发送请求和接受响应步骤:第一步:获取XMLHttpRequest对象第二步:和服务器进行连接第三步:发送请求数据第四步:接受服务器响应第五步:获取响应数据```java第一步:获取XMLHttpRequest对象 # 兼容大多数浏览器 var xhr = new XMLHttpRequest(); # 兼容IE6浏览器 var xhr = new Ac原创 2020-07-16 21:14:33 · 1189 阅读 · 0 评论 -
03.利用JQ实现异步请求
1. 利用JQ实现异步请求$.ajax({ // 请求方式 method:'POST', // 请求资源 url:'xxxxxx.do', // 请求参数 data:'username=tom&password=123', // 成功回调 success:function(data){ // data请求返回数据 }, // 失败回调 error:function(error){ }}原创 2020-07-17 21:43:59 · 417 阅读 · 0 评论 -
Eclipse集成Tomcat环境
1. 集成环境Eclipse 2018Tomcat 8.0.452. 集成Tomcat2.1 在Eclipse中打开偏好设置2.2 找到运行时环境设置添加环境2.3 选择对应Tomcat版本2.4 选择本地Tomcat安装位置2.5 出现Tomcat配置文件项目目录位置出现Servers,里面加载了Tomcat的相关配置文件2.6 出现Tomcat服务2.7 检查Tomcat的配置信息3. 新建动态网站3.1 新建动态网站项目3.2 项目命名3.3 修原创 2020-07-11 20:00:27 · 657 阅读 · 0 评论 -
基于Session的安全认证方式
1. 基于Session的安全认证方式描述:当我们没有进行安全认证的时候,直接在浏览器地址栏输入http://127.0.0.1:8080/Security_Session/index.jsp会直接访问页面,这是我们不希望看到的。我们希望index.jsp页面是我们管理员角色才能访问的,因此需要进行一个安全认证。原理:借助session机制,我们将用户的角色信息记录在session中,在页面对session中的角色进行认证,如果是admin角色则允许访问index.jsp页面,否则重定向到login.原创 2020-07-14 22:00:35 · 487 阅读 · 0 评论 -
基于Filter的安全认证方式
1. 基于Filter的安全认证方式问题:基于session的安全认证方式存在一定的问题,例如对角色权限的认证都编码在了页面,一旦页面有很多,那我们必须在每个页面都去重复写角色权限认证逻辑,这样不便于维护和开发。因此我们可以通过Filter技术来控制整个模块的权限认证业务逻辑。原理:在对网站资源进行请求时,请求会先经过过滤器的过滤,如果过滤器放行才允许访问资源。工具:IDEA2018 + Tomcat8.0.45技术:Servlet + Filter + Session项目:S原创 2020-07-18 23:21:53 · 257 阅读 · 0 评论 -
SpringBoot整合MyBatis-Plus配置多数据源
1. 业务需求在开发中经常遇到主从模式或者业务比较复杂需要连接不同的分库来完成业务时需要使用到多数据源。在一个应用程序中需要访问主库又要访问从库,Spring Boot整合MyBatis-plus如何实现多数据源?2. 数据库准备新建两个数据库,zw_test1和zw_test2,在两个数据库中分别建表sys_user,并添加不同的记录,比如zw_test1库中的sys_user表存储周杰伦的数据,zw_test2库的sys_user表中存储刘德华的数据。2.1 建表语句# 建表CR原创 2021-06-12 22:53:27 · 1223 阅读 · 5 评论