前言 对于单个表的增删改查都是很固定的,总是手写没有太多意义,而且浪费时间,研究了一下mybatis-plus的代码生成器,可以直接使用他的代码生成器去生成 代码生成前置条件 依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.4</version> <relativePa
2024-11-24在gradle打包过程中,要想将依赖打进jar包,除了使用shadow插件外,在jar或build到的基础上将依赖压缩到jar包中。 例如,在某个工程中,引用了fastjson作为依赖: dependencies { compile 'com.alibaba:fastjson:1.2.70' compile fileTree(dir: getProject().getRootProject().getRootDir().absolutePath + "\\libs", inclu
2024-11-241.简介 java 8 stream作为流式操作有两种操作类型,中间操作和终止操作。这两种有什么区别呢? Stream<String> stream = Stream.of("one", "two", "three","four"); stream.peek(System.out::println); 上面的例子中,我们的本意是打印出Stream的值,但实际上没有任何输出。 2.中间操作和终止操作? 一个java 8的stream是由三部分组成的。数据源、零个或一个或多个中间操
2024-11-24Excel的导入和导出也是比较常见的需求,Excel导入之前写过了,可参考:前后端分离,,现在看看Excel导入如何实现,先大概说一下思路: (1)首先,最好限制Excel中输入的数据的,提供一个导入的模板(这里暂时没做) (2)读取Excel导入的数据,难点是怎样解析数据 前端代码: <el-upload class="upload-demo" :action="uploadUrl2" :before-upload="handleBef
2024-11-24Spring Boot 提供了一种条件化配置机制,通过 @Conditional 注解及其派生注解,可以根据特定条件来决定是否加载某些配置类或 Bean。这种机制在微服务架构中非常有用,可以根据环境、属性、类的存在性等条件来灵活地配置应用程序。 理解自动化配置对象 每个自动化配置对象都需要使用 @AutoConfiguration 注解进行修饰,@AutoConfiguration 注解被 @Configuration 修饰,也就是说,@AutoConfiguration 注解是一个标准的 Co
2024-11-24Spring中的ApplicationContext是Spring框架中的一个核心接口,它代表了Spring IoC容器的高级形态,提供了比BeanFactory更丰富的功能和灵活性。以下是ApplicationContext的详细解释: 一、基本定义 ApplicationContext是Spring应用程序的核心,它不仅负责创建和管理Bean,还提供了多种企业级服务,如事件传播、国际化、资源加载等。它是Spring IoC容器的高级接口,提供了对Bean的全面管理以及对应用程序环境的支持。
2024-11-24今天半夜写代码时,脑子一懵把@Repository注解写在了接口上,导致bean无法完成注入。 于是引发了一系列百度,看到了很多说的不错的答案。 这其实都是spring的内容,可能是半夜脑子不好使,一直没看出来哪里的问题。 关于上面的问题的解释: @Service注解是标注在实现类上的,因为@Service是把spring中的bean进行实例化,也就是等同于new操作,只有实现类是可以进行new实例化的,而接口则不能,所以是加在实现类上的。 问题1:spring 到底注入接口还是实现类? 实现类
2024-11-24数据结构中的物理结构包含有:顺序存储结构与链式存储结构 存储优缺点: 用法1: 查询频繁存储量固定 建议使用顺序结构:因为已知存储量固定大小,可以直接去内存中开辟一个固定大小的空间。 用法2: 插入与删除频繁存储量不固定 建议使用链式存储结构:因为不清楚存储量,而链式结构在内存中,并非连续且相邻的,插入与删除链式结构效率要远远大于顺序结构
2024-11-24errgroup.Group 和 sync.WaitGroup 的主要区别在于它们的错误处理和协程管理方式。 errgroup.Group 专为并发操作中的错误捕获设计,任意goroutine返回错误时,会立即终止其他goroutine的执行。 而 sync.WaitGroup 主要用于等待多个 goroutine 完成,不会直接处理错误。 用法示例: // errgroup import ( "fmt" "golang.org/x/sync/errgroup" ) func main()
2024-11-24服务器端负载均衡:例如Nginx,通过Nginx进行负载均衡,先发送请求,然后通过负载均衡算法,在多个服务器之间选择一个进行访问;即在服务器端再进行负载均衡算法分配。 负载均衡是我们处理高并发、缓解网络压力和进行服务端扩容的重要手段之一,但是一般情况下我们所说的负载均衡通常都是指服务端负载均衡,服务端负载均衡又分为两种,一种是硬件负载均衡,还有一种是软件负载均衡。 硬件负载均衡主要通过在服务器节点之间安装专门用于负载均衡的设备,常见的如F5。 软件负载均衡则主要是在服务器上安装一些具有负载均衡功
2024-11-24