2021-07-30

Linux常用命令

1、查看当前工作目录:pwd
2、查看当前目录下的内容:ll
3、上一级目录:cd…
4、保存并退出::wq

docker容器常用命令

1、查看正在运行容器列表:docker ps
2、查看所有容器(包括未运行的):docker ps-a
3、启动docker容器:docker start first
4、重启docker容器:docker restart first

MySQL八股文

mysql存储引擎总共有九种,常用的数据引擎有MyISAM、InnoDB、MEMORY、ARCHIVE

对于MySQL 5.5及更高版本,默认的存储引擎是InnoDB。在5.5版本之前,MySQL的默认存储引擎是MyISAM。
MyISAM:非聚集索引,索引和数据分别存放,非事务安全型,支持表锁;
InnoDB:数据和索引在一个文件中,事务安全型,支持行锁。 

Redis存储的数据类型

1.string:字符串,最简单的key-value存储,短信验证码,配置信息等,就用这种类型来存储。

2.hash:包含键值对的无序散列表,一般key为ID或者其他唯一标识,value对应的就是详情了。如商品详情,个人信息详情,新闻详情等

3.list:列表,因为list是有序的,比较适合存储一些有序且数据相对固定的数据。如省市区表、字典表。List还可以做消息队列。

4.set:无序集合,可以简单的理解为ID-List的模式,如微博中一个人有哪些好友,set最牛的地方在于,可以对两个set提供交集、并集、 差集操作。例如:查找两个人共同的好友等。

5.zset:有序的集合,可以应用与排行榜。

Redis的过期删除策略

1.定时删除:在设置键的过期时间的同时,创建一个定时器timer,让定时器在键的过期时间来临时,立即执行对键的删除操作。

2.惰性删除:放任键过期时间不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过 期,就返回该键。

3.定期删除:每隔一段时间程序就对数据库进行一次检查,删除里面的过期键。

Redis持久化方式

RDB是默认的持久化方式,按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。通过配置文件中的save参数来定义快照的周期。

AOF则是将redis执行的每次写命令记录到单独的日志文件中,当重启redis会重新将持久化的日志中文件恢复。

RDB安全性低。RDB是间隔一段时间进行持久化。如果持久化之间redis发生故障,会发生数据丢失。

AOF安全性高。即使中途服务器宕机,可以通过redis-check-aof工具解决数据一致性问题。

AOF比RDB更安全,但是RDB比AOF的性能更好。

Redis的缓存击穿问题

缓存击穿是什么:缓存击穿是指缓存中没有但数据库中有的数据(一般是指缓存时间到期),这是由于并发用户特别多,同时读取缓存没读到数据,又同时去数据库中取数据,引起数据库压力瞬间增大,造成过大压力。

解决方案:a、设置热点数据永远不过期。简单来讲就是不设置过期时间。

​ b、加互斥锁。简单来讲就是操作数据库需要排队。

Redis的缓存穿透问题

缓存穿透是指缓存和数据库中都没有数据,而用户不断发起请求。

解决方案:a、增加接口层校验,如:用户鉴权…

​ b、key - value存入缓存,从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value写为key-null,缓存有效时 间可以设置短一点。

​ c、采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉.

Redis的缓存雪崩问题

缓存雪崩是指在高并发下,大量的缓存key在同一时间失效,导致大量的请求落到数据库上。

解决方案:a、缓存数据的过期时间设置随机,防止同一时间大量数据过期显现发生。

​ b、一般并发量不是特别多的情况下,使用最多的解决方案是加锁排队。

​ c、给每一个缓存数据增加相应的缓存标记,记录缓存是否失效,如果缓存标记失效,则更新数据缓存。

spring cloud五大组件

1.Eureka(和nacos类似):注册中心,专门负责服务的注册与发现

2.Feign:基于Ribbon和Hystrix的声明式服务调用组件

3.Ribbon:负载均衡的服务调用组件,具有多种负载均衡调用策略

4.Sentinel:服务器容错组件,实现了断路器模式,为依赖服务的出错和延迟提供了容错功能

5.Gateway:微服务网关,对请求提供路由及过滤功能

spring boot

spring boot主要有3个重要的注解;

1.@SpringBootConfiguration:申明这是一个配置类,相当于spring中的xml文件,用于加载配置使用

2.@ComponentScan:指定包扫描的位置,如果不指定就默认扫描该注解修饰的类所在包及其子包

3.@EnableAutoConfiguration:里面的@Import注解会导入selectImport方法,该方法会将mata-info下的spring.factories中配置 的Bean的全限定类名,然后根据Condition注解配置的条件,判断这个Bean是否存在,如果不存在就要创建这个Bean对象。

spring

spring的初始化过程:

1.定位并加载配置文件

2.获取到bean的定义信息

3.实例化bean对象

4.DI注入属性

5.后置处理器增强

6.初始化bean对象

IOC:
    IOC可以理解为是一种思想,核心是控制反转,帮我们创建并管理Bean,当我们需要的时候,通过DI依赖注入,就可以拿到相应的Bean对象,实现了对象间的解耦。在spring中,我们可以理解为在spring启动时,会读取到Bean的定义信息,然后通过反射创建对象,并注入了属性,然后放到一个map容器中,需要的时候通过@Autowired、@Resource等注解或者xml里面的ref属性注入返回给我们。
AOP:
    在spring启动时,会生成该类的动态代理类,根据我们配置的前置通知、后置通知等,对相关方法织入切面代码,我们在调用方法时,spring会调用代理对象增强后的方法,声明式事务就是通过AOP实现的,在方法执行前开启事务,在方法执行完,根据执行结果执行事务的提交或回滚。
    如果被代理类实现了某个接口,spring会通过JDK的动态代理生成代理对象,也就是生成一个和被代理类实现同样接口的类作为代理对象。
    如果被代理类没有实现接口,就会通过CGLIB的方式生成动态代理对象,也就是创建一个继承了被代理类的类作为代理对象。

SpringMVC流程

SpringMVC有3大核心组件:处理器映射器、处理器适配器、视图解析器

1.核心控制器接收前端请求

2.核心控制器驱动处理器映射器将请求路径映射成执行链返回

3.核心控制器驱动处理器适配器将执行链适配到对应的处理器

4.处理器处理请求,返回ModelAndView

5.视图解析器进行解析后,返回view给核心控制器

6.核心控制器返回给前端

7.前端渲染后返回给浏览器

抽象类和接口的区别

抽象类:1.抽象类使用abstract修饰

​ 2抽象类可以有构造器

​ 3.抽象方法可以有public、protected、default修饰符

​ 4.抽象方法可以继承一个类和实现多个接口

​ 5.可以有抽象方法和具体方法

​ 6.抽象类是对类本身的抽象,表达的是is a的关系。比如:BMW is a Car,抽象类包含并实现子类的通用特性,将子类存在差异化的特性进行抽象,交由子类去实现。

接口:1.接口使用interface修饰

​ 2.接口中不能定义构造器

​ 3.接口中只能使用public修饰

​ 4.接口只可以继承一个或多个其他接口

​ 5.接口的方法全部都是抽象方法

​ 6.接口是对行为的抽象,表达的是like a的关系。比如:Bird like a Aircraft(小鸟像飞行器一样可以飞),但其本质上is a Bird。接口的核心是定义行为,即实现类可以做什么,至于实现类主体是谁,是如何实现的,接口并不关心。

相同点:1.都不能被实例化

​ 2.可以将抽象类和接口类型作为引用类型

​ 3.一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类

线程池

当线程池中有任务需要执行时,线程池会判断如果线程数量没有超过核心数量就会新建线程池进行任务执行,如果线程池中的线程数量已经超过核心线程数,这时候任务就会被放入任务队列中排队等待执行;如果任务队列超过最大队列数,并且线程池没有达到最大线程数,就会新建线程来执行任务;如果超过了最大线程数,就会执行拒绝执行策略。

数据库设计三大范式

1、第一范式(确保每列保持原子性)
2、第二范式(确保表中的每列都和主键相关)
3、第三范式(确保每列都和主键列直接相关,而不是间接相关)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DAYTOY_z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值