p4

jquery和js原生代码的区别

徘徊边缘 提交于 2020-03-16 05:12:07
jQuery和JavaScript文档就绪函数 /** * 文档就绪函数:等待文档记载完毕,在执行相关代码 * 原生JS(JavaScript)方式:window.onload=funcation(){} * jquery方式:$(document).ready(funcation(){}); * * 区别: * * 1.执行时机: *原生JS(JavaScript)方式: window.onload:必须等待网页全部加载完毕(包括图片等),然后再执行包裹代码 * *jquery方式: $(document).ready():只需要等待网页中的DOM结构加载完毕,就能执行包裹的代码 * * * 2.执行次数 * 原生JS(JavaScript)方式:window.onload:不能同时编写多个,只能执行一次,如果第二次,那么第一次的执行会被覆盖 * jquery方式:$(document).ready():能同时编写多个 * * * 3.jquery方式简写方案 *$(document).ready(function() { *alert("Hello World!"); *}); *简写 * *$().ready(function () { * alert("Hello World!"); *}) * *$(function () { * alert("Hello World!"

请留意CPU带宽和内存带宽之间的匹配!别让内存拖CPU的后腿。

拟墨画扇 提交于 2020-03-04 12:12:56
http://bbs.xiyuit.com/thread-4143-1-1.html 请留意CPU带宽和内存带宽之间的匹配!别让内存拖CPU的后腿。 Intel的CPU,从P4开始就对内存带宽有一定要求,为什么当年Intel非要推RamBUS来搭配P4?就是因为SDRAM和DDR RAM都不足以满足P4的需求。 具体说一下,FSB为533的P4(外频为133),数据带宽需求为4.3GB/S(可以 这么粗略估算,CPU带宽=FSB×8),FSB800的P4带宽需求为6.4GB/s。 而同时期的DDR 400能提供的带宽也只有3.2GB/s(所以DDR400又叫PC3200内存,就是以带宽命名的),DDR266带宽为2.1GB/s,DDR333带宽为2.7GB/s,可见单根DDR内存满足不了FSB800的P4的需求,当CPU要数据时内存却传不过来足够的数据,造成CPU闲置。 所以Intel费劲功夫硬性推广RamBUS来搭配自家的P4。但无奈RamBUS成本和产能都摆在那里,成了曲高和寡的东西。不得已Intel舍弃850芯片组,重新推出的支持SDRAM的845芯片组来搭配P4,早期买P4的可能就是这种 主板 ,其实此时P4的性能被内存制约了。包括后来出的支持DDR单通道内存的845D、848等等芯片组,都没有完美解决问题。 后来出现了支持“双通道”的865芯片组才解决了问题

当P4的规则表中匹配域为ternary类型的时候如何下发规则?

喜欢而已 提交于 2020-01-28 05:29:57
在P4中给定以下规则表: table update_cntr1_t { reads { udp.srcport: ternary; } actions { update_cntr1; nop; } default_action: nop; } 我们希望在bfshell中给它下发一条规则,使得当掩码为0x00ff,匹配值为0x0011的时候执行动作update_cntr1,则可以使用如下命令: pd update_cntr1_t add_entry update_cntr1 udp_srcport 0x0011 udp_srcport_mask 0x00ff priority 1 其中使用priority关键字的依据是《The P4 Language Specification》(Version 1.0.5,November 26, 2018)的55页的这段话: ternary: A mask provided with each entry in the table. This mask is ANDed with the field value before a comparison is made. The field value and the table entry value need only agree on the bits set in the entry’s

java调用存储过程(stored procedures)的HelloWorld例子

╄→尐↘猪︶ㄣ 提交于 2020-01-06 17:03:33
1.java调用存储过程(stored procedures)的HelloWorld程序 有点数据 库基础的人都知道。存储过程(stored procedures)和java没什么关系。它是一段纯粹的数据库sql语言的程序,事先存储在数据库中。没有java程序调用,人家自己独立运行的也 挺好。现在的问题就是,你有一个java程序,你想调用现有的一段存储过程,如何做这件事儿?我们底下的实验就是先向数据库存进去一个名为p4的存储过 程,然后再编一段java程序去调用它。 以下就是我向我的数据库中,插入一个叫做p4的存储过程的截图。 下 面解释一下:delimiter是定义边界的意思。delimiter $就是定义$为边界。一个$和下一个$之间就像一个区域一样,在这个区域之间的东西才会被执行。mysql缺省默认来讲见到 ;就执行,但看到delimiter $ 以后,就只会忍饥挨饿盯着直到下一个$出现,才会执行两个$之间的命令。 最后的delimiter ; 就把分隔符从$换回到默认的 ;(注意 delimiter后边一定有一个空格) create procedure p4(OUT cnt int) --创建MySQL存储过程p4 --此存储过程的过程名是p4,该过程包含1个参数, --是输出类型的(以OUT标示),参数名是cnt,类型是int select count(*) into

P4-verilog实现mips单周期CPU

懵懂的女人 提交于 2019-12-05 02:54:46
最近对学习的掌控可能出现了问题,左支右绌,p2挂了,p2、p3、p4、p5每周在计组花的连续时间少了很多,学习到的东西也少了很多,流水线都还没真正开始写,和别人比落后了一大截,随笔自然就荒废了,我得尽快调整状态,下决心只要学不死,就往死里学,尽快迎头赶上鸭!! 由于p4断断续续做的,现在临考前来总结一下p4,顺便恢复一下记忆,对Verilog命名规范、p4设计CPU技巧、实现细节等等进行初步总结,如有不对烦请指正。 一、Verilog设计单周期CPU流程 由于p3和理论部分我们已经掌握了单周期CPU的理论知识,也对CPU的实现有形象化的认识。我们要做的就是“翻译”一遍。 我主要是先设计CPU文档,再用Verilog描述CPU。 1.画出 各个部件的端口及功能定义表 ,定义各个基础部件的端口,描述部件的功能。在这里我们不需要考虑部件功能的实现细节,只需要遵循高内聚低耦合的特点划分部件,将各个部件的功能描述清楚就可以了。 关于部件的划分,在这里我主要遵循高小鹏老师的《计算机组成与实现》,单独设计了NPC组合逻辑部件,将求beq,jal等跳转指令的地址都放到这里来,我认为在设计单周期CPU时会显得更加清晰,不容易出错。 关于各个部件的命名规范,我稍后再提。 大概表头设计如下: 2. 设计各条指令的数据通路 ,同时修正扩展第一步中相应模块的端口和功能。

OS计算题练习

ⅰ亾dé卋堺 提交于 2019-12-04 18:37:12
一、进程同步 1、 设有两个进程 P 、 Q , P 的优先级高于 Q ,同时进入就绪队列。各自运行的程序段如下所示: 进程 P 进程 Q P1 Y=12 Q1 X=18 P2 Y=A+Y Q2 A=X+A P3 P(S1) Q3 V(S1) P4 A=Y+X Q4 X=A+Y P5 V(S2) Q5 P(S2) P6 X=Y+A Q6 A=X-Y 其中 S1 、 S2 为信号量,初值为 0 ;已知 X 、 Y 、 A 为共享变量, X 的初值为 83 , Y 的初值为 35 , A 的初值为 38 ;若调度程序执行的策略为 抢占式优先权原则 ,试问: (1) 执行序列? (2) 变量 X 、 Y 、 A 的运行结果依次是? 解析: (1) 执行序列: P1 P2 P3 Q1 Q2 Q3 P4 P5 P6 Q4 Q5 Q6 (2) 运行结果: X=118 , Y=50 , A=68 执行序列 运行过程 P1 Y=12 P2 Y=A+Y=38+12=50 P3 P(S1),所以S1=-1<0,block Q1 X=18 Q2 A=X+A=18+38=56 Q3 V(S1),所以S1=0 ≤ 0,wake up,P>Q P4 A=Y+X=50+18=68 P5 V(S2),S2=1,go on P6 X=Y+A=50+68=118 Q4 X=A+Y=68+50=118同上 Q5 P

p4 上传常用命令

匿名 (未验证) 提交于 2019-12-02 23:47:01
使用p4 submit的时候先要做两件事: p4 opened // 查看当前已打开的文件 p4 diff // 目前编译的文件与库上的文件不同之处 p4 submit -d " commit " // 上传已经更改的文件 如果不小心把不应该打开的文件 p4 edit 了, 并且submit了,此时需要把误传的文件恢复到原来的版本并重新上传: (1) p4 filelog tb_env.sv // p4 filelog 可以查看 tb_env.sv的上传记录,包括版本号, 修改日期,修改人等 p4 filelog -m 5 tb_en.sv // 如果想看最近n次的上传记录, 加上参数 -m n , 当前命令是查看 tb_env.sv最新5次的上传记录 p4 sync tb_env.sv#52 // 上个命令最新版本是#55,我想把tb_env.sv 恢复到52版本,使用sync命令,【tb_env.sv 与 #52之间不能存在空格】, 刚才好奇,在tb_env.sv 与#52之间加了个空格 (p4 sync tb_env.sv #52) ,结果所有的文件都sync到了52版本,吓死宝宝了, 赶紧p4 sync 了一下,恢复到了最新版本。 此时再把想要恢复的文件 tb_env.sv submit 就可以了。 (2) 个人干了一件非常愚蠢的事,恢复文件时,凭借想象力手动恢复文件

Ubuntu 16.04 一键安装P4开发环境记录

試著忘記壹切 提交于 2019-12-01 07:46:33
写在最前 P4开发环境安装可采用 陈翔同学 的 一键安装脚本 : p4Installer p4c-bm是P4-14的编译器,p4c是现在主流P4-16的编译器,bmv2是支持P4运行的软件交换机 p4c-bm安装: 第一次运行卡住了,网络问题,ctrl c重来一遍 ok bmv2安装 根据后面的提示:ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. 应该是超时的问题,继续ctrl c重来一遍 ok p4c安装 前面要安装一系列依赖 protobuf安装很慢 boost也很慢 最后失败了 第二天继续 重新安装的时候遇到这个提示 修改后重新跑脚本 报了一些错 以上算是安装结束了。跑一个官方的教程来试试 在p4的github上将tutorials的内容git到本地,根据提示make运行,竟然报错了 后来建议git 其他分支,老版本使用sh脚本直接运行,而不用make。 我曾经下载过官网的p4开发环境的虚拟机镜像,果然最新的就是为官方准备的,自己装的并不是很友好。 下载重新试运行,还是报错了。。。。。。 原来是代码太久了,编译器已经更新换代了,看来还要改代码 in改为inout mark_to_drop();改成mark_to_drop

DC.p4: programming the forwarding plane of a data-center switch

时光总嘲笑我的痴心妄想 提交于 2019-11-30 12:23:17
Name of article:Dc. p4: Programming the forwarding plane of a data-center switch Origin of the article:Sivaraman A , Kim C , Krishnamoorthy R , et al. DC.p4: programming the forwarding plane of a data-center switch.[J]. 2015. ABSTRACT : program the forwarding plane of programmable packet processors P4编程语言最近被提出作为一种高级语言来编程 可编程分组处理器的转发平面 ,它跨越了从软件交换机到FPGA、NPU和可重构硬件交换机的范围。 本文提出了一个使用P4来表示数据中心交换机的转发平面行为的 案例 ,其功能可与目前在许多数据中心中发现的单芯片共享存储交换机相媲美。通过这个案例研究,我们可以了解特定的P4结构在建模特定数据中心交换机功能时是如何有用的。 我们还概述了需要添加到P4以支持数据中心交换机某些功能的其他语言结构,我们讨论了在这一过程中吸取的一些经验教训,并将这些经验总结为一个建议,说明P4在未来如何发展。 1. INTRODUCTION: with evolving

剑指offer 第25题 复杂链表的复制

血红的双手。 提交于 2019-11-29 19:51:57
描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路: 两次遍历: 第一次遍历:将新链表连起来,并将旧链表的node当作key,新链表的node当作value存入字典中 第二次遍历:将新链表的random指向字典中当前旧node的随机指向 代码: # -*- coding:utf-8 -*- # class RandomListNode: # def __init__(self, x): # self.label = x # self.next = None # self.random = None class Solution: # 返回 RandomListNode def Clone(self, pHead): # write code here h = RandomListNode(0) p1 = h p2 = pHead dic = {} while p2: cur = RandomListNode(p2.label) p1.next = cur p1 = p1.next dic[p2] = p1 p2 = p2.next p3 = h.next p4 = pHead while p4: p3