imx6ull 正点原子设备树适配韦东山的开发板 (一)顺利启动,配置led,button

设备树在公司经常用到 有时候很多驱动编写也就是替换设备树,所以拿韦老师的板子练手设备树 这次尝试直接拿正点的设备书改成韦老师的板子能用 对比 正点原子的设备树结构图 韦东山的设备树结构图 从因为蓝色的是开发板厂商对开发板自己的优化,所以我们对正点原子蓝色部分进行修改就行 只编译imx6ull 对正点原子里的包进行修改,因为有太多设备树编出来,所以把不要的去掉 修改Makefile makefile里面只留下我们要的 根据缺失把之前删掉的其他文件找回,直到编译通过 让设备树支持内核运行到根文件系统 把正点imx6ull-14x14-evk.dts烧录到板子上,无法启动 从正常启动看是因为网卡这里没有跑通 捣鼓了几天后,根据cpu频率的报错,发现是他们的dtsi文件不一样,真没想到,这里面也会被改 开机后,lcd有一半能亮,不得不说,这个适配还是很强的 先改个led,看看设备树对不对 用的是SNVS_TAMPER3 io,在datasheet里面查找,这个io能复用为什么引脚, 在复用模式5中,复用为gpio5 3 1.改gpio子系统(gpio子系统指定的资源比较少) led1{ label = "sys-led"; gpios = <&gpio5 3 GPIO_ACTIVE_LOW>; linux,default-trigger = "heartbeat"; default-state = "on"; }; 2更改pinctrl子系统(pinctrl子系统可以指定gpio口的电器属性,个人感觉这个偏硬一些) 因为是引用了pinctl系统,所以下面的pinctrl 引脚也需要修改pinctrl(设置引脚,设置引脚驱动能力) 电器属性设置 刷入设备树还是不能看见闪烁,排查了一下发现设备树里面引脚占用了,给占用的随便改改 设备树进行修改,那么就能看见系统灯了 在/sys/firmware/devicetree/base/leds/led1 目录里可以看见这个节点的各种状态 在/sys/class/leds/sys-led 里面可以直接控制led 按键设备树修改 怎么写按键设备树 进入内核里面查看官方文档 alientek_linux/Documentation/devicetree/bindings/input lable:指定一个按键标签(算是取名吧) linux,code: 表明按键类型,意思是代表了大键盘里面的某一个按键,有自己的定义 gpios :指定使用的gpio 按照上面的描述,也不用写pinctrl子系统,只写gpio子系统就行了(可能不准确,博主确实发现写了和没写是一样的),或者是因为 这个板子上面的引脚复用刚好只作为按键了,不用pinctrl子系统进行复用,默认就调用了 开始修改按键 key1 ->SNVS_TAMPER1 去hexdump上面看看,已经注册成event1了,也就表示每有一个按键就会注册成input下面的一个event事件 key2->GPIO4_IO14 根据这个io口的描述,进入datasheet里面找到,并且在pinctrl里面配置复用功能5 MX6UL_PAD_NAND_CE1_B__GPIO4_IO14 0x80000000

GetShell的姿势总结

0x00 什么是WebShell 渗透测试工作的一个阶段性目标就是获取目标服务器的操作控制权限,于是WebShell便应运而生。Webshell中的WEB就是web服务,shell就是管理攻击者与操作系统之间的交互。Webshell被称为攻击者通过Web服务器端口对Web服务器有一定的操作权限,而webshell常以网页脚本的形式出现。常见的WebShell使用asp、jsp和php来编写,提供了如执行系统命令、文件上传下载、数据库管理等功能。 0x01 获取WebShell的方式 获取WebShell的动作又叫做GetShell,是渗透测试各项能力的综合体现,也是渗透测试一个重要的阶段性目标。 GetShell方式众多,常见如文件上传、SQL注入、命令执行、文件包含、解析漏洞等等。有时候一个漏洞即可GetShell,有时候则需要各种漏洞打一套组合拳方可。So,多交流,才能掌握更多GetShell骚姿势。 1.文件上传漏洞GetShell 通过利用任意文件上传漏洞可以最快获取WebShell,一般常见有三种情况:(1)直接上传木马文件到目标服务器;(2)绕过防护(以下不包括绕过WAF防护,以后有时间再介绍绕过WAF的姿势)限制上传木马文件;(3)CMS等的通用任意文件上传漏洞。在对目标进行渗透测试时,可从前后台头像修改、文件导入、图片上传等处寻找文件上传接口。此外,还需要根据识别的站点指纹寻找是否存在文件上传漏洞。以下是针对不同情况下上传WebShell的方式。 (1) 站点没有任何防护,且上传点未做安全校验,则可直接上传WebShell文件。 (2) 站点存在简单防护: a) 前端校验文件后缀时,可先传允许的文件类型,然后抓包修改文件后缀。 b) MIME校验时,抓包修改Conten-Type为允许MIME类型。 (3) 绕过黑名单的方式: a) 利用特殊文件后缀。如.php3、.php5、.php7、.phtml;asa、cer、cdx、aspx;jspx、 jsw、jsv、jspf等,但不一定都能被解析。 b) 配合Windows/Linux特性使用特殊字符,如上传.php::$DATA、“.php空格”等后缀的文件到Windows服务器,由于Windows的文件后缀中不能包含一些特殊符号,使得这些文件在保存在Windows服务器上时后缀只剩下.php。 c) Apache 1.x、2.2.x版本文件解析漏洞,.php.xx。 d) 后缀大小写,如pHp。 e) 在数据包中使用双filename,如filename=“1.jsp”; filename=“1.php”。 (4) 绕过白名单: a) 00截断,要求PHP<5.3.4且magic_quotes_gpc为OFF状态。 b) 配合解析漏洞(见解析漏洞getshell)。 c) 文件包含图片马(见文件包含getshell)。 (5) 绕过文件内容检测: a) 使用文件头绕过,如图片中使用GIF89a。 b) 使用图片马,接着配合解析漏洞或者文件包含漏洞getshell。 c) 使用元数据编辑器在图片的EXIF信息中插入一句话木马。 (6) CMS、框架等的文件上传漏洞。 如禅道<=12.4.2后台任意文件上传漏洞;编辑器漏洞、中间件的也不容忽视,如CVE-2017-12615可直接使用put写入木马文件。当然,“老洞”IIS 6 开启WebDAV可直接put写入文件。 以下两张图是禅道<=12.4.2后台任意文件上传漏洞的利用截图: 2.命令(代码)执行漏洞GetShell 利用命令(代码)执行漏洞写入WebShell文件从而GetShell。在此列举了以下四种常见情况作为说明。 (1) 利用CMS、框架通用漏洞,如thinkPHP命令执行漏洞,影响范围较广,如鲶鱼CMS、ThinkCMF、yunCMS等。Struts2远程命令(代码)执行漏洞,如S2-059、S2-057…… (2) 中间件、架构通用漏洞,如:Jboss远程命令执行、weblogic未授权命令执行CVE-2020-14882…… (3) 应用程序命令执行漏洞,如Redis 4.x/5.x命令执行漏洞、Zabbix远程命令执行CVE-2020-11800…… (4) 命令注入漏洞写入WebShell,根据Linux和Windows的不同采用不同的注入方式。如: 3.解析漏洞GetShell 利用解析漏洞将图片马等文件解析为恶意脚本文件从而GetShell,本文主要介绍在IIS、Nginx、Apache的解析漏洞。一般,该漏洞会配合文件上传漏洞等来获取WebShell。 (1) IIS解析漏洞。

Vue与Springboot传参

PS:restful api接口规范中,有四种请求方法,分别为get、post、delete、put。 但我认为,传参其实就只有两种方式,一种通过url传参,另一种通过提交表单传参。 所以下面的内容,我按传参方式整理。 最后放一个链接,如果不清楚下文中三种参数注解,可以看我之前的文章 后端获取前端数据三种方式 一、url传参 url传参有两种形式 1、/get/{param}:这种形式通常用于分页时 // 模块化 js getList(param) { return request({ url: `/get/${param}`, method: 'get' }) } 说明:url处,` 这个符号并不是单引号’’,是tab键上的一个符号,该符号在es6中运用,被称为模板字符串,这里只做简单说明,依旧不了解的可以自行去查阅一下相关资料。 在该符号范围内所有的字符都只会被认为是字符串,也就是说不存在特殊字符这一概念,举个例子,就好比是我们在纸上书写的内容,写的什么就是什么,仅有一种情况会违背前面的说法,即在该符号内存在${}表达式时。 // vue页面调用方法 js fetchData(currentPage = 1){ this.currentPage = currentPage; teacher.getList(this.currentPage).then(response => { ... }) } // java @GetMapping("get") public Object getTest(@PathVariable("param") int currentPage) { ... return object; } 2、/get?id = params // 模块化 js getList(params) { return request({ url: `/get`, method: 'get', params: params //params }) } 说明:关于参数处的简写,当参数名正好为params时,可以简写成params,否则必须写完整,这里涉及到了es6的对象简写:

PX4 飞控源码系统框架介绍

转载自:https://my.oschina.net/u/4394481/blog/3321552 PX4 飞控源码系统框架介绍 osc_ozmm6ila 2019/12/31 17:19 阅读数 618 一、build_px4fmu-v2_default 编译以后生成的文件:内部主要需要在意的就是topics_temporary_header(所有的任务是要的头文件,在创建任务和使用数据结构时可以从该处检索);topics_temporary_sources(系统中所有的任务函数) 二、Cmake 配置文件,主要使用 nuttx_px4fmu-v2_default.cmake。该处主要是关于系统使用的文 件的路径配置,在 PX4 系统所有的.CPP 和.C 文件都是通过在该处进行路径包含的。在需 要自己创建私有任务或者 sensor 驱动程序时需要添加到该处。 三、mavlink 主要负责和地面站QGC通信的协议部分,这部分可以直接调用。分为1.0版本和2.0版本,以后都更新到2.0版本了 四、msg uORB manger 的缩写:msg。该部分主要是 PX4 系统的使用的所有的数据结构的集 合部分,各种任务和 sensor 驱动中需要获取的 sensor 数据都在此部分,还包含各种运行状 态的数据结构。其中需要注意的是该文件夹下的 Cmakelists.txt,该文档是整个 msg 部分的 配置部分,类似第二部分的 Cmake 中的配置文件一样,在开发者创建任务或者 sensor 驱 动程序时创建对应的数据结构(***.msg)以后,需要把开发者创建的***.msg 添加到 Cmakelists.txt 中,否则编译时识别不到开发者创建的数据结构。 在该部分创建好以后,直接编译可以自动生成相对应的 C/C++下的标准头文件,即在 第一部分所介绍的 topics_temporary_header,在 PX4 系统的任何一个地方引用所需要的数 据结构,都需要把这个头文件包含进去。 五、NuttX PX4 所使用的操作系统,其类似 UCos,关于 OS 的基本概念以及够不部分不在详述。 六、ROMFS ROM file_system 的简写,内部的 px4fmu_common 文件夹中的 init.d 是关于 px4 系统

java中instanceof关键字简单理解

在java中 instanceof的用法为 a instanceof A 判断 对象 a 是否为 类 A 实例化的对象 我们知道由于java的多态性,我们可以用父类的引用指向子类的对象 public class instanceofTest { public static void main(String[] args) { Person p = new Man(); // System.out.println(p.isSmoking);//运行报错,因为编译器认为这是一个person对象 Man m = (Man)p; System.out.println(m.isSmoking);//运行成功,而且强转后保留子类独有的属性 //那么 p 是 person对象 还是 man对象呢? System.out.println(p instanceof Woman);//应该为false System.out.println(p instanceof Man);//应该为true System.out.println(p instanceof Person);//应该为true } } class Person { private String name; public String getName() { return name; } public void setName(String name) { this.

OpenDayLight+Mininet+Postman下发流表实验

OpenDayLight+Mininet+Postman下发流表实验 VM实验环境笔记本环境Tips1 Tips2 任务目的任务内容实验原理一、 流表结构二、 匹配域解析流程三、 OpenFlow1.3流表匹配流程 实验步骤Step1 开ODL 控制器Step2 VM ifconfig查看地址,电脑登陆页面Step3 Mininet连接ODL,查看topo结构Step4 Windows下打开Postman查看交换机信息L2层流表下发与验证Step5 下发第一条流表,选择PUT,填写URL和Headers信息Step6 填写bodyStep7 SEND 发送下发流表,在mininet下查找流表Step8 发送第二条流表Step9 SEND 发送下发流表,在mininet下查找流表STEP10 测试流表是否有效STEP11 删除下发的两条流表,mininet查看是否删除 L3层流表下发L4层流表下发 实验参考 VM实验环境 设备软件环境硬件环境ControllerUbuntu 14.04 OpenDaylight LithiumCPU:2核 内存:4G 磁盘:20GMininetUbuntu 14.04 Mininet 2.3.0CPU:2核 内存:4G 磁盘:20G 笔记本环境 设备软件环境硬件环境postmanPostman-win64-7.9.0Intel® Core™ i5-1035G1 Processor 16G DDR4Chrome89.0.4389.82(正式版本)(64 位)Intel® Core™ i5-1035G1 Processor 16G DDR4 Tips1 postman 不需要安装到 vm linux系统内,在windows系统内使用即可 Tips2 ODL 登录网页页面同样不需要再linux系统内进行,依旧在windows 系统下 chrome brower 登录 需要postman软件包的滴滴我 任务目的 1、掌握OpenFlow流表相关知识,理解SDN网络中L2,L3,L4层流表的概念。 2、学习并熟练掌握Postman工具下发L2,L3,L4层流表。 任务内容 1、学习OpenFlow流表的组成,包头域的解析流程及流表的匹配流程。 2、熟悉OpenDaylight对接Mininet的使用。

算法_二叉树笔记

请再接再厉! public class test { public static void main(String[] args) { BST<Integer,Integer> a=new BST(); a.put(10, 9); a.put(20, 19); a.put(6, 5); System.out.println(a.floor(18)); } } class BST<KEY extends Comparable<KEY>,VALUE> { private Node root; class Node { KEY key; VALUE value; Node left,right; int N;//数量 public Node(KEY key,VALUE value,int N) {this.key=key;this.value=value;this.N=N;} } public int size(){return size(root);} private int size(Node x) { if(x==null)return 0; return x.N; } public void put(KEY key,VALUE value){root=put(root,key,value);} private Node put(Node x,KEY key,VALUE value) { if(x==null) return new Node(key, value, 1);//设置root为空时 int cmp=key.

ODL(OpenDayLight)Yang UI界面下发流表(ODL+mininet)

ODL Yang UI界面下发流表 VM实验环境Tips1 Tips2 实验目的实验原理实验一步骤Step1 开ODL 控制器Step2 VM ifconfig查看地址,电脑登陆页面Step3 Mininet连接ODL(指定协议openflow1.0),查看topo结构Step4 Yang UI下找到opendaylight-inventory rev.2013-08-19模块目录Step5 从上到下依次点小**+**号,“config ——> nodes ——> node{id} ——> table{id} ——> flow{id}”Step6 补全node id、table id和flow id的值Step7 单击flow list后面的“+”,展开流表相关的参数,flow id会自动同步,然后match ——> ethernet-match ——> ethernet -type”,填写“type”为“0x0800(IPv4)Step8 在“layer-3-match”后面的下拉框中选择“ipv4-match”,使用IP匹配, 展开“layer-3-match”,填写源IP地址和目的IP地址,如下图所示。Step9 配置instructions,这里的动作时丢包dropStep10 设置“priority”为27,“idle-timeout”为0,“hard-timeout”为0,“cookie”为100000000,“table_id”为0Step11 发送流表Step12 测试流表下发效果 实验二步骤STEP 1 清除实验一的布置的topo,指定OpenFlow1.3版本连接ODLSTEP2 删除实验一ODL配置流表的信息STEP3 pingall查看下流表STEP4 下发流表查看流表,测试hi ping h3连通性利用goto命令将table0 转到table2查看流表,测试hi ping h3连通性 VM实验环境 设备软件环境硬件环境ControllerUbuntu 14.04 OpenDaylight LithiumCPU:2核 内存:4G 磁盘:20GMininetUbuntu 14.04 Mininet 2.3.0CPU:2核 内存:4G 磁盘:20G Tips1 大家首先注意本实验只开了一个VM,不需要开多个VM,然后ODL DLUX页面是在你电脑的网页页面(不是VM,不是VM,已经有人问过,这里就提一嘴) Tips2 先熟练掌握实验一,再去实验二,让如果有什么问题不清楚的,私信和留言都行。

HDFS HA高可用

1 HA 概述 1)所谓HA(High Available),即高可用(7*24小时不中断服务)。 2)实现高可用最关键的策略是消除单点故障。HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA。 3)Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)。 4)NameNode主要在以下两个方面影响HDFS集群 NameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启 NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用 HDFS HA功能通过配置Active/Standby两个NameNodes实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器。 2 HDFS-HA 工作机制 通过双NameNode消除单点故障 2.1 HDFS-HA 工作要点 2.1.1 元数据管理方式需要改变 内存中各自保存一份元数据 Edits 日志只有Active 状态的NameNode 节点可以做写操作; 两个NameNode 都可以读取Edits; 共享的Edits 放在一个共享存储中管理(qjournal 和 NFS 两个主流实现); 2.1.2 需要一个状态管理功能模块 实现了一个zkfailover,常驻在每一个namenode所在的节点,每一个zkfailover负责监控自己所在NameNode节点,利用zk进行状态标识,当需要进行状态切换时,由zkfailover来负责切换,切换时需要防止brain split现象的发生。 2.1.3 必须保证两个NameNode之间能够ssh无密码登录 2.1.4 隔离(Fence),即同一时刻仅仅有一个NameNode对外提供服务 2.2 HDFS-HA 自动故障转移工作机制 自动故障转移为HDFS部署增加了两个新组件:ZooKeeper和ZKFailoverController(ZKFC)进程,如图所示。ZooKeeper是维护少量协调数据,通知客户端这些数据的改变和监视客户端故障的高可用服务。HA的自动故障转移依赖于ZooKeeper的以下功能: 1)故障检测:集群中的每个NameNode在ZooKeeper中维护了一个持久会话,如果机器崩溃,ZooKeeper中的会话将终止,ZooKeeper通知另一个NameNode需要触发故障转移。 2)现役NameNode选择:ZooKeeper提供了一个简单的机制用于唯一的选择一个节点为active状态。如果目前现役NameNode崩溃,另一个节点可能从ZooKeeper获得特殊的排外锁以表明它应该成为现役NameNode。 ZKFC是自动故障转移中的另一个新组件,是ZooKeeper的客户端,也监视和管理NameNode的状态。每个运行NameNode的主机也运行了一个ZKFC进程,ZKFC负责: 1、健康监测:ZKFC使用一个健康检查命令定期地ping与之在相同主机的NameNode,只要该NameNode及时地回复健康状态,ZKFC认为该节点是健康的。如果该节点崩溃,冻结或进入不健康状态,健康监测器标识该节点为非健康的。 2、ZooKeeper会话管理:当本地NameNode是健康的,ZKFC保持一个在ZooKeeper中打开的会话。如果本地NameNode处于active状态,ZKFC也保持一个特殊的znode锁,该锁使用了ZooKeeper对短暂节点的支持,如果会话终止,锁节点将自动删除。 3、基于ZooKeeper的选择:如果本地NameNode是健康的,且ZKFC发现没有其它的节点当前持有znode锁,它将为自己获取该锁。如果成功,则它已经赢得了选择,并负责运行故障转移进程以使它的本地NameNode为Active。故障转移进程与手动故障转移相似,首先如果必要保护之前的现役NameNode,然后本地NameNode转换为Active状态。

爬虫项目五:最详细的京东商品、评价爬虫、词云展示

文章目录 前言一、京东商品信息爬虫1.分析URL2.实例化chrome3.加载完整数据4.实现翻页5.解析数据 二、京东商品评价爬虫1.找到接口2.分析url3.解析数据4.词云 前言 本文内容包含京东商品列表爬虫的详细教程以及商品评价数据的详细教程 提示:以下是本篇文章正文内容,下面案例可供参考 一、京东商品信息爬虫 我们要知道京东商品页的数据有一半是通过动态加载出现的,一页60条数据 一半是动态加载,也就是说我们如果单纯的用requests访问url的话只能拿到一半的数据,那另一半的数据拿到有两种方法:1.selenium 2.找到接口。这里以selenium为例。 1.分析URL 如果我们是通过selenium爬取的话,其实只需要循环点击下一页就可以了。下面我们来看一下url的构成 我们来看url,keyword就是商品关键词,我们把它换成中文也是可以的,page是页数,那剩下的一堆东西是没有用的我们可以把他们全部删除 https://search.jd.com/Search? keyword=%E7%BA%A2%E7%B1%B3K40 ==》查询的关键词 《===》红米K40 &suggest=1.his.0.0 &wq=%E7%BA%A2%E7%B1%B3K40 ==>也是关键词 &page=1 ==》页数 &s=1 &click=0 我们来看一下简化后的url https://search.jd.com/Search?keyword=红米K40&page=1 url对比,page规律:page等于当前页数×2-1 1:https://search.jd.com/Search?keyword=红米K40&page=1 2:https://search.jd.com/Search?keyword=红米K40&page=3 3:https://search.jd.com/Search?keyword=红米K40&page=5 4:https://search.jd.com/Search?keyword=红米K40&page=7 2.实例化chrome 我们明白了url的构成,首先我们用selenium实例化一个chrome,进而去获取数据了 写一下基本的配置 用input的方法交互式的输入你想采集的关键词,设置禁止图片的加载加快浏览器的速度,不想看到浏览器直接设置为无头浏览器,还有防规避检测(可能已失效) 代码如下(示例): key = input("请输入要采集商品的关键字:") # 商品的关键字 option = ChromeOptions() prefs = {'profile.managed_default_content_settings.images': 2} option.add_experimental_option('prefs', prefs) # 禁止图片加载,加快速度 option.add_argument('--headless') option.add_argument('--disable-gpu') # 设置无头浏览器 bro=webdriver.Chrome(options=option) bro.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, 'webdriver', { get: () => undefined }) "

react+ts仿antd icon库

icon库 从上古时代的雪碧图,到近代的font-icon,到现代的svg(开个玩笑),越来越多的开发人员选择了svg,因为他们即取即用,并且不会出现项font-icon很多不知名的Bug。 这个icon库是以font-awesome为基础包装成自己的icon组件库。他山之石可以攻玉嘛 先来安装三个库 cnpm i --save @fortawesome/fontawesome-svg-core cnpm i --save @fortawesome/free-solid-svg-icons(免费的库,也有要花钱的。) cnpm i --save @fortawesome/react-fontawesome 接着我们先来看他的用法 即取即用。 效果如图。 接着开始封装自己的icon库。 其实封装这些icon只是在外面给他包了一层东西,然后我们在这层东西动手脚。 比如加上我们给他加的样式。然后暴露出去,如type,还有利用赋值解构拿到我们要的值,然后其他值原封不动的如icon={}这些还给我们引入的fontAwieSomeIcon,而且,我们的接口必须继承他的接口,这样的话才能在外面传入这个组件特有的属性,如size, icon等等。 封装的思路基本就是, 继承他的接口写自己的接口,然后传入自己暴露的属性以及组件的属性,接着通过解构赋值拿到我们想要的属性,比如类,等等,要的话还可以在外面包装一层span然后添加事件等等。 接着使用 如果用下面那个每次都要引入一个,所以我们用上面这个引入,有两种方式。具体可以去看github的官网。 使用方式如图, 如图,我们可以传入icon,size也可以传入我们自定义的theme。 引入所有图标后, 接着为我们的组件添加scss样式 首先我们的使用scss的Map方法创建一个对象,再用each方法遍历创建类。 $变量名()就是一个map对象。 @each 相当于for循环,scss中占位符使用#{} 接着引入到文件中,看效果 可以看到改造已经完成了。我们就成功地将第三方库封装后适应到我们自己的项目中去。 再说下思路,就是通过外层的一层封装,做我们想做的事情,然后暴露出几个属性或者接口给外部,然后中间层我们做处理,处理完对我们引入的第三方库做操作。 结合我们之前的Menu组件,使用icon如图, 加上动画效果,利用css的transform, transition来编写 效果如图,也很容易,只要 鼠标经过给他个旋转,加个transition过度,这个transition是谁做动画加给谁。 但是我们垂直的Menu是通过点击才能触发这个条件的,所以要在我们的组件做判断 在类名处理的时候加上两个类, 垂直的时候关闭hover效果,点击就是打开,触发旋转,如图 …未完待续

AndroidStudio选中代码后,光标自动变粗,自动变成ins模式的解决方法

昨天遇到的,因为更新了as,导致选中代码后,光标自动变粗,自动变成ins模式,查了好多资料都没用。 1.问题描述: as当用鼠标选中代码后,光标会自动在代码后形成一个很粗的黑色块,按ins键无法取消,但只要不选中代码,按ins键又能够恢复,效果如图: 2.解决方法 Tools -> 取消Vim Emulator 要是还没解决,那你要加油哈,我这个就是这样解决的

html5 点一个按钮,播放一个相应的视频

<!doctype html> <html> <head> <meta charset="utf-8"> <title>HTML5视频播放器</title> </head> <body> <video id="myVideo">你的浏览器不支持video标签</video> <a href="#" onClick="playlist(this)" id="https://www.vvuxx.com/v/21/">街霸</a> <a href="#" onClick="playlist(this)" id="https://www.vvuxx.com/v/21/">铁拳</a> <script> function playlist(a){ var MV=document.getElementById("myVideo"); MV.src=a.id+'.mp4'; MV.play(); } </script> </body> </html>

Win10为什么电脑在有密码的情况下,睡眠后不用输密码打开?

#为什么电脑在有密码的情况下,睡眠后不用输密码打开? 讲真的,小小年纪的我是从来都没有想到自己会遇到这种情况,于是在第N次打开电脑后,才发现好像有哪里不对劲???我刚刚是不是没输密码?于是本人就进行了各种奇奇怪怪尝试,终于发现了问题在哪里,接下来我详细扯扯。 电脑打开不用密码,一般有三种情况: 一:设置问题。这是最简单好办的情况,就是电脑的设置有问题,可能是没有注意改设置,懒得说废话了,上图: 1、打开电脑设置: 2,看电源设置是否有误 3,再回到设置,打开账户 4,看登录设置是否有误 以上就是第一钟情况了,如果还是没有好的话,那可以接着往下看第二种情况了。 二、被软件或病毒篡改了系统的注册表。(这种情况可大可小) 1、有些软件为了防止电脑睡眠后断网,便会改掉一些控制登录的注册表,大部分情况下是安全的,不太介意的小伙伴可以直接自己吧缺失的注册表补上。操作如下: 把下列代码写入桌面新建文本,然后将文本拓展名重命名为.reg Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power] “AwayModeEnabled”=dword:00000000 如果不喜欢自己的电脑有这些奇奇怪怪的软件,那好,麻烦出门右拐,打开控制版面(在开始里随便选一个软件,单击右键卸载) 因为问题软件不同,所以笔者也不知道要卸载那个,大家就自由发挥吧。(千万不要误伤了系统配件哈) 不过这里可以说一下笔者我的经验,因为我是下载了一个录屏软件,然后这个软件偷偷给我安装了一个挖矿软件!!!了解这个的人应该都知道,挖矿软件对电脑的配置要求十分高,普通家用电脑根本配不上,所以笔者一气之下把这个BRTSvc version当场卸载了,顺便把录屏软件oCam也卸载了。补充一下VirtualDVD也有可能下载BRTSvc version。 ennnn…如果你真的懒得操作的话,那就打开离线模式,再睡眠吧。 2、第二种情况就是中了病毒,可以打开杀毒软件进行查找,至于杀毒这里就要谨慎一点了。有一些病毒杀毒软件不仅不能完全杀死,还会对电脑造成二次伤害,直接导致电脑无法正常工作。所以如果有需要的话,还是找专业人士吧。

tensorflow1.14在keras2.2.5实现LayerNormalization

简介 看这篇blog的朋友请首先检查一下tf版本和你的keras版本,还有你的keras写法,我用的是tf.keras这种写法。 不知道有没有人遇到这种问题: 我想用在keras中用layerNorm,因为我的代码实现是tf.keras的这种写法,所以导致keras_layer_normalization这个包并不能很好的使用。 然后我尝试了tf.contrib.layer.layer_norm,报错。 解决方法 这里给出一个比较方便的解决方法,当然也许比较低级,如果有大佬还请赐教。这里我的方法比较简单,对小白比较友好。 LayerNorm代码: import tensorflow.keras as keras from keras import backend as K class LayerNorm(keras.layers.Layer): def __init__(self, center=True, scale=False, epsilon=None, gamma_initializer='ones', beta_initializer='zeros', gamma_regularizer=None, beta_regularizer=None, gamma_constraint=None, beta_constraint=None, ): super(LayerNorm, self).__init__() self.supports_masking = True self.center = center self.scale = scale if epsilon is None: epsilon = K.epsilon() * K.epsilon() self.epsilon = epsilon self.gamma_initializer = keras.initializers.get(gamma_initializer) self.beta_initializer = keras.initializers.get(beta_initializer) self.gamma_regularizer = keras.regularizers.get(gamma_regularizer) self.beta_regularizer = keras.regularizers.get(beta_regularizer) self.gamma_constraint = keras.

小程序代码改编,现成模板的改编与开发 ,WXSS源代码

微信WXSS,现成代码的改编。 改编成您自个公司用的代码。 /**index.wxss**/ .swiper-item{ display: block; } .slide-image { width: 100%; display: initial; } swiper { width: 100%; } .headimg{ display:initial; } .headline{ box-sizing: border-box; width: 100%; padding: 10px; font-size: 14px; color:#333; overflow: hidden; } .headline-img{ float:left; width:25%; height:22px; box-sizing: border-box; padding-right:5px; border-right:1px solid #808080; vertical-align: middle; } .headline-text{ float: left; width:75%; box-sizing: border-box; padding-left: 15px; white-space: normal; height:16px; line-height: 16px; margin: 3px 0; overflow: hidden; text-overflow: ellipsis; } .

uniapp 账号登陆,账号绑定/解绑流程,躺坑

第一次开发uniapp微信小程序,记录一下开发中遇到的流程以及坑 账号登陆 1、uni.login 获取code,在调用接口传入code获取uKey 绑定账号/解绑 1、uni.login获取code,这个code不能拿登陆时获取的code,每次请求都应该是不同的code,此坑之一 2、获取到code之后uni.getUserInfo获取个人信息中的encryptedData,iv 3、拿code,encryptedData,iv去调用绑定/解绑接口实现绑定/解绑账号功能 4、坑之二,流程应该是先uni.login,后uni.getUserInfo,顺序不能错 5、坑之三,不能直接调用uni.getUserInfo api,会一直显示授权问题,只能通过button来实现getUserInfo获取 <button @getuserinfo="getUserInfo" open-type="getUserInfo" type="primary"> {{isCheckBind ? '解除绑定' : '立即绑定'}}</button>

FreeSWITCH 对接IMS平台相关材料汇编

freeswitch与各种设备对接的成功配置,需要的请参考,有错误的地方请指导。 1、对接华为softco 中继配置 \sip_profiles\external\ 拨号规则 出局 \conf\dialplan\default\ --加拨9至softco softco侧配置对端SIP端口为5080 2、对接网络电话提供商 中继配置 \sip_profiles\external\ <include> <gateway name="sip_isp"> <param name="username" value="username"/> <param name="password" value="password"/> <param name="realm" value="$${local_ip_v4}"/> <param name="from-domain" value="sip.isp.com"/> </gateway> </include> 拨号规则 \conf\dialplan\default\ <include> <extension name="sip_isp_outbound"> <condition field="destination_number" expression="^(1\d{10})$"> <action application="bridge" data="sofia/gateway/sip_isp/$1"/> </condition> </extension> </include> 3、电信IMS对接 中继配置 \sip_profiles\external\ <include> <gateway name="gd_ims"> <param name="username" value="+8675512345678"/> <param name="from-user" value="+8675512345678"/> <param name="realm" value="$${local_ip_v4}"/> <param name="auth-username" value="+8675512345678@gd.ctcims.cn"/> <param name="proxy" value="gd.ctcims.cn"/> <param name="from-domain" value="gd.ctcims.cn"/> <param name="register-proxy" value="

es Root mapping definition has unsupported parameters解决方法

ElasticSearch 7.x 默认不在支持指定索引类型 在elasticsearch7.x上执行: put es_test { "settings":{ "number_of_shards" : 3, "number_of_replicas" : 0 }, "mappings":{ "books":{ "properties":{ "title":{"type":"text"}, "name":{"type":"text","index":false}, "publish_date":{"type":"date","index":false}, "price":{"type":"double"}, "number":{ "type":"object", "dynamic":true } } } } } 执行结果则会出错:Root mapping definition has unsupported parameters { "error": { "root_cause": [ { "type": "mapper_parsing_exception", "reason": "Root mapping definition has unsupported parameters: [books : {properties={number={dynamic=true, type=object}, price={type=double}, name={index=false, type=text}, title={type=text}, publish_date={index=false, type=date}}}]" } ], "type": "mapper_parsing_exception", "reason": "Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters: [books : {properties={number={dynamic=true, type=object}, price={type=double}, name={index=false, type=text}, title={type=text}, publish_date={index=false, type=date}}}]"

阿里P9大牛匠心打造21版Java架构面试大全,跳槽涨薪稳了

3月已经过半,可能有很多小伙伴已经拿到了心仪的offer,也有很多面试碰壁了。 不过不用灰心,小编这次就给大家分享一份由阿里大牛打造的Java架构面试大全,这份面试大全甚至已经帮助很多人拿到了大厂offer,非常香。 面试大全总览: 篇幅限制,在此就不全部展示了。想获取这份Java架构面试大全的朋友:一键三连(点赞+收藏+关注) 后,添加微信:mxm9843 即可免费获取到 详细内容展示 Java基础 相关面试题 JVM 相关面试题 多线程&并发 相关面试题 网络 相关面试题 Spring 相关面试题 SpringBoot 相关面试题 SpringCloud 相关面试题 MySQL 相关面试题 分布式 相关面试题 Redis 相关面试题 设计模式 相关面试题 tomcat 相关面试题 还有很多内容,在此就不一一展示出来了。想获取这份Java架构面试大全的朋友:一键三连(点赞+收藏+关注) 后,添加微信:mxm9843 即可免费获取到

2021-03-19

一、 创建test分支提交步骤 1.列出所有分支 git branch -a 2.创建test分支 git branch test 3.切换到test分支: git checkout test 4.添加add修改: git add . 5.添加commit注释 git commit -m “第一次提交代码” 6.提交到服务器 git push origin test 二、将test分支合并到master本地分支 1.创建test分支 git branch test 2.切换到test分支 git checkout test 3.在test分支添加一个readme.txt文件 touch readme.txt git add readme.txt 4.提交commit本地文件 git commit -m “增加readme.txt” 5.切换到master分支 git checkout master 6.把test分支合并到master分支 git merge test 7.提交master分支到服务器 git push origin master 8.删除test分支 git branch -d test

net::ERR_FILE_NOT_FOUND 报错

在引入文件时浏览器出现 net::ERR_FILE_NOT_FOUND 报错 问题:HTML文件与其他文件不在同一个文件夹内 解决 方法一:将绝对路径改成相对路径 方法二:采用 …/ 的形式表示上一级文件夹。 例如: 我的文件在不同包内 在HelloWorld.html中引入js文件夹里面的文件 <script src="../js/jquery-3.6.0.js"></script>

虚拟主机服务器php安装教程,虚拟主机服务器安装教程修改 ASPMaxRequestEntityAllowed...

虚拟主机服务器安装教程 系统安装 Windows 2003 server 及补丁。 分区: 系统C盘(20G)、应用程序T盘(20G)、数据Q盘(50G)、备份B盘(50G) 2、IIS安装 打开添加或删除程序,单击添加/删除Windows组件;在应用程序服务器前打勾,单击详细信息;选择Internet信息服务(IIS),单击详细信息;在Frontpage 2002 Server Extensions前打勾,单击确定;单击确定;单击下一步;最后单击完成。依次打开开始——所有程序——管理工具——Internet信息服务(IIS)管理器,依次展开Internet信息服务——(本地计算机),右键选择本地计算机的属性;在允许直接编辑配置数据库前打勾,单击确定。打开C:\WINDOWS\system32\inetsrv目录,找到MetaBase.xml文件,用记事本编辑,找到AspMaxRequestEntityAllowed="204800" 更改为AspMaxRequestEntityAllowed="20480000"。 3、安装ASP.NET2.0 4、安装PHP 下载PHP,把它复制到T:\php5目录下。用记事本编辑php.ini-dist, 找到 extension_dir = "./" 并更改为extension_dir = "T:\php5\ext/"; 找到 ;extension=php_mbstring.dll 更改为 extension=php_mbstring.dll; 找到 ;extension=php_gd2.dll 更改为 extension=php_gd2.dll; 找到;extension=php_mysql.dll 更改为 extension=php_mysql.dll; 然后保存。把php.ini-dist改名为php.ini,并复制到C:\WINDOWS\目录下。在"T:\php5\目录下找到libmysql.dll、php5isapi.dll、php5ts.dll并复制到C:\WINDOWS\system32\目录下; 在T:\php5\ext/目录下找到php_gd2.dll、php_mbstring.dll、php_mysql.dll、php_mysqli.dll并复制到C:\WINDOWS\system32\目录下。 依次打开开始——所有程序——管理工具——Internet信息服务(IIS)管理器;依次展开Internet信息服务——(本地计算机)——Web服务扩展;右键Web服务扩展选择添加一个新的Web服务扩展;扩展名为PHP,要求的文件为T:\php5\ php5isapi.dll,设置扩展状态为允许前打勾,单击确定。 右键选择网站的属性;选择ISAPI筛选器选项,单击添加;筛选器名称为PHP,可执行文件为T:\php5\ php5isapi.dll,单击确定;选择主目录选项,单击配置;单击添加,可执行文件为T:\php5\ php5isapi.dll,扩展名为php,单击确定;单击确定知道完成。重启IIS。 最后安装ZendOptimizer。 5、安装Serv-U 按提示安装好后(安装目录选择T:\ RhinoSoft),打开Serv-U,依次展开Serv-U服务器——<>,在右边的本地FTP服务器单击设置/更改密码修改登录本地FTP服务器的密码。 依次打开开始——所有程序——管理工具——计算机管理,依次展开计算机管理(本地)——系统工具——本地用户和组——用户,右键选择新用户。户名为#fdserv-u;描述为FTP服务器启动帐户;密码输入一个比较复杂的密码;在用户不能更改密码和密码永不过期前打勾,其他把勾去掉;单击创建,单击关闭。在右边的用户列表里选择#fdserv-u用户,右键选择属性,单击隶属于,选择USER然后单击删除,单击确定。 找到Serv-U的安装目录,选择右键属性,选择安全选项,依次单击添加——高级——立即查找,选择#fdserv-u用户,单击确定,单击确定 ;在组或用户名称下的列表里选择#fdserv-u用户,在#fdserv-u的权限里修改、读取和运行、列出文件夹目录、读取、写入的允许项打 勾,单击确定。 依次打开开始——所有程序——管理工具——服务,在服务列表里找到Serv-U FTP Server服务,右键选择属性,选择登录选项,登录身份选择此帐户,依次单击浏览——高级——立即查找,选择#fdserv-u用户,单击确定,输入第2步为#fdserv-u用户设置的密码,单击确定,单击确定。 打开Serv-U,依次展开Serv-U服务器——<>——域,右键域选择新建域;域IP地址选择任何可用的IP地址,单击下一步;域名与计算机名相同,单击下一步;域端口填21,单击下一步;域类型选择存储与计算机注册表,单击完成。依次展开Serv-U服务器——<>——设置;选择高级选项,PASV端口范围填写2015-2016。 依次打开开始——运行,输入regedit,单击确定。找到 HKEY_LOCAL_MACHINE\SOFTWARE\Cat Soft,右键Cat Soft选择权限;单击高级;允许父项的继承权限传播到该对象和所有子对象。包括那些在此明确定义的项目。前把勾去掉,单击确定(单击确定)。依次单击添加——高级——立即查找,选择#fdserv-u用户,单击确定,单击确定 ;在组或用户名称下的列表里选择#fdserv-u用户,在#fdserv-u的权限里完全控制的允许项打勾,Adinistrators组也一样,单击确定。 重启Serv-U FTP Server服务。 6、安装MYSQL 安装路径选择T:\php5\php5isapi.dll 停止MYSQL服务 打开T:\MySQL\MySQL Server 5.0\my.ini文件 找到datadir="T:/MySQL/MySQL Server 5.

js php 时间格式化字符串,JS怎么实现字符串与日期的互相转换及日期的格式化

这篇文章主要介绍了JavaScript实现字符串与日期的互相转换及日期的格式化的方法,这里格式化使用的是正则表达式来替换日期后进行格式化,需要的朋友可以参考下 字符串转日期、日期转字符串// 2014-02-25 /** * 字符串转时间(yyyy-MM-dd HH:mm:ss) * result (分钟) */ stringToDate : function(fDate){ var fullDate = fDate.split("-"); return new Date(fullDate[0], fullDate[1]-1, fullDate[2], 0, 0, 0); } /** * 格式化日期 * @param date 日期 * @param format 格式化样式,例如yyyy-MM-dd HH:mm:ss E * @return 格式化后的金额 */ formatDate : function (date, format) { var v = ""; if (typeof date == "string" || typeof date != "object") { return; } var year = date.

IDEA项目中有多个配置文件时,指定使用某个配置文件方法

我们项目中针对不同的环境有不同的配置文件,比如我的application-local.properties就是当地开发的配置文件、application-test.properties是测试环境的配置文件等。 有时候我们需要对其配置环境进行切换,我们需要怎么做呢?其实很简单,我们点击Edit Configurations。 然后找到自己对应的Spring项目 最后在Spring项目中的Active profiles输入框中输入你想要配置的文件,比如我想用application-local.properties配置文件,只需要输入local。我想用application-test.properties配置文件,输入test。最后点击ok按键即可

appium-滑动、拖动操作

appium滑动、拖动操作 要实现在手机中滑动、拖动操作,首先需要定位到点的坐标,或者使用元素实现滑动、拖动 可以使用绝对坐标和相对坐标 由于绝对坐标在更换手机或改变分辨率大小后不能重复利用,推荐使用相对坐标 首先获得屏幕width、height screen_size = driver.get_window_size()#返回一个当前屏幕宽高的字典 width = screen_size['width'] height = screeen_size['height'] 1.使用点的坐标实现滑动、拖动 使用绝对坐标(可以使用appium也可以使用模拟器获得坐标) 起点:x1=123,y1=222 终点:x2=345,y2=555 #使用绝对坐标 driver.swipe(x1,y1,x2,y2,1000) #单手指从起点直线滑动到终点,时间为1000ms #使用相对坐标(推荐) x1=width*0.8 y1=height*0.2 x2=width*0.5 y2=height*0.7 driver.swipe(x1,y1,x2,y2,800) 2.使用元素定位实现滑动、拖动 e1 = driver.find_element_by_id('xxx') e2 = driver.find_element_by_id('xxx') driver.scroll(e1,e2,600) #从e1元素位置移动到e2元素 3.使用TouchAction类实现鼠标点击、拖动等操作 from appium.webdriver.common.multi_action import MultiAction from appium.webdriver.common.touch_action import TouchAction screen_size = driver.get_window_size() width = screen_size['width'] height = screen_size['height'] x1 = width*0.7 y1 = height*0.6 # 单一动作执行 action1 = TouchAction(driver) action1.press(x=x1, y=y1).wait(400).release().perform()#点击(x1,y1)并抬起#perform()表示执行动作,没有加perform()动作不会被执行 #多个动作一起执行 action2 = TouchAction(driver) mul_ac = MultiAction(driver) mul_ac.

task02 datawhale第二十三期集成学习基本回归模型原理

1.导论 线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表 达形式为y =w’x+e,e为误差服从均值为0的正态分布。回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。首先我们先从最基础的简单线性回归了解开始。 2.一元线性回归 最⼴为⼈知的线性回归模型——将数据拟合成⼀条直线。 直线拟合的模型⽅程为y = ax + b, 其中 a 是直线的斜率, b是直接的截距。 假设我们有一组数据 我们现在有这样一个任务:构造一个线性函数,对这个数据进行拟合。 什么叫拟合呢? 就是当我们像函数中输⼊⼀个x,就可以对应计算出⼀个 函数的输出值y ,然后⽤这个 y 去预测对应的真实值y。 预测的越准确,就认为拟合的效果越好。 2.1找到最好的拟合函数 这样的函数我们能够构造出⽆数个,有的预测值⽐较接近真实值,有的 值和真实值相差较多。现在我们的⽬标是: 找到这个对y值预测效果最好的函数。要找到最好的函数,我们第⼀步需要做的是什么呢?先要对所谓的最好有⼀个定义,什么才叫做最好呢? 定义:预测函数的预测值 y 与真实值y的整体误差最⼩ 现在我们的⽬标是: 找到这个对y值预测效果最好的函数。 那么如何找到这个最好的函数呢? 对于这个函数来讲,就是找到合 适的 w0 , w1 的值 , w0 , w1 称为模型参数。单纯说整体误差最⼩还是没有办法进⾏精确的度量,因此我们需要有 ⼀个公式,⽤来度量预测值和真实值之间的整体误差到底是多少。我们⽤来度量预测值和真实值之间的整体误差的函数, 就叫做损失函数。单变量线性回归算法的损失函数是: 即求J(w)的最小值。 2.2求解损失函数 在机器学习中,常看到线性回归求解损失函数的方法有最⼩⼆乘法和梯度下降法。在这章我们只的介绍最小二乘法求解线性回归损失函数。 最小二乘法原理推导过程: 注意点: 因为在公示的计算过程中,需要计算XTX的逆矩阵 ⽽逆矩阵存在的充分必要条件是特征矩阵不存在多重共线性。 所以最⼩⼆乘法应⽤的前提是特征之间不能存在多重共线性。假设矩阵的逆是存在的,此时我们的w就是我们参数的最优解。 求解出这个参数向量,我们就解出了我们的Xw,也就能够计算出我们的预测值 y 了。 3.回归模型的评估方法 回归类与分类型算法的模型评估其实是相似的法则——找真实标签和预测值的差异。只不过在分类型算法中,这个差异只有⼀种⻆度来评判,那就是是否预测到了正确的分类⽽在我们的回归类算法中,我们有两种不同的⻆度来看待回归的效果:第⼀,我们是否预测到了正确的数值。第⼆,我们是否拟合到了⾜够的信息。 这两种⻆度,分别对应着不同的模型评估指标。 我们经常使用方差来很亮数据集上的信息量。如果方差越大,代表数据上的信息量越多,而这个信息量不仅包括了数值的大小,还包括了我们希望模型捕捉的那些规律。为了衡量模型对数据上的信息量的捕捉,我们来定义了R^2来帮助我们: 其中y是真实标签,y^是我们预测的结果,y ~是我们的均值,y-y-除以样本量m就是我们的方差。方差的本质是任意一个y值与均值的差异,差异越大,这些值所带来的信息越多,在R2中,分钟是真实和预测值只差的差值,也就是我们的模型没有捕获到的信息总量,分母是真实标签所带的信息量,所以其衡量的是1.我们的模型没有捕获到的信息量占真实标签所带的信息量的比例,所以R2越接近1越好。 多项式线性回归 我们最常使⽤的线性是指“变量之间的线性关系(linear relationship)”,它表示两个变量之间的关系可以展示为⼀条直线。 即可以使⽤⽅程 y = ax + b 来进⾏拟合。

使用kaggle notebook 加速下载github代码

我们平常学习工作,常常需要下载github代母,编译opencv源码时,也需要下载依赖包,国内网络在此过程中查查中断导致下载失败。本人经过尝试,通过kaggle做中转下载代码是一个好办法。方法如下: 在kaggle中建立一个 notebook : !wget https://codeload.github.com/dreamnotover/StudyBook.zip !wget https://codeload.github.com/opencv/opencv/zip/4.5.0 -O opencv-4.5.0.zip !wget https://codeload.github.com/opencv/opencv_contrib/zip/4.5.0 -O opencvv_contrib-4.5.0.zip !wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/a56b6ac6f030c312b2dce17430eef13aed9af274/ippicv/ippicv_2020_win_ia32_20191018_general.zip !wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.0.zip !wget https://codeload.github.com/taozhaoping/ERP/zip/master -O ERP2.zip !wget -O 879741a7946b814455eee6c6ffde2984-ippicv_2020_win_intel64_20191018_general.zip https://raw.githubusercontent.com/opencv/opencv_3rdparty/a56b6ac6f030c312b2dce17430eef13aed9af274/ippicv/ippicv_2020_win_intel64_20191018_general.zip !wget -O 37e2dadf776631acc8856e281f29cf42-opencv_videoio_ffmpeg.dll https://raw.githubusercontent.com/opencv/opencv_3rdparty/6152e132572dfdaa32887eabeb7199bef49b14dc/ffmpeg/opencv_videoio_ffmpeg.dll !wget -O cf5dba83edf8619f57ccff4edb989c62-opencv_videoio_ffmpeg_64.dll https://raw.githubusercontent.com/opencv/opencv_3rdparty/6152e132572dfdaa32887eabeb7199bef49b14dc/ffmpeg/opencv_videoio_ffmpeg_64.dll !wget -O 7505c44ca4eb54b4ab1e4777cb96ac05-face_landmark_model.dat https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat !wget https://github.com/Kitware/CMake/releases/download/v3.19.2/cmake-3.19.2-win64-x64.zip 执行notebook,将output的结果下载下来,速度比github快多了。

migrations文件转sql语句

migrations文件转sql语句 python manage.py sqlmigrate app名 文件编号 # 例 python manage.py sqlmigrate card 0009 --settings=xxx.settings.dev

NVIDIA DeepStream概述

NVIDIA DeepStream概述 DeepStream是用于构建AI驱动的应用程序的流分析工具包。它以流数据作为输入-来自USB / CSI摄像机,来自文件的视频或基于RTSP的流,并使用AI和计算机视觉从像素中生成洞察力,以更好地了解环境。DeepStream SDK可以用作许多视频分析解决方案的基础层,例如了解智能城市中的交通和行人,医院中的健康和安全监控,零售中的自检和分析,检测制造工厂中的组件缺陷等。在此处https://ngc.nvidia.com/catalog/collections/nvidia:deepstreamcomputervision`_了解更多有关DeepStream的信息。 DeepStream通过Python绑定支持C / C ++和Python中的应用程序开发。为了使入门变得更容易,DeepStream附带了C / C ++和Python中的多个参考应用程序。请参阅\ DS_C_Sample_Apps和\ DS_Python_Sample_Apps部分,以了解有关可用应用程序的更多信息。有关某些示例DeepStream参考应用程序,请参见NVIDIA-AI-IOT https://github.com/NVIDIA-AI-IOT/deepstream_reference_apps __ Github页面。 核心SDK由几个硬件加速器插件组成,这些插件使用各种加速器,例如VIC,GPU,DLA,NVDEC和NVENC。通过在专用加速器中执行所有计算繁重的操作,DeepStream可以为视频分析应用程序实现最高性能。DeepStream的关键功能之一是边缘和云之间的安全双向通信。DeepStream随附了几种现成的安全协议,例如使用用户名/密码的SASL /普通身份验证和2路TLS身份验证。要了解有关这些安全功能的更多信息,请阅读:doc:\ DS_IoT一章。要了解有关双向功能的更多信息,请参阅本指南中的“双向标签”部分。 DeepStream建立在CUDA-X堆栈的多个NVIDIA库的基础上,例如CUDA,TensorRT,Triton Inference服务器和多媒体库。TensorRT加快了NVIDIA GPU上的AI推理速度。DeepStream在DeepStream插件中抽象了这些库,使开发人员可以轻松地构建视频分析管道,而不必学习所有单独的库。 DeepStream针对NVIDIA GPU进行了优化;该应用程序可以部署在运行Jetson平台的嵌入式边缘设备上,也可以部署在较大的边缘或数据中心GPU(例如T4)上。可以使用NVIDIA容器运行时将DeepStream应用程序部署在容器中。这些容器可在NGC,NVIDIA GPU云注册表中找到。要了解有关使用docker进行部署的更多信息,请参阅Docker容器一章。可以使用GPU上的Kubernetes在边缘上编排DeepStream应用程序。NGC上提供了用于部署DeepStream应用程序的“示例Helm图表https://ngc.nvidia.com/catalog/helm-charts/nvidia:video-analytics-demo _”。 DeepStream图架构 ######################################### DeepStream是使用开源GStreamer框架构建的优化图形架构。。下图显示了一个典型的视频分析应用程序,从输入视频到输出见解。所有单独的块都是使用的各种插件。底部是在整个应用程序中使用的不同硬件引擎。最佳的内存管理以及插件之间的零内存复制以及各种加速器的使用确保了最高的性能。 DeepStream以GStreamer插件的形式提供了构建基块,可用于构建有效的视频分析管道。有15个以上的插件可以通过硬件加速完成各种任务。 *流数据可以通过RTSP或来自本地文件系统或直接来自摄像机的网络来传输。流是使用CPU捕获的。一旦帧进入存储器,就使用NVDEC加速器发送它们以进行解码。用于解码的插件称为:doc:\ DS_plugin_gst-nvvideo4linux2。 *解码后,有一个可选的图像预处理步骤,其中输入图像可以在推理之前进行预处理。预处理可以是图像变形或色彩空间转换。\ doc_\ DS_plugin_gst-nvdewarper插件可以使鱼眼镜头或360度摄像机的图像变形。\ doc:\ DS_plugin_gst-nvvideoconvert插件可以在框架上执行颜色格式转换。这些插件使用GPU或VIC(视觉图像合成器)。 *下一步是批处理帧以获得最佳推理性能。使用:doc:\ DS_plugin_gst-nvstreammux插件可以完成批处理。 *批处理帧后,将其发送以进行推断。可以使用TensorRT,NVIDIA的推理加速器运行时进行推理,也可以使用Triton推理服务器在诸如TensorFlow或“ PyTorch”之类的本机框架中进行推理。使用\ DS_plugin_gst-nvinfer插件执行本机TensorRT推理,使用\\ DS_plugin_gst-nvinferserver插件完成使用Triton的推理。推论可以使用Jetson AGX Xavier和Xavier NX的GPU或DLA(深度学习加速器)。 *推断后,下一步可能涉及跟踪对象。SDK中有多个内置参考跟踪器,范围从高性能到高精度。使用\ DS_plugin_gst-nvtracker插件执行对象跟踪。 *为了创建可视化工件,例如边界框,分割蒙版,标签,有一个名为:doc:\ DS_plugin_gst-nvdsosd的可视化插件。 *最后,要输出结果,DeepStream提供了各种选项:在屏幕上用边框显示输出,将输出保存到本地磁盘,通过RTSP进行流传输或仅将元数据发送到云。为了将元数据发送到云,DeepStream使用\ DS_plugin_gst-nvmsgconv和\\ DS_plugin_gst-nvmsgbroker插件。\ doc:\ DS_plugin_gst-nvmsgconv将元数据转换为架构有效负载,而\ doc:\ DS_plugin_gst-nvmsgbroker建立与云的连接并发送遥测数据。有几种内置的代理协议,例如Kafka,MQTT,AMQP和Azure IoT。可以创建自定义代理适配器。 DeepStream参考应用 ######################### 首先,开发人员可以使用提供的参考应用程序。还包括这些应用程序的源代码。端到端应用程序称为“ deepstream-app”。该应用程序是完全可配置的-它允许用户配置任何类型和数量的源。用户还可以选择运行推理的网络类型。它预先内置了一个推理插件来进行对象检测,并由推理插件进行级联以进行图像分类。有一个配置跟踪器的选项。对于输出,用户可以选择在屏幕上渲染,保存输出文件或通过RTSP传输视频。 这是开始学习DeepStream功能的一个很好的参考应用程序。DS_ref_app_deepstream一章将更详细地介绍此应用程序。此应用程序的源代码位于/ opt / nvidia / deepstream / deepstream-5.

matlab查找最小值函数

一、查找最小值 function y=find_min(A) a=min(A); y=a; end 或者自己写循环函数 function f=find_min2(A); Len=length(A); min=A(1); index=1; for i=1:Len if min>A(i) min=A(i); index=i; end end f=[min,index]; end

Spring、SpringMVC、SpringBoot区别、Maven的构建生命周期

spring、SpringMVC与SpringBoot的区别: Spring是这些框架的应用的基础,提供了IOC控制反转和AOP控制切面编程,让我们更好的管理对象的操作 SpringMvc是Spring子项目用于提供Web支持,替代来传统的Servlet通过SpringMVC提高web应用的兼容性和可维护性,同时SpringMVC中的Controller也要被Spring中的IOC管理,拦截器也用到了AOP切面编程的知识,来对Controller进行扩展与控制 SpringBoot是Spring整个体系的敏捷开发,提高开发效率 SpringBoot常用的配置项: server.port端口号 8080 server.servlet.context-path设置应用上下文 / logging.file 日志文件输出路径 无 logging.level 最低日志输出级别 info debug开启关闭调试模式 false spring.datasource.*与数据库相关设置 Maven的构建声明周期

Mybatis以及俩个缓存机制

Mybatis开发流程 1.导入依赖 2.配置数据库信息: 添加一个mapper.xml, sql语句 #{参数} namespace:命名空间,引出虚拟的类位置; id:sql语句的别称; parameterType:参数类型; resultType:返回对应的实体类位置; 然后在mybatis配置文件 注册mapper.xml 构建sqlsessionfactory工厂 SqlSeesionFactory sessionFactory=new SqlSessionFactoryBuilder().builder(文件的输入流); sqlsessionfactory会话工厂就是对mybatis.xml进行解析 String statement=“命名空间+sql_id”; //知道执行那个sql SqlSession session=sessionFactory.openSession();数据库会话对象 Mybatis的缓存机制: Mybatis存在两级缓存 一级缓存与SqlSession会话绑定,默认开启: 将数据保存在内存中,巨大的HashMap,一个SqlSession对应一个HashMap对于一级缓存在sqlsession创建时创建,在sqlsession close的时候关闭,一级缓存存活时间较短。 二级缓存是应用全局缓存,所有SqlSession共享: 只要mybatis启动过程中,缓存就一直存在对于二级缓存的载体可以是内存HashMap、ehcach、redis,所有sqlsession都可以访问数据。随着Mybatis的sessionfactory的创建而创建,在sessionfactory销毁的时候会消失。缓存命中率更高。 缓存:就是将不常变更的数据保存内存或高速存储器,从而降低查询时间增快数据查询速度。 二级缓存需要手动来添加: 在mapper.xml中在mapper标签里面,添加 <cache size="" eviction=“FIFO 、LRU”, flushInterval="" readOnly=“true”/> 二级缓存需要对存储的对象实现Serializable接口 useCach是否使用缓存 在select等标签使用 size:缓存容量多少对象 eviction:用那些清除缓存算法 FIFO先进先出、LRU指定时间内使用最少先清除 flushInterval:定时清理缓存 readOnly="true"设置保存缓存设置只读,保证一致。

JAVA开发遇到的异常-java.lang.SecurityException: JCE cannot authenticate the provider SunJCE

问题背景:为了获取小程序全局唯一后台接口调用凭据(access_token)需要通过后台发送GET请求 GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET public static String sendGet(String url) { String result = ""; BufferedReader in = null; try { //String urlNameString = url + "?" + param; System.out.println("发送的链接请求:" + url); URL reaurl = new URL(url); URLConnection connection = reaurl.openConnection(); // 设置通用 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 建立实际的连接 connection.connect(); Map<String, List<String>> map = connection.getHeaderFields(); // 定义 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line; while ((line = in.

matlab冲激激励,实验一 阶跃响应与冲激响应.doc

您所在位置:网站首页 > 海量文档 &nbsp>&nbsp中学教育&nbsp>&nbsp中学实验 实验一 阶跃响应与冲激响应.doc12页 本文档一共被下载:次,您可全文免费在线阅读后下载本文档。 下载提示 1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。 2.该文档所得收入(下载+内容+预览三)归上传者、原创者。 3.登录后可充值,立即自动返金币,充值渠道很便利 实验一 阶跃响应与冲激响应 内容提要 学习建立RLC串联电路系统的时域模型; 采用MATLAB进行编程、系统仿真以及建立GUI来观察和测量RLC串联电路的阶跃响应与冲激响应的波形和有关参数,并研究其电路元件参数变化对响应状态的影响; 掌握有关信号时域的测量方法。 目录 一、实验目的1 二、实验原理说明1 三、实验内容与步骤5 四、实验报告要求6 五、实验设备6 附录1:8 附录2:9 一、实验目的 学习建立RLC串联电路系统的时域模型; 采用MATLAB进行编程、系统仿真以及建立GUI来观察和测量RLC串联电路的阶跃响应与冲激响应的波形和有关参数,并研究其电路元件参数变化对响应状态的影响; 掌握有关信号时域的测量方法。 二、实验原理说明 实验硬件布局图如图1-1所示,可以看到中间的虚线将电路分成两部分,左侧为一微分电路,右侧为一二阶RLC电路。 图1-1 实验布局图 1. 左侧微分电路分析 该电路在SB101端加入激励,在SB102端得到输出,电路模型如图1-2所示。 图1-2 图1-1左侧微分电路模型 这样我们可以建立它的数学模型 (1) 其中,。 若系统为零状态,当输入为单位阶跃信号时 ,则。从响应的表达式可以看出一般RC的乘积取得比较小,以达到近似的微分效果。所以此电路在这里的功能主要是因为在实际物理系统中不能产生理想的单位冲激信号,因此利用此微分电路由单位阶跃信号近似获得尖顶脉冲信号来近似单位冲激信号。 经过计算可得,这样我们可以通过MATLAB程序(附注2.1)来观察一下当输入为阶跃信号时系统的输出。运行结果如下图1-3,其中带星号的线为输入信号,实线为响应信号,可见是由1迅速衰减为零的尖顶脉冲信号,且两种方法求得方法一致。尖顶脉冲信号可近似看作为单位冲激信号,这与在实际电路中观测的情况是相同的。 图1-3 微分电路输出情况 2. 右侧二阶电路分析 该电路在SG103端加入激励,在TP104端得到输出。建立其电路模型如图1-4所示。 图1-4 二阶电路模型 这样我们可以建立它的数学模型 (2) (3) 其中 , ,。 此微分的两个特征根为: 。 当,取得系统取得两个单实根,系统的响应为两个指数衰减信号的叠加,电阻消耗较大,这种情况称为过阻尼状态。 当,取得系统取得两个共轭复根,系统的响应为包络为指数衰减的振荡信号,电阻消耗较小,这种情况称为欠阻尼状态。 当,取得系统取得二重实根,系统的响应为指数衰减信号,在上面两种情况之间,这种情况称为临界阻尼状态。具体分析见注1。 对于该系统借助MATLAB我们可通过三种方式来观察系统的输出情况。 (1)通过MATLAB程序(附注2.2)来观察系统在不同情况下的输出情况。 输出结果如图1-5所示,从图中可以看出三种不同情况对应的输出情况。 图1-5 二阶电路阶跃响应 若将附注2.2程序中求阶跃响应的step命令改为求冲激响应的命令impulse就 可得到相应的冲激响应信号如图1-6所示。

联想笔记本小新V2000怎么进BIOS设置

进入主板BIOS一般是启动时按Del、ESC、F2等按键,一些新型的笔记本则采用专用的高级启动按键,比如联想小新v2000笔记本就有一键恢复高级按钮,接下来系统城小编就跟大家分享联想v2000怎么进入BIOS界面以及BIOS各项设置菜单的介绍。 操作步骤如下: 1、在关机状态下,按下笔记本左侧的“一键恢复”按钮;2、在出现选择菜单中,选择Boot Menu,按回车键;3、进入BIOS主界面,以下为笔记本的基本信息介绍,按←→方向键来切换;4、Configuration界面为无线网络、硬盘模式和显卡模式的设置选项;5、Security界面为密码和安全启动的设置选项;6、Boot界面为启动项设置,包括启动模式和USB快速启动;7、Exit界面为保存设置、恢复出厂设置、默认系统的设置选项。 1、在关机状态下,按下笔记本左侧的“一键恢复”按钮; 2、在出现选择菜单中,选择Boot Menu,按回车键; 3、进入BIOS主界面,以下为笔记本的基本信息介绍,按←→方向键来切换; 4、Configuration界面为无线网络、硬盘模式和显卡模式的设置选项; 5、Security界面为密码和安全启动的设置选项; 6、Boot界面为启动项设置,包括启动模式和USB快速启动; 7、Exit界面为保存设置、恢复出厂设置、默认系统的设置选项。 联想小新v2000进入BIOS设置界面的方法就分享到这边,有需要的用户可以参照上述的BIOS介绍来设置。 文章来自系统城:http://www.xitongcheng.com/jiaocheng/xtazjc_article_17096.html

蚂蚁课堂视频笔记+笔记对应源码+思维导图下载地址

一、小猴子java学习视频教程笔记 很久之前入门java时淘宝买的一套视频教程,感觉还可以,适合新手入门,这里仅提供总结笔记。 链接:https://pan.baidu.com/s/1AQOS4FWxPzNQ2hz9SBZYyw 提取码:6ngi 二、蚂蚁课堂3期/4期/4期项目笔记 部分内容过时,适合新手了解微服务基础 笔记下载地址:https://pan.baidu.com/s/1-5wygQ_JO_SnG9Ig4drajA 提取码:ki3p 三、蚂蚁课堂5期/6期/6期项目视频笔记与对应源码 笔记与博客栏目《蚂蚁课堂第5/6期视频笔记》内容源码完全对应 博客链接:https://blog.csdn.net/u012425860/category_10583394.html 博客链接:https://blog.csdn.net/u012425860/category_10787105.html 5期6期6期项目笔记 链接:https://pan.baidu.com/s/1EETVKE5Jwn74ckJNByxi8g 提取码:zpct 5期6期6期项目源码 链接:https://pan.baidu.com/s/1aJ-kivnCfxoGX7NMAFqeBw 提取码:cpq1 6期项目:https://gitee.com/maplefire/mt-shop-parent 四、蚂蚁课堂3期/4期笔记思维导图 3期笔记思维导图 3期在线地址:https://www.edrawsoft.cn/viewer/public/s/a09c4252911909 4期笔记思维导图 4期在线地址:https://www.edrawsoft.cn/viewer/public/s/6e230007288462 后续计划: 7期8期8期项目尽量每天一更 空闲时间优化一遍3期4期思维导图,5期6期6期项目跟着源码再走一遍,复习巩固顺便再整理一下文档,简化出思维导图 计划在今年之内完成 PS:有很多小伙伴私聊我有没有视频,视频是加密的问我也没用啊,想学习的话可以去报班~ ~

关于ODL Web页面unable to login解决办法?

Q:关于ODL Web页面unable to login解决办法? 解决一:内存可能不足,需要你升级下VM的内存 解决二:删除ODL目录下data文件,再进入ODL 操作台 ./bin/karaf clean rm -rf data ./bin/karaf clean 解决三:你太着急了,要多等一会,这也是我之前的问题,ODL 连不上我就一直重开ODL CONTROLLER

c++画直线、矩形、圆、椭圆

c++画图 1、画直线 line(src, p1, p2, color, thickness, typeline) // src:图像,p1:起始点,p2:终止点,color:颜色,thickness:线宽,typeline:线型。 2、画矩形 rectangle(src, rect, color, thickness, typeline) // rect:矩形的形状。 3、画椭圆 ellipse(src, 中心点,长轴长, 短轴长, 旋转角度,椭圆的起始度数,椭圆的终止度数,线宽,线型) //ellipse(img, Point(img.cols/2, img.rows/2), Size(img.cols/4, img.rows/6), 45, 0, 360, 1, LINE_8); 4、画圆 circle(src, 圆中心点, 半径,颜色,线宽,线型); //circle(img, center, 100, color, 1 , 8) 4、填充多边形 fillPoly(src, 起始指针,个数,颜色,线宽,线型); //fillPoly(img, ppts, ptn, color, 1, 8); 5、在图像上显示文字 putText(src “文字”, 起始点坐标, 字体, 尺寸因子, 颜色, 线宽, 线型); //putText(dst, “the number of lines”, Point(100, 100), FONT_HERSHEY_COMPLEX, 1.

ospf,DHCP,acl综合实验

实验思路: 路由器配置ip地址 启动DHCP相关配置,确保PC可以自动获取IP地址 启动ospf 定制acl 相关配置命令 R1 sysname 1 dhcp enable acl number 3000 rule 5 deny icmp source 192.168.1.29 0 destination 192.168.1.94 0 icmp-type echo ip pool 1 gateway-list 192.168.1.1 network 192.168.1.0 mask 255.255.255.224 dns-list 114.114.114.114 aaa local-user admin password cipher % % K8m.Nt84DZ}e#<0`8bmE3Uw}% % local-user admin service-type http interface GigabitEthernet0/0/0 ip address 192.168.1.1 255.255.255.224 traffic-filter outbound acl 3000 dhcp select global interface GigabitEthernet0/0/1 ip address 192.168.1.33 255.255.255.224

李宏毅2020机器学习1

李宏毅2020机器学习 1. 简介2. 规定2.1. 环境2.2. Kaggle 3. Regression3.1. Model3.2. 准备训练数据 Training Data,定义损失函数Loss3.3. Gradient Descent3.4. Overfitting 过拟合3.5. Regularization 正则化 4. 误差从哪来?5. 梯度下降法8. 深度学习优化 1. 简介 机器学习就是自动找函式 机器学习: 语音识别,f(一段声音)=“How are you”图片识别,f(一张图片)=“Cat”下围棋,f(一张围棋图片)=“5-5”对话系统,f(“How are you?”)=“I am fine.” 你想找什么样的函式?机器怎么找出你想要的函式?即 Gradient Descent;函式的Loss,机器会自动找出Loss最低的函式 Regression ---- 回归,输出一个数值Classification ---- 二分类,input->f->Yes or NoRNN ---- 二分类,input -> f -> 正面 or 负面CNN ---- Multi-class Classification,多分类,input->f->Class 1, Class 2, … Class NSeq2seq ---- Generation,生成GANUnsupervised Learning ---- 非监督学习,例如 Auto-encoderAnomaly Detection ---- 训练机器知道“我不知道”Transfer Learning(Domain Adversarial Learning) ---- 处理不同的输入数据Explainable AI ---- 可解释Adversarial Attack ---- 攻击AINetwork Compression ---- 网络简化Meta Learning ---- Learn to learn,让机器学习如何学习Life-long Learning ---- 终身学习Reinforcement Learning ---- 强化学习 2.

matlab绘制一节系统单位阶跃响应曲线,实验一 一阶、二阶系统阶跃响应曲线的绘制及系统稳定性分析(1)...

实验一 一阶、二阶系统阶跃响应曲线的绘制及系统稳定 性分析 【实验目的】熟悉采用Matlab 软件所进行的自动控制原理 分析。 【实验内容】1、一阶系统的阶跃响应曲线的绘制; 2、二阶系统的阶跃响应曲线的绘制; 3、求解系统闭环极点并判断系统的稳定性。 【实验步骤】 1、 已知系统传递函数为: =)(s φ11 +Ts ,分别作T=0.1,1,10时的阶跃响应曲线。 其程序为: subplot(3,1,1);num=1;den=[0.1,1];step(num,den);grid subplot(3,1,2);den=[1,1];step(num,den);grid subplot(3,1,3);den=[10,1];step(num,den);grid 2、 已知二阶系统222()()()2n n n C s s R s s s w f zw w ==++;当w n =5 时,分别作出2,1,6.0,0=?的阶跃响应曲线。 其程序为: num=25;den=[1,0,25];step(num,den);hold on den=[1,6,25];step(num,den);hold on den=[1,10,25];step(num,den);hold on den=[1,20,25];step(num,den);axis([0, 5 ,0 ,2.2]) text(0.7,2.0,'\zeta=0','FontSize',8) text(0.7,1.2,'0.6','FontSize',8)

Application.persistentDataPath 的一个小坑

打包之前在Android的Player Setting里面选择WriteAccess (写入访问) Internal Only:表示Application.persistentDataPath的路径是应用程序沙盒,(需要root不然访问不了写入的文件) 文件路径:data/data/包名/Files/OutLog.txt External(SDCard):表示Application.persistentDataPath的路径是SDCard的路径。(不需要root就可以访问文件) 文件路径:SDCard/Android/包名/Files/OutLog.txt 后者你可以利用 腾讯 360 百度 91 各种手机助手把文件取出来。(建议使用后者) 总结 Application.persistentDataPath 会根据你的WriteAccess选项而产生对应的路径,如果你还是不知道路径我建议你输出一下它。

PackageManagerService启动详解(六)之Android包信息体和解析器(下)

PKMS启动详解(六)之Android包信息体和包解析器(下) Android PackageManagerService系列博客目录: PKMS启动详解系列博客概要 PKMS启动详解(一)之整体流程分析 PKMS启动详解(二)之怎么通过packages.xml对已安装应用信息进行持久化管理? PKMS启动详解(三)之BOOT_PROGRESS_PMS_START流程分析 PKMS启动详解(四)之Android包信息体和包解析器(上) PKMS启动详解(五)之Android包信息体和包解析器(中) PKMS启动详解(六)之Android包信息体和包解析器(下) PKMS启动详解(七)之BOOT_PROGRESS_PMS_SYSTEM_SCAN_START阶段流程分析 PKMS启动详解(八)之BOOT_PROGRESS_PMS_DATA_SCAN_START阶段流程分析 引言 通过前面不懈的努力,终于Android包信息体和包解析器要到完结篇了,此处的我们值得掌声(鲜花就算了,我们coder还是很实在的)!在前面的博客PKMS启动详解(五)之Android包信息体和包解析器(中)我们从Android包管理机制的设计者角度出发,着重分析了: Android包管理机制中的Android包解析器的PackageParser成员信息(主要是用于解析Android包的各种配件信息,不是配件信息不是配牛) 如果说前面我们分析的PackageParser成员变量等相关的信息,是包管理器为了烹饪Android包准备的各种顶级食材的话,那么PackageParser中定义的各种方法就是为了烹饪Android包准备的各种烹饪技术了。是不是很好奇,Android包管理器是怎么将前面的各种食材进行烹饪得到各种美味呢?通过这篇博客的源码实战分析,我想读者朋友一定会解开上述谜题成为一个烹饪大师的! 在正式开始本篇的博客相关分析前,还是非常有必要放出包解析器PackageParser的核心结构图,这样在后续分析时有一个整体上的参考(有点像我们小孩拼积木的配件图,实在撸不动的时候回来看看)。 注意:本篇的介绍是基于Android 7.xx平台为基础的(并且为了书写简便后续PackageManagerService统一简称为PKMS),其中涉及的代码路径如下: frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java frameworks/base/core/java/android/content/pm/PackageParser.java 一.包解析器PackageParser解析Android包流程概述 包解析器PackageParser解析Android包的工作,难度不大(属于伤害性不大,侮辱性极强的范畴),但其流程的非常的繁琐,跟着流程走一边过来估计读者骂娘的心思都有了。但是没有办法阅读分析源码就是这么枯燥且乏味的事情,但是谁叫我们是coder呢?木有办法! 为了能将相关解析Android包的流程分析清楚,所以这个章节我们先对整个的流程简单概述一下! 前面的博客中我们已经将PackageParser解析Android包需要的各种数据结构(配件)已经备齐了,要得到以上的数据结构,包解析器PackageParser中的相关方法功不可没,其中最最核心的就是parsePackages方法,它从接收一个静态的文件(File类型)开始,会经过一个漫长的包解析过程,直到生成最终可口香甜的的Package: parsePackages(File file...) └── parseClusterPackage(File packageDir...) └── parseClusterPackageLite(File packageDir...) | └── parseApkLite(File apkFile...) | └── parseApkLite(String codePath...) └── parseBaseApk() └── parseBaseApplication() | └── parseActivity() | └── parseService() | └── ... └── parseInstrumentation() └── ... └── parseMonolithicPackage(File apkFile...) └── parseMonolithicPackageLite(File packageFile...) | └── parseApkLite(File apkFile...) | └── parseApkLite(String codePath.

UniApp:IOS篇:通用链接【Universal Links】配置

在做APP的项目中遇到了,APP向微信中分享信息的需求,因此了解到了iOS的通用链接【Universal Links】,查询了诸多资料,最后搞定了,特此记录一下。 Dcloud问答社区:https://ask.dcloud.net.cn/article/36445Dcloud问答社区:ios通用链接配置简书:iOS Universal Links教程博客园:iOS 唤起APP之Universal Link(通用链接) 第一步:开启Associated Domains服务 1.登录苹果开发者网站,在“Certificates, Identifiers & Profiles”页面选择“Identifiers”中选择对应的App ID,确保开启Associated Domains服务。 2.开启后重新生成profile文件,不然会导致无法打包 第二步:生成 apple-app-site-association.json { "applinks": { "apps": [], "details": [ { "appID": "G56NU654TV.io.dcloud.HBuilder", "paths": [ "/ulink/*"] } ] } } //apps //--必须对应一个空的数组 //appID //--由前缀和ID两部分组成,可以登录苹果开发者网站,在“Certificates, Identifiers & Profiles”页面选择“Identifiers”中选择对应的App ID查看 //paths //--对应域名中的path,用于过滤可以跳转到App的链接,支持通配符*,?以及NOT进行匹配,匹配的优先级是从左至右依次降低 1.json文件需放置在 https 的域名下 例如:https://www.xxx.com/ulink/apple-app-site-association.json 第三步:在微信开放平台,给绑定的APPID配置通用链接 在绑定的APP下配置JSON文件所在的域名为通用链接:https://www.xxx.com/ulinks/ 第四步:在HbuilderX的APPSDK权限配置微信相关的通用链接 第五步:在使用HBuilderX云端打包时在manifest.json中配置域名 在"plus" -> “distribute” -> “apple” -> “capabilities” -> “entitlements"节点(uni-app项目在"app-plus” -> “distribute” -> “ios” -> “capabilities” -> “entitlements”)下添加"

matlab排序检验法,MATLAB如何对数组元素进行排序? 照着学就行了

介绍MATLAB中对数组元素排序的有关函数,介绍三个函数,分别是issorted,sort,sortrow。 工具/材料 MATLAB 2016a 操作方法 01 首先,通过issorted函数可以判断列表或者数组是否是升序。默认对列表使用,如图。 02 请注意,降序排列issorted将返回0。 03 当对数组使用issorted函数时,必须带有第二个参数'rows',用以检查是否按行升序。 04 issorted按行比较数组的过程如图,首先比较第一列,如果有相同再比较第二列...等等。 05 下面说排序函数sort.默认对向量使用,排序后向量中元素升序排列。 06 如果对数组使用sort,默认是对每一列各自排序,原有行内元素不再对应。 07 使用sort可以带有第二个参数:维度。sort(B,2)将B中的每行各自排序。 08 sort函数可以有两个返回值,第二个是元素位置表,指示矩阵中元素在原有矩阵中对应向量中的位置。 09 使用sortrows可以将矩阵的每行看作整体进行排序(与sort各自排序不同)。 默认先按照第一列排序,如果无法区分按照第二列..依次类推。 10 使用sortrows可以带有第二个参数指定维度或者维度顺序。 sortrows(D,2)将只按照第二列排序。 sortrows(D,[2,1])先按照第二列排序,如果无法区分再比较第一列。 11 sortrows函数同样可以有两个返回值,第二个(向量)是各行在原矩阵中的位置。 好了,以上就是大致内容了,(END) sortrows还可以对table表格中的元素进行排序。 声明:该文观点仅代表作者本人,天晴资讯网系信息发布平台,仅提供信息存储空间服务。