tag 标签: 技术

相关帖子
相关博文
  • 热度 2
    2024-7-27 15:47
    187 次阅读|
    0 个评论
    多核异构系统是⼀种使同⼀颗SoC芯片中不同核心分别独立运行不同平台的计算系统。通过合理的处理器核心及外设资源划分,使⼀颗SoC芯片能够独立运行Linux系统和实时性系统,在满足系统软件功能和硬件外设丰富性要求的同时,也满足系统的实时性要求,具有突出的性价比优势和产品体积优势。 1. 瑞芯微多核异构系统 “瑞芯微多核异构系统”是瑞芯微提供的⼀套通用多核异构系统解决方案。 在运行平台方面: Linux提供标准的Linux Kernel,RTOS提供开源的RT-Thread ,Bare-metal提供基于RK HAL硬件抽象层的裸机开发库。同时,瑞芯微多核异构系统支持客户自行适配更多的运行平台,例如可以基于RK HAL硬件抽象层适配指定的RTOS等。 在处理器核心方面 : 瑞芯微多核异构系统支持SoC中同构的ARM Cortex-A核心独立运行。也支持SoC中异构的ARM Cortex-M或RISC-V核心独立运行。瑞芯微多核异构系统通过合理的处理器核心资源划分,将适当的任务分配到最适合的核心进行处理,从而使SoC发挥出更优秀的性能和能效表现。 目前,瑞芯微多核异构系统采用无监督的AMP方案。不使用虚拟化管理,从而在运行实时性系统时获得更快的中断响应,以满足电力、工控等行业应用中严苛的硬实时性要求。 2. RK3562J处理器核心及AMP支持情况 处理器核心 AMP支持情况 3. 中断嵌套机制 中断嵌套是一种有效的中断处理机制,它允许系统根据中断的优先级来响应和处理中断,从而确保关键任务能够及时得到处理,具有实时性高、灵活性好、响应快速等特点,但传统的Linux系统为了简化设计、提高系统的稳定性和可预测性、减少资源竞争和死锁等风险、以及提高兼容性和可维护性,不支持中断嵌套。这种设计选择使得Linux内核在许多应用场景中表现出色,但对于高实时性场景下的应用就显得力不从心了。 4. 案例实践分享 开发板型号:OK3562J-C 资料版本:OK3562-C_Linux 5.10.198_用户资料_R1 测试思路: 使用两个GPIO,分别为GPIO4B1和GPIO0B0,其中GPIO4B1设置为输出,GPIO设置为输入并且中断配置为下降沿触发。硬件上短接GPIO4B1和GPIO0B0。 使用Timer4定时器每秒产生一个定时器中断,在中断处理函数中控制GPIO4B1产生一个下降沿并延时,如果出现了GPIO0B0中断处理函数中的打印信息则证明成功发生了中断抢占。 测试步骤: (1)编写测试程序fltest_irq_preempt.c开启TIEMR4和GPIO0B0的中断并且将GPIO0B0配置为下降沿触发,在定时器中断处理函数中将GPIO4B1拉高拉低,使之触发GPIO0B0的中断,在GPIO0B0的中断处理函数中打印一句话来表明当前进入了GPIO0B0的中断; (2)修改中断路由,添加TIMER4和GPIO0的中断并使之绑定给CPU3,并设置TIMER4的中断优先级高于GPIO0; (3)重新编译镜像并烧写; (4)在uboot菜单中打开AMP并重启OK3562J-C开发板,此时RTOS调试串口打印如下: 按tab键可以打印出当前的所有命令: 可以看到我们的命令已经注册成功了。 现在执行我们刚刚编写的fl_irq_test这条命令,即可看到效果: 可以看到GPIO0B0的中断抢占了当前的TIMER4中断。 我们将二者的优先级调换一下再重新编译烧写,然后再次执行该程序,可以看到GPIO0B0的中断在TIMER4中断结束之后才被处理,未发生抢占。
  • 热度 2
    2024-3-15 10:07
    208 次阅读|
    0 个评论
    SPI(Serial Peripheral Interface)通信总线以其高速、全双工、同步的特性而被广泛应用,它只需要四根线就能实现数据传输,有效地节约了芯片管脚的数量,同时为PCB布局带来了空间上的优化和便捷。正因为它简单易用的特点,现在越来越多的芯片选择集成SPI通信协议。 作为TI Sitara™产品线新一代MPU产品,TI AM62x处理器特别配备了多达4路的SPI接口以及1路OSPI接口(有时也称为QSPI),丰富的SPI接口配置使得该处理器能够同时与多个设备进行通信连接,大大提高了系统的扩展性和灵活性。 在飞凌嵌入式推出的搭载了AM62x处理器的OK6254-C开发板上,NOR Flash存储器正是通过连接到处理器的OSPI总线上进行工作的。这样的设计充分利用了SPI通信协议的高速传输和全双工特性,保证了开发板在数据处理和存储方面的效率。本文就通过OK6254-C开发板为大家介绍一下AM62x的SPI。 0 1 SPI的工作流程和时序 我们首先需要了解一下SPI是如何工作的——通常SPI通过4个引脚与外部器件相连: (1) MISO:主设备输入/从设备输出引脚 该引脚在从模式下发送数据,在主模式下接收数据; (2) MOSI:主设备输出/从设备输入引脚 该引脚在主模式下发送数据,在从模式下接收数据; (3) CLK:串口时钟 作为主设备的输出,从设备的输入; (4) NSS:从设备选择 这是一个可选的引脚,用来选择从设备。 SPI的工作流程是这样的: (1) 主机先将NSS信号拉低,这样保证开始接收数据; (2) 当接收端检测到时钟的边沿信号时,将立即读取数据线上的信号,这样就得到了一位数据; (3) 由于时钟是随数据一起发送的,因此指定数据的传输速度并不重要,尽管设备将具有可以运行的最高速度; (4) 主机发送到从机时,主机产生相应的时钟信号,然后数据一位一位地将从MOSI信号线上进行发送到从机; (5) 主机接收从机数据时,如果从机需要将数据发送回主机,则主机将继续生成预定数量的时钟信号,并且从机会将数据通过MISO信号线发送。 SPI工作时序图如下: 0 2 AM62x处理器中SPI总线的特点 在AM62x这款芯片中,TI将SPI的MISO与MOSI设计为d0和d1,具体哪一个作为输入,哪一个作为输出,是由设备树中的 ti,pindir-d0-out-d1-in= 来设置的。 默认属性值为0,即d0是输入,d1是输出; 当属性值为1时,d0为输出,d1为输入。 0 3 AM62x的SPI应用 1. menuconfig配置: 将该项选中,SPI驱动将编译进内核中。 makemenuconfi Usermode SPI device driver support (注:在飞凌嵌入式OK6254-C开发板中,SPI驱动编译已进去。) 2. 设备树配置: (1) 选择需要使用的spi,这里我们用spi0,节点为&main_spi0; (2) 将该节点所用的引脚复用为相应的功能。 spi0_pins_default: spi0-pins- default { pinctrl- single ,pins = < AM62X_IOPAD ( 0 x1B4, PIN_OUTPUT, 0 ) /* (A13) SPI0_CS0 */ AM62X_IOPAD ( 0 x1B8, PIN_OUTPUT, 0 ) /* (C13) SPI0_CS1 */ AM62X_IOPAD ( 0 x1C0, PIN_INPUT, 0 ) /* (B13) SPI0_D0 */ AM62X_IOPAD ( 0 x1BC, PIN_OUTPUT, 0 ) /* (A14) SPI0_CLK */ AM62X_IOPAD ( 0 x1C4, PIN_INPUT, 0 ) /* (B14) SPI0_D1 */ ; }; (3) 描述节点的属性,具体配置项的功能见注释。 &main_spi0 { status = "okay" ; pinctrl-names = "default" ; pinctrl-0 = ; /* 描述引脚复用节点 */ ti,spi-num-cs = < 2 ; /* 描述片选的数量 */ ti,pindir-d0- out -d1- in = < 1 ; /*描述输入输出分别是哪个*/ /* 描述子节点spidev0设备 */ spidev @0 { spi-max-frequency = < 24000000 ; /* 描述spidev0设备的最大频率 */ reg = < 0 ; /* 描述spidev0设备所用的片选,这里是第0个 */ spi-cs-high; /* 描述spidev0设备高有效 */ compatible = "rohm,dh2228fv" ; /* 描述spidev0设备所用驱动 */ }; /* 描述子节点spidev1设备 */ spidev @1 { spi-max-frequency = < 24000000 ; reg = < 1 ; compatible = "rohm,dh2228fv" ; }; }; 3. 编译烧录: 在源码路径下输入以下命令: .build.sh sudo./build.sh kernel 没有报错即为编译成功。 将源码路径下的image中的OK6254-C.dtb文件放到开发板的/boot目录中,重启开发板即可。 4. SPI测试: 将spi0_D0和spi0_D1短接 重启开发板后,在/dev目录下看到多出两个spidev设备。 使用我们的测试程序 fltest_spidev_test -D /dev/spidev3.0 -s 42000 有如下打印信息即为成功: spimode: 0 bitsper word: 8 maxspeed: 42000 Hz (42 KHz) FFFF FF FF FF FF 4000 00 00 00 95 FFFF FF FF FF FF FFFF FF FF FF FF FFFF FF FF FF FF DEAD BE EF BA AD F00D 0 4 总结 TI AM62x处理器有着丰富的SPI资源,而SPI又可以作为许多设备的总线,这使得AM62x能够接入许多SPI接口的设备,因此在那些对SPI有着比较多需求的应用场景下,TI AM62x无疑是一个非常好的主控选择。
  • 热度 4
    2024-1-19 09:55
    321 次阅读|
    0 个评论
    迷宫老鼠机器人比赛是一项以电子和信息、装备制造等专业核心技术作为主要竞赛内容的赛事,其中用到的关键技术包括嵌入式微控制器技术及应用、传感器技术及应用、智能控制算法应用、3D虚拟仿真技术应用以及人工智能与计算技术应用等。该类比赛要求参赛的电脑鼠在不同的“迷宫”中自动记忆和选择路径,通过采用相应的算法,快速达到设定的目的地,这就是所谓的“智能鼠走迷宫”。 这项技术的核心在于其可以广泛应用于各个领域,如自动化控制、智能制造等。此外,国际智能鼠走迷宫竞赛(中国)总联络处已经成立,得到美国、葡萄牙、印度、英国、日本、新加坡、泰国、蒙古等多个海外国家Micromouse组织的授权和支持,这将进一步推动中国与世界各国在Micromouse前端技术交流合作等方面的工作。 至于推广方面,已经有多个大学和机构参与其中。例如,天津市大学生学科竞赛第12届“启诚杯”人工智能电脑鼠大赛在南开大学举行,来自南开大学、天津大学、天津理工大学等学校的师生都参与了这次比赛。此外,北京交通大学电脑鼠走迷宫校内赛也吸引了大量参赛队伍。通过这些比赛,迷宫老鼠机器人比赛得以在高校和科研机构中得到广泛推广。
  • 热度 3
    2023-3-16 22:31
    3266 次阅读|
    14 个评论
    2023年3月16日星期四读报,一文《英国在科学技术领域还是“世界领先”吗?》唤起我一直有个看法,就是白肤色人类擅长科学,黄肤色人类擅长技术,科技是人类演化不可或缺的两个相互关联领域。这文章题目可见,话外音,人类当下科学发明拿不出什么新玩意儿了,技术应用要量力而行适度适宜,世界领先不要过度了。 这两天,FT中文网报道,感觉英国新闻多了点,还都是关于科学。是不是想说当下人类在 科学发明发现上停滞 ,为了可持续生存,在技术应用上不要过度,好听是“世界领先”,毕竟不好说人家领先,就先自己落后,以身作则,用行为说话? FT中文网新闻摘录如下: 英国将出台金融和监管措施着重发展计算机与生命科学 - FT 中文网 (d2wz47owtacjie.cloudfront.net) 英国财政大臣亨特誓言要让英国成为“欧洲最佳科技公司投资和发展之地”。 更新于 2023 年 3 月 16 日 15:00 英国《金融时报》 克 莱 夫•库克森 , 汉 娜 •库 赫 勒 英国在科学技术领域还是 “ 世界领先 ” 吗? - FT 中文网 (d2wz47owtacjie.cloudfront.net) 阿胡贾 :根据科学政策学者的新分析,英国在科学技术的优先领域中表现良好,但并不突出,离世界领先还有一段距离。 更新于 2023 年 3 月 16 日 12:12 安贾娜• 阿胡贾 把基因组编辑放出笼子前必须先确立规则 - FT 中文网 (d2wz47owtacjie.cloudfront.net) 阿胡贾 :改变人类 DNA 为治疗疾病带来了希望,但也引发了公平获取等问题。 更新于 2023 年 3 月 15 日 17:39 安贾娜• 阿胡贾 本文作者是科学评论员 每一项新兴技术都有自己的梦想家和阴谋家。人类基因组编辑无疑也是如此,它是 上周在伦敦弗朗西斯•克里克研究所 (Francis Crick Institute) 举行的一场备受瞩目的全球峰会 的焦点。 英国的产业政策要有重点 - FT 中文网 (d2wz47owtacjie.cloudfront.net) 帕里克:英国应该珍视自己的优势产业,如果妄想在每个领域都领先世界,那么最终可能一事无成。 更新于 2023 年 3 月 15 日 17:29 泰杰•帕里克 前天看到可谓“狂轰滥炸”的新闻就好奇? 美国走向大萧条?美国怎么了?接下来意味着什么? _ 工程 师职场 - 面包板社区 (eet- china.com) 发表于 2023-3-14 10:52:40 硅谷银行倒闭,怎么这么热闹? 硅谷,自然想到科技,年初报道科技行业大裁员就好奇?硅,又让人想到半导体,不一直在折腾没完没了? 如何看 “ 科技行业裁员更多是重新调整 ” ? - 面包板社区 (eet-china.com) 重新调整什么?还没看明白,这又到了金融行业,裁什么员?干脆倒闭! 更有意思的是美国一唱,英国一和,还都是白肤色人擅长科学的国家。 莫非人类真是在 科学发明发现上停滞 了? 百度搜索“人类科学停滞”,可见一斑。 若真是这样,那就是说人类演化的当下,就只有发挥技术应用了,在已有科学发明基础上的应用,这就涉及到应用的程度了,毕竟技术应用是要消耗地球自然资源和能源的,而这又是当下面临枯竭的趋势,还加上气候不利于生存的变化。 资源不够了,环境恶化了,那我们人类该如何应对呢? 不也就只有适度地把握科技发展,不要过度。这又唤起多年来的一个看法,是不是人类科技发展过度了?呵呵,百度看看,有意思,看看下拉菜单,这该不是百度使用了ChatGPT技术吧?知道我想看的信息? 最后一条:科技发展太快人类灭亡更快 再看《英国在科学技术领域还是“世界领先”吗?》,可想而知英国想干啥了,不就是想世界能达成一致取向而放慢科技发展,直到人类共同度过这段时间,至少是21世纪和22世纪,地球运行从黄道十二宫的双鱼宫进入宝瓶宫。 或有科学新发明发现? 科学家始终在研究,今天人民日报报道: 我国科学家发现两种新矿物 (peopleapp.com) ,央视新闻 2023-03-16 12:46,报道最后说: 新矿物的发现属于 0 到 1 原创性成果,代表了矿物学基础研究的突破性进展。截至目前,全球共发现的矿物数量约 5900 个,我国科学家发现的矿物数量只有约 180 个。 接下来还要看世界上技术应用如何把控了? 如果是这样,那我们中国在科技尤其在技术上如何做呢?
  • 热度 13
    2022-4-28 06:28
    1323 次阅读|
    0 个评论
    ​ 2015年08月17日 16:16 来源: 网站整理 作者: Duke 标签: 智能照明 (1065) 驱动电路 (906) led (16526)   近年来, LED 制造工艺的不断进步和新材料(氮化物晶体和荧光粉)的开发和应用,各种颜色的超高亮度LED取得了突破性进展,其发光效率提高了近1000倍,色度 方面已实现了可见光波段的所有颜色,其中最重要的是超高亮度白光LED的出现,使LED应用领域跨越至高效率照明光源市场成为可能。   通过十多年对LED设计的潜心研究和学习。本人收集了LED应用设计中一些经典性的基础问题分享给大家。其中涉及到内容有单个LED的流明效率与用LED 作光 源构成的灯具的流明效率异同分析,LED的结温原理及结温升高会对LED产生的影响问题,静电破坏的原理以及列举一些类型的LED容易受静电破坏导致失 效,探讨LED路灯防雷能用一个 压敏电阻 的问题,解读设计高品质LED驱动 电路 的方法和选择和设计LED驱动电源时要考虑哪些因素等问题。   问:单个LED的流明效率与用LED作光源构成的灯具的流明效率有什么异同?   答:针对某一个特定的LED,加上规定的正向偏置,如加上 IF =20mA正向 电流 后(对应的VF≈3.4V),测得的辐射光通量Φ=1.2lm,则这个 LED的流明效率为η=1.2lm×1000/3.4V×20mA=1200/68≈17. 6l m/W。显然,对单个LED,如施加的电功率 Pe=VF×IF,那么在这个功率下测得的辐射光通量折算为每瓦的流明值即为单个LED的流明效率。   但是,作为一个灯具,不论LED PN结 上实际加上的功率VF×IF是多少,灯具的电功率总是灯具输入端口送入的电功率,它包括电源部分(如稳压器、稳流源、交流整流成直流电源部分等)所消耗的功率。灯具中,驱动电路的存在使它的流明效率比 测试 单个LED的流明效率要下降。电路损耗越大,流明效率越低,因此,寻找一种高效率的LED驱动电 路就显得极为重要。    问:什么是LED的结温?结温升高会对LED造成什么影响?   答:LED基本结构是一个半导体的PN结。当电流流过LED器件时,PN结的温度将上升,严格意义上说,就把PN结区的温度定义为LED的结温。通常由于器件芯片均具有很小的尺寸,因此我们也可把LED芯片的温度视之为结温。   当PN结的温度(例如环境温度)升高时,PN结内部的杂质电离加快,本征激发加速。当本征激发产生的复合载流子的浓度远远超过杂质浓度时,本征载流子的数量增大的影响较之迁移率减小的半导体 电阻 率变化的影响更为严重,导致内量子效率下降,温度升高又导致电阻率下降,使同样IF下,VF降低。如果不用恒流源 驱动LED,则VF降将促使IF指数式增加,这个过程将使LED PN结上温升更加快,最终温升超过最大结温,导致LED PN结失效,这是一个正反馈的恶性过程。   PN结上温度升高,使半导体PN结中处于激发态的 电子 /空穴复合时从高能级向低能级跃迁时发射出光子的过程发生退化。这是由于PN结上温度升高时,半导体 晶格的振幅增大,使 振动 的能量也发生增加,当它超过一定值时,电子/空穴从激发态跃迁到基态时会与晶格原子(或离子)交换能量,于是成为无光子辐射的跃 迁,LED的 光学 性能退化。   另外,PN结上温度升高还会引起杂质半导体中电离杂质离子所形成的晶格场使离子能级裂变,能级分裂受PN结温度的影响,这就意味着由于温度影响晶格振动, 使其晶格场的对称性发生变化,从而引起能级分裂,导致电子跃迁时产生的光谱发生变化,这就是 LED发光 波长随PN 结温升而变化的原因。   综上所述,LEN PN结上的温升会引起它的电学、光学和热学性能的变化,过高的温升还会引起LED封装材料(例如环氧、荧光粉等)物理性能的变化,严重时会导致LED失效,所以降低PN结温升,是应用LED的重要关键所在。    问:什么是静电破坏?哪些类型的LED容易受静电破坏导致失效?   答:静电实际上是由电荷累积构成。人们在日常生活中,特别在干燥天气环境中,当用手去触摸门窗类物品时会感觉“触电”,这就是门窗类物品静电积累到一定程 度时对人体的“放电”。对于羊毛织品、尼龙化纤物品,静电积累起来的电压可高达一万多伏特,电压十分高,但静电功率不大,不会威胁生命,然而对于某些电子器件却可以致命,造成器件失效。   LED中用GN基构成的器件,由于是宽禁带半导体材料,它的电阻率较高,对于InGaN/AlGaN/GaN的双异质结蓝色光LED,其InGaN的有源 层的厚度一般只有几十纳米,再由于这种LED的两个正、负电极在芯片同一面上,之间距离很小,若两端静电电荷累积到一定值时,这一静电电压会将PN 击穿 , 使其漏电增大,严重时PN结击穿 短路 ,LED失效。   正因为存在静电威胁,对于上述结构的LED芯片和器件在加工过程中对 加工厂 地、机器、工具、仪器,包括员工服装均要采取防静电措施,确保不损伤LED。另外,在芯片和器件的包装上也要采用防静电材料。    问:LED路灯防雷能用一个压敏电阻吗   答:关于路灯的防雷设计并非是一个简单的问题。首先要了解你的路灯系统方案全貌架构,如采用AC--》 开关电源 --》恒流源 --》LED光源的方案,那么,你应该首先考虑 开关 电源的防雷,雷击的侵入往往是由AC 电线 导入的,先被侵害的主体应该是开关电源,经开关电源输出 的直流电压理论上是一干净的电源,至此雷击对恒流源的影响已经很小了。LED路灯一般是买现成的开关电源来配套,因此你在选用时特别选购能防雷击的开关电 源,即在开关电源的输入端已设置防雷击电路。    问:隔离型与非隔离型驱动方案各有何优缺点?应用中如何选择?   由于电路上差异较大,大多数的芯片都不具备同时实现两种方案的可能。从恒流精度上看,隔离型可以做到±5%以内,而非隔离型则很难做到。   目前在以市电为输入电源的LED灯具中(特别是驱动与光源一体的灯具),本着安全第一的原则,基本已不需再采用非隔离型方案。但也有例外,LED日光灯管 由于受到结构和空间的制约,仍还用非隔离型方案。在低压供电的LED灯具中,以效率和成本优先的原则,非隔离型方案是最佳的选择。 问:LED被静电击穿的原理和过程是怎么样的?会有何影响?   答:LED属于半导体类元件,它的PN结是直接裸露在外头的,很容易接触静电。当LED两个电极上极性不同的电荷积累(产生电荷或者转移过来的电荷)到一 定的程度,又得不到及时释放,电荷能量一旦超过LED芯片最大承受值时,电荷将以极短的瞬间(纳秒级别)在LED两个电极层之间进行放电,产生功率焦耳的热量,在导电层之间局部(往往是电阻值最小、电极周边的)会形成1400℃以上的高温,高温将会把导电层之间熔融成一些小孔,从而造成漏电、暗亮、死灯、电性飘移等现象。   这个击穿LED的静电能量它并非就是一个高压,学术的讲是一个能量,它取决于电荷的量和的时间长短这两个核心系数。放电刹那的时间越短威力越大,电荷越多威力也越大。静电击穿LED是个非常复杂的过程,因此,测试LED抗静电时的模拟设计也是一项很复杂、很严谨的测试。   被静电击损后的LED如果是比较严重的往往是死灯、漏电。轻微的静电损伤,LED一般没有什么异常,但此时,该LED已经有一定的隐患,当它受到二次静电损伤时,那就会出现暗亮、死灯、漏电增大啦。   问:如何设计高品质LED驱动电路?   答:LED光源是一种长寿命光源,理论寿命可达50000小时,但应用电路设计不合理、电路 元器件 选用不当、LED光源散热不好,都会影响它的使用寿命。 特别是在应用电路里,作为AC/DC 整流桥 的输出 滤波器 的电解 电容器 ,它的使用寿命在5000小时以下,这就成了制造长寿命LED灯具技术的拦路虎,设计 生产可在应用电路里省去电解 电容 器的新一代LED驱动IC是可行的解决方案。   此外,对新一代LED驱动IC的设计必须打破传统的DC/DC拓扑结构设计理念,如采用恒功率、不采用磁滞控制的降压型而采用定频定电流控制、解决使用卤 素灯电子变压器所产生的灯源闪烁和多灯并联不亮问题等等;还必须解决LED驱动IC在多种应用电路中能过 EMC 、安规、CE、UL等认证;应用电路 应力 求 简洁、使用元器件少;隔离与非隔离的应用历来是商家在安全与效率之争焦点;提高PWM控制器的占空比等等。    问:选择和设计LED驱动电源时要考虑哪些因素?   答:LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压 直流、高压直流、低压高频交流(如电子变压器的输出)等。而LED驱动电源的输出则大多数为可随LED正向压降值变化而改变电压的恒定电流源。根据电网的用电规则和LED驱动电源的特性要求,在选择和设计LED驱动电源时要考虑到以下几点:   1.高可靠性:特别像LED路灯的驱动电源,装在高空,维修不方便,维修的花费也大。2.高效率:LED是节能产品,驱动电源的效率要高。对于电源安装在灯具内的结构尤为重要。因为LED的发光效率随着LED温度的升高而下降,所以LED的散热非常重要。电源的效率高,它的耗损功率小,在灯具内发热量就小,也就降低了灯具的温升。对延缓LED的光衰有利。3.高功率因素:功率因素是电网对负载的要求。一般70瓦以下的用电器,没有强制性指标。虽然功率小的单个用电器功率因素低一点对电网的影响不大,但晚上大家点灯,同类负载太集中,会对电网产生较严重的污染。对于30瓦~40瓦的LED驱动电源,据说不久的将来,也许会对功率因素方面有一定的指标要求。4.驱动方式:现在通行的有两种:一种是一个恒压源供多个恒流源,每个恒流源单独给每路LED供电。此方式,组合很灵活,一路LED故障,不影响其他 LED的工作,但成本会略高一点。另一种是直接恒流供电,LED串联或并联运行。它的优点是成本低一点,但是灵活性差,还要解决某个LED故障,不影响其他LED运行的问题。这两种形式,在一段时间内并存。多路恒流输出供电方式,在成本和性能方面会较好。也许是以后的主流方向。5.浪涌保护:LED抗浪涌的能力是比较差的,特别是抗反向电压能力。加强这方面的保护也很重要。有些LED灯装在户外,如LED路灯。由于电网负载的启 甩和雷击的感应,从电网系统会侵入各种浪涌,有些浪涌会导致LED的损坏。因此LED驱动电源要有抑制浪涌的侵入,保护LED不被损坏的能力。6.保护功能 电源除了常规的保护功能外,最好在恒流输出中增加LED温度负反馈,防止LED温度过高。7.防护灯具外安装型,电源结构要防水、防潮,外壳要耐晒。8.驱动电源的寿命要与LED的寿命相适配。9.要符合安规和电磁兼容的要求。 ---end--- ​
相关资源
  • 所需E币: 5
    时间: 2024-11-2 18:33
    大小: 10MB
    上传者: 明星
    在机械制造工业中,热处理在其中占有十分重要的地位,它是提高机器零件质量和延长使用寿命的关键工序,也是充分发挥金属材料潜力、节约材料的有效途径。
  • 所需E币: 3
    时间: 2024-7-17 21:05
    大小: 79.44KB
    上传者: anhuali678
    LDO的精心设计,使得可以使用固定的输出电容来保持LDO的稳定
  • 所需E币: 0
    时间: 2024-7-13 13:07
    大小: 1.59MB
    上传者: weixianghui
    GB-T-38661-2020电动汽车用电池管理系统技术条件
  • 所需E币: 2
    时间: 2024-6-5 08:49
    大小: 52.78KB
    上传者: ICDIEE
    示波器带宽增强技术理论指南
  • 所需E币: 0
    时间: 2024-2-28 12:01
    大小: 3.42KB
    Kubernetes,简称K8s,是一个开源系统,用于自动化部署、扩展和管理容器化应用程序。它提供了基本机制来部署、维护和扩展应用程序,支持跨多个主机的容器应用。K8s是Go语言开发的,建立在Docker之上,可以看作是Docker的上层架构。它的主要功能包括应用部署、维护、扩展,集群管理、安全防护、准入机制、多应用支撑、服务注册与发现、智能负载均衡、故障发现与自我修复、服务滚动升级、在线扩容、资源配额管理等。K8s通过容器的方式来管理应用程序,使得容器集群能够运行在用户期望的状态,并解决容器跨机器通信的问题。DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。容器技术是k8s中最关键的技术,通过容器技术可以将一台实体服务器资源虚拟化为多个隔离的容器,容器之间有较高的隔离级别,可像一台独立的服务器般部署程序并对外提供服务。简单来说,可以把容器简单视为一个特殊的进程,该进程与其他进程相隔离,在自己的命名空间下使用网络接口和文件,并且该进程只能使用硬件的部分资源。容器技术的基础是linux命令空间和cgroups,其中:(1)容器的隔离是基于linux命令空间来实现的,命名空间提供了一种内核级别隔离系统资源的方法,通过将系统的全局资源放在不同的命名空间中,来实现资源隔离的目的。不同命名空间的进程,可以享有一份独立的系统资源。(2)硬件资源的限制是通过cgroups实现的,cgroups是一个linux内核功能,它被用来限制一个进程或者一组进程的资源(cpu、内存、带宽等)使用,被限制的进程不能过分使用为其他进程保留的资源。容器技术与微服务概念相得映彰,微服务概念强调将一个大的系统拆分为若干微服务,每个微服务实现系统的特定功能,通过这个方式来减少系统的耦合。一般而言,一个微服务所需的系统资源并不需要很多,使用一个容器来部署一个微服务便成了一件很合适的事情,毕竟容器创建简单、资源可控,隔离性好、扩容方便。Kubernetes中的CRD(CustomResourceDefinition,自定义资源定义)允许用户扩展API服务器以支持新的自定义资源。使用CRD,用户可以定义自己的KubernetesAPI资源类型,并在Kubernetes集群中创建、管理和操作这些自定义资源。CRD的创建和使用通常涉及以下几个步骤:创建CRD定义:创建一个CRD定义文件,例如customresource.yaml,其中包含自定义资源的结构和属性。CRD定义文件使用KubernetesAPI对象的规范来定义自定义资源的模式、版本和行为。apiVersion:apiextensions.k8s.io/v1kind:CustomResourceDefinitionmetadata: name:mycustomresources.samples.example.comspec: group:samples.example.com versions:  -name:v1   served:true   storage:true scope:Namespaced names:  plural:mycustomresources  singular:mycustomresource  shortNames:  -mcrkube-scheduler调度过程和原理kube-scheduler是Kubernetes集群中的一个核心组件,负责根据预定义的调度策略将Pod分配到集群中的合适节点上运行。下面是kube-scheduler的调度过程和原理的简要描述:获取未调度的Pod:kube-scheduler会定期从KubernetesAPI服务器获取所有未调度的Pod的列表。筛选:kube-scheduler会对未调度的Pod进行筛选,剔除不符合调度要求的Pod。这包括检查系统保留节点、Pod的亲和性和反亲和性要求(如NodeSelector、NodeAffinity等)、污点(Taints)等。只有符合筛选条件的Pod才会进入下一步的调度过程。评分:对于剩下的可调度Pod,kube-scheduler会对每个节点进行评分,根据一系列算法为每个节点计算出一个分数。评分算法可以根据用户自定义的策略进行配置,常见的因素包括节点资源利用率、节点的可用性、亲和性和反亲和性等。选择节点:根据评分结果,kube-scheduler会选择具有最高分数的节点来运行Pod。如果多个节点具有相同的最高分数,kube-scheduler会根据预定义的调度策略(如最少负载、随机选择等)来决定最终的调度结果。更新调度结果:获取到调度结果后,kube-scheduler将更新Pod的调度信息,并将其更新到KubernetesAPI服务器中。这样其他组件(如kubelet)就会根据调度结果来将Pod放置到相应的节点上运行。监控和重调度:kube-scheduler会定期监控已调度的Pod以确保其正常运行。如果发现某个节点不可用或Pod处于非运行状态,kube-scheduler将重新进行调度,将Pod迁移到其他合适的节点上。kubernetes内部需要5套证书,手动创建或者自动生成,分别为:1.etcd内部通信需要一套ca和对应证书。2.etcd与外部通信也要有一套ca和对应证书。3.APIserver间通信需要一套证书。4.apiserver与node间通信需要一套证书。5.node和pod间通信需要一套ca证书。目前来说还不能实现把所有的业务都迁到kubernetes上,如存储,因为这个是有状态应用,出现错误排查很麻烦,所以目前kubernetes主要是运行无状态应用。所以一般而言,负载均衡器运行在kubernetes之外,nginx或者tomcat这种无状态的应用运行于kubernetes集群内部,而数据库如mysql,zabbix,zoopkeeper等有状态的,一般运行于kubernetes外部,通过网络连接,实现kubernetes集群的pod调用这些外部的有状态应用。Kubernetes引入Pod主要基于下面两个目的:-可管理性有些容器天生就是需要紧密联系,一起工作。Pod提供了比容器更高层次的抽象,将它们封装到一个部署单元中。Kubernetes以Pod为最小单位进行调度、扩展、共享资源、管理生命周期。-通信和资源共享Pod中的所有容器使用同一个网络namespace,即相同的IP地址和Port空间。它们可以直接用localhost通信。同样的,这些容器可以共享存储,当Kubernetes挂载volume到Pod,本质上是将volume挂载到Pod中的每一个容器。
  • 所需E币: 2
    时间: 2024-1-13 21:31
    大小: 341.63KB
    上传者: 电子阔少
    GB/T8897.02-2005原电池第2部分外形尺寸和技术要求9页0.3M.pdf
  • 所需E币: 2
    时间: 2024-1-13 21:39
    大小: 2.51MB
    上传者: 电子阔少
    劲量电池产品技术手册52页2.5M.pdf
  • 所需E币: 0
    时间: 2024-1-9 14:40
    大小: 2.77KB
    在现如今的信息化时代,相信各位读者对于“操作系统”这四个字并不陌生。例如我们常常使用的Windows、安卓、IOS、MacOS以及Linux等,都属于操作系统。操作系统,是现如今信息化时代中不可或缺的一种软件。Linux操作系统是一种开源的、基于Unix的操作系统。它最初由芬兰计算机科学家LinusTorvalds在1991年开发,并得到了全球范围内广泛的应用和支持。Linux操作系统具有稳定性、安全性、可靠性和灵活性等特点,广泛应用于服务器领域,也被许多个人用户选择作为他们的主要操作系统。Linux提供了丰富的命令行工具和图形界面,支持各种编程语言和软件开发环境,是一个非常强大而且自由开放的操作系统。操作系统是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合,操作系统是计算机系统中最基本的系统软件。操作系统(OperatingSystem,OS):是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统需要处理管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。下面我们进行代码实战,让大家更深入的理解操作系统的本质:<divclass="site-content__wrapper">  <mainclass="site-content"    :class="{'site-content--tabs':$route.meta.isTab}">    <el-tabsv-if="$route.meta.isTab"      v-model="siteContent.mainTabsActiveName":closable="true"      @tab-click="selectedTabHandle"      @tab-remove="removeTabHandle">      <el-tab-panev-for="iteminsiteContent.mainTabs"        :label="item.title":name="item.name">        <el-card:body-style="siteContent.siteContentViewHeight">          <router-view:key="router.currentRoute.value.query.random"/>        </el-card>      </el-tab-pane>    </el-tabs>    <el-cardv-else:body-style="siteContent.siteContentViewHeight">      <router-view:key="router.currentRoute.value.query.random"/>    </el-card>  </main></div>在框架页面的模型层中,定义removeTabHandle()封装函数。functionremoveTabHandle(tabName){  //让mainTabs数组剔除要关闭的Tab  siteContent.mainTabs=siteContent.mainTabs.filter(item=>item.name!==tabName);  //如果还存在剩余的Tab,就切换到最后的Tab上面  if(siteContent.mainTabs.length>=1){    //获取mainTabs数组最后一个元素    lettab=siteContent.mainTabs[siteContent.mainTabs.length-1];    //选中这个Tab控件    siteContent.mainTabsActiveName=tab.name;    //内容区切换引用的页面    router.push({name:tab.name});  }else{    siteContent.mainTabsActiveName='';    router.push({name:'MisHome'});  }}这个注解会拦截Web方法的请求,让SaToken验证客户端提交的Token令牌。如果令牌合法就允许调用Web方法,反之就拒绝HTTP请求,返回401状态码。@RestController@RequestMapping("/mis/user")publicclassUserController{  ……     @GetMapping("/searchUserSummary")  @SaCheckLogin  publicRsearchUserSummary(){    ……  }}在user.vue页面中,添加<el-dialog>标签,它可以实现弹窗的效果。<selectid="searchUsernameById"parameterType="int"resultType="String">  SELECTusername  FROMtb_user  WHEREid=#{userId}</select><updateid="updatePassword"parameterType="Map">  UPDATEtb_user  SETpassword=#{newPassword}  WHEREid=#{userId}   ANDpassword=#{password}</update>在com.example.his.api.mis.service.impl包UserServiceImpl.java类中,实现抽象方法。@ServicepublicclassUserServiceImplimplementsUserService{  ……  @Override  publicintupdatePassword(Mapparam){    intuserId=MapUtil.getInt(param,"userId");    Stringusername=userDao.searchUsernameById(userId);    MD5md5=MD5.create();    Stringpassword=MapUtil.getStr(param,"password");    Stringtemp=md5.digestHex(username);    StringtempStart=StrUtil.subWithLength(temp,0,6);    StringtempEnd=StrUtil.subSuf(temp,temp.length()-3);    password=md5.digestHex(tempStart+password+tempEnd).toUpperCase();    param.replace("password",password);    StringnewPassword=MapUtil.getStr(param,"newPassword");    newPassword=md5.digestHex(tempStart+newPassword+tempEnd).toUpperCase();    param.replace("newPassword",newPassword);    introws=userDao.updatePassword(param);    returnrows;  }}在com.example.his.api.mis.controller包UserController.java类中,声明Web方法。@RestController@RequestMapping("/mis/user")publicclassUserController{  ……  @PostMapping("/updatePassword")  @SaCheckLogin  publicRupdatePassword(@Valid@RequestBodyUpdatePasswordFormform){    intuserId=StpUtil.getLoginIdAsInt();    HashMapparam=newHashMap(){{      put("userId",userId);      put("password",form.getPassword());      put("newPassword",form.getNewPassword());    }};    introws=userService.updatePassword(param);    returnR.ok().put("rows",rows);  }}
  • 所需E币: 5
    时间: 2023-12-3 01:03
    大小: 88.56MB
    上传者: Alson
    《电工学第七版上册电工技术》.pdf
  • 所需E币: 0
    时间: 2023-11-29 14:22
    大小: 4.78KB
    大家好,今天我将给大家分享关于如何开发一个数据库系统的知识,将从0到1手把手带着一步步去开发这个项目,希望我的分享对大家的学习和工作有所帮助,如果有不足的地方还请大家多多指正。一、什么是数据库系统数据库系统一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成 二、数据库管理系统的主要功能包括数据定义功能:DBMS提供数据定义语言(DataDefinitionLanguage,DDL),用户通过它可以方便地对数据库中的对象进行定义数据组织、存储和管理:DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、数据的存取路径等。数据操纵功能:DBMS提-供数据操纵语言(DataManipulationLanguage,DML),用户可以使用DML操纵数据,实现对数据库的基本操作,如查询、插入、删除和修改等数据库的事务管理和运行管理:数据库在建立、运用和维护时由数据管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用以及发生故障后的系统恢复数据库建立和维护功能:数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监视、分析功能等。三、数据库系统结构1.1模式(概念模式或逻辑模式)定义:数据库中全体数据的逻辑结构特征的描述,是所有用户的公用数据库结构。特性:一个数据库只有一个模式模式与应用程序无关,只是数据的一个框架1.2子模式(外模式或用户模式)定义:数据库用户所见和使用的局部数据的逻辑结构和特征的描述,是用户所用的数据库结构特性:子模式是模式的子集一个数据库有多个子模式,每个用户至少使用一个子模式同一个用户可以使用不同的子模式,每个子模式可为不同的用户所用1.3内模式(存储模式)定义:是数据物理结构和存储方法的描述。它是整个数据库的最低层结构的表示。特性:一个数据库只有一个内模式,内模式对用户透明一个数据库由多种文件组成,如用户数据文件,索引文件及系统文件内模式设计直接影响数据库的性能以下是开发流程:在idea中构建如下几个子模块工程:@PostMapping("/doLogin")@ApiOperation(value="一键注册登录接口",notes="一键注册登录接口",httpMethod="POST")publicGraceJSONResultdoLogin(HttpServletRequestrequest,                HttpServletResponseresponse,                @RequestBody@ValidRegisterLoginBOregisterLoginBO,                BindingResultresult);验证的字段上方可以写一些相关的注解,系统识别后会自动检查RegisterLoginBO.javapublicclassRegisterLoginBO{  @NotBlank(message="手机号不能为空")  privateStringmobile;  @NotBlank(message="短信验证码不能为空")  privateStringsmsCode;  publicStringgetMobile(){    returnmobile;  }  publicvoidsetMobile(Stringmobile){    this.mobile=mobile;  }  publicStringgetSmsCode(){    returnsmsCode;  }  publicvoidsetSmsCode(StringsmsCode){    this.smsCode=smsCode;  }  @Override  publicStringtoString(){    return"RegisterLoginBO{"+        "mobile='"+mobile+'\''+        ",smsCode='"+smsCode+'\''+        '}';  }}如果校验有问题,那么可以直接获得并且放回给前端即可。BaseController.java/** *验证beanBO中的字段错误信息 *@paramresult *@return */publicMap<String,String>getErrors(BindingResultresult){  Map<String,String>map=newHashMap<>();  List<FieldError>errorList=result.getFieldErrors();  for(FieldErrorerror:errorList){    //发生验证错误所对应的某一个属性    StringerrorField=error.getField();    //验证错误的信息    StringerrorMsg=error.getDefaultMessage();    map.put(errorField,errorMsg);  }  returnmap;}一般来说,admin系统不会有主动注册功能,账号都是分配的,那么默认就会存在一个基本账户,这也是预先通过代码生成用户名和密码的。直接手动生成即可:<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>同理,查询操作也是类似JPA的操作,再继承Repository后直接使用其内置api即可:FriendLinkMngControllerApi.java@PostMapping("getFriendLinkList")@ApiOperation(value="查询友情链接列表",notes="查询友情链接列表",httpMethod="POST")publicGraceJSONResultgetFriendLinkList();首先可以在数据库通过写sql脚本实现查询SELECTc.idascommentId,c.father_idasfatherId,c.article_idasarticleId,c.comment_user_idascommentUserId,c.comment_user_nicknameascommentUserNickname,c.contentascontent,c.create_timeascreateTime,f.comment_user_nicknameasquoteUserNickname,f.contentasquoteContentFROMcommentscLEFTJOINcommentsfonc.father_id=f.idWHEREc.article_id='2006117B57WRZGHH'orderbyc.create_timedesc目前我们所搭建的eureka是单机单实例的注册中心,如果挂了,那么整个微服务体系完全不可以,这是不应该的,所以为了实现eureka的高可用,我们可以搭建集群。在进行集群构建之前,大家先参照目前的eureka再去构建一个一模一样的工程,可以取名为springcloud-eureka-cluster。为集群中各个eureka节点配置hosteureka: instance:  hostname:eureka-cluster-${port:7001}  #集群中每个eureka的名字都要唯一 #自定义eureka集群中另外的两个端口号 other-node-port2:${p2:7002} other-node-port3:${p3:7003} client:#  register-with-eureka:false#  fetch-registry:false  service-url:   #集群中的每个eureka单实例,都需要相互注册到其他的节点,在此填入集群中其他eureka的地址进行相互注册   defaultZone:http://eureka-cluster-${eureka.other-node-port2}:${eureka.other-node-port2}/eureka/,http://eureka-cluster-${eureka.other-node-port3}:${eureka.other-node-port3}/eureka/我们自己测试的时候时间可以设置为10秒内有10次,我认定非法请求,直接限制这个ip访问15秒,15秒后释放。(像有的网站会出现二维码让你扫描通过,或者手机验证码或者人机交互判断你当前是否是人还是机器,因为有可能是爬虫请求)开发步骤:首先在yml中设置基本参数:@OverridepublicObjectrun()throwsZuulException{  System.out.println("执行【IP黑名单】Zuul过滤器...");  //获得上下文对象requestContext  RequestContextrequestContext=RequestContext.getCurrentContext();  HttpServletRequestrequest=requestContext.getRequest();  //获得ip  Stringip=IPUtil.getRequestIp(request);  /**   *需求:   *判断ip在10秒内请求的次数是否超过10次,   *如果超过,则限制访问15秒,15秒过后再放行   */  finalStringipRedisKey="zuul-ip:"+ip;  finalStringipRedisLimitKey="zuul-ip-limit:"+ip;  //获得剩余的限制时间  longlimitLeftTime=redis.ttl(ipRedisLimitKey);  //如果剩余时间还存在,说明这个ip不能访问,继续等待  if(limitLeftTime>0){    stopRequest(requestContext);    returnnull;  }  //在redis中累加ip的请求访问次数  longrequestCounts=redis.increment(ipRedisKey,1);  //从0开始计算请求次数,初期访问为1,则设置过期时间,也就是连续请求的间隔时间  if(requestCounts==1){    redis.expire(ipRedisKey,timeInterval);  }  //如果还能取得到请求次数,说明用户连续请求的次数落在10秒内  //一旦请求次数超过了连续访问的次数,则需要限制这个ip了  if(requestCounts>continueCounts){    //限制ip访问一段时间    redis.set(ipRedisLimitKey,ipRedisLimitKey,limitTimes);    stopRequest(requestContext);  }  returnnull;}privatevoidstopRequest(RequestContextrequestContext){  //停止继续向下路由,禁止请求通信  requestContext.setSendZuulResponse(false);  requestContext.setResponseStatusCode(200);  Stringresult=JsonUtils.objectToJson(      GraceJSONResult.errorCustom(          ResponseStatusEnum.SYSTEM_ERROR_BLACK_IP));  requestContext.setResponseBody(result);  requestContext.getResponse().setCharacterEncoding("utf-8");  requestContext.getResponse().setContentType(MediaType.APPLICATION_JSON_VALUE);}上面这些都是通过不同key要执行多次才能得到结果,一般来说我们会使用es的aggs功能做聚合统计,会更好。通过一个脚本来统计男女数量:POSThttp://192.168.1.203:9200/fans/_doc/_search{  "size":0,  "query":{    "match":{      "writerId":"201116760SMSZT2W"    }  },  "aggs":{    "counts":{      "terms":{        "field":"sex"      }    }  }}以下就是数据库系统开发的整个流程讲解,感谢大家的阅读
  • 所需E币: 3
    时间: 2023-10-29 23:33
    大小: 3.78MB
    上传者: 宝藏库
    中科院-技术结构图谱2022
  • 所需E币: 0
    时间: 2023-10-26 10:01
    大小: 1.67KB
    无论你是数据库内核研发、DBA、还是后端研发,能够手写一套自己的数据库系统,都是你突破技术发展瓶颈的有效途径。[11章]技术大牛成长课,从0到1带你手写一个数据库系统课程将带你从架构设计,原理剖析,再到源码的实现,手把手带你构建一套完整的数据库系统,让你深度掌握数据库底层,及更多数据库高端技术,具备解决大量生产级数据库问题的能力,助力成为高端技术人才!从数据库架构设计到功能实现,吃透底层原理,解决大量生产级问题具备从0到1数据库系统的架构设计能力从需求分析,系统分析,到系统架构设计,以及面向未知故障场景防御式编程,灵活运用设计模式,全面深入理解数据库系统架构深度掌握数据库底层原理及系统性方法论掌握SQL语法解析、语义解析原理,数据库如何生成执行计划,数据库底层存储机制、事务管理机制,C/S架构网络服务,综合性提升数据库运维、调优能力提升大量生产级数据库问题高效解决能力深入掌握数据库索引调优思路、瓶颈点,如何快速定位线上问题,深入挖掘针对数据库的面试题,知其然更知其所以然,有效突破你的疑难杂症问题解决能力理论结合实际场景综合性落地,轻松吃透核心技术底层原理应用场景复用到日常开发场景中,如何运用高级数据结构、算法和设计模式,如何正确面对高并发进行编程,如何进行数据库的优化,如何理解数据库的执行计划分析慢SQL的原因等。原理剖析深度剖析数据库系统原理,将数据库几十年发展精髓拆解并呈现,端到端解析数据库系统中的各种工程trick,结合具体实现案例(MySQL/PostgreSQL/SQLite)展现系统级实现方案源码实战手把手实现每一行代码,掌握每行代码的原理,实现代码规模巨大的数据库系统原型,开发、debug过程演示真实传授解bug的核心方法论,探讨各种工程技巧、可优化的空间,引发深层思考多场景数据库解决方案,灵活解决大量生产级问题数据库性能及扩展评估数据库性能、扩展数据库功能特性、数据库扩展的方法和机制数据库优化分析数据库性能瓶颈、配置数据库索引、执行计划分析、分析系统硬件瓶颈大数据量存储如何进行数据存储、设计端到端大数据量存储方案、评估大数据量对数据库的影响数据库高可用数据库高可用的挑战、数据库WAL机制、WAL机制在数据库高可用中的应用数据库网络规划OS的网络模型、高效实现网络编程、数据库如何面对高并发挑战数据库故障定位定位数据库中故障的来源、如何对故障进行响应、进行数据库系统的高效运维
  • 所需E币: 2
    时间: 2023-10-22 13:59
    大小: 1.34MB
    上传者: 宝藏库
    自然语言处理的发展历史回顾Attention注意力机制的基本原理Transformer构建大模型的基石持续进化:从GPT-1到GPT-3能力突变:从ChatGPT到GPT-4未来展望:多模态和AIGC.
  • 所需E币: 0
    时间: 2023-9-17 15:39
    大小: 205.79KB
    上传者: 木头1233
    基于CH340N的USB转TTL模块-MINI-A技术手册
  • 所需E币: 0
    时间: 2023-9-17 15:29
    大小: 343.15KB
    上传者: 木头1233
    STC89C52单片机最小系统板-基础版技术手册
  • 所需E币: 0
    时间: 2023-8-31 14:52
    大小: 52.46MB
    上传者: 小Z爱学习
    抽样技术 SAMPLINGTECHNIQUE_13858701
  • 所需E币: 0
    时间: 2023-8-15 11:33
    大小: 330.91KB
    上传者: Aigtekatdz
    功率放大器超声椭圆无心磨削技术研究中的应用
  • 所需E币: 1
    时间: 2023-7-29 18:07
    大小: 46.01MB
    上传者: Argent
    蓝牙4.0技术介绍
  • 所需E币: 1
    时间: 2023-7-29 15:11
    大小: 3.27MB
    上传者: Argent
    准谐振和同步整流技术在反激变换器中的应用
  • 所需E币: 1
    时间: 2023-7-29 13:22
    大小: 8.81MB
    上传者: Argent
    电气控制与PLC应用技术课件资料合集