消费者是如何发现服务提供者的 a. 当?个服务实例启动,会将它的ip地址等信息注册到eureka; b. 当a服务调?b服务,a服务会通过Ribbon检查本地是否有b服务实例信息的缓存; c. Ribbon会定期从eureka刷新本地缓存。
多个消费者调?同?接?,eruka默认的分配?式是什么 a. RoundRobinRule:轮询策略,Ribbon以轮询的?式选择服务器,这个是默认值。所以示例中所启动的两个服务会被循环访问;
b. RandomRule:随机选择,也就是说Ribbon会随机从服务器列表中选择?个进?访问;
c. BestAvailableRule:最?可?策略,即先过滤出故障服务器后,选择?个当前并发请求数最?的;
d. WeightedResponseTimeRule:带有加权的轮询策略,对各个服务器响应时间进?加权处理,然后在采?轮询的?式来获取相 应的服务器;
e. AvailabilityFilteringRule:可?过滤策略,先过滤出故障的或并发请求?于阈值?部分服务实例,然后再以线性轮询的?式从 过滤后的实例清单中选出?个;
f. ZoneAvoidanceRule:区域感知策略,先使?主过滤条件(区域负载器,选择最优区域)对所有实例过滤并返回过滤后的实例 清单,依次使?次过滤条件列表中的过滤条件对主过滤条件的结果进?过滤,判断最?过滤数(默认1)和最?过滤百分?(默 认0),最后对满?条件的服务器则使?RoundRobinRule(轮询?式)选择?个服务器实例。
说说常?的springboot注解,及其实现? a. @Bean:注册Bean i. 默认使??法名作为id,可以在后?定义id如@Bean(“xx”); ii. 默认为单例。 iii. 可以指定init?法和destroy?法:
对象创建和赋值完成,调?初始化?法;
单实例bean在容器销毁的时候执?destroy?法;
多实例bean,容器关闭是不会调?destroy?法。 b. @Scope:Bean作?域 i. 默认为singleton; ii. 类型:
session同?个session创建?个实例。 c. @Value:给变量赋值 i. 代码: 1 import org.springframework.beans.factory.annotation.Value;
2 3 public class Person extends BaseEntity{ 4 @Value(“xuan”) 5 private String name;
6 @Value(“27”) 7 private int age;
8 @Value("#{20-7}") 9 private int count;
10 @Value("${person.nickName}") 11 private String nickName;
12 } i. ?式:
基本数字
可以写SpEL(Spring EL表达式):#{}
可以写${},取出配置?件中的值(在运?环境变量??的值) d. @Autowired:?动装配 i. 默认优先按照类型去容器中找对应的组件:BookService bookService = applicationContext.getBean(BookService.class);
ii. 默认?定要找到,如果没有找到则报错。可以使?@Autowired(required = false)标记bean为?必须的。 iii. 如果找到多个相同类型的组件,再根据属性名称去容器中查找。 iv. @Qualifier(“bookDao2”)明确的指定要装配的bean。 v. @Primary:让spring默认装配?选的bean,也可以使?@Qualifier()指定要装配的bean。 e. @Profile:环境标识 i. Spring为我们提供的可以根据当前环境,动态的激活和切换?系列组件的功能; ii. @Profile指定组件在哪个环境才能被注册到容器中,默认为"default"@Profile(“default”)。 iii. 激活?式:
运?时添加虚拟机参数:-Dspring.profiles.active=test
代码?式:
spring的事务注解是什么?什么情况下事物才会回滚 a. spring事务实现机制: b. 事务注解@transactional; c. 默认情况下,如果在事务中抛出了未检查异常(继承? RuntimeException 的异常)或者 Error,则 Spring 将回滚事务。 d. @Transactional 只能应?到 public ?法才有效:只有@Transactional 注解应?到 public ?法,才能进?事务管理。这是因为 在使? Spring AOP 代理时,Spring 在调?在图 1 中的 TransactionInterceptor 在?标?法执?前后进?拦截之前, DynamicAdvisedInterceptor(CglibAopProxy 的内部类)的的 intercept ?法或 JdkDynamicAopProxy 的 invoke ?法会间接调 ? AbstractFallbackTransactionAttributeSource(Spring 通过这个类获取表 1. @Transactional 注解的事务属性配置属性信息) 的 computeTransactionAttribute ?法。
表格可以被压缩 c. 选择:因为MyISAM相对简单所以在效率上要优于InnoDB.如果系统读多,写少。对原?性要求低。那么MyISAM最好的选择。 且MyISAM恢复速度快。可直接?备份覆盖恢复。如果系统读少,写多的时候,尤其是并发写??的时候。InnoDB就是?选了。 两种类型都有??优缺点,选择那个完全要看??的实际类弄。