阻塞赋值的赋值号用"="表示,对应的电路结构往往与触发边沿没有关系,只与输入电平的变化有关系,它的操作可以认为是只有一个步骤的操作,即计算赋值号右边的语句并更新赋值号左边的语句,此时不允许有来自任何其他verilog语句的干扰,直到现行的赋值完成,才允许下一条的赋值语句执行
串行块(begin end)中,各条赋值语将以它们在顺序块中的排列次序依次执行
a = 1;
b = 2;
c = 3;
begin
a = b + 1; // a = 3
b = a + 2; // b = 5
c = a - 1; // c = 4
end
非阻塞赋值的赋值号用"<="表示,对应的电路结构往往与触发沿有关系,只有在触发沿的时刻才能进行非阻塞赋值;
非阻塞赋值操作可以看作是两个步骤的过程:在赋值开始时刻,计算赋值号右边的语句(所有赋值号右边的结果),在赋值结束时刻(end),更新赋值号左边的语句
在计算非阻塞赋值号右边的语句和更新赋值号左边语句期间,允许其他的verilog语句同时进行操作
非阻塞赋值只能用于寄存器类型变量进行赋值,因此只能用于initial语句和always语句,不允许用于连续赋值语句assign
a = 1;
b = 2;
c = 3;
begin // 开始 结束
a <= b + 1; // 三条语句并行执行 3 3
b <= a + 2; // 3 3
c <= a - 1; // 0 0
end
module blocking(
input wire sys_clk,
input wire sys_rst_n,
input wire [1:0] in,
output reg [1:0] out
);
// 定义中间变量
reg [1:0] in_reg;
always@(posedge sys_clk or negedge sys_rst_n)
begin
if(sys_rst_n == 1'b0)
begin
in_reg = 2'b0;
out = 1'b0;
end
else
begin
in_reg = in;
out = in_reg;
end
end
endmodule
`timescale 1ns/1ns
module tb_blocking();
reg sys_clk;
reg sys_rst_n;
reg [1:0] in;
wire [1:0] out;
// 初始化时钟和复位信号,输入信号
intial begin
sys_clk = 1'b1;
sys_rst_n <= 1'b0;
in <=2'b0;
#20;
sys_rst_in = 1'b1;
end
// 模拟时钟
initial begin
#10;
sys_clk = ~sys_clk;
end
always #10 in <= {$random} % 4; // 生成非负数0,1,2,3
blocking block_inst(
.sys_clk (sys_clk),
.sys_rst_n (sys_rst_n),
.in (in),
.out (out)
);
endmodule
module nonblocking(
input wire sys_clk,
input wire sys_rst_n,
input wire [1:0] in,
output reg [1:0] out
);
// 定义中间变量
reg [1:0] in_reg;
always@(posedge sys_clk or negedge sys_rst_n)
begin
if(sys_rst_n == 1'b0)
begin
in_reg <= 2'b0;
out <= 1'b0;
end
else
begin
in_reg <= in;
out <= in_reg;
end
end
endmodule
1.代码示例:CodeBlock-1:1.1守护线程在main线程中创建publicclassDaemonThread{ publicstaticvoidmain(String[]args){ System.out.println(Thread.currentThread().getName()+"isStarting"); Threadt=newThread(){ @Override publicvoidrun(){ System.out.println(Thread.currentThread().getName()+"isStarting"); try{ Thread.sleep(10_00); }catch(InterruptedExceptione){ e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"isfinished."); } }; //设置为守护线程 t.setDaemon(true); t.start
?本文已归档到:「javacore」 ?本文中的示例代码已归档到:「javacore」 1.异常框架1.1.ThrowableThrowable是Java语言中所有错误(Error)和异常(Exception)的超类。Throwable包含了其线程创建时线程执行堆栈的快照,它提供了printStackTrace()等接口用于获取堆栈跟踪数据等信息。主要方法:fillInStackTrace-用当前的调用栈层次填充Throwable对象栈层次,添加到栈层次任何先前信息中。getMessage-返回关于发生的异常的详细信息。这个消息在Throwable类的构造函数中初始化了。getCause-返回一个Throwable对象代表异常原因。getStackTrace-返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。printStackTrace-打印toString()结果和栈层次到System.err,即错误输出流。toString-使用getMessage的结果返回代表Throwable对象的字符串。1.2.ErrorError是Throwable的
我们在前2篇文章分别介绍了edgeR和DESe基因芯片数据分析(六):DESeq2包的基本原理 我们接下来通过一个案例介绍利用edgeR进行差异分析。基因芯片数据分析(七):edgeR差异分析实战案例 本文接着介绍DESeq2包进行差异分析。包的安装和加载#包的安装和加载 BiocManager::install("DESeq2") library("DESeq2")复制读入数据这里我们用的数据是一个原始的counts数据的Excel文件,和上一讲中用的数据一样(想运行案例,文末获取文件)#读入原始的counts数据 counts<-read.table("gene_counts.xls",sep="\t",header=T,row.names=1)复制导入的数据我们通过head()函数查看前6行。 行名A1,A2,A3,B1,B2,B3为样本名,列名是基因名。创建分组设置实验组别,在基因芯片数据分析(六):DESeq2包的基本原理这篇文章中我们介绍基本原理时,有一步需要选择参考样本,在实际分析中,我
在给用户授予sysdba权限时,收到ORA-01994错误,查看描述信息即是passwordfilemissingordisabled。也可以使用oerrora<error_number> 来查看错误号具体的细节。从描述来看应该是密码文件丢失或REMOTE_LOGIN_PASSWORDFILE参数设置的问题。下面给出具体过程。1、错误提示情况 sys@CNMMBO>grantsysdbatoscott; grantsysdbatoscott * ERRORatline1: ORA-01994:GRANTfailed:passwordfilemissingordisabled /**************************************************/ /*Author:RobinsonCheng*/ /*Blog:http://blog.csdn.net/robinson_0612*/ /*MSN:robinson_0612@hotmail.com*/ /*QQ:645746311*/ /********
本文是基于iOS-RxSwift项目实战记录所述,如果你还未阅读过,建议你最好还先阅读一遍,并下载Demo熟悉一下:) LXFBiliBili前言MVVM的模式中,多出了ViewModel这个角色,将逻辑处理、网络请求等繁杂操作中ViewController中抽离出来,ViewController得以瘦身。 结合RxSwift架构,我们一般就会在ViewModel中定义一个input收集繁杂操作所需的信息,通过一个transform方法将input作为参数传入,进而得到一个output供controller使用。在使用RxSwift开发时会大量的使用到这种形式,其中就包括我们的网络请求。 结合iOS-RxSwift项目实战记录中所述的“MJRefresh在RxSwift中的使用”,在output中定义了一个变量letrefreshStatus=Variable<LXFRefreshStatus>(.none)复制controller通过output将其进行监听,从而当值发生变化时,controller就能实时获取当前应所处的刷新状态vmOutput.refreshStatu
如果你更新了WordPress最新版本的4.2版本,查看网页源代码你会发现WordPress会自动在head加载一段用于支持emjo表情的脚本(JS+CSS),对于大部分人来说,这个是十分鸡肋的功能,反而影响加载速度。原因分析脚本就是类似下面的代码:<scripttype="text/javascript"> window._wpemojiSettings={"baseUrl":"http:\/\/s.w.org\/images\/core\/emoji\/72x72\/","ext":".png","source":{"concatemoji":"http:\/\/devework.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.2"}}; !function(a,b,c){functiond(a){varc=b.createElement("can
作为IT人员,每天接触最多的办公设备可能就是电脑了,台式机、笔记本、各种Pad,非常"日常"的一个问题就是你下班了关电脑么?看到一些网友对这个问题的解答,"脑洞大开",直戳到我们,对我来说,我的Mac从来没关过机,都是用完了直接扣上盖,下次直接打开,除非放到没电,才会接电源重启。我的Windows机器,从来不关机,但是会选择"休眠",注意我说的是"休眠"不是"睡眠"。 关于"睡眠"和"休眠",现象很像,但是有区别。睡眠:睡眠状态下,电脑只会消耗很少的电量,电脑可更快启动,并且可以立即返回到离开的位置。因此,使用者不必担心由于电池电量耗尽而丢失内容,因为如果电池电量过低,Windows会自动保存你的所有内容并关闭电脑。休眠:休眠是专为笔记本电脑所设计的功能,可能并不适用于所有电脑。休眠选项所耗的电量少于睡眠选项,当再次启动电脑时,即可返回到休眠之前所进行的任务(尽管没有睡眠选项快)。用开车打个比方,睡眠相当于车打着火了,发动机在转,但挂空挡不踩油门,
目录简介AspectRatioFractionallySizedBox总结 简介 我们在构建UI的时候,为了适应不同的屏幕大小,通常需要进行一些自适应的配置,而最常见的自适应就是根据某个宽度或者高度自动进行组件的缩放。 今天要给大家介绍两个可以自动缩放的组件AspectRatio和FractionallySizedBox。 AspectRatio AspectRatio的目的就是将其child按比例缩放。 先来看下AspectRatio的定义: classAspectRatioextendsSingleChildRenderObjectWidget 复制 可以看到AspectRatio继承自SingleChildRenderObjectWidget,表示用来呈现一个singlechild。 AspectRatio需要的属性有两个,分别是aspectRatio和子元素child。 aspectRatio是一个double类型的数据,为了方便起见,我们一般使用比例的格式来进行表示,比如3.0/2.0等。 虽然我们知道3/2的结果是1.5,但是我们最好不要自行计算结果,因为使用3.0/2.0
我们 关于闭包,一个老僧长谈的话题;js的闭包俺将的比较多了,而且很详细,俺就不说了,可以看看之前的文章; 我们来对比一下c#中的闭包和js中的闭包; 先看我们的c#代码; staticList<Action>fn0() { intresult=0; List<Action>list=newList<Action>(); for(inti=0;i<10;i++) { result=i+1;//这样result相当于一个全局变量 Actionaction=()=> { Console.WriteLine(result); }; list.Add(action); } returnlist; } staticList<Action>fn1() { List<Action>list=newList<Action>(); for(inti=0;i<10;i++) { intresult=i+1;//这样相当于一个局部变量;for循环内部的变量; Actionaction=(
大家好,我是不才陈某~ 出现故障时,我们经常需要获取一次请求流程里的所有日志进行定位。 如果请求只在一个线程里处理,则我们可以通过线程ID来过滤日志,但如果请求包含异步线程的处理,那么光靠线程ID就显得捉襟见肘了。 华为IoT平台,提供了接收设备上报数据的能力,当数据到达平台后,平台会进行一些复杂的业务逻辑处理,如数据存储,规则引擎,数据推送,命令下发等等。由于这个逻辑之间没有强耦合的关系,所以通常是异步处理。如何将一次数据上报请求中包含的所有业务日志快速过滤出来,就是本文要介绍的。 1、正文 SLF4J日志框架提供了一个MDC(MappedDiagnosticContexts)工具类,谷歌翻译为映射的诊断上下文,从字面上很难理解,我们可以先实战一把。 publicclassMain{ privatestaticfinalStringKEY="requestId"; privatestaticfinalLoggerlogger=LoggerFactory.getLogger(Main.class); publicstaticvoidmain(String[]args){ //入口
attr给元素设置属性: $("#a_a").attr({src:"images/19.png",alt:"jquery增加alt属性"});//批量为元素设置src和alt属性$("#a_a").attr("src","5.png");//单独给元素设置属性$("#a_a").attr("title",function(){returnthis.src}); //把src属性的值设置为title属性的值。复制 jquery往元素里面添加节点元素: $("<div><p>Hello</p></div>").appendTo(".a_c"); 复制 jquery取第四个元素: <divclass="a_a">1111111</div> <divclass="a_a">22222</div> <divclass="a_a">3333333</div>
vi/etc/profile或者/etc/bashrcvi.bash_profile用户下的环境变量 exportJMETER_HOME=/root/apache-jmeter-5.0exportCLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:$CLASSPATHexportPATH=$JMETER_HOME/bin:$PATH:$HOME/bin exportJAVA_HOME=/root/jdk1.8.0_161exportJRE_HOME=${JAVA_HOME}/jreexportCLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATHexportJAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/binexportPATH=$PATH:${JAVA_PATH} source/etc/profile或者source/etc
回顾0 所属团队: 杨老师粉丝群 http://www.cnblogs.com/ylsfsq/ 团队项目: 项目名称:弹球学成语(Pinball) 项目链接:https://coding.net/u/wuyy694/p/pinball 在本课程(不包括本学期其他课程)中学习和使用的新软件新工具(全称、版本)及链接 Geany使用链接:https://geany.en.softonic.com AfterEffects使用链接:https://pan.baidu.com/s/1pLKCV3d (密码:kp68) 在本课程(不包括本学期其他课程)中学习、提高的语言、开发平台(全称、版本)及平台链接 语言:Python、C# 回顾一 (1)回想一下你曾经对计算机专业的畅想 当初你是如何做出选择计算机专业的决定的?经过一个学期,你的看法改变了么,为什么? 你认为过去接触到的课程是否符合你对计算机专业的期待,为什么?经过一个学期,你的看法改变了么,为什么? 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗?经
phpcmsv9和dedecms自带的编辑器都是使用的ckeditor,在默认情况下使用ckeditor编辑内容时,按下回车键后在源代码显示的是<br>而非<p>标签,对于习惯于换行为p标签的我来说极为不便。 phpcmsv9编辑器ckeditor设置回车换行<br>为段落<p>标签修改方法: 在\statics\js\ckeditor\config.js中查找config.enterMode找到如下代码(如上图中):config.enterMode=CKEDITOR.ENTER_BR;config.shiftEnterMode=CKEDITOR.ENTER_P; 将BR换为P,P换为BR或者其它标签。(如两个同时为P或BR,将出现错误并无法正常显示编辑框。) 另:dedecms的配置文件路径为\include\ckeditor\config.js设置方法一致。
原文链接:https://segmentfault.com/a/1190000008484167 Manacher算法(回文) 一:背景 给定一个字符串,求出其最长回文子串。例如: s="abcd",最长回文长度为1; s="ababa",最长回文长度为5; s="abccb",最长回文长度为4,即bccb。 以上问题的传统思路大概是,遍历每一个字符,以该字符为中心向两边查找。其时间复杂度为$O(n^2)$,效率很差。 1975年,一个叫Manacher的人发明了一个算法,Manacher算法(中文名:马拉车算法),该算法可以把时间复杂度提升到$O(n)$。下面来看看马拉车算法是如何工作的。 二:算法过程分析 由于回文分为偶回文(比如bccb)和奇回文(比如bcacb),而在处理奇偶问题上会比较繁琐,所以这里我们使用一个技巧,具体做法是:在字符串首尾,及各字符间各插入一个字符(前提这个字符未出现在串里)。 举个例子:s="abbahopxpo",转换为s_new="$#a#b#b#a#h#o#p#x#p#o#"(
WinMTR简易的Ping工具WinMTR是集成了tracert与ping这两个命令的图形界面工具,使用WinMTR可以直接的看到各个节点的响应时间及丢包率,适合windows下客户做路由追踪及PING测试,使用方法简单,WinMTR不需安裝,解压之后即可执行。iPerf网络吞吐量测试工具:使用iPerf可以进行网络吞吐量测试,iperf需要两个系统,因为一个系统必须充当服务端,另外一个系统充当客户端,客户端连接到需要测试速度的服务端。jPerf是基于iPerf开发的图形界面程序,简化了复杂命令行参数的构造,而且还能够保存测试结果,同时实时图形化显示结果。参考文章:https://www.jianshu.com/p/15f888309c72 https://www.cnblogs.com/xuanbjut/p/14144255.html科来网络分析系统功能较多,具体使用需要摸索一下,支持数据包的采集、过滤、分析。http://www.colasoft.com.cn/products/capsa.php
1.说明 这是一个基于JMeter官方的AggregateReport的监听器改进而来的监听器!!! 2.插件背景 早在很久之前,宝路就曾经改造过JMeter的AggregateReport的源码,建议大家先读下这两篇文章: 你真的了解JMeter聚合报告么 JMeter和LoadRunner的RT统计方式探究 3.插件原因 大概就在前几天,有很多同学私信宝路,有关我博文中的JMeter聚合报告源码优化的问题!其实一两句话也很难讲清楚!再结合最近宝路公众号发布的JMeter与LR的RT统计探究文章中提到的“我们常挂在嘴边谈论的RT”! 如果只改动源码的话,每当你升级JMeter版本后,需将改的代码重新移植到新版本JMeter!此时,把这些问题点进行优化做成一个插件更合适些!插件化才是我们的最终目的! 就这样!BaoluAggregateTPSReport插件诞生了!基于JMeter官方AggregateReport优化改造而来!给予文章赞赏的同学已经第一时间收到了v1.1.0插件下载链接!!!就在写此文章材料验证准备时,也发现了一些极端情况下RT统计异常的bug!目前已经修复
访问首页必须输入index.html文件名,直接访问域名无法打开 第一种方法,在主机管理平台设置,下面万网主机设置方法图 第二种方法,在网站根目录下创建web.config,并输入以下代码也可以设置默bai认首页。 <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <defaultDocument> <files> <clear /> <add value="index.html" /> </files> </defaultDocument> </system.webServer> </configuration> 复制
1.HibernateAnnotation关系映射有下面几种类型: 1)一对一外键关联映射(单向) 2)一对一外键关联映射(双向) 3)一对一主键关联映射(不重要)在这不演示 在实际中很少用,使用注解@PrimaryKeyJoinColumn 意思是说,我的主键去参考另外一张表中的主键,作为我的主键,但是在我测试使用 注解一对一主键关联映射,在生成表的时候,数据库中并没有生成关联,使用XML 映射可以生成。Annotation注解一对一主键关联映,有些bug。不过没空去研究它。 因为在实际开发中一对一很少用。在实际开发中我机会没有用过,主键关联就更少了 4)多对一关联映射 5)一对多关联映射(单向) 6)一对多关联映射(双向) 7)多对多关联映射(单向) 8)多对多关联映射(双向) 2.介绍各种映射用法 1)一对一外键关联映射(单向) @OneToOne(cascade=CascadeType.ALL) @JoinColumn(name="userid",unique=true) //一对一外键关联,使用@OneToOne,并设置了级联操作 //
1》如果是11G数据库,sql*plus登录的时候,可能爆出下面的错误。 $sqlplus/assysdba sqlplus:errorwhileloadingsharedlibrearies:/home/ora11g/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1:cannotrestoresegmentprotafterreloc:Permissiondenied 这个问题用以下两种解决方式: (1)直接使用root执行setenforce0或者在Linux界面关掉SELinux。 (2)在/etc/sysconfig/selinux中修改SELINUX=disabled,然后重启即可。 2》另外就是环境变量和profile失效导致不能sqlplus,简单在这里不做叙述。