杂谈-待更

1. 移动设备和后台服务之间的交互协议对比:

(1) http协议:同步,无状态协议,不支持推送。单向通信,要获得信息必须由设备端自己发起请求。基于TCP/IP提供网络连接。

缺点在于: Http方式的通信,都是由客户端发起的,缺乏服务器主动通知客户端的机制,在需要通知的场景下,需要客户端不断轮询服务器,反复的轮询需要耗费额外的资源。

(2) mqtt协议:基于消息传递,异步,可以保持设备和服务之间的长连接,避免反复轮询,减少资源消耗,所以更加省电。

mqtt协议可以建立双向连接,所以可以使用推送。

(3) mqtt协议优势:使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。使用TCP/IP提供网络连接,更加安全可靠。

(4) WebSocket协议:基于TCP的协议,可以实现服务器和客户端全双工通信,即允许服务器主动发送消息给客户端。WebSocket使用的是Http端口,由服务器判断该协议是http还是Websocket协议,但是WebSocket的数据传输和http没有任何关系。

(5)mqtt和WebSocket的区别:两者不是一个东西,需要分清楚,mqtt主要做原生设备的通信,即手机,手台等。但是WebSocket是浏览器(html5)和后台通信。解决的问题也不同。

(6) mq的缺陷:消息传递路劲变长,延时增加,消息发送者和接收者无法直接通信,发送者无法知道接收者的执行结果,这一点很致命。

2. Mq可以理解为一个服务器,MQ和app之间的通讯方式采用mqtt,双向连接,MQ消息可以直接推送到app端,采用发布/订阅模式。mq是基于TCP/IP存在的。

3. java注解:用于代替配置文件

(1)Java JDK自带注解分为三类: @Override  @Deprecated  @Suppvisewarnings

@Override 是用来表示子类覆盖父类的方法

@Deprecated 是用来表示该方法已经过时

对于已经过时的方法,在使用的时候,编译器会给我们一个警告信息。

对于已经过时的方法,如果我们还想使用,就用@SuppressWarning("deprecation")来标注,表示忽略此警告。

(2)Java 第三方注解:包括 Spring的注解和 Mybatis的注解,以下我们详细解释一下:

Spring注解,主要包括 @Autowired  @Service  @Repository

Mybatis注解,主要包括 @InsertProvider  @UpdateProvider  @Options

(3)自定义注解:这个我们之后进行解释。

注意:注解按照运行机制,可以分为 源码注解---编译是注解----运行时注解

(1)源码注解:只在源码中存在的注解,编译成.class文件就不存在了

(2)编译时注解: 在源码和.class文件中都存在,像 @Override  @Deprecated  @Suppvisewarnings都是编译时注解

(3)运行时注解:运行阶段才会起作用,会影响运行逻辑。像 @Autowired这种自动注入的注解就是运行时注解。

我们来具体讨论下Spring注解和Mybatis注解:

Spring注解详解:

Spring常用的注解分为以下两类:

第一类:@Autowired  @Qualifier @Resource 

第二类: @Repository  @Service @Controller  @Component(不常用)

先来分析第一类 :

(1) @Autowired 用于注入属性,属性包括(成员变量,方法或者构造函数),当有多个bean的时候,通过@Qualifier("name")进行标识。

(2) @Resource 和 @Autowired 作用相同,区别在于 @Autowired是通过 byType 自动注入, @Resource是通过 byName自动注入(默认),也可以选择通过byType自动注入,需要配置。

再来分析第二类: 第二类是装配好自己,供第一类使用的。这一类注解主要是对类进行注释,对接口无要求,一般不注释接口。

(1) @Repository 存储层使用,即dao层。

(2) @Service 业务层使用,即service层。

(3) @Controller 控制层,表现层使用。用于前台页面和service(业务)层进行数据交互的时候使用。一般配合@RequestMapping("/user")指定调用service的父路径。

(4) @RequestMapping("/user")是前端页面传递数据到后台的第一层,通过父路径找到处理业务逻辑的Service.


第二类装配好自己,将自己变成一个bean的形式,供第一类在程序中进行调用,利用spring直接装配,免去了重新new对象,变得简单方便使用。

猜你喜欢

转载自blog.csdn.net/hqm12345qw/article/details/80352299