自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式--策略模式

策略类之间可以自由切换,由于策略类都实现同一个接口,所以使它们之间可以自由切换。易于扩展,增加一个新的策略只需要添加一个具体的策略类即可,基本不需要改变原有的代码,符合“开闭原则”。避免使用多重条件选择语句(if-else),充分体面面对对象设计思想。客户端必须知道所有的策略类,并自行决定使用哪一个策略类。策略模式将造成产生很多的策略类,可以通过使用享元模式在一定程度上减少对象的数量。

2023-10-31 20:58:24 954 1

原创 MyBatis延迟加载原理剖析

它的原理是,使⽤ CGLIB 或 Javassist( 默认 ) 创建⽬标对象的代理对象。当调⽤代理对象的延迟加载属性的 getting ⽅法时,进⼊拦截器⽅法。⽐如调⽤ a.getB().getName() ⽅法,进⼊拦截器的invoke(…) ⽅法,发现 a.getB() 需要延迟加载时,那么就会单独发送事先保存好的查询关联 B对象的 SQL ,把 B 查询上来,然后调⽤ a.setB(b) ⽅法,于是 a 对象 b 属性就有值了,接着完成 a.getB().getName() ⽅法的调⽤。

2023-09-26 18:33:45 361

原创 MyBatis架构原理

MyBatis初始化时对接⼝的处理:MapperRegistry是Configuration中的⼀个属性,它内部维护⼀个HashMap⽤于存放mapper接⼝的⼯⼚类,每个接⼝对应⼀个⼯⼚类。mappers中可以配置接⼝的包路径,或者某个具体的接⼝类。当解析mappers标签时,它会判断解析到的是mapper配置⽂件时,会再将对应配置⽂件中的增删改查标签封装成MappedStatement对象,存⼊mappedStatements中。

2023-09-20 15:36:17 122

原创 MyBatis插件

⼀般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者⾃⾏拓展。,⼀是增加了框架的灵活性。⼆是开发者可以结合实际需求,对框架进⾏拓展,使其能够更好的⼯作。以MyBatis为例,我们可基于MyBatis插件机制实现分⻚、分表,监控等功能。由于插件和业务⽆关,业务也⽆法感知插件的存在。因此可以⽆感植⼊插件,在⽆形中增强功能Mybatis作为⼀个应⽤⼴泛的优秀的ORM开源框架,这个框架具有强⼤的灵活性,在四⼤组件()处提供了简单易⽤的插件扩展机制。Mybatis对持久层的操作就是借助于四⼤核⼼对象。

2023-09-17 19:32:45 92

原创 MyBatis一级、二级缓存

基本概念:为了减轻数据库的查询压力,减少与底层数据库的交互次数,提高数据查询的效率,提供的缓存机制。MyBatis默认定义了两级缓存,分为一级缓存、二级缓存一级缓存:默认情况下开启一级缓存,sqlsession级别的缓存,也被称为本地缓存。二级缓存:默认关系,需要手动开启、配置,mapper(也可以认为是namespace)级别缓存,二级缓存也可以通过实现Cache接口自定义二级缓存。

2023-09-17 15:02:23 69

原创 Linux服务器查看日志文件命令技巧

正常情况下,sed命令所做的处理只是把操作结果(包括打印、删除等)输出到当前终端屏幕,而并不会对原始文件做任何更改,若希望直接修改文件内容,应添加选项 -i。需要查询压缩的日志文件 2023-07-24-09.tar.gz 中有关 ‘确认到岗消息提醒定时任务开启’ 的内容。处理文本文件的语言,强大的文本分析工具。grep和zgrep命令用于在文件中搜索匹配指定模式的字符串,zgrep一般用于压缩文件的搜索。如果日志文件很大,例如有5g大小的日志文件,使用·grep·定位某个请求的位置,同时使用。

2023-07-24 16:24:41 2152

原创 HashMap源码分析

所以低16位的变化区间在 0 ~ 2^16-1 这个区间,而高16位的变化区间在 -2^32 ~ 2^32-1 这个区间,那么参与计算的hash值是低16位参与的更多,如果不进行扰动,让高16位不参与运算,会导致散列成都不高。使用异或位(异或,相同为0,不同为1),由于右移16位之后的hash值高16位都为0(如果使用与运算,那么计算后的hash值高16位全为0,高16位特征全无),使用异或运算,计算之后的hash值会保留原来hash值的高16位特征。综上所述,可以解答第4问。翻看源码可以提出以下。

2023-07-21 11:56:44 66

原创 使用top、jstack在linux服务器中找出cpu占用率高的代码

后端的代码监控突然预警,接口响应较慢,后来去服务器中才发现服务器的cpu出现了满载的情况,使用率直接到达了100%,后面使用了jstack工具找到系统中出现问题的代码,以此记录一下筛查过程。

2023-07-10 11:54:23 427

原创 idea项目mapper.xml中的SQL语句黄色下划线去除

mybatis。

2023-05-31 15:59:51 3346

原创 使用docker部署seata报错:‘io.seata.server.console.service.BranchSessionService‘ that could not be found.

按照seata官网使用docker部署seata完成后,启动报错。

2023-05-19 14:48:35 1619

原创 使用 Docker 部署 Seata Server (1.6.1)

seata官方Docker部署链接:https://seata.io/zh-cn/docs/ops/deploy-by-docker.html从docker镜像仓库中拉取seata server 1.6.1的镜像二、挂载配置文件1. 启动seata server,并将seata server中的配置文件复制到服务器本地。启动seata server将seata server中的配置文件复制到服务器本地2. 修改seata配置文件在服务器的配置文件目录下/User/seata/config/res

2023-05-18 16:24:05 1324 3

原创 【分布式事务SEATA1.6.1搭建以及使用】

除了第2步使用提供的脚本,将对应的config.txt中的配置信息推送到nacos中,也可以自行将config.txt中的配置信息复制到nacos中。启动完成后,就可以在nacos服务列表中查看到注册的 seata 服务。在seata的GitHub地址找到对应的脚本,并在对应的项目中执行。到这里seata分布式事务AT模式基本上就已经集成好了。可以在下载的文件夹中找到对应的SQL直接执行。:包含配置中心配置文件以及脚本。:seata的配置文件夹。

2023-05-15 01:40:01 385

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

建造者模式(Builder)示例建造房屋需求:建房的过程:打地基,糊墙,登顶等。房屋有不同的类型,如普通房,高楼等。传统方式代码示例房屋抽象类public abstract class AbstractHouse { /** * 打地基 */ public abstract void buildBasic(); /** * 糊墙 */ public abstract void buildWalls();

2021-10-28 10:53:21 70

原创 设计模式--原型模式(Prototype)

目录原型模式(Prototype)浅拷贝深拷贝原型模式(Prototype)举例创建一个人对象,拥有姓名、年龄、性别属性,编写程序创建完全一样的人对象。传统方式人类public class Person { private String name; private int age; private String gender; public Person(String name, int age, String gender) { this

2021-10-26 11:39:59 155

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

工厂设计模式介绍意义:将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦。从而提高项目的扩展和维护性。工厂设计模式有三种:简单工厂模式,工厂方法模式,抽象工厂模式。设计模式的依赖抽象原则。不使用设计模式/*** 以下有一个具体的需求。披萨订购,需要便于披萨种类的扩展,便于维护。* 1. 目前有多种类披萨(CheesePizza,GreekPizza)等* 2. 披萨的制作过程有prepare,bake,cut,box* 3. 披萨有门店供客人进行选购

2021-10-21 19:20:30 66

原创 设计模式--单例模式

目录单例模式实现的八种方式饿汉式(静态常量)(可用)饿汉式(静态代码块)(可用)懒汉式(线程不安全)懒汉式(线程安全,同步方法)懒汉式(线程不安全,同步代码块)双重检查(建议)静态内部类(建议)枚举(建议)注意事项和细节说明单例模式所谓类的单例模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得对象实例的方法(静态方法)。实现的八种方式饿汉式(静态常量)(可用)饿汉式(静态代码块)(可用)懒汉式(线程不安全)懒汉式(线程安全,同步方法)懒汉式(

2021-10-21 19:07:44 78

原创 UML类图及类与类关系

目录UML类图及类与类关系一、类图-依赖关系(Dependence)概念举例二、泛化关系(Generalization)概念举例三、实现关系(Implementation)概念举例四、关联关系(Association)概念举例五、聚合关系(Aggregation)概念举例六、组合关系(Composition)概念举例UML类图及类与类关系本文使用的IDEA中的uml类图使用的是plantUml,安装教程及地址:https://blog.csdn.net/weixin_35836574/article/

2021-10-18 19:25:22 397

原创 设计模式七大原则

设计模式一、 概念1.1 设计模式是什么设计模式是对软件设计中普遍存在(反复出现)的各种问题所提出的解决方案。1.2 设计模式 的目的设计模式是为了让程序(软件)拥有更好的代码重用性(即:相同的功能代码,可以不用多次编写)可读性(即:相当于代码的规范性,便于其他的程序员阅读和理解)可扩展性(即:相当于代码的可维护性,当需要增加新的功能时,非常的方便)可靠性(即:增加了新的功能代码,对原有的功能没有影响)使程序呈现高内聚,低耦合的特性二、 设计模式七大原则设计模式原则就是程序员

2021-10-15 17:24:23 121

原创 IDEA创建java文件失败:Unable to parse template “Class“

IDEA创建java文件失败:Unable to parse template “Class”问题描述:创建某一名称的java文件时,会发生报错,导致创建的java文件变成text类型。但是换个名称却可以创建成java文件。报错信息 :Unable to parse template “Class”Error message: Selected class file name ‘SingleResponsibility3.java’ mapped to not java file type ‘Fi

2021-10-14 13:35:48 841

原创 @RequestBody使用时出现的类转换异常

问题描述:后台使用@RequestBody以map的形式接收前端传递的参数,在获取map中的list集合时出现转换异常错误。java.lang.Integer cannot be cast to java.lang.CharSequence/java.lang.String;原因分析:由于传递的参数有数组,需要对数组进行处理,所以在Controller接收前端传递的参数时,使用了Map<String,Object>接收数据。但是在service方面处理其中的传递的数组时,使用了Ma

2021-05-10 10:53:15 1834

原创 mybatis-plus注解使用问题(bug)汇总

项目场景:项目中需要使用到mybatis-plus,需要去XML化。当需要使用SQL语句进行查询的时候,需要使用mp提供的注解书写SQL语句进行查询。由此产生了许多以前没有遇到的问题。在此记录使用注解书写SQL语句产生的bug。问题描述①:You have error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near…

2021-04-27 14:33:03 784

原创 工作流学习日志-(Activiti7与spring、SpringBoot整合)

工作流学习日志-(spring、springboot整合)文章目录工作流学习日志-(spring、springboot整合)前言一、工作流Activiti7与spring整合1. 依赖注入2. 整合配置文件3. 测试代码二、使用步骤1.引入库2.读入数据总结前言开发OA人力资源管理系统时在人员调动时、请假审批等需要使用到工作流,以此作为学习契机。一、工作流Activiti7与spring整合1. 依赖注入与spring整合时的pom.xml文件依赖。<?xml version="1.0

2021-04-15 11:43:11 351

原创 工作流学习日志 -(Activiti7进阶)

工作流学习日志 -(Activiti7进阶)文章目录工作流学习日志 -(Activiti7进阶)前言一、流程实例1. 添加业务标识(BusinessKey)2. 查询流程实例3. 挂起、激活流程实例①. 全部流程实例挂起、激活②. 单个流程实例挂起、激活二、个人任务1.引入库2.读入数据总结前言开发OA人力资源管理系统时在人员调动时、请假审批等需要使用到工作流,以此作为学习契机。工作流学习日志(基础-概念、基本api使用)一、流程实例流程实例(ProcessInstance)通过流程定义(

2021-04-13 10:17:42 341

原创 工作流学习日志-(Activiti7基础-概念、基本api使用)

工作流学习日志文章目录工作流学习日志前言一、工作流是什么?1. 概念2. 工作流系统3. 使用的行业4. 具体使用5.实现方式二、使用步骤1.引入库2.读入数据总结前言开发OA人力资源管理系统时在人员调用时需要使用到工作流,以此作为学习契机。一、工作流是什么?1. 概念工作流(Workflow),通过计算机对业务流程自动化执行管理。主要解决“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个的业务目标,或者促使此目标的实现。”2. 工作流系统如果软件系统

2021-04-09 09:00:55 1051 1

原创 Error:java:读取\repository\org\mockito-core-2.23.4.jar时出错

问题描述:Error:java:读取D:\javaAPI\IDEA\ideaIu-2019.2.4\ideaIu-2019.2.4\apache-maven-3.5.4\repository\org\mockito\mockito-core\2.23.4\mockito-core-2.23.4.jar时出错 原因分析:由于这次springboot的版本是2.1X的版本,以前使用过更高的版本,导致这次项目测试会读取mockito中的jar文件。属于版本不兼容问题。解决方案:按照提示中的文件路

2021-01-28 16:39:57 412

转载 npm install报错:chromedriver@2.27.2 install:`node install.js`

问题描述:谷粒商城项目中创建前端依赖npm install时报错 原因分析:参考链接:https://segmentfault.com/a/1190000008310875解决方案:使用下面命令安装chromedrivernpm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver再添加依赖npm install...

2021-01-28 10:52:59 621

原创 01谷粒商城Linux环境搭建

01谷粒商城Linux环境搭建本博客主要记录个人在B站上学习尚硅谷的谷粒商城项目的心得。尚硅谷的B站课程地址:https://www.bilibili.com/video/BV1np4y1C7Yf?from=search&seid=12092629461877905774文章目录01谷粒商城Linux环境搭建一、Docker安装以及配置1.Docker的安装①.卸载Docker旧版本②.安装yum-utils软件包并设置稳定的存储库。③.安装最新版本的Docker Engine和容器④.启动

2021-01-27 17:04:30 360

原创 java 的Excel读取和写入工具POI和easyExcel

POI和easyExcel常用场景将用户信息导出为Excel表格(导出数据)将Excel表中的信息录入网站数据库,大大减轻网站录入量。开发中经常会遇到Excel处理,如导出Excel,导入Excel到数据库中。操作Excel目前比较流行的是Apache POI和阿里巴巴的easyExcel!Apache POI 官网:https://www.apache.org/注:操作稍有麻烦,如果量比较大时,会报oom异常。easyExcel 官网https://github.com/a

2020-08-28 15:59:09 673

空空如也

空空如也

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

TA关注的人

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