自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 策略模式-大道至简

只说策略模式最干货的部分

2023-12-10 20:35:21 360

原创 使用@RequestBody传递数据变为LinkedHashMap解决方案

给出了一种使用@RequestBody传递数据变为LinkedHashMap问题的解决方案,并做出了相关解释。

2023-05-15 01:04:21 1204 1

原创 MacOS下鼠标双击触发键盘按下“c“键事件解决办法

MacOS下鼠标双击触发键盘按下"c"键事件解决办法,推测与「有道词典」的「划词」功能有关。

2023-02-15 20:41:00 615

原创 无法向Nacos服务器注册服务问题的解决方案

浏览器可以访问Nacos控制面板,代码却无法连接Nacos的问题的解决方案。

2023-01-06 23:27:46 7837 4

原创 MacOS版本更新后git无法使用解决方案

MacOS版本更新后git无法使用问题的解决方案

2022-11-01 10:59:43 1167

原创 java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter解决方案

java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter解决方案

2022-07-11 22:20:46 342

原创 一种自定义注解的用户鉴权方式

一种自定义注解的用户鉴权方式

2022-07-11 22:14:33 600

原创 java.lang.IllegalArgumentException: Parameter Maps collection does not contain...解决方案

java.lang.IllegalArgumentException: Parameter Maps collection does not contain value for java.lang.String 解决方案

2022-06-20 21:02:12 1067

原创 使用Myabtis-generator生成的数据表与预期不符

使用Myabtis-generator生成的数据表与预期不符的解决方案

2022-06-20 20:23:05 173

原创 关于临时搭建的收作业系统的记录

一次临时搭建项目,及快速迭代的记录。

2022-06-14 17:57:33 467

原创 SpringBoot预检请求跨域问题解决方案

目录先说结论问题分析技术说明问题出现时情况问题理解为解决的问题参考文章:先说结论增加一个过滤器类即可:@Component@Order(Ordered.HIGHEST_PRECEDENCE)public class CorsFilter implements Filter { private static final String OPTIONS = "OPTIONS"; @Override public void doFilter(ServletRequest req

2022-05-25 01:36:06 1737

原创 java与Mysql的8小时时差问题

java与Mysql的8小时时差问题写在前面:我所使用到的是SpringBoot,使用Mybatis连接的MySQL8,同时使用了druid连接池。解决方法如果是低版本的MySQL,可以尝试配置serverTimezone = CTT对于高版本的MySQL可以删除serverTimezone = GMT(或者UTC之类的)配置。高版本默认即可,如果使用GMT等,可能会出现时差问题,如果此时更换配置为CTT,可能引发如下异常,从而使得数据库连接失败:Unknown time-zone ID CTT

2022-05-07 23:30:45 1708

原创 使用MySQL如何查询一年中每月的记录数

文章目录在MySQL中统计某一事项在每月中的记录数先说结论查询结果思路及SQL解释1. 如何以月份划分2.获取每月数据3.统计每月数据4.统计值与月份相对应5.总体整合结语在MySQL中统计某一事项在每月中的记录数以下演示将在下表数据中进行:其中:id为主键用于表的连接;value1为需要统计的主体,如用户等;date为记录日期。先说结论SELECT tmp.value1 AS `value1`, MONTH(SUBSTRING_INDEX(tmp.ct, ',', 1)) AS

2022-03-10 22:10:26 7441

原创 Mybatis TooManyResultsException问题可能原因及解决方案

Mybatis TooManyResultsException问题可能原因及解决方案可能原因配置文件的对应语句中使用了resultType而非resultMap对应的interface中的返回值并非使用List数据库问题解决方案更改对应的标签,如:查看对应的Mapper接口中的方法,将其返回值改为List(如果希望返回多行)数据库问题数据库中可能存在重复数据,请检查数据库中的数据。查询结果应当是多行但仅想获取其中一项(如最大值),可以使用limit语句如有其他问题,欢迎补

2022-03-06 21:53:47 1474

原创 Springboot后端返回数据时差问题

问题背景在使用SpringBoot开发的后端系统返回数据(包含Date类型的数据)时,返回结果与实际希望的结果差一天(最后发现是8小时)可能出错的部分如下:数据库存储数据错误(可直接查询数据库数据进行排查,查询后发现并无错误)java从mysql中读取时出现时差问题(debug发现,并无此问题)在执行业务逻辑时时间被更改(业务逻辑无修改时间部分)java返回给前端时出现时差问题再观察一下返回的结果(如图):可以发现是前一天的16:00与期望的结果相差8h。(Tips:中国标准时间为U

2022-02-24 16:51:20 1011

原创 Leetcode580. 统计各专业学生人数 问题记录

原题链接先说思路,用一个外连接保留department表的记录,再用COUNT统计即可。需要注意的是,COUNT() 在使用的时候尽量不要使用COUNT(*),这是统计结果的行数 。情况不会有太大问题,我之前也习惯这么写,但是这会有一个隐患,当查询结果为null的时候,它的计数会是1而非0。那怎么做呢。不用COUNT(*),把*换成要统计的数据的候选键之类的就可以,没记录查询结果就是null,统计结果就是0,数值会比用COUNT(*)的更稳定点,就是需要找一下候选键而已(直接用主键也不是不行,如果实

2022-02-05 23:15:40 281

原创 20220205每日一题黄金矿工刷后感

原题链接:leetcode1219 黄金矿工一个中等题而已,轻轻松松就写过去了,不过却有些其他的想记录下来。一开始看这个题,我以为是可以并查集,找区块,然后统计每个区块的数值和选出最大的区块;解和样例仔细看看,发现只是一个DFS的问题,从任意一点搜索,找出最大路径和,很简单嘛。但是我却陷入了一个误区,并不是说这个题写不出来,而是在写之前,先想到的是“啊?这玩意要是写DFS,我岂不是要每个端点都跑一遍DFS,这复杂度可不低啊,怕不是考的别的我没想出来?”(在我印象里,DFS这种东西不到最后不要逃出来,简

2022-02-05 01:03:32 894

原创 前端Ajax发送表单跨域问题解决

尝试在Ajax请求体中加入一下语句:xhrFields: {withCredentials: true},BTW:顺带考虑一下后端是否解决跨域问题对于SpringBoot的后端,可以对Controller加如下注解:@CrossOrigin(originPatterns = "*", allowedHeaders = "*", allowCredentials = "true", methods = {})...

2021-12-30 21:41:15 271 3

原创 使用Mybatis的updatebyprimarykeyselective方法更新不成功的解决方案

我所使用的是Mybatis+SpringBoot,其他环境排除方法类似。一、查看SQL语句要解决问题,先要直到问题所在。这就需要查看一下mapper生成的SQL是什么样的需要在application.properties文件中加入以下字段:logging.level.实体类所在的包路径=debug如:如果发现SQL语句有问题,可以查看参数中是否有那些参数是错误的,加以修改。二、确认SQL语句没问题问题很可能在于没有找到主键需要在对应的实体类的主键加上注解:@Id注意:是javax

2021-12-28 22:22:29 4082

原创 设计模式之访问者模式

访问者模式什么是访问者模式访问者模式表示一个作用于某对象结构中的各种元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。原理图注意点访问者模式符合单一职责原则,但是访问者关注了其他类的内部细节,不遵循迪米特法则,同时由于访问者依赖的是具体元素而不是抽象元素,违背了依赖倒转原则。访问者模式适用于具有稳定数据结构,功能需求经常改变的场景。轻易不会使用到访问者模式,但如果你的场景真的需要访问者模式的时候,那么他是非常合适的。为什么要用访问者模式问题背景BJTU现可招

2021-11-11 19:59:38 768

原创 设计模式之命令模式

命令模式什么是命令模式命令模式是将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤销的操作。原理图为什么要用命令模式还记得在外观模式中我们所提到的智慧生活吗?我们来仔细想一下这个逻辑,智慧助手相当于一个遥控器,用于发出命令,让接收端(具体智能家居)做出相应的反应。在我们当时的实现中,只是体现出了智慧助手的统一调用,但并没有体现出“命令”,现在,让我们来体现一下“命令”。假设现在只有灯和空调两个智能家居:public class Lam

2021-11-10 16:08:57 366

原创 设计模式之模板方法模式

模板模式什么是模板方法模式原理图为什么要用模板方法模式什么是模板方法模式模板方法模式是定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。原理图为什么要用模板方法模式现在有一个xls文件里的数据需要处理,经过处理后需要输出到一个txt文件中。实现方式非常简单:写一个处理类:public class Processor { public void inputData(){ System.out.

2021-08-12 23:32:58 109

原创 设计模式之代理模式

代理模式什么是代理模式代理模式是为其他对象提供一种代理以控制对这个对象的访问。代理模式可以分为两种:静态代理:代理类在编译器已经确定。动态代理:代理类在JVM运行时动态生成。静态代理相对动态代理来说,效率比较高,但是一旦修改静态代理的接口,代理类和委托类都需要做出修改,十分恼人。原理图注:该原理图是静态代理原理图。动态代理时,Proxy类无需实现Subject,若使用cglib进行代理,则Subject接口可以不存在,但代理类需要实现MethodInterceptor接口。为什么要用

2021-08-11 22:41:37 126

原创 设计模式之享元模式

享元模式什么是享元模式“享元”,这是什么,这词不是很常见啊,不像工厂模式、建造者模式等,看见名字就能大概猜个八九不离十。享,即共享。元,是指一个单位,或者说是一个对象。享元模式是运用共享技术有效地支持大量细粒度的对象的设计模式。由于是细粒度单位的共享,享元模式又叫蝇量模式。原理图注意:内部状态与外部状态使用享元模式,一定要分清什么可以共享(内部状态),什么不能共享(外部状态)。内部状态是指对象共享出来的信息,储存在享元对象内部且不会随着环境的改变而改变。外部状态是指对象得以依赖

2021-08-10 23:40:23 148

原创 设计模式之外观模式

外观模式什么是外观模式原理类图为什么要用外观模式自己开开关好麻烦智慧生活什么是外观模式外观模式位子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。原理类图为什么要用外观模式自己开开关好麻烦回到家,要自己开灯,开空调,开启热水器……睡觉之前要关灯,关空调,关闭热水器……想要在家里有很好的观影体验需要关灯,连接蓝牙音箱……这样的场景还有很多,我们和各个家电的关系如下图:但是有时候,回到家很累,不想走来走去只是为了打开电器,

2021-08-09 22:50:30 126

原创 设计模式之组合模式

组合模式什么是组合模式原理类图为什么要用组合模式当前类图什么是组合模式组合模式是将对象组合成树形结构以表示“部分—整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。原理类图为什么要用组合模式今年学校的创新创业大赛结果非常好啊,计算机学院有一组学生做出来一份非常好的作品。这个产品可以提供一个非常高效的师生信息流通的渠道。学院打算加以应用并推广。为了保证这产品确实可用,不会推出后学生没法用,学院不好处理。学院打算先在学院内部使用一下:计算机学院:public class

2021-08-08 23:44:55 144

原创 设计模式之装饰者模式

装饰者模式什么是装饰者模式原理类图:为什么要用装饰者模式当前类图:和建造者模式很像?什么是装饰者模式装饰者模式是动态地给一个对象添加一些额外的职责,就增加功能来说,装饰者模式比生成子类更为灵活。原理类图:需要说明的一点是,不必一定按照上面的形式,如果没有抽象出Component的需求,可以直接让装饰者继承具体组件,毕竟,本来装饰者就是给具体组件装饰的。为什么要用装饰者模式假设有一位女生想要出门,这出门要想精致一点,就得化化妆,化妆这件事用代码怎么模拟呢?基本实现如下:首先得有一个人:pu

2021-08-07 23:19:06 73

原创 设计模式之桥接模式

桥接模式什么是桥接模式原理图为什么要用桥接模式使用桥接模式:什么是桥接模式桥接模式是讲抽象部分与它的实现部分分离,使他们都可以独立地进行变化。需要注意的是这里说的抽象与实现分离,并非类似抽象类与其派生类分离。实现部分指的是抽象类和他的派生类用来实现自己的对象。说通俗点,就是实现系统可能有多角度分类,每一种分类都有变化的可能,那么把这种多角度分离出来让他们独立变化,减少他们之间的耦合,便是桥接模式的使用。原理图为什么要用桥接模式试想市面上的手表:按功能分,可以分为普通手表、智能手表等

2021-08-06 23:08:03 117 1

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

适配器模式什么是适配器模式适配器模式是将一个类的接口转换成客户希望的另一个接口,适配器模式可以使原本由于接口不兼容而不能一起工作的那些类可以一起工作。其原理图如下:为什么要使用适配器模式现在,手机需要进行充电,但是手机需要的是5V的电压,墙上的插口只能提供220V的电压(外国还有110V电压),这显然是不能直接给手机充电的。在日常生活中,我们是使用电源适配器进行适配,顾名思义,这是一个适配器。我们可以通过手机的充电过程来理解适配器模式:首先,有一个插孔(墙上或插线板上的220V的插孔):p

2021-08-05 19:20:30 93

原创 设计模式之建造者模式

建造者模式什么是建造者模式建造者模式是将一个复杂对象的构建与它的表示分里,是的同样的构建过程可以创建不同的表示。简单来说,当我们需要一个复杂的对象,这个对象由许多组件组成,并且装配方式比较复杂时,就需要使用建造者模式来屏蔽这些装配细节,只需要关心最终的对象即可。其类图如下:为什么要用建造者模式我们来想这么一个情况:现在有一个开发商,需要在一片地区上盖楼。用代码模拟出来很简单吧。首先我们需要明确盖房子的步骤,假设只有打地基、砌墙、盖房顶三步:需要有一个房子类:public class H

2021-08-04 22:08:17 113

原创 设计模式之原型模式

原型模式什么是原型模式为什么要用原型模式初步实现分析使用原型模式实现分析深拷贝与浅拷贝什么是原型模式原型模式是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。为什么要用原型模式现在有一份纸质版问卷,发问卷的人希望你可以多找一些人填写问卷,你应该怎么做?答案很简单,找个复印店复印几份嘛:初步实现问卷类:public class Paper { private String title; private String author; private Str

2021-07-22 15:34:28 61

原创 抽象工厂模式

抽象工厂模式什么是抽象工厂模式为什么要使用抽象工厂模式新时期有新问题简单工厂模式实现:存在的问题抽象工厂模式实现:类图什么是抽象工厂模式抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,无需指定它们具体的类。可以简单理解成是围绕一个超级工厂来创建其他工厂(这个超级工厂是其他工厂的工厂)。适用场景:客户端(应用层)不依赖于产品类实例如何被创建、实现等细节。强调一系列相关的产品对象(属于同一产品簇)一起使用创建对象需要大量的重复代码。提供一个产品类的苦,所有的产品以同样的接口出现,从而使

2021-07-21 16:17:04 58

原创 工厂模式之工厂方法模式

工厂模式之工厂方法模式什么是工厂方法模式为什么要用工厂方法模式有没有别的方式来优雅实现?工厂方法模式实现:类图:这和最传统的方式有什么区别?什么是工厂方法模式工厂方法模式是工厂模式的一种,用于生产同一等级中的固定产品(支持增加任意产品)。它定义了一个创建对象的抽象方法,由子类决定要实例化的类。也就是说,工厂方法模式,将对象的实例化推迟到子类中实现。为什么要用工厂方法模式通过使用简单工厂模式,我们可以很优雅得实现不同播放器的调用。有没有别的方式来优雅实现?俗话说,条条大路通罗马,优雅实现的方式也

2021-07-20 12:28:51 102

原创 工厂模式之简单工厂模式

工厂模式之简单工厂模式什么是简单工厂模式为什么要用简单工厂模式实现分析什么是简单工厂模式简单工厂模式是工厂模式的一种,由一个工厂对象决定创建出哪一种产品类的实例,用于生产同一等级结构中的任意产品(对于新增加的产品,需要覆盖已有代码,故也被称为“静态工厂模式”)。简单工厂模式是最简单实用的工厂模式。为什么要用简单工厂模式在之前的例子中,需要由客户端来明确创建哪一个对象实例,调用者即创建者,调用过程严重依赖具体实现。对于功能的扩展也需要改动大量的客户端代码。之前的例子既没有封装对象的创建过程,又违背了

2021-07-19 14:55:02 75

原创 工厂模式及问题的传统实现

工厂模式及问题的传统实现什么是工厂模式为什么要用工厂模式功能需求与简单实现功能需求简单实现分析JDK 中的 Calendar 类中,使用了简单工厂模式什么是工厂模式工厂模式是一个创建型模式,是由一个工厂对象决定创建出哪种产品类的实例的设计模式。工厂模式可以细分为两种:简单工厂模式工厂方法模式为什么要用工厂模式为了将实例化对象的代码提取出来,放到一个类中统一管理和维护,使得主项目的依赖关系解耦,提高项目的可扩展性和可维护性,使创建者和调用者分离。在软件开发过程中,如果会用到大量的创建某种

2021-07-19 14:53:15 92

原创 设计模式之单例模式

单例模式什么是单例模式为什么要使用单例模式实现方式(java)饿汉式两种实现方式:1. 静态常量2 .静态代码块懒汉式三种实现方式:1. 线程不安全2. 线程安全、同步方法3. 同步代码块(并不能保证线程安全)双重检查(推荐使用)静态内部类(推荐使用)枚举(推荐使用)什么是单例模式单例模式是采取一定的方法,保证在整个系统中对于某一个类,只存在一个对象实例,并且只提供一个取得其对象实例的方法。为什么要使用单例模式单例模式保证了系统内存中只存在一个对象,节省了系统资源,对于一些需要频繁创建销毁的对现象,

2021-07-18 12:26:28 171

原创 设计模式七大原则之合成复用原则

设计模式七大原则之合成复用原则什么是合成复用原则当一个类需要使用另一个类的属性或方法时,尽量使用组合或聚合的方式,而非继承的方式。举个栗子class A { public void function1(){} public void function2(){}}class B extends A { public void function(){ super.function1(); super.function2(); }}

2021-07-17 12:22:50 44

原创 设计模式七大原则之迪米特法则

设计模式七大原则之迪米特法则什么是迪米特法则迪米特法则又称为最少知道原则。在类的结构设计上,每一个类都应当尽量降低成员的访问权限,每个类都应该尽量将逻辑封装在类内部,不需要外部知道的字段或行为就不应该公开。类应该只与其直接朋友(成员变量、方法参数、方法返回值的类)通信,尽量避免其他类以局部变量的形式出现在类内部。迪米特法则强调了类之间的松耦合,类之间的耦合度越松,越有利于复用。举个栗子现在A、B两个类中都有各自的一个集合,现在需要输出其各自的集合中的元素:public c

2021-07-17 12:22:23 139 1

原创 设计模式七大原则之开闭原则

设计模式七大原则之开闭原则什么是开闭原则开闭原则是编程中最基础、最重要的设计原则,是设计模式的核心。开闭原则是指:对扩展开放,对修改封闭。也就是说,当软件需要变化时,尽量通过扩展软件实体的行为的方法来实现,而不是在现有代码的基础上做出修改来实现。举个栗子假设现在我们希望有一个类,可以根据传入的类不同,输出其类型:public class Ocp { public static void main(String[] args) { Worker worker = new

2021-07-17 12:21:42 229

原创 设计模式七大原则之依赖倒转原则

设计模式七大原则之依赖倒转原则什么是依赖倒转原则高层模块不应该依赖底层模块,二者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象。说这样的官话确实比较难以理解,那么来说点人话:依赖倒转原则主要是要体现出**“面向接口编程”**的中心思想。细节是多变的,抽象是相对稳定的,以抽象为基础搭建的结构会比以细节为基础的架构稳定很多。抽象指接口、抽象类,细节为具体的实现类。在实现功能时,要多用接口或抽象类去制定一个规范,比如传参时更多地使用接口或抽象类来规定变量,而非某一个具体的实现类,这样在

2021-07-16 12:51:23 121

空空如也

空空如也

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

TA关注的人

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