当前位置: 首页 > news >正文

知识点大纲

学习方法

学习、整理笔记过程中,顺便整理出一个以问题为模版的大纲,到时候对着问题,就像是在和面试官讲解那样,相当于升级版的费曼学习法

除了看博客,问gpt外,亲自实验也是获取知识及加深印象的关键点

很久没有复习的知识,不要上来就去读一遍,而是先从大脑中过一遍,想不起来的,或者想错的,就是之前没有掌握扎实的内容,尽快巩固一下

java基础语法

语法与概念

  • this和super,概念、构造器中的用法、普通方法中的用法、静态方法中能否出现,抽象类中出现是指什么

  • 面向对象三大特征,封装(实现手段、好处、与jvm关系、实际开发)、继承(概念、子类构造器super概念与jvm角度,是否真的先创建父类对象)、多态(概念、三要素、结合模板方法)

  • try-catch-finally => 练习题的形式考察,返回顺序、异常链、拦截器/aop异常捕获增强方法

  • java基础数据类型、Intger的拆箱与装箱

  • String不可变性、基本结构

  • final

  • 泛型,集合项目

  • 重载(方法名同,参数个数,不同类型参数顺序不同、返回值类型权限无关)与重写(2同2小1大,说明底层原因,结合模板方法模式、jvm角度分析),向上转型与向下转型,重载的典型案例如下

    • 案例一:子类具有和父类同名的属性,setter做重载,getter无法重载,用泛型方法将父子setter方法合二为一
    • 案例二:泛型类的方法入参,由于编译期间泛型擦除机制在后无法被作为重载的,解决方案
      • 重载方法入参升级/入参降级,保持非一致即可
      • 重载方法合二为一之通过泛型通配符
      • 重载方法合二为一之反射映射机制
  • 静态:为何静态方法中不能出现非静态属性/方法

  • 接口与抽象类的区别 本质关系与概念、构造方法

  • 流概念、分类(方向、功能)、既然java中有自动GC的功能,那么为何在finlly块中还要再去手动close

  • 泛型:

    • 生效时机与泛型擦除
    • 泛型作用范围
      • 泛型类:集合则是限定添加元素的类型,业务类的泛型
      • 泛型方法:真泛型方法<T>与伪泛型方法T区别:一个自助决定返回值类型且不要求一定是泛型类,泛型方法所在类必须是泛型类
      • 泛型属性:要依附于泛型类,包括pojo和collection
      • 泛型接口 :继承类继承的泛型接口传入实参和未传入实参的区别(传入实参那么重写接口的方法和属性必须限定为传入的实参,没传入,那么这些则不受限定,会在创建对象时决定
    • 泛型通配符作用
    • 泛型方法应用案例
      • 参考重载的典型案例一、案例二
      • 限定接口返回值
      • 高端应用:①定义基层父类,所有的入参reqVo都继承自这个基层父类BaseReqVo②生产者端接口统一接收map类型的入参,而后在接口中调用service基类对象分发入参到相应的生产者service,基类service是泛型类,但泛型参数限定为BaseReqVo的子类,分发过程中,在接口处对入参map做了处理
T t = JsonUtils.toBean(JsonUtil.parseFromMap(XxxReqVo),getObjectClass());

这一步中T会在编译过后被编译为BaseReqVo,而T右边实际上则是具体的XxxReqVo对象
Json而后在对应的生产者service转型为对应的reqVo③通过kafka推送这个reqVo④消费者端的监听器调用消费者端的service基类分发入参,消费者基类service中的T和生产者service中的T一样,消费者基类service中模版方法中直接用t,而后在模版方法中的小方法中handle等小方法时,这些放都是延迟到子service去实现的,当然子service继承的消费者基类service中是声明具体泛型类的(XxxReqVo),入参后handle后会通过泛型自动转为具体的reqVo⑤消费者端的

  • 异常
    • 可查异常
    • 不可查异常(RuntimeException与Error)

java与io

  • io的概念、分类方向、功能、类型
  • 流的概念、三大特征,对比块
  • 输入流与输出流、字节流与字符流、节点流和处理流与缓冲流
  • 案例实操,程序读取文件、 程序写入文件、 程序实现文件复制

java集合

  • ArrayList和LinkedList简介和区别 底层、查询、顺序添加、插入、扩容(原理)、实际应用(增删改查扩容角度)

hashmap(数据结构&算法&并发锁)

  • 基础问题:hashmap数据结构、hash算法实现细节、插入算法、扩容装载因子(0.75平衡扩容和数据聚集)、扩容的触发机制、底层实现原理、
    尾插法 => 头插法线程安全问题、红黑树的特点、树化条件、hash冲突定义
  • HashMap的底层数组长度为何总是2的n次方?①插入算法(方便用计算)②扩容时用到③尽量保证结点均匀
  • jdk8新特征?红黑树(解决查询效率,对比avl)、尾插 => 头插法、节点Entry => Node
  • jdk8之前的线程安全问题
  • 如何高效运算保证均匀性的?
  • hashmap怎么解决哈希冲突的?hash冲突定义,链地址法(数据结构)+红黑树(树化)、插入算法(保证均匀)、扩容机制
  • 线程安全问题:jkd8数组节点被覆盖、jdk7扩容过程中线程问题(头插法 => 尾插法)
  • concurrentHashmap,jdk7前分段锁、jdk8的CAS+synchronize

java线程

  • 线程与进程
  • jmm内存模型
  • java线程的状态与转换、深入谈下线程、cpu、新建 => 就绪、就绪=> 运行、运行 => 挂起/阻塞
  • 线程安全问题定义与起因(内存安全),常见的线程安全情况、i++、集合类hashmap、stringbuilder、局部变量为何线程安全
  • synchronize三种应用(修饰代码块、修饰方法;访问实例对象,访问静态对象)、对应的底层原理(对象锁、抢占到的执行,未抢占的阻塞)、jdk6之后对synchronize做的优化、关联问题 slepp和wait的区别
  • java常见的锁的类似与举例,
  • 为什么要引入分布式锁,项目中使用到的分布式锁(三类场景选择chatconnect接口情况讲解、底层原理setnx、kv的选择与含义、)
  • 线程安全三要素与atomic原子类、volitate的关系
  • 线程池
    • 设计理念①相较于单线程减少了线程关闭和创建的流程,线程执行效率更高②统一管理线程,线程利用率更高,同时防止线程资源被过度使用导致系统资源不足
  • 常用线程池类型
    • 单例线程池①大部分用于做一个异步操作,例如我们接口中有一个void类型的远程调用,而且这个流程和主流程业务上并没有强依赖,即不要求状态必须保持一致,即不一定要同时成功或同时失败的情况下可考虑(例如推送数据到kafka),否则业务上可能存在风险,不支持异步②特殊业务场景,即
    • 常规线程池①异步,只是对于请求量大的接口,无法满足1对1,要加一个最大限额,此时要用线程池,这种情况下通过线程池都是静态的或者该线程池所对应的,当前服务器上所有的请求的异步流程都②常常是mysql数据处理相关的,in范围查询是,如果查找的范围数量有上千个,那么我们通过List.paritation将一整个list集合拆分为多个最大容量为300的list,而后使用线程池,每个线程用一个list做条件,开启一个sql查询
  • 参数与含义:循环执行50次任务,等价于50个任务/一瞬间来了50个请求,一个请求的执行时间200ms左右,核心线程数5意味着前5个线程被投入使用,大小为20的等待队列存储20个等待状态的任务,其中如果不主动指定等待队列的大小那默认就是2的32次方,那意味着即使当前并发请求任务数等可以暂时存放在等待队列中,不会触发拒绝策略,最大线程数10,意味着(10-5=5)5个临时线程被投入使用,(临时线程)最大存活时间1、单位秒,即1秒内没有超出核心线程数外的任务请求过来,就会释放掉非核心线程,线程工厂四种拒绝策略之一①abortPolicy,拒绝并中断,中断是通过抛出异常中断当前②discardPolicy直接拒绝③discardOldestPolicy把最早的请求的丢弃④callerRunsPolicy,不会抛弃多余任务,但会使线程的创建线程即主线程也会被投入执行线程任务,这种情况下可能原本线程池是异步执行的效果会失效,从整个流程角度看还是串行

java数据结构

  • B树与B+树
  • AVL树与红黑树
  • java集合

java设计模式

  • 聚合、组合、继承
  • 简单工厂、工厂方法、抽象工厂,各个模式的优点与缺点,实现细节层层推推进
  • 代理模式,jdk动态代理源码分析
    • 为被代理类Xxx创建XxxInvocationHandler<T>,其中该类中一个属性持有被代理类对象,并通过构造器赋值,重写invoke方法,该方法三个入参,分别是proxy,interfaces的class类型、invocationHandler,方法中通过入参的method.invoke去执行核心业务方法,而后在核心业务逻辑的四个位置,做增强处理,该方法其实本质是通过在类运行期间在编译期间生成字节码文件转为java类$Proxy(继承自Proxy,同时实现被代理类的接口),该类(静态)属性是Method类型,在静态方法中通过反射获取被代理类中的全部放的method并赋值给属性,$Proxyz中通过构造器入参将invocationHandler赋值到父类,$`Proxyz中会有被代理类中的同名方法,但方法内容清一色是通过this.invocationHandler.invoke(this,method,null),即去调用invocationHandler的代理方法

spring面试题

1,spring bean的生命周期基础

  • 概念总览,创建,属性填充/依赖注入,初始化,使用,销毁
  • 创建的三种形式(Supplier/工厂方法/推断构造并反射创建)?推断构造器方法?工厂方法举例?(Spring整合mybatis,配置类中的@Bean)创建过程细分?(实例化,bean后置处理,半成品bean存入三级缓存)
  • 属性填充?@AutoWired,@Resource
  • 初始化流程?aware,回调各种初始化方法initializeBean的afterProperties

2,spring的生命周期进阶 - 循环依赖

  • 什么是循环依赖?
  • 一二三级缓存的作用分别什么是什么?它们是如何搭配解决循环依赖的呢?
  • 循环依赖不适用于什么场景?(构造注入,@Asyn),why?

3,@Configuration

  • 容器启动过程中对该注解的处理逻辑是什么?最终生成一个什么样的bean?cglib动态代理?实例化配置中的bean时的过程是什么?

4,@ComponetScan
说一下处理流程

5,依赖注入@AutoWired

  • 自动注入的模型的三层结构师什么?
  • 有多个实现的子类,是如何选择注入对象的? 我们可以通过@AutoWired中指定beanName来根据名字注入对象,这与@Quailifiers区别是啥

工厂方法定义?哪些常见的用法?

  • Spring ioc和aop

  • Spring是线程安全的吗?Sprin

  • Spring中的单例和传统单例模式区别

  • ApplicationContext(和BeanFactory,事件监听器、国际化,类文件读写解析)和BeanFactory(ioc的核心,定义、初始化、实例化、依赖注入、全套声明周期关系),延迟加载好处与坏处

    • 常见报错:XxxMapper has bean register MapperRegister
  • Spring创建bean的12种方式流程

  • beanPostProcesser

    • 执行时机 => 容器启动过程中全部的后置处理器被装载到一个list中,实例化bean的过程中,执行完依赖注入,开始初始化bean的时候①回调aware接口的实现类方法②执行init方法③执行beanPostProcesser的前置处理和后置处理
    • 常用的后置处理器有哪些?常见用法功能是什么?在对应的执行时机中对bean做后置处理,通常是对bean做一些争抢处理例如①RountingInjected案例,根据名称在同类bean选择对应的bean并将其封装为代理类,同时,aop中的代理类的创建也是在这一流程中创建的,之所以在此次创建戴丽丽时因为类的初始化和实例化都已完成②完成配置文件的属性值绑定
  • InitializingBean执行实际?实际开发中的应用?策略模式的实现相关

    • 实例化bean的过程中,执行完依赖注入,开始初始化bean的时候①回调aware接口的实现类方法②执行init方法
    • 用于策略模式的实现,即一系列service组件作为策略类,不需要定义一个策略类后去手动注册,也不需要直接拿spring容器做策略类,而是通过策略模式直接自动注册这个bean到策略容器中
  • autowired注解

    • 修饰范围:属性、构造器、方法、以上三者的参数中
    • 注入策略 byType => byName
    • 和Resouce注解的区别:修饰范围不同、指定beanName方式不同、装配策略不同、适用框架的范围不同
  • Spring容器启动和获取到组件的全过程:

  • ApplicationContextRegister、常用的两个场景

  • spring事务底层原理、事务传播机制、事务失效原因

  • spring循环依赖概念、循环依赖出现在不同位置的情况与每种位置对应的spring提供的解决方案

  • componet和service区别,一个修饰service层,一个修饰普通的java,pojo类型的java类,相当于配置文件中配置的javabean,我认为是一种规范性层面的差距,并无实际功能性的差异,功能一样的

  • 模拟Spring整合mybatis全流程,相关组件注解@WangScan,WangScanner,WangBeanFactory,WangBeanDefnitionImpory

  • BeanUtils.copyProperties解决的痛点是什么,具体应用说一下

    • 两个无关的对象做属性值拷贝
    • 两个父子类对象做属性值拷贝
    • 两个带有pojo/collection类型的属性 => 该方法是深拷贝还是浅拷贝

jvm

介绍下jvm内存空间模型、程序计数器、虚拟机栈、堆、方法区

关联问题1,详细说下堆的结构,为何那么划分?

类加载流程:加载(编译&加载)、连接(验证,准备,解析)、初始化过程

关联问题1,配置文件中静态字段accessSecre一定就是test吗?accessSecret2一定是test2吗

@Value("${bos.accesskey2}")private Long accessSecret2 =“test2;

关联问题2,说一下ClassNotFondException与ClassNoDefineError的区别

关联问题4,类加载过程是一口气把所有类都加载吗?加载后的类都会被初始化吗?
关联问题5,字节码的执行时机是什么
关联问题6,import一个类是不是意味着类加载器会加载这个类?
关联问题6,如果我使用了一个类的class对象,那么这个类一定会被加载
关联问题7: ASM读取.class文件和jvm字节码解析区别是什么

类的主动调用&被动调用

关联问题1: clinit含义,一定会执行吗?静态属性一定会意味着clinit吗(final),出现static fianl一定只是在连接阶段赋值吗(字面量/数值类型&变量的区分)

双亲委派机制

关联问题:java.lang.String模拟与feign的消费者类ConfigureMapper覆盖

  • class对象生成实际

  • 栈、堆、方法区的内存泄露与OOM概念、与它们的常见的情况

  • String通过+号拼接和通过StringBuilder拼接哪个好?还有优化空间吗?

  • GC的整体流程、GC为何要分区

  • 强引用、软引用、弱引用

  • 线程安全与jvm内容

  • 虚/非虚方法、动态连接、静态连接

  • this和super,重载与重写、特殊情况private/final/abstract指代,静态上下文关系类主动/被动加载案例,java构造方法底层原理与this/super关系,子类构造器初始化
    加载父类的流程,jvm底层原理、clinit和init的关系,java代码执行顺序

内存泄露

内存泄露定义

常见的内存泄露情况(5种)

ThreadLocal与jvm

threadlocal

问题1: JAVA基础 - 强引用、弱引用、软引用、虚引用

问题2:说下ThreadLocal与Synchnroized区别

问题3:说下ThreadLocal的使用场景

问题4:ThreadLocal为何要用弱引用

String与jvm

String的定义,String内存模型,解释String的不可变性,和final有关吗?为何要设置为final,如果不是final会出现什么问题?

String的拼接操作底层原理是什么,与final的结合使用呢

kafka

  • 项目中为何使用kafka
  • 基础架构(核心组件、分区数规则(数目到底多少合适,数据不合适的坏处)、副本数规则、分区与副本关系)
  • 生产者请求ack机制、丢消息问题、消息重复问题/幂等性与事务机制,数据乱序,到底怎么样数据才是安全的 => 消息确认问题诞生的ISR机制
  • 生产者数据推送策略
  • kafka与zookeeper的关系,存储关系,服务器节点启动流程的关系、启动后如何生效?去zookeeper化如何进行的(消费者端偏移量)
  • kafka底层存储文件机制
  • 消费者pull/push

IO模型与Netty

ES

  • 概念:基于 Lucene 的 Restful 的分布式实时全文搜索引擎,基于倒排索引,即每个字段都被索引并可被搜索,可以快速存储、搜索、分析海量的数据

  • 基础架构

  • 倒排索引

  • 常用api总结下

  • text 和 keyword类型的区别

  • query 和 filte

  • r 的区别

  • es数据写入与读取流程

mysql

mysql基础

  • group by,order by,limit,in,left join… 语法部分统一挪到索引部分讲解
  • mysql基础架构(结合sql命令),server层连接器、缓存层、分析器、优化器,执行器(预处理器解析符合、优化器选择索引 执行器索引下推)
  • count(*)/count(列明)/count(1)/count(0),区别,每个命令最适合的场景

详细介绍下五种连表的方式

讲一下范式

如果让你设计一个请假表,你会如何去设计

基础语法题

跨多表的字段查询:三表连接查询/表连接查询+子查询集合 join A ON B where A.id = B.id
按xxx统计后以统计条件为:分组查询语句group by、结合having和count等聚合的关系
一个表内一个对象的某属性进行比较:单表拆分为连在一起的双表,需要对比的两字段被练成一行用于比较,通过两个子查询后通过where获取到连接表,连接表中有了这个

char和varchar区别,如何选择

索引、性能调优相关

mysql执行顺序

驱动表和被驱动表的定义是什么?mysql优化策略是如何选择驱动表与被驱动表的?主表一定会被作为驱动表吗?

什么是索引?说一下索引B+树的结构?三层B+树能存储数据的上限是什么?可以使用avl树或者B树代替B+树吗?B+树为何擅长范围查询?

主键的选择有哪些限制?为何不能过大?为何不能用随机数?为何要唯一性、非空性?

说一下外键索引、唯一性索引,外键索引一定会提高查询性能吗?

联合索引的好处是什么?如果没有联合索引是什么情况?缺字段导致索引失效、范围查询导致索引失效的原理是什么?联合索引对or语句有效吗?如果我们想对or语句创建索引要怎么做?

模糊查询为何导致索引失效,底层原理是什么?模糊查询一定会失效吗?如何解决失效问题?

说一下order by的原理,参考sql如下,order by索引失效的场景有哪些?如何针对此类sql创建高效索引?,参考sql如下,说一下六种加索引的方法(无索引,只对name加索引,只对city加索引,对name和city加索引,对name,city以及select的字段加索引,对city和name字段加索引)

select city,name,age from t where city = '杭州' order by name limit 1000;

说一下group by的原理?group为何会导致文件内排序与临时表?,参考sql如下

select city ,count(*) as num from staff where age> 30 group by city;

说一下limit原理,为何不能非叶子快速定位呢?

文件内排序与使用临时表的定义是什么?什么情况下会出现这种呢?

适合创建索引的情况有哪些?不适合的有哪些

还有其他索引失效的场景吗?列举一下,失效的原理是什么?你该如何解决这些索引失效问题?

  • 联合索引,字段缺失、范围查询导致字段部分失效,对于OR条件失效
  • 设计到group by/order by 索引顺序不正确也会导致索引失效
  • 模糊查询导致索引失效
  • 使用函数导致索引失效

索引的优缺点是什么?所以哪些情况适合哪些情况不适合呢?

重点说下连表查询原理(粗暴n重循环、缓存辅助、索引辅助连接(主外键连接))、左/右/全/内连接原理、连表例题、阿里规范禁止三表以上连接join,why?how?

  • 连表场景 主键作为外键,没有外键盘
  • 分组与排序原理?不加索引的坏处?加了索引的好处?为排序加索引注意点?
  • where筛选注意点:索引是否覆盖?字符类型索引创建字段注意点、区分度算法?模糊查询注意点?索引顺序有何讲究(区分度排序)?索引失效情况
    * 传统分页(limit)为何效率低?优化方案有哪些(between and替换、延迟关联法、游标分页法)?
    * in和exists区别,范围查询
    • 那些情况适合索引呢?

    • 介绍常见的索引级别与其对应的场景?system/const/eq_ref/ref/range/index/all,开发注意点
      extra常见字段? Using filesort/Using temporary/Using index/Using where/Using index和where/Using index condition/ using intersect/using union/NULL

    • innodb和myisam的区别、锁 => 事务 =>外键=>行数统计、聚簇索引数据结构 =>存储结构=>存储文件 =>对主键的要求、全文索引

    • 索引的优缺点,读写方面,资源占用、

    • 主键索引对主键的要求

    • 常见适合创建索引的情况

    • mysql性能优化五大原则

    • 常见索引失效的情况

mysql 锁

mysql锁原理

锁的分类?
细粒度(myisam与innodb表锁 => 元数据锁、innodb页锁、innodb行锁,行锁)、是否互斥(共享/排它锁)、乐观/悲观锁、间隙锁 =>临建锁 => 插入意向锁的、行锁与意向锁、隐式锁和显式锁;分别讲解这些锁为了解决什么痛点?如何去解决的?细粒度和并发度的关系、如果关闭间隙锁?

mysql并发问题、事务隔离级别、锁

  • 事务的概念与acid

  • mysql常见并发问题(脏写、脏读、不可重复读、幻读),与对应的隔离级别(读未提交、读已提交、可重复度、串行化含义)、五种读的
    * 隔离级别与快照读/当前读之间的关系,RR/mvcc级别是否彻底解决幻读?
    * innodb和myisam锁机制的区别?为何innodb能支持行锁的底层原理?使用行锁的注意点?
    * 行锁原理:RC/RR级别用id主键列单列与范围操作?RC/RR级别用二级唯一索引列单列/范围操作?RC和RR用二级非唯一索引单列/范围操作?RC和RR用非索引单列/范围操作

    * 表锁存在的意义/用法?行锁存在意义/有点?
    * 间隙锁要解决什么问题?特点是什么?为何伴随死锁?如何解决死锁?插入意向锁要解决什么问题?
    间隙锁类型划分:唯一索引的间隙锁和普通索引的间隙锁区别、普通索引又要划分尾插和随机位置插入的区别?	  * 死锁* 锁结构?
    
  • mysql分表分库

    • 垂直分库概念
    • 垂直分表概念、案例、
    • 水平分表概念、案例、方案
  • 额外

    • mysql和es区别:交互式条件查询 => mysql无法动态创建索引,模糊查询 => mysql不支持全模糊和左模糊、存储非关系型数据 => mysql只能支持关系型

为什么mysql字段要使用NOT NULL

mysql表设计

设计一个工资表

疑问点:RR级别二级唯一索引,未命中,超出索引最大值范围n为何要在二级唯一索引 (n,+oo)加锁?
RR级别使用主键索引单行查询n位于主键值a到b未命中,为何在区间(0,a),(a,b)加间隙锁?
RR级别使用主键索引做范围查询,小于n的范围,mysql中大于n的临间值n2,为何会有(n,n2]的临建锁

mysql更新操作 => 依赖索引 => 否则锁全表,虽然在server层会释放无关行,但会浪费大量锁资源,影响系统并发度

Redis

数据结构与每种结构的用法

Redis事务

为何效率高,IO多路复用、单线程、基于内存、kv内存型数据库

缓存击穿、缓存雪崩、缓存穿透

缓存击穿的概念,解决方案,解决方案中可能存在死锁?通过设置过期时间解决死锁注意点有哪些?增加过期时间可以完美解决死锁问题,但这会不会导致其它问题吗?

缓存穿透概念,解决方案

缓存穿透的概念, 解决方案

redis中setnx命令的底层原理是什么?有什么应用场景? 原生的setnx存在哪些问题?

热点key定义、如何发现(服务器代理层日志、设计预期、经验)

redis与mysql双写一致性问题

常见的redis模型有哪些,重点聊一下边路器模型?为什么我们开发中最常用的是边路器模型,或者说边路器模型的写流程为何要先更新数据库再去删除缓存?为何一定要删除而不是去缓存?边路器的写模型也会存在数据不一致的风险吗?如果解决?(缓存双删)

redis实现分布式锁

分布式锁如何实现?原理是什么?(setnx原理,key是前缀+业务id,value是线程id,含义是)

分布式锁的业务场景

redis做分布式锁有哪些常见的问题?

redis应用场景;

redis事务

Springcloud

  • springboot和springcloud区别
  • 利用springboot开发简便性、服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控
  • 定义,多个服务多进程(1对1)

maven

九大生命周期

  • clean
  • validate
  • compile
  • test
  • package
  • verify
  • install
  • deploy

父项目遵守的规范

  • properties + dependicesManagment、包括javaversion和projectversion,
  • 继承springboot
  • modules

各个标签的左右是什么?(dependincesManagment和dependinces)规范性的意义、不规范的代价
①版本号不统一,修改困难,不同版本号jar包api差异大,处理起来较为影响开发效率
②层级不明确:容易造成jar包重复、不好管理天然的jar包冲突,比如tomcat-embed和sevlet-api

6、网络模式

7、netty框架介绍

8 redis集群与,未送达分布式存储与部署

es/网站数据访问量

高并发写入excel如何做规范

实际开发
基本合法性校验、保障 ,自己处理过那些空指针异常,结合之前笔记做下完善,
接口入参,string、collection等集合方面的处理

mysql问题扩展

mysql两款索引锁为何支持类型不同?统计行数与是否支持事务的关系?

or语句和and语句,建索引的区别是什么
无法对or语句的查询字段直接创建索引,需要把or条件拆分为一个个union,而后分别对这些被拆分的字段创建符单值索引

select * from student 
where stu_name = 'wzh' OR stu_class_id = 202305171357094319 OR stu_score = 1194
ORDER BY create_time DESC;EXPLAIN  select * from student where stu_name = 'wzh' 
union 
select * from student where stu_class_id = 202305171357094319 
union 
select * from student where stu_score = 100
ORDER BY create_time DESC;

在这里插入图片描述

  • union是对这三个独立sql取结果集的合集并去重,union All则是不去重
  • union连接中除了第一个语句是主查询,后面的语句都是UNION类型的查询,最后UNION RESULT是对前面所有的结果集取交集并取重,但涉及到order by依然会出现内排序的情况,暂时难以化解
  • type代表执行类型,ref即根据这一个查询条件,因为查询条件字段不是唯一性索引或主键索引,所以这一个条件中可能有多个值对应,同理,如果查询条件字段是唯一性索引或主键索引,所以这一个条件中只可能有一个值对应,所以type=const
  • ref代表使用查询字段中索引值的类型,比如有实际使用索引的查询中,ref不为空,通常上述查询条件都是一个常量,故ref = const,而连表查询中,被驱动表中使用的索引是一个字段,这个字段就代表一堆连连接字段值的集合,非常量值
    在这里插入图片描述
  • union语句上述写法中,单个select语句中不能使用order by,否则报错Incorrect usage of UNION and ORDER BY,如下在这里插入图片描述
    需要从语法上做解决,但这种情况依然不能解决UNION RESULT中出现文件内排序
    在这里插入图片描述
  • 试图用union来代替or绝非明智选择,union的选择非常非常慢,尽管union所连接的单条sql执行速度平均都是0.0.1s,但使用union连接后执行速度变为了0.7s,union ALL连接时间变为了0.35s,为何那么慢?

mysql基础架构

相关文章:

知识点大纲

学习方法 学习、整理笔记过程中&#xff0c;顺便整理出一个以问题为模版的大纲&#xff0c;到时候对着问题&#xff0c;就像是在和面试官讲解那样&#xff0c;相当于升级版的费曼学习法 除了看博客&#xff0c;问gpt外&#xff0c;亲自实验也是获取知识及加深印象的关键点 很…...

MySQL:库表操作

MySQL&#xff1a;库表操作 库操作查看创建字符编码集 删除修改备份 表操作创建查看删除修改 库操作 查看 查看存在哪些数据库&#xff1a; show databases;示例&#xff1a; 查看自己当前处于哪一个数据库&#xff1a; select database();示例&#xff1a; 此处由于我不处于任…...

8.3 End-to-end Data Protection (Optional)

8.3 End-to-end Data Protection (Optional) 为了提供从应用程序到NVM介质并返回到应用程序本身的稳健数据保护,可以使用端到端数据保护。如果启用了此可选机制,则将额外的保护信息(例如CRC)添加到逻辑块中,控制器和/或主机软件可以对其进行评估,以确定逻辑块的完整性。…...

python实现图像对比度增强算法

python实现直方图均衡化、自适应直方图均衡化、连接组件标记算法 1.直方图均衡化算法详解算法步骤公式Python 实现详细解释优缺点 2.自适应直方图均衡化算法详解算法步骤公式Python 实现详细解释优缺点 3.连接组件标记算法详解算法步骤8连通与4连通公式Python 实现详细解释优缺…...

【D3.js in Action 3 精译_020】2.6 用 D3 设置与修改元素样式 + 名人专访(Nadieh Bremer)+ 2.7 本章小结

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可视化最佳实践&#xff08;下&#xff09;1.4 本章小结 第二章…...

GIT命令学习 二

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️运维工程师的职责&#xff1a;监…...

LeetCode 150, 112, 130

文章目录 150. 逆波兰表达式求值题目链接标签思路代码 112. 路径总和题目链接标签思路代码 130. 被围绕的区域题目链接标签思路代码 150. 逆波兰表达式求值 题目链接 150. 逆波兰表达式求值 标签 栈 数组 数学 思路 本题很像 JVM 中的 操作数栈&#xff0c;当写出以下三行…...

c++应用网络编程之五Windows常用的网络IO模型

一、Windows的网络编程 其实对开发者而言&#xff0c;只有Windows和其它平台。做为一种普遍流行的图形OS&#xff0c;其一定会与类Linux的编程有着明显的区别&#xff0c;这点当然也会体现在网络编程上。Windows有着自己一套相对独立的上层Socket编程模型或者说框架&#xff0…...

PostgreSQL 中如何解决因大量并发删除和插入操作导致的索引抖动?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何解决因大量并发删除和插入操作导致的索引抖动一、理解索引抖动二、索引抖动的影响三…...

鑫创SSS1700USB音频桥芯片USB转IIS芯片

鑫创SSS1700支持IIC初始外部编&#xff08;EEPROM选项),两线串行总线&#xff08;I2C总线&#xff09;用于外部MCU控制整个EEPROM空间可以通过MCU访问用于主机控制同步的USB HID外部串行EEPROM&#xff08;24C02~24C16&#xff09;接口&#xff0c;用于客户特定的USB视频、PID、…...

计算机视觉发展历程

文章目录 前言一、发展历程1&#xff09;、萌芽期&#xff08;1960s-1970s&#xff09;2&#xff09;、基础发展期&#xff08;1980s&#xff09;3&#xff09;、系统开发期&#xff08;1990s-2000s&#xff09;4&#xff09;、深度学习兴起期&#xff08;2010s&#xff09;5&a…...

从安装Node到TypeScript到VsCode的配置教程

从安装Node到TypeScript到VsCode的配置教程 1.下载Node安装包&#xff0c; 链接 2.双击安装包&#xff0c;选择安装路径&#xff0c;如下&#xff1a; 3.一直点击下一步&#xff0c;直至安装结束即可&#xff1a; 这个时候&#xff0c;node会默认配置好环境变量&#xff0c;并且…...

Jackson详解

文章目录 一、Jackson介绍二、基础序列化和反序列化1、快速入门2、序列化API3、反序列化API4、常用配置 三、常用注解1、JsonProperty2、JsonAlias3、JsonIgnore4、JsonIgnoreProperties5、JsonFormat6、JsonPropertyOrder 四、高级特性1、处理泛型1.1、反序列化List泛型1.2、反…...

【算法】字符串

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、最长公共前缀二、最长回文子串三、二进制求和四、字符串相乘 引言 字符串题&#xff0c;大多数是模…...

Python酷库之旅-第三方库Pandas(037)

目录 一、用法精讲 116、pandas.Series.div方法 116-1、语法 116-2、参数 116-3、功能 116-4、返回值 116-5、说明 116-6、用法 116-6-1、数据准备 116-6-2、代码示例 116-6-3、结果输出 117、pandas.Series.truediv方法 117-1、语法 117-2、参数 117-3、功能 …...

iOS 左滑返回事件的控制

0x00 视图结构 1-根视图 1.1-控制器A 1.1.1-控制器B 1.1.1.1-控制器C 0x01 控制 通过设置 self.navigationController.interactivePopGestureRecognizer.enabled 为 YES 或 NO 来控制当面界面&#xff0c;是否能左滑返回 在 控制器B 的生命周期方法内&#xff0c;设置属性 s…...

= null 和 is null;SQL中关于NULL处理的4个陷阱;三值逻辑

一、概述 1、NULL参与的所有的比较和算术运算符(>,,<,<>,<,>,,-,*,/) 结果为unknown&#xff1b; 2、unknown的逻辑运算(AND、OR、NOT&#xff09;遵循三值运算的真值表&#xff1b; 3、如果运算结果直接返回用户&#xff0c;使用NULL来标识unknown 4、如…...

拖拽上传(预览图片)

需求 点击上传图片&#xff0c;或直接拖拽图片到红色方框里面也可上传图片&#xff0c;上传后预览图片 效果 实现 <!DOCTYPE html> <html lang"zh-cn"><head><meta charset"UTF-8"><meta name"viewport" content&…...

Oracle 12c新特性 In-Memory Column Store

Oracle 12c引入了一项重要的特性——In-Memory Column Store&#xff08;简称IM或In-Memory&#xff09;&#xff0c;这一特性极大地提升了数据库在处理分析型查询时的性能。以下是关于Oracle 12c In-Memory特性的详细介绍&#xff1a; 一、基本概念 In-Memory Column Store&…...

【数据结构】二叉树———Lesson2

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…...

mongodb数据导出与导入

一、先去检查mongodump mongodump --version 如果报 mongodump version: built-without-version-string 或者其他的较老的版本&#xff0c;直接去下载最新的【传送门】 【以Ubuntu18.04为例】 安装工具 假设你下载的是 .tgz 文件&#xff08;适用于 Linux 系统&#xff09;&am…...

电路学习——经典运放电路之滞回比较器(施密特触发器)(2024.07.18)

参考链接1: 电子设计教程29&#xff1a;滞回比较器&#xff08;施密特触发器&#xff09; 参考链接2: 滞回比较器电路详细分析 参考链接3: 比较器精髓&#xff1a;施密特触发器&#xff0c;正反馈的妙用 参考链接4: 比较器反馈电阻选多大&#xff1f;理解滞后效应&#xff0c;轻…...

NVIDIA Container Toolkit 安装与配置帮助文档(Ubuntu,Docker)

NVIDIA Container Toolkit 安装与配置帮助文档(Ubuntu,Docker) 本文档详细介绍了在 Ubuntu Server 22.04 上使用 Docker 安装和配置 NVIDIA Container Toolkit 的过程。 概述 NVIDIA 容器工具包使用户能够构建和运行 GPU 加速容器。即可以在容器中使用NVIDIA显卡。 架构图如…...

JavaWeb day01-HTML入门

Web前端 课程安排 HTML、CSS简介 HTML快速入门 实现标题排版 新闻标题样式...

驱动框架——CMSIS第一部分 RTE驱动框架介绍

一、介绍CMISIS 什么是CMSIS&#xff08;cortex microcontrol software interface standard一种软件标准接口&#xff09;&#xff0c;官网地址&#xff1a;https://arm-software.github.io/CMSIS_6/latest/General/index.html 包含的core、driver、RTOS、dsp、nn等部分&…...

Debezium日常分享系列之:Debezium2.7版本PostgreSQL数据库连接器

Debezium日常分享系列之:Debezium2.7版本PostgreSQL数据库连接器 一、概述二、连接器的工作原理安全快照初始快照的默认工作流程行为临时快照触发临时增量快照触发临时阻塞快照增量快照增量快照流程Debezium 如何解决具有相同主键的记录之间的冲突快照窗口触发增量快照具有附加…...

保障信息系统安全保护等级调整期间的安全性

保障信息系统安全保护等级调整期间的安全性&#xff1a; 策略与实践 在当今数字化时代&#xff0c;信息系统已成为企业和组织运营的核心支撑。为了适应不断变化的业务需求和安全威胁环境&#xff0c;信息系统安全保护等级的调整成为必要之举。然而&#xff0c;这一调整过程可能…...

实战:shell编程之全量命令练习

概叙 槽点~~~~~~~&#xff01; 往期shell相关文章回顾&#xff0c;有兴趣的可以自行阅读和练习。 科普文&#xff1a;一文搞懂Vim-CSDN博客 科普文&#xff1a;jvm笔记-CSDN博客 科普文&#xff1a;一天学会shell编程-CSDN博客 科普文&#xff1a;Linux服务器巡检小结_lin…...

在 CentOS 7 上编译安装 Python 3.11

安装必要的依赖 首先&#xff0c;你需要安装一些开发工具和库&#xff0c;以便编译 Python 和 OpenSSL&#xff1a; yum -y groupinstall "Development tools" yum install -y wget gcc-c pcre pcre-devel zlib zlib-devel libffi-devel zlib1g-dev openssl-devel …...

Qt 4.8.7 + MSVC 中文乱码问题深入分析

此问题很常见&#xff0c;然而网上关于此问题的分析大多不够深刻&#xff0c;甚至有错误&#xff1b;加之Qt5又更改了一些编码策略&#xff0c;而很多文章并未提及版本问题&#xff0c;或是就算提了&#xff0c;读者也不重视。这些因素很容易让读者产生误导。今日我彻底研究透了…...

用asp做网站遇到的问题/线上销售渠道有哪些

查看配置文件&#xff1a;https://raw.githubusercontent.com/antirez/redis/5.0.3/redis.conf 主要参数说明 redis.conf 配置项说明如下&#xff1a; 序号配置项说明1 daemonize no Redis 默认不是以守护进程的方式运行&#xff0c;可以通过该配置项修改&#xff0c;使用 y…...

做网站销售的话术/seo首页网站

#!/bin/bash cat /root/.ssh/id_rsa.pub >> /root.ssh/authorized_keys 将公钥导到auth文件中去 host1cat /root/a ##a文件里的内容是你想要scp公钥的目标主机地址 for i in $host1; do command1"scp /root/.ssh/authorized_keys $i:/root/.ssh/authorized…...

单招网站开发/企业网站建设公司

eclipse插件的安装方法大体有以下三种:...

免费网站建设市场/电脑网络优化软件

计算机二级access题库答案在文末1&#xff0e;在Access数据库中&#xff0c;一个关系就是一个【 A】。A)二维表 B)记录C)字段 D)数据库 综合数据2. 设有部门和员工两个实体&#xff0c;每个员工只能属于一个部门&#xff0c;一个部门可以有多名员工&#xff0c;则部门与…...

python发布WordPress/搜索引擎优化内容包括哪些方面

云服务器到期了怎么迁移数据 内容精选换一换普通的按需实例(不含本地盘、FPGA卡)、竞价模式的竞价计费实例(不含本地盘、FPGA卡)&#xff0c;关机后&#xff0c;基础资源(vCPU、内存、镜像)不再计费&#xff0c;绑定的云硬盘(包括系统盘、数据盘)、弹性公网IP、带宽等资源按各自…...

东莞模板建站哪家好/免费网络项目资源网

任务管理器的设置: 第一步&#xff1a;点击“开始”菜单——>选择“运行”——>在运行中输入“GPEDIT.MSC”(不含引号)&#xff0c;点击确定打开组策略&#xff1b;第二步&#xff1a;展开左边“用户配置”下方的“管理模板”前面的号——>再展开“系统”前面的号——…...