WebSocket是双向通信协议,模拟Socket协议,可以双向发送或者接收信息
而Http是单向的
WebSocket是需要浏览器和服务器握手进行建立连接的
而http是浏览器发起向服务器的连接,服务器预先并不知道这个连接
WebSocket在建立握手时,数据是通过Http传输的,但是建立之后,在真正传输时是不需要Http协议的
今天完成了推荐算法:下面是个小结
首先得到前端传过来的要进行推荐的用户id
1,获得一个Map<String,Set<Blog>>,存每个用户对应的交互过的物品的集合,查表
2.根据这个Map,得到从物品到用户的倒排表,即Map<Integer,ser<User>>,
通过遍历1获得的Map,遍历每个用户对应的每个物品集合,遍历物品集合中的每个物品,如果物品在倒排表中已经存在,就将当前用户添加到该物品对应的set<User>中,
如果不存在,就将该物品作为建,创建一个空的用户集合作为值,并将当前用户添加到该集合中
3.建立协同过滤矩阵
根据2中得到的物品到用户的倒排表来统计用户之间共同交互的物品数量。
Map<String,Map<String,Integer>>
表示某个用户所对应一个Map,这个Map表示另外一个用户以及这个用户和外层的用户所共同交互的物品数量。
还要得到:每个用户所交互的物品的总数量。
4.通过余弦相似度来计算用户之间的相似度。
第三步中得到的协同过滤矩阵就是表达式的分子,分母就是2个用户的交互过的物品的数量的乘积
5.根据相似度矩阵得到前k个用户,然后对这 K 个用户所交互物品中当前用户未交互过的物品计算相似度分数,即预估当前用户对该物品的一个分数,最终推荐的候选物品的相似度分数是由多个用户对该物品分数的一个累加和。