如果数据库有千万数据,redis只能存储20万,那么如何保证redis中的数据是热点数据?
通过合适的淘汰策略,删除不经常访问的数据 allkeys-lru:所有 key 通用,优先删除最近最少使用的 key。
给你一个需求,你从拿到需求到上线需要做什么
先分析需求,然后设计数据库,排期,写相关文档,拉分支,开发,测试,上线
Controller或者service是线程安全的吗?如何保证线程安全呢?
不是,因为他们都是基于Spring的单例,功能类;我们可以加锁或者使用ThreadLocal解决,如果是一些原子操作的话可以使用原子类
不想加锁怎么保证线程安全 用原子类
一般Controller和Service产生线程安全的主要根源成员变量
单例线程安全吗?
不安全,在多线程环境下去操作成员变量的话就会导致线程安全问题.需要进行线程安全处理
spring中beanfactory与factorybean区别
这是两个不同的东西,BeanFactory是Spring的核心容器,负责创建和管理Bean的生命周期。我们用这个类可以获取bean创建bean,管理bean。
FactoryBean的作用是用于创建复杂的Bean实例或者在创建Bean实例的过程中进行一些定制化操作,它允许我们开发人员通过自定义的逻辑来创建Bean实例。
浏览器输入域名整个的访问流程是什么?
会先去缓存中找IP地址,如果缓存中没有,会去我们系统的host文件找,如果还没有,会发请求去dns域名解析器
拿到需求 - 需求上线整个流程是什么
先分析需求,然后设计数据库,排期,写相关文档,开发,拉分支,测试,上线
Springcloud的负载均衡
在通过openfeign进行服务之间远程调用的时候可以设置一些负载均衡策略,轮询,随机,权重,响应时间,iphash
ArrayList的默认大小:10
nacos注册原理
Nacos 的注册原理是注册方将自己的服务实例信息注册到 Nacos Server,而订阅方通过订阅服务名来获取相应的服务实例信息。Nacos Server作为中心协调器,负责维护和更新服务实例信息,并提供给订阅方进行服务发现和调用。
In或者not in 为啥查询慢?有什么替代方案吗?
In和not in在不同场景可能会造成索引失效,当in和not in后面的数据量小的时候,索引是生效的,当数据量比较大的时候相当于全表扫描,索引失效,查询慢
使用join或者exists替代
-
加索引可以提高我们的查询效率,你知道加索引的原则吗?
- 可以给主键,经常用来查询的字段和分组排序使用的字段加索引
- 在where中使用不到的字段不要设置,包括group by 以及order by
- 数据量小的表不要使用索引
- 有大量重复数据的列上不要创建索引,例如性别等
- 经常更新的表不适合创建索引,因为索引维护需要成本
- 不建议用无序的值作为索引,例如身份证,UUID,Hash等
你说的索引增加维护成本是指的哪一方面?
更新数据的时候同时也会更新索引树
Mq的信息进去死信队列后,除了人工干预不能用任务调度吗?
能,我们可以是使用定时器定时的去查询日志表,然后补偿(就是任务调度)
针对项目架构这一块,你有没有做过什么具体的工作吗?
我去项目组的时候架构已经搭建的差不多了,我主要负责的是在架构基础上编写核心接口
当时我们组的后端人员不多,四个左右,所以当时在搭建架构的时候我也参与过技术调研讨论和简单的环境搭建(reids集群,nacos集群)
容器化部署了解过吗?
Docker,我们上个项目就是通过docker部署的,编写dockerfile,在dockerfile中可以指定需要使用的基础镜像、安装依赖项等,然后执行docker build 命令,根据 Dockerfile 构建一个包含应用程序和其依赖项的镜像,然后执行 docker run 命令,根据镜像创建并运行容器。如果微服务体量比较大的情况下可以使用Docker Compose来进行部署。
git 命令
在公司,分支使用,git branch分支名 创建分支 ,checkout调到创建的分支,git push 推,git pull 拉取,merge合并
aof文件满了redis还会继续执行吗
当 Redis 的 AOF(Append Only File)文件满了之后,Redis 将停止写入数据并进入只读模式, 这将导致 Redis 处于不可写状态,无法执行写操作。此时 Redis 仍然可以执行读操作,并且可以将 AOF 文件清空以继续写入数据。
redis的AOF会存储get命令吗
AOF机制并不记录get命令。因为get命令只是读取操作,它并不对服务器中的数据进行修改,所以没有必要将它记录在AOF文件中。AOF文件只记录写操作,用于恢复服务器状态