蓝牙
$ sudo pip3 install pybluez
http://pypi.org/project/PyBluez/
#!/usr/bin/env python3
# coding: utf8
from time import sleep
import bluetooth
try:
nearby_devices = bluetooth.discover_devices(lookup_names=True)
print("Found {} devices.".format(len(nearby_devices)))
for addr, name in nearby_devices:
print("address = {}, name = {}".format(addr, name))
except KeyboardInterrupt:
print("Ctrl + C ✅")
finally:
sleep(1)
print("clear ✅")
# bluetooth low energy scan
from bluetooth.ble import DiscoveryService
service = DiscoveryService()
devices = service.discover(2)
for address, name in devices.items():
print("name: {}, address: {}".format(name, address))
http://github.com/pybluez/pybluez
http://pypi.org/project/pybluez2/
http://github.com/airgproducts/pybluez2
http://pybluez.readthedocs.io/en/latest/install.html
#!/usr/bin/env python3
import bluetooth
def scan():
print("Scanning for bluetooth devices:")
devices = bluetooth.discover_devices(lookup_names = True, lookup_class = True)
number_of_devices = len(devices)
print(number_of_devices,"devices found")
for addr, name, device_class in devices:
print("\n")
print("Device:")
print("Device Name: %s" % (name))
print("Device MAC Address: %s" % (addr))
print("Device Class: %s" % (device_class))
print("\n")
return
http://geektechstuff.com/2020/06/01/python-and-bluetooth-part-1-scanning-for-devices-and-services-python/
http://forums.raspberrypi.com/viewtopic.php?t=329762
from bluetooth import *
print "performing inquiry..."
nearby_devices = discover_devices(lookup_names = True)
print "found %d devices" % len(nearby_devices)
for name, addr in nearby_devices:
print " %s - %s" % (addr, name)
http://stackoverflow.com/questions/21000680/how-to-find-visible-bluetooth-devices-in-python
http://www.robertprice.co.uk/robblog/2007/01/programming_bluetooth_using_python-shtml/
http://github.com/karulis/pybluez
http://karulis.github.io/pybluez/
http://github.com/EnableTech/raspberry-bluetooth-demo
install error
??? 不支持 Python 3
??? 缺少 C++ 依赖
http://github.com/pybluez/pybluez/issues/476
©xgqfrms 2012-2021
www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!
原创文章,版权所有©️xgqfrms, 禁止转载 ?️,侵权必究⚠️!
本文首发于博客园,作者:xgqfrms,原文链接:http://www.cnblogs.com/xgqfrms/p/17410677.html
未经授权禁止转载,违者必究!
大家好,又见面了,我是你们的朋友全栈君。1、概要背景——攻击行为 WLAN网络的管理帧不加密,可能引发诸多安全问题:黑客窃取AP和用户之间通信的管理帧信息;黑客仿冒AP向用户发送去关联和去认证请求,使用户下线;黑客仿冒用户向AP发送去关联请求,使用户下线;应对——安全策略管理帧保护功能PMF(ProtectedManagementFrame)是WFA(WiFi联盟)发布的基于IEEE802.11w标准的一项规范;目的是将WPA2中对数据帧的安全措施扩展至单播和多播管理action帧,以提升网络的可信度;旨在保护控制和管理帧以及一组稳健的管理帧,防止伪造和重放攻击。受保护的帧类型包括取消关联、取消身份验证和稳健操作帧,相关缩略语ManagementFrameProtection(MFP)ProtectedManagementFrame(PMF)2、实际应用PMF开关计三种情况:不需要—禁用PMF的客户端(或AP)支持。 有能力—即可选的,允许不支持PMF的户端加入支持PMF的网络。这是默认PMF设置。 需要的—即强制的,只有当PMF协商,客户端允 发布者:全栈程序员栈长,转载请注明出处:
Python编程语言需要遵循PEP8规范,但是初学者往往记不住这个规范,代码写得比较丑。本文推荐几个神器来拯救奇丑无边的python代码。一、Jupyternotebook篇Jupyternotebook的代码要想写得规范,推荐用Codeprettify插件。安装插件首先插件Nbextensions 执行以下命令 pipinstalljupyter_contrib_nbextensions复制无报错再执行: jupytercontribnbextensioninstall--user复制选取Codeprettify模块 备注:需要安装yapf模块pipinstallyapf复制使用如下:原始不规范代码:使用工具栏最右侧的按钮:使用后代码立刻变规范了:二、Pycharm篇2.1PyCharm集成pylintpylint是代码检查工具,不能自动修改代码Pylint安装pipinstallpylint复制PyCharm设置文件(file)-设置(settings)-外部工具(external-tools)-添加,其中:program:是python安装路径下的Scripts路径,我的是(建议
题记——执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天。重要消息网易云【玩转大前端】配套课程EDU配套教程Flutter开发的点滴积累系列文章在使用ListView懒加载模式时,当ListView的Item中有图片信息时,在快速滚动过程中会大量的浪费流量与内存,甚至会造成在滚动过程中页面的卡顿效果。在这里提出优化方案,当开始滚动时不加载图片,滚动结束后再加载图片,这个优化方案实现的效果如下图所示,在快速滑动列表数据时,图片未加载,运行内存无明显波动。在这里插入图片描述实现代码如下:classListViewUsePage13extendsStatefulWidget{ @override State<StatefulWidget>createState(){ returnScrollHomePageState(); } } classScrollHomePageStateextendsState{ ///加载图片的标识 boolisLoadingImage=true; ///网络图片地址 StringnetImageUrl= "https:/
列表、元组操作列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作定义列表1names = ['Alex',"Tenglan",'Eric']通过下标访问列表中的元素,下标从0开始计数12345678>>>names[0]'Alex'>>>names[2]'Eric'>>>names[-1]'Eric'>>>names[-2] #还可以倒着取'Tenglan'切片:取多个元素>>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"] >>> names[1:4] #取下标1至下标4之间的数字,包括1,不包括4 ['Tenglan
By超神经场景描述:在农业生产上,利用机器学习,计算机视觉,混合现实等AI技术,打造智能化农业,能够将传统的农业生产带到更加高效的方式中来。关键词:AI农业,混合现实,计算机视觉清明过后,谷雨将至,各地陆续进入了春种时节。中国的农耕文化源远流长,从新石器时代开始,就已经有较为成熟农耕文化,也是目前可考的世界上最早种植小米和水稻的国家。作为农业大国,我国始终把农业放在首位,今年两会上「三农」仍是焦点话题。虽然农耕文明距今已经近八千年,但是机械化的农机工具介入生产,是建国前后才逐渐发展,中国的农民在很长的时间里,都在「看天吃饭」。在科技和农业科学飞速发展的近几十年里,更加科学化的提高农业各个环节的质量和效率,喂饱了六十多亿人口。如今,人工智能逐渐介入农业生产,这次解放的将是农民的生产力。据调查显示:通过农业科技的创新,与传统农业相比,农业科技创业公司利用AI创新技术,使得农作物用水量减少了95%,而在农业用地上的产量却增加了100倍。就目前发展来看,AI农业已经似乎取得不错的成效。耕作前就可以模拟出收成目前人工智能介入农业的主要手段,就是通过机器学习等技术,将大量数据输入统计模型,能够智能
参考: http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.6.0-cdh5.5.0/FlumeUserGuide.htmlLogger-->Flume 1/配置Flume配置文件streaming.confagent1.sources=avro-source agent1.channels=logger-channel agent1.sinks=log-sink #definesource agent1.sources.avro-source.type=avro agent1.sources.avro-source.bind=0.0.0.0 agent1.sources.avro-source.port=41414 #definechannel agent1.channels.logger-channel.type=memory #definesink agent1.sinks.log-sink.type=logger agent1.sources.avro-source.channels=logger-channel a
原创文章,转载请务必将下面这段话置于文章开头处(保留超链接)。 本文转发自技术世界,原文链接http://www.jasongj.com/sql/mvcc/ PostgreSQL针对ACID的实现机制数据库ACID数据库事务包含如下四个特性原子性(Atomicity)指一个事务要么全部执行,要么不执行。也即一个事务不可能只执行一半就停止(哪怕是因为意外也不行)。比如从取款机取钱,这个事务可以分成两个步骤:1)划卡;2)出钱。不可能划了卡,而钱却没出来。这两步必须同时完成,或者同时不完成。一致性(Consistency)事务的运行不可改变数据库中数据的一致性,事务必须将数据库中的数据从一个正确的状态带到另一个正确的状态。事务在开始时,完全可以假定数据库中的数据是处于正确(一致)状态的,而不必作过多验证(从而提升效率),同时也必须保证事务结束时数据库数据处于正确(一致)状态。例如,完整性约束了a+b=10,一个事务改变了a,那么b也应该随之改变。隔离性(Isolation)在并发数据操作时,不同的事务拥有各自的数据空间,其操作不会对对方产生干扰。隔离性允许事务行为独立或隔离于其它事务并发运
据《科学》(Science)杂志2017年10月报道,一家名为Vicarious的人工智能公司开发的人工智能算法攻破了被人们广泛使用的CAPTCHAs验证码。CAPTCHAs(CompletelyAutomatedPublicTuringTestToTellComputersandHumansApart,全自动区分计算机和人类的图灵测试)是目前最常用的一种验证码,通常由一组混乱的字符、波浪线和其他背景噪声组成。例如,在你报名参加一个时事通讯或购买音乐会门票之前,可能会被要求输入这些字符。科学家称,他们已经开发出一种计算机模型,能从根本上攻破CAPTCHAs验证码。有很多种方法可以将字母呈现并混合在一起,人们通常可以很直观的读出来,但对计算机来说却很难。破解验证码的能力已经成为评判人工智能研究人员的一个重要基准。许多人尝试过并获得了一些成功。例如,10年前Ticketmaster公司起诉了一家科技公司,因为对方能够绕过该公司的验证码系统大规模地购买音乐会门票。但人工智能公司Vicarious的联合创始人迪利普·乔治(DileepGeorge)说道,之前的一些尝试只是利用了一种特殊的验证码
ACM模版描述题解这个题的题意有些繁琐,看了好久才看懂。首先给定一个1~n序列,要你进行一系列变换,直到没有变化后,然后对该序列进行区间查询。说起区间查询,很容易想到的就是线段树,可是这个题和线段树有一些差异,因为这个序列变化后是有规律的,划开奇偶看,分别是一个等差数列,所以我们需要处理出来等差数列的第一项就好了。剩下的区间查询就和线段树差不多了,不过不用建树,这倒是一个很有趣的变化。代码#include<cstdio> #include<algorithm> usingnamespacestd; longlongn,m,mod; longlongl,r,u,v; longlongcal(longlonga,longlongb,longlongc) { a-=b; if(a<0) { a=-1; } else { a=a>>c; } longlongB=b+a*(1ll<<c); longlongs; if((++a)&1) { s=(((B+b)>>1)%mod)*(a%mod); } else { s
监控行为分析系统在现场监控范围之内,能够识别分析监控区人员行为违规情况,监控行为分析系统可以识别如睡岗离岗识别、安全带穿戴识别、安全帽反光衣穿戴识别、明火烟雾检测、抽烟行为识别、玩手机检测、区域入侵识别、打电话识别等危险行为,监控行为分析系统依据计算机深度学习+边缘视觉分析技术对把控监控区域的安全,发现违规行为及时预警,降低事件的发生。在如今视频监控的高效发展过程中,海量视频画面已大大的远远超过了人力及时有效处理范畴。监控行为分析系统充分运用和拓展监控摄像头的监控效率与能力,使视频监控系统具备更高智能,对众多视频监控画面同时进行行为识别分析,及时预警违规行为信息及现场声光报警,减轻监控人员压力,提升监控效率。监控行为分析系统对监控地区人员的“不安全行为”和物的“不安全状态”进行全天候24小时不间断识别监测,监控行为分析系统依据机器视觉,对监控区域内人员的的异常徘徊、烟雾、攀高识别、火焰、人数超员、滞留、工装检测、人群聚集、防护用品穿戴等进行监测,发现违规情况及时预警并同步到后台及相关人员的手机上,提升对现场区域监控的效率。
AjaxAjax介绍AJAX(AsynchronousJavaScriptAndXML):异步的JavaScript和XMLAJAX的作用:与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据异步交互:可以在不重新加载整个页面的情况下,与服务器交互数据并更新部分网页的技术同步和异步 AJAX的缺点没有浏览历史,不能回退存在跨域问题(同源)SEO(爬虫)不友好,爬不到数据AJAX快速入门GET请求基本操作//给button按钮绑定事件 constbtn=document.getElementsByTagName('button')[0]; btn.onclick=function(){ //1.创建核心对象 constxhr=newXMLHttpRequest(); constresult=document.getElementById("result"); //2.初始化设置请求方法和url xhr.open('GET','http://127.0.0.1:8000/ajaxservlet&
功能说明如果返回结果中存在Error字段,则表示调用API接口失败。例如: { "Response":{ "Error":{ "Code":"AuthFailure.SignatureFailure", "Message":"Theprovidedcredentialscouldnotbevalidated.Pleasecheckyoursignatureiscorrect." }, "RequestId":"ed93f3cb-f35e-473f-b9f3-0d451b8b79c6" } }复制 Error中的Code表示错误码,Message表示该错误的具体信息。 错误码列表公共错误码 错误码 说明 ActionOffline 接口已下线。 AuthFailure.InvalidAuthorization 请求头部的Authorization不符合腾讯云标准。 AuthFailure.InvalidSecre
1、题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 2、代码实现 importjava.util.ArrayList; importjava.util.LinkedList; importjava.util.Queue; /* publicclassTreeNode{ intval=0; TreeNodeleft=null; TreeNoderight=null; publicTreeNode(intval){ this.val=val; } } */ publicclassSolution{ ArrayList<ArrayList<Integer>>Print(TreeNodepRoot){ ArrayList<ArrayList<Integer>>listAll=newArrayList<>(); ArrayList<Integer>list=newArrayList<>(); Queue<TreeNode>queue=newLinkedList
(转载)currentColor让CSS更简短 本文转载自w3cplus的currentColor让CSS更简短(2015-05-08的文章) 文章写的不错,原文转载,未做修改 其实currentColor已经出现了有一段时间了,但我是几个月前在阅读DudleyStorey的文章时才听说了currentColor的。DudleyStorey指出currentColor的浏览器(包括IE9+)支持是非常好的。这对于我把它用于生产已经是非常足够的了,而且我非常惊讶地发现这个关键字其实非常好用:它有助于让CSS代码变得更简洁和智能。 在深入探讨具体的实例之前,先来看一段简短的理论知识。这是MDN中对currentColor的描述: currentColor关键字表示元素color属性的计算值。它能让原本不能默认通过属性或子元素继承的颜色属性继承。 SVG SVG是我最喜欢的。举一个在Web上很常见的例子——包含SVG图标以及title的按钮。我的网站上面也有这些按钮: 当然,如果你是一个非常负责的网页设计师,为了更好地与用户交互,你为按钮的各个状态(:hover,:focus,
安装 shell>yuminstallmariadb-server-y复制 配置 #修改文件/etc/my.cnf [mysqld]datadir=/mydata/data/mysqlcharacter-set-server=utf8 #默认字符集(据说utf8mb4才是真正的UTF8字符集)collation-server=utf8_general_ci #默认排序规则(同上对应的是utf8mb4_general_ci)[mysqld_safe] log-error=/mydata/logs/mariadb/mariadb.log 复制 #创建必要的目录shell>mkdir-p/mydata/data/mysql/mydata/logs/mariadbshell>chown-Rmysql:mysql/mydata/data/mysqlshell>chown-Rmysql:mysql/mydata/logs/mariadb复制 启动 shell>systemctlenablemariadb shell>systemctls
转载:http://blog.csdn.net/zouxy09/article/details/9993371 本文的论文来自: NotesonConvolutionalNeuralNetworks, JakeBouvrie。 这个主要是CNN的推导和实现的一些笔记,再看懂这个笔记之前,最好具有CNN的一些基础。这里也先列出一个资料供参考: [1] DeepLearning(深度学习)学习笔记整理系列之(七) [2] LeNet-5,convolutionalneuralnetworks [3]卷积神经网络 [4] NeuralNetworkforRecognitionofHandwrittenDigits [5] Deeplearning:三十八(StackedCNN简单介绍) [6]Gradient-basedlearningappliedtodocumentrecognition. [7]Imagenetclas
1、Location 2、http.Redirect 代码 /index->/login->/home packagemain import( "fmt" "log" "net/http" "strings" ) funcindex(whttp.ResponseWriter,r*http.Request){ flag:=true ifstrings.Contains("/index",r.URL.Path){ flag=false } fmt.Println(flag) w.Header().Set("Content-Type","text/html") w.Write(indexHTML) } varindexHTML=[]byte(` <!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <title>Title</title> </head> <body> <butto
目录基础信息1.1IntroductiontoR1.1.1WhyuseR?1.1.2ObtainingandinstallingRWindowsLinux1.1.3WorkingwithR帮助系统工作空间输入输出1.1.4Packages1.1.5BatchProcessing1.1.6Usingoutputasinput:reusingresults1.1.7Workingwithlargedatasets1.1.8Workingthroughanexample总结和问答练习 本篇参考: ExpRe[3]python[0]Anaconda配置python环境 https://www.cnblogs.com/minor-second/p/15549061.html ExpRe[31]LaTeX[0]Overleaf在线使用,texlive本地使用,VSCode插件 https://www.cnblogs.com/minor-second/p/15710893.html 基础信息 书名:RinAction ISBN:978-1-617-29138-8 1.1Introductio
0.签名 java-Xmx2048m-jarout/host/linux-x86/framework/signapk.jar-wbuild/target/product/security/testkey.x509.pembuild/target/product/security/testkey.pk8 这个key是debug模式下自动生成的key 你也可以通过openssl创建自己私有的key OTA打包过程中会自动使用生成的key进行签名,OTA升级包里签名的位置如下 │[OTAPACKAGE] │└─META-INF │CERT.RSA │CERT.SF │MANIFEST.MF │└─com │---└─android │------otacert 1.使用Android的打包命令制作oTA升级包 整个项目编译完成后再执行makeotapackage 生成的完整升级包会存放在out\debug\target\product\[projectname]\ 下 具体名字根据make otapackag
CPU占用率很高,响应很慢 有的时候我们会发现CPU占用率很高,系统日志也看不出问题,那么这种情况下,我们需要去看一下运 行中的线程有没有异常。 执行curlhttp://127.0.0.1:8088/loop这个方法,会出现一个线程死循环的情况。 通过top-c动态显示进程及占用资源的排行榜,从而找到占用CPU最高的进程PID,得到的 PID=80972然后再定位到对应的线程,top-H-p80972查找到该进程中最消耗CPU的线程,得到 PID=81122 通过printf"0x%x\n"81122命令,把对应的线程PID转化为16进制 截止执行这个命令jstack80972|grep-A200x13ce2查看线程Dump日志,其中-A20表示 展示20行,80972表示进程ID,0x13ce2表示线程ID 从上述内容可以看出,是WhileThread.run方法中,执行的逻辑导致CPU占用过高。
什么是websocket WebSocket是web浏览器和服务器之间的一种全双工通信协议,其中WebSocket协议由IETF定位标准,WebSocketAPI由W3C定位标准。一旦Web客户端与服务器建立起连接,之后的全部数据通信都通过这个连接进行。通信过程中,支持发送JSON、XML、HTML或图片等任意格式的数据。 WS(WebSocket)与HTTP协议相比 相同点主要有: 都是基于TCP的应用层协议; 都使用Request/Response模型进行连接的建立; 在连接的建立过程中对错误的处理方式相关,在这阶段WS可能返回和HTTP相同的返回码 都可以在网络中传输数据 不同之处在于: WS使用HTTP来建立连接,但是定义了一系列新的header域,这些域在HTTP中并不会使用; WS的连接不能通过中间人来转发,它必须是一个直接连接——那网关如何转发?分别建立client-网关、网关-upstream的连接? WS连接建立之后,通信双方都可以在任何时刻向另一方发送数据; WS连接建立之后,数据的传输使用帧来传递,不再需要Request消息 WS的数据帧有序 主要特点