科技新闻

部署Rabbitmq集群

浪子不回头ぞ 提交于 2020-04-06 16:25:08
一、部署Rabbitmq集群 Rabbitmq集群大概分为两种方式: 1、普通模式:默认的集群模式,消息的尸体只存在一个节点上; 2、镜像模式:把需要的队列做成镜像,存在于多个节点。 ha-mode: all:列队到所有节点; exatly:随机镜像到其他节点上; nodes:镜像到指定节点上。 集群节点模式: 1、内存节点:工作在内存上; 2、磁盘节点:工作在磁盘上; 例外:内存节点和磁盘节点共同存在,提高访问速度的同时增加数据持久化。 相比内存节点虽然不写入磁盘,但是它执行比磁盘节点要好,集群中,只需要一个磁盘来保存状态就足够了,如果集群中只有内存节点,那么节点一旦宕机,所有的状态、消息都会丢失,无法实现数据的持久化。 rpm包(提取码:rv8g) 1、环境如下 2、安装rabbitmq服务 在192.168.171.134/135/140节点上进行如下操作,部署rabbitmq服务: [root@localhost ~]# mkdir rabbitmq [root@localhost ~]# cd rabbitmq/ [root@localhost rabbitmq]# ls erlang-18.1-1.el6.x86_64.rpm rabbitmq-server-3.6.6-1.el6.noarch.rpm socat-1.7.3.2-2.el7.x86_64.rpm

物联网开发对接

℡╲_俬逩灬. 提交于 2020-04-06 11:53:31
物联网开发对接 物联网设备 摄像头 读卡器 道闸 车牌识别 等等等等 通讯协议 框架选型 设备SDK 海康摄像头、车辆识别等设备 大华的摄像头 红门道闸 原理: 使用java的JNI或者JNA技术,调用c的驱动,实现设备数据的对接。 使用时注意区分部署平台 Linux下的驱动是so文件 , windwos 下的驱动是 dll文件 JNI : Java Native Interface JNA: Java Native Access netty-网络 ByteBuf对常见的字节操作做了封装 学习ByteBuf的文章 解决了TCP的粘包和拆包问题 什么是粘包和拆包? 消息在网络中传播是乱序的,同时由于节省带宽,它会尽可能多在一次通讯中发送更多的数据。于是会出现这种情况。 举个例子: 南京市长江大桥(粘包) 出现了消息二义性,表达不清 一句话说一半 (拆包) 不知道后面的消息要表达啥? 怎么解决呢? 通过协议规范,约定对方消息的分隔符和长度等等。 对java的网络操作做了封装 Bootstrap Socket TCP客户端 ServerSocket TCP 服务端 DatagramSocket UDP jSerialComm-串口 针对java操作串口进行的封装 平台无关性 SerialPort gpsPort = SerialPort.getCommPort(device

02.JMS基础

北战南征 提交于 2020-04-06 11:35:55
1.面向消息的中间件(MOM) 1.什么是MOM 面向消息的中间件,Message Oriented Middleware,简称MOM,中文简称消息中间件,利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。 一个MOM系统,通常会包括客户端(Clients)、消息(Message)和 MOM,客户端是发送或者接受消息的应用程序,消息封装了要传递的内容,MOM可以存储和转发消息。如下图所示,系统A和系统B之间的消息传递,不是直接通信,而是通过中间件来间接的传递 2.MOM的好处 降低系统间通信复杂度:有了MOM,系统间的通信,不用考虑系统是什么语言开发的,也不用考虑复杂的网络编程,各个系统只需要关心自身和MOM之间如何进行消息的接受和发送即可,这些操作通过简单的API就可以完成。 提高了消息的灵活性:系统A通过MOM向系统B发送消息,消息可以存储在MOM中,并由MOM转发。即使是系统B不在线,MOM会持有这个消息,直到系统B连接并处理消息。这就是说,系统A发完消息后,就可以执行其它操作,而不必阻塞等待,尤其是对那些时间无关或者并行处理的操作,非常适用。 松散耦合:有了MOM的存在,对于系统B而言,只要发送的消息没有变化,就不必考虑系统A的变化。A系统的代码改变,不会影响到B系统,反之亦然。 2.JMS基本概念 1.JMS是什么 Java消息服务

JMS随笔

浪尽此生 提交于 2020-04-06 11:34:42
Java 消息服务 (JMS) SOA与异步消息传送模型都适合于系统集成: 异步消息传送模型非常适于完成集成复杂系统的任务;对于此类系统,在执行操作的过程中让一个组件为另一个组件提供支持既不切实际,也不值得这样做。尽管异步消息传送放弃了同步系统所具有的某些控制功能,但大大提高了组件间相互作用的灵活性。它还增强了系统的稳定性,因为一个组件的故障并不会导致整个系统瘫痪。 SOA或者WS是主动请求,消息的接收方必须做好准备,这类系统的集成属于 整体一个组件必须为另一个组件提供支持。并且这样就很难做到高密度吞吐量。 消息的格式:标题 属性 主体 属性可以用来过滤消息。避免在消息接收者的应用程序中再去过滤处理。 消息主体可以是对象,字节流,key-value的map等。 创建连接时,将分配通信资源以及验证客户机。这是一个相当重要的对象,大多数客户机均使用一个连接来进行所有的消息传送。 客户机使用消息生产者对象 (MessageProducer) 向指定的物理目标(在 API 中由目标对象destinaction表示)发送消息。 客户机使用消息消费者对象 (MessageConsumer) 从指定的物理目标(在 API 中表示为目标对象destinaction表示)接收消息。共有两种类型的目标,分别是队列和主题 物理目标是在jms服务器上。destinaction只是在客户机上对应的抽象

JMS消息传输机制

ε祈祈猫儿з 提交于 2020-04-06 11:33:35
JMS 消息传送模型 :    消息传送机制 , 是基于 拉取 (pull) 或者 轮询 (polling) 的方式. JMS 具备两种 " 消息传送模型 ": P2P 和 Pub/sub. (1) P2P: 点对点消息传送模型 , 允许 JMS 客户端通过队列 (queue) 这个虚拟通道来同步或 异步发送消息 ; 消息的生产者为 Sender, 消费者为 receiver .      receiver 主动到队列中请求消息 , 而不是 JMS 提供者将消息推送到客户端 ;      主要原因是一个队列通道可能有多个 receiver, 每个 receiver 可能对消息的处理速率不同 ( 因处理消息而造成的阻塞时间不同 ), 对于 JMS 提供者而言 , 它无法意识到哪个 receiver 处于 " 空闲 " 状态 , 如果 JMS 提供者主动推送会造成通道的阻塞或者消息在客户端积压等问题 ; 所以基于客户端 pull 的方式 , 当 receiver 空闲时向 JMS 提供者请求消息 , 很好的解决了这个问题 , 而且还能进行良好的 " 负载均衡 ".    Queue 中的消息如果被某个 recervier 成功接收 ( 确认成功 ) 后 , 消息就会被移除 .    P2P 消息传送模式即支持异步 " 即发即失 ", 也支持同步的 " 请求 / 应答 " . (2)

苹果、乔布斯遗孀和小李子合作成立新的基金 为新冠疫情中弱势群体提供食品

孤街醉人 提交于 2020-04-06 10:58:42
  腾讯科技讯,据外媒报道,苹果公司今天与“小李子”莱昂纳多-迪卡普里奥(Leonardo DiCaprio)、乔布斯遗孀劳伦-鲍威尔-乔布斯(Laurene Powell Jobs)和福特基金会(Ford Foundation)等合作伙伴在众筹平台 GoFundMe 上启动了美国食品基金。该项目旨在帮助全美弱势群体获得食物。   该基金会的各项捐赠将捐给世界中心厨房(World Central Kitchen)和 Feeding America 等非营利性组织。   在 Apple TV 的最新一期《奥普拉谈新冠疫情》(Oprah Talks COVID-19) 节目中,你可以听到更多关于该基金目标的细节。在节目中,奥普拉-温弗瑞(Oprah Winfrey)通过 FaceTime 主持了与厨师何塞-安德烈(JoséAndrés)和 Feeding America 首席执行官克莱尔-巴比诺-丰特诺(Claire Babineaux-Fontenot)的谈话节目。奥普拉个人承诺捐赠 100 万美元。   你可以在电视应用程序中免费观看奥普拉谈话系列节目,而不需要订阅。   “如果没有充足的食物,任何人都不可能健康,只有确保每个人都有必要的食物照顾自己、家人和弱势群体,我们才能克服这场危机。”苹果首席执行官蒂姆-库克(Tim Cook)在一份声明中说,“世界中央厨房(World

Linux常用命令13

自闭症网瘾萝莉.ら 提交于 2020-04-06 10:54:36
echo 命令是 Linux 中 最基本和最常用 的命令之一。 传递给 echo 的参数被打印到标准输出中。 echo 通常用于 shell 脚本中,用于显示消息或输出其他命令的结果。 echo 命令 echo 是 Bash 和其他大多数流行的 shell,如 Zsh 和 Ksh 中的一个 shell 内置程序。 它的行为在不同的 shell 中略有不同。 还有一个独立的/usr/bin/echo 实用程序,但通常会优先使用 shell 内置版本。 我们将介绍 Bash 内置版本的 echo。 echo 命令的语法如下: echo [-neE] [ARGUMENTS] 当-n 选项,则取消尾随换行符 如果-e 选项,则将解释以下反斜杠转义字符: \ 显示反斜杠字符 \a 警报(BEL) \b 显示退格字符 \c 禁止任何进一步的输出 \e 显示转义字符 \f 显示窗体提要字符 \n 显示新行 \r 显示回车 \t 显示水平标签 \v 显示垂直标签 这个-E 项禁用转义字符的解释。这是默认值 在使用 echo 命令时 ,不过有几点需要考虑 。 方法传递参数之前,shell 将替换所有变量、通配符匹配和特殊字符echo. 命令 虽然没有必要,但是将传递给的参数包含起来是一个很好的编程实践双引号或单引号 当使用单引号时 '' 将保留引号内每个字符的字面值。不展开变量和命令 举个栗子

redis 使用常见问题

前提是你 提交于 2020-04-06 10:51:56
一 子进程开销和优化 1 cpu 开销:rdb和aof文件生成,属于cpu密集型 优化:不做cpu绑定,不和cpu密集型的服务一起部署 2 内存 开销:fork内存开销,copy-on-write, 优化:单机部署尽量少重写 3 硬盘 开销:aof和rdb写入,可以结合分析工具使用 优化: 1 不要和高硬盘负载的服务部署在一起:存储服务,消息队列 2 在aof重写期间,不要对aof进行追加:no-appendfsync-on-rewrite=yes 3 根据写入量决定磁盘类型:例如ssd 4 单机多实例持久化考虑分盘 二 fork操作 1 fork是同步操作 2 与内存量息息相关:内存越大,耗时越长,跟机型也有关系 3 info:latest_fok_usec:查看持久化执行时间 改善fork 1 有限使用无机或高效支持fork操作的虚拟化技术 2 控制redis实例最大可用内存:maxmemory 3 合理配置linux内存分配策略 4 降低fork频率,例如放宽aof重写自动触发时机,不必要的全量复制 三 aof追加阻塞 aof阻塞:看日志定位 info Persistence:每次阻塞一次就会+1 来源: https://www.cnblogs.com/ghylpb/p/12640737.html

C# WinForm MessageBox弹出对话框详细说明

跟風遠走 提交于 2020-04-06 08:39:08
摘要: MessageBox,显示消息窗口(也称为对话框)向用户展示消息,MessageBoxButtons指定若干常数,用以定义MessageBox上将显示哪些按钮。 命名空间: System.Windows.Forms Assembly: System.Windows.Forms.dll 1、OK,消息框包含“确定”按钮。 1 2 3 4 5 6 MessageBoxButtons msgButton = MessageBoxButtons.OK; DialogResult dr = MessageBox.Show( "OK" , "提示" , msgButton); if (dr == DialogResult.OK) { MessageBox.Show( "默认消息框" ); } 2、OKCancel,消息框包含“确定”和“取消”按钮。 1 2 3 4 5 6 7 8 9 MessageBoxButtons msgButton = MessageBoxButtons.OKCancel; DialogResult dr = MessageBox.Show( "OKCancel" , "提示" , msgButton); if (dr == DialogResult.OK) { MessageBox.Show( "默认消息框" ); } else { MessageBox

Springboot使用RabbitMQ代码示例

我只是一个虾纸丫 提交于 2020-04-06 08:36:39
Springboot使用RabbitMQ代码示例 示例说明 本示例使用slf4j-log4j12管理日志,需要排除spring-boot-start-amqp的logback-classic依赖以防止冲突。 消息队列几个要点 生产者:发送消息的程序 消费者:监听接收消费消息的程序 消息:一串二进制数据流 队列:消息的暂存区/存储区 转换器:消息的中转站,用于接收分发消息。其中有 fanout、direct、topic、headers 四种 路由:与转换器绑定即可路由消息到指定的队列! 依赖导入 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> <!--排除日志冲突--> <exclusions> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <