自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 富文本生成word并在线预览(附源码)

记录富文本内容生成word并在线预览碰到的问题,以及最终的解决方案。

2022-08-16 09:12:40 6478 1

原创 UML统一建模语言

一、简介统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。通过使用规定的标记来表示类之间的关联关系,可通过UML类图清楚的表达软件之间的联系。UML立足于对事物的实体、性质、关系、结构、状态和动态变化过程的全程描述和反映。UML可以从不同角度描述人们所观察到的软件视图,也可以描述在不同开发阶段中的软件的形态。二

2022-08-16 08:50:05 542

原创 Springframework5.3.x源码构建问题记录

这两天准备看看spring的源码,于是从GitHub上下载了spring的源码。具体的下载步骤就不说,基本都会。这里推荐一个GitHub的镜像网站,GitHub: Where the world builds software · GitHub (fastgit.org),速度比较快,避免了GitHub时不时连不上、速度很慢的问题。从仓库把代码clone下来后,因为clone的默认分支是main主分支,在编译前记得将代码分支切换到5.3.x。5.3.x用的Gradle7.2版本构建的,推荐和sp

2021-11-17 08:36:28 741

原创 Spring事务传播

一、事务是什么?事务是指作为单个逻辑工作单元执行的一系列操作,要么完整的执行,要么全部失败地不执行。事务是保证一系列操作的结果一致,要么成功,要么失败,不会出现部分成功、部分失败的结果。二、事务的特性事务拥有四大特性,俗称ACID。1.原子性(Atomicity)事务必须是原子工作单元;对于其修改的数据,要么全都执行,要么全都不执行。2.一致性(Consistency)事务在完成时,必须使所有的数据都保持一致性。3.隔离性(Isolation)多个事务并

2021-07-26 22:13:22 329

原创 设计模式——观察者模式原理及代码实现

一、简介 观察者模式(Observer),又加发布订阅模式(Public/Subscribe),定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。二、结构图三、代码实现1.Subjectpublic interface Subject { List<Observer> observers = new ArrayList<>(); d...

2021-07-25 12:24:23 584

原创 设计模式——迭代器模式原理及代码实现

一、简介 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露该对象的内部表示。二、结构图三、代码实现1.Iteratorpublic interface Iterator<T> { T first(); T next(); boolean isDone(); T currentItem();}2.ConcreteIteratorpublic class ConcreteIte...

2021-07-18 10:02:46 306 1

原创 设计模式——访问者模式原理及代码实现

一、简介代理模式(Proxy):为其他对象提供一种代理以控制这个对象的访问。二、结构图

2021-07-18 08:28:33 305 1

原创 设计模式——命令模式原理及代码实现

一、简介命名模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。简而言之就是将命令调用者和命令执行者通过命令对象解耦。二、结构图三、代码实现1. Commandpublic abstract class Command { protected Receiver receiver; public Command(Receiver receiver) { thi

2021-06-27 18:44:26 400 1

原创 设计模式——模板模式原理及代码实现

一、简介模板模式(Template),又叫模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。简单来说,模板方法就是在抽象类或接口中定义方法的模板,具体的实现交由具体的子类。二、结构三、代码实现1.AbstractClasspublic abstract class AbstractClass { public abstract void operation1(); publ

2021-06-22 20:36:40 419

原创 设计模式——策略模式原理及代码实现

一、简介策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。用接口或抽象类封装算法,具体的实现方式由子类来实现。使用对象引用接口、抽象类的对象,具体的实现由实现类决定,后面的子类的更换,也不会对使用类有影响。二、结构图三、代码实现1. Strategy,算法封装类public interface Strategy { void method();}2. ConcreteStrategy

2021-06-21 22:11:02 260

原创 设计模式——代理模式原理及代码实现

一、简介代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。二、结构

2021-06-10 20:31:22 256

原创 设计模式——享元模式原理及代码实现

一、简介享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象。二、结构图三、

2021-05-30 17:56:31 200

原创 设计模式——职责链模式原理及代码实现

一、简介职责链模式(Chain of Responsibility):使多个对象有机会处理请求,从而避免请求的发送者和接受者之前的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理为止。职责链模式通常每个接受者都包含对另一个接受者的引用。如果一个对象不能处理该请求,那它会把相同的请求传递给下一个接受者,以此类推。适用于多个对象可以处理一个请求的场景,例如:多级请求、审批流程、拦截器等。二、结构图Handler:抽象的处理者,定义一个处理请求的接口,同时还有另外

2021-05-01 21:41:39 224 1

原创 设计模式——外观模式原理及代码实现

一、简介外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一系统更加容易使用。二、结构图三、代码实现1.Facadepublic class Facade { private SubSystemOne systemOne; private SubSystemTwo systemTwo; private SubSystemThree systemThree; private SubSystemFo

2021-04-28 06:44:39 326

原创 设计模式——组合模式原理及代码实现

一、简介组合模式(Composite Pattern),将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。在对象关系之间存在上下层级结构时使用,可以忽略组合对象和单个对象的不同,统一地使用组合结构中的所有对象。基本对象可以被组合成更复杂的组合对象,而这个组合对象又可以被组合,这样就可以递归下去。二、结构图Component:组合中的对象声明接口,在适当情况下,实现所有类公共接口的默认行为。声明一个接口用于访问和管理Compone

2021-04-21 22:26:35 571

原创 设计模式——装饰者模式及代码实现

一、简介装饰者模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式是为已有功能动态地添加更多功能的一种方式。它把每个要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象,因此,当需要执行特殊行为时,客户代码就可以在运行时根据需要有选择地、按顺序地使用装饰模式功能包装对象。二、结构图Component: 被装饰的接口,可以给这些对象动态的添加职责。ConcreteComponent:被装饰的实现类,定义了具体的对象,

2021-04-18 23:03:02 319

原创 设计模式——桥接模式原理及代码实现

一、简介桥接模式(Bridge),将抽象部分与它的实现部分分离,使它们都可以独立地变化。实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们单独变化,减少它们之间的耦合。当有多个维度划分关联时,尽量用合成/聚合的关系,尽可能少的使用继承关系,减少它们之间的耦合。因为继承关系是强依赖,当父类有变化时,子类就要随之变化。合成/聚合复用原则(CARP):尽量使用合成/聚合,尽量不要使用类继承。二、结构图三、代码实现Implementor:public

2021-04-13 22:58:36 500

原创 设计模式——适配器模式原理及源码实现

一、简介适配器模式(Adapter):将一个类的接口转化成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类一起工作。通俗讲,就是将原本不能直接调用的接口,通过新的接口或类进行封装后,提供新的接口在内部进行转化,从而使用之前的接口。实现方式分为三类:类适配器模式、对象适配器模式、接口适配器模式。三者的区别在与Adapter和Adaptee的关系以哪种方式进行关联。二、结构图三、代码实现实现:将220V电压转换为5V电压对手机充电。1、A

2021-04-12 22:57:41 275

原创 设计模式——建造者模式原理及实现

一、简介建造者模式(Builder Pattern),又叫生成器模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。通俗来讲,就是将对象的构建过程抽象出来,可用不同的实现类来实现对象的不同特性,达到构建和表示分离的目的。建造者模式主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。二、结构图Product(产品类):具体的产品对象。Builder(抽象建造者):为了创建Product对象的各个部件指定

2021-04-11 21:21:43 427 1

原创 设计模式——原型模式、浅拷贝、深拷贝代码实现

原型模式:一个对象提供方法复制本身对象,从而生成新的对象。浅拷贝和深拷贝:说到原型模式,就不得不说浅拷贝和深拷贝。在对象进行复制时,同时会将源对象中的元素复制到新的对象中,其中元素分为值类型和引用类型。浅拷贝和深拷贝的共同点在于都将值类型的元素复制到新对象中;区别点在于浅拷贝只是将复制了源对象中元素的地址,也就说新对象中的引用类元素和源对象的元素指的是同一个对象。而深拷贝是将引用类的元素重新在创建一个对象,新对象和源对象的引用类元素是不同的对象。浅拷贝代码实现:public cla

2021-04-11 10:19:04 178

原创 设计模式——简单工厂、静态工厂、工厂方法、抽象工厂模式源码

工厂模式:将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目依赖关系的解耦,从而提高项目的扩展性和维护性。简单工厂模式:工厂类中包含了必要的逻辑,有工厂类中的选择条件来判断实例化相关的类。接口类:public interface Operation { Long operate(long a, long b);}实现类:public class AddOperation implements Operation{ @Override.

2021-04-10 23:02:30 382 2

原创 英语长语法难句——状语和状语从句

2021-04-06 07:49:35 140

原创 英语语法长难句——定语和定语从句

定语1、什么是定语?定语就是修饰名词的成分。只要听到…的+名词,…的就是修饰这个名词的定语成分。2、定语的成分1) 形容词作定语The innocent nightingale died. The nightingale brave and innocent died.2)名词修饰名词The singing of nightingale can make the rose bloom.3)介词短语作定语The nightingale out of the window h

2021-03-29 22:33:49 1063

原创 英语语法长难句——名词性从句

1.名词充当的成分:1)主语The movie looks terrific.2)宾语I admire his mother.3)表语Gump is a man.4)同位语:用来解释名词的成分。只要在作文中见到名词,都可以有意识的在后面加同位语,对该名词进行补充说明。 名词 代词 非谓语动词 从句 I enjoy the part, the beginning.I like Eason, a well-known singer from

2021-03-27 16:04:35 1179

原创 英语语法长难句——并列句

一、并列句:连词连接两个句子。将多个句子连成一个句子都有:独立主格 并列句 从句二、常见的并列连词:平行关系:and、not only…but also、similarly、equally、likewise、at the same time、in the meanwhile 转折关系:but,、yet、while、whereas、however、nevertheless、on the contrary、conversely、unexpectedly、unfortunately、by

2021-03-25 21:47:18 2048

原创 英语语法长难句——简单句

英语句子必须具备主谓结构,并且主语一定是谓语动词的发出者,如果有宾语的话,宾语一定是主语的承受者。一、英语句子的基本结构:1、主谓2、主谓宾谓语:实义动词(有实际意义的动词)3、主谓(系)表谓语:系动词。be 感官动词: look(=seem=aqqear)、smell、taste(have taste for something喜爱什什么事情)、sound、feel 变化:become、get、turn、grow、fall 保持:keep、stay、remain、sta.

2021-03-24 22:54:36 816

原创 单例模式八种常用实现(附源码)

单例模式:采用一定的方法保证在整个软件系统中只会生成一个实例。1. 饿汉式-静态常量public class SingleTonTest01 { private final static SingleTonTest01 test01 = new SingleTonTest01(); private SingleTonTest01() { } public static SingleTonTest01 getInstance() { return

2021-03-19 07:21:32 149 1

原创 设计模式概述

一、概述:设计模式的本质是提供软件的维护性、通用性和扩展性,并降低软件的复杂性。 某类问题的通用解决方案,设计模式代表了最佳实践。模式不是代码,而是某类问题的通用解决方案。 设计模式不局限与某种语言。 二、目的:代码重用性 可读性 扩展性 可靠性 使程序呈现高内聚、低耦合的特性三、七大原则:单一职责原则:一个类应该只负责一项职责。接口隔离原则:尽量将接口方法分离成单独的功能,避免出现一个接口类中多个功能不同的方法。依赖倒转原则:高层模块不应该依赖底层模块,二

2021-03-18 23:14:18 143

原创 Java网络编程(一):总览

总体概括之前在看netty的时候,看着netty的源码,突然感觉有好多基础的网络的知识都不是很清楚。因此补一下基础的网络知识, 大致的描述一下该过程中都经历了哪些,以便加深印象,同时巩固一下网络方面的知识。先上一张大体相关的参考图,其中涉及的知识,后续慢慢讲到。由于日常常用的便是通过浏览器进行web请求,后续便以浏览器的请求流程为例,简述在浏览器的访问过程中的都经历了什么,涉及了哪些方面的知识。由于使用的是HTTP、TCP/IP协议,以下就以它们为主,简述流程。请求流程由web.

2020-09-25 16:52:12 122

原创 SpringBoot集成Mybatis注解版

目录1、导入依赖2、实体类3、Mapper类4、controller5、启动类6、启动成功、访问路径简单记录一下spingboot集成Mybatis注解版过程。1、导入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance

2020-07-26 20:26:52 140

原创 Tomcat启动报错:Error: Could not find the main class: org.apache.catalina.startup.Bootstrap

记录一个奇葩的错误。公司的应用部署在华为云上,部署在Tomcat下,用Xshell连上服务器后,启动Tomcat时报错:Error:Could not find the main class: org.apache.catalina.startup.Bootstrap在尝试换了多个tomcat后,依然是报上面那个错。折腾了几个小时后,让运维人员上去看看,然后几分钟后,运维人员说服务启动,我就一个反应“What”,追问咋起的,他说就直接startup的命令就行了,也没有遇到我碰到的问题。然

2020-07-22 16:50:02 1203

原创 哈夫曼树(最优二叉树)原理及实现

目录简介相关概念哈夫曼树实现实现原理:实现代码:代码实现步骤:简介哈夫曼树又被称为最优二叉树,是一类带权路径最短的二叉树。哈夫曼树是二叉树的一种应用,在信息检索中很常用。相关概念节点之间的路径长度:从一个节点到另一个节点之间的分支数量称为两个节点之间的路径长度。 树的路径长度:从根节点到树中每一个节点的路径长度之和。 节点的带权路径长度:从该节点到根节点之间的路径长度与节点上权的乘积。 树的带权路径长度:树中所有叶子节点的带权路径长度之和。哈夫曼树实现

2020-07-12 17:49:58 1604

原创 二叉树原理及实现

目录二叉树介绍为什么会有二叉树?什么是二叉树?什么是满二叉树?什么是完全二叉树?二叉树的特点:二叉树实现方式二叉树的顺序存储二叉树的二叉链表存储二叉树的三叉链表存储二叉树介绍为什么会有二叉树?对于普通树来说,除了根节点之外,其余子节点的个数并没有要求,遵循的规律太少,程序控制起来较复杂,因此限制了它在实际应用中的使用。由此,为了在实际应用中更好的使用树结构,便在普通树的基础上增加了一些限制,让每一棵树中的每个节点最多只能包含2个子节点,而且严格区左子节点.

2020-07-11 10:36:00 871

原创 树结构以及简单实现

树简介树结构,一种非线性结构,指的是N个有父子关系节点的有限集合。树中任一节点可以有0或多个子节点,但只能有一个父节点。根节点是一个特例,根节点没有父节点,叶子节点没有子节点。树中每个节点既可以是其上一级节点的子节点,也可以是下一级节点的父节点,因此同一个节点可以既是父节点,也是子节点。如果按节点是否包含子节点来分,节点分成以下两种:普通节点:包含子节点的节点。 叶子节点:没有子节点的节点,因此叶子节点不可作为父节点。如果按节点是否具有唯一的父节点来分,节点又可分为如下两种:根节

2020-07-05 16:08:58 462

原创 队列(queue)原理及实现

队列简介队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,只允许在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。根据其特征,把队列简称为先进先出(FIFO)的线性表。队列的常用操作如下:初始化:通常是一个构造器,用于创建一个空队列。 返回队列的长度:该方法用于返回队列中数据元素的个数。 加入元素:向队列的rear端插入一个数据元素,队列的长度+1。 删除元素:从队列的front端删除一个数据元素,队列长度-1,该方法通常返

2020-07-04 15:40:29 1322

原创 Mybatis集成springboot批量更新报错

错误描述:Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'update mem_dashboard_widget SE

2020-07-02 11:07:52 435

原创 栈(Stack)原理及实现

目录栈概述顺序结构实现链表结构实现栈概述栈是一种数据结构,它代表只能在某一端进行插入、删除操作的特殊线性表,通常就是在线性表的尾端进行插入、删除操作。允许进行插入、删除操作的一端被称为栈顶(top),另一端则被称为栈底(bottom)。归纳起来:栈就是一种后进先出(LIFO)的线性表。栈常用操作:初始化:通常是一个构造器,用于创建一个空栈。 返回栈的长度:该方法用于返回栈中数据元素的个数。 入栈:向栈的栈顶插入一个数据元素,栈的长度+1。 出栈:从栈的栈顶删除...

2020-06-12 19:08:21 825

原创 线性表(Linear List)原理及实现

目录前言一、线性表概述二、顺序存储结构三、链式存储结构3.1 单链表3.2 循环链表3.3 双向链表四、顺序和链式对比前言 编程的本质就是对数据的处理。由于实际业务的数据之间存在复杂的逻辑关系,应用程序则需要分析这些数据的逻辑结构,并采用合适的物理结构来存储这些数据,并以此为基础对这些数据进行响应的操作。 从数据的逻辑结构来分,数据元素之前存在的关联关系被称为数据的逻辑结构。归纳起来,大致有一下4类基本的逻辑结构:集合:数据元素之间只有“同属于一个...

2020-06-06 21:02:11 3143

原创 微服务之服务注册中心Eureka简介配置

目录一、简介二、创建Eureka服务端三、创建客户端四、集群安装一、简介不管是单体架构拆分而来,亦或是一开始划分出边界的微服务架构,总之,在服务变多的时,服务之间的治理便会变得很复杂,以及后续服务调用、限流、熔断等,都需要一个服务注册发现的框架来作为基础。Spring Cloud Eureka 是对Netflix公司的Eureka的二次封装,它实现了服务治理的功能。Eureka分为服务器、客户端两部分。服务器用作服务注册服务器。客户端是一个java客户端,用来简化与服务器的交

2020-05-28 20:49:07 495

原创 Nginx简介及配置实战

一、简介Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,目前应用于各种网站应用。Nginx转为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受起高负载的考验,有报告表明能支持高达50000个并发数。二、应用场景1、反向代理...

2020-05-10 18:50:05 533

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除