java学习总结

怎么处理多线程的问题
1、数据量多,则数据取出后用线程池分批处理数据。2、数据量不多,单线程就可以处理;建议建一个线程表专门处理线程锁问题

关于EnableConfigurationProperties,在SpringBoot的注释中是这样说明的:为带有@ConfigurationProperties注解的Bean提供有效的支持。这个注解可以提供一种方便的方式来将带有@ConfigurationProperties注解的类注入为Spring容器的Bean。
@ConfigurationProperties作用:把配置文件的常量注入到类中。
使用形式
@ConfigurationProperties(prefix = “ly.sms”)

一:为什么采用springClud?
1.后台硬:作为Spring家族的一员,有整个Spring全家桶靠山,背景十分强大。

  1. 技术强:Spring作为Java领域的前辈,可以说是功力深厚。有强力的技术团队支撑,一般人还真比不了
    • 群众基础好:可以说大多数程序员的成长都伴随着Spring框架,试问:现在有几家公司开发不用Spring?
      3.SpringCloud与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的新特性。

  1. Lambda表达式是接口的匿名内部类的简写形式
    • 接口必须满足:内部只有一个函数
      。(要不它不知道去实现哪个。)
      格式:(参数列表) -> {代码块}
      在lambda表达式中使用局部变量num,num会被隐式声明为final。
      Lambda表达式可以看做是匿名内部类的一种简写方式。集合排序。输出。
      函数式接口(内部只有一个方法的接口。注解@FunctionalInterface),分为三种:1.Function类型接口:有参数有返回结果。2.Predicate系列:接收T类型参数,返回boolean类型结果3: Supplier系列:午餐有返回值。4 Consumer系列:接收T类型参数,不返回结果。

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具备以下特点:

  • 分布式,无需人工搭建集群(solr就需要人为配置,使用Zookeeper作为注册中心)
  • Restful风格,一切API都遵循Rest原则,容易上手
  • 近实时搜索,数据更新在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。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值