自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RabbitMQ安装过程中执行rabbitmq-plugins enable rabbitmq_management遇到Plugin configuration unchanged问题

RabbitMQ安装过程中执行rabbitmq-plugins enable rabbitmq_management遇到Plugin configuration unchanged问题

2023-03-27 10:43:37 509

原创 Throwable 异常信息转为字符串方便日志记录

Throwable 异常信息转为字符串方便日志记录

2023-03-24 09:47:51 312

原创 java 获取ip

java 获取ip

2023-03-22 10:28:55 152

原创 MD5 加密简单示例

MD5加密工具类。

2023-03-22 10:09:46 121

原创 设计模式-解释器模式

给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。对于一些固定文法构建一个解释句子的解释器。如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。构建语法树,定义终结符与非终结符。构建环境类,包含解释器之外的一些全局信息,一般是 HashMap。编译器、运算表达式计算。1、可扩展性比较好,灵活。2、增加了新的解释表达式的方式。3、易于实现简单文法。

2023-03-14 11:14:33 27

原创 设计模式-组合模式

组合模式又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

2023-03-14 11:00:17 28

原创 设计模式-享元模式

比如,连接池中的连接对象,保存在连接对象中的用户名、密码、连接URL等信息,在创建对象的时候就设置好了,不会随环境的改变而改变,这些为内部状态。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。因为要求细粒度,所以不可避免地会使对象数量多且性质相近,此时我们就将这些对象的信息分为两个部分:内部状态和外部状态。享元模式的主要优点是:相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。示例 扑克牌中的扑克花型种类,

2023-03-14 10:39:56 45

原创 设计模式-外观模式

外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。示例为 公司的组建过程可谓很复杂,有很多事情需要做,如注册公司,银行开户、交税、招聘等等,可按外观模式进行代码架构实现。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。• Facade: 外观角色。定义各子系统角色类,处理复杂事情。定义外外观角色 统一门面入口。

2023-03-14 10:14:22 25

原创 设计模式-责任链模式

职责链可以是一条直线、一个环或者一个树形结构,最常见的职责链是直线型,即沿着一条单向的链来传递请求。链上的每一个对象都是请求处理者,责任链模式可以将请求的处理者组织成一条链,并让请求沿着链传递,由链上的处理者对请求进行相应的处理,客户端无须关心请求的处理细节以及请求的传递,只需将请求发送到链上即可,实现请求发送者和请求处理者解耦。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。要形成链式调用,关键在于每一个处理者中有一个下一个处理者的引用。抽象处理以及具体处理类。

2023-03-14 09:49:03 25

原创 java 对象序列化存储-sqlite

当前遇到的场景是,前端操作一个树结果的列表对象,为了方便前端进行回显,后端少递归处理,直接把列表对象存储到数据库。主要思路为把列表对象进行序列化后存储字符串,然后再进行反序列化。项目中有时会涉及到把自定义对象存储到数据库的情形。此操作也可为对象的深度复制。

2023-03-10 14:15:53 258

原创 设计模式-适配器模式

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。定义SD\TF卡的读取写入接口以及实现类。适配器分 类适配器和对象适配器。

2023-02-27 10:20:17 80

原创 设计模式-备忘录模式

备忘录角色(Memento):用于存储Originator的内部状态,可以防止Originator以外的对象访问。备忘录管理员角色(Caretaker):负责存储。提供管理员备忘录,无法对备忘录内容进行操作和访问。发起人角色(Originator):负责创建一个备忘录,记录自身需要保存的状态,具备状态回滚功能。备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。

2023-02-16 11:52:34 49

原创 设计模式-中介者模式

每一个同事对象在需要和其他同事对象通信时,先与中介者通信,通过中介者来间接完成与其他同事类的通信;抽象同事类(Colleague)角色: 它定义各个同事类公有的方法,并声明了一些抽象方法来供子类实现,同时它维持了一个对抽象中介者类的引用,其子类可以通过该引用来与中介者通信。抽象中介者接口(Mediator)角色:它是中介者的接口,提供了同事对象注册与转发同事对象信息的抽象方法(通信)。具体中介者(ConcreteMediator)角色:实现中介者接口, 是抽象中介者的子类 依赖于同事角色。

2023-02-16 11:15:08 37

原创 设计模式-模板模式

在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

2023-02-13 10:14:10 36

原创 设计模式-原型模式

这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式之一。3、使用原型设计模式可以使代码变的更加灵活,因为当原型类发生变化(增、减属性)时,克隆的对象也会做出相应的改变。1、通过原型模式可以简化创建重量级对象的过程,并提高程序的效率。2、原型设计模式是动态获取对象运行时的状态进行创建对象的。原型模式主要核心为 浅拷贝 深拷贝。

2023-02-13 10:05:25 52

原创 设计模式-代理模式

glib动态代理和jdk动态代理的区别显而易见,但是实现逻辑差不多,cglib代理类是通过实现MethodInterceptor,重写intercept方法,通过生成被代理类的子类来达到代理增强代码的目的;动态代理允许使用一种方法的单个类(代理类)为具有任意数量方法的任意类(真实类)的多个方法调用提供服务,看到这句话,可以容易的联想到动态代理的实现与反射密不可分。从静态代理的代码中可以发现,静态代理的缺点显而易见,那就是当真实类的方法越来越多的时候,这样构建的代理类的代码量是非常大的,所以就引进动态代理.

2023-02-13 09:43:07 45

原创 设计模式-装饰器模式

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。装饰器模式j角色分配符合设计模式的里氏替换原则、依赖倒置原则,从而使得其具备很强的扩展性,最终满足开闭原则。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。装饰模式主要包含四个角色。

2023-02-08 15:02:41 51

原创 设计模式-命令模式

请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。调用者(Invoker)角色:要求命令对象执行请求,通常会持有命令对象,可以持有很多的命令对象。这个是客户端真正触发命令并要求命令执行相应操作的地方,也就是说相当于使用命令对象的入口。具体命令(ConcreteCommand)角色:通常会持有接收者对象,并调用接收者对象的相应功能来完成命令要执行的操作。客户端(Client)角色:创建具体的命令对象,并且设置命令对象的接收者。

2023-02-08 14:49:49 36

原创 设计模式-桥接模式

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。缺点是:由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,能正确地识别出系统中两个独立变化的维度,这增加了系统的理解与设计难度。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。

2023-02-08 14:35:44 34

原创 设计模式-状态模式

状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换。具体状态,持有环境角色,每个子类实现一个与Context 的一个状态相关行为。当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。

2023-02-08 14:26:07 47

原创 设计模式-观察者模式

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式的主要角色如下。

2023-02-08 14:15:23 31

原创 设计模式-迭代器模式

迭代器模式提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。3.容器具体实现角色 与具体迭代器角色。

2023-02-08 14:06:48 30

原创 设计模式-构造者模式

通俗的说,假如你要创建一个人类的对象,那么各个实例的属性不同,也就是人的高矮胖瘦不一样.这个时候可以考虑用构造者模式。是指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。4. 构造者四个角色,如果省掉其中的指挥者和抽象构造者,只有一个具体的构造者,那么久是简单的构造者模式。b.抽象构造者,提供各种方法,和一个返回产品方法。具体构造者实现类,定义了两个实现类。d.指挥者角色,具体操作。c.具体的构造者实现类。

2023-02-08 09:17:04 50

原创 设计模式-策略模式

定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。一个系统有许多许多类,而区分它们的只是他们直接的行为。将这些算法封装成一个一个的类,任意地替换。实现同一个接口。1、诸葛亮的锦囊妙计,每一个锦囊就是一个策略。2、旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。3、JAVA AWT 中的 LayoutManager。1、算法可以自由切换。2、避免使用多重条件判断。3、扩展性良好。1、策略类会增多。

2023-02-06 11:09:30 36

原创 设计模式-单例模式

【代码】设计模式-单例模式。

2023-02-06 10:56:48 34

原创 设计模式-抽象工厂模式

抽象工厂模式把产品子类进行分组,同组中的不同产品由同一个工厂子类的不同方法负责创建,从而减少了工厂子类的数量。1.抽象工厂类,可以生产手机、电脑产品。3.手机、电脑产品类安类型区分。4.安区分后的类型创建工厂之类。2.手机、电脑产品类接口。

2023-02-06 10:40:01 32

原创 设计模式-简单工厂模式

我们把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”。简单来说,简单工厂模式有一个具体的工厂类,可以生成多个不同的产品,属于创建型设计模式。3.定义简单工厂类,根据类型生产不同产品。2.定义产品抽象类的具体产品。

2023-02-06 10:27:58 88

原创 设计模式--工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。4.定义产品接口的实现类产品。4.定义产品接口的实现类产品。2.定义工厂接口的实现工厂。2.定义工厂接口的实现工厂。

2023-02-06 10:00:12 29

原创 java后端实现手动分页

java后端实现手动分页

2023-02-03 13:58:23 1423

原创 Java获取mac地址

java获取mac地址

2023-02-03 13:56:29 432

原创 java实现汉字转拼音完整代码

借助开源库com.belerweb:pinyin4j:2.5.0来实现汉字转拼音。返回结果分两种类型汉字全拼或拼音首字母。1.首先需要引入pinyin4j的包。如代码中使用到其他库,请自行引入。2.定义工具类具体实现。

2023-02-03 13:48:46 309

原创 oracle 导入导出命令 exp\imp 与expdp、impdp

exp sys file=导出文件存放目录 full=y rows=n compress=y direct=y。expdp 用户名/密码@数据库实例名 tablespaces=表空间名 dumpfile=导出文件名。exp 用户名/密码@数据库实例 file=导出文件存放目录 owner=(用户名,用户名)expdp 用户名/密码@数据库实例名 schemas=用户名 dumpfile=导出文件名。impdp 用户名/密码@数据库实例名 schemas=用户名 dumpfile=导出文件名。

2023-02-03 13:36:03 1367

原创 linux安装宋体

etc/fonts/fonts.conf 添加。fc-list :lang=zh|grep 宋体。没有fallback 直接建一个。5. 查看是否有宋体。

2023-02-02 14:21:24 1834

原创 springboot启动步骤简述总结

执行自定义run方法 applicationRunner commandLineRunner。准备上下文环境 并执行初始化方法--第一步时 加载的初始化器。1. 构造SpringApplication应用程序对象。实例化异常报告器 只在springboot启动期间。设置服务端即使没有显示器的情况也能启动。加载初始化器、监听器 启动主方法。springboot 启动过程。设置启动参数 args。设置忽略bean信息。实例化应用程序上下文。

2023-02-02 13:42:22 49

原创 JVM 常用参数总结

设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。-XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。

2023-02-02 13:40:03 79

原创 List集合对象属性去重

【代码】List集合对象属性去重。

2023-02-02 13:37:50 62

原创 windows 下 mysql5.7 安装详情

查看表名是否大小写敏感,windows环境默认不敏感 非windows环境敏感,需在配置文件增加配置。show variables like '%lower_case% ' 为0 敏感 1不敏感。2.下载解压后,在mysq根目录下打开my.ini文件,没有的话则新增此文件。1.官网下载免安装版本,本次使用的版本为5.7.27。4.mysql 根目录下 管理员打开cmd。如不能使用ip连接数据库,则执行一下sql。则在my.ini 的 mysqld增加配置。3.在my.ini文件增加如下配置内容。

2023-02-02 13:33:28 257

原创 windows 安装rabbitmq实用步骤

文章写作前提,在项目中,有后端自动向前端推送消息或者大数据时,websocket明显大数据以及实时性不太友好,由此想到了消息中间件mq。2.现安装ERLANG 配置环境变量ERLANG_HOME = 安装根目录 如 C:\Program Files\erl-23.0。3. 安装rabbitmq后 在\sbin 目录下 后行执行 rabbitmq的相关插件。1.官网下载对应操作系统版本的安装包,注意与ERLANG版本的匹配。因需要前端连接mq,所以多安装stomp协议插件。二、rabbitmq使用。

2023-02-01 14:38:54 400

原创 java自定义注解实现导出excel功能

项目开发时会经常遇到需要把数据导出成excel文档的需求,为提示开发效率,实现了通过在entity上加注解即可使用导出功能。3.业务导出使用时,需设置export方法参数。2.增加工具类辅助注解导出实现。1. 自定义导出注解。

2023-02-01 14:16:28 1111

原创 mybatis-plus Interceptor 拦截器实现查询特殊字符以及特殊字符转义

\* 等特殊字符数据的模糊查询,现总结依据mybatis拦截器实现步骤如下;1. 实现Interceptor 重写intercept方法。2.对查询语句含有like模糊查询时,对查询参数进行转义处理。3. like 转化为对应的正则匹配函数查询。

2023-02-01 14:03:09 1233

rabbitmq 详细介绍ppt

rabbitmq 详细介绍ppt

2023-02-02

java注解方式实现拦截接口重复提交

防止接口重复提交实现原理 1.定义注解,加在接口方法上 2.自定义实现拦截器 拦截校验有此注解的方法,判断距离上次提交时间间隔

2023-02-02

node、npm、yarn环境安装与配置

详细描述 node环境安装与配置 npm环境配置以及仓库配置 yarn环境配置

2023-02-02

java+localdatetime +工具类

提取关于日期时间操作方法,形成工具类,提升开发效率

2023-02-01

空空如也

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

TA关注的人

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