学习笔记
文章平均质量分 67
对于前后端以及linux相关基础知识的学习与总结的笔记
Yava想要进大厂
One day。
展开
-
Guava缓存使用
Guava缓存在项目中的使用原创 2023-03-06 16:30:09 · 378 阅读 · 0 评论 -
ElasticSearch7.x 从部署到开发
ElasticSearch7.x SpringBoot项目如何对接ElasticSearc Spring-data-elasticsearch-2.7.5新版api原创 2023-02-18 11:03:15 · 430 阅读 · 0 评论 -
Lucene学习笔记
有关lucene存储的使用原创 2023-02-15 14:47:08 · 465 阅读 · 0 评论 -
Java泛型
java泛型原创 2022-10-24 11:06:32 · 364 阅读 · 0 评论 -
SpringBoot项目通过自定义注解+枚举实现入参字段分组校验
自定义注解 校验器扩展原创 2022-10-23 22:36:34 · 1757 阅读 · 0 评论 -
【每日学设计模式——结构型模式】代理模式
菜鸟教程链接:代理模式概念代理模式在java中的应用非常常见,spring中就大量运用到了各种动态代理与静态代理模式,它和装饰者模式非常类似,都是通过创建包含现有的对象的类实例去访问现有对象的方法,使不兼容或者访问及其复杂的方法可以通过代理类简便访问。它与装饰者模式的区别主要在于装饰者模式重点想要扩展原有方法的功能,而代理模式主要侧重于提供对象访问的通道。优缺点优点:简便被代理类的使用,扩展性高。缺点:实现逻辑可能会复杂,会降低被代理接口的访问速度。适用场景需要代理的场景,如远程代理,防火原创 2022-05-06 20:34:11 · 383 阅读 · 0 评论 -
【每日学设计模式——结构型模式】外观模式
菜鸟教程链接:外观模式概念这个模式其实真的没什么好讲的…只要接触过java开发的,必然是使用过这个模式的。简单来说就是屏蔽实现过程,封装成一个类的接口,通过暴露接口让客户端能够通过简单的调用接口实现复杂过程。也就是java封装的特性。对于Spring的三层架构也是很好的体现,我们将各种逻辑抽离成各种接口方法,外层只需要提供参数即可调用实现多种逻辑。优缺点优点:1、减少系统相互依赖。2、提高灵活性。3、提高了安全性。缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。这也是日常开发中原创 2022-04-30 13:49:34 · 830 阅读 · 0 评论 -
【每日学设计模式——结构型模式】装饰器模式
菜鸟教程链接:装饰器模式概念装饰器模式是基于已有接口,在不更改原接口的前提下来扩展已有接口功能。简单而言就是对于已有接口A的play方法,我们需要有新的扩展,但是该接口正在服役不能直接改动原接口,所以创建一个装饰器模式的包装类,实现A接口,并注入A的实现类作为成员变量,在需要扩展接口上调用成员变量的对应方法,并自由做其他扩展。该模式跟适配器模式的思想十分相同,可以所示对已有类扩展的一体两面性。他俩的区别可以简单做如下概括:两者都是对已有方法实现的扩展,适配器模式会将适配器注入到已有类实现方法中进原创 2022-04-29 17:44:22 · 220 阅读 · 0 评论 -
【每日学设计模式——结构型模式】组合模式
菜鸟教程链接:组合模式概念组合模式非常简单,可以简单理解为类包含属于自身对象组的成员变量,即自己中包含自己,从而构成树形结构的类结构。优缺点优点:1、高层模块调用简单。2、节点自由增加缺点:在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。适用场景递归型树形结构都可以应用到该场景,如文件夹,链表。示例代码public class ListNode { private int value; private List<Node> n原创 2022-04-27 22:07:44 · 436 阅读 · 0 评论 -
【每日学设计模式——结构型模式】桥接模式
菜鸟教程链接:桥接模式概念桥接模式是利用一个作为桥接的接口,将抽象化与实现化解耦,使两者可以独立变化,并且自由组合秤不同的效果。简单的示意图如下:通过将接口注入到抽象类中,作为抽象类的成员变量,即可通过该接口将抽象类的不同实现与接口的不同实现桥接起来,形成多样自由的组合。优缺点优点:扩展性高,灵活抽象和实现完美分离缺点:对系统设计的要求更加复杂适用场景业务对象具有多种组合,且组合的能力与属性可抽象出具体的接口与父类示例代码如菜鸟教程示例:抽象出来的属性作为抽象父类:p原创 2022-04-26 22:29:58 · 184 阅读 · 0 评论 -
【每日学设计模式——结构型模式】 适配器模式
菜鸟教程链接:适配器模式概念适配器模式可以理解为通过不修改父类或接口的情况下,通过子类或实现类组合装载了所需扩展接口的适配器(或直接组合所需扩展接口)的方式,让原来的类或接口可以适配于客户端新的场景。该设计模式不应该应用于设计一个类的过程中,而应该在修改历史代码的过程中使用,使在不修改老代码的基础上扩展新的业务场景,体现了 复合大于继承 这一观点。优缺点优点:提高了类的复用灵活,透明缺点:可能会使类的定义与其运行时体现的功能不一致,系统复杂度提升对原有的实现类有侵入由于 JAVA原创 2022-04-24 23:31:15 · 311 阅读 · 0 评论 -
【每日学设计模式——创建型模式】 建造者模式
菜鸟教程链接:建造者模式概念建造者模式针对于实例创建复杂且或包含繁多组合可能性的类,通过设计一个builder对象,讲类的创建过程交由builder来处理,从而将类复杂的实现和其表现抽离开来。这种模式跟工厂模式的区别在于,工厂模式侧重点在于把类的实例化过程与外部隔离,交由工厂类去执行。而建造者模式的侧重点在于将类复杂多样的实例过程作简化。除了菜鸟教程里面的表示外,还有一种常见的使用场景如下:对于建造者模式,日常开发中接触最多的便是Lombok这一技术,这一技术很好的扩展了创建对象时具有大量可选参数的原创 2022-04-21 23:14:42 · 205 阅读 · 0 评论 -
【每日学设计模式——创建型模式】 单例模式
菜鸟教程链接:单例模式概念单例模式是Java中最常用,也是最简单的设计模式。通过私有化类的构造方法,禁止外部实例化该类对象,而是通过类自身创建一个唯一实例,并提供一个接口给外部使用,保证该类在项目中只有唯一的实例,既保证了类实例的唯一稳定性,也节约了内存资源。枚举是单例模式最常见的使用。可简单将单例模式归纳与以下三点:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须向外提供暴露该实例的接口。优缺点优点:节约资源,避免重复的类对象的创建于销毁避免对资源的多重原创 2022-04-20 23:21:46 · 354 阅读 · 0 评论 -
【每日学设计模式——创建型模式】 抽象工厂模式
菜鸟教程链接:抽象工厂模式概念抽象工厂模式可以简单理解为——工厂类的工厂模式,即不同的参数通过工厂类创建不同的工厂。除了菜鸟教程中举出的完全不同类型的工厂的抽象工厂外,我们也可以创建统一类型不同类别的抽象工厂模式,此时我们似乎拥有了更大的操作空间。例如汽车类可以分为奔驰汽车,宝马汽车,奥迪汽车,每一个品牌下又有不同系列的汽车,则每一个实际系列的汽车可做为一个抽象类Car的子类,我们又可以根据不同系列的汽车创建每个品牌的工厂类BENZFactory、BMWFactory、AUDIFactory,因为每一原创 2022-04-19 22:55:56 · 314 阅读 · 0 评论 -
【每日学设计模式——创建型模式】 工厂模式
菜鸟教程链接:工厂模式概念工厂模式属于创建型设计模式,对于某一类对象,通过工厂模式,我们可以对于客户端屏蔽实现类内部的初始化逻辑,客户端只需要通过名称即可通过工厂类获取到对应的实例化的子类对象。一般配合策略模式使用,通过不同的条件返回不同的子类对象或某一业务接口的不同实现类。示意图:优缺点优点:一个调用者想创建一个对象,只要知道其名称就可以了。扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。屏蔽产品的具体实现,调用者只关心产品的接口。缺点:每次增加一个产品时,都需要增加一个原创 2022-04-18 20:56:19 · 320 阅读 · 0 评论 -
【每日学算法——Day02】队列
1. 数组模拟队列队列本身是有序列表,具有先入先出的特性,可以使用数组或链表来实现。基础构成:maxSize:数组的最大容量,按照约定空出一个容量,最多能存如maxSize - 1个数据。front:队列头索引,初始为-1,指向队列头前一个数据。rear:队列尾,初始为-1,指向队列尾最后一个数据。特殊场景:队列已满: rear = maxSize - 1队列已空: rear = front基础操作:加入数据:(rear < maxSize - 1) re原创 2021-12-07 23:59:04 · 133 阅读 · 0 评论 -
【每日学算法——Day01】稀疏数组
稀疏数组1、介绍定义: 用于存在大量零值或重复值的矩阵数据,通过稀疏数组的方式来压缩出有效数据。格式:总是n行3列,int[] sparsArr = int[n][3],[0] 记录矩阵行数,矩阵列数,有效值数(非零);[1~n] 记录数据所在行,所在列,值。意义:去除了大量无意义的零值数据。通过记录数组一共几行几列,有多少个不同的值,把具有不同值的元素的行列及值记录在一个小规模数组中,从而缩小程序的规模。2、处理方式二维数组转稀疏数组的思路遍历原始的二维数组,得到有效数据的个数sum原创 2021-10-26 23:16:26 · 99 阅读 · 0 评论 -
IO流小结
IO流1.File类File:它是文件和目录路径名的抽象表示文件和目录是可以通过File封装成对象的对于File而言,其封装的并不是一个真的存在的文件,仅仅只是一个路径名而已。他可以是存在的,也可以是不存在的,将来是要通过具体的操作把路径的内容转换为具体存在的。构造方法File(String pathName):通过将给定的路径名字符串转换为抽象路径名来创建新的File实例File(String parent,String child):从父路径名字符串和子路径名字符串创建新的Fi原创 2021-08-24 23:11:02 · 119 阅读 · 0 评论 -
Git学习笔记
Git1. git的优势大部分操作在本地完成,不需要联网完整性保证尽可能添加数据而不是删除或修改数据分支操作非常快捷方便(内部以快照管理,分支操作等于切换指针)与Linux命令全面兼容2. git的结构3. 本地库与远程库的交互团队内协作跨团队协作4. Git命令行操作设置签名:形式用户名:Email地址:作用:区分不同开发人员的身份辨析:这里设置的签名和登陆远程库(代码托管中心)的账号、密码没有任何关系。命令:项目级别/仓原创 2021-08-22 11:51:29 · 112 阅读 · 0 评论 -
IDEA中Debug高阶技巧
不会Debug的程序员……不叫程序员普通DebugF8:进入下一步(若当前停留行是调用方法会直接执行完,不会进入方法体内部)F7:进入下一步,若停留行是方法体会进入F9:放行断点Ctrl + F2:停止Debug(后续程序会执行完毕)方法断点:点在方法声明上,会在执行的方法体第一行停留。可用于一个接口有多个实现类的情况下,断点会停留在执行的实现类上。接口方法上添加断点:实现类停留:异常断点:Ctrl+Shift+F8或点击双红点按钮呼出配置页面,添加所要监听的异常,断点会自动停留原创 2021-08-16 23:45:33 · 951 阅读 · 0 评论 -
IDEA终端替换成git
Setting ===> Terminal ===>Shell Path改为自己git bash.exe文件路径(git安装路径下)原创 2021-08-15 16:06:47 · 220 阅读 · 0 评论 -
IDEA远程Debug
本地配置启动服务器本地debug笔记内容来自B站UP主御风大世界视屏内容,视频教程链接https://www.bilibili.com/video/BV1Vb4y1Q7KJ原创 2021-08-14 12:50:23 · 74 阅读 · 0 评论 -
多线程&线程池
多线程&线程池1. 线程线程的基本概念进程:一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。进程一般由程序,数据集合和进程控制块三部分组成。程序用于描述进程要完成的功能,是控制进程执行的指令集;数据集合是程序在执行时所需要的数据和工作区;程序控制块包含进程的描述信息和控制信息是进程存在的唯一标志。线程:线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小原创 2021-06-27 01:36:21 · 208 阅读 · 0 评论 -
JVM虚拟机优化
JVM虚拟机优化1. JVM的运行参数 jvm中有很多参数可以设置,这样可以使jvm在各种环境中都能够高效的运行。绝大部分的参数保持默认即可。JVM的三种参数类型标准参数:顾名思义,标准参数中包括功能和输出的参数都是很稳定的,很可能在将来的 JVM 版本中不会改变。你可以用 java 命令(或者是用 java -help)检索出所有标准参数。-help:-version:-X参数(非标准参数):非标准化的参数在将来的版本中可能会改变。所有的这类参数都以 - X 开始,并且可以用原创 2021-06-16 00:34:28 · 295 阅读 · 0 评论 -
Java开发手册重点摘录
1. 编码规范命名风格 【强制】抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类命名以他要测试的类的名称开始,以Test结尾。 【强制】包名统一小写,点分隔符之间有且仅有一个自然语义的英文单词。包名统一使用单数形式,若类名有复数含义,可以使用复数形式。 【推荐】在常量和变量的命名中,表示类型的名词放在词尾,提升辨识度。 【推荐】如果模块、接口、类、方法中使用了设计模式,在命名中需要体现出具体模式。 【推荐】接口类中的方法和属性不要加任何修饰符号原创 2021-06-06 19:38:03 · 188 阅读 · 0 评论 -
JDK8新特性——Lambda
JDK8新特性——Lambda函数式编程:形式参数,箭头,代码块(s1,s2) -> { s1 += s2; return s1-s2; }使用前提:有一个接口,接口中有且仅有一个抽象方法必须要有上下文对象才能推导出Lambda对应的接口根据局部变量的赋值的值Lambda对应的接口:Runnable r = () -> sout(“zzz”)根据调用方法的参数的值Lambda对应的接口: new Thread(() - > sout(“xxx”))原创 2021-05-30 00:15:21 · 115 阅读 · 0 评论 -
JDK8新特性——Stream流
Stream流1. 简介特点:流不会储存元素,所以每个Stream流只能使用一次(每次调用方法后都会销毁)流不会修改其数据源,只是在原数据集上定义了一组操作。流执行具有延迟特性,即每当访问到流中的一个元素,才会在此元素上执行这一系列操作。流操作:生成流中间操作(原Stream流销毁,返回一个新流)终结操作(最终操作,不会返回新流)2.方法简介方法描述流的生成方法of()静态方法,返回一个包含参数的流,有两个overload方法,一个接受变长原创 2021-05-29 01:14:10 · 383 阅读 · 0 评论 -
JDK8新特性——Optional工具类
JDK8新特性----玩转Optional工具类1. 基本概念 Java 8 中引入了一个有趣的特性是Optional类,该工具类的引入主要是为了解决空指针异常(NullPointException)。本质上,这是一个包含有可选值的包装类,意味着类本身亦可以有值也可以为Null。2.方法方法描述of()把指定的值封装成Optional对象并返回,如果参数为null,贼会抛出空指针异常(不可以传null值)ofNullable()把指定的值封装为Optional对象并原创 2021-05-20 23:39:33 · 568 阅读 · 0 评论 -
Activiti7工作流引擎 Day 1
Activiti7工作流引擎 Day 11.相关概念工作流:工作流程,事物发展的一个业务过程。就是通过计算机对业务流程自动化执行管理。工作流引擎:一个用于管理和调度流程的应用程序,可以集成并作为程序框架使用,包括流程定义的存储,流程的节点与流程条件判断和调度、流向管理、流程实例管理等功能。工作流系统:如果一个系统具备流程的自动化管理功能,可称为工作流系统。BPM:Business Process Management,是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织原创 2021-04-17 16:50:31 · 144 阅读 · 0 评论 -
Integer对象的比较问题
Integer对象的比较问题Integer a = 1;Integer b = 1;Integer c = 500;Integer d = 500;System.out.println(a == b);System.out.println(c == d);Integer aa=new Integer(10);Integer bb=new Integer(10);int cc=10;System.out.println(aa == bb);System.out.println(aa ==原创 2020-12-02 21:39:45 · 349 阅读 · 0 评论 -
JavaScript系统知识梳理
JavaScript由于新公司前后端不分离,而且使用的自研框架,迫不得已又将快忘光了的JS再次梳理了一遍,在此分享给大家。1.基础概念JS中严格区分大小写。JS中每一条语句以“ ; ”结尾。–如果不写分号,浏览器会自动添加,但是会消耗一些系统资源,而且有时候系统会加错分号,所以必须写。JS中会忽略多个空格和换行,我们可以利用空格和换行对代码格式化。2.基础数据类型字面量:不可改变的值,如常量。可以直接使用,但一般不会直接使用。(Infinity,NaN)变量:可以用原创 2021-03-07 16:04:16 · 395 阅读 · 1 评论 -
Linux基础
Linux零基础学习1.Linux简介1.1 Linux起源1965年,Multics诞生失败1969年,Unix诞生1673年,C语言诞生,Unix重写1991年,Linux诞生1.2 Linux分类目前主要分为Redhat和debian两大类,其中centOS属于Redhat系列,用的最多,因为是社区维护,完全免费。1.3 VM主要特点不需要分机本机可以和虚拟机系统网络通信可以设定并随时修改虚拟机操作系统的硬件系统,可以配置快照(真正服务器没有快照)2.系统分区磁盘原创 2020-12-29 23:42:36 · 461 阅读 · 0 评论 -
关于Java手册对IDEA中换行符和文件字符编码的规范
1.换行符换行符设置为Unix格式长度设置为四个空格2.文件字符编码原创 2020-12-24 16:19:32 · 298 阅读 · 2 评论 -
Maven进阶使用(Jar包冲突解决,拆分和聚合思想,配置从私服下载jar包)
Maven进阶使用1.Maven基础知识简介仓库分类本地仓库远程仓库(私服)中央仓库Maven的优点:统一管理jar包,集成tomcat插件,一键构建。Maven的生命周期清理生命周期默认生命周期站点生命周期项目的启动流程,第一步永远是先去本地仓库找jar包。2. Jar包冲突的解决方式第一声明原则:声明靠上的优先进入项目路径近者优选原则:直接依赖:直接导入的jar包传递依赖:没有直接导入的jar包,可通过项目依赖jar包传递到项目中排除jar包依赖原创 2020-12-09 23:06:30 · 178 阅读 · 0 评论 -
Web前端笔记
Web前端基础1 HTML1.1 HTML简介HTML的概念:超文本标记语言,用于编写网页的HTML的语法要求 :语法特点:文件后缀名是:.html, .htmhtml不需要编译,可以使用浏览器直接打开html不区分大小写由一堆标签组成的:每个标签都是预定义好的,有功能的 ==》 需要什么样的功能,就找什么样的标签开始标签上可以加属性 ==》 对标签做进一步修饰1.2 文字排版标签标题标签:h1~h6横线标签:h原创 2020-12-05 11:00:58 · 228 阅读 · 0 评论 -
MySql基础笔记
MySqlSQL语句分类Data Definition Language简称为DDL,数据定义语言,主要用于数据库和表的管理Data Manipulation Language简称为DML,数据操纵语言,主要用于表的增删改操作Data Query Language简称为DQL,数据查询语言,主要用于表的查询操作Data Control Language简称为DCL,数据控制语言,主要用于用户权限的管理1 DDL1.DDL操作数据库1 创建数据库 create d原创 2020-12-05 10:59:59 · 122 阅读 · 0 评论 -
MyBatis基础笔记
MyBatis1 概念 mybatis 是一个优秀的基于java的持久层(和数据库交互)框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。 mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。 最后mybatis框架执行sql并将结果映射为java对象并返回。采用ORM思想解决了实体和数据库原创 2020-12-02 21:41:52 · 259 阅读 · 0 评论 -
JAVASE基础知识笔记
JAVASE基础知识笔记1、继承子类不可继承父类的构造器,因为子类有自己的构造器;但子类可以继承父类的私有成员(成员变量,方法),只是子类无法直接访问,可以通过setter/getter方法访问父类的private成员变量。当子类继承父类后,发现某些方法不足或不适用,就可以重写该方法,修改为满足自己要求的方法体;子类在重写父类的方法后,如果还需要用到父类该方法的功能,不需要再写一遍,只需要通过super.方法名调用即可。方法重写的注意事项:a.方法重写的前提是有继承关系(有实现关系)原创 2020-12-02 21:41:29 · 212 阅读 · 0 评论 -
原生JDBC、JDBC Utils和Spring JDBCTemplate的使用
JDBCJDBC实现步骤步骤: //1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar 1.复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下 2.右键-->Add As Library //2.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //3.获取数据库连接对象 C原创 2020-12-02 21:40:37 · 364 阅读 · 0 评论