当前位置: 首页 > news >正文

有赞做网站关键词整站排名优化

有赞做网站,关键词整站排名优化,铝合金做网站,java如何对网站做压力测试消息队列就是把阻塞队列这样的数据结构单独提取成一个程序独立进行部署。——>实现生产者消费者模型。 但是阻塞队列是在一个进程内部进行的; 消息队列是在进程与进程之间进行实现的, 解耦合:就是在分布式系统中,A服务器调用B…

消息队列就是把阻塞队列这样的数据结构单独提取成一个程序独立进行部署。——>实现生产者消费者模型。

但是阻塞队列是在一个进程内部进行的;

消息队列是在进程与进程之间进行实现的, 

解耦合:就是在分布式系统中,A服务器调用B服务器,A给B发送请求,B给A返回响应,A和B之间耦合性很大。引入消息队列后,A把请求发给消息队列,B再从消息队列获取请求。

削峰填谷:B接收,A传送过多,B会感受到峰值,而B的硬盘之类资源有限,有消息队列,B仍然可以按照原本速度进行接收数据。不至于太多的并发量。

broker中间人负责转发和存储,mq和消费者的工作模式主要有两种,

推:push,Broker把收到的消息主动发出。

核⼼概念 • ⽣产者 (Producer) • 消费者 (Consumer) • 中间⼈ (Broker) • 发布 (Publish) • 订阅 (Subscribe)

 

package com.example.mq.mqserver.core;import javax.websocket.RemoteEndpoint;
import java.io.Serializable;
import java.util.UUID;/**Message包含正文和属性两个核心部分;*其中basicproperties基本特性包含routingkey,与Binding类中的bindingkey相对应;*in the end,创建工厂方法协助我们去创建Message对象:* *//**对于message:需要支持序列化;将对象转变为字节流方便网络传输或者存储。* 可能会进行网络传输或者持久化存储;** json中本质存储文本了理性的数据;* 而这里的Message存储二进制数据;* 标准库自带的方式进行序列化可以!*需要被序列化的类需要实现特定的接口;之前我们实现一个接口就是为了重写里面的某个或者某些方法。* 但是offsetEnd,offsetBeg是不需要序列化到保存在文件中的;因为消息一旦写入文件中位置就已经固定了;* so,transient暂住的,临时的;保证不背序列化* **//**硬盘存储:数据库  或者内存* mysql是客户端服务器结构的程序,SQLite(轻量级)是一个本地数据库,这个数据库相当于直接操作本地的硬盘文件;*在java中想要使用SQLite,就直接使用maven,将SQLite的依赖引入·,如果想额外安装SQLite也可以,下载就是一个dll/exe;** 轻量级SQLLite* */
public class Message implements Serializable {private BasicPropertities basicPropertities=new BasicPropertities();private byte[] body;private transient long offsetBeg=0;//begin,消息的开头距文件的偏移;【)transient暂住的,临时的;保证不背序列化private transient long offsetEnd=0;//消息结尾距离文件开头的文件偏移;【)/**消息内容的存储需要持久化,硬盘对这个的处理就是存储在文件中。* 后续就是一个文件中存储很多消息;而如何在一个文件中找到我们想要的消息?* 就是使用偏移量,offsetBeg和offsetEnd;* */private byte isValid=0x1;/**是否是有效消息:** 删除数据通常是逻辑删除,只是把它标记成无效而不是真正进行物理上的删除;*0x1有效,0x0无效;* 在硬盘操作使用byte更好一点;* */public  String getMessageId(){return basicPropertities.getMessageId();}public void setMessageId(String MessageId){basicPropertities.setMessageId(MessageId);}public String getRoutingKey(){return basicPropertities.getRoutingkey();}public void setRoutingKey(String routingKey){basicPropertities.setRoutingkey(routingKey);}public int getDeliverMode(){return basicPropertities.getDeliverMode();}public void setDeliverMode(int mode){basicPropertities.setDeliverMode(mode);}public BasicPropertities getBasicPropertities() {return basicPropertities;}public void setBasicPropertities(BasicPropertities basicPropertities) {this.basicPropertities = basicPropertities;}public byte[] getBody() {return body;}public void setBody(byte[] body) {this.body = body;}public long getOffsetBeg() {return offsetBeg;}public void setOffsetBeg(long offsetBeg) {this.offsetBeg = offsetBeg;}public long getOffsetEnd() {return offsetEnd;}public void setOffsetEnd(long offsetEnd) {this.offsetEnd = offsetEnd;}public byte getIsValid() {return isValid;}public void setIsValid(byte isValid) {this.isValid = isValid;}/*** 创建工厂方法协助我们去创建Message对象:*创建的message会帮助我们创建一个唯一的message id;* 这也是使用工厂方法而不是构造方法的原因之一。** 函数里面放message的核心内容,basicproperties和body,* 这里是在内存中设置这些属性,而offsetEnd,offsetBeg是在持久化才。** */public static Message createMessageWithId(String routingKey, BasicPropertities basicPropertities,byte[] body){Message message=new Message();if(basicPropertities!=null){message.setBasicPropertities(basicPropertities);}message.setMessageId("M-"+UUID.randomUUID());//前缀message.basicPropertities.setRoutingkey(routingKey);message.body=body;return message;}
}
package com.example.mq.mqserver.core;import java.util.HashMap;
import java.util.Map;public class MSGQueue {private String name;//唯一的身份标识;private boolean durable=false;private boolean exclusive=false;//如果为true,表示这个队列只能被一个消费者使用;//如果是false,表示这个队列可以被大家都使用;private boolean autodelete=false;private Map<String,Object> arguments=new HashMap<>();//其它的选项,可以有。public String getName() {return name;}public void setName(String name) {this.name = name;}public boolean isDurable() {return durable;}public void setDurable(boolean durable) {this.durable = durable;}public boolean isExclusive() {return exclusive;}public void setExclusive(boolean exclusive) {this.exclusive = exclusive;}public boolean isAutodelete() {return autodelete;}public void setAutodelete(boolean autodelete) {this.autodelete = autodelete;}public Map<String, Object> getArguments() {return arguments;}public void setArguments(Map<String, Object> arguments) {this.arguments = arguments;}
}
package com.example.mq.mqserver.core;public enum ExchangeType {DIRECT(0),FANOUT(1),TOPIC(2);private final int  type;private ExchangeType(int type){this.type=type;}public int getType(){return type;}}
package com.example.mq.mqserver.core;/*** 描述队列与交换机之间的关联关系* Binding依附于交换机和队列* 所以如果交换机和队列都没有持久化,对Binding进行持久化是没有任何意义的。* */
public class Binding {private String exchangName;private String queueName;private String bindingKey;//routingkey,口令红包;public String getExchangName() {return exchangName;}public void setExchangName(String exchangName) {this.exchangName = exchangName;}public String getQueueName() {return queueName;}public void setQueueName(String queueName) {this.queueName = queueName;}public String getBindingKey() {return bindingKey;}public void setBindingKey(String bindingKey) {this.bindingKey = bindingKey;}
}
package com.example.mq.mqserver.core;import java.util.HashMap;
import java.util.Map;public class Exchange {private String name;//唯一标识//交换机的三种类型:direct,fanout,topic;private ExchangeType type=ExchangeType.DIRECT;private boolean durable=false;//是否需要持久化;shifalse不用/*** 内存存储:快速;* 硬盘存储:持久;* 对于交换机,队列,绑定,有些需要持久化有些不需要;* so,持久化的开关;** */private boolean autoDelete=false;//没人使用就自动删除private Map<String,Object> arguments=new HashMap<>();//arguments表示创建交换机的时候指定的一些其它参数选项;//可以有也可以没有,用于开启不同的功能;public String getName() {return name;}public void setName(String name) {this.name = name;}public ExchangeType getType() {return type;}public void setType(ExchangeType type) {this.type = type;}public boolean isDurable() {return durable;}public void setDurable(boolean durable) {this.durable = durable;}public boolean isAutoDelete() {return autoDelete;}public void setAutoDelete(boolean autoDelete) {this.autoDelete = autoDelete;}public Map<String, Object> getArguments() {return arguments;}public void setArguments(Map<String, Object> arguments) {this.arguments = arguments;}
}

http://www.hengruixuexiao.com/news/13282.html

相关文章:

  • 一鸿建设设计网站建立一个网站的费用
  • 公司做网站提供产品加盟费谷歌seo建站
  • 国际国内热点新闻事件快速seo整站优化排行
  • 网站开发公司前端和后端开发人数比一般多少合适全球网站流量排名查询
  • 广告设计速成班多少钱网站怎样优化关键词好
  • 网站内容设计个人网站设计毕业论文
  • wordpress 中文语言包浙江seo技术培训
  • 前端做网站的步骤山东百度推广
  • 新闻发布会是一种seo推广技术培训
  • 日本一级做d爱片免费网站app拉新推广赚佣金
  • 北京房山网站建设产品更新培训网上交易平台
  • 怎样在国外网站做推广网站百度收录批量查询
  • 大连网站建设选网龙制作网站
  • 西安做网站的电子商务网站有哪些?
  • 可以做公司宣传的网站有哪些内容阿里云域名注册
  • 深圳市门户网站建设企业百度应用商店下载
  • 太湖县城乡建设局网站平台接广告在哪里接的
  • 兼职做任务的网站制作电商网站
  • 做多国语言网站百度广告联盟app下载官网
  • 织梦网站栏目不能更新徐州seo排名公司
  • 网站怎么设置qq谷歌aso优化
  • 社交网站平台怎么做网站需要怎么优化比较好
  • ssm网站开发视频域名购买哪个网站好
  • 首京建设投资引导基金网站营销策划方案范文1500
  • 深圳国内网站制作哪家快链交换反应
  • 深圳精品网站建设公司以图搜图百度识图网页版
  • php开发网站建设seo知名公司
  • 搜索引擎优化包括以下哪些内容百度seo网站在线诊断
  • 一般网站栏目结构百度推广年费多少钱
  • 重庆高考征集志愿网站刷移动端seo软件