摘要: # 一、 数据库范式 - 第一范式(**原子性**):1NF是对属性的原子性约束,要求属性具有原子性,不可再分解; - 第二范式(**完全依赖**):2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性,有个主键 - 第三范式(**没有传递依赖**):3NF是对字段冗余性的约束,即任何字段 阅读全文
posted @ 2022-10-14 17:31 浮沉丶随心 阅读(80) 评论(0) 推荐(0) 编辑
摘要: # Mysql索引的数据结构与算法 ## 一、索引 索引是高效获取**排好序**的**数据结构**。 索引本身就是数据一**部分关键信息**,通过索引大大减少索引的数据量。 索引信息需要**额外的空间存储**。创建和维护索引本身也会降低对数据的操作性能。 大多数情况下,索引查询都是比全表扫描要快的。 阅读全文
posted @ 2022-10-14 15:14 浮沉丶随心 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 一、 @EnableTransactionManagement 开启Spring事务本质上就是增加了一个Advisor,但使用@EnableTransactionManagement注 解来开启Spring事务是,该注解代理的功能就是向Spring容器中添加了两个Bean: AutoProxyReg 阅读全文
posted @ 2022-10-13 20:54 浮沉丶随心 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 一 、 动态代理 代理模式的解释:为其他对象提供一种代理以控制对这个对象的访问,增强一个类中的某个方法,对程序进行扩展。 不修改UserService类的源码前提下,给test()增加额外逻辑,那么就可以使用动态 代理机制来创建UserService对象 动态代理技术具体实现方式有jdk动态代理(基 阅读全文
posted @ 2022-10-13 11:45 浮沉丶随心 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 解析配置类 流程如下: 在启动Spring时,需要传入一个AppConfig.class给ApplicationContext,ApplicationContext 会根据AppConfig类封装为一个BeanDefinition,这种BeanDefinition我们把它称为配置类 BeanDefi 阅读全文
posted @ 2022-10-13 10:33 浮沉丶随心 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 前言 一般来说,spring启动,就是构造ApplicationContext对象以及调用refresh()方法的过程 spring的启动主要做了这么几件事情: 构造一个BeanFactory对象 解析配置类,得到BeanDefinition,并注册到BeanFactory中 解析@Componen 阅读全文
posted @ 2022-10-12 17:39 浮沉丶随心 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 首先基础常识一个类通常有两个构造方法,一个有参的,一个无参的。对象创建默认使用无参构造。 在spring中,只有一个无参的构造方法,那么实例化就只能使用这个无参构造。 一、只一个有参构造 但只有一个有参的构造方法,那么实例化时能使用这个构造方法吗?要分情况了: 使用AnnotationConfigA 阅读全文
posted @ 2022-10-12 16:34 浮沉丶随心 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 一、什么是循环依赖 就是A对象依赖了B对象,B对象依赖了A对象。 A a = new A(); B b = new B(); a.b = b; b.a = a; 如果不考虑Spring,循环依赖并不是问题,因为对象之间相互依赖是很正常的事情。 为什么在Spring中循环依赖就是一个问题了? 因为在S 阅读全文
posted @ 2022-10-12 11:36 浮沉丶随心 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 1、依赖注入方式 手动注入 自动注入 1.1 手动注入 在XML中定义Bean时,就是手动注入,因为是程序员手动给某个属性指定了值。 // 底层是通过Set方法注入 <bean name="userService" class="com.luban.service.UserService"> <pr 阅读全文
posted @ 2022-10-12 11:10 浮沉丶随心 阅读(67) 评论(0) 推荐(0) 编辑
摘要: Spring最核心的功能之一就是创建对象(IOC) Bean的生命周期指:在spring中,一个Bean的生成和销毁的过程 启动ApplicationContext 创建BeanFactory 初始化BeanFactory 执行BeanFactory后置处理器 进行扫描 生成BeanDefiniti 阅读全文
posted @ 2022-10-11 16:53 浮沉丶随心 阅读(76) 评论(0) 推荐(0) 编辑
摘要: | 可用性级别 | 系统可用性% | 宕机时间/年 | 宕机时间/月 | 宕机时间/周 | 宕机时间/天 | | : | : | : | : | : | : | | 不可用 | 90% | 36.5 天 | 73 小时 | 16.8 小时 | 144 分钟 | | 基本可用 | 99% | 87.6 阅读全文
posted @ 2022-10-10 17:42 浮沉丶随心 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 高并发现用来指大流量、高请求的业务情景,比如春运抢票,电商双十一,秒杀大促等场景。 1、高并发的度量指标 并发的指标一般有 QPS 每秒查询率(Queries-per-second) TPS 每秒事务的处理量(Transaction Per Second) IOPS 每秒进行读写操作的次数(Inpu 阅读全文
posted @ 2022-10-10 16:40 浮沉丶随心 阅读(112) 评论(0) 推荐(0) 编辑
摘要: //二分法判断一个数是否存在(有序数组) public static Boolean BSExist(int[] arr, int num) { if (arr == null || arr.length == 0) { return false; } int L = 0; int R = arr. 阅读全文
posted @ 2022-10-10 14:43 浮沉丶随心 阅读(20) 评论(0) 推荐(0) 编辑
摘要: // 插入排序 从左扩大范围 最小值放在最右边 public static void insertionSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int i = 1; i < arr.length; i 阅读全文
posted @ 2022-10-10 14:42 浮沉丶随心 阅读(15) 评论(0) 推荐(0) 编辑
摘要: // 冒泡排序 从右缩小范围 最小值放在最右边 public static void bubbleSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int i = arr.length - 1; i > 0; 阅读全文
posted @ 2022-10-10 14:41 浮沉丶随心 阅读(14) 评论(0) 推荐(0) 编辑
摘要: // 从0下标开始顺序 找到最小值的下标交换对应下标的值 public static void selectionSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int i = 0; i < arr.leng 阅读全文
posted @ 2022-10-10 14:39 浮沉丶随心 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 位运算相关 对于有符号的的而言: 二进制的最高位是符号位(0正1负) 正数的原码反码补码都一样 负数的反码 = 它的原码符号位不变,其他位取反 负数的补码 = 它的反码 +1, 负数的反码 = 负数的补码 -1 0的反码补码都是0 Java 没有无符号位,换言之Java的数据都是有符号的 在计算机运 阅读全文
posted @ 2022-10-10 12:29 浮沉丶随心 阅读(36) 评论(0) 推荐(0) 编辑
摘要: context标准库 context 翻译成中文是 上下文 的意思,它可以对 API 和进程之间传递截止日期、取消信号和其他请求范围的值。 使用上下文的程序应遵循以下规则: 保持包之间的接口一致 不要在结构类型中存储上下文 上下文应该是第一个参数,通常命名为ctx 上下文值仅用于传输进程和API的请 阅读全文
posted @ 2022-09-15 17:46 浮沉丶随心 阅读(19) 评论(0) 推荐(0) 编辑
摘要: runtime标准库 runtime包提供和go运行时环境的互操作,如控制goroutine的函数。 它也包括用于reflect包的低层次类型信息。 1. 环境变量 环境变量GOGC设置最初的垃圾收集目标百分比。当新申请的数据和前次垃圾收集剩下的存活数据的比率达到该百分比时,就会触发垃圾收集。默认G 阅读全文
posted @ 2022-09-15 17:46 浮沉丶随心 阅读(51) 评论(0) 推荐(0) 编辑
摘要: flag标准库 Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。 1. os.Args 如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数。 func main() { // 获取命令行参数 // os.Args:[] 阅读全文
posted @ 2022-09-15 17:45 浮沉丶随心 阅读(45) 评论(0) 推荐(0) 编辑