- 博客(59)
- 收藏
- 关注
原创 Spring源码阅读环境
下载地址Tags · spring-projects/spring-framework · GitHub解压后- build.gradle 放了一些依赖配置,有点像maven的pom文件 - gradle.properties 存放当前Spring的版本,可以对比下看看是不是5.0.X版本 - gradlew.bat 放的是项目的构建脚本,不过在本章用不上,本章是使用IDEA去构建 - import-into-idea.md 这个是Spring导入IDEA的说明文件,可以根.
2021-12-27 16:12:04 570
原创 Spring 声明式事务
什么是事务把一组业务当成一个业务来做;要么都成功,要么都失败,保证业务操作完整性的一种数据库机制。声明式事务ACID 四大特性A 原子性:原子性指的是 在一组业务操作下 要么都成功 要么都失败在一组增删改查的业务下 要么都提交 要么都回滚C 一致性:事务前后的数据要保证数据的一致性在一组的查询业务下 必须要保证前后关联数据的一致性I 隔离性:在并发情况下 事物之间要相互隔离。D 持久性:数据一旦保存就是持久性的。总结:在事务控制方面,主要有两个分类:编程式事务:在
2021-12-27 14:28:56 366
原创 Spring学习路线
看我博客Spring的路线图,不迷路,按照下面的顺序看会比较舒服。spring初识以及需要理解的东西才能看懂源码_小丑竟是我自己-CSDN博客这个是必须要知道的,https://blog.csdn.net/b416055728/article/details/121824461Spring基本概念_小丑竟是我自己-CSDN博客Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE
2021-12-27 13:56:27 1268
原创 @Import用法
@Import这个也很重要真的很重要,源码里都是它!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!@Import的用法1、引入其他的配置类,需要在主配置类里引用,@Import(SecondJavaConfig.class)2.可以将类注册为Bean @Import(Role.class)3.导入ImportSelector实现类,可以注册多个bean@Import(MyImportSelector.class),这个类是框架级别的4.导入ImportBeanDefinit
2021-12-27 13:51:55 788
原创 SpringIOC的注解应用
可以通过xml文件进行bean或者某些属性的赋值,还有另外一种注解的方式,在企业开发中使用的很多,在bean上添加注解,可以快速的将bean注册到ioc容器。1、使用注解的方式注册bean到IOC容器中如果想要将自定义的bean对象添加到IOC容器中,需要在类上添加某些注解Spring中包含4个主要的组件添加注解:@Controller:控制器,推荐给controller层添加此注解@Service:业务逻辑,推荐给业务逻辑层添加此注解@Repository:仓库管理,推荐给数据访问
2021-12-27 11:35:08 172
原创 maven的介绍与使用
1、maven的简单介绍Maven是Apache下的项目管理工具,它由纯Java语言开发,可以帮助我们更方便的管理和构建Java项目。maven的优点1、 jar包管理:a) 从Maven中央仓库获取标准的规范的jar包以及相关依赖的jar包,避免自己下载到错误的jar包;b) 本地仓库统一管理jar包,使jar包与项目分离,减轻项目体积。2、 maven是跨平台的可以在window、linux上使用。3、 清晰的项目结构;4、 多工程开发,将模块拆分成若干工程,利于团队
2021-12-27 11:24:08 169
原创 Spring基本概念
Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发。Spring可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底层都依赖于
2021-12-27 11:21:09 3499
原创 如何创建spring boot项目
主要是给新手看的,直接说了,一般使用idea,第一种:1、新建项目,先择maven,然后创建项目2、添加依赖<!--继承springboot的父项目--><parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>
2021-12-20 21:16:40 174
原创 Spring Boot的配置文件和自动配置原理
配置文件介绍SpringBoot使用一个全局的配置文件 核心配置文件,配置文件名在约定的情况下 名字是固定的;配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;•application.properties•application.yml•application.yamlYAML(YAML Ain't Markup Language)YAML A Markup Language:是一个标记语言YAML isn't Mark
2021-12-20 21:05:29 540
原创 SpringBoot介绍
Spring Boot 简介及快速搭建SpringBoot它基于Spring4.0设计,是由 Pivotal 公司提供的框架。2014 年 4 月发布 Spring Boot 1.0 基于Spring4.02018 年 3 月 Spring Boot 2.0发布 基于Spring 5.0。SpringBoot 基于 Spring 开发。不仅继承了Spring框架原有的优秀特性,它并不是用来替代 Spring 的解决方案,而和 Spring 框架紧密结合进一步简化了Spri..
2021-12-20 16:15:37 818
原创 SpringMVC
1、回顾MVC三层架构1.1、MVC三层是什么MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。就是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式,MVC是一种架构模式。当然不同的MVC存在差异。Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数
2021-12-11 22:24:09 119
原创 Spring源码
1、什么是Spring框架,Spring框架主要包含哪些模块Spring是一个开源框架,Spring是一个轻量级的Java 开发框架。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Sprin
2021-12-10 13:35:17 232
原创 SpringAOP详细使用
1.AOP切入点表达式支持切点标识符Spring AOP支持使用以下AspectJ切点标识符(PCD),用于切点表达式:execution: 用于匹配方法执行连接点。 这是使用Spring AOP时使用的主要切点标识符。 可以匹配到方法级别 ,细粒度 within: 只能匹配类这级,只能指定类, 类下面的某个具体的方法无法指定, 粗粒度 this: 匹配实现了某个接口:this(com.xyz.service.AccountService) target: 限制匹配到连接点(使用Sprin
2021-12-09 22:05:27 583
原创 Spring AOP
AOP:Aspect Oriented Programming 面向切面编程OOP:Object Oriented Programming 面向对象编程面向切面编程:基于OOP基础之上新的编程思想,OOP面向的主要对象是类,而AOP面向的主要对象是切面,在处理日志、安全管理、事务管理等方面有非常重要的作用。AOP是Spring中重要的核心点,虽然IOC容器没有依赖AOP,但是AOP提供了非常强大的功能,用来对IOC做补充。通俗点说的话就是在程序运行期间。在不修改原有代码的情况下 增强跟主要业务没
2021-12-09 18:48:53 155
原创 SpringIoC的javaconfig使用
这个也是属于spring的,JavaConfig 原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的定义信息,在 Spring4 的版本, JavaConfig 已正式成为 Spring4 的核心功能 。
2021-12-09 15:34:34 419
原创 SpringBoot自动装配源码
1、SpringBoot的自动配置原理 一、简介 搭SpringBoot环境的时候,非常简单。无须各种的配置文件,无须各种繁杂的pom坐标, 一个main方法,就能run起来了。与其他框架整合也贼方便,使用EnableXXXXX注解就可以搞起来了。SpringBoot是如何实现自动配置的。...
2021-12-07 16:58:20 364
原创 redis开发规范与性能优化
一、键值设计1. key名设计(1)【建议】: 可读性和可管理性以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:idtrade:order:1(2)【建议】:简洁性保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:user:{uid}:friends:messages:{mid} 简化为 u:{uid}:fr:m:{mid}(3)【强制】:不要包含特殊字符反例:包含空格、换行、单双引号以及其他转义字符2. v
2021-12-07 14:58:45 348
原创 Redis缓存设计与性能优化
缓存设计---------------------------------------------------------------------------------------------------------------------------缓存穿透
2021-12-07 00:26:54 499
原创 Redis6新特性详解
1. 多线程2. Client Side Cache3. Acls1、多线程:1. redis 6.0 提供了多线程的支持,redis 6 以前的版本,严格来说也是多线程,只不过执行用户命令的请求时单线程模型,还有一些线程用来执行后台任务, 比如 unlink 删除 大key,rdb持久化等。redis 6.0 提供了多线程的读写IO, 但是最终执行用户命令的线程依然是单线程的,这样,就没有多线程数据的竞争关系,依然很高效。redis 6.0 以前线程执行模式,如下操作在一个线程
2021-12-07 00:10:44 364
原创 Redis核心设计原理
深入底层C源码1.Redis K-V 底层设计原理2.Redis 渐进式rehash及动态扩容机制3.Redis核心编码结构精讲4.亿级用户日活统计BitMap实战及源码分析Redis 基本特性1. 非关系型的键值对数据库,可以根据键以O(1) 的时间复杂度取出或插入关联值2. Redis 的数据是存在内存中的3. 键值对中键的类型可以是字符串,整型,浮点型等,且键是唯一的4. 键值对中的值类型可以是string,hash,list,set,sorted set 等5.
2021-12-06 23:09:49 792
原创 Redis Cluster集群运维与核心原理
1、Redis集群方案比较哨兵模式在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率。高可用集群模式re..
2021-12-06 19:14:15 987
原创 Java操作redis集群
Java操作redis集群借助redis的java客户端jedis可以操作以上集群,引用jedis版本的maven坐标如下:<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version></dependency>Java编写访问red...
2021-12-06 18:28:03 3262
原创 Redis高可用集群搭建
redis集群搭建redis集群需要至少三个master节点,这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点,这里用三台机器部署6个redis实例,每台机器一主一从,搭建集群的步骤如下:...
2021-12-06 18:22:57 109
原创 Redis高并发分布式锁
分布式锁场景接口幂等性校验抢优惠券互联网秒杀Redis分布式锁实现setnx原子加Redisson分布式锁实现原理redis分布式锁用过的有好几种,我写几个比较常见的版本,这样新手也比较容易看懂一般的代码: @RequestMapping("/lock") public String deductStock() { String lockKey = "product_100"; String clientId = UUI.
2021-12-06 17:38:56 2293
原创 Redis客户端命令对应的RedisTemplate中的方法列表:
String类型结构 Redis RedisTemplate rt set key value rt.opsForValue().set("key","value") get key rt.opsForValue().get("key") del key rt.delete("key") strlen key ...
2021-12-06 16:07:12 441
原创 linux搭建redis主从
后期测试要远程连接,先设置密码,免得被黑1、直接改127.0.0.1:6379> config get requirepass1) "requirepass"2) ""127.0.0.1:6379> config set requirepass redistestOK127.0.0.1:6379> keys *(error) NOAUTH Authentication required.127.0.0.1:6379> auth redistestOK127
2021-12-06 14:26:55 508
原创 Redis主从与哨兵架构
redis主从架构搭建,配置从节点步骤:配置主从复制replicaof 192.168.0.60 6379 # 从本机6379的redis实例复制数据,Redis 5.0之前使用slaveofreplica-read-only yes # 配置从节点只读Redis主从工作原理如果你为master配置了一个slave,不管这个slave是否是第一次连接上Master,它都会发送一个PSYNC命令给master请求复制数据。master收到PSYNC命令后,1、会在后台进行...
2021-12-06 01:28:19 169
原创 Redis持久化、主从与哨兵架构
Redis持久化RDB快照(snapshot)在默认情况下, Redis 将内存数据库快照保存在名字为dump.rdb的二进制文件中。你可以对 Redis 进行设置, 让它在“N秒内数据集至少有M个改动”这一条件被满足时, 自动保存一次数据集。比如说, 以下设置会让 Redis 在满足“60秒内有至少有1000个键被改动”这一条件时, 自动保存一次数据集:# save 60 1000 //关闭RDB只需要将所有的save保存策略注释掉即可还可以手动执行命令生成RD...
2021-12-06 01:23:13 112
原创 Redis核心数据结构
五种数据结构String结构字符串常用操作SET key value //存入字符串键值对MSET key value [key value ...] //批量存储字符串键值对SETNX key value //存入一个不存在的字符串键值对GET key //获取一个字符串键值MGET key [key ...] //批量获取字符串键值DEL key [key ...] //删除一个键EXPIRE key seconds /
2021-12-05 19:24:21 144
原创 Redis核心数据结构与高性能原理
redis的安装流程Linux服务器安装redis_小丑竟是我自己-CSDN博客----------------------------------------------------------------------------------------------------------------------------Redis的单线程和高性能Redis是单线程吗?Redis 的单线程主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提
2021-12-05 18:02:57 117
原创 mysql的MVCC与BufferPool缓存机制
MVCC多版本并发控制机制 Mysql在可重复读隔离级别下如何保证事务较高的隔离性,我们上节课给大家演示过,同样的sql查询语句在一个事务里多次执行查询结果相同,就算其它事务对数据有修改也不会影响当前事务sql语句的查询结果。 这个隔离性就是靠MVCC(Multi-Version Concurrency Control)机制来保证的,对一行数据的读和写两个操作默认 是不会通过加锁互斥来保证隔离性,避免了频繁加锁互斥,而在串行化隔离级别为了保证较高的隔离性是通过将所有操 作加锁互斥来实现的。 My
2021-12-04 21:11:30 220
原创 Mysql锁与事务隔离级别
概述数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了事务隔离机制、锁机制、MVCC多版本并发控制隔离机制,用一整套机制来解决多事务并发问题。事务及其ACID属性 事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性。 原子性(Atomicity) :事务是一个原子操作单
2021-12-04 16:56:39 763
原创 Mysql索引优化2
我们业务系统实现分页功能可能会用如下sql实现 select * from employees limit 10000,10; 表示从表 employees 中取出从 10001 行开始的 10 行记录。看似只查询了 10 条记录,实际这条 SQL 是先读取 10010条记录,然后抛弃前 10000 条记录,然后读到后面 10 条想要的数据。因此要查询一张大表比较靠后的数据,执行效率 是非常低的。 常见的分页场景优化技巧:1、根据自增且连续的主键排序的分页查询 select
2021-12-04 12:47:06 632
原创 Mysql索引优化1
CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄', `position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位', `hire_time` timestamp.
2021-12-04 00:43:20 390
原创 MySQL的内部组件结构
大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 Server层 主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。Store层存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5....
2021-12-03 23:51:26 460
原创 mysql索引实践
1.全值匹配2.最左前缀法则 如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列。 3.不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描 4.存储引擎不能使用索引中范围条件右边的列 5.尽量使用覆盖索引(只访问索引的查询(索引列包含查询列)),减少 select * 语句6.mysql在使用不等于(!=或者<>),not in ,not exists
2021-12-03 23:28:19 352
原创 Explain详解与索引实践
Explain工具介绍 使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL 注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中 Explain分析示例 参考官方文档:https://dev.mysql.com/doc/refman/5.7/en/explain-output.htm
2021-12-03 21:40:58 151
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人