vivado设置simulation时默认wcfg文件
set_property xsim.view F:/vivado/project/tcpu/src/testbench/dcache.wcfg
自底向上语法分析
基础例:
假定文法为:(1) S->aAcBe(2) A->b(3) A->Ab(4) B->d将abbcde归约到S栈 动作a 进aab 进abaA A->baAb 进baA A->AbaAc 进caAcd 进daAcB B->daAcBe 进eS S->aAcBe
该过程和自顶向下正好相反,它从规则右端寻找是否有匹配规则,然后将他归约成左端,最后得到起始字符为匹配完成。
因为右端可能会有多条相同规则,因此问题的关键是使用哪一个产生式进行归约。
名词定义:
短语: 文法G[S], $\alpha \beta \delta$是文法G的一个句型 且$S \overset{*}{=}> \alpha \beta \delta \, 且 \, A \overset{+}{=}> \beta$.则称$\beta$是A的短语
直接短语: 若有A=>$\beta$则称为直接短语
句柄: 一个句型的最左直接短语称为句柄
例如文法:
E->T | E+TT->F|T* ...
graph cut算法
最大流最小割问题可以参考这篇博客
graph cut思想能量函数
其中前一项是区域项。而后一项是边界项。而函数的优化目的是找能量最低的位置。
首先我们需要一些种子点标注它是前景还是背景,然后我们可以根据前景点和后景点构建概率直方图。图中的含义是p节点的前景的区域概率为p节点在前景直方图的概率的负对数。
而边界项的计算公式为
也就是说随着颜色差异和距离的增大,B在减小。
gprah cut的目的是为了区分出哪些是前景,哪些是背景来进行分割。因此我们可以采用最大流最小割的思想,将源点认为是前景,将汇点认为是背景,而图像中的像素是其他点,我们需要找到最小割将前景和背景分割开来。
定义完点之后还需要定义流量,流量分为端点到像素点之间的流量和像素点到像素点之间的流量:
端点到像素点: 这一项是前面公式中的R(L),它的定义为如果是前景种子点,则到前景流量为无穷大,到背景点流量为0.其他点到源点和汇点计算遵从上面的公式
像素点到像素点: 这一项是公式中的B(L),遵从上面公式
代码实现import osimport cv2import numpy as npimport maxflowi ...
makefile
本篇文章学习自
介绍一个makefile可以看成是由许多命令组成的,每个命令都遵循如下形式
target ... : prerequisites ... command ... ...
其中target是目标,prerequisites是依赖,command是执行的命令,例如
hello.o: hello.c gcc -o hello.o hello.c例2compile:main.bin main.data convert ./convert mkdir -p $(OBJDIR) mv main.elf $(OBJDIR)/. mv test.s $(OBJDIR)/. mv main.bin $(OBJDIR)/. mv main.data $(OBJDIR)/. mv *.coe $(OBJDIR)/. mv *.mif $(OBJDIR)/. cp $(OBJDIR)/inst_ram.mif $(OBJDIR)/axi_ram.mifmain.bin:main.elf ${CROSS_COMPILE}ob ...
harmony ability
Ability(能力)是鸿蒙软件的基础单位,一个应用可以包含多个Ability。鸿蒙支持应用以Ability为单位进行部署
Page AbilityPage提供页面管理和页面跳转的能力。例如外卖提供联系商家的业务入口,当用户使用此功能时,会跳转到通话应用的拨号页面。鸿蒙支持Page之间的跳转,并且指定跳转到某个AbilitySlice
创建右键就可以进行创建,并且它的配置文件如下{ "skills": [ { "entities": [ "entity.system.home" ], "actions": [//路由名称 "action.system.home" ] } ], "orientation": "uns ...
harmony java框架
文件结构
java: java代码,运行逻辑
element: 元素资源,存放一些json格式文件,主要是颜色,字符串,bool值等
graphic: 表示可绘制资源。例如按钮的样式
layout: 表示布局资源, 控制控件摆放位置和控件的一些属性
media: 表示媒体资源,如图片、视频等
build: 存放最终编译后的包
项目配置文件每个项目下都有一个config文件,它包含了该HAP的一些配置信息。
{ "app": { "bundleName": "com.example.learning",//同一个应用需要保持一致 "vendor": "example",//开发商 "version": {//版本 "code": 1000000,//内部版本号,用户不可见 "name": "1.0.0"//呈现的版本号 } ...
算法设计与分析代码
子集和数问题由于本实验是为了验证数据集影响,因此没有采用一次增加两个的限界函数。此代码左支限界是 w+wi> target,右支限界是w+rest>=target. 并且由于实验网站要求在没有正确解的情况下输出近似解,因此每次触底或者左支终止之后还进行了记录。最后因为进行了排序,而数据集给出的答案中并没有进行排序,因此使用了一个结构体对开始的位置进行记录。
#include<iostream>#include<fstream>#include<vector>#include<string>#include <windows.h>#define N 6#define MAX_ANS 1000using namespace std;struct node{ int sum; int loc;};int time=0;int ans=0;int nearest = 0;int use[MAX_ANS][N+1];void quick(vector<node>& a, i ...
搭配
含义搭配是两个及两个以上的词组成的词汇表示。
例如:strong tea vs. powerful tea vs. powerful drugmake a decision vs. take a decisionknock … door vs. hit … door
这些搭配有时候并没有什么语法规则,仅仅是约定俗称的习惯,因此单纯的基于规则进行进行词语匹配有时候无法找出这些搭配。
寻找搭配的方法基于频率基于频率的基本思想就是统计一个语料中二元组出现的次数。但是统计完成之后可能出现如下图所示情况。
of the in the等搭配毫无意义,因此我们需要想办法筛选出不需要的留下需要的。
一种方法是使用停用词表删去停用词,第二种方法是基于规则筛选掉某些不太可能出现搭配的方案,例如介词和副词搭配。
均值和方差很多时候二元组并不是紧密相连的,他们之间往往有一定距离,并且还需要知道两个词的先后顺序。例如:she knocked on his doorThey knocked at the door100 women knocked on Donaldson’s doorA man knocked ...
祝李杏-张成百年好合
祝愿
此祝:
若日月含光有时且尽
愿郎妾之情未得绝期
夫妻将作比翼鸟
此日起共为一身
只持死别
毋有生离
拥一人
一生之幸
信郎妾定执手偕老
与共白首
springboot注解
bean相关bean是spring架构的一大支柱,它构建了spring的框架。
bean是什么bean可以是xml中的字段,也可以是用户定义的类。在定义他们后,spring会自动的查找这些bean并把它们加入到spring的bean容器中。然后在我们需要的时候可以从容器中拿取bean对象。
大致过程为:
注册: 根据xml文档和注解(@Bean, @Component等)找到相应的对象,并将这些这些对象的定义信息保存起来(并没有实例化,定义信息包括一些xml中的初始值等)。
发布到springloc容器中,但是此时还是没有实例化
装配: 在这些资源都找到后,会根据@Autowired进行实例化加入到各个类中,类似于链接过程。
bean的生命周期为:
图片源自
spring的容器又叫ioc容器(控制反转), bean就是被这个容器实例化、管理、组装的对象。
依赖注入: spring启动时会把所需的类实例化为对象,如果该对象有依赖,那么他会寻找依赖对象并且实例化放到该对象中,这便是依赖注入。
控制反转: new操作现在基本交给spring去做了,而不是使用传统的构造函数传参方式,这 ...