Nacos配置热更新的4种方式、读取项目配置文件的多种方式,@value,@RefreshScope,@NacosConfigurationProperties nacos热更新,@value,@NacosPropertySource,@ConfigurationProperties,@NacosConfigurationProperties,@RefreshScope
Mysql索引原理、聚簇索引和非聚簇索引、回表 我们都知道索引的作用是增加查询速度,大部分系统都是读多写少,索引对应查询的帮助是非常大的。特别是数据流越大的时候,索引对应查询性能的影响非常关键。就好比一本字典,如果没有目录,想要找一个字的话就要一页一页的查找,非常耗时,通过字典里面的目录就可以直接定位到数据在哪一页,这样查找效率就非常高。索引就类似字典里面的目录。一、索引的底层数据结构1、Hash(哈希表)哈希算法也叫散列算法,就是把任意的key通过哈希函数转变为固定长度的地址。2、B+树Mysql默认使用的就是B+树,B+树是一种平衡查找树。
@Transactional注解失效的场景,为何会失效 @Transactional是我们项目中很常用的一个注解了,@Transactional可以为我们控制事务,可以保证事务内的操作要么全部成功,要么全部失败,@Transactional也是基于AOP切面实现事务的功能的。下面列举一下使用@Transactional会导致事务失效的场景:1、@Transactional应用在了非publice的方法上,事务将会失效:原因是SpringAOP对事务进行代理增强的时候会调用到computeTransactionAttribute方法,这个方法里面进行了判断,
理解MVC架构模式,SpringMVC原理、执行流程图解 1、MVC架构模式说起SpringMVC就不得不说MVC,MVC是一种经典架构模式。MVC架构模式的重点是为了解耦,将软件用户界面和业务逻辑分离以使代码可扩展性、可复用性、可维护性、灵活性加强,很多应用程序的问题在于处理业务数据和显示业务数据的视图的对象之间存在紧密耦合。有一句很有名的话:一个层次的重定向几乎可以解决计算机业务中的所有问题。在模型(Model)和视图层(View)之间引入重定向层可以解决解耦问题,这个重定向层就是控制层(Controller)。这样模型和视图就实现了代码分离,解耦了,由控
请求转发和重定向的区别 1、什么是请求转发和重定向?请求转发:request.getRequestDispatcher(String path).forward(requst,response);重定向response.sendRedirect(String path);简单来说,请求转发是服务端内部做的事情,和客户端无关,客户端也无感知;而重定向是客户端请求服务端,服务端重定向,客户端在发起二次请求才能拿到结果。2、请求转发和重定向的区别1、重定向是response发起,请求转发是request发
JDK8 lambda操作list常用功能,list转map,list选取字段拼接字符串,分组,统计 新建UserDTO对象:package com.list;import lombok.Data;@Datapublic class UserDTO { public UserDTO(){} public UserDTO(Integer id, String userName, String mobile){ this.id = id; this.userName = userName; this.mobile = mobile;
Spring AOP 面向切面编程,XML和注解方式使用切面 一、AOPAPO即Aspect Oriented Programing的缩写,字面直译的意思就是:面向切面编程。AOP采用横向抽取机制,取代了传统的纵向继承体系中的重复性代码,是对OOP面向对象编程的一种补充和完善。AOP最重要或者说要达到的目的就是开发者在不修改不侵入源代码的前提下,给系统中的业务组件添加某种通用的功能。比如现在要统计系统中service层的所有方法的执行时间,如果使用面向对象的话只能在每个方法前后手动编写一段代码打印开始结束时间,来计算每个方法的执行时间;如果使用AOP就可以把计算
Spring ioc 通俗易懂的讲清楚什么是IOC、DI 1、IOC的理论背景我们都知道,在采用面向对象方法设计的软件系统中,系统底层都是有N个对象组成,所有的对象通过彼此的合作最终完成系统的业务逻辑。图1:软件系统中的耦合对象当我们打开机械手表的后盖,就会看到如图一上面的类似情景,各个齿轮分别带动时针、分针、秒针顺时旋转,从而在手表上显示正确的时间。图一就是描述的这样一个齿轮组,它拥有多个独立的齿轮,这些齿轮互相啮合在一起,协同工作,共同完成某项任务。我们可以看看到,在这样的齿轮组中,如果有一个齿轮出现了问题,就可能会影响到整个齿轮组的正常运转。齿轮组中
IDEA使用maven插件MyBatis Generator自动生成java实体类代码 1、在项目的pom.xml文件中添加plugin插件<build> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <v
MongoDB(三)SpringBoot整合MongoDB,使用MongoRepository和MongoTemplate 一、启动MongoDB1、创建文件夹:D:\Java\mongo_db2、启动mongodb// mongod --dbpath D:\Java\mongo_db二、新建项目及配置(MongoRepository方式)1、新建如下项目:2、pom依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="
MongoDB(二)备份恢复、导入导出、主从复制、副本集集群、分片存储 一、备份和恢复MongoDB提供了备份和恢复的功能,分别是mongodump和mongorestore,可以使用如下命令:1、备份:mongodump// 语法mongodump -h host -d dbname -o directory -u username -p pwd// 示例,将本地test1数据库的数据备份到D:\Java\mongo_dump文件夹下面mongodump -h 127.0.0.1 -d test1 -o D:\Java\mongo_dump -u testAdmi
MongoDB(一)简介、和关系型数据库比较、安装及常用命令、账号配置 一、MongoDB简介及和关系型数据库比较1、MongoDB是一种非关系型数据库,是用C++语言编写的。其特点是高性能、易部署、易使用,存储数据方便。主要特性:面向集合存储,易于存储对象类型数据;支持动态查询,支持完全索引,包含内部对象模式自由支持主从复制、分布式和故障恢复使用高效的二进制存储,包括大型对象文件的存储格式未BSON(JSON格式的一种扩展)2、MongoDB和关系型数据库对比比较项MongoDBMysql/Oracle表集合collection
Hibernate框架介绍,一级缓存二级缓存 一、Hibernate介绍1、Hibernate是一种ORM框架,也就是持久层的框架,应用于DAO层,是对JDBC的一种封装,可以让程序直接通过面向对象的方式去完成对数据库的操作,可以做到不用手写SQL语句就能完成对数据库的各种操作。2、ORM框架,那么什么是ORM?O:ObjectR:RelationalM:MappingORM就是对象关系映射(Object Relational Mapping,简称ORM),关注的是对象和数据库中对应表的关系。通过描述对象和数据库之间映射的元数据,将程序中
jvm类加载器,java有哪些类加载器,有什么作用 一、什么是类加载器类加载器ClassLoader就是将我们的.class文件转换成Class对象。类Class只有被加载到jvm中后才能运行,jvm会将编译生成的字节码.class文件加载到内存中,组织成一个完整的java应用程序,这个过程是由类加载器ClassLoader和它的子类来完成的。二、jvm中的类加载器jvm中有三个类加载器:1、引导类加载器:BootStrap,它用来加载 Java 的核心库,是用原生代码来实现的,并不继承自 java.lang.ClassLoader2、扩展类
Mysql数据库优化、数据库规范 1 命名规范(1) 数据库名、表名、字段名必须使用小写字母,并采用下划线”_”分割。(2) 数据库名、表名、字段名禁止超过32个字符,须见名知意,建议使用名词不是动词。(3) 数据库名、表名、字段名禁止使用MySQL保留字。(4) 临时库名、表名必须以tmp为前缀,并以日期为后缀。(5) 备份库名、表名必须以bak为前缀,并以日期为后缀。2 基础规范(1) 使用INNODB存储引擎(2) 表字符集使用UTF8(3) 所有表都需要添加注释(4) 单表数据量建议控制在5000W以内(