tag 标签: 流程

相关博文
  • 热度 2
    2023-6-16 15:24
    4398 次阅读|
    0 个评论
    如今的PCB电路板无处不在,日常接触到的手机,电脑,家用电器,玩具等等,拆开机械结构,里面都存在大大小小,各种功能的电路板。PCB是基本电子元器件和芯片最重要的载体,所以,PCB设计的优劣也直接决定了产品最终的性能。 本文通过一个实际案例,分析电路板的基本组成和PCB的主要设计流程。 电路板的基本组成 目前的电路板,主要由以下组成: 线路:线路是做为原件之间导通的工具,在设计上会另外设计大铜面作为接地及电源层。 介电层(Dielectric):用来保持线路及各层之间的绝缘性,俗称为基材 孔(Through hole / via):导通孔可使两层次以上的线路彼此导通,较大的导通孔则做为零件插件用,另外有非导通孔(nPTH)通常用来作为表面贴装定位,组装时固定螺丝用 防焊油墨(Solder resistant /Solder Mask) :并非全部的铜面都要吃锡上零件,因此非吃锡的区域,会印一层隔绝铜面吃锡的物质(通常为环氧树脂),避免非吃锡的线路间短路。根据不同的工艺,分为绿油、红油、蓝油。 丝印(Legend /Marking/Silk screen):此为非必要的结构,主要的功能是在电路板上标注各零件的名称、位置框,方便组装后维修及辨识用。 表面处理(Surface Finish):由于铜面在一般环境中,很容易氧化,导致无法上锡(焊锡性不良),因此会在要吃锡的铜面上进行保护。保护的方式有喷锡(HASL),化金(ENIG),化银(Immersion Silver),化锡(Immersion Tin),有机保焊剂(OSP),方法各有优缺点,统称为表面处理。 如图所示,左边是沉金的焊盘,右边是喷锡后的焊盘。 PCB的设计流程 PCB设计的主要流程大概有以下十个步骤,其中层次化的设计等步骤不一定是必须的,跟公司的规模要求及设计的复杂度有关。主要包括从原理图设计完成后输出网表,然后布局布线,接着仿真,处理电源地EMC等热管理,最后输出文档和质量管理等过程。 原理图设计:在开始进行整板设计之前,首先需要完成原理图设计。原理图是电路的逻辑表示,包含各个组件的连接和功能。确保原理图设计准确无误,以避免在整板设计中出现问题。 PCB布局规划:进行PCB布局之前,需要对整个电路板的尺寸、组件布局、连接方式等进行规划。考虑到信号完整性、功率分布和散热等因素,合理安排各个组件的位置和走线路径。 层次化的 设计:对于复杂的电路板设计,可以采用层次化的 设计的方法,将不同功能的信号层、电源层和地层分开。这有助于减少信号干扰、提高整体性能。 信号完整性:保证高速信号的完整性是PCB设计中至关重要的一点。采取合适的差分对、匹配传输线长度、减少信号回波等措施,可以减少信号衰减和时序偏移。 电源和地线:在设计中要特别关注电源和地线的布局和连接。确保电源稳定性、地线低阻抗,以减少电源噪声和信号干扰。 热管理:对于需要高功率的组件,如处理器、功放器等,需要考虑散热问题。合理布局散热器、散热片,确保足够的空间和通风,以避免过热引起故障。 焊盘和孔的设计:选择合适的焊盘和孔的尺寸和形状,以适应所使用的组件和焊接工艺。确保焊盘和孔的质量和可靠性,以减少焊接问题和连接失效。 EMI/EMC设计:电磁兼容性是PCB设计中一个重要的考虑因素。通过合适的屏蔽、接地、滤波等措施,减少电磁干扰和辐射,确保产品符合相关的EMI/EMC标准。 文档输出:在PCB设计过程中,要及时进行标记和记录。给每个元件、连接线、层次等进行适当的标记,编写详细的设计文档,以方便后续的调试和维护工作。 设计规范和标准:遵循相关的PCB设计规范和标准,如IPC标准,以确保设计的可靠性和可制造性。 实际的设计案例 假定设计一个基于ARM平台的PCB板卡。 设计的大概的思路: 1 、 抓取模块,按模块摆放元器件。摆模块可以对整板进行一个了解。 可以了解到板子上有哪些需要注意的。如有哪些重要信号,以及整板的一个电源分 布走向。模块抓取完成后开始布局。 2 、 布局完成后,规划叠层。此板的层数由 DDR4 部分决定。我选择了走 FLYBY 的拓扑。所以只能走假八层的六层板。整板需要控制阻抗的信号线有 DDR4 USB HDMI 等。 3 、 设置规则,开始走线。先从主芯片 BGA 开始出线,将 DDR4 的线先完成。 DDR4以及主芯片拉线完成后可以先看一下内存绕线是否有瓶颈。DDR的信号最多,而且速率高,比较敏感,是前期设计最需要着重评估的地方。然后开始外围器件的布线。 USB HDMI 的高速线注意阻抗连续性以及间距控制,网口部分注意防雷击,音频部分需注意模拟地与数字地的划分等。电源部分走线需注意电流的大小,走向。 4 、 走线完成后,开始 DDR4 绕线、差分对内等长、 FLASH 以及 RGMII 的绕线。 5 、 最后进行整板的调整,主要处理丝印检查,文字处理等。检查无误后,出 GBR 。
  • 热度 2
    2023-4-13 22:15
    2268 次阅读|
    0 个评论
    学习目的: 前面文章有简要介绍硬件开发的基本过程,本文会细分硬件开发的流程,然后分作5个步骤,详细介绍开发全过程,包括立项-实施项目-软件开发-测试-验收 这几个过程,然后,再分解对每一个步骤进行详实的介绍。以期对整个过程有更深入的认识。 与硬件开发相关的流程主要有下列几个: a. 项目立项流程 b. 项目实施管理流程 c. 软件开发流程 d. 系统测试工作流程 e. 内部接收流程 1. 项目立项流程 是为了加强立项管理及立项的科学性而制定的。其中包括立项的论证、审核分析,以期做到合理进行开发,合理进行资源分配,并对该立项前的预研过程进行规范和管理。立项时,对硬件的开发方案的审查是重要内容。 2. 项目实施管理流程 主要定义和说明项目在立项后进行项目系统分析和总体设计以及软硬件开发和内部验收等的过程和接口,并指出了开发过程中需形成的各种文档。该流程包含着硬件开关、软件开发、结构和电源开发、物料申购并各分流程。 3. 软件开发流程 与硬件开发流程相对应的是软件开发流程,软件开发流程是对大型系统软件开发规范化管理文件,流程目的在对软件开发实施有效的计划和管理,从而进一步提高软件开发的工程化、系统化水平,提高 XXXX 公司软件产品质量和文档管理水平,以保证软件开发的规范性和继承性。软件开发与硬件结构密切联系在一起的。一个系统软件和硬件是相互关联着的。 4. 系统测试工作流程 该流程规定了在开发过程中系统测试过程,描述了系统测试所要执行的功能,输入、输出的文件以及有关的检查评审点。它规范了系统测试工作的行为,以提高系统测试的可控性,从而为系统质量保证提供一个重要手段。 项目立项完成,成立项目组的同时要成立对应的测试项目组。在整个开发过程中,测试可分为三个阶段,单元测试、集成测试、系统测试。测试的主要对象为软件系统。 5. 接收流程 制定的目的是加强内部验收的规范化管理,加强设计验证的控制,确保产品开发尽快进入中试和生产并顺利推向市场。 结束的话:由上可见,硬件开发过程中,必须提前准备好文档及各种技术资料,同时在产品设计时就必须考虑到测试。每个人的工作,可能只是其中的很小一部分,也可能包含好几项,这个主要是由项目的复杂程度,以及公司的大小规模决定的。 即使在大公司,硬件工程师也要尽量多去了解其他部门的内容,以及整个开发流程,要热爱开发,但不能沉迷于开发,到了一定的阶段,不管情不情愿都要开始转型,否则就可能像华为中兴,那些大公司对部分大龄的工程师进行“劝退”。
  • 热度 3
    2021-3-3 09:21
    2901 次阅读|
    1 个评论
    关于USB产品认证,不得不知道的问答专区!
    会员&测试流程相关问题 1. 如何成为USB会员? 如果要取得USB认证,您或您的客户(brand company)必须拥有USB VID(Vendor ID)并取得网站的账号密码以供产品注册。 2.USB Logo 使用程序? 若贵公司的产品已经通过测试、拿到产品TID,还需要与USB-IF签署Trademark License Agreement才能使用USB Logo. 3. 怎么确认 / 查询有拿到USB TID的产品 ? 若想查询/确认是否有拿到TID的产品,在USB-IF协会网上的Integrator List中可以搜寻到。 *您需要登入USB会员才能够进入此页面。 4. 产品已经通过认证、拿到TID,我可以转卖给其他厂商使用吗? 以下条件成立的话是可以进行OEM Arrangements并转卖。 · 买方需要是USB协会会员 · 买方需要签署 USB-IF Trademark License Agreement 5. 如果有Family Model,可以怎么操作? USB-IF针对特定修改可以申请QbS(Qualification by Similarity),修改程度请 参考USB-IF网站 6. USB Vendor ID (VID) 的期限? USB 的VID是终身有效,即使您的会员资格已经过期,VID还是有效 USB4 认证相关问题 1. 如果产品通过USB4认证了,是否还需要另外再通过Thunderbolt认证? 若产品是USB4支持Thunderbolt compatible,只需取得USB4认证,不需再另外取得Thunderbolt 3认证。但,若您要产品宣告取得Thunderbolt认证或使用“ Thund erbolt 3 ” logo,则需另外取得Thunderbolt认证。 2. 是否需先取得USB4认证后,才能进行Thunderbolt 4认证 ? 不需要。 3. USB4/TBT3/TBT4 认证还是要分开submit吗? USB4 logo 属USB-IF; Thunderbolt3 与Thunderbolt 4 logo属Intel。是分属不同组织所以要分开submit。 4. Thunderbolt3 Compliance pass 就可以说明 USB 4 Compliance pass? 不是。TBT3 只测EV ( 电性) 和 FV (兼容性),但是USB4包含更多,请参考 USB4测试项目 5. GRL 是否可以教客户如何做USB4测试吗? 可以。 产品测试相关问题 1. 哪些USB Legacy Connector产品可以认证? 2. 哪些USB Legacy Cable产品可以认证? Standard A to Micro B和standard A to Standard B cable的data线规协会规定一定要是28AWG 3. USB Legacy Cable 认证有没有长度限制? 4. 哪些USB Type-C to Type-C Cable可以过认证及注意事项? 5. 哪些USB Legacy to Type-C的cable可以过认证及注意事项? 6. 有哪些USB Accessary可以过认证及注意事项? *注意:2.0 C to Micro B Adapter可以不用带线; 3.2 C toStandardAGen1Adapter 必须带线 7. 特殊cable/架构可以过USB认证的产品? · 带LED灯的Type-Ccable · 歪头Type-C cable · 扁线/电话线 8. 特殊Connector/架构不可以过USB认证的产品? · Standard A+ Type-C双层 Connector · Apple充电线 9. USB Embedded Host 测试事前准备? 任何产品在测试时,都需要进入测试模式(test mode),才能执行测试。 1. 使用USB-IF建议进入test mode的方式, 请参考USB-IF页面 2. 若非使用协会建议方式,请再送测时同时提供给GRL。 10. 可以过认证的Type-C 母座? 产品内部上下有EMC pad · 铁壳上下有弹片 · 一面弹片,一面凸包 · 铁壳上下是凸包,凸包的间距必须大于Plug铁壳厚度 · 铁壳上下既没有弹片也没有凸包 产品内部上下没有EMC pad · 铁壳上下有弹片 · 一面弹片,一面凸包 USB 、USB-C®、USBType-C®和USB-IF是USB ImplementersForum的注册商标 免责声明 本信息仅为便于参照而提供。本信息不是且不应视为 USB Implementers Forum (USB-IF) 之正式通讯。USB-IF 之正式通讯可于其网站 usb.org 取得,或直接自 USB-IF 取得。
  • 热度 4
    2021-1-13 09:48
    4141 次阅读|
    3 个评论
    干货分享 | USB4测试项目总览 & 认证流程
    USB-Implementers Forum(USB-IF) 于2019年9月3日正式发布USB4™ 的规格,主要更新为依据现有USB 3.2 及USB 2.0 架构做补充,来建构新一代USB。USB4™ 的架构基于Thunderbolt™ 的协议规范(该规范由Intel贡献给USB Promoter Group),最高传输速率由原本USB 3.2 的20Gbps(10Gx2),增加一倍到40Gbps(20G x2),并可同时传送多个资料及影像。 USB4™ 与 USB 3.2 最大的差异如下 : 1. USB4™ 最快速度提升至 Gen3 X2 =40Gbps 2. USB4™ Tunneling 架构将USB3 /DisplayPort™/ PCI Express打包在同一接口传输,各协议频宽分配可以动态调整 3. USB4™ 可以选择是否兼容于TBT3系统 4. USB4™ 支持Host to Host(主机与主机对接传输讯号) 由上述的特性,不难发现USB4™ 的逻辑架构与网络架构极其相似。以固定的框架与物理层承载不同的协议封包,其中可包含资料与影像封包,并以地址(Address)标注每个封包确保正确传输。因此,USB4™ 逐渐摆脱传统USB Host 与USB Device 的功能限制,USB4™ 使用点对点的传输方式。此设计对于未来再提升传输速度与功能来说预留了极大的弹性。 USB4™ 测试产品类型及Tunneling支援规范 *注意:TBT3 Compatibility 必需要支援10.3125G,但 20.625G 选择性支援 USB4™ 测试项目总览 *注意: 1. 需要通过USB测试,产品需要使用USB-IF认可的连接器及晶片。 2. USB4™ 认证前,产品须先通过USB 2, USB3.2, USB PD, and USB Type-C® compliance 测试 USB4™ 产品测试前需要提供 · 两组测试样品 · USB 信息资料表 · 如您的产品有特殊进入test mode的指令,请同时提供 (Embedded host必需提供) · 请提供VIF USB 认证流程 https://graniteriverlabs.com.cn/usb-certification-test-flow/ (1) 申请线上注册资格 如果要取得USB认证,您或您的客户(brand company)必须拥有USB VID(Vendor ID)并取得网站的帐号密码以供产品注册。 (2) 申请产品TID流程 (3) USB 产品需要准备VIF Vendor Info File (VIF) 记录着您产品的能力。在进行测试的时候,标准测试仪器会需要导入此档案,以比对产品的实际功能。此档案为测试时必要文件,请在送测前准备好最新版本的VIF。 USB4™ 、USB、USB-C®、USB Type-C®和USB-IF是USBImplementers Forum的注册商标 免责声明 本资讯仅为便于参照而提供。 本资讯不是且不应视为 USB Implementers Forum (USB-IF) 之正式通讯。 USB-IF之正式通讯可于其网站 usb.org 取得,或直接自 USB-IF 取得。
  • 热度 5
    2020-6-11 11:19
    5726 次阅读|
    0 个评论
    HDMI 2.1技术解读(六):产品认证流程及测试注意事项
    欢迎大家持续关注百佳泰测试实验室, 在上一次的技术解读中,我们讲解了 “ HDMI 认证测试种类 ”、“ 可认证的产品基本测试项目 ”、“ HDMI 会员会费 ” 、“ HDMI LA会员申请 ” 、“ HDMI 2.1产品的测试政策 ” 。若大家针对HDMI 2.1专栏有什么疑问,欢迎大家随时留言提问。 本期看点如下: HDMI 产品Self-Test HDMI 成品认证流程 HDMI 产品Self-test和认证测试区别 HDMI 2.1 测试服务项目 HDMI 认证测试的注意事项 eARC 送测注意事项 第六章节知识讲解 HDMI 产品Self-Test HDMI 成品认证流程 HDMI 产品Self-test和认证测试区别 HDMI 2.1测试服务项目 CAT3 预测试 eARC 预测试及认证测试 (Testing by SONY ATC) FRL Sink 预测试及认证测试 (Testing by SONY ATC) FRL Source 预测试 及认证测试 (Testing by SONY ATC) HDMI 兼容性测试 HDMI 认证测试的注意事项 品牌厂商或OED必须是HDMI Adapter 各产品类别的第一款产品送到ATC进行测试 产品所使用的连接器必须是通过认证的料号 关于HDCP, HDMI的最低要求是有支持HDCP至少要支持到HDCP specification 1.4 eARC 送测注意事项 -需明确DUT是什么产品及eARC的功能 例如:TV带有eARC Tx功能 版权申明:如需转载请注明出处。 HDMI, Premium HDMI Cable & HDMI Logo 是 HDMI Licensing Administrator, Inc. 的注册商标。
相关资源
  • 所需E币: 0
    时间: 2024-4-19 15:55
    大小: 2.43KB
    上传者: 开心就很好了
    随着国内越来越多的企业开始使用Go语言,Go语言一度变得火热,成为不少程序员朋友的首选语言。Go语言最早诞生于谷歌,出自谷歌的三位大牛之手,自2009年发布以来,Go语言已经度过了第12个年头,相比于其它语言,可谓是语言界的新生儿。Go是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易Go是从2007年末由RobertGriesemer,RobPike,KenThompson主持开发,后来还加入了IanLanceTaylor,RussCox等人,并最终于2009年11月开源,在2012年早些时候发布了Go1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。Go是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go的语法接近C语言,但对于变量的声明有所不同,Go支持垃圾回收功能。Go是从2007年末由RobertGriesemer,RobPike,KenThompson主持开发,后来还加入了IanLanceTaylor,RussCox等人,并最终于2009年11月开源,在2012年早些时候发布了Go1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。目前Go语言支持Windows、Linux等多个平台,也可以直接在Android和iOS等移动端执行,从业务角度来看,Go语言在云计算、微服务、大数据、区块链、物联网、人工智能等领域都有广泛的应用。所以当下学习正当时。go语言特点天生支持并发语法简单,容易上手内置runtime,支持垃圾回收可直接编译成机器码,不依赖其他库丰富的便准库可跨平台编译部署维护成本低go语言应用领域服务器编程开发云平台区块链分布式系统网络编程Go语言用途Go语言被设计成一门应用于搭载Web服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。对于高性能分布式系统领域而言,Go语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。命名Go语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循一个简单的命名规则:一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线。大写字母和小写字母是不同的:heapSort和Heapsort是两个不同的名字。Go语言中类似if和switch的关键字有25个;关键字不能用于自定义名字,只能在特定语法结构中使用。声明声明语句定义了程序的各种实体对象以及部分或全部的属性。Go语言主要有四种类型的声明语句:var、const、type和func,分别对应变量、常量、类型和函数实体对象的声明。一个Go语言编写的程序对应一个或多个以.go为文件后缀名的源文件。每个源文件中以包的声明语句开始,说明该源文件是属于哪个包。包声明语句之后是import语句导入依赖的其它包,然后是包一级的类型、变量、常量、函数的声明语句,包一级的各种类型的声明语句的顺序无关紧要(译注:函数内部的名字则必须先声明之后才能使用)简短变量声明在函数内部,有一种称为简短变量声明语句的形式可用于声明和初始化局部变量。它以“名字:=表达式”形式声明变量,变量的类型根据表达式来自动推导。下面是lissajous函数中的三个简短变量声明语句:anim:=gif.GIF{LoopCount:nframes}freq:=rand.Float64()*3.0t:=0.0packagemainimport"fmt"funcmain(){name:="yjh"age:=18  //:=自动推导  fmt.Println(name,age)}这是Go语言的推导声明写法,编译器会自动根据右值类型推断出左值的对应类型。它可以自动的推导出一些类型,但是使用也是有限制的;定义变量,同时显示初始化。不能提供数据类型只能在函数内部。不能随便到处定义
  • 所需E币: 0
    时间: 2024-5-28 19:38
    大小: 2.46KB
    当下,同城代驾服务越来越受到人们的青睐。为了满足市场需求,许多企业开始开发智能调度系统,以提高服务效率和用户体验。本文将介绍如何搭建一个智能调度系统,并以同城代驾小程序的开发为例进行详细教学。一、技术要求1、平台选择当前主流的平台有iOS和Android,开发者需要根据目标用户的偏好和市场占有率做出选择。同时,还需要考虑平台的开发成本和技术难度等因素。2、功能设计代驾app软件需要具备一些基本功能,如注册登录、订单管理、定位导航等。同时还可以考虑增加一些创新的功能,如在线支付、评价系统等,以提升用户体验和竞争力。3、安全保障代驾服务涉及到用户的个人信息和支付信息,安全性至关重要。在软件开发过程中,需要加强安全保障措施,如数据加密、身份验证等,以保护用户的隐私和安全。二、用户体验1、界面设计代驾app软件的界面设计要简洁明了,符合用户的使用习惯和视觉需求。合理的布局和颜色搭配,清晰的操作流程,能够提升用户的体验和满意度。2、易用性分析代驾app软件开发过程中,应注重易用性的考虑。例如,可以采用简洁明了的图标和按钮,提供明确的操作指引,减少用户的学习成本和操作困难,从而提高用户的使用效率和满意度。3、反馈机制代驾app软件应该提供及时的反馈机制,让用户能够随时了解订单的状态和司机的位置等信息。同时,还应该给用户提供反馈渠道,以便他们及时解决问题和提出建议。三、代驾小程序开发需要多少钱?代驾小程序最终的价格还是要看功能的,越复杂的功能越贵,几千到几万都有。上面推荐给大家的使用智能小程序搭建软件的方法,像上面那个代驾小程序的案例功能这么多的小程序,也就只需要千来块,性价比还是不错的。当然,不满足上面这些功能的老板们,可以选择专业定制,价格几万块但功能会更加全面。四、代驾APP开发有哪些好处1、对于代驾人员来说:代驾APP的开发无疑是为自己增加了客户来源,通过APP代驾人员无须担心车主因为醉酒而无法结算费用的问题。这样既可以保证自己的利益,又能获得更多的客户,不是一举两得吗?2、对于车主而言:代驾APP的到来无疑是为自己的安全带来了保障。让车主可以没有后顾之忧,可以畅饮开怀享受难得的团聚时光。3、对于相关部门来说:代驾APP的到来可以有效地降低交通事故发生率,提高行车安全意识,增强对法律法规的认知,从而更好地构建一个和谐社会。五、代驾app开发,你需要知道的一些技术!一.原生开发什么是原生开发?原生开发(NativeApp开发)就像盖房子,先打地基然后浇地梁、房屋结构、一砖一瓦、钢筋水泥、电路走向等,原生APP同理:通过代码从每个页面、每个功能、每个效果、每个逻辑、每个步骤全部用代码写出来,一层层,一段段全用代码写出来。传统的app是用H5或混合开发,成本不高,但是bug很多,兼容性不好,最直接的体现就是用户进入app十分不流畅,而且有时会发生卡顿、卡页面的现象。二.服务器服务器决定了app在高峰时会不会卡顿,是否流畅,如果服务器的稳定性和承载量不够高,就会出现用户不能良好的刷新页面,无法呼叫代驾,看起来是网络不稳,其实是服务器带不起来。三.长连接即时通讯模式长连接功能指的是代驾司机开展代驾业务时,能够让自己的移动定位实时显示在app界面,用户可以随时查看司机位置,而且都不会出现迟钝、不动的现象。
  • 所需E币: 0
    时间: 2024-4-29 11:34
    大小: 2.98KB
    一、什么是微服务架构微服务架构是一种面向服务的架构风格,通过将应用程序拆分为小的、自治的服务单元,以提高系统的灵活性、可扩展性和可维护性。它是一种软件设计和开发的方法论,它将一个应用程序拆分成一组小而独立的服务单元,这些服务单元可以独立部署、扩展和管理。每个服务单元都专注于完成特定的业务功能,并通过轻量级的通信机制(通常是HTTP或消息队列)与其他服务单元协同工作。二、伴随着云计算、容器技术、大数据等新兴技术的不断涌现,微服务架构因为其高度可扩展性、灵活性等特点,越来越受到人们的青睐。在微服务架构中,每个服务都是一个独立的进程,每个进程都有自己的数据存储方式,操作系统环境等等。微服务通过通信协议(如http、grpc等)互相通信,形成为支撑大型应用系统的服务群。Go语言作为一个轻量级的,高并发的静态编译型语言,其天然的优势使其成为微服务开发的首选语言之一,内置的goroutine和channel机制保证了Go语言在高并发场景下极高的性能和稳定性。如何使用Go语言开发微服务呢?下面将从以下几个方面进行详细阐述。1、拆分微服务架构师应该首先根据业务模型,将整个应用拆分成若干个独立的服务。拆分的原则是保证每个微服务模块足够小,不要包含过多的业务逻辑,只保留服务本身的核心功能。通过手工埋点或开源工具例如Skywalking等方式,对微服务模块进行详细的跟踪和性能分析,发现程序中的瓶颈,进行优化。2、选择框架Go语言的生态系统非常完善,涵盖了很多优秀的微服务框架。开发过程中,架构师可以根据需求选择不同的框架进行集成。以下是几个常见的Go语言微服务框架:Gokit:提供了许多开箱即用的微服务类库,包括服务发现、负载均衡、日志、跟踪等等,同时提供了一个可扩展的RPC库,以供用户使用。但Gokit的组件相对独立,而且很多组件都是不可配置的,这会导致底层实现较为复杂。Micro:该框架用于处理复杂和高度可分布式的系统,具有良好的可扩展性和服务发现功能。但是,在使用micro时,需要解决API网关、负载均衡和安全问题等复杂问题。Gin:是一个轻量级且快速的HTTPWeb框架,适用于创建RESTAPIs和中较大规模的Web应用程序。通过它可以快速创建服务,但要注意的是,它仅仅是一个Web框架,所以它并不能处理微服务框架所应该处理的所有东西。三、Go语言与微服务架构与分布式系统的联系Go语言在微服务架构和分布式系统中发挥了重要作用。它的简洁的语法和强大的并发能力使得开发者可以快速编写高性能的分布式应用程序。此外,Go语言的内置支持和丰富的生态系统,使得开发者可以轻松地实现微服务之间的通信和协同工作。四、Go-Zero的核心特性简洁与高效:Go-Zero的设计理念强调简洁与高效,它提供了丰富的组件和工具,帮助开发者快速构建微服务应用。同时,Go-Zero注重性能优化,通过合理的资源分配和并发控制,确保系统在高负载下仍能保持稳定运行。自动化与智能化:Go-Zero支持自动化代码生成和配置管理,降低了开发者的手动操作成本。此外,它还具备智能负载均衡、容错处理等功能,提高了系统的可用性和可靠性。可扩展与可定制:Go-Zero具有良好的可扩展性,支持水平扩展和垂直扩展,满足不同规模的业务需求。同时,开发者可以根据项目需求,自定义组件和插件,实现高度定制化的功能。五、服务之间如何通信所有的微服务都是独立部署,运行在自己的进程容器中,所以微服务与微服务之间的通信就是IPC(InterProcessCommunication),翻译为进程间通信。进程间通信的方案已经比较成熟了,现在最常见的有两大类:同步调用、异步消息调用。同步调用同步调用比较简单,一致性强,但是容易出调用问题,性能体验上也会差些,特别是调用层次多的时候。同步调用的有两种实现方式:分别是REST和RPCREST:REST基于HTTP,实现更容易,各种语言都支持,同时能够跨客户端,对客户端没有特殊的要求,只要具备HTTP的网络请求库功能就能使用。RPC:rpc的特点是传输效率高,安全性可控,在系统内部调用实现时使用的较多。基于REST和RPC的特点,我们通常采用的原则为:向系统外部暴露采用REST,向系统内部暴露调用采用RPC方式。六、go-zero和gin区别Go-Zero和Gin都是基于Go语言的Web框架,但二者有一些区别:设计思路不同:Go-Zero的设计思路是面向SOA的微服务框架,提供了丰富的微服务组件和代码生成工具,帮助开发者快速构建微服务应用系统。而Gin则是一个轻量级的Web框架,适用于构建小型Web应用系统。组件不同:Go-Zero提供了很多微服务组件,包括RPC调用、流控、服务注册等等,适用于复杂微服务系统的开发。Gin则提供了一些Web开发需要的基本组件,比如HTTP接口、路由、中间件等,适用于小型Web系统的开发。代码生成工具:Go-Zero提供了一些代码生成
  • 所需E币: 0
    时间: 2024-3-21 13:17
    大小: 2.7KB
    上传者: 开心就很好了
    如何轻松应对复杂应用的微服务架构设计?如何实现高效的容器化组件管理,快速成为Go高薪工程师?本文将结合经典IM项目,带你深入微服务架构精髓,探究主流微服务框架Go-Zero框架底层运作机制和框架自研之道,让你从分布式系统架构设计、容器化部署管理、高并发性能提升、系统监控等,多维度掌握Go开发高薪技能,助力你快速成为行业急需人才。一、什么是Go-Zerogo-zero是一个集成了各种工程实践的web和rpc框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。go-zero包含极简的AP!定义和生成工具goct,可以根据定义的api文件一键生成Go,i0s,Android,Kotlin,Dart,TypeScript,Javascript代码,并可直接运行。使用go-zero的好处:轻松获得支撑千万日活服务的稳定性·内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码微服务治理中间件可无缝集成到其它现有框架使用极简的API描述,一键生成各端代码自动校验客户端请求参数合法性大量微服务治理和并发工具包二、go-zero框架的特点高性能go-zero采用了高性能的go标准库,整个框架的性能非常高效。同时,在框架中还采用了一些其它优化技术,例如连接池复用等,使得整个框架在性能方面得到了较为优秀的表现。轻量级go-zero框架非常轻量级,它的整个代码量也非常的少。同时,go-zero还采用了很多简洁的语法,使得开发效率更高。异步IO对于一个高性能的微服务框架来说,异步IO是必不可少的。go-zero框架中的异步IO采用了协程的方式调度,使得整个框架的性能得到了大幅提升。中间件支持go-zero框架提供了丰富的中间件支持,包括日志、限流、认证、缓存等,这些中间件可以帮助开发者轻松实现更多的功能。三、go-zero框架的使用在学习任何一款框架之前,你首先需要明确所需的环境和前置条件。对于go-zero框架而言,你需要首先安装Go语言的开发环境,然后使用go命令安装go-zero框架。四、怎么安装golang1.下载Go安装文件首先,需要访问Go官方网站下载Windows版本的Go安装包,可以选择根据操作系统和处理器位数选择相应的版本。下载完成后,打开安装文件进行安装。2.安装Go在安装程序中,需要指定安装目录。建议选择默认的安装路径,以避免因路径问题导致安装失败。在安装过程中,请遵循程序的提示进行操作。安装完成后,检查是否成功安装Go,可以在命令行界面输入命令,如果安装成功,将输出Go版本信息。3.macbrew安装安装目录在/usr/local/opt/go#查看可用go版本brewsearchgo#安装gobrewinstallgobrewinstallgo@<version>#升级brewupdatebrewupgradego配置GOPATHGOPATH是Golang的工作区,它包含了你的源代码、第三方代码包、编译生成的文件等。默认情况下,GOPATH路径为“%USERPROFILE%go”(USERPROFILE为当前用户名)。你可以修改GOPATH路径,建议将GOPATH设置为一个单独的文件夹路径。打开环境变量设置,新增GOPATH变量,将其值设置为你想要的工作区路径,例如“D:gowork”。将此路径添加到环境变量Path中,这样你就可以在所有文件夹下使用go命令了。4.在Linux中安装Golang下载安装包在Linux中安装Golang有多种方式,包括使用包管理器安装、使用二进制文件安装、从源代码编译安装等。这里我们介绍使用包管理器进行安装的方法。首先,更新源列表:sudoapt-getupdate然后,使用以下命令安装Golang:sudoapt-getinstallgolang配置GOPATH同样,在Linux中也需要配置GOPATH。和在Windows中一样,将GOPATH设置为一个单独的文件夹路径。在终端中输入以下命令:echo'exportGOPATH=$HOME/go'>>~/.bashrcecho'exportPATH=$PATH:$GOPATH/bin'>>~/.bashrcsource~/.bashrc以上命令将GOPATH设置为$HOME/go,将$GOPATH/bin添加到PATH环境变量中。五、总结:只需要在生成的代码中填入自己的配置以及逻辑即可,咱们使用go-zero可以轻松做到如下效果:轻松获得支撑千万日活服务的稳定性,内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码,微服务治理中间件可无缝集成到其它现有框架使用,极简的API描述,一键生成各端代码,自动校验客户端请求参数合法性,大量微服务治理和并发工具包。
  • 所需E币: 0
    时间: 2024-3-21 15:55
    大小: 3.09KB
    Go微服务系统精讲Go-Zero全流程实战即时通讯(IM)——随着微服务技术的快速发展,其在各个领域都形成了一系列事实标准,在Kubernetes和容器技术加持下,云原生微服务已经成为了主流解决方案。而Go语言作为云原生领域最受欢迎的开发语言,正被越来越多的企业作为微服务开发的首选语言,其中比较流行的包括Go-micro、Go-zero、Dubbo-go等。作为Dubbo微服务体系中多语言实现的一员,在2022年Dubbo-go以微服务领跑者的角色积极拥抱云原生标准,探索了ProxylessMesh形态,配合适配Pixiu云原生网关,形成了完善的Dubbo-go微服务生态矩阵。一、微服务什么是微服务(microservice)?这是企业界正在向计算界提出的问题。一个产品的可持续性取决于它的可修改程度。大型产品如果不能正常维护,就需要在某个时间点停机维护。而微服务架构用细化的服务取代了传统的单体服务,这些服务定义了明确的RPC或消息驱动的API边界。微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功能。每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作(和出现故障)时不会相互影响。微服务带来了以下好处:每个服务都可以由专注于此服务的团队独立开发。小团队可以通过在一组小的功能上工作来进行并行迭代。开发人员可以自由选择开发技术,对新的开发人员来说,可扩展性很强。微服务架构可以使每个微服务独立部署。对系统的单个组件支持持续集成(CI)和持续交付(CD)。微服务架构使得每个服务都可独立扩展。利用松耦合的架构提供更轻松的软件替换。微服务架构不与特定的技术相联系。二、单体架构与微服务架构的区别下图描绘了单体架构和微服务架构的结构图。图的左边就是单体架构的示意图,如图所示:单体架构将所有的功能(如UI、日志、数据层、系统逻辑、数据库等)都集成在一个系统中,像是一个紧耦合的架构。相反,微服务是独立的实体,每个功能都是单独的服务,如日志服务、文件服务、系统逻辑服务等,更易于修改和替换,每个服务都可以通过各种远程传输机制进行沟通,如HTTP、REST或者RPC。服务之间的交换的数据格式可以是JSON或者Protocolbuffers,微服务还可以处理各种请求点,如UI和API客户端。三、微服务框架go-zero的基本介绍go-zero是一个集成了各种工程实践的web和rpc框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。go-zero中的api,rpc,数据库等涉及的代码,都可以给我们一键生成,无需耗费我们什么精力只需要在生成的代码中填入自己的配置以及逻辑即可,咱们使用go-zero可以轻松做到如下效果:轻松获得支撑千万日活服务的稳定性内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码微服务治理中间件可无缝集成到其它现有框架使用极简的API描述,一键生成各端代码自动校验客户端请求参数合法性大量微服务治理和并发工具包go-zerogo-zero整体上做为一个稍重的微服务框架,提供了微服务框架需要具备的通用能力,同时也只带一部分的强约束,例如针对web和rpc服务需要按照其定义的DSL的协议格式进行定义,日志配置、服务配置、apm配置等都要按照框架定义的最佳实践来走。社区建设:go-zero已经是CNCF项目,做为一个后起的微服务框架,不得不说在国内社区生态建设和维护上,完美适配国内开源的现状,在微信群、公众号、各种大会等多渠道进行推广,社区也时常有文章指导实践。go-kratosgo-kratos整体上做为一个轻量级的微服务框架,B站开源项目;web和rpc服务的DSL协议直接采用protobuf和grpc进行定义,采用wire做依赖注入、自动生成代码。框架定位于解决微服务的核心诉求。社区建设:社区建设和维护上,算是做的中规中矩,官网更新一般,有公众号和微信群问题解答tarsgotarsgo做为tars这个大的C++重量级微服务框架下的go语言服务框架,腾讯开源项目;对于有个好爹的这个事情,总是喜忧参半的;好处在于很多能力不用从头开始做起,直接依托母体;劣势就是独立性相对较差,要选用这个tarsgo的前提,就是要先选用tars这个大的框架。社区建设:Tars已经是linux基础会项目,社群上做的还算可以,毕竟tars作为腾讯开源影响力最大的项目之一,有QQ、微信群。dubbo-godubbogo做为dubbo这个大的Java重量级微服务框架下的go语言服务框架,阿里开源项目;优劣基本跟tarsgo一样社区建设:dubbo已经是apache基础会项目,社群上做的还算可以,有钉钉群。go-mircogo-micro是一个轻量级的微服务框架,做为一个在2015年就开源的项目,在当时那个市面上开源的微服务框架稀少的年代,它是为数不多的选择。主要槽点就是作者重心做云服务去啦,相应的社区维护力度较弱。社区建设:弱
  • 所需E币: 0
    时间: 2024-4-1 13:59
    大小: 3.08KB
    上传者: 开心就很好了
    Go语言高效、简洁、并发能力强大,被称为“云计算时代的C语言”,岗位需求旺盛,更是国内一线大厂的“高薪”宠儿。本文作者将结合企业级内容库系统实战,带给你一条高效的Go语言入门学习路径,不仅带你系统掌握Go的核心语法,更涵盖了系统架构设计、微服务化、系统优化、加工流引擎和立体化监控系统搭建等实用技能,助你快速吸收大厂实践经验与技巧,新手轻松进阶。一、那么,首先,我们先来认识Go,什么是GO语言Go语言,也被称为Golang,是由Google公司开发的一种静态强类型、编译型并具有垃圾回收功能的编程语言。Go语言在2009年首次发布,设计目标是简洁、高效、安全和并发,旨在提供一种易于编写和维护的系统级编程语言。它的语法简单易懂,学习曲线平缓,功能强大,结合了Python和C语言的特性,具有Python的开发效率和C语言的性能。Go语言在网络编程、分布式系统开发、命令行工具和系统工具开发等方面表现出色,提供了一组强大的网络库和丰富的工具库,使得开发高性能的网络应用程序、分布式系统和微服务架构变得容易。此外,Go语言的并发模型强大,使用轻量级的协程(goroutines)和通道(channels)实现并发编程,可以充分利用多核处理器的性能。二、go语言适合做什么1、网络编程2、服务器端开发3、分布式存储领域4、写工具5、造轮子6、内存数据库和云平台领域开发7、区块链领域8、爬虫及大数据9、云原生应用开发10、云原生微服务还有很多,就不在此一一列举三、go语言前景如何想必这个是大家最关心的问题,go语言的前景比较乐观。随着云计算和分布式系统的快速发展,许多大型公司和初创企业都在使用go语言作为其核心开发语言之一。在处理大量并发任务时,go语言可以更好地利用系统资源,提高程序的执行效率。go语言的生态系统也比较完善,拥有丰富的第三方库和工具,支持各种操作系统和平台。go语言的社区非常活跃,有大量的开源项目和开发者贡献的代码,开发者可以获得更多的帮助和学习资源等等。Go语言的前景比较乐观。然而,需要注意的是,任何编程语言都有其适用场景和优缺点。在选择编程语言时,需要根据实际需求和项目特点进行综合考虑。同时,持续学习和掌握新技术也是保持竞争力的重要手段。四、GO环境安装学习Go语言之前,必须学会如何搭建Go语言的开发环境,不同操作系统有不一样的安装方式。1、在Windows下安装Go在浏览器访问golang官网,单击Windows的下载链接,浏览器自动下载MSI安装包,双击运行下载好的MSI安装包即可启动安装程序,在欢迎界面,直接单击Next即可。看到Go语言的用户许可协议,直接勾选IacceptthetermsintheLicenseAgreement复选框,然后单击Next按钮,选择Go语言的安装路径,默认安装到C:\ProgramFiles\Go\文件夹,我将安装路径改为D:\develop_tools\go文件夹。安装路径设置成功后,下一步直接单击Next按钮,再单击Install按钮,等待程序完成安装,最后单击Finish按钮即可完成整个安装过程。安装完成后打开CMD窗口,在CMD窗口下输入goversion并按回车键即可看到当前Go语言的版本信息,说明我们已完成Go语言开发环境的搭建。ps:大多数情况下,使用MSI安装包搭建Go语言开发环境无须设置系统的环境变量。如果在CMD窗口下查看Go语言的指令信息出现异常,则说明Go语言还没有添加到系统的环境变量,此时需要手动添加。为了后续维护的方便,我这里统一设置一下Go的环境变量。2、在Linux下安装Go目前主流的Linux操作系统有Debian,Ubuntu,RedHat,CentOS,Fedora等,不同操作系统在使用上存在一定差异,但从整体来看都是大同小异。本小节以64位的CentOS7操作系统为例,讲述如何搭建Go语言的开发环境。①从Windows/MacOS将下载好的go1.21.1.linux-amd64.tar.gz安装包到/data/soft/目录下②解压:[root@amoxiangsoft]#tar-zxvfgo1.21.1.linux-amd64.tar.gz,解压成功后,cdgo,输入bin/goversion并按回车键,系统将会显示Go语言的版本信息,配置环境变量:[root@amoxianggo]#vim/etc/profile。③环境变量立刻生效:source/etc/profile。系统环境变量添加成功后,在CentOS7命令行的任意路径下输入goversion指令就能看到Go语言的版本信息。Go语言的开发环境搭建成功后,下一步安装集成开发环境(IntegratedDevelopmentEnvironment,IDE)。集成开发环境是提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具,它是集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件。常用的IDE软件有GoLand,VSCode,VimGO,SublimeText,LiteIDE,Eclipse,Atom等。
  • 所需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币: 0
    时间: 2023-11-10 15:45
    大小: 1013.5KB
    上传者: Argent
    第6讲Uboot启动流程详解
  • 所需E币: 0
    时间: 2023-11-10 15:47
    大小: 1MB
    上传者: Argent
    第12讲Linux内核启动流程简介
  • 所需E币: 1
    时间: 2023-7-11 17:33
    大小: 86.3KB
    上传者: 张红川
    QT开发环境的搭建流程.pdf
  • 所需E币: 1
    时间: 2023-6-20 13:17
    大小: 1.15MB
    上传者: 张红川
    15allegro原件封装制作流程.docx
  • 所需E币: 1
    时间: 2023-6-15 14:03
    大小: 58KB
    上传者: 张红川
    双阈值电压与电源门控设计优化流程方案.doc
  • 所需E币: 1
    时间: 2023-6-12 09:43
    大小: 1.17MB
    上传者: 张红川
    產品設計流程.doc
  • 所需E币: 5
    时间: 2023-6-9 09:28
    大小: 169.49KB
    上传者: 木头1233
    基于Java在BS结构下的OA流程可视化的设计(源代码+论文)
  • 所需E币: 3
    时间: 2023-3-13 11:01
    大小: 1.65MB
    上传者: 张红川
    优化协同式 ECAD-MCADPCB 制造流程.
  • 所需E币: 3
    时间: 2022-12-22 15:27
    大小: 192.52KB
    上传者: 东林碣石
    IPQC(制程控制)巡检流程
  • 所需E币: 3
    时间: 2022-11-11 21:40
    大小: 1.54MB
    上传者: EDA_新爸爸
    PCB生产工艺及制作规范,指导
  • 所需E币: 0
    时间: 2022-10-25 17:10
    大小: 11.48KB
    上传者: samewell
    STM32程序编写总流程及技巧_程序.zip
  • 所需E币: 1
    时间: 2022-8-19 14:38
    大小: 513.59KB
    上传者: xyzzyxaaa
    智能小车单片(机程序+论文+流程图+管脚说明).zip
  • 所需E币: 1
    时间: 2022-8-19 14:38
    大小: 120.69KB
    上传者: xyzzyxaaa
    智能小车单片机(程序+论文+流程图+管教说明).rar