1.Maven 中A依赖B B依赖C 那么A可以使用C中的类吗?
*按照依赖关系,可推C继承A,则C可以使用A中修饰符为public,protected的类
2.SpringBoot中有一个类标记了@Controller注解,通过自动扫描把这个类的对象加入IOC,那么这个 类应该放那?
*在@SpringBootApplication所在包或者下面的子包,才能被自动扫描到
#3.通过Maven下载jar包,下载失败怎么处理
*a.使用文件搜索工具,输入.lastupdate删除所有以.lastupdate结尾的文件。updataMaven。
*b.通过报错信息了解报错jar包,找到并且删除加拷贝相应可用jar,手动导入本地库。
*c.修改pom文件中的个别字符或者空格格式,多updata几次。
*d.仓库全删除了,全部重新下载。
5/6.项目的单一架构和分布式架构有什么本质区别
*单体式架构
--> 只需要一个模块,所有的功能部署在一起,流量小!
面对简单业务时开发,测试,部署,扩容简单易行,有优势
编译慢,启动慢,代码冲突,扩展不易
*分布式架构
--> 分模块拆分部署系统应用功能,服务之间互相调用。实现了流量分担,解决了高流量并发
面对复杂业务性能好,效率高,可扩展性可优化性强
7.分布式和集群有啥区别
*集群
集群倾向于物理概念,即多台机器组成一个集群。这多台机器是否有合作关系并不能保证
但是从物理角度,由于都部署在一起,在同一个机房,就可以称之为集群。
*分布式
分布式倾向于逻辑概念,即多个节点或程序为了一个共同的目标,部署在一个或者多个物理机器上。
负责具体的业务逻辑处理,是一种工作方式。
8.实现分布式的主流技术
1.SOA架构(面向服务的架构)
Dubbo
2.微服务(MicroServices)架构
springboot
springcloud
3.服务网格(Service Mesh)架构
9.注册中心起到的作用
保存某个服务所在地址等信息,方便调用者实时获取其他服务信息
服务提供者注册服务
服务消费者服务发现
10.理解负载均衡
负载均衡即是代理服务器将接收的请求均衡的分发到各服务器中
负载均衡主要解决网络拥塞问题,提高服务器响应速度,服务就近提供,
达到更好的访问质量,减少后台服务器大并发压力。
11.悲观锁和乐观锁
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,
所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。
传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。
乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改
,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。
乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。
两种锁各有优缺点,不可认为一种好于另一种,像乐观锁适用于写比较少的情况下,
即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。
但如果经常产生冲突,上层应用会不断的进行retry,这样反倒是降低了性能,所以这种情况下用悲观锁就比较合适。
12.redis的常用数据类型
Strings
Lists
Sets
Sorted Set
hashes
13.???
倒序加入表中
orange grape banana apple
14.Redis的持久化机制是如何工作的
1、快照(snapshots)
缺省情况情况下,Redis把数据快照存放在磁盘上的二进制文件中,文件名为dump.rdb。你可以配置Redis的持久化策略,例如数据集中每N秒钟有超过M次更新,就将数据写入磁盘;或者你可以手工调用命令SAVE或BGSAVE。
工作原理
. Redis forks.
. 子进程开始将数据写到临时RDB文件中。
. 当子进程完成写RDB文件,用新文件替换老文件。
. 这种方式可以使Redis使用copy-on-write技术。
2、AOF
快照模式并不十分健壮,当系统停止,或者无意中Redis被kill掉,最后写入Redis的数据就会丢失。这对某些应用也许不是大问题,但对于要求高可靠性的应用来说,
Redis就不是一个合适的选择。
Append-only文件模式是另一种选择。
你可以在配置文件中打开AOF模式
3、虚拟内存方式
当你的key很小而value很大时,使用VM的效果会比较好.因为这样节约的内存比较大.
当你的key不小时,可以考虑使用一些非常方法将很大的key变成很大的value,比如你可以考虑将key,value组合成一个新的value.
vm-max-threads这个参数,可以设置访问swap文件的线程数,设置最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的.可能会造成比较长时间的延迟,但是对数据完整性有很好的保证.
自己测试的时候发现用虚拟内存性能也不错。如果数据量很大,可以考虑分布式或者其他数据库
15.redis主从复制集群中配置哨兵起到什么作用
1.监控所有节点数据库是否在正常运行。
2.master数据库出现故障时,可以自动通过投票机制,从slave节点中选举新的master,实现将从数据库转换为主数据库的自动切换。
16.????
命令格式:mkdir -p
说明:建立一个子目录。
参数:-p 确保aaa目录名称存在,如果aaa目录不存在的就新创建一个
17.???
-r 递归处理,将指定目录下的所有文件与子目录一并处理
cp -r /usr/men /usr/zh
将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中
18.pwd是个啥?
pwd
显示工作目录的路径名称
19.MyBatis的Mappeer.xml配置文件中#{}和${}有什么区别?
#{} 这种取值是编译好SQL语句再取值
#{}方式能够很大程度防止sql注入。
${} 这种是取值以后再去编译SQL语句
$方式无法防止Sql注入。
$方式一般用于传入数据库对象,例如传入表名.
20.假设spring boot环境下yml配置文件中偶一个属性,如何通过@Value取出这个属性的值
@Configuration注解是必须的,@Component同样适用
@Value("${spring.redis.port:#{null}}")
其中
:#{null}
作用为在取不到对应配置值时,采用默认值null赋值
21.在liunx中如何通过命令查看指定进程信息?
ps -ef|grep 进程名
22.在liunx中如何通过命令查看指定进程占用的端口号信息
ps -ef|grep 进程名 获取pid
lsof -p pid -nP | grep 进程名
23.linux命令中的管道要用什么符号?他们是如何工作的?
操作符是:”|”
正确输出,作为【指令2】的输入 然后【指令2】的输出作为【指令3】的输入 ,【指令3】输出就会直接显示在屏幕上面了。
通过管道之后【指令1】和【指令2】的正确输出不显示在屏幕上面
24.简单介绍一下springcloud中的服务器熔断机制
熔断机制是对系统的防护,比如受到一些恶意攻击,
那么需要熔断机制来保护系统的微服务,做出响应,避免资源被耗尽。
既要能响应,又要能防护,当我们的请求达到一个负载阈值,
就启用熔断,把真实接口关掉,给客户端请求一个响应,这个响应,我们可以设置。
服务熔断就是对该服务的调用执行熔断,对应后续请求,不在继续调用该目标服务,而是直接返回,从而可以快速释放资源,
或者服务出现故障,会把故障信息返回给客户端
25.为什么说Ribbon是一种客户端负载均衡
每个客户端服务都有一份自己要访问的服务端清单,这些清单统统都是从Eureka服务注册中心获取的。
而在服务端负载均衡中,只要负载均衡器维护一份服务端列表 。