按时间归档:2023年05月
-
自定义代码生成器(上)
1 概述1.1 介绍 在项目开发过程中,有很多业务模块的代码是具有一定规律性的,例如controller控制器、service接口、service实现类、mapper接口、model实体类等等,这部分代码可以使用代码生成器生成,我们就可以将更多的时间放在业务逻辑上。 传统的开发步骤: 创建数据库和表 根据表设计实体类 编写mapper接口 编写ser…
-
自定义代码生成器(下)
4.2 编码4.2.1 常量类package freemarker.constant; public class TemplateConstant { //实体类模板 public static final String entityTemplate = “templates/Entity.ftl”; //Mapper模板 publi…
-
Java教程:重试实现高可用一览
1、背景介绍 随着互联网的发展项目中的业务功能越来越复杂,有一些基础服务我们不可避免的会去调用一些第三方的接口或者公司内其他项目中提供的服务,但是远程服务的健壮性和网络稳定性都是不可控因素。在测试阶段可能没有什么异常情况,但上线后可能会出现调用的接口因为内部错误或者网络波动而出错或返回系统异常,因此我们必须考虑加上重试机制。 重试机制可以提高系统的健壮性,并…
-
30分钟带你精通git使用
一、 版本控制工具1.1. 什么是版本控制系统? 版本控制系统(Version Control System):是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制。 常见的版本控制系统有:cvs、svn、git 1.2. 为什么要有版本控制系统?在开发过程…
-
Docker从入门到精通,看这一篇就够了
一、Docker简介1、背景 物理机时代 一个物理机上安装操作系统,然后直接运行我们的软件。也就是说你电脑上直接跑了一个软件,并没有开虚拟机什么的,资源极其浪费。 缺点部署慢成本高 虚拟机都不开,直接上物理机部署应用,那成本能不高嘛 资源浪费 硬件资源没有合理利用 不易迁移和增加机器 每次迁移都要重新安装一模一样的运行环境等 受限于硬件虚拟机时代 一个物理机…
-
Mybatis-plus如何快速实现动态数据源切换?
1 背景 通常一个系统只需要连接一个数据库就可以了。但是在企业应用的开发中往往会和其他子系统交互,特别是对于一些数据实时性要求比较高的数据,我们就需要做实时连接查询,而不是做同步。这个时候就需要用到多数据源。 举个简单的例子某企业要做订单网上订单系统这里面就可以涉及到多个子系统的连接,比如:产品主数据的数据源,项目管理系统的数据源(项目可以产品订单)等多个不…
-
MybatisPlus数据安全,你掌握了吗
MybatisPlus数据安全概述 存在数据库中的数据对于普通用户而言是不可见的,好像是藏起来了一样,但对于开发者,只要知道数据库的连接地址、用户名、密码,则数据不再安全;这也意味着,一旦连接数据库的配置文件暴露出去,则数据不再安全。 应用场景 开发中的数据库配置文件或配置中心中的配置信息 API介绍 MybatisPlus中有个针对配置项加密处理的 代码实…
-
看懂这篇文章,你就懂了Mybatis的二级缓存
缓存的概述和分类概述缓存就是一块内存空间.保存临时数据为什么使用缓存将数据源(数据库或者文件)中的数据读取出来存放到缓存中,再次获取的时候 ,直接从缓存中获取,可以减少和数据库交互的次数,这样可以提升程序的性能!缓存的适用情况适用于缓存的:经常查询但不经常修改的(eg: 省市,类别数据),数据的正确与否对最终结果影响不大的不适用缓存的:经常改变的数据 , 敏…
-
看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法
一、什么是死锁 加锁(Locking)是数据库在并发访问时保证数据一致性和完整性的主要机制。任何事务都需要获得相应对象上的锁才能访问数据,读取数据的事务通常只需要获得读锁(共享锁),修改数据的事务需要获得写锁(排他锁)。当两个事务互相之间需要等待对方释放获得的资源时,如果系统不进行干预则会一直等待下去,也就是进入了死锁(deadlock)状态。 二、死锁产生…
-
HashMap详解
讲解步骤基础知识工作原理关键代码核心方法基础知识 数组结构 数组接口,在查询数据方面,具备优势 链表结构 链表结构,在增删数据方面,具备优势 红黑树结构 红黑树结构,在查询数据方面,数据量较大的时候,具备一定的优势 什么是散列(哈希)表 散列表,顾名思义,就是将数据分布在不同的列 但是散列表并不是完全将数据分散在不同的列,而是按照某种规则,将具备同样规则的数…