mosquitto 官网: http://mosquitto.org
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudo apt-get install mosquitto
sudo apt-get install mosquitto-clients
添加配置文件
在/etc/mosquitto/conf.d目录下,添加配置文件myconfig.conf 配置文件:
sudo vi /etc/mosquitto/conf.d/myconfig.conf
粘入下面这些配置
#添加监听端口(很重要,否则只能本机访问)
listener 1883
#-------------------------------------------
# 关闭匿名访问,客户端必须使用用户名
allow_anonymous false
#指定 用户名-密码 文件
password_file /etc/mosquitto/pwfile.txt
#--------------------------------------------
2.添加账户及密码 admin为账号,连续输入两次密码
sudo mosquitto_passwd -c /etc/mosquitto/pwfile.txt admin
sudo systemctl status mosquitto
3.测试环节:
客户端一:订阅主题:
mosquitto_sub -h localhost -t "lai001/#" -u admin -P 123456 -i “client1”
客户端二:发布主题:
mosquitto_pub -h localhost -t "lai001/testTopic" -u admin -P 123456 -m "Hello MQTT from mosquitto-clients"
客户端一收到信息"Hello MQTT from mosquitto-clients"就说明通信正常了。
#LeetCode-面试题32-2-从上到下打印二叉树从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树:[3,9,20,null,null,15,7],3/ 920/ 157返回其层次遍历结果:[ [3], [9,20], [15,7] ]复制提示:节点总数<=1000#解题思路方法1:递推依然是BFS,只是要多2个List去保存结果,还需要2个变量一个记录下一层的节点数目,另一个记录当前层没有打印的节点数目用一个队列Queue保存节点,标准BFS遍历模版如下:将root节点放入queue,当前待打印节点数-1重复以下2个步骤,直到queue为空为止: 取出queue中的头结点,添加进rowList中 找出头结点左右子节点,依次放入queue中,下一行节点数目+1 当前行待打印节点数==0时,说明这行节点都添加进了rowList中,将rowList添加进result,进入下一行,当前行=下一行节点数,下一行节点数清空,rowList清空,这里不能用list.clear()方法,这个方法会把对应的引用数据清掉,直接newArrayLis
TSINGSEE青犀视频开发的国标GB28181协议视频智能分析平台EasyGBS已经兼容了采集-存储-展示-告警这四大模块的内容处理,能够为大数据平台的搭建提供视频能力上的支持。目前EasyGBS正在积极进行内核的改版,力求做到更加稳定、更加高质量。EasyGBS添加新内核过后,发现无法以服务方式启动,报错信息为Pressanytoexit,如图:通过网页观察此时程序也是没有启动起来的:通过排查代码,发现服务方式启动新内核会出现配置文件读取路径出错的情况,所以在新内核读取配置文件采用绝对路径的方式,添加如下代码重新读取配置文件://读取配置文件并解析原始内容 rawContent,err:=ioutil.ReadFile(efile.GetRealPath(confFile)) iferr!=nil{ log.Printf("readconffilefailed.file=%s,err=%v",confFile,err) os.Exit(0) } iferr=json.Unmarshal(rawContent,&gMsConfig);err!=nil{ l
笔者最近学了表达式树这一部分内容,为了加深理解,写文章巩固知识,如有错误,请评论指出~表达式树的概念表达式树的创建有 Lambda法和组装法。学习表达式树需要委托、Lambda、Func<>基础。表达式树形状可以参考二叉树。可以把表达式树理解成数学表达式。 数学表达式的所有常量、符号为表达式树的底节点。每一次计算生成的结果是一个结点,或者说他们的共同结点就是他们应该进行的运算。生成表达式树表达式树的创建有Lambda表达式法和组装法为了方便,这里指定生成的表达式为(i*j)+(x*y)他们的运算是这样的Lambda生成表达式树 在控制台创建应用,需要引入 usingSystem.Linq.Expressions;复制 1,创建表达式 (系统自动把Lambda表达式转为表达式树,当然,不是所有的Lambda表达式都能转为表达式树,详细请参考文章后面的“系统自动把Lambda表达式转为表达式树”一节)Expression<Func<int,int,int,int,int>>func=(i,j,x,y)=>(i*j)+(x*y);复制
关注「前端向后」微信公众号,你将收获一系列「用心原创」的高质量技术文章,主题包括但不限于前端、Node.js以及服务端技术一.应用层在简单的3层结构中,Web服务层既要处理请求,又要承载业务功能:而更优的结构是把Web层与应用层(也叫平台层)分开:优势在于:能够单独扩展应用层:允许独立加机器、换专用机器等复用基础设施:简化多端支持,缓存、数据库等处理都可以复用使得组织更容易扩展:一个团队负责实现/优化平台本身,其它多个团队利用平台功能进行开发分离出应用层之后,面临的下一个问题是应用层内部如何划分职责,如何协同工作,也就是微服务架构所要解决的问题二.微服务架构微服务架构提倡把应用程序设计成一系列松耦合的细粒度服务,并通过轻量级的通信协议组织起来:Inamicroservicesarchitecture,anapplicationisstructuredasacollectionoflooselycoupledservices,whicharefine-grainedandtheprotocolsarelightweight.这些服务都能够独立部署、独立扩展,每个服务都具有稳固的模块边界,
11月9日,腾讯云开发者社区技术沙龙“高效智能运维”圆满落幕。本期沙龙围绕运维展开了一场技术盛宴,从AIOps、ServerlessDevOps、蓝鲸PaaS平台、K8S等分享关于业务运维的技术实践干货,同时带来腾讯海量业务自研上云实践,推动传统运维向云运维转型。下面是张戎老师关于机器学习算法在时间序列的异常检测,故障的根因分析,时间序列预测方面的应用的内容分享。讲师介绍:张戎,腾讯云高级研究员,新加坡国立大学数学博士,毕业后加入腾讯从事机器学习相关工作。目前主要致力于智能运维方向的研究,包括时间序列异常检测,时间序列预测,根因分析,告警收敛等方向。今天讲的内容主要是智能运维方面的一些应用和实践。主要包括智能运维场景描述、单维时间序列分析、多维时间系列分析、近期工作和未来的研究方向。基于机器学习的智能运维分为几个方面,机器学习的运维分为几个地方,第一个是我们要发现问题,运维上面的问题有多种多样,第一有可能是业务出了问题,第二有可能是网络或者是设备、底层服务出了问题,如何在高效或者烦琐的业务中迅速定位到哪些地方出了问题,就是我们需要关注的地方。第一,发现问题。发现问题包括时间序列的异常检
今天就来一招搞定数据增强(data_Augmentation),让你在机器学习/深度学习图像处理的路上,从此不再为数据不够而发愁。且来看图片从250张>>>>任意张的华丽增强,每一张都与众不同。开始之前呢,我们先把这件大事给细分下,一步一步的来:首先,图像读取,需要对文件夹操作;然后,增强图像(重点,重点,重点);最后,保存图像。来看下此次任务中,待增强的图像和标签,主要是为了做图像分割做图像准备。这个图像懂的应该能看出来,这是一个婴儿头围的医学图像,现实场景意义很强。上图(以3张图为例): train_img train_label 成双成对,这样在后续的文件读取中会比较的方便(大神可以自己改改,练练动手能力)那动手吧!!!一.大杀气之kerasImageDataGeneratorfromkeras.preprocessing.imageimportImageDataGenerator 复制ImageDataGenerator()是keras.preprocessing.image模块中的图片生成器,同时也可以在batch中对数据进行增强,扩充数据集大小,增强
使用图形化界面工具实施PL/SQLProfiler易用直观,但是并不是所有的环境都可以使用图形界面软件连接到数据库。对于只能在命令行下进行剖析又需要直观呈现剖析结果的情形,Oracle为我们提供了脚本来直接生成html文档。本文即是基于这种情形进行演示并加以说明。 有关PL/SQLProfiler的文章可以参考: 使用DBMS_PROFILER定位PL/SQL瓶颈代码 对比PL/SQLprofiler剖析结果 使用PL/SQLDeveloper剖析PL/SQL代码1、实施PL/SQLProfiler步骤 --下面的步骤直接参考了Metalink文档(ID243755.1) a、Ifneeded,createthePL/SQLProfilerTablesunderyourapplicationschema:@?/rdbms/admin/proftab.sql b、Ifneeded,installtheDBMS_PROFILERAPI,connectedasSYS:@?/rdbms/admin/profload.sql c、StartPL/SQLProfilerinyourap
App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉。安全机制的设计现在,大部分App的接口都采用RESTful架构,RESTFul最重要的一个设计原则就是,客户端与服务器的交互在请求之间是无状态的,也就是说,当涉及到用户状态时,每次请求都要带上身份验证信息。实现上,大部分都采用token的认证方式,一般流程是:用户用密码登录成功后,服务器返回token给客户端;客户端将token保存在本地,发起后续的相关请求时,将token发回给服务器;服务器检查token的有效性,有效则返回数据,若无效,分两种情况:token错误,这时需要用户重新登录,获取正确的tokentoken过期,这时客户端需要再发起一次认证请求,获取新的token然而,此种验证方式存在一个安全性问题:当登录接口被劫持时,黑客就获取到了用户密码和token,后续则可以对该用户做任何事情了。用户只有修改密码才能夺回控制权。如何优化呢?第一种解决方案是采用HTTPS。HTTPS在HTTP的基础上添加了SSL安全协议,自动对数据进行了压缩加密,在一定程序可以防止监听、防止劫
近日,美国专利与商标局公布了一份来自于Apple的腕戴设备专利,进一步证实了传闻已久的iWatch即将正式露面。在这份专利中,Apple介绍了一款能够作为个人无线中心的腕戴设备。专利显示,这款腕戴设备除了能够与智能手机协同工作之外,还能够检测各种生物体征。这款智能腕戴设备将配备包括加速度计,GPS,接近传感器等多种传感器以监测用户健康状况。作为一款个人无线中心设备,它还能够与附近的手机和电脑交互,将各种提醒通知直接发送到你的手上。另一方面该款腕戴设备还支持手势识别:例如,通过水平移动手臂来拒绝来电,或是竖直移动来接通电话。用户也能够自定义手势来完成各种快捷操作。其实这并不是Apple首次申请智能手表类专利。早在2011年,Apple就申请过类似专利。虽然有关iPhone6的消息已经铺天盖地,但iWatch却还没有任何消息,不知我们今年还能否看到这款设备的发布。有意思的是,就在昨天的小米发布会上,雷军发布了小米手环。虽然79元的售价听起来很震撼,但仅有的三项功能(运动量监测、睡眠质量监测、闹钟唤醒)让人不禁猜测它可能只有一个加速度传感器,可玩性非常低。不过就算如此,79元的售价仍然能够吸
Bminer产品介绍 Bminer是目前最快的挖矿程序,Bminer是基于NVIDIAGPU深度优化的挖矿软件。Bminer支持Equihash和Ethash两种算法的虚拟币,包括:ETH(以太坊),ETC,ZEC(零币),ZCL,ZEN,HUSH,BitcoinPrivate,KMD,BitcoinGold(比特币黄金)等币种。挖Ethash的币,比如ETH(以太坊),ETC,Bminer仅抽取算力的0.65%作为开发者支持费用。挖Equihash的币,比如ZEC(零币),仅抽取算力的2%作为开发者支持费用。运行平台:Windows64+Linux64。Bminer挖矿准备1.访问Bminer官网下载页面,下载您需要的Bminer版本。版本1:Linux版本。版本2:Win64-Launcher版本;有一个操作界面方便设置参数。版本3:Win64-Lite版本;没有操作界面,通过修改mine.bat文件设置参数挖矿。图1Bminer官网下载页面2.找到您下载的Bminer,并解压。3.打开解压好的文件。Bminer操作教程(Linux64)步骤1:打开miner.sh文件步骤2:修改
1.接口描述接口请求域名:cloudhsm.tencentcloudapi.com。 通过SubnetId获取Hsm资源数 默认接口请求频率限制:20次/秒。 APIExplorer提供了在线调用、签名验证、SDK代码生成和快速检索接口等能力。您可查看每次调用的请求内容和返回结果以及自动生成SDK调用示例。 2.输入参数以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。 参数名称 必选 类型 描述 Action 是 String 公共参数,本接口取值:DescribeHSMBySubnetId。 Version 是 String 公共参数,本接口取值:2019-11-12。 Region 是 String 公共参数,详见产品支持的地域列表。 SubnetId 是 String Subnet标识符 3.输出参数 参数名称 类型 描述 TotalCount Integer HSM数量 SubnetId String 作为查询条件的SubnetId RequestId String 唯一请求I
Xcheck更新内容主要是什么?Xcheck目前针对规则以及新框架支持定期的维护和更新,及时同步最新漏洞规则,缩短漏洞修复窗口期。Xcheck支持哪些语言的安全扫描?目前支持6种语言:Java,PHP,Python,Node.js,Go,C++。Xcheck是否支持所有类型代码的扫描?只要是支持的语言就可以扫。由于Xcheck会对代码进行精准解析,因此需要被测代码是完整项目,且语法正确。涉及到多层嵌套递归调用的代码会有较长的处理时长,因此建议用Xcheck扫描Web后台的上层应用代码,而不是某个库或框架。扫描一次需要多长时间?扫描时间受被测代码复杂度以及具体文件数量影响,通常一个小于1M大小的zip文件完成一次扫描仅需几秒。目前默认设置下最长扫描时间不超过5分钟。说明超过5分钟自动结束扫描。是否支持Android应用源码漏洞扫描?不支持。虽然Xcheck支持Java语言,但是主要是用于扫描符合污染传递模型的漏洞OWASPTop10类的漏洞。不仅仅是Android应用,非Web后台类的源码在默认情况下都不支持漏洞扫描。
FTP无法通过被动模式连接腾讯云服务器 本文中的ftp环境是通过vsftpd搭建的,vsftpd环境搭建、用户创建可参考以下教程https://www.cnblogs.com/GetcharZp/p/15138051.html 需要注意的是被动模式除了需要开发必要的21端口外,还需要用于传输的端口,做好以下两步的配置后重启vsftpd服务即可。 1、编辑vsftpd.conf文件 #vim/etc/vsftpd/vsftpd.conf pasv_min_port=50001#被动模式的最小端口【根据实际情况填写】 pasv_max_port=51001#被动模式的最大端口【根据实际情况填写】 复制 2、登录腾讯云服务后台修改入站规则,把上面设置的端口范围开发出去 3、使用systemctlrestartvsftpd.service重启ftp服务,使刚刚的配置生效 资源分享: 腾讯云, 华为云
1、拉取镜像 dockerpulltiptime/ttnode 2、挂载硬盘 3、运行容器 dockerrun-d\-v/mnt/host/dir:/mnt/data/ttnode\-v/var/run/docker.sock:/var/run/docker.sock\--namettnode\--hostnamettnode\--net=host\--restart=always\--memory=0.5g\tiptime/ttnode:latest 2 dockerrun-v/mnt/ssd1:/mnts-d--namettnode--net=host-i-t--privileged=true--restart=alwaysregistry.cn-hangzhou.aliyuncs.com/744287383/linux_ttnode:latest/start.sh 参数解释 -v/mnt/data/ttnode:/mnt/data/ttnode (可自行修改本机缓存目录)/mnt/host/dir表示本机缓存目录,
总结一些自己关于JS中内存的一些理解:他们分别是堆(heap),栈(stack),池(一般也会归类为栈中)与队列(queue)。 其中栈存放变量,堆存放复杂对象,池存放常量,所以也叫常量池。 1.栈内存(stack): 栈内存是一种特殊的列表,栈内的元素只能存列表的一端访问,这一端称为栈顶。栈被称为是一种后入先出(LIFO,last-in-first-out)的数据结构。由于栈具有后入先出的特点,所以任何不在栈顶的元素都无法访问。为了得到栈底的元素,必须先拿掉上面的元素。 在这里,为方便理解,通过类比乒乓球盒子来表示栈的存取方式。栈由操作系统(编译器)自动分配释放释放空间,用于存放函数的参数值、局部变量,基本数据类型。 2.堆(heap):堆是一种经过排序的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。由于堆的这个特性,常用来实现优先队列,堆的存取是随意,这就如同我们在图书馆的书架上取书,虽然书的摆放是有顺序的,但是我们想取任意一本时不必像栈一样,先取
二叉树最大宽度和高度 时间限制:1s 空间限制:128000KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 给出一个二叉树,输出它的最大宽度和高度。 输入描述 InputDescription 第一行一个整数n。 下面n行每行有两个数,对于第i行的两个数,代表编号为i的节点所连接的两个左右儿子的编号。如果没有某个儿子为空,则为0。 输出描述 OutputDescription 输出共一行,输出二叉树的最大宽度和高度,用一个空格隔开。 样例输入 SampleInput 5 23 45 00 00 00 样例输出 SampleOutput 23 数据范围及提示 DataSize&Hint n<16 默认第一个是根节点 以输入的次序为编号 2-N+1行指的是这个节点的左孩子和右孩子 注意:第二题有极端数据! &
前言 在上一篇文章中,我们聊了枚举算法和贪心算法,并进行了详细对比,让大家了解了这两个算法的相关特点。相关的传送门如下: 什么是算法?从枚举到贪心再到启发式(上) 今天咱来聊聊启发式算法吧。至于什么是启发式算法,为什么有了枚举和贪心,还要启发式算法。看完这篇文章,相信你就能找到答案哦。 什么是启发式算法? 在上一篇文章中,我们对比分析了枚举法和贪心法的特点。枚举法呢,虽然能求得问题的最优解,但是所花的时间是在是太太太大了。贪心法呢,虽然能在极短的时间内找到一个尚且过得去的解,但是呢,有时候求得的解是在是太low啦。虽然在上次的文章中大家没有很明显看到这一点,因为0-1背包问题还算比较简单,但是在一些复杂的组合优化问题比如vrp问题中,贪心法的弊端就凸显出来了。 所以啊,枚举法时间太长没法用,贪心质量太差,人们就需要另辟蹊径,找到一条既能够得到一个比较优质的解,又能将求解资源控制在一定范围内的社会主义道路。这时候启发式算法就应运而生啦。 说白了,启发式算法就是在一个合理的求解资源范围内(合理的时间,合理的内存开销等)求得一个较为满意的解。该解毫无疑问,是要优于或等于贪心解,有可能达到枚举
小APP代码小坑flaskjinja模板显示图片flaskajax操作部署TOC 小APP代码 importos fromflaskimportFlask,flash,request,redirect,url_for,render_template,send_from_directory,jsonify,json fromwerkzeug.utilsimportsecure_filename importtime fromos.pathimportjoin,getsize fromutilsimportallowed_file,get_hash,unzip_file importshutil importprocess ALLOWED_EXTENSIONS={'zip'} app=Flask(__name__) app.config['UPLOAD_FOLDER']='./resources/source/' app.config['ANALYZE_FOLDER']='./resources/analyze/' @app.route('/',methods=['GE