上一讲我们安装 etcd 服务端,这一讲我们来一起学学如何使用 etcd 客户端常见的命令。文章内容来源于参考资料,如若侵权,请联系删除,谢谢。
etcd可通过客户端命令行工具 etcdctl 对etcd进行请求操作
# 帮助命令,会列出所有的命令和选项,在记不太清命令的时候,可以使用
etcdctl ‐h
# 对某个命令进行更加详细的介绍
etcdctl put -h
键操作包括最常用的增删改查操作,包括PUT、GET、DELETE等命令。注意:etcd 中 PUT 当 key 不存在是新增,当 key 存在时是修改。
# PUT 新增或者修改某个键的值
etcdctl put /stu/name /xiaole
#GET获取指定键的值
etcdctl get /stu/name
#以16进制格式返回
etcdctl get /stu/name ‐‐hex
#获取key范围内的值 半开区间:左闭右开
etcdctl get /stu/name /xiaole3
#获取指定前缀的值 可以使用选项 ‐‐limit 限制返回的key数量。
etcdctl get ‐‐prefix /stu/name
etcdctl get ‐‐prefix /stu/name ‐‐limit3
#按key的字典顺序读取
#读取字典顺序大于或等于 name2 的key:
etcdctl get ‐‐from‐key name2
# etcd可通过读取一个key来获取当前etcd服务端的版本号,不管key是否存在
etcdctl get /stu ‐w=json
#访问以前版本的key
etcdctl get ‐‐rev=8 /test/name #访问第8个版本的key
返回结果字段解析:
cluster_id: 请求的etcd集群ID。
member_id: 请求的etcd节点ID。
revision: etcd 服务端当前全局数据版本号
。对任一 key 的 put 或 delete 操作都会使 revision自增1
。revision=1 是 etcd 的保留版本号,因此用户的key版本号将从2开始
。
raft_term: etcd当前raft主节点任期号
。
create_revision: 当前 key 创建时全局数据版本号revision的值
。
mod_revision: 当前key最后一次修改时全局数据版本号revision的值
。
version: 当前key的数据版本号。key创建时 version为1,对当前key进行put操作会使version自增1,将key删除后,重新创建,version又会从1开始计数。
# 删除一个键或者特定范围的键
etcdctl del /aaa/bbb
etcdctl del /test/name /test/name3
#可以通过选项 ‐‐prev‐kv 让命令返回对应的值
etcdctl del ‐‐prev‐kv name1
watch
监测一个键值的变化,一旦键值发生更新,就会输出最新的值并退出
etcdctl watch /test/name
另一个终端输入 etcdctl put /test/name fox
类似 redis 的 TTL,etcd 中的键值对可以绑定到租约上,实现存活周期控制
。应用客户端可以 为 etcd 集群里面的键授予租约,一旦租约的TTL到期,租约就会过期并且所有附带的键都将被删除
# 授予租约 TTL 为30s
etcdctl lease grant 30
#将 key 与 租约进行绑定
etcdctl put ‐‐lease=705b8474d1acd63b name fox
当然,应用通过租约ID可以撤销租约。撤销租约将删除所有附带的key
#撤销租约
etcdctl lease revoke 705b8474d1acd641
应用程序可以通过刷新其TTL保持租约存活,因此不会过期
# 刷新租约
etcdctl lease keep-alive 705b8474d1acd63b
应用客户端可以查询租约信息,检查续订或租约的状态,是否存在或者是否已过期
# 查询租约
etcdctl lease timetolive 705b8474d1acd647
etcdctl lease timetolive ‐‐keys 705b8474d1acd647
# 创建用户
etcdctl user add fox
# 删除用户
etcdctl user del fox
#修改密码
etcdctl user passwd fox
#查看所有用户
etcdctl user list
#查看指定用户及绑定角色
etcdctl user get fox
# 创建角色
etcdctl role add test
# 给角色赋权,可读/可写/可读写
etcdctl grant‐permission role_name [read|write|readwrite] /name
# 回收角色赋权
etcdctl role revoke‐permission role_name /name
#删除角色
etcdctl role del test
#查询角色列表
etcdctl role list
#查询指定角色的权限
etcdctl role get test
#用户绑定角色
etcdctl user grant‐role 用户名 角色名
#回收用户绑定权限
etcdctl user revoke‐role 用户名 角色名
# 开启权限
etcdctl user add root
#root用户存在时才能开启权限控制
etcdctl auth enable
# 查看用户列表
etcdctl user list ‐‐user=root
# 权限使用
etcdctl ‐‐user='用户名' ‐‐password='密码' get /name
root 用户是 etcd 默认就有的用户,拥有所有的权限
# root用户自带所有权限,因此只需创建该用户,开启认证即有所有权限
etcdctl ‐‐endpoints http://127.0.0.1:12379,http://127.0.0.1:22379,http://127.0.0.1:32379 user add root
# 开启身份验证
etcdctl ‐‐user='root' ‐‐password='123456' ‐‐endpoints http://127.0.0.1:12379,http://127.0.0.1:22379,http://127.0.0.1:32379 auth enable
# 操作
etcdctl ‐‐user='root' ‐‐password='123456' put name fox
etcdctl ‐‐user='root' ‐‐password='123456' get name
# 创建普通用户
etcdctl ‐‐user='root' ‐‐password='123456' ‐‐endpoints http://127.0.0.1:12379,http://127.0.0.1:22379,http://127.0.0.1:32379 user add fox
# 创建角色
etcdctl‐‐user='root'‐‐password='123456'‐‐endpointshttp://127.0.0.1:12 379,http://127.0.0.1:22379,http://127.0.0.1:32379 role add test
# 用户绑定角色
etcdctl ‐‐user='root' ‐‐password='123456' ‐‐endpoints http://127.0.0.1:12
379,http://127.0.0.1:22379,http://127.0.0.1:32379 user grant‐role fox test
# 给角色赋权
etcdctl ‐‐user='root' ‐‐password='123456' ‐‐endpoints http://127.0.0.1:12379,http://127.0.0.1:22379,http://127.0.0.1:32379 role grant‐permission test readwrite /name
参考资料:
bilibili视频教程
大家好,又见面了,我是你们的朋友全栈君。三星S3C6410的底板Jtag接口是10针,而普通的Jlink的接口是20针。因此就需要接口转换,下面给出相关引脚接口图:图1tiny6410-1308中10针JTAG接口图220针jlink接口定义图3两者连接方式6410开发板的10PIN(上)与J_LINK的20PIN(下)之间具体应该怎么接?1,2VD3.3(上)-1VTref(下)3nTRST(上)-3nTRST(下)5TDI(上)-5TDI(下)7TMS(上)-7TMS(下)9TCK(上)-9TCK(下)6TDO(上)-13TDO(下)4nREST(上)-15nSRST(下)8,10GND(上)-GND(下)1,2(上)只需要使用2;8,10(上)需要使用10发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/142766.html原文链接:https://javaforall.cn
一、前言随着物联网设备的普及和人工智能技术的发展,越来越多的物联网设备及服务暴露在互联网中,这也导致其安全问题备受关注。物联网资产识别是物联网安全中必要且关键的一环,如果能够对暴露在外的物联网资产进行归纳梳理并分析,对于发现物联网设备的安全问题是具有重要意义的。然而物联网资产的识别具备一定的复杂性,首先暴露在互联网上的资产众多,对于大量数据的收集具备一定难度。此外,由于物联网资产的更新变化速度快,种类众多,导致物联网资产识别十分碎片化。对于已知类型的物联网资产往往通过专家知识进行指纹提取,此类方法的人工成本和时间成本都比较高。在探索物联网资产识别的道路上,我们通过研究应用聚类算法取得了不错的效果。二、物联网资产识别物联网资产识别的关键在于找到物联网指纹,往期文章中已经介绍过物联网资产的一些特征和识别方法。本文的研究依然是从探测全网资产的存活端口获取响应信息(也称Banner),利用Banner进行物联网资产识别的方式进行研究。1物联网资产指纹物联网设备厂商开发出类别繁多的设备,不同的厂商的设备类型以及版本号类型编号等都具有一定差异。路由器仅按照应用类别区分就有无线路由器,商用路由器,工
1.递归:程序调用自身的编程技巧称为递归2.案例:/** *@param递归$[name] */ functiondeeploop(&$i=1){ echo$i; $i++; if($i<10){ deeploop($i); } } deeploop(); 结果:123456789复制3.global/** *@param递归$[name] */ $i=1; functiondeeploop(){ global$i;//Global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。 echo$i; $i++; if($i<10){ deeploop($i); } } deeploop();复制4.static/** *@param递归$[name] */ functiondeeploop(){ static$i; echo$i; $i++; if($i<10){ deeploop($i); } } deeploop();复制5.说白了递归就是一个循环,用循环实现和递归实现是同样的效果。/
java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性的会将实现了List接口的类称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行储存的,在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。 一、List接口 List作为Collection接口的子接口,当然可以使用Collection接口里的全部方法。而且由于List是有序集合,因此List集合里增加了一些根据索引来操作集合元素的方法。1.1常用方法方法名说明voidadd(intindex,Objectelement)将元素element插入到List集合的index处booleanaddAll(intindex,Collectionc)将集合c所包含的所有元素都插入到List集合的index处Objectget(intindex)返回集合index索引处的元素intindexOf(Objecto)返回对象o在List集合中第一次出现的位置索引intlastIndexOf(Object
一.拷贝packagemain import"fmt" funcmain(){ //copy函数,把一个切片copy到另一个切片之上 vara[1000]int=[1000]int{0,1,2,3,4,5} b:=a[:4] c:=make([]int,4,4) copy(c,b) fmt.Println(c) c[1]=3 fmt.Println(a) } //copy是将索引部分和值部分都在内存开辟了新的控件复制了两份,a与C没有关联关系,c变a也不会发送变化复制二.赋值packagemain import"fmt" funcmain(){ vara[1000]int=[1000]int{0,1,2,3,4,5} b:=a[:4] c:=b fmt.Println(c) c[1]=3 fmt.Println(a) } //只在内存开辟了一个索引区域,复制了一份但是同样还是指向a,所有此时c发送改变a也发送改变复制
PHPMailer是一个用于发送电子邮件的PHP函数包。直接用PHP就可以发送,无需搭建复杂的Email服务。今天来说一下如何在thinkphp框架中使用此扩展类。一、功能描述*.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址*.支持多种邮件编码包括:8bit,base64,binary和quoted-printable*.支持SMTP验证*.支持冗余SMTP服务器*.支持带附件的邮件和Html格式的邮件*.自定义邮件头*.支持在邮件中嵌入图片*.调试灵活*.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等*.可运行在任何平台之上二、下载安装本人通过composer进行安装,在已安装好的tihnkphp框架内public同级目录下右键使用git(Git安装),复制如下命令并回车:composer require phpmailer/phpmailer复制效果如下:composer会自行下载,并配置compoer.json文件,待完成后可在vendor目录下查看。如下图:三、使用使用方式如下:<?php /**
精炼鉴黄师背后的故事——大蛇智能鉴黄师版正式发布用AI来鉴别黄色图片,已经不是什么新鲜的事情。然而能够训练出一个可用的图像识别模型,其中所需要的细节知识还是值得学习的。本文就来从鉴黄师的训练细节说起,为大家介绍一下训练出高质量的可用模型所需要的具体步骤。可以帮助大家举一反三,在其它领域训练出高质量的商用模型。一、数据集的选取在GitHub上有一个20万张图片的原始鉴黄数据集,直接使用该数据集可以使我们节约很多时间。这份资源的贡献者是一位名叫AlexanderKim的数据科学家。1.1原始数据集介绍数据集中,一共有227995张图片。并将内容分为5类,分别是:hentai、sexy、neutral、drawings、porn。其中,hentai类别中有45228张;sexy类别19554张;neutral有20960张、drawings有25732张;porn类别最多,有116521张。这些图片,是以链接的方式呈现的。以sexy类别为例:具体地址如下:https://github.com/alexkimxyz/nsfw_data_scrapper据作者说,这些数据集可以用来训练图像分类器
版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/u014688145/article/details/77941761挑战程序竞赛系列(58):4.6树上的分治法(1)传送门:POJ1655:BalancingAct思路: 选择使得删除该顶点后得到的最大子树的顶点数最少的顶点作为分割顶点。为什么就是最大顶点数的最小呢?可以这么考虑,如果存在一种极度不平衡的状态,那么我们可以通过移动树的顶点,让它进入下一状态减少不平衡态,这种情况总能在不平衡态时发生。那么最大子树顶点数最小,意味着剩余顶点数最大但比这最大子树小那么一点,嗯哼,当然是最平衡的。可以证明树的重心每个子孩子的顶点数不会超过n/2,比如一个重心带两条边的情况,我们可以认为较大顶点≈较小顶点数,而总和为n-1,除一除更不会超过n/2了。参考《挑战》P361: 思路就那么一条,提供两种做法。方法1:importjava.io.BufferedReader; importjava.io.File; importjava.io.FileInputStream; importjava.io.
作者:SavanPatel 时间:2017年5月5日 原文:https://medium.com/machine-learning-101/chapter-2-svm-support-vector-machine-coding-edd8f1cf8f2d这不是一个错误-它只是一个没有说明文档的新功能支持向量机和朴素贝叶斯比?训练速度慢吗?让我们在这个编码练习中探索所有这些问题。这是第2章:支持向量机或支持向量分类器的第二部分。如果你还没有阅读理论(第一部分),我建议你在此处阅读。强烈建议你了解SVM分类器背后的基础知识。虽然通过阅读你会对实现有足够的了解,但我强烈建议你打开编辑器和代码以及教程。我会给你更好的洞察力和持久的学习。 我们该怎么办?别忘了❤。:) 编码练习是以前的NaiveBayes分类器程序的扩展,它将电子邮件分类为垃圾邮件和非垃圾邮件。不用担心,如果你还没有通过朴素贝叶斯(第1章)(虽然我建议你先完成它)。这里也应以抽象的方式讨论相同的代码片段。我们将通过将训练数据集大小减少10%来减少训练时间。然后,我们改变调整参数以提高准确率。我们将看到变化的内核,C和gamma如何
1、对下面两个文件编译后,运行会输出什么?//第一个文件a.c #include<stdio.h> externcharp[]; externvoidf(); intmain() { f(); printf("a.c:%s\n",p); return0; } //第二个文件b.c char*p="HelloWorld"; voidf() { printf("b.c:%s\n",p); }复制打印结果: b.c:HelloWorld a.c:ل€¤※@_ 分析:在我们看来,虽然使用字符数组和字符指针差不多,printf都可以打印出字符串出来,但是编译器对他们的处理完全不同。 对于字符指针,编译器看到后,会把里边保存的值取出来,然后在去这个地址值处,将字符串取出来(进行一次寻址);对于字符数组,编译器直接到数组首地址处打印字符串。 在这里b.c定义的是字符指针,也就是说p的地址不是“helloworld”的地址,p中保存的才是“helloworld”的地址。但是到了a.c里面,却声明成了数组,所以编译的代码
流动效果在3D领域有着广泛的应用场景,如上图中医学领域可通过3D的流动直观的观察人体血液的流动,燃气领域可用于监控管道内流动的液体或气体的流向、流速和温度等指标。如今企业数据中心机房普遍面临着设备散热的问题,采用冷热通道方案可大大提高数据中心的散热能力,充分有效利用机柜和机房的空间,因此在电信的3D机房监控领域,也常需要借助流动的效果,对机房冷热通道系统进行监控。Hightopo的HTforWeb作为3D客户端呈现解决方案,今天介绍的重点不在于采集这些指标,而在于如何应用HT的预定于3D元素来实现流动的效果。在《透过WebGL3D看动画Easing函数本质》这篇介绍的基于HTforWeb的动画,是通过改变模型的位置方向来实现动画,而本文要介绍的方案则是保持模型位置方向不动,而是通过控制模型的贴图参数uvScale和uvOffset实现流动的控制,这样实现的好处是没有增加过多的3D图元模型,同时可借助2D的图片融合到3D进行呈现,毕竟美工改变2D图片,或程序员内存中动态改变2D图片,都会比动态改变3D模型来的容易且轻量。该例子主要应用了ht.Shape类型对象,该对象在ht.graph.
05Jul2016 shell相关分享由于工作原因,每天都会使用shell,难免会有很多重复性的命令操作,于是积累了一些shell别名和函数,特此分享,希望你能有所收获!自动source环境变量某些软件运行之前需要source环境变量,但是每次打开新终端都要去source环境变量太麻烦,所以我一般是将该软件所需的环境变量添加到~/.bashrc或者/etc/profile文件中,例如:exportTEST_ENV=/path/to/dir复制然后每次打开新终端都会自动source环境变量。修改PATH若经常需要执行某个目录下的可执行文件,可以将该目录添加到PATH中,每次执行时直接输入可执行文件名即可,例如:exportPATH=/path/to/bin:$PATH复制然后在终端就可以直接执行/path/to/bin目录中的可执行文件了,而不是每次进入该目录,然后执行./cmd,这里需要指出的是,切记将$PATH附在最后,因为shell在PATH中搜索可执行文件顺序是从前往后,如果将$PATH放在最前面,当系统中有2个同名的命令行时,你执行的命令可能是另外一个。常用别名在使用shell
内容|RafaelSchultze-Kraft编译|Aholiab深谙币圈的你,对于那些出现在币价预测文章里的走势图想必不陌生。这些图往往旨在对未来n天的币价做预测,并声称是结果基于大数据或深度学习算法。一副特别科学又靠谱的样子。 但你不知道的是,即使这些图真的是用先进的深度学习模型和算法来实现,结果也非常的不可信。 本篇文章,WATTx数据科学家,机器学习工程师RafaelSchultze-Kraft亲自上阵,为我们揭秘那些「高大上」的币价预测图的背后,都有那些不为人知的技术秘密。炒币的人想必都对下面这张图不陌生,就是加密货币行情的走势图。这张图是我用深度神经网络做的一个比特币币价的预测,你看这曲线、这走势,还是那么回事吧?这张图的数据确是来源于以往的走势数据,并且只能用以往的数据来训练模型。你可能会说,那有了这个走势预测的模型,不就相当于有了印钞机器了吗?想要?拿去啊。比特币价预测图实现代码地址:https://github.com/neocortex/lstm-bitcoin-prediction不过慢着,B先装到这儿,听我一句,上面说的一切都别当真!重复一遍:上面说的一
Flash中一个fla文件可以关联到一个as文件,这个有点类似于asp.net中的codebehind.可参考以下图操作: 注: 1.as文件的类名与文件名要求一样,并且默认情况下必须与fla处于同一目录。 2.所有as文件必须继承自flash.display.Sprite下面这个是一个示例文件代码:package{ importflash.display.Sprite; importfl.controls.Label; importfl.controls.Button; importfl.controls.List; importflash.text.TextFieldAutoSize; importflash.events.MouseEvent; importfl.data.DataProvider; publicclassAddControlCodeextendsSprite{ publicfunctionAddControlCode(){ //加一个label var_label:Label=newLabel(); _lab
MySQLBLOB类型MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。插入BLOB类型的数据必须使用PreparedStatement,因为BLOB类型的数据无法使用字符串拼接写的。MySQL的四种BLOB类型(除了在存储的最大信息量上不同外,他们是等同的)实际使用中根据需要存入的数据大小定义不同的BLOB类型。需要注意的是:如果存储的文件过大,数据库的性能会下降。如果在指定了相关的Blob类型以后,还报错:xxxtoolarge,那么在mysql的安装目录下,找my.ini文件加上如下的配置参数:max_allowed_packet=16M。同时注意:修改了my.ini文件之后,需要重新启动mysql服务。 向数据表中插入大数据类型 //获取连接 Connectionconn=JDBCUtils.getConnection(); Stringsql="insertintocustomers(name,email,birth,photo)values(?,?,?,?)"; PreparedStatementp
小结啥啊很久之前写的不过现在忘了来复习一下不过这种题写暴力也是很简单啊但是分少啊qwq 1欧式距离也就是我们常说的欧几里得距离也就是 $z=\sqrt{x^2+y^2}$然后也就是对应到平面上求两个点的距离的时候用横纵坐标之差然后开根号即可 就是现在在班里学习文化课的同学数学课本上的计算公式很好理解不过这种一般用于题目给定你是这样计算距离 至于优化我没见过什么比较大的优化吧或许是我写题少 那么存在一个例题就是奶酪qwq奶酪好啊 题目 这里定义了一下三维平面的计算公式不过是多了一个维度z此时距离我们按照题目给定的计算方法 显然我们发现这是一个并查集维护连通性的问题那么怎么联通一定是两个球体中心之间的距离小于等于给定的2*r才能相切或者相交 由于我们发现开根号是此类问题的不好处理的地方 那么我们不妨考虑此时两边平方即可 #include<bits/stdc++.h> typedeflonglongll; constllN=1100; llT,n,h,r,x[N],y[N],z[N],father[N],d[N
前面了解了一下threading,发现一般都是和queue模块配合使用的,queue产生一个队列,队列模式有3种,针对这三种队列分别有三个构造函数: 1FIFO队列先进先出:classQueue.Queue(maxsize) 2LIFO类似于堆,即先进后出:classQueue.LifoQueue(maxsize) 3优先级队列级别越低越先出来:classQueue.PriorityQueue(maxsize) 队列长度可为无限或者有限。可通过Queue的构造函数的可选参数maxsize来设定队列长度。如果maxsize小于1就表示队列长度无限。调用队列对象的put()方法在队尾插入一个项目。put()有两个参数,第一个item为必需的,为插入项目的值;第二个block为可选参数,默认为1。如果队列当前为空且block为1,put()方法就使调用线程暂停,直到空出一个数据单元。如果block为0,put方法将引发Full异常。调用队列对象的get()方法从
前言 根據 Promtheus上的ExportersandIntegrations頁面 所載,Prometheus有釋出給Elasticsearch所用的exporter,也就是 elasticsearch_exporter 。 本文即是根據elasticsearch_exporter上的指示,主要介绍如何使用Grafana和Prometheus以及elasticsearch_exporter对Elasticsearch性能进行监控。 1.安装elasticsearch_exporter 1.1.下载 下载地址:https://github.com/justwatchcom/elasticsearch_exporter/releases 1.2.下载解压 下载elasticsearch_exporter-1.1.0.linux-amd64.tar.gz安装包并解压到/usr/local目录 wgethttps://github.com/justwatchcom/elasticsearch_
现状:杀毒软件将硬盘里面的加密软件当做病毒干掉了,加密的东西丢失了 解决办法:1开始以为是,文件被删除,用格式化回复工具super_recovery,发现文件并没有删除,用恢复的方法不行,同时这些回复软件一般没破解前不能回复大文件 2网上查找如何回复,发现只要有源加密软件就可以回复,验证这种方法是可以的,但是自己的密码测试多次都不正确。 3观察文件,发现文件夹中有.mem文件,于是搜索.mem文件,发现一篇文章,可能对此有用,全文如下: 高强度文件夹加密大师”很容易破解! 如下为转述: 很多人用了这个<高强度文件夹加密大师9000>进行了移动加密了重要的工作文件,但是在解密的时候却提示出错,后来上网看到了很多网友也说在有同样的情况,后来我才发现这个所谓的国防级加密软件真的太吹! 高强度文件夹加密大师9000的原理是: 本机加密: <高强度文件夹加密大师>把要加密的文件夹内的所有文件转移到当前分区下的\Recycled\S-1-5-21-1060284298-811497611-11778920086-500\INFO2\Di1\com1.{21