tag 标签: 存储

相关帖子
相关博文
  • 2024-4-16 17:00
    90 次阅读|
    0 个评论
    ROM、RAM、DRAM和SRAM都是计算机存储技术的术语,它们代表了不同类型的存储器,各自有不同的特性和用途: ROM(Read-Only Memory,只读存储器) ROM是一种非易失性存储器,意味着即使在断电的情况下,存储在其中的数据也不会丢失。ROM中的数据通常在制造过程中就被写入,或者通过特殊的编程过程写入后不再改变。ROM用于存储固定的程序或数据,例如计算机的引导程序(BIOS)和嵌入式系统中的固件。 RAM(Random Access Memory,随机存取存储器) RAM是计算机的主内存,用于临时存储正在运行的程序和当前使用的数据。它是易失性的,意味着一旦断电,存储在其中的数据就会丢失。RAM允许数据的读写操作,且读写速度非常快,使得计算机能够快速处理信息。由于RAM的这些特性,它对于计算机的性能至关重要。 DRAM(Dynamic Random Access Memory,动态随机存取存储器) DRAM是RAM的一种类型,它使用电容来存储每一位数据。由于电容会随时间慢慢放电,因此DRAM需要定期刷新(重新充电)来保持数据的完整性。尽管DRAM需要刷新,但它仍然是最常见的RAM类型,因为它的成本相对较低,而且集成度高,可以制造出较大容量的内存模块。 SRAM(Static Random Access Memory,静态随机存取存储器) SRAM也是一种RAM类型,与DRAM不同,SRAM使用触发器(一组逻辑门)来存储每一位数据。SRAM不需要刷新就能保持数据,因此速度比DRAM快,但成本更高,且集成度较低,通常用于小容量的高速缓存(如CPU的L1、L2缓存)。SRAM也是非易失性的,但通常容量较小,因为它的成本较高。 总结来说,ROM是非易失性存储器,用于存储不变的数据和程序;RAM是计算机的主内存,用于临时存储和快速处理数据;DRAM是RAM的一种,使用电容存储数据,需要刷新;SRAM是另一种RAM,使用触发器存储数据,速度快但成本高,常用于高速缓存。这些存储器在计算机系统中各自扮演着重要的角色,共同确保了计算机的正常运行和性能表现。 文章来源:晶格半导体 原文作者:晶格半导体 本文介绍了四种不同类型的存储器。
  • 2024-3-7 18:04
    140 次阅读|
    0 个评论
    前言 NAND Flash 和 NOR Flash是现在市场上两种主要的闪存技术。Intel于1988年首先开发出 NOR Flash 技术,彻底改变了原先由 EPROM 和 EEPROM 一统天下的局面。紧接着,1989年,东芝公司发表了 NAND Flash 结构,后者的单元电路尺寸几乎只是 NOR 器件的一半,可以在给定的芯片尺寸内提供更高的容量,也就相应地降低了价格。 1.NAND Flash ROM NAND Flash ROM 应该是目前最热门的存储芯片了。因为我们生活中经常使用的电子产品都会涉及到它。比如你买手机,肯定会考虑64GB,还是256GB?买笔记本是买256GB,还是512GB容量的硬盘呢?(目前电脑大部分采用了基于 NAND Flash 产品的固态硬盘)。 2.NOR Flash ROM NOR Flash ROM 的特点是以字节为单位随机存取。这样,应用程序可以直接在 Flash ROM 中执行,不必再把程序代码预先读到 RAM 中。NOR Flash ROM 的接口简单,与通常的扩展存储器一样,可以直接连接到处理器的外围总线上。 与 NOR Flash ROM 相比, NAND Flash ROM 以页(行)为单位随机存取,在容量、使用寿命和成本方面有较大优势。但是它的读出速度稍慢,编程较为复杂,因此大多作为数据存储器使用。嵌入式产品中包括数码相机、MP3 随身听记忆卡、体积小巧的U盘等均采用 NAND Flash ROM 。 在存储结构上,NAND Flash 内部采用非线性宏单元模式,全部存储单元被划分为若干个块(类似于硬盘的,一般为8 KB),这也是擦除操作的基本单位。进而,每个块又分为若干个大小为512 B的页,每页的存储容量与硬盘每个扇区的容量相同。也就是说,每页都有512条位线,每条位线连接一个存储元。此时,要修改 NAND 芯片中一个字节,就必须重写整个数据块。当Flash 存储器的容量不同时,其块数量以及组成块的页的数量都将不同。相应地,地址信息包括了列地址、块地址以及相应的页面地址。这些地址通过8位总线分组传输,需要多个时钟周期。当容量增大时,地址信息增加,那么就需要占用更多的寻址周期,寻址时间也就越长。这导致NAND Flash的地址传输开销大,因此并不适合于频繁、小数据量访问的应用。 相比较而言,NAND 型 Flash 存储器具有更高的存储密度、更快的写人速度、更低的价格以及更好的擦写耐用性等优点,非常适用于大量数据的存储。但由于NAND Flash的接口和操作都相对复杂,位交换操作频繁,因此通常还要采用错误探测/错误纠正(EDC/ECC)算法来保护关键性数据。 例如深圳雷龙有限公司的 CSNP32GCR01-AOW 芯片。 一.免驱动使用。SD NAND内置了针对NAND Flash的坏块管理,平均读写,动态和静态的EDC/ECC等算法。 二.性能更稳定。由于NAND Flash内部是先擦后写机制,如果软件处理不当,在突然掉电的时候就会导致数据丢失。而SD NAND内部自带的垃圾回收等机制可以很好的规避这个问题。因此CS创世的二代产品才会通过10K次的随机掉电测试。 三.尺寸更小。目前SD NAND 是68mm 大小,8个pin脚,相比Raw NAND的1220mm大小,48个pin脚,采用SD NAND可以做出更小巧的产品,而且也能节省CPU宝贵的GPIO口(这点对于MCU单片机来说更是重要) 四.SD NAND可选容量更多。目前有128MB/512MB/4GB容量。而SLC 的Raw NAND 主流容量128MB,512MB已经少见,供货周期也很长;单颗4GB的Raw NAND基本都是MLC或者TLC NAND的晶圆,管理起来更复杂。 不用写驱动程序自带坏块管理的 NAND Flash(贴片式TF卡),尺寸小巧,简单易用,兼容性强,稳定可靠,固件可定制,LGA-8 封装,标准SDIO接口,兼容SPI,兼容拔插式TF卡/SD卡,可替代普通 TF卡/SD 卡,尺寸 6.2x8mm ,内置平均读写算法,通过1万次随机掉电测试耐高低温,机贴手贴都非常方便,速度级别Class10(读取速度 23.5MB/S 写入速度 12.3MB/S )标准的 SD2.0 协议普通的SD卡可直接驱动,支持TF卡启动的 SOC 都可以用 SD NAND。 SD NAND原理图如下:
  • 热度 2
    2024-2-28 21:31
    549 次阅读|
    1 个评论
    【边缘计算】对边缘计算的理解与思考 首先我们认为边缘计算的兴起应该是在过去三四年,之所以兴起大背景是因为实体经济的数字化转型。这波实体经济数字化以万物感知、万物互联、万物智能为特征,这三方面的特征仅仅依靠云计算是没办法特别好的解决,比如实时性、带宽、安全、隐私等等一些问题,在这样背景下,边缘计算逐渐兴起。 我们分享几个行业对于边缘计算的需求特征和大背景下浮现出来关于边缘计算的机会。先看一下工业,1.工业4.0以及智能制造大背景下,推动了工业界原来传统的架构重构:云+边缘+设备三层扁平互联架构。在这个过程中,边缘计算为什么有价值?边缘计算核心是解决了传统五层架构里面网络孤岛、数据孤岛与业务孤岛的问题,同时更好的支撑柔性制造,并且带来从技术到商业各个方面价值创新的能力。 2.OPC-UA overTSN向下渗透,边缘计算碎片化的问题在工业界尤其明显。比如工业界目前一个比较好的解决方案,能解决边缘计算碎片化的方案。OPC-UA over TSN原来更多是在PLC之间及以上的层次。去年11月份在OPC基金会下面成立FLC工作组,工作组目的是 PLC以下的层次如何利用OPC UA over TSN技术需求,研究明白,协议规范,定义清楚。 其实,工业界大背景下,施耐德这样的巨头已经围绕大的趋势,展开一些探索,我们看到施耐德已经明确了要基于云+边缘控制+产品三个层次去重构原有的架构,特意强调边缘控制层的智能化是非常核心的点,提到了边缘计算的主要形态,包括本地设备和边缘云;同时和华为开展持续深入的合作。 智慧城市,从08年IBM提出了智慧地球概念后,智慧城市的建设在全球成为了个热点;17年中国发布了数字中国战略,引爆了新一轮智慧城市的建设,边缘侧拥有最全的诉求,所以新一轮智慧城市的建设需要边缘智能、边缘协同、边缘能力的支撑;同时,5G的发展会极大推动城市的万物互联,这也将极大促进边缘计算产业发展。例如河长巡河场景下,利用边缘计算实时采集河湖动态信息,通过AI辅助进行监测数据处理,污染预警溯源;智慧路灯场景下,借助边缘计算实时监控路灯运行状态,辅助路灯开、关、亮度管理,本地化运营团队进行针对性维护,精准高效;雪亮工程场景下,边缘计算不仅能够进行边缘预处理,剔除“垃圾”信息,减少上传的视频数据,还能够使边缘设备更加“聪明”。 运营商。全球主流运营商看重边缘计算产业机会点,都在拓耕边缘计算领域,从管道经营到算力经营,完善2C业务体验,强化2B市场能力。 中国联通致力于构建一个开放的,开源的Edge-Cloud服务PaaS平台,以灵活分配计算,存储,网络和加速器资源,旨在加速边缘服务的孵化和推广。 1、发布CUBE-Edge2.0白皮书; 2、中国联通将大力发展边缘DC,启动全国范围内15个省市的规模试点; 3、主导的《IoT requirements for Edge computing》国际标准项目立项 中国移动将边缘计算上升为公司战略与5G并列。中移动将边缘计算上升为公司战略与5G并列,推动中国移动未来从管道经营(流量变现)扩展到算力经营(服务变现)” 1、成立中国移动边缘计算开放实验室; 2、发布中国移动边缘计算技术白皮书; 3、宣布Pioneer300计划。 美国电信公司AT&T将边缘计算定位其5G战略三大支柱之一,AT&T已经为移动和固定无线应用接入边缘计算,可以使用LTE或5G连接进行部署。主导发起了Akraino开源,通过开源加快边缘计算生态建设和商用部署。 全球移动通信系统协会,简称GSMA,全球移动通信系统协会(GSMA)成立于1987年,是全球移动通信领域的行业组织,目前其成员已包括220个国家的近800家移动运营商以及230多家更为广泛的移动生态系统中的企业,其中包括手机制造商、软件公司、设备供应商、互联网公司以及金融服务、医疗、媒体、交通和公共事业等领域的企业。GSMA认为边缘计算是运营商未来重要发展方向: 1、Edge Cloud如何帮助运营商Cloud VR/AR等新型业务降低部署成本,加快部署速度; 2、边缘计算如何推动当前智慧城市,智能制造中图像处理能力, GSMA动态: 1、GSMA在MWC2019发布了边缘计算白皮书:Distributed Edge Cloud: Definitions, Dynamics AndDrivers, 2、GSMA计划通过推动边缘计算典型PoC来加速边缘计算在运营商的应用。 GSMA定义的2大边缘计算形态 运营商边缘计算核心技术: 1、多形态I硬件(边缘云,一体机形态,异构数据处理云化网关等); 2、轻量级云原生PaaS(微服务,Serveless等); 3、安全(物理安全,平台安全,应用安全等)。 边缘计算技术方向往那些方向走? 边缘计算需要与云计算协同,才能最大化增强实现彼此的应用价值,这个得到产业界的广泛认同,但是边云协同的价值和内涵到底是什么,涉及到那些方面的协同?这些问题在产业界一直缺乏共识。去年,ECC产业联盟试图从主要场景出发,初步梳理了边云协同的全视图,我们认为边云协同大体上会涉及三层六类协同,也就是从IaaS到PaaS到SaaS三个层次,边缘侧三个层次和云侧三个层次一定有相互协同工作,落实到具体场景中,不见得所有业务场景都会包括,我们这个六类应该是目前阶段理解边云协同的全视图。 服务协同;云端提供SaaS分布策略,那些SaaS部署在云端。那些部署在边缘(应用相互协同)。 业务管理协同;边缘提供模块化、微服务化应用,云端提供边缘应用的业务编排管理。 应用管理协同;边缘节点提供应用的部署与运行环境,并进行管理、调度;云端提供应用开发测试环境及生命周期管理 智能协同;边缘节点按照AI模型执行推理,云端开展AI集中模型训练,下发模型到边缘。 数据协同;边缘节点负责终端数据的采集,进行初步处理,并将结果上传云端,云端提供海量数据存储、分析、价值挖掘。 资源协同;边缘节点提供基础设施资源,并具备本地调度和管理能力,同时接受并执行云端资源调度管理策略(含设备、资源、网络连接) 边缘计算正从1.0走向2.0,如果说1.0更偏向概念定义,主要目的是推动产业共识;2.0则更加关心技术和能力构建,从而促进边缘计算的实践落地。边缘计算2.0核心观点包括落地形态,我们认为主要是边缘云和云化网关两种形态,当然细分来说还有很多。 边缘云主要提供近现场的综合计算能力,支撑智慧园区、平安城市、智能制造等场景,将中心云的能力拉近到边缘,是下一步云计算创新突破的增长点。 云化网关是企业/行业数据的汇聚节点,是网关设备基于云计算技术的演进,主要通过多样连接、实时处理、云化管理和人工智能等关键能力,边云协同使能行业数字化。 软件平台,一定是引入云架构、云技术,实现端到端实时、协同式智能、可信赖、可动态重置的能力。 硬件平台:以异构计算为主,需要考虑ARM+X86+GPU+NPU+FPGA异构计算能力的支持。 核心特征:边云协同和边缘智能。 从趋势看,边缘计算发展分为三阶段。 第一阶段,这个阶段时期大致是2015年-2017年,概念孵化,产业共识 产业共识:边缘计算及其价值成为产业共识 概念泛化:雾计算、边缘计算、节点计算、移动边缘计算、开放边缘计算 边界不清:OT认为20年前的工业现场PLC即是、海康威视认为智能摄像头即是、思科认为云之下终端之上。 第二阶段,当前就是在第二阶段,2018年到2020年,主要是进一步聚焦及落地探索 价值落地场景:从泛化概念,逐步聚焦到云边缘、物联网边缘价值场景。 业务本质:云计算在数据中心之外汇聚节点的延伸和演进。“边云协同、边缘智能”为核心能力。 第三阶段是2020年以后,开始规模发展 带来更丰富的应用场景:增值业务(如预测性维护)到控制系统(如vPLC) 以及更广泛的行业覆盖:从制造/运营商/能源到泛工业(如交通、企业、智慧家居等) 边缘计算已经形成产业共识,正从泛化概念走向进一步聚焦及落地探索,未来3~5年是产业发展关键期。
  • 2023-11-23 17:42
    0 个评论
    文章目录 前言 传统SD卡和可贴片SD卡 传统SD卡 可贴片SD卡 实际使用 总结 前言 随着目前时代的快速发展,即使是使用MCU的项目上也经常有大数据存储的需求。可以看到经常有小伙伴这样提问: 大家好,请问有没有SD卡芯片,可以直接焊接到PCB板上的。 项目需要保存900M以上字节,nand flash 比较贵。或者有什么便宜的存储芯片提供。谢谢! 传统做法无非如下几种: 用eMMC芯片,和SD接口基本兼容,细节有区别。一般的操作系统能支持。 东芝还是谁有焊接的嵌入式SD模块,贵。 做TF卡的封装,直接上锡人工焊死。 其实还有一种选择就是可 贴片SD卡 。 传统SD卡和可贴片SD卡传统SD卡 相对于可贴片SD卡,传统SD卡存在一些劣势,包括: 尺寸和体积:传统SD卡相对较大,尺寸较大,占据更多的空间。这在某些紧凑型设备或嵌入式系统中可能会造成问题,因为可贴片SD卡的尺寸更小,更适合于空间受限的应用。 插拔耐久性:传统SD卡需要频繁插拔使用,这可能会导致卡槽和插口的磨损和腐蚀。长期使用后,可能会出现接触不良、断开连接或读写错误的问题。而可贴片SD卡由于直接焊接在PCB上,没有插拔操作,因此在插拔耐久性方面更有优势。 抗震抗振性能:传统SD卡的连接方式是通过卡槽和插口实现的,这种连接方式对于抗震抗振能力较差。在某些震动频繁的应用场景下,传统SD卡可能会出现连接不稳定或数据丢失的问题。而可贴片SD卡由于直接焊接在PCB上,具有更好的抗震抗振性能。 物理保护:传统SD卡的外部没有额外的保护措施,如防水、防尘等功能。在某些恶劣环境中使用时,传统SD卡可能会受到外界因素的影响,导致数据损坏或设备故障。而一些可贴片SD卡提供了防水、防尘和抗静电等功能,以增加物理保护。 传统SD卡和可贴片SD卡在功能和性能上并没有本质的区别,只是封装形式不同。选择哪种类型的SD卡取决于具体的应用需求和设备限制。对于空间受限、插拔频繁或对抗震抗振性能要求较高的场景,可贴片SD卡可能更适合。而对于一般应用,传统SD卡仍然是一种可靠的存储介质。 可贴片SD卡 可贴片SD卡是一种集成电路封装形式的SD(Secure Digital)存储卡。与传统的SD卡相比,可贴片SD卡采用了更为紧凑的封装形式,使其更适合于嵌入式系统和紧凑型设备的应用。 以下是可贴片SD卡的特点和优势: 封装形式:可贴片SD卡采用了表面贴装技术(Surface Mount Technology,SMT)封装,将SD卡的芯片和连接器集成在一个紧凑的封装中,没有外部插口。这种封装形式使得可贴片SD卡可以直接焊接在PCB(Printed Circuit Board)上,节省空间并提高可靠性。 尺寸小巧:可贴片SD卡的尺寸通常比传统的SD卡更小,因此适用于那些对空间要求严格的设备,如嵌入式系统、便携式设备和小型电子产品等。 抗震抗振动:由于可贴片SD卡直接焊接在PCB上,没有外部插口,因此具有更好的抗震抗振动性能。这使得它更适合于应对恶劣环境和振动频繁的应用场景。 可靠性:可贴片SD卡的焊接连接更牢固,减少了插拔引起的接触不良和断开的风险,提高了存储数据的可靠性和稳定性。 实际使用 前主流的存储芯片大致可以分为NOR Flash和 NAND Flash 。NOR Flash容量比较小,所以一般项目对于容量有一定要求的话(512M起步),就会用采用NAND Flash。 一般从成本考虑,多会使用裸的NAND FLASH进行贴片。随着也会带来几个问题: 第一,笔者在项目中经常遇到NAND Flash的坏块问题,即使让厂商增加了出厂检测,仍会有较高的不良率,所以必须要进行坏块管理。 第二,不同品牌之间的NAND Flash,由于Page,Block大小不同,时序不同等。都需要嵌入式工程师重新调试驱动,经常遇到替换供应商后重新添加、修改驱动的问题,费时费力。 笔者所在项目需要再NAND FLASH中存储图片 语音数据,经常因为坏块问题需要去工厂解决问题,编写坏块管理,甚至手动编写平均读写算法……非常的麻烦。之前没有了解到国产有非常优秀的贴片式SD卡产品——雷龙。 自带SD转接测试板,方便在demo阶段直接使用SD卡接口测试。 兼容无压力,在电脑上也可以免驱直接读写,非常方便。 SD NAND 就是这样一款产品。简单来说它的架构如下图。内部使用寿命最长、性能最稳定的SLC NAND Flash晶圆,擦写次数可以达到10万次。另外,内置了特定的Flash控制器和Firmware,硬件对外采用最为通用的SD接口。 完美兼容了基本所有的项目,尺寸小巧,对于开发板甚至核心板这种对于尺寸要求很高的PCB都可以降低成本! SD NAND内置坏块管理,平均读写,动态和静态的EDC/ECC算法等等,除了让产品的质量更稳定,更好的延长寿命,更能减少CPU的负荷。让后续针对NAND Flash的操作,都可以交给SD NAND,CPU可以不用再管了。领导再也不用担心我的NAND Flash驱动了。 总结 实际使用下来感觉非常好,推荐大家在项目初期就考虑使用雷龙的NAND FLASH,可以节约大量硬件成本和人工成本。有兴趣的伙伴,可以随时联系雷龙官方客服。
  • 热度 1
    2023-9-22 17:44
    164 次阅读|
    0 个评论
    前段时间有幸得到了雷龙出品的贴片式的TF卡的芯片及转接板,从而对其产品进行了相应的了解和测评。 从获得的相关资料看,雷龙出品的贴片式芯片分为两类,即BOW型和AOW型,其中BOW型为第一代产品,属商业级;AOW型则是第二代产品,属工业级或接近工业级。 而就存储容量看,则分为3个等级,即128MB、512 MB及4GB。 详细信息参见下表所示: 芯片及转接板的外观如图1和图2所示。 图1正面 图2背面 单就几何尺寸来讲,不随容量而改变,见图3所示,其中左侧的芯片为CSNP1GCR01-AOW,右侧的是CSNP32GCR01-BOW。 图3芯片对比 就相关产品来看,其对比情况如图4所示。由此可见,芯片要比常规的TF卡要小,不同厂家的芯片在几何尺寸方面基本一致。在转接卡方面,雷龙的转接板要大一些,而在芯片的焊接方面均采用贴面焊的方式。 对普通用户来讲,受贴面焊的限制,还是选取厂家的产品比较方便,其测试卡的成品形式见图4所示。 图4成品形式 芯片相关的封装参数如图5所示,尺寸单位为毫米。 图5封装参数 芯片的引脚如图6所示: 图6 芯片引脚 芯片各引脚的功能及用途如图7所示,由此可知该芯片能支持两种读写方式,即SD模式和SPI模式。 图7片内结构 在使用时,它有2种工作模式,即默认模式和高速模式,其工作时序如图8和图9所示。 图8默认模式 图9高速模式 芯片的典型应用电路如图10所示,其工作电源为3.3V。 图10典型应用 有了前面概括性的认识,下面再来看一看具体的测试过程。 1.电脑上的测试 大容量存储介质: 首先将测试卡插入USB转换器上,以连接电脑的USB口,见图11所示。 图11 USB转接方式 在正常的情况下,会在电脑上呈现出一个虚拟的U盘设备,其容量会因芯片的容量而改变,图12是1GB和4GB芯片的测试效果。 图12上电测试 在向U盘写入文件后,其测试效果如图13和图14所示,这说明其读写性能正常。 图13 U盘内容 图14 文件内容 2.微控器上的测试 除了在电脑上直接以U盘的方式作为存储介质来使用,它也会在各种设备上充当存储容量扩展的重要手段。 1) MP3播放器 随着多媒体技术的发展,各种媒体对存储容量的要求也显著地在增加,为此就需要TF卡这类小巧的介质来存放数据。 以MP3播放模块为例,它只有硬币的大小,在连接扬声器的情况下就可实现音乐播放的功能。而其播放的音乐数据则是存放在TF卡这类存储介质上。 用雷龙的存储芯片,一样可得到灵活地播放效果,其电路连接如图15所示。在使用串口通信的情况下,以相应的指令就可使其播放出指定的音乐。 图15 MP3播放线路 图16 存储播放文件 图17 播放控制 2)数码相框 如今有许多微控器都开始提供SD卡的读写功能及相应的文件系统支持,尤其是沁恒微的产品还提供和十分方便的U盘读写功能和文件系统。以 CH32V307为例,在TFT显示屏的配合下,以U盘来存储图片,就可快速地实现数码相框的功能,其显示效果效果如图19所示。 图18 硬件构成 图19 显示效果 当然雷龙CS SD NAND存储芯片的应用还有很多,这里只是作以简单的介绍,希望它对您在这方面的应用能带来一些帮助。感兴趣的朋友们,可到雷龙官网申请免费样品!
相关资源
  • 所需E币: 0
    时间: 2023-12-12 15:27
    大小: 3.18KB
    上传者: 开心就很好了
    今天给大家讲解关于Qt的内容,我会在文章里面带着大家从0到1为你系统构建Qt知识体系,然后全流程实战开发项目“云对象存储浏览器”,让大家少走弯路,更快速的掌握Qt技术。那么我们先来认识一下,什么是QT,他的具体作用是什么,应用在哪些方面?Qt是一个1991年由QtCompany开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。QT之所以能够在全世界范围内得到广大软件开发者的青睐和使用,一个很大的原因是QT入门确实是非常容易。很少的代码就能折腾出一个比较复杂的软件界面。QT已经支持传统模式下的软件界面开发技术体系以及新模式下的软件界面开发技术体系。传统模式比如QTWidgets,这种模式下的竞争对手比如MFC早就“躺平”了表示不再升级更新了。接下来,我们开始代码实战,编写mainwindows.cppMainWindow::MainWindow(QWidget*parent)  :QMainWindow(parent)  ,ui(newUi::MainWindow){  ui->setupUi(this);  //一般在qt的构造函数中进行初始化操作  //显示当前窗口的时候,显示另外一个窗口TestWidget#if1  //创建窗口对象,没有给W对象指定父对象  //要显示这个窗口必须要进行show()操作  TestWidget*w=newTestWidget;  w->show();#else  //创建窗口对象,给W对象指定父对象  //explicitTestWidget(QWidget*parent=nullptr);  //如果创建一个窗口对象的时候给其指定了父对象,这个窗口就不是一个独立窗口  //这样的话当前父窗口显示的时候,子窗口就一并被显示出来了  //这时候子窗口是没有边框的  TestWidget*w=newTestWidget(this);#endif  //创建对话框窗口  Dialog*dlg=newDialog();  //非模态  dlg->show();}#include"mainwindow.h"#include"ui_mainwindow.h"#include"testwidget.h"MainWindow::MainWindow(QWidget*parent)  :QMainWindow(parent)  ,ui(newUi::MainWindow){  ui->setupUi(this);     //一般在qt的构造函数中进行初始化操作  //显示当前窗口的时候,显示另外一个窗口TestWidget  //创建窗口对象,没有给W对象指定父对象  TestWidget*w=newTestWidget;  w->show();}MainWindow::~MainWindow(){  deleteui;}获取类的属性constQMetaObject*metaobject=object->metaObject();intcount=metaobject->propertyCount();for(inti=0;i<count;++i){  QMetaPropertymetaproperty=metaobject->property(i);  constchar*name=metaproperty.name();  QVariantvalue=object->property(name);  qDebug()<<name<<value;}在common中引入的坐标依赖<dependency>  <groupId>org.apache.commons</groupId>  <artifactId>commons-lang3</artifactId></dependency><dependency>  <groupId>com.fasterxml.jackson.core</groupId>  <artifactId>jackson-core</artifactId></dependency><dependency>  <groupId>com.fasterxml.jackson.core</groupId>  <artifactId>jackson-annotations</artifactId></dependency><dependency>  <groupId>com.fasterxml.jackson.core</groupId>  <artifactId>jackson-databind</artifactId></dependency><dependency>  <groupId>com.fasterxml.jackson.datatype</groupId>  <artifactId>jackson-datatype-jsr310</artifactId></dependency>迭代查询代码,一级缓存与二级缓存结合:@GetMapping("query")publicObjectquery(Stringid){  StringarticleKey="article:"+id;  StringarticleKeyRedis="REDIS_ARTICLE:"+id;  Articlearticle=cache.get(articleKey,s->{    System.out.println("文章id为"+id+"的没有查询到,则从Redis中查询后返回...");    ArticlearticleReal=null;    StringarticleJsonStr=redis.get(articleKeyRedis);    //判断从redis中查询到的文章数据是否为空    if(StringUtils.isBlank(articleJsonStr)){      System.out.println("Redis中不存在该文章,将从数据库中查询...");      //如果为空,则进入本条件,则从数据库中查询数据      articleReal=articleService.queryArticleDetail(id);      //手动把文章数据设置到redis中,后续再次查询则有值      StringarticleJson=JsonUtils.objectToJson(articleReal);      redis.set(articleKeyRedis,articleJson);    }else{      System.out.println("Redis中存在该文章,将直接返回...");      //如果不为空,则直接转换json类型article再返回即可      articleReal=JsonUtils.jsonToPojo(articleJsonStr,Article.class);    }    returnarticleReal;  });  returnarticle;}@ResourceprivateIArticleTypeServicearticleTypeService;@ResourceprivateCache<String,List<ArticleType>>articleTypeCache;@ResourceprivateRedisOperatorredis;@Overridepublicvoidrun(String...args)throwsException{  System.out.println("缓存预热。。。");  //1.查询所有分类数据  List<ArticleType>types=articleTypeService.list();  System.out.println(types);  StringarticleTypeKey="articleTypeList";  //2.设置分类数据到本地缓存  articleTypeCache.put(articleTypeKey,types);  //3.设置分类数据到redis  redis.set(articleTypeKey,JsonUtils.objectToJson(types));}修改hostname,可以区分每个tab是哪台虚拟机--获得http的协议版本号--ngx.say("http协议版本:"..ngx.req.http_version());--获得http的请求方法--ngx.say("http的请求method:"..ngx.req.get_method());--http的请求头内容--ngx.say("http的原始请求头内容:"..ngx.req.raw_header());--获得http的请求头信息localmyHeader=ngx.req.get_headers();--ngx.say("token:"..myHeader.token);--ngx.say("uid:"..myHeader.uid);--获得请求中的参数localargs=ngx.req.get_uri_args();--ngx.say("age:"..args["age"]);--ngx.say("birthday:"..args["birthday"]);--获得请求体body中的数据ngx.req.read_body();localbody_data=ngx.req.get_post_args();forkey,valueinpairs(body_data)do  ngx.say(key,value);end目标:先查询缓存,如果缓存有数据,则在网关中判断返回即可。如果网关中缓存不存在,则把请求向后端服务转发。--导入工具类引用localhttp=require('http');localredis=require("redis_utils")localget=http.get;localargs=ngx.req.get_uri_args();localarticleId=args["id"];localarticleKey="REDIS_ARTICLE:"..articleId;localarticleDetail=redis.get(articleKey);ifarticleDetail~=ngx.nullthen  ngx.say("byopenresty:"..articleDetail);  return;end--发送请求localresult=get("/article/query",args);--返回响应ngx.say("byspringboot:"..result);--ngx.say("测试负载均衡-106");
  • 所需E币: 1
    时间: 2023-7-10 15:44
    大小: 380.51KB
    上传者: 张红川
    19存储期.pdf
  • 所需E币: 1
    时间: 2023-4-24 10:23
    大小: 279.57KB
    上传者: 张红川
    基于单片机的通用示波器存储功能扩展设计.pdf
  • 所需E币: 0
    时间: 2023-3-30 16:14
    大小: 516.49KB
    多传感器动态参数实时采集与存储方法研究
  • 所需E币: 1
    时间: 2023-3-22 10:08
    大小: 2.13MB
    上传者: 张红川
    基于ide硬盘的数字图像存储技术研究.pdf
  • 所需E币: 5
    时间: 2023-2-12 22:17
    大小: 428.83KB
    上传者: ZHUANG
    嵌入式DSP系统中SDF模型的层次化存储优化方法
  • 所需E币: 0
    时间: 2023-2-12 22:14
    大小: 291.14KB
    上传者: ZHUANG
    一种面向实时图像处理应用的基于非共享存储的多DSP系统设计
  • 所需E币: 5
    时间: 2023-2-12 21:31
    大小: 11.58MB
    上传者: ZHUANG
    基于DSPARM的音视频同步压缩存储实时传输系统设计
  • 所需E币: 4
    时间: 2023-2-11 14:42
    大小: 1.72MB
    上传者: ZHUANG
    基于网络存储系统中虚拟存储分级存储技术的研究.
  • 所需E币: 5
    时间: 2023-2-7 22:27
    大小: 193.98KB
    上传者: ZHUANG
    数据在计算机内存中的存储形式及实验验证
  • 所需E币: 0
    时间: 2022-12-13 14:14
    大小: 1.22MB
    上传者: kaokaohe
    半导体存储的最强入门科普
  • 所需E币: 1
    时间: 2022-12-13 14:15
    大小: 793.32KB
    上传者: kaokaohe
    数据中心存储发展趋势分析
  • 所需E币: 3
    时间: 2022-10-15 11:51
    大小: 120.34KB
    上传者: czd886
    数字视频监控系统中多硬盘自动转盘存储的实现
  • 所需E币: 0
    时间: 2022-10-13 16:55
    大小: 1.86MB
    上传者: czd886
    网络视频监控(NVR)存储技术的分析及其应用
  • 所需E币: 5
    时间: 2022-10-11 16:43
    大小: 137.48KB
    上传者: czd886
    大数据时代的高清视频监控存储
  • 所需E币: 5
    时间: 2022-10-11 12:44
    大小: 1.64MB
    上传者: czd886
    浅论视频监控系统存储技术的发展.
  • 所需E币: 4
    时间: 2022-10-8 17:41
    大小: 144.73KB
    上传者: ZHUANG
    视频监控系统中的图像采集和视频有效存储
  • 所需E币: 4
    时间: 2022-10-8 16:21
    大小: 367.49KB
    上传者: ZHUANG
    一种网络视频监控系统的专用存储方案
  • 所需E币: 3
    时间: 2022-10-7 22:37
    大小: 428.83KB
    上传者: ZHUANG
    基于SAN的视频监控存储文件系统设计
  • 所需E币: 0
    时间: 2022-10-7 22:37
    大小: 122.9KB
    上传者: ZHUANG
    关于高校校园视频监控存储方案的探讨