自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式--代理模式

与静态代理类相比,动态代理更加灵活,但每次调用代理方法时,动态代理机制都会创建一个新的代理实例对象,所以速度相对较慢。远程代理(Remote Proxy):为一个位于不同的地址空间的对象提供一个本地的代理对象,这个不同的地址空间可以是本机的不同进程,也可以是网络上的一台远程服务器。在CGLIB的代理实现中,我们使用了Enhancer类来生成代理对象,并通过MethodInterceptor接口的实现来定义在方法调用前后的行为。CGLIB代理是通过继承被代理类来创建代理对象的,因此它不需要接口。

2024-08-27 14:16:28 970

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

在这个例子中,Adapter 类将 RealTwoPinSocket 的功能适配成了 ThreePinSocket 接口所要求的形式,使得原本只能接受三孔插座的电器设备可以通过这个适配器使用两孔插座进行供电。适配器模式(Adapter Pattern)是一种结构型设计模式,它允许一个接口(通常是新的或现有的)与另一个不兼容的接口一起工作。下面,我将通过一个简单的例子来展示适配器模式的应用。假设我们有一个老式的电源插座(两孔插座),但我们想使用一个需要三孔插座的电器设备。然后,我们实现这两个接口。

2024-08-27 09:13:04 526

原创 设计模式--外观模式

*定义:外观模式为子系统中的一组接口提供了一个统一的高层接口,使得子系统更加容易使用。通过定义一个高层接口,使得客户端可以方便地调用子系统中的一组接口,而无需关心子系统内部的复杂结构。结构:外观角色(Facade):这是外观模式的核心部分,也被称为门面角色。外观类为多个子系统对外提供一个共同的接口,使得调用端能够更容易地与系统进行交互。子系统角色(Subsystem):这些是实际执行具体任务的类或模块。它们可能包含多个类和更复杂的逻辑,对于客户端来说,直接与这些子系统交互可能会非常复杂。

2024-08-27 09:10:08 673

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

在这个例子中,SimpleCoffee 是具体的组件,CoffeeDecorator 是装饰器角色,而 MilkCoffee 和 SugarCoffee 是具体的装饰器,它们给咖啡添加了新的功能(加奶泡、加糖)而不需要修改 SimpleCoffee 的代码。假设我们有一个咖啡类,它提供基本的咖啡类型(如美式、拿铁),我们想要通过装饰器模式给咖啡添加额外的功能,比如加奶泡、加糖等。装饰器类:继承自装饰器角色类,它包含一个指向组件对象的引用,并定义了一个与组件接口一致的接口。装饰器模式的主要组成部分。

2024-08-26 17:06:48 320

原创 设计模式-工厂模式

抽象工厂模式(Abstract Factory Pattern)是工厂模式的一种,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。在抽象工厂模式中,客户端不依赖于产品类实例是如何被创建、组合和表达的,只依赖于抽象工厂的接口。这提供了高度的灵活性和可扩展性,使得添加新的风格(例如Linux风格)变得简单,只需添加新的具体产品类和工厂类即可。以下是一个使用抽象工厂模式的简单案例,我们将创建一个图形界面的应用程序,这个应用程序支持两种风格的按钮和文本框:Windows风格和Mac风格。

2024-08-21 16:19:30 355

原创 设计模式--组合模式

在这个例子中,Adapter 类将 RealTwoPinSocket 的功能适配成了 ThreePinSocket 接口所要求的形式,使得原本只能接受三孔插座的电器设备可以通过这个适配器使用两孔插座进行供电。适配器模式(Adapter Pattern)是一种结构型设计模式,它允许一个接口(通常是新的或现有的)与另一个不兼容的接口一起工作。下面,我将通过一个简单的例子来展示适配器模式的应用。下面是一个使用组合模式的简单案例,我们将构建一个文件系统的表示,其中可以包含文件夹(组合对象)和文件(叶子对象)。

2024-08-19 16:20:50 665

原创 docker-compose 部署nginx和jdk步骤

*

2024-03-14 19:23:15 498

原创 Gson(List<Object>转String 、String转List<Object>)

要在Java项目中使用Gson库,你需要添加相应的依赖项。这样,你就可以在Java项目中使用Gson库来处理JSON数据了。Gson是一个功能强大的JSON解析器,它可以帮助你轻松地将Java对象与JSON格式之间进行转换。**

2024-03-06 10:23:29 835

原创 事务隔离级别

*

2024-02-28 15:45:40 237

原创 BigDecimal比较大小

BigDecimal比较大小方法:使用。flag = -1,表示b小于a;flag = 0,表示b等于a;flag = 1,表示b大于a;实际应用中直接跟0比较就可以了,

2024-02-20 11:19:14 271

原创 org/springframework/boot/maven/RepackageMojo has been compiled by a more recent version of the Java

*因为之前有些模块的打包插件的版本也没有添加是可以正常使用的,但是今天突然不行了,后来发现spring boot 3.0版最近正式发布了,3.0版是基于java 17 的,不指定的话,默认引用最新的导致这种问题的发生,所以大家做的时候,所有模块的打包插件的版本一定要指定一下,避免出现这种问题,当然这个版本号最好在总的pom文件中定义一下,子模块中直接引用就可以了,不用在每个子模块中一一定义了。

2023-11-09 14:56:11 1179

原创 MyBatis resultMap中collection过滤空字段

以上代码会过滤掉id和name的数据加入列表,实现了resultMap中collection过滤空字段的功能。在使用MyBatis查询数据时,返回值可以定义为resultMap。如果返回的对象中有列表,还可以使用collection标签进行定义。notNullColumn属性可以设置多个字段,用,分隔。

2023-09-01 11:44:20 415

原创 内存分页 || 集合拷贝

集合拷贝及内存分页

2023-07-19 11:23:46 352

原创 读取nacos配置中心的list对象数据

*

2023-04-18 14:12:34 3621 1

原创 SpringBoot 401 Unauthorized问题

当我们使用了Spring-security 之后,Spring Security默认对所有路径进行权限认证,并且提供默认的登陆页面。如果系统最终没有使用到Spring Security,将该依赖移除即可解决问题;

2023-02-22 10:20:54 2250

原创 优雅处理封装返回

大家写代码可能会使用try…catch处理异常,当然spring mvc 架构中各层会出现大量的try {…} catch {…} finally {…}代码块,不仅有大量的冗余代码,而且还影响代码的可读性。下面推荐大家这样处理,既方便代码也显得更加规范优雅,真的香的不行。代码复制到项目中通过简单的配置即可实现可以灵活的根据自己的业务异常进行更细粒度的扩展以及异常的处理返回封装统一返回结果类自定义异常封装类错误枚举类全局异常处理类测试1:封装实体返回结果类。

2023-02-03 09:42:35 205

原创 枚举service层异常代码控制输出

在service层业务代码控制中,在代码中简洁控制代码,报错提示明显意见,在这里我用枚举实现。为了代码优雅,尽量减少"CODE"这样的代码出现,尽量定义常量进行拼接;

2023-01-30 15:22:15 188

原创 字典转换数据

枚举实现

2022-12-07 11:28:03 113

原创 树结构查询逻辑实现

【代码】树结构查询逻辑实现。

2022-11-23 08:58:18 131

原创 idea git 分支合并 和 insert into...select用法

*

2022-11-16 08:48:26 437

原创 MyBatis缓存

*1.1 什么是缓存 [ Cache ]?存在内存中的临时数据。将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。为什么使用缓存?减少和数据库的交互次数,减少系统开销,提高系统效率。什么样的数据能使用缓存?经常查询并且不经常改变的数据。**

2022-10-26 08:52:25 101

原创 如何在代码中使用pageHelper分页插件

如果代码在进入 Executor 前发生异常,就会导致线程不可用,这属于人为的 Bug(例如接口方法和 XML 中的不匹配,导致找不到 MappedStatement 时), 这种情况由于线程不可用,也不会导致 ThreadLocal 参数被错误的使用。使用这种调用方式时,你可以使用RowBounds参数进行分页,这种方式侵入性最小,我们可以看到,通过RowBounds方式调用只是使用了这个参数,并没有增加其他任何内容。params 提供的几个参数都可以这样使用。

2022-10-11 08:59:19 2210

原创 ArrayList

源码分析解答刚才的问题在哪里。

2022-09-20 15:30:09 1066

原创 自定义简单字符串处理类

【代码】 自定义简单字符串处理类。

2022-09-14 09:10:16 128

原创 抽取工具类

*1.权限获取工具类**

2022-08-10 09:15:46 279

原创 JDBC从连接池获取连接(Druid连接池)

@paramurl数据库连接串。*@paramdriver数据库驱动。*从druid数据库连接池获取数据库连接。*@paramusername用户名。*@parampassword密码。*@paramps预处理对象。*@paramrs结果集。*@paramconn连接。*@return连接。*数据库链接工具类。...

2022-07-25 11:14:43 802

原创 redis集群搭建(一主两从三哨兵)完整版带验证报告

基于docker-compose搭建主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性。redis.conf可以在redis.io官网下载对应版本的redis.conf文件,但需要注意修改的地方在下面标出。拉取镜像5.0.12在/usr/local/docker/redis对应的目录启动redis服务器下可以查看是否启动成功。两台服务器也同样可以根据上述命令进行查看。如果启动不成功可以通过查看到对应的启动日志,方便我们定位错误。.........

2022-07-18 16:02:00 2832

原创 SLF4J: Class path contains multiple SLF4J bindings.

spring-boot项目,启用log4j2后,报以下错误:大致的解释原因如下:一个接口,被两个实现类实现了。然后,程序在启动获取时,只想获取一个。这个接口是:两个实现类分别是:与可以在idea中双击shift, 然后输入StaticLoggerBinder,即可定位到两个实现类。然后在实现类中,按alt + f1 再回车,便可以定位到引用的包。问题解决思路:打开pom.xml,在文件内容上,右键,选择 Diagrams -> show dependencies… ,ctrl + f 输入log4j-

2022-07-13 15:47:55 2125

原创 jdbc连接hive,前端传入表名库名参数,后端解析展示表数据

jdbc连接hive数据库hive驱动依赖添加这里需要注意版本,可能有些版本不一定可以连接成功。逻辑实现层业务代码:动态拼接sql进行解析展示数据postman测试验证:这里有个点就是,前端传入的库名表名是动态的,我们不可能提前知道表里面的字段信息以及相关的表结构,这个我们借助进行相关的业务逻辑处理得到需要的信息。举例如下:1、得到查询结果,一个数据集2、得到结果集(rs)的结构信息,比如字段数、字段名等3、使用rs.getMetaData().getTableName(1))就可以返回表名

2022-07-12 14:12:32 946

原创 java实现两个日期之间相差天数

两个日期之间相差天数其实很简单,一个方法就可以实现这个需求,传入Date类型的时间数据就可以。demo:控制台输出:

2022-07-01 10:00:57 3068

转载 sql优化和索引常见情况

一、SQL语句及索引的优化SQL语句的优化索引的优化/如何避免索引失效二、数据库表结构的优化:使得数据库结构符合三大范式与BCNF三、系统配置的优化四、硬件的优化在开始介绍如何优化sql前,先附上mysql内部逻辑,让大家有所了解(1)连接器: 主要负责跟客户端建立连接、获取权限、维持和管理连接(2)查询缓存: 优先在缓存中进行查询,如果查到了则直接返回,如果缓存中查询不到,在去数据库中查询。MySQL缓存是默认关闭的,也就是说不推荐使用缓存,并且在MySQL8.0 版本已经将查询缓存的整块功能

2022-06-21 09:43:10 217

原创 docker笔记

一、安装Docker二、配置镜像加速服务三、Docker引擎和镜像的相关操作四、容器的相关操作五、Docker数据卷六、Dockerfile七、Docker-composefirewall-cmd --add-port=9100/tcp --permanent重启防火墙docker基础命令总结.........

2022-06-20 11:42:50 215

原创 jenkins | touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log‘: Permission denied

docker-compose 运行后报错:问题分析:与默认目录()的权限问题需要修改下目录权限, 因为当映射本地数据卷时,此时的用户权限是root,即/usr/local/docker/jenkins/ 权限为root,但是挂载卷到容器内部,此时jenkins的权限为为1000。执行如下命令就可以解决。正常初始化,须记住初始密码!!!......

2022-06-15 10:19:46 2954 2

原创 根据url获取mysql数据库相关信息

业务场景:接口方法:impl:业务实现controller:

2022-06-15 09:16:16 1417

原创 @MapKey和java解析前端传入的sql

一:基于xml实现dao层mybatis的xml文件二:基于注解实现dao层controller层:测试类:Mybatis官方文档的对该注解的解释

2022-06-10 10:27:30 275

原创 idea恢复被覆盖的本地未提交代码

git 恢复本地被覆盖未提交的代码

2022-06-09 17:07:53 2338

原创 list.get(0) 和list.get(i)的区别

list

2022-06-09 09:17:07 1319

原创 docker容器ip分配问题

docker ip分配

2022-06-08 15:23:59 4268

原创 命令行mvn打包的时候报错:No compiler is provided in this environment. Perhaps you are running on a JRE

maven项目打包出错解决

2022-06-03 10:10:53 6861 1

原创 redis集群主从复制bug:从机出现master_link_status:down提示,显示主机是down的状态,主机显示没有从机挂载

**bug:从机出现master_link_status:down**原因分析:这里主要是因为redis设置了密码可以在redis.conf文件里面配从不配主也就是:将master和slave的密码配置相同,然后将slave的配置文件中的masterauth属性进行填写,将master的密码写上去即可使用命令slaveof或者是replicaof对master进行指定,但是最好用replicaof指定挂载特别注意点:(踩坑经验)不管redis有没有密码,配置文件中需要将bind设置为0.0.0

2022-05-31 09:01:03 2072 1

空空如也

空空如也

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

TA关注的人

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