Other

HDLbits Sequential Logic3.2.1——Latches and Filp-Flops

1、AD 触发器是一种在时钟信号的(通常)上升沿存储位并定期更新的电路。当使用时钟控制的always块时,逻辑合成器会创建 D 触发器。AD触发器是“组合逻辑块后接触发器”的最简单形式,其中组合逻辑部分只是一条线。 创建一个 D 触发器。 module top_module ( input clk, // Clocks are used in sequential circuits input d, output reg q );// // Use a clocked always block // copy d to q at every positive edge of clk // Clocked always blocks should use non-blocking assignments always@(posedge clk) q<=d; endmodule 2、创建 8 个 D 触发器。所有 DFF 都应由clk的上升沿触发。 module top_module ( input clk, input [7:0] d, output [7:0] q ); always@(posedge clk) q<=d; endmodule 3、创建 8 个具有高电平有效同步复位的 D 触发器。所有 DFF 都应由clk的上升沿触发。

MySQL远程连接、用户授权

目录MySQL远程连接创建用户、授权MySQL添加用户、删除用户、授权及撤销权限MySQL可授予用户的执行权限 MySQL远程连接

026 python字典与json字符串如何互转

d = {'a': 123, 'b': '456', 'c': 'xyz'} print(d) print(type(d)) import json json_str = json.dumps(d) print(json_str) print(type(json_str)) d1 = json.loads(json_str) print(d1) print(type(d1))  dumps函数将字典转换未json字符串 loads函数将json字符串转为字典

【人工智能导论:模型与算法】MOOC 8.3 误差后向传播(BP) 例题 编程验证

8.3 误差后向传播(BP) 原理和推导过程,参考慕课。https://www.icourse163.org/course/ZJU-1003377027 输入值:x1, x2 = 0.5,0.3 输出值:y1, y2 =0.23, -0.07 激活函数:sigmoid 损失函数:MSE 初始权值:0.2 -0.4 0.5 0.6 0.1 -0.5 -0.3 0.8 目标:通过反向传播优化权值 反向传播1轮,检验PPT数值 =====正向计算:h1, h2, o1 ,o2=====0.56 0.5 0.48 0.53 =====损失函数:均方误差=====0.21 =====反向传播:误差传给每个权值=====0.01 0.01 0.01 0.01 0.03 0.08 0.03 0.07 =====更新前的权值=====0.2 -0.4 0.5 0.6 0.1 -0.5 -0.3 0.8 =====更新后的权值=====0.19 -0.41 0.49 0.59 0.07 -0.58 -0.33 0.73 import numpy as np def sigmoid(z): a = 1 / (1 + np.exp(-z)) return a if __name__ == __main__: w1 = 0.

MySQL EXPLAIN详解

面试官一般会问type:里面主要关注type ,如果是 全表扫描的话是all,这个最忌讳,一般要优化到:range最好能达到ref级别; 还有个问题,就是索引的失效,什么情况下会失效呢 参考:索引失效的情况及解决(超详细)   MySQL EXPLAIN命令是查询性能优化不可缺少的一部分,该文主要讲解explain命令的使用及相关参数说明。 EXPLAIN Output Columns 列名说明 id 执行编号,标识select所属的行。如果在语句中没子查询或关联查询,只有唯一的select,每行都将显示1。否则,内层的select语句一般会顺序编号,对应于其在原始语句中的位置 select_type 显示本行是简单或复杂select。如果查询有任何复杂的子查询,则最外层标记为PRIMARY(DERIVED、UNION、UNION RESUlT) table 访问引用哪个表(引用某个查询,如“derived3”) type 数据访问/读取操作类型(ALL、index、range、ref、eq_ref、const/system、NULL) possible_keys 揭示哪一些索引可能有利于高效的查找 key 显示mysql决定采用哪个索引来优化查询 key_len 显示mysql在索引里使用的字节数 ref 显示了之前的表在key列记录的索引中查找值所用的列或常量 rows 为了找到所需的行而需要读取的行数,估算值,不精确。通过把所有rows列值相乘,可粗略估算整个查询会检查的行数 Extra 额外信息,如using index、filesort等 id id是用来顺序标识整个查询中SELELCT 语句的,在嵌套查询中id越大的语句越先执行。该值可能为NULL,如果这一行用来说明的是其他行的联合结果。 select_type 表示查询的类型 类型说明 simple 简单子查询,不包含子查询和union primary 包含union或者子查询,最外层的部分标记为primary subquery 一般子查询中的子查询被标记为subquery,也就是位于select列表中的查询 derived 派生表——该临时表是从子查询派生出来的,位于form中的子查询 union 位于union中第二个及其以后的子查询被标记为union,第一个就被标记为primary如果是union位于from中则标记为derived union result 用来从匿名临时表里检索结果的select被标记为union result dependent union 顾名思义,首先需要满足UNION的条件,及UNION中第二个以及后面的SELECT语句,同时该语句依赖外部的查询 subquery 子查询中第一个SELECT语句 dependent subquery 和DEPENDENT UNION相对UNION一样 table 对应行正在访问哪一个表,表名或者别名

Elasticsearch +TP6 通过接口查询需要的数据

以下简答的根据前端传回来的数据去进行一个匹配信息 只是简单的一个小DEMO  <?php namespace app\api\controller;use Elasticsearch\ClientBuilder; class Tex { /** * eden 文件上传接口 */ public function index() { // 用于存放下面不为空的数据 $data = []; // 用来存放条件查询的数据 $chang = []; // 1、通过企业名称搜索 $company_name = input('company_name');//接收关键字 // 以下都是判断是否为空不是空的话push 进去数组里面 if($company_name){ $datas[match] = ['company_name' => $company_name]; array_push($data,$datas); } // // 2、通过企业经营范围搜索 $op_scope = input('op_scope');//接收关键字 if($op_scope){ $datas[match] = ['op_scope' => $op_scope]; array_push($data,$datas); } // // 3、通过企业注册时间范围搜索 $es_date = input('es_date');//接收关键字 $es_dates = input(es_dates);//分为结束时间 if($es_date){ if(!$es_dates){ $es_dates= date(Y-m-d h:i:s,time()); } $changs[range] =[es_date=>[gt=>$es_date,lte=>$es_dates]]; array_push($chang,$changs); } // // 4、通过企业注册资本金范围搜索 $register_capital = input('register_capital');//接收关键字 $register_capitals = input('register_capitals');//接收关键字 if($register_capital&&$register_capitals){ $changs[range] =[zczbj=>[gt=>(float)$register_capital,lte=>(float)$register_capitals]]; array_push($chang,$changs); } // // 5、通过企业法人名称搜索 $legal_person = input('legal_person');//接收关键字 if($legal_person){ $datas[match] = ['legal_person' => $legal_person]; array_push($data,$datas); } // // 6、通过联系方式搜索 $phone = input('phone');//接收关键字 if($phone){ $datas[match] = ['phone' => $phone]; array_push($data,$datas); } //如果设置了用户名密码的ES 以下的格式 如果没有的话那就是正常些IP+端口号就可以 $client = ClientBuilder::create()->setHosts(['user:password@127.

补充知识:数据安全问题

声明 版权声明:本文参考CSDN博主「一个快乐的野指针~」的原创文章,仅用作个人学习,特此声明 原文链接: https://blog.csdn.net/qq_44715943/article/details/116714584 补充知识:数据安全 1. 多线程并发环境下,数据的安全问题(重点) 以后在开发中,我们的项目都是运行在服务器当中,而服务器已经将线程的定义,线程对象的创建,线程的启动等,都已经实现完了。这些代码我们都不需要编写。 最重要的是: 编写的程序需要放到一个多线程的环境下运行,你更需要关注的是这些数据在多线程并发的环境下是否是安全的。(重点:★★★★★) 2. 什么时候数据在多线程并发的环境下会存在安全问题呢?★★★★★ 满足三个条件: 条件1:多线程并发。 条件2:有共享数据。 条件3:共享数据有修改的行为。 3. 解决方法 线程排队执行(不能并发)。用排队执行解决线程安全问题。 这种机制被称为:线程同步机制。 专业术语叫做:线程同步,实际上就是线程不能并发了,线程必须排队执行。 线程同步就是线程排队了,线程排队了就会 牺牲一部分效率 4. 两个专业术语 异步编程模型: 线程t1和线程t2,各自执行各自的,t1不管t2,t2不管t1,谁也不需要等谁,这种编程模型叫做:异步编程模型。 异步编辑模型实际上就是多线程并发,异步就是并发。 同步编程模型: 线程t1和线程t2,在线程t1执行的时候,必须等待t2线程执行结束,或者说在t2线程执行的时候,必须等待t1线程执行结束,两个线程之间发生了等待关系,这就是同步编程模型。同步就是排队。 引出下面关于synchronized-线程同步的知识点

暂别(公告)2022.4.19

退役了,我跟土哥要走了,这个结果,从未想到过。 省选前的日记我会公开的,里面一堆牢骚和垃圾话,不想会坏心情的话就别看了。(一个失败者的心历也没什么好看的吧。) 公开时间大概会到我去南校区以后吧。 hzoi的前缀或许该去掉了。 下一次再见面,不知会是何时。大学应该不会再去打ACM了,我很脆弱,不想再来了。 未来的规划又迷茫了,不知道后面会不会学计算机干IT,按照父亲的期盼,应该会离这个领域越来越远了。或许,这不是我的舞台吧。 不再在这里胡言乱语了,后会,或许有期。

如何用 Python 识别车牌

车牌识别在高速公路中有着广泛的应用,比如我们常见的电子收费(ETC)系统和交通违章车辆的检测,除此之外像小区或地下 车库门禁也会用到,基本上凡是需要对车辆进行身份检测的地方都会用到。 简介 车牌识别系统(Vehicle License Plate Recognition)是计算机视频图像识别技术在车辆牌照识别中的一种应用,通常一个车牌识 别系统主要包括以下这四个部分: •车辆图像获取 •车牌定位 •车牌字符分割 •车牌字符识别 我们再来看一下百科中对车牌识别技术的描述: 车牌识别技术要求能够将运动中的汽车牌照从复杂背景中提取并识别出来,通过车牌提取、图像预处理、特征提取、车牌字符识 别等技术,识别车辆牌号、颜色等信息,目前最新的技术水平为字母和数字的识别率可达到 99.7%,汉字的识别率可达到 99%。 实现方式 我们这里不做太复杂的车辆动态识别,只演示从图像中识别车牌信息,车牌识别功能的实现方式大致分为两种,一种是自己编写 代码实现,另一种是借助第三方 API 接口实现。 自己实现 如果我们想要通过 Python 自己手动编码实现车牌识别功能,可以借助一些 Python 库,比如:OpenCV、TensorFlow 等,这种方 式因为每一个功能点都需要我们自己编码实现,所有会相对复杂一些,另一方面如果我们想要保证识别的准确性,可能需要做大 量的实验,也就是说会花费更多的时间。 第三方接口 现在已经有一些第三方平台实现好了车牌识别的功能,并且他们对外提供了 API 接口,我们只需要调用他们提供的接口即可,这 种方式实现就相对简单了一些,并且通常接口提供方对外提供的接口功能的准确性也是基本可以保证的,原因很简单,如果接口 功能太差的话,一是自己打脸,还有就是基本不会有什么人使用,也就失去了接口对外提供的价值了,另外第三方接口可能会收 取一定费用,因此,如果现实中我们具体实现的话要综合考虑。 具体实现 综合上面的情况,我们这里采用第三方接口的方式来实现车牌识别的功能,接口提供方我们选择百度云提供的接口,百度云接口 提供了免费额度,简单来说就是每天可以免费使用多少次,如果超过了这个次数就需要交钱什么的了,文档地址为: https://cloud.baidu.com/doc/OCR/index.html,下面来看一下具体实现过程。 SDK 安装 百度云 SDK 对多种语言提供了支持,比如:Python、Java、C++、IOS、Android 等,这里我们安装 Python 版的 SDK,安装很 简单,使用 pip install baidu-aip 命令即可,SDK 支持 Python 的版本为:2.7+ 与 3.x,SDK 目录结构如下: Python学习交流Q群:906715085#### ├── README.md ├── aip // SDK 目录│ ├── __init__.

退出登录方案实现

退出登录触发时机一般有两种: 1.主动退出:用户点击退出登录按钮后退出 2.被动退出:token过期,或被人“顶号”退出 无论是什么退出方式,在用户退出时,所需要执行的操作都是固定的: 1.清理掉当前用户的缓存数据 2.清理掉相关权限的配置 3.返回到登录页面 用户主动退出登录功能实现 logout() { // 清除vuex缓存,初始化用户信息与token this.commit('user/setToken', '') this.commit('user/setUserInfo', {}) // 清除loacalhost缓存 remoAllItem() // 跳转到登录页 router.push('/login') } 用户被动退出登录功能实现 场景1:token失效 场景2:单用户登录,其他人登录该账号,被顶号 处理方案: 主动处理方案:应对token失效,toekn是有时效性的,这个时效都是在服务端进行处理的。 在用户登录时,记录当前的登录时间 制定一个时效时长 在接口调用时,根据当前时间对比登录时间,看是否超过了时效时间 如果未超过,则正常进行后续操作 如果超过,则进行退出登录操作 auth.js: import { TIME_STAMP, TOKEN_TIMEOUT_VALUE } from '@/constant' import { setItem, getItem } from '@/utils/storage' /** * 获取时间戳 */ export function getTimeStamp() { return getItem(TIME_STAMP) } /** * 设置时间戳 */ export function setTimeStamp() { setItem(TIME_STAMP, Date.