1.对saas的理解
SaaS是Software-as-a-service(软件即服务),是一种基于互联网提供软件服务的应用模式,自己开发软件就相当于自建房,传统买软件就相当于买房,SaaS就相当于是租住公寓。
SaaS并不是指代一个行业或者一种技术,它是一种2B的专业型软件租赁使用模式。
优点:采用云服务,客户不需要自己部署服务器;
网上下载即装即用,无需专门部署安装。
使用成本极低,再小的公司也用得起;
快速部署应用,使用效率高;
后续维护、更新升级不产生额外费用。
2.springboot的理解
使用 Spring Boot 可以非常方便、快速搭建项目,使我们不用关心框架之间的兼容性,适用版本等各种问题,我们想使用任何东西,仅仅添加一个配置就可以,所以使用 Spring Boot 非常适合构建微服务。
更快速更便捷搭建服务,大大节省工作量
Spring Boot最重要的4大核心特性:自动配置、起步依赖、Actuator、命令行界面(CLI)
3.消息队列4种交换机
直连交换机:Direct exchange
一个队列会和一个交换机绑定,除此之外再绑定一个routing_key,当消息被发送的时候,需要指定一个binding_key,这个消息被送达交换机的时候,就会被这个交换机送到指定的队列里面去。同样的一个binding_key也是支持应用到多个队列中的。
一个交换机绑定多个队列,就会被送到对应的队列去处理.
扇形交换机:Fanout exchange 广播消息
主题交换机:Topic exchange
发送到主题交换机上的消息需要携带指定规则的routing_key,主题交换机会根据这个规则将数据发送到对应的(多个)队列上。
主题交换机的routing_key需要有一定的规则,交换机和队列的binding_key需要采用*.#.*…的格式,每个部分用.分开,其中:
*表示一个单词
#表示任意数量(零个或多个)单词。
假设有一条消息的routing_key为fast.rabbit.white,那么带有这样binding_key的几个队列都会接收这条消息:fast… 、…white 、fast.#、……
首部交换机:Headers exchange
路由器和交换机路由的规则是通过Headers信息来交换的,这个有点像HTTP的Headers。将一个交换机声明成首部交换机,绑定一个队列的时候,定义一个Hash的数据结构,消息发送的时候,会携带一组hash数据结构的信息,当Hash的内容匹配上的时候,消息就会被写入队列。
4.redis使用过哪些数据结构
list:区划树存储
哈希:token存储
5.多线程实现的几种方式
1>继承Thread类,重写run方法
2>实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target
(使用lamda表达式可以直接new Runable接口)
3>通过Callable和FutureTask创建线程
4>通过线程池创建线程
6.map的几种遍历方式以及迭代器遍历代码
方式一:EntrySet.Iterator
Iterator<Entry<String, Integer>> itEntry = map.entrySet().iterator();
while(itEntry.hasNext()) {
Entry<String, Integer> entry = itEntry.next();
System.out.println(entry.getKey() + ", " + entry.getValue());
}
方式二:EntrySet
for (Map.Entry<String, Integer> entry : tempMap.entrySet()) {
String key = entry.getKey().toString();
String value = entry.getValue().toString();
System.out.println("key=" + key + " value=" + value);
}
方式三:KeySet.Iterator
Iterator<String> itKey = tempMap.keySet().iterator();
while(itKey.hasNext()) {
String key = itKey.next();
Integer value = tempMap.get(key);
System.out.println(key + ", " + value);
}
方式四:KeySet
Set<String> keySet = tempMap.keySet();
for(String key : keySet) {
System.out.println(key + ", " + tempMap.get(key));
}
7.@Autowired和@Resource的区别
相同点:
@Resource和@Autowired都是做bean的注入时使用,@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。
两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。
不同点:
@Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入。
@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。
@Resource默认按照ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。@Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。
结语:
有些坑不得不踩,有些事不得不做,希望能通过分享互相进步,走过这段平凡的路。