next

Digilent FPGA开发板的Boards file的添加——以Eclypse-Z7为例

眉间皱痕 提交于 2020-10-22 15:57:42
Digilent FPGA开发板的Boards file的添加——以Eclypse-Z7为例 背景 软硬件平台 添加Eclypse-Z7的board file 参考相关 背景 最近刚开始使用 Digilent 的 Eclypse-Z7 开发板,为了更加方便的使用与配置开发板,Digilent为我们准备好了Eclypse-Z7的boards file,导入到vivado后我们新建工程可以通过选择Eclypse-Z7板子来新建基础工程. boards file包含Vivado IP Integrator用于支持Digilent系统板的文件。它们包括板卡接口,可连接到这些接口的IP的预设配置以及将这些接口的引脚连接到物理FPGA引脚所需的约束。 非Zynq板卡还包括Memory Interface Generator(MIG)项目文件,可用于配置Xilinx MIG IP与Microblaze系统一起使用。 软硬件平台 操作系统:windows10 软件平台:vivado2019.1 SDK开发套件 硬件平台:Digilent Eclypse-Z7 zmod开发套件 添加Eclypse-Z7的board file 添加方法如下: ①下载vivado-boards Github存储库。 点击: Digilent/vivado-boards 看到下图界面,点击Code >

浅谈5G网络

你。 提交于 2020-10-22 11:17:57
浅谈5G网络 移动通信发展历程 5G的定义 5G:第五代移动通信技术 5G的技术指标 5G关键技术 (1)超密集组网----满足热点高容量场景:大量增加小基站,以空间换性能; 宏基站:数千米 小基站(家庭基站;室内基站;个人基站;微基站;微微基站):10米到200米SDN (2)大规模天线阵列—提升了信号可靠性;提升了基站吞吐率;大幅降低对周边基站的干扰;服务更多的移动终端 (3)动态自组织网络(SON)----部署灵活;支持多跳;超可靠性;支持超高带宽 (4)软件定义网络(SDN)----物理上分为控制平面和转发平面;控制器集中管理多台转发设备;服务和程序都部署在控制器上 (5)网络功能虚拟化(NFV)----软硬件解耦,虚拟化;通用功能实现网络功能 5G面临的挑战 (1)频谱资源的挑战 5GHz以下频段已经非常拥挤; 解决办法: 使用高频段,超高频段; (2)新业务的挑战 eMBB:3D/超高清等大流浪移动宽带业务; 挑战:AR/VR等对传输速率的要求高; nMTC:大规模物联网业务; 挑战:对连接数,待机,耗电等要求高; uRLLC:无人驾驶,工业自动化等高可靠,低时延业务; 挑战:对时延,可靠性要求极高; (3)新场景挑战 移动热点:大量热点带来的超密集组网; 物联网:物联新业务远超人的活动范围; 低空/高空覆盖:无人机,飞机航线覆盖; (4)安全挑战 三大场景安全:

Reactor 3 (2): 创建Publisher之Mono

徘徊边缘 提交于 2020-10-22 10:15:36
Reactor中的Publisher Reactor中有两种Publisher:Flux和Mono,其中Flux用来表示0 N个元素的异步序列,Mono用来表示0 1个元素的异步序列,相对于Flux而言Mono更简单一些。 创建Mono reactor中的mono可以通过一些方法创建,常用方法如下: just():可以指定序列中包含的全部元素。 empty():创建一个不包含任何元素。 error(Throwable error):创建一个只包含错误消息的序列。 fromCallable()、fromCompletionStage()、fromFuture()、fromRunnable()和 fromSupplier():分别从 Callable、CompletionStage、CompletableFuture、Runnable 和 Supplier 中创建 Mono。 delay(Duration duration):创建一个 Mono 序列,在指定的延迟时间之后,产生数字 0 作为唯一值。 ignoreElements(Publisher source):创建一个 Mono 序列,忽略作为源的 Publisher 中的所有元素,只产生结束消息。 justOrEmpty(Optional<? extends T> data)和 justOrEmpty(T data):从一个

“睡服”面试官系列第十九篇之async函数(建议收藏学习)

旧时模样 提交于 2020-10-22 03:15:10
目录 1. 含义 2. 基本用法 3. 语法 3.1返回 Promise 对象 3.2Promise 对象的状态变化 3.3await 命令 3.4错误处理 3.5使用注意点 4. async 函数的实现原理 5. 与其他异步处理方法的比较 6. 实例:按顺序完成异步操作 7. 异步遍历器 7.1异步遍历的接口 7.2for await...of 7.3异步 Generator 函数 7.4yield* 语句 总结 “睡服“面试官系列之各系列目录汇总(建议学习收藏) 1. 含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便。 async 函数是什么?一句话,它就是 Generator 函数的语法糖。 前文有一个 Generator 函数,依次读取两个文件 const fs = require('fs') const readFile = function (fileName) { return new Promise(function (resolve, reject) { fs.readFile(fileName, function(error, data) { if (error) return reject(error); resolve(data); }); }); }; const gen = function* () { const f1 =

html 试题试卷(包含latex)下载成word

时光毁灭记忆、已成空白 提交于 2020-10-21 23:35:18
html 试题试卷(包含latex)下载成word 主要目的: 分享将带latex的html格式的试题试卷以word的格式下载,并且加一些灵活的排版样式 接受群众的检阅,获得反馈 骗取打赏,或者github star 需求背景: html 混有latex公式的试题组成的试卷,下载成为word格式 word试卷的排版,纸张大小,字体,密封线,标题,题型,誉分栏等 html 呈现的样式和word呈现的样式一致(只能大体一致,有些样式还是没做到完全一致) 方案概要: 主要方案:提取HTML里的题文内容 >> 转换为word标签样式 >> (制造试卷模板)将转换成word样式的题文填充到模板中 >> 组建word(doc 或 docx) 制作freemark模板: 编辑好doc和docx的样板试卷,将其转化为xml格式,再转为ftl文件,并根据排版需求编写填充逻辑 编写调用freemark下载程序:根据传入条件选择doc或docx模板下载 解析html试题内容:用XPath分解试题内容,提取样式,将信息结构化 将结构化的试题内容翻译为word标签格式:将html样式翻译为对应的word里面的标签格式,让其可以填充到freemark模板中而不违背word标签的语法规范 综合以上步骤就可以将HTML格式的试卷下载为word格式的,文末会附源码 提前需要了解的知识: freemark相关语法知识

面试命中率90%的点——MySQL锁

柔情痞子 提交于 2020-10-21 18:04:52
一、对MySQL的锁的了解 当数据库有并发事务的时候,可能会产生数据的不一致,这时候需要一些机制来保证访问的次序,锁机制就是这样的一个机制。 就像酒店的房间,如果大家随意进出,就会出现多人抢夺同一个房间的情况,而在房间上装上锁,申请到钥匙的人才可以入住并且将房间锁起来,其他人只有等他使用完毕才可以再次使用。 二、隔离级别与锁的关系 在Read Uncommitted级别下,读取数据不需要加共享锁,这样就不会跟被修改的数据上的排他锁冲突 在Read Committed级别下,读操作需要加共享锁,但是在语句执行完以后释放共享锁。 在Repeatable Read级别下,读操作需要加共享锁,但是在事务提交之前并不释放共享锁,也就是必须等待事务执行完毕以后才释放共享锁。 SERIALIZABLE 是限制性最强的隔离级别,因为该级别锁定整个范围的键,并一直持有锁,直到事务完成。 三、按照锁的粒度分数据库锁有哪些? 锁机制与InnoDB锁算法 在关系型数据库中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎)、表级锁(MYISAM引擎)和页级锁(BDB引擎 )。 MyISAM和InnoDB存储引擎使用的锁: MyISAM采用表级锁(table-level locking)。 InnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁。 行级锁,表级锁和页级锁对比

IDEA 如何创建一个普通的 Java 项目,及创建 Java 文件并运行

房东的猫 提交于 2020-10-21 14:28:46
首先,确保 IDEA 软件正确安装完成,Java 开发工具包 JDK 安装完成。 IDEA 的 Java 项目 (Project) 则相当于 Eclipse 的工作空间 (workspace) 的概念。 一、创建 Java 项目: 1、打开 IDEA 软件,点击界面上的 Create New Project 2、出现以下界面,选中 Java,然后选择 JDK,最后点击 Next,进行下一步(我的是 jdk1.8) 3、这里是选择生成项目时是否创建 Java 文件,勾选上 Java Hello World 后会生成一个默认的 Hello world 文件,点击 Next 进行下一步, 4、给项目命名,默认是 untiled,自己填个名字吧,最后点击 finish 5、项目创建完成 二、创建 Java 文件: 1、点击 src——>new——>package,创建一个文件包,并给包命名,与 Eclipse 的包类似; 给包命名 2、在包下面创建 Java 类文件,点击包名——>New——>Java Class; 给类文件命名 4、运行 Java 文件,点击 Run——>Run......; 出现以下弹框,点击要运行的文件名,这里是 Hello; 运行结果 来源: oschina 链接: https://my.oschina.net/u/4301555/blog/4682698

Android Studio怎么打包成APK并在真机调试

余生颓废 提交于 2020-10-19 18:18:11
Android Studio怎么打包成APK并在真机调试 首先,我们在Android studio上方的工具栏找到build,点击查看bulid工具。如下 第二:在bulid工具栏的下拉栏,我们可以找到Generate Signed Bundle or APK,点击进入该设置。 第三:选择APK之后按下Next。 因为我们是没有密钥的(身份证)所以我们要去生成一个密钥,所以这里我们选择 Create new… 点击文件夹图标,进行下面页面。在这里选择你自己存放的位置,创建一个空文件夹 出现这种问题,暂时可以跳过,点击ok 选择下面这几个,在点击Finish 等待一段时间。apk打包完毕,会弹出一个提示框之后返回到我们的项目包。 找到app下的release文件夹,里面有我们打包好的apk 调试一下,真机安装成功 来源: oschina 链接: https://my.oschina.net/u/4414570/blog/4679215

Java自学后的前十章实时复习-cnblog

99封情书 提交于 2020-10-19 18:17:45
Java自学后的前十章练习题及实时复习 各章重点知识的总结及回顾 Java执行是从 main 方法开始执行的,此方法的完整定义是 public static void main(String[]args) { } ​ Java类名的每个单词的首字母通常要求 小写 。 简述Java实现可移值性的基本原理。 答;Java属于编译型和解释型的编程语言,所有的*.java程序必须编译为*.class文件之后才可以在电脑上执行,而执行x.class文件的电脑并不是一台真实的电脑,而是利用软件和硬件模拟出来的一台虚拟电脑,称为Java虚拟机,而针对于不同的操作系统平台,有不同版本的Java虚拟机,即:由Java虚拟机去适应不同的操作系统,即:只要Java虚拟机的支持没有改变,同一个x.class可以在不同的平台上运行 简述Java中path及classpath的作用。 答: PATH:是操作系统的环境属性,指的是可以执行命令的程序路径; CLASSPATH:是所有x.class文件的执行路径,java命令执行的时候将利用此路径加载所需要的x.class文件。 详细阐述Java中使用public class或class声明一个类的区别及注意事项。 ​ 答:使用public class定义的类,要求文件名称和类名称保持一致,在一个*.java文件之中只能存在一个public class; ​

【LeetCode】 67 对链表进行插入排序

那年仲夏 提交于 2020-10-19 09:58:44
题目: 解题思路: 图片非常详细的讲解了算法思路 https://leetcode-cn.com/problems/insertion-sort-list/solution/jian-dan-yi-dong-by-pianpianboy/ 代码: class Solution { public ListNode insertionSortList(ListNode head) { if(head == null) return null; ListNode dummyNode = new ListNode(0); ListNode pre = dummyNode; ListNode cur = head; while(cur!=null){ ListNode tmp = cur.next;//提前将cur的下一个节点保存起来,因为后面需要将cur节点进行删除→插入 while(pre.next!= null&&pre.next.val<cur.val){ pre=pre.next; } //因为cur.val的大小介于pre.val和pre.next.val之间 //将cur插入到pre和pre.next之间,注意①和②之间的顺序 //注意此处是不会形成死循环的:由于dummy是新开辟的链表,此处是将cur节点移到了dummyNode所在的新链表中 cur.next = pre