当前位置: 首页 > news >正文

《PCI Express体系结构导读》随记 —— 内容与作者简介

本书内容介绍

本书讲述了PCI与PCI Express总线相关的最为基础的内容,并介绍了一些必要的、与PCI总线相关的处理器体系结构知识,这也是本书的重点所在。深入理解处理器体系结构是理解PCI与PCI Express总线的重要基础。

读者通过对本书的学习,可超越PCI与PCI Express总线自身的内容,理解在一个通用处理器系统中,局部总线的设计思路与实现方法,从而理解其它处理器系统使用的局部总线。

本书适用于希望多了解一些硬件的软件工程师,以及希望多了解一些软件的硬件工程师,也可供电子工程和计算机类的研究生自学参考。

作者介绍

以下内容援引Sailing_W(王齐) 是谁?

他在博客上写过关于PC历史,PCIE,Cache 的一系列高质量文章。通过博文可知他是《PCI Express体系结构导读》一书的作者王齐。但是网上并查不到他的信息。

Sailing_W_浅谈CacheMemory,浅谈PCIe体系结构,浅谈PCIe体系结构-CSDN博客

我是通过《Linux PowerPC详解—核心篇》这本书认识王齐老师的,以下是我找到的多年前王老师背景自我介绍。

作者:ppx201
链接:https://www.zhihu.com/question/446456268/answer/1855257008
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

作者:王齐.

背景:大侠应邀来我司交流,遂作此文介绍自己;阅后深有感触,特向大侠申请以飨诸位。

儿时在天山脚下长大。记忆中的冬天总是伴着鹅毛般的大雪,飘落在山的南北,即便是到了盛夏,雪也不曾完全融去。待得晴日,从我家向北望去,总是能看见无际的雪山。前些年,去了一趟玉龙雪山,那里的风景很美,却不能引发我过多的关注。

还在懵懂间,我便上了学。小学和初中没有在我心中留下过多的记忆。在高中,教我数学的是彭老师也是我的班主任,教我语文的是钟老师。他们是一对夫妇,待我极好。我已有二十年没有与他们相见,仍怀感恩。

我的数学成绩一直不错,从高考到最后一次研究生入学考试期间,所有数学科目的成绩累计在一起也扣不了多少分。年轻人时经常引以为豪,后来与学专业数学的人接触多了,发现自己连基本的加减乘除也没有熟练掌握。细想起来,对数学的热爱,给予我最大的回报,是认识了现在的妻子。能与她在一起,是上天对我最大的恩德。

在1992年我开始上大学,在一所军事技术院校渡过,专业是计算机科学,大学毕业接着读了研究生,还是计算机专业。一年的基础课后,我剩余时间在一家军队研究所工作。这家研究所地处无锡,从我工作的地方向东西南三个方向都可以抵达太湖,向北是进城的路。那时工作得很辛苦,我今天习得的这些皮毛多与这段辛苦有关。当时国内没有实行双休日制度,周六是上班的。在这里,周日的上午还需要加班。我们极少进城,仅是往返车程就需要一个多小时。在休息时间异常珍贵的那段年月,浪费一个小时过于奢侈了。我们很快适应了这里,对发生在这里的一切习以为常。

在这里的生活工作如时钟般规律。住所,食堂和办公室间距离均不过百米,只要不去进城一切都很方便。早晨七点准时起床,步行吃早饭,步行去上班。我们所做的项目约有一千多人共同参与。即便是刚刚参加工作的我们,也需要用一个上午和其他部门的人开会讨论着各种问题。十二点下班用餐之后,我们总是抓紧时间午休。一天之中,下午两点,或者更迟一些才是属于自己的工作时间。下午的工作通常很忙碌。我们小组的主要任务是做一个用于IO处理的专用服务器,我们将其称为IO节点,这些IO节点将通过大规模的网络与运算节点互联。整个项目将由几千个运算节点和IO节点组成。

我很难忘记这段漫长的岁月。我在这里做的第一个课题是做一个基于PCI总线的光纤适配卡,负责PCI总线和光纤接口部分的FPGA逻辑设计。从现在的技术来看,这是一个没有太大难度的课题。而将时光推移到1997年,这个任务并不容易完成。当时有一个资深工程师一直在指导我做这些工作。军队研究所这个传帮带的传统被华为演绎得淋漓尽致。至今在华为的最顶层建筑中有相当多的人来自军队。

在这里加班是一个常态,即使是按照规定,晚上8:00到10:30也是工作时间。我们总能苦中为乐,一天之中最惬意的时间是下午6:00到晚上8:00,我们不是在操场打球,就是邀几个好友打桥牌。当时的军队研究所多有打桥牌的传统。

年轻的时光总是值得回忆,先后在这里做了许多项目。第一个项目很快结束了,之后陆续做着一些与处理器相关的项目。当时我们并没有自己做处理器,而是选用了DEC的Alpha 21264,主桥是21272。在当时Alpha系列处理器是巨型机中的首选处理器,Alpha系列处理器的性能和设计复杂程度较为明显的超过当时的同类产品。

我们组除了要设计一块基于Alpha21264的IO处理器之外,还需要设计网络和盘阵接口部分,这部分设计需要使用一些专用的ASIC。我们有时也需要设计PCB板,这些任务我参与的相对较少。这时起,我开始在工作中而不是从课本中学习计算机体系结构,学习那些与处理器流水线和Cache Memory系统相关的知识。

这个项目历时了很长一段时间,我们除了日常的IC Design工作,也学习操作系统,偶尔写几个驱动程序,修改操作系统内核代码。除了学习与工作直接相关的OSF操作系统之外,我与几个同事共同研究Linux,我们也是国内较早接触Linux的一些人。年轻时有用不完的精力,我们总想着多学习一些知识。

时间过得很快,总有曲终人散。我选择离开军队。这个选择很艰难,实施的过程更加艰难。当时部队研究所的待遇很差,在我之前有无数人提出了这个申请。我至今不知道离开部队是否一定是正确的选择。所有选择都是基于当时的认知,一经决定容不得一丝犹豫。

也许是命中有贵人相助,与他人相比我的专业过程异常顺利。我于2002年离开了部队。近些年我的部分同事和同学们也陆续离开了军队,这些人多数散布在政府机关公务员系统。也有部分人选择了创业。我加入了摩托罗拉半导体,就是今天的飞思卡尔。

加入摩托罗拉半导体后,前后参加了两个与IC Design相关的项目,一个是将Coldfire微架构与802.11b MAC进行集成,另一个是与802.11g MAC进行集成,这两个项目在香港设计。我有近一年的时间频繁穿梭于香港,深圳和上海之间。

不到半年的时间里,我们取消了802.11b的集成工作,之后改做集成802.11g。我仍记得在当年写工作总结时的情景。在总结中我写道我们Terminate了这个项目。香港老板帮我改了改,告诉我说这个项目不是被Terminate了,而是Upgrade到了802.11g。半年之后802.11g的集成工作已经没有地方再去Upgrade,只能被Terminate了。我头一次体会到即便是尽自己全力也无法改变项目最终命运的辛酸。许多资深的员工告诉我这些很正常,在摩托罗拉,失败的项目从数量上远远超过成功的项目。

在香港的IC Design中心很快解散了。我回到摩托罗拉北京选择了一份和Linux有关的工作,这已是2003年的9月。十一长假过后,我在10月8日刚上班的时候得知正式通知,摩托罗拉已经将半导体部门分离出去。新浪在十月七日就发布了这个消息,我们作为摩托罗拉的员工对自己公司的消息远没有新浪灵通。

分离后的公司有个临时名字叫SPSSpinco,后来改名叫飞思卡尔。名字的变革意味着许多。我们从此开始有了飞思卡尔的员工,许多从摩托罗拉加入飞思卡尔的员工多少有些怅然若失。分离后飞思卡尔的业绩还不错,那一年摩托罗拉的业绩也很不错,其总收入甚至还超过了半导体部门还在的年头,华尔街也借此证实了半导体部门确实是摩托罗拉的负担。

此刻我逐渐感受到在外企中国做研发的无奈。我们承接的许多项目只是试探性质。这种试探性的研发对于多数中国工程师是一个无奈的选择,我们被迫接收这种无奈。我们明白即便与美国同事没有文化与语言等等的一系列障碍,他们也不会把产品命脉给予这里,况且许多外企中国的队伍也没有做好这些试探性的研发。中华大地,本不缺乏人才,只是没有用好。在中国外企,许多Talent被一些垃圾项目荒废了,这是一个很严肃的问题。

许多中国外企的项目经理真正精通的是ABC,也只是流利,达意。我见过许多在中国外企工作了十年以上的工程师,真正的研发造诣可能只有两三年。在北京,做了几个和Linux PowerPC相关的BSP后,我准备离开研发团队。我和当时的老板说,我只恨自己的时间太少,恨中国并不强大。离开研发团队后,我加入了Sales部门。此后我一直在这个部门工作,直到离开飞思卡尔。

在Sales部门的工作与华为交往最多,也因此认识了许多新的朋友。这个公司是我除了工作学习之外的,朋友最多的地方。与他们的合作中,我学会了很多在中国外企研发团队中不可能学会的知识,总结了一些PowerPC处理器和Linux相关的内容,书写了《Linux PowerPC详解—核心篇》这本书籍,这本书关注于PowerPC微架构和Linux操作系统本身。

我坚持写完这本书,不想花费了两年半的时间,倘若一开始就知道写书如此艰辛,我必会放弃。写这本书我最大的成就是完稿时,我体会到了重来都没有感受过的平静。这本书出版后,我发现了很多不足,很多内容并不准确,我有计划更新这部分内容,却事与愿违。

完成第一本著作后,我还准备书写《Linux PowerPC详解—应用篇》,当时想写处理器总线和网络这两部分。这本书几乎完成了一半。没有完成另一半的书写不是因为我的懒惰,只是我的身体无法支撑,每天下班后继续用四个小时以上的时间坚持写作。另一个重要的原因是我尚未完成这本书的初稿,便已离开了飞思卡尔。

我至今仍记得离开时的情景,正是在那一周我国西南的汶川发生了强烈地震。

加入英特尔的过程非常偶然。出乎所有人的意料之外,我加入了这个公司的技术团队,负责Linux架构方面的工作。这与飞思卡尔Sales团队多数人的选择不同。我始终对技术工作难以忘怀。在Sales团队工作时,技术层面的事情也未曾懈怠。在书写那些书籍的过程中,亲力亲为,从原理图设计,Bootloader程序到Linux BSP的移植重头做了一遍,最终做出了基于一些PowerPC的参考板和若干参考设计。

在参考板的设计中,元器件的采购最为繁琐。幸运的是,摩托罗拉半导体进入中国非常早,也是一所大学校。我的许多同事朋友如同蒲公英的种子,已遍布在各大半导体公司中,东借几个样片,西凑几个电阻电容,元器件倒是没有什么投入。真正投入的是时间与心血。

在英特尔的工作,并不比摩托罗拉繁忙。我们组从Moblin,Meego到Tizen一路做过来,终极目标是将其用于手机。这些努力是否能够获得最终的胜利,尚无定论。Moblin是英特尔自己做的,基于Open Source开发模式。Meego是英特尔与诺基亚一道做的,后来随着诺基亚与微软的合作而告终结。Tizen在与三星合作。

这些是我在Intel的部分工作,另一部分与处理器体系结构相关。加入Intel的第一件事情是梳理了x86微架构的历史,先后阅读了近万页的x86处理器数据手册,将一些简单的心得体会罗列出来,就是我在开源杂志中的名为《PC的足迹》的这篇文章。

随后我将尚未完成的《LinuxPowerPC详解—应用篇》书稿的部分内容取出,我不喜欢半途而废,却不能身在英特尔去书写与飞思卡尔相关的书籍。PCI Express总线是英特尔的重心所在。我向朋友借了一块Virtex V5的开发板,利用LogiCORE实现了一个Ring-Buffer的DMA数据传送机制,最后完成了《PCI Express体系结构导读》这本书籍的初稿。

将此书交付机械工业出版社已是2009年的冬季。还有一篇文章已在我心中酝酿多时,回想建国以来的艰辛,到今日的种种不合理,心中总有一股不平之气。几天时间写完了《又逢己丑》,发表在我的博客中。这并不是一篇技术文章,我觉得在今天的中国,有些问题如果不得已妥善解决,所谓技术报国只是一个美丽的梦想。

在2010年,ARM的Cortex系列微架构异军突起,电子信息领域正式进入Mobile Era。英特尔面临着前所未有的挑战。是x86还是ARM,没有人能够回答这个问题。历时三个月,分析了从ARM1开始直到Cortex A15微架构之后,书写了《ARM与x86》这篇文章,最初发表在我的博客中,后来被弯曲评论转载。

也是这个原因,我与弯曲评论的陈怀临先生的交往逐渐多了起来,我认识他已经很长时间了。我们聊着各种各样的话题,最多的依然是技术。当时我的专注点依然在处理器微架构,他已经开始创业,做互联网中的应用了。

在微架构中有两个较为复杂的问题,一个是指令流水线,另一个是Cache Memory系统。指令流水线的设计基本上是Superscalar与OOO执行的组合,自Tomasolu算法提出后,很少有质的变化。我选择研究Cache Memory系统。我对Cache Memory系统并不陌生,也做过一些与此相关的小设计。待到动笔时却方显艰难。在阅读了近千篇论文之后,我发现之前对Cache Memory系统的无知,很谨慎地写出《浅谈Cache Memory》,最初的版本是0.01。这篇文章率先发表在弯曲评论。我一直都计划将其更新至1.0,并正式出版,却一直抽不出整块的时间。在不远的将来,这个心愿终究会完成。

在英特尔的另一段时间,需要与华为相处。我与华为有难解之缘,即便在英特尔的研发部门,仍然也有部分时间与他们打交道。向他们推广x86处理器也是作为英特尔员工的责任,不容推却。

在这段时间里,认识了英特尔内部许多极有天分的同事,我们凭借着对处理器,网络,系统总线和对客户的理解,销售与技术团队其利断金。我们一道解决了许多问题,克服了许多困难,在华为的许多项目中战胜了多核MIPS的挑战,获得了一些Design Win。

Sandy Bridge处理器与PCI Express总线也逐渐成为华为网络基础设施中不可或缺的重要组成部分。这些谈不上是成就,只是一些琐事,慢慢记录下来。岁月一天天过去,已经到了看见他人年轻真心羡慕的年纪。心中却尚有未了心愿,遂有此篇。

相关文章:

《PCI Express体系结构导读》随记 —— 内容与作者简介

本书内容介绍 本书讲述了PCI与PCI Express总线相关的最为基础的内容,并介绍了一些必要的、与PCI总线相关的处理器体系结构知识,这也是本书的重点所在。深入理解处理器体系结构是理解PCI与PCI Express总线的重要基础。 读者通过对本书的学习&#xff0c…...

C#字典和列表转LuaTable

C#字典和列表转LuaTable 将C#Dictionary转成luaTable将C#List转成luaTable 将C#Dictionary转成luaTable function DicToLuaTable(Dic)--将C#的Dic转成Lua的Tablelocal dic {}if Dic thenlocal iter Dic:GetEnumerator()while iter:MoveNext() dolocal k iter.Current.Keylo…...

动态内存管理(1)

目录 ​​​​​​​ 1. 为什么存在动态内存分配 2. 动态内存函数的介绍 2.2 calloc 2.3 realloc 3. 常见的动态内存错误 3.1 对NULL指针的解引用操作 3.2 对动态开辟空间的越界访问 3.3 对非动态开辟内存使用free释放 3.4 使用free释放一块动态开辟内存的一部分 3.5 对同一块动…...

ThunderSearch(闪电搜索器)_网络空间搜索引擎工具_信息收集

文章目录 ThunderSearch简介1 项目地址2 使用方式2.1 配置文件config.json说明2.2 构建和运行 3 使用式例 ThunderSearch简介 ThunderSearch(闪电搜索器)是一款使用多个(【支持Fofa、Shodan、Hunter、Zoomeye、360Quake网络空间搜索引擎】网络空间搜索引…...

Topaz Video AI 视频修复工具(内附安装压缩包win+Mac)

目录 一、Topaz Video AI 简介 二、Topaz Video AI 安装下载 三、Topaz Video AI 使用 最近玩上了pika1.0和runway的图片转视频,发现生成出来的视频都是有点糊的,然后就找到这款AI修复视频工具 Topaz Video AI。 一、Topaz Video AI 简介 Topaz Video…...

android内存管理机制概览

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、相关概念3.1 垃圾回收3.2 应用内存的分配与回…...

下载MySQL Connector/C++

MySQL :: Download Connector/C...

ai gpt 鸡皮剔提问技巧

请将如下AB两组信息逐个匹配上的进行同类归类,用json格式输出: A:苹果 电脑 汽车 B: 猕猴桃 笔记本 根据你的要求,逐个匹配 A 组和 B 组的元素,并以 JSON 格式输出同类的归类信息: json { "匹配信息"…...

详谈 springboot整合shiro

背景: 本章将进一步的落地实践学习,在springboot中如何去整合shrio,整个过程步骤有个清晰的了解。 利用Shiro进行登录认证主要步骤: 1. 添加依赖:首先,在pom.xml文件中添加Spring Boot和Shiro的相关依赖…...

备忘录模式(Memento)

备忘录模式(Memento Pattern)是一种行为型设计模式,允许在不破坏封装的前提下捕获并保存一个对象的内部状态,以便在以后可以将该对象恢复到原先保存的状态。 备忘录模式通常涉及以下几个角色: 发起人(Originator):创建一个含有其当前状态的备忘录对象,并可以使用备忘录…...

【RocketMQ每日一问】consumeGroup心跳内容是什么样的?

消费者组:消费者所在的消费者组名称。这个信息用于确保同一个消费者组内的消费者不会重复地消费相同的消息。MessageModel:消息模型,可能的值为集群消费或广播消费。ConsumeType:消费类型,可能的值有"主动消费&qu…...

yolov5知识蒸馏

参考代码:https://github.com/Adlik/yolov5 https://cloud.tencent.com/developer/article/2160509 yolov5间的模型蒸馏,相同结构的。 配置参数 parser.add_argument(--t_weights, typestr, default./weights/yolov5s.pt,helpinitial teacher model wei…...

HUAWEI华为笔记本电脑MateBook D 14 2022款 i5 集显 非触屏(NbDE-WFH9)原装出厂Windows11系统21H2

链接:https://pan.baidu.com/s/1-tCCFwZ0RggXtbWYBVyhFg?pwdmcgv 提取码:mcgv 华为MageBookD14原厂WIN11系统自带所有驱动、出厂状态主题壁纸、Office办公软件、华为电脑管家、华为应用市场等预装软件程序 文件格式:esd/wim/swm 安装方式…...

微服务-springcloud(eureka实践, nacos实践)

Spring 体系图 版本关系 eureka 实践 1 父工程依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.14</version> </parent> <dependencyManage…...

Hadoop入门学习笔记——五、在虚拟机中部署Hive

视频课程地址&#xff1a;https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接&#xff1a;https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记&#xff08;汇总&#xff09; 目录 五、在虚拟机中部署Hive5.1. 在node1虚拟机安装MySQL5.2.…...

用Nest 实现大文件分片上传,加速工作效率神器

文件上传是常见需求&#xff0c;只要指定 content-type 为 multipart/form-data&#xff0c;内容就会以这种格式被传递到服务端&#xff1a; 服务端再按照 multipart/form-data 的格式提取数据&#xff0c;就能拿到其中的文件。 但当文件很大的时候&#xff0c;事情就变得不一样…...

将ncnn及opencv的mat存储成bin文件的方法

利用fstream&#xff0c;将ncnn及opencv的mat存储成bin文件。 ncnn::Mat to bin std::ios::binary标志指示文件以二进制模式进行读写&#xff0c; std::ofstream file("output_x86.bin", std::ios::binary); 将input_mat中的宽、高和通道数分别赋值给width、heig…...

dpdk原理概述及核心源码剖析

dpdk原理 1、操作系统、计算机网络诞生已经几十年了&#xff0c;部分功能不再能满足现在的业务需求。如果对操作系统做更改&#xff0c;成本非常高&#xff0c;所以部分问题是在应用层想办法解决的&#xff0c;比如前面介绍的协程、quic等&#xff0c;都是在应用层重新开发的框…...

VTK+QT配置(VS)

先根据vtk配置这个博客配置基本环境 然后把这个dll文件从VTK的designer目录复制到qt的对应目录里 记得这里是debug版本&#xff0c;你也可以配置release都一样的步骤&#xff0c;然后建立一个qt项目&#xff0c;接着配置包含目录&#xff0c;库目录&#xff0c;链接输入&…...

5G边缘计算:解密边缘计算的魔力

引言 你是否曾想过&#xff0c;网络可以更贴心、更智能地为我们提供服务&#xff1f;5G边缘计算就像是网络的小助手&#xff0c;时刻待命在你身边&#xff0c;让数字生活变得更加便捷。 什么是5G边缘计算&#xff1f; 想象一下&#xff0c;边缘计算就像是在离你最近的一层“云…...

Sentinel 流量治理组件教程

前言 官网首页&#xff1a;home | Sentinel (sentinelguard.io) 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形…...

C语言第五十九弹---介绍说明内存函数memcmp

使用C语言介绍说明内存函数memcmp memcmp是C语言标准库中的一个函数&#xff0c;用于比较两个内存区域的内容是否相同。 源代码&#xff1a; int memcmp(const void* ptr1, const void* ptr2, size_t num);ptr1和ptr2分别是要比较的两个内存区域的指针&#xff0c;num是要比较…...

jar混淆,防止反编译,Allatori工具混淆jar包

文章目录 Allatori工具简介下载解压配置config.xml注意事项 Allatori工具简介 官网地址&#xff1a;https://allatori.com/ Allatori不仅混淆了代码&#xff0c;还最大限度地减小了应用程序的大小&#xff0c;提高了速度&#xff0c;同时除了你和你的团队之外&#xff0c;任何人…...

linux中批量将HEIC转jpg

苹果目前已大量使用HEIC格式的照片&#xff0c;虽然上传到Windows系统的时候是会自动转为jpg的&#xff0c;但也经常会在很多场景中保留了HEIC格式&#xff0c;前两天就收到了一大堆HEIC文件&#xff0c;window10里都打不开&#xff0c;照片的插件是需要付费下载的&#xff0c;…...

听GPT 讲Rust源代码--src/tools(25)

File: rust/src/tools/clippy/clippy_lints/src/methods/suspicious_command_arg_space.rs 在Rust源代码中&#xff0c;suspicious_command_arg_space.rs文件位于clippy_lints工具包的methods目录下&#xff0c;用于实现Clippy lint SUSPICIOUS_COMMAND_ARG_SPACE。 Clippy是Ru…...

一款C++编写的数据可视化库Matplot++

它是基于著名的 Matplotlib 库&#xff08;Python 中广泛使用的绘图库&#xff09;构建的&#xff0c;旨在提供类似于 Matplotlib 的功能&#xff0c;但专门为 C 设计。Matplot 支持多种图表类型&#xff0c;包括线图、散点图、条形图、直方图、误差线图等&#xff0c;使数据可…...

paddle 56 将图像分类模型嵌入到目标检测中并实现端到端的部署(用图像分类模型进行目标检测切片分类)

目标检测在功能上一直是涵盖了图像分类的,其包含目标切片检测,目标切片分类。由于某些原因,需要将目标检测的功能退化为检测,忽略其切片分类,使用外部的分类模型。然而这样操作会使得其与原始的部署代码不兼容,为此博主实现将图像分类模型嵌入到目标检测中,并实现端到端…...

SQL手工注入漏洞测试(MySQL数据库)

一、实验平台 https://www.mozhe.cn/bug/detail/elRHc1BCd2VIckQxbjduMG9BVCtkZz09bW96aGUmozhe 二、实验目标 获取到网站的KEY&#xff0c;并提交完成靶场。 三、实验步骤 ①、启动靶机&#xff0c;进行访问查找可能存在注入的页面 ②、通过测试判断注入点的位置(id) (1)…...

JAVA WEB用POI导出EXECL多个Sheet

前端方法&#xff1a;调用exportInfoPid这个方法并传入要查询的id即可&#xff0c;也可以用其他参数看个人需求 function exportInfoPid(id){window.location.href 服务地址"/exportMdsRoutePid/"id; } 后端控制层代码 Controller Scope("prototype") R…...

@RequestBody详解:用于获取请求体中的Json格式参数

获取请求体中的Json格式参数 &#xff08;RequestBody&#xff09; 当前端将一些比较复杂的参数转换成Json字符串通过请求体传递过来给后端&#xff0c;这种时候就可以使用RequestBody注解获取请求体中的数据。 而json字符串是包含在请求体中的&#xff0c;使用请求体传参通常…...

AI日报:2024年人工智能对各行业初创企业的影响

欢迎订阅专栏 《AI日报》 获取人工智能邻域最新资讯 文章目录 2024年人工智能对初创企业的影响具体行业医疗金融服务运输与物流等 新趋势 2024年人工智能对初创企业的影响 2023年见证了人工智能在各个行业的快速采用和创新。随着我们步入2024年&#xff0c;人工智能初创公司正…...

QAM 归一化因子

文章目录 前言一、归一化1、作用2、OFDM 归一化因子 二、归一化因子公式 前言 在做通信系统仿真时&#xff0c;遇到了 QAM 归一化因子的求解&#xff0c;对这里不是很清楚&#xff0c;因此本文对 QAM&#xff08;正交振幅调制&#xff09;归一化因子学习做了一下记录。 一、归…...

PoE交换机传输距离是多少?100米?250米?

你们好&#xff0c;我的网工朋友。 今天和你聊聊PoE交换机&#xff0c;之前有系统地给你讲解过一篇&#xff0c;可以先回顾一下哈&#xff1a;《啥样的交换机才叫高级交换机&#xff1f;这张图告诉你》 为什么都说PoE交换机好&#xff1f;它最显著的特点就是&#xff1a; 可…...

Jenkins Pipeline脚本优化:为Kubernetes应用部署增加状态检测

引言 在软件部署的世界中&#xff0c;Jenkins已经成为自动化流程的代名词。不断变化的技术环境要求我们持续改进部署流程以满足现代应用部署的需要。在本篇博客中&#xff0c;作为一位资深运维工程师&#xff0c;我将分享如何将Jenkins Pipeline进化至不仅能支持部署应用直至R…...

R语言基础 | 安徽某高校《统计建模与R软件》期末复习

第一节 数字、字符与向量 1.1 向量的赋值 c<-(1,2,3,4,5) 1.2 向量的运算 对于向量&#xff0c;我们可以直接对其作加&#xff08;&#xff09;&#xff0c;减&#xff08;-&#xff09;&#xff0c;乘&#xff08;*&#xff09;&#xff0c;除&#xff08;/&#xff09…...

深度神经网络下的风格迁移模型(C#)

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 这个是C#版本的&#xff0c;这里就只放出代码。VB.Net版本请参看 深度神经网络下的风格迁移模型-CSDN博客 斯坦福大学李飞飞团队的…...

Linux部署MeterSphere结合内网穿透实现远程访问服务管理界面

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 前言 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&am…...

MyBatis见解4

10.MyBatis的动态SQL 10.5.trim标签 trim标签可以代替where标签、set标签 mapper //修改public void updateByUser2(User user);<update id"updateByUser2" parameterType"User">update user<!-- 增加SET前缀&#xff0c;忽略&#xff0c;后缀…...

Linux操作系统——进程(三) 进程优先级

进程优先级 首先呢&#xff0c;我们知道一个进程呢&#xff08;或者也可以叫做一个任务&#xff09;&#xff0c;它呢有时候要在CPU的运行队列中排队&#xff0c;要么有时候阻塞的时候呢又要在设备的等待队列中排队&#xff0c;其实我们排队的本质就是&#xff1a;确认优先级。…...

插入排序详解(C语言)

前言 插入排序是一种简单直观的排序算法&#xff0c;在小规模数据排序或部分有序的情况下插入排序的表现十分良好&#xff0c;今天我将带大家学习插入排序的使用。let’s go ! ! ! 插入排序 插入排序的基本思想是将待排序的序列分为已排序和未排序两部分。初始时&#xff0c…...

Json和Xml

一、前言 学习心得&#xff1a;C# 入门经典第8版书中的第21章《Json和Xml》 二、Xml的介绍 Xml的含义&#xff1a; 可标记性语言&#xff0c;它将数据以一种特别简单文本格式储存。让所有人和几乎所有的计算机都能理解。 XML文件示例&#xff1a; <?xml version"1.…...

STM32 支持IAP的bootloader开发,使用串口通过Ymodem协议传输固件

资料下载: https://download.csdn.net/download/vvoennvv/88658447 一、概述 关于IAP的原理和Ymodem协议&#xff0c;本文不做任何论述&#xff0c;本文只论述bootloader如何使用串口通过Ymodem协议接收升级程序并进行IAP升级&#xff0c;以及bootloader和主程序两个工程的配置…...

【SVN】centos7搭建svn--亲测能通

centos7.6搭建svn 1 知识小课堂1.1 CentOS1.2 SVN 2 搭建过程2.1 前期准备2.2 通过yum命令安装svnserve2.3 创建版本库目录2.4 创建svn版本库2.5 配置修改2.5 防火墙配置2.6 启动或关闭svn服务器2.6.1 进程守护2.6.2 检测svn端口3690是否已经监听&#xff1a;2.6.3 关闭SVN 2.7…...

MY FILE SERVER: 1

下载地址 https://download.vulnhub.com/myfileserver/My_file_server_1.ova 首先我们需要发现ip 我的kali是59.162所以167就是靶机的 然后我们拿nmap扫一下端口 nmap -sV -p- 192.168.59.167 扫完发现有七个端口开放 按照习惯先看80 没看到有啥有用信息,用nikto扫一下 nik…...

Day70力扣打卡

打卡记录 收集足够苹果的最小花园周长&#xff08;找规律 二分&#xff09; 链接 class Solution:def minimumPerimeter(self, neededApples: int) -> int:l, r 1, 10 ** 5while l < r:mid (l r) >> 1if 2 * (2 * (mid ** 3) 3 * (mid ** 2) mid) > nee…...

3. 行为模式 - 迭代器模式

亦称&#xff1a; Iterator 意图 迭代器模式是一种行为设计模式&#xff0c; 让你能在不暴露集合底层表现形式 &#xff08;列表、 栈和树等&#xff09; 的情况下遍历集合中所有的元素。 问题 集合是编程中最常使用的数据类型之一。 尽管如此&#xff0c; 集合只是一组对象的…...

rsync文件同步

场景&#xff1a;主要是用来发布文件。 一、rsync服务器端架设 1、安装 wget https://download.samba.org/pub/rsync/src/rsync-3.0.6.tar.gz tar -zxvf rsync-3.0.6.tar.gz ./configure --prefix/usr/local/rsync make make install 2、配置 2.1、配置rsyncd.conf 不存在…...

docker 安装mysql 8.0.35

1.拉取镜像 docker pull mysql:8.0.35 2.创建相关挂载目录与文件 mkdir -p /opt/mysql8/conf mkdir -p /opt/mysql8/data mkdir -p /opt/mysql8/logs 或者:mkdir -p /opt/mysql8/{data,conf,logs,mysqld,mysql-files} 文件与文件夹授权:chmod -R 775 /opt/mysql8/* 3.运…...

力扣labuladong一刷day46天并查集

力扣labuladong一刷day46天并查集 文章目录 力扣labuladong一刷day46天并查集一、323. 无向图中连通分量的数目二、130. 被围绕的区域三、990. 等式方程的可满足性 一、323. 无向图中连通分量的数目 题目链接&#xff1a;https://leetcode.cn/problems/number-of-connected-co…...

C++11(上):新特性讲解

C11新特性讲解 前言1.列表初始化1.1{ }初始化1.2std::initializer_list 2.类型推导2.1 auto2.2 typeid2.3 decltype 3.范围for4.STL的变化4.1新容器4.2容器的新方法 5.右值引用和移动语义5.1 左值引用和右值引用5.2 左值引用与右值引用比较5.3 右值引用的使用场景5.4 右值、左值…...