java基础问题(五)

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的类型。

结语:
有些坑不得不踩,有些事不得不做,希望能通过分享互相进步,走过这段平凡的路。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锐rui3g

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值