2020-06-17:技术清单

统一异常处理:
特定异常处理
自定义异常处理
统一日志处理:log4j ,logback日志根据
日志级别error ,warn,info debug

NGINX REMQ 消息队列
设计模式: 单例模式:因为是实例化一次节省内存开销

消息队列中间件:rabbitMQ
消息队列解决的问题:
异步处理
应用解耦
流量削峰

=================
秒杀,下单,购物车,后台管理系统
mysql并发:几百并发
缓存,消息队列异步处理请求
Redis分布缓存
jmeter压测根据
内存标记:jvm缓存同步一致性
increment
decrement
部署在多个Tomcat 用NGINX做负载均衡
zookeeper节点监听

限流
消息队列的面试技巧

幂等性
数据不会丢失
生产事故

============================
面试必须掌握
java基础,设计模式,io,多线程,集合
数据库优化
mysql ,oracle
缓存,消息队列,消息中间件
NGINX 高并发,集群,Redis,rabbitmq
有较强的学习能力,问题分析和处理能力,具有团队精神
雪崩,穿透
=============
rabbitmq入门

rabbitmq集群高可用部署

秒杀用过消息队列 订单模块来消费

订单系统,每次下订单发送一条消息到mq,库存系统获取消息更新库存

消息队列的有点和缺点

kafka,activemq,rabbitmq,rocketmq有什么区别

保证消息队列的高可用

调用api发消息

消息重复消费
幂等性
消息可靠性传输
消息顺序
消息队列消息积压
消息延时
设计消息队列的思路
=====
面试从一个点铺开
缓存,mq 从浅入深

面试官:你在系统里用过消息队列吗?

面试官:那你说一下你们在项目里是怎么用消息队列的?

面试官:那你们为什么使用消息队列啊?

面试官:那你说说用消息队列都有什么优点和缺点?

面试官:kafka、activemq、rabbitmq、rocketmq都有什么区别?

面试官:那你们是如何保证消息队列的高可用啊?

面试官:如何保证消息不被重复消费啊?如何保证消费的时候是幂等的啊?

面试官:如何保证消息的可靠性传输啊?要是消息丢失了怎么办啊?

面试官:那如何保证消息的顺序性?

面试官:如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?

面试官:如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路

====================
rabbitmq解耦,异步,削峰

消息队列的技术选型

activemq,rocketmq,kafka,rabbitmq 的区别和适合场景

一致性问题
不需要同步调用接口

   高延时使用场景使用mq

rabbitmq保证高可用:普通集群模式:缺点:集群产生大量数据传输,可用性没又保障
镜像集群模式:每个节点包含queue的全部数据,消费的时候从任何一个节点消费都没有问题,每一个节点都包含queue的全部数据
怎么实现高可用,不是分布式的,queue的数据量很大,机器容量无法容纳

kafka broker进程相当于集群节点 topic

Redis集群

==============================

select * from tb_sc_province--存放province_id 和 province_name 省级接口key:tb_sc_province
select * from tb_sc_city--存放province_id 和 city_id 和 city_name 地市接口key:tb_sc_city
select * from tb_sc_area--存放province_id 和 city_id 和 area_id 和 area_name 区县接口 key:tb_sc_area
select * from tb_sc_develop_person--每天两点count(HALL_NAME)查询一下数据有没有变化有变化就更新Redis数据
--province_id 和 city_id 和 area_id 和 hall_id 和 hall_name 营业厅接口key:tb_sc_develop_person_hall
--province_id 和 city_id 和 area_id 和 hall_id 和 DEVELOP_PERSON_ID 和 NAME 发展人接口 key:tb_sc_develop_person_develop

public class QuertConstant {

public static final String WKB_COMMON_PROVINCE = "WKB_COMMON_PROVINCE";//"WKB:COMMON:PROVINCE"
public static final String WKB_COMMON_CITY = "WKB_COMMON_CITY";
public static final String WKB_COMMON_AREA = "WKB_COMMON_AREA";
public static final String WKB_COMMON_HALL = "WKB_COMMON_HALL";
public static final String WKB_COMMON_DEVELOP = "WKB_COMMON_DEVELOP";

}

es Lucene 倒排索引

es 是如何实现分布式的

======
数据的存储过程

final和finally的区别
==和equals的区别

ioc和aop的理解

视图

单表最大数据量

扩容,数据库

redis主从复制,哨兵原理

=====================================
看简历

sso
springboot自动配置(SpringBootConfiguration):就是springboot准备了javaConfig类可以选择性的使用其中一部分
EnableAutoConfiguration:开启自动配置
AutoConfigurationPackage:自动扫描包的路径
javaConfig:用java代码进行项目的配置,用java代码代替项目里面的xml代码

ClassPathXmlApplicationContext
AnnotationConfigWebApplicationContext:以annotation(注解)的方式初始化spring容器 spring入口

为什么Tomcat会去调用java代码:servlet3.0api的规范:spi机制去实现的

spring 对象管理的作用域

全局变量线程问题
orm框架

和$的区别

嵌套查询和嵌套结果又什么区别
hashMap的底层:(扩容为原来的2次幂)
cooklie也session的区别
浏览器把cooklie禁用了session还能用吗
数据库的隔离级别,默认的隔离级别
数据库死锁的情况
数据库的优化:建表三范式
索引
分表分库
垂直分表
水平分表:怎么确认数据在哪张表里面

数据库的优化:
sql分析
MySQL常用索引
索引的低层结构
一般索引,组合索引,主键索引
redis和数据一致性:binglog
redis持久化操作:aof,rdb持久化策略
restful风格
接口幂等性:redis天然幂等性

spring创建对象,对象的作用域,单例的线程问题
生命周期
jdk和cglib 使用场景

分布式的理解:将不同的业务分开
分布式的第一种:web服务,mysql数据库服务部署到不同的机子,
微服务的架构:同一个系统中,把不同的业务
组件:注册中心,各种服务注册进去
ribbon或者feign
配置中心
网关
zul:限流权限“rbac:基于角色的设计 角色:权限:用户
jwt
分布式事务

同一个系统中,不同的也业务分开,单独的团队技术选型,开发,部署,维护
注册中心:eureka:服务可能有多个
负载均衡:ribbon,feign:拿到服务列表做负载均衡
断路器:hystrix:熔断,降级,限流
服务网关:zuul:n多个微服务是要暴露给前端调用的,如果是一个服务就有一个地址,非常不好管理的,让他统一地址,
这是第一个作用,第二个作用还可以对我要访问的微服务做统一鉴权
服务配置:SpringCloud Configure 项目配置分散到个个微服务不利于管理,所以用一个配置中心统一管理起来

角色,权限,用户,资源
用户和角色是多对多,角色和权限也是多对多
jwt
分布式事务二阶段提交
最大努力通知
最终一致性
事务消息
双写一致性
redis分布式锁
zookeeper动态节点
tcc

redis中央缓存

数据库的优化:

表结构没有设计错,sql没有写错,分库分表

分表算法,插入的时候就要确定好在哪张表,查询从相对应的表拿出来
区间
时间
hash算法,通过一个标识确定表
跨表了用union
索引:myisam不支持事务(添加和查询)(表锁),innodb支持事务(默认)(行锁):btree,索引降低查询次数
b+树,二叉树
有底层的数据库引擎

比如说eureka,因为服务有很多个,那么有可能随时会增加,这个时候我们就需要一个注册中心,去把它管理起来,然后通过注册中心,我们可以找到这些东西
然后用feign去调用服务,用ribbon进行负载均衡,服务可能会崩掉,这个时候就要进行熔断,降级隔离会用到hystrix,对于配置文件个统一管理就会用都配置中心
configsever

分布式从字面上理解,所谓的分布式就是将不同的业务分散到不同的地方
比如说,最简单的分布式就是可以把 数据库服务mysql和提供给用户访问的web服务分,然后把它部署到不同机子上面,那这个也叫分布式,这个是常用的
分布式的一种
第二种分布式,现在比较流行的就是微服务的架构
所谓的微服务的架构就是,他也是分布式的一种,
就是在同一个系统中把不同的业务拆分成一个单独的服务,而对于这个服务呢,可以交给一个团队去独立的技术选型,独立的部署,独立的运维,这样是非常有好处的
这就是我对分布式的一些理解
做微服务主要用的都是springcloud

springcloud的几个组件,
第一个既然是众多的服务啊,第一个服务就要涉及到一个叫做注册中心,也就是他主要承担的责任就是把我们各种服务把它注册到里面进去,然后注册到这里面进去了
以后呢,以后要调他的要先从这里面来拿服务,这个就是注册中心,第二个既然有服务,那我这个服务,同一个服务有可能注册多个,所以第二个组件
feign,从注册中心拿到一堆服务列表,比如说要拿一个用户服务,他有可能拿到三个或者五个这个时候就要按照一定的负载均衡策略然后完成调用
第三个的微服务话除了正常的调用以外呢我们还需要做一下的事情,比如说我在调这个服务的时候,这个服务突然挂了,这个时候为了保证服务的健壮性的话,要用到springcloud
的另一个组件叫hystrix,然后他主要做的是熔断和降级一级以及限流的,第四个的话,我们的服务当中呢可有一下些配置,而这配置如果我们把它分散到
不同的项目当中,不同的微服务中,这样子管理起来是不好管理的,所有需要一个统一配置中心springcloud configure
第五个也是最后一个就是网关,就像我们有n多个微服务,而这些服务呢最终是要暴露给前端调用的,而前端呢如果是一个服务有一个地址的话,他是非常不好
管理的,这个时候就需要去统一地址,这个第一个,第二个作用是,还可以对要访问的微服务做统一鉴权等等操作,这些操作统统交给微服务网关去处理
也就是在springcloud当中zuul,用这个来进行操作,这就是springcloud的五大组件
权限的设计现在用的比较多的一个叫做rbac

还有一种是微服务,就是同一个系统中吧不同的业务分开,给不同的开发组针对各自的业务独立选型看,开发,部署运维

偏移量和到分页怎么优化
定时方法多线程
k8s

git修复分支
线程,数据库优化

springboot application
运行机制
springbootApplication的运行机制:其实就是springboot通过根据配置文件,自动装配所属依赖的类,在用动态代理的方式,注入到spring容器里

mybatis二级缓存怎么开启:只需要在mybatis配置文件去开启二级缓存,并且在mapper.xml在上cache标记
redis实现缓存代替mybatis二级缓存
缓存雪崩,缓存穿透,缓存击穿
ribbon负载均衡策略
熔断器默认的阀值线程数:默认是三个,三千毫秒
mysql底层索引数据结构
索引数据结构:hash和B+tree
频繁被修改的数据不做索引
jpa:是一种规范

spring如何解决循环依赖
aspectj

jdk和cglib的区别:
jdk是通过拦截器+反射机制生成一个实现代理接口的匿名类
cglib是利用asm开源包,对代理对象的class文件加载进来,通过修改其字节码生成子类来处理(asm:字节码操控框架)

跳跃表

allkeys-lru:对所有的键通用,删除最近最少使用的key
volatile-lru:对设置了expire的key有用,删除设置了expire的最近最少使用的key
allkeys-random:对所有的key通用,随机删除一部分key
volatile-random:对设置了expire的key有用,随机删除一部分key
volatile-ttl:对设置了expire的key有用,优先删除剩余时间短的key
noeviction:不删除,内存不足写入会报错

Linux:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343