怎么处理多线程的问题
1、数据量多,则数据取出后用线程池分批处理数据。2、数据量不多,单线程就可以处理;建议建一个线程表专门处理线程锁问题
关于EnableConfigurationProperties,在SpringBoot的注释中是这样说明的:为带有@ConfigurationProperties注解的Bean提供有效的支持。这个注解可以提供一种方便的方式来将带有@ConfigurationProperties注解的类注入为Spring容器的Bean。
@ConfigurationProperties作用:把配置文件的常量注入到类中。
使用形式
@ConfigurationProperties(prefix = “ly.sms”)
一:为什么采用springClud?
1.后台硬:作为Spring家族的一员,有整个Spring全家桶靠山,背景十分强大。
4.使用方便:相信大家都体会到了SpringBoot给我们开发带来的便利,而SpringCloud完全支持SpringBoot的开发,用很少的配置就能完成微服务框架的搭建
。
5.springCloud也比较擅长集成,把一些流行的技术整合到一起。
二:Js的继承方式。
(一)原型链
(二)借用构造函数
(三)组合继承
三:hashMap
哈希表是由数组+链表组成的,一个长度为16的数组中,每个元素存储的是一个链表的头结点。
数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O;数组的特点是:寻址容易,插入和删除困难;
链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。
综合这两者的优点,摒弃缺点,哈希表就诞生了,既满足了数据查找方面的特点,占用的空间也不大。
四:对Vue的理解
Vue.js(读音 /vju?/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。它不仅易于上手,还便于与第三方库或既有项目整合。
五.jvm类加载机制。
JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化。
六.类加载器:1.启动类加载器
2.扩展类加载器
3.应用类加载器
七.项目中你负责的业务。简单做一下介绍
八.1.8的新特性。
2.Steam API极大得简化了集合操作
List list = Arrays.asList(10, 5, 25, -15, 20);
list.stream()
.filter(i->i%2!=0).map(i->i*2)
.sorted((i1,i2)->i1-i2)
.forEach(i->System.out.println(i));
}
一行代码搞定,list转换成集合用stream()方法,支持链式编程,返回的还是流。
九.做一下自我介绍。
务消费者通过服务名称,在众多服务中心找到要调用的服务的地址列表,称为服务路由。
为什么微服务(spring Cloud)一定要有网关?
服务网关 = 路由转发 + 过滤器
1、实现路由转发:接收一切外界请求,转发到后端的微服务上去;
2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。写到服务网关的前置过滤器中,所有请求过来进行权限校验。
@EnableZuulProxy // 开启Zuul的网关功能
Spring的RestTemplate的作用:
Spring提供了一个RestTemplate模板工具类,对基于Http的客户端进行了封装,(可以实现不同服务间的服务的调用)并且实现了对象与json的序列化和反序列化,非常方便。
怎么实现负载均衡?
1.在RestTemplate的配置方法上添加@LoadBalanced注解即可开启负载均衡。简单的轮询。(底层用了RibbonLoadBalancerClient类,调用了choose方法)。
2.修改负载均衡规则的配置入口。
user-service:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule 结果变成了随机。
@EnableDiscoveryClient把服务注册到注册中心上,而@EnableEurekaClient特指把服务注册到Eureka上。
在客户端上的配置文件里,注册多个Eureka,中间地址用逗号隔开。
Eureka架构中的三个核心角色:服务提供方,服务消费方,服务的注册中心。
async和await必须同时使用,async 定义在方法上,异步,await定义在变量上。
。
NPM是Node提供的模块管理工具,可以非常方便的下载安装很多前端框架。两者是绑定在一起的,先装node,npm会自动安装成功,再装nrm,用来管理依赖。
只有在vue对象内data对象内定义的变量,才能实现双向绑定。
插值闪烁:使用{{}}方式在网速较慢时会出现问题。在数据未加载完成时,页面会显示出原始的{{}},加载完毕后才显示正确数据,我们称为插值闪烁。
解决方式:
1.v-text:将数据输出到元素内部,如果输出的数据有HTML代码,会作为普通文本输出
。
2.v-html:将数据输出到元素内部,如果输出的数据有HTML代码,会被渲染(所以会选这个来解决插值闪烁问题(即网速慢加载代码的问题)
。number可以做简单的格式化,v-model.number可以过滤输入的值为数字,而不是其他任意字符。
v-if是动态的向DOM树内添加或者删除DOM元素;v-show是通过设置DOM元素的display样式属性控制显隐
v-if适合运营条件不大可能改变;v-show适合频繁切换。
面试资料
链接:https://pan.baidu.com/s/1uRIO4IIMAGqBcQMm1YhD4w 密码:i6px
https://mp.csdn.net/postedit/78674331
spring中用到哪些设计模式?
1.工厂模式,这个很明显,在各种BeanFactory以及ApplicationContext创建中都用到了;
2.模版模式,这个也很明显,在各种BeanFactory以及ApplicationContext实现中也都用到了;
3.代理模式,在Aop实现中用到了JDK的动态代理;
4.单例模式,这个比如在创建bean的时候。
5.Tomcat中有很多场景都使用到了外观模式,因为Tomcat中有很多不同的组件,每个组件需要相互通信,但又不能将自己内部数据过多地暴露给其他组件。用外观模式隔离数据是个很好的方法。
6.策略模式在Java中的应用,这个太明显了,因为Comparator这个接口简直就是为策略模式而生的。Comparable和Comparator的区别一文中,详细讲了Comparator的使用。比方说Collections里面有一个sort方法,因为集合里面的元素有可能是复合对象,复合对象并不像基本数据类型,可以根据大小排序,复合对象怎么排序呢?基于这个问题考虑,Java要求如果定义的复合对象要有排序的功能,就自行实现Comparable接口或Comparator接口.
7.原型模式:使用原型模式创建对象比直接new一个对象在性能上好得多,因为Object类的clone()方法是一个native方法,它直接操作内存中的二进制流,特别是复制大对象时,性能的差别非常明显。
8.迭代器模式:Iterable接口和Iterator接口 这两个都是迭代相关的接口,可以这么认为,实现了Iterable接口,则表示某个对象是可被迭代的;Iterator接口相当于是一个迭代器,实现了Iterator接口,等于具体定义了这个可被迭代的对象时如何进行迭代的
Elasticsearch具备以下特点:
服务间的调用分为三种方式:1.使用httpClient 2.使用Spring的RestTemplate 3.Feign可以把Rest的请求进行隐藏,伪装成类似SpringMVC的Controller一样。你不用再自己拼接url,拼接参数等等操作,一切都交给Feign去做。@FeignClient,首先这是一个接口,Feign会通过动态代理,帮我们生成实现类。这点跟mybatis的mapper很像。- 首先这是一个接口,Feign会通过动态代理,帮我们生成实现类。这点跟mybatis的mapper很像
- @FeignClient,声明这是一个Feign客户端,类似@Mapper注解。同时通过value属性指定服务名称
- 接口中的定义方法,完全采用SpringMVC的注解,Feign会根据注解帮我们生成URL,并访问获取结果
改造原来的调用逻辑,不再调用UserDao。