livedatabus详解,阿里是如何用他来做淘宝架构的?(1)

YOLO26优化:FPN涨点&轻量化篇 |多级特征融合金字塔(HS-FPN),助力小目标检测 高层筛选特征金字塔网络(HS-FPN),能够刷选出大小目标,增强模型表达不同尺度特征的能力,助力小目标检测 阅读详情

如果把异步获取到的数据封装成 Flowable,通过toLiveData方法转换成 LiveData,既利用了 RxJava 的线程模型,还消除了 Flowable 与 UI Controller 生命周期的耦合关系,借助 Data Binding 再把 LiveData 绑定到 xml UI 元素上,数据驱动 UI,妥妥的响应式。于是一幅如下模样的数据流向图就被勾勒了出来:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图中右上角的 Local Data 是 AAC 提供的另一个强大武器 —— ORM 框架 Room。

Room

数据库作为数据持久层,其重要性不言而喻,当设备处于离线状态时,数据库可用于缓存数据;当多个 App 需要共享数据时,数据库可以作为数据源,但是基于原生 API 徒手写 CRUD 实在是痛苦,虽然 Github 上出现了不少 ORM 框架,但是它们的易用性也不敢让人恭维,直到 Room 出来之后,Android 程序员终于可以像 mybatis 那样轻松地操纵数据库了。

Room 是 SQLite 之上的应用抽象层,而 SQLite 是一个位于 Android Framework 层的内存型数据库。虽然 Realm 也是一个优秀的数据库,但是它并没有内置于 Android 系统,所会增大 apk 的体积,使用 Room 则没有这方面烦恼。

Room 的结构抽象得非常简单,数据对象(表名 + 字段)用**@Entity注解来定义,数据访问用@Dao来注解,db 本身则用@Database来定义,如果要支持复杂类型,可以定义@TypeConverters**,然后在编译阶段,apt 会根据这些注解生成代码。

Entity 是一个数据实体,表示一条记录,它的用法如下:

@Entity(tableName = “actors”)

data class Actor(

@PrimaryKey @ColumnInfo(name = “id”)

val actorId: String,

val name: String,

val birthday: Date?,

val pictureUrl: String

)

Actor是一个用**@Entity注解的 data class,它会生成一个名字是actors的表,注意到有一个字段是@Date**?,但是 SQLite 本身不支持这种复杂类型(complex type),所以我们还需要写一个可以转换成基础类型的转换器:

class Converters {

@TypeConverter

fun timestampToDate(value: Long?) = value?.let { Date(it) }

@TypeConverter

fun dateToTimestamp(date: Date?) = date?.time

}

转换器通过**@TypeConverters可作用于 class、field、method、parameter,分别代表不同的作用域。比如作用在@Database类的上,那么它的作用域就是 db 中出现的所有@Dao和@Entity**。

@Database(entities = [Actor::class], version = 1, exportSchema = false)

@TypeConverters(Converters::class)

abstract class AppDatabase : RoomDatabase() {

abstract fun actorDao(): ActorDao

}

代码出现的ActorDao定义了 CRUD 操作。用**@Dao**来注解,它既可以是一个接口,也可以是抽象类,用法如下:

@Dao

interface ActorDao {

@Query(“SELECT * FROM actors WHERE id = :actorId”)

fun getActor(actorId: String): LiveData

@Insert(onConflict = OnConflictStrategy.REPLACE)

fun insertAll(actors: List)

}

@Query中的 SQL 语句可以直接引用方法参数,而且它的返回值可以是LiveData类型,也支持Flowable类型,也就是说,Room 原生支持响应式,这是对数据驱动最有利的支持,也是 Room 区别于其他 ORM 框架的显著特征。

至此,我们可以确定,无论数据来自 Remote 还是来自本地 DB,架构蓝图中的 Repository 对 ViewModel 提供的数据可以永远是 LiveData 类型,接下来我们看一下 ViewModel 的妙用。

ViewModel

ViewModel 是一个多面手,因为它的生命周期比较长,可以跨越因为配置变动(configuration changed,比如屏幕翻转)引起的 Activity 重建,因此 ViewModel 不能持有对 Activity / Fragment 的引用。

如果 ViewModel 中要用到 context 怎么办呢?没关系,框架提供了一个 ViewModel 的子类AndroidViewModel,它在构造时需要传入Application实例。

既然 ViewModel 与 UI Controller 无关,当然可以用作 MVP 的 Presenter 层提供 LiveData 给 View 层,因为 LiveData 绑定了 Lifecycle,所以不存在内存泄露的问题。除此之外,ViewModel 也可以用做 MVVM 模式的 VM 层,利用 Data Binding 直接把 ViewModel 的 LiveData 属性绑定到 xml 元素上,xml 中声明式的写法避免了很多样板代码,数据驱动 UI 的最后一步,我们只需要关注数据的变化即可,UI 的状态会自动发生变化。

ViewModel 配合 Data Binding 的用法与 React 非常相似,ViewModel 实例相当于state,xml 文件就好比render函数,只要state数据发生变化,render就会重新渲染 UI,但是 data binding 还有更强大的一点,它支持双向绑定。举个例子,UI 需要展示一个评论框,允许展示评论,也允许用户修改,那么我们可以直接把EditText双向绑定到一个 LiveData 之上,只要用户有输入,我们就可以收到通知,完全不需要通过 Kotlin/Java 来操控 UI:

<TextInputEditText

android:text=“@={viewModel.commentText}” />

注意,如果要在 xml 中使用 LiveData,需要把 lifecycle owner 赋给 binding:

val binding: MainBinding = DataBindingUtil.setContentView(this, R.layout.main)

// Specify the current activity as the lifecycle owner.

binding.setLifecycleOwner(this)

因为 ViewModel 拿到的数据是 Repository 给的,可能不适用于 UI 元素,所以 ViewModel 还承担了数据适配的工作,有时候我们需要汇总 repository 的多个返回值一次性给到 UI,那么就可以使用 LiveData 的“操作符”Transformations.switchMap,用法可以认为等同于 Rx 的flatMap;如果只想对 LiveData 的 value 做一些映射,可以使用Transformations.map,目前 Transformations 只有这两个操作符,因为不管 Kotlin 还是 Java8,都提供了很多声明式的操作符,对流的支持都比较友好,而LiveData本身不是一个流,所以这两个操作符足矣。

除了数据适配之外,ViewModel 还有一个强大的用法 —— Fragment 之间共享数据,这样 ViewModel 又扮演了 FLUX 模式中的 store 这一角色,是多个页面(fragment)之间唯一的数据出口。

ViewModel 的用法也非常简单,通过ViewModelProviders.of可以获取 ViewModel 实例:

val viewModel = ViewModelProviders.of(requireActivity(), factory)        .get(ActorViewModel::class.java)

一通操作猛如虎之后,UI controller 层变得薄如蝉翼,它只做了一件事情,把数据从左手(ViewModel)倒给了右手(使用了 Data Binding 的 xml)。

如果把 ViewModel 作为 SSOC(唯一真相源),多个 Fragment 之间共享数据,再利用 SingleLiveEvent 做总线,一个 Activity 配多个 Fragment 的写法就避免了 Activity 之间通过 Intent 传递数据的繁琐。但是 Fragment 的堆栈管理一直是一个让人头疼的问题,AAC 的 Navigation 不但完美解决了这个问题,而且还提供可视化的路由,只需拖拽一下就能生成类型安全的跳转逻辑。

Navigation

Navigation 用一个图(graph)来表示页面间的路由关系,图的节点(node)表示页面,边(edge)表示跳转关系。

页面与页面之间的连线叫 action,它可以配置进离场动画(Animations),也可以配置出栈行为(Pop Behavior),还支持 Single Top 的启动选项(Launch Options)。进离场动画和启动选项很好理解,出栈行为是一个比较强大的功能,action 箭头所指的方向表示目标页面入栈,箭头的反方向则表示目标页面出栈,而出栈的行为在 Navigation 编辑器中完全可控,我们可以指定要出栈到哪个页面,甚至可以指定目标页面是否也需要出栈:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

针对页面节点,还可以定义它要接收的参数(arguments),支持默认值,从此 Fragment 之间的参数传递变得非常直观,非常安全。

看一下具体用法,首先在跳转发起页面,通过 apt 生成的跳转函数传入参数:

val actorId = getSelectedActorId()

val direction = ActorListFragmentDirections.showDetail(actorId)

findNavController().navigate(direction)

然后利用目标页面生成的*Args获取参数:

private val args: ActorDetailFragmentArgs by navArgs()

这里的 navArgs 是一个扩展函数,利用了 Kotlin 的 ReadWriteProperty。

几行代码就搞定了页面之间的跳转,而且还是可视化!从没有想过 Android 的页面跳转竟会变得如何简单,但是 Navigation 的方案并不是原创,iOS 的 Storyboard 很早就支持拖拽生成路由。当年 Android 推出 ConstraintLayout 之时,我们都认为是参考了 Storyboard 的页面拖拽,现在再配上 Navigation,从页面到跳转,一个完整的拖拽链路就形成了。平台虽然有差异化,但是使用场景一致的前提下,解决方案也就殊途同归了。

了解完了与生命周期有关的组件,接下来我们来看细节。

Paging

UI 没有办法一次性展示所有的数据,端上的系统资源(电量、内存)也有限制,不可能把所有数据都加载到内存中;而且大批量请求数据不但浪费带宽,在某些网络情况(弱网、慢网)下还会导致请求失败,所以分页是很多情景下的刚需。Github 上有各式各样的解决方案,这一次,Google 直接推出了官方的分页组件——Paging。

Paging 将分页逻辑拆解为三部分:

  • 数据源 DataSource

  • 数据块 PagedList

  • 数据展示 PagedListAdapter

DataSource 的数据来源于后端服务或者本地数据库,并且用三个子类来表示三种分页模式:

PageKeyedDataSource - 单页数据以 page key 为标识,例如当前页的 Response 中包含了下一页的 url,这个 url 就是 page key。

ItemKeyedDataSource - 单页数据以 item key 为标识,比如下一页的请求要带当前页最后一个 item 的 id,这个 itemId 就是 item key。

PositionalDataSource - 单页数据以位置为标识,这种模式比较常见,Room 只支持这一种,因为数据库查询以 OFFSET 和 LIMIT 做分页。

PageKeyedDataSource 和 ItemKeyedDataSource 适用于内存型数据,比如直接从后端获取后需要展示的数据。PositionalDataSource 适用于本地 Room 数据或者使用 Room 做缓存的 Cache 数据。

数据流向的关系图如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

LivePagedListBuilder利用DataSource.Factory和PageList.Config创建 LiveData,UI Controller 拿到数据之后交给PagedListAdapter展示到 RecyclerView。

上图表达了数据的流向,如果从 UI 层往回看,页面展示的数据存储在 PagedList 中,PagedList 只是 DataSource 的数据块(chunk),当 PagedList 需要更多数据时,DataSource 就会给更多,当 DataSource 一无所有时便会触发BoundaryCallback获取更多数据,直到数据全部展示完毕。

LivePagedListBuilder 会将PagedList包装成**LiveData**给到下游,它在整个数据交互链路中的位置

Repository 拿到 Dao 的 DataSource.Factory 之后,调用它的 toLiveData 方法并传入 PagedList.Config,然后生成一个分页的 LiveData 交给 ViewModel 层。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

文末

那么对于想坚持程序员这行的真的就一点希望都没有吗?
其实不然,在互联网的大浪淘沙之下,留下的永远是最优秀的,我们考虑的不是哪个行业差哪个行业难,就逃避掉这些,无论哪个行业,都会有他的问题,但是无论哪个行业都会有站在最顶端的那群人。我们要做的就是努力提升自己,让自己站在最顶端,学历不够那就去读,知识不够那就去学。人之所以为人,不就是有解决问题的能力吗?挡住自己的由于只有自己。点击我的GitHub下述资料免费领取
Android希望=技能+面试

  • 技能

  • 面试技巧+面试题
    读,知识不够那就去学。人之所以为人,不就是有解决问题的能力吗?挡住自己的由于只有自己。点击我的GitHub下述资料免费领取
    Android希望=技能+面试

  • 技能
    [外链图片转存中…(img-VOt1B1JE-1710668765048)]

  • 面试技巧+面试题

视觉自动对焦(Z 轴运动 + 相机拍照 + 清晰度计算) 的核心程序 控制 Z 轴匀速扫动一段距离,在移动过程中等间距触发相机拍照,后台计算每张图的清晰度,最后移动到最清晰的位置,完成自动对焦。 阅读详情

相关推荐

基于TDOA的chan算法(定位算法)

Chan算法原理 TDOA(TDOA,the time differences of arrival,到达时间差),Chan算法是TDOA定位方法的一个很好用的方法。 Chan算法是非递归双曲线方程组解法,具有解析表达式解,主要特点是:在测量误差服从理想高斯分布时,它的定位精度高、计算量小,并且可以通过增加已确定点的数量来提高算法精度。 该算法的推导前提是基于测量误差为零均值高斯随机变量,对于实际环境中误差较大的测量值,比如在有非视距误差的环境下,该算法的性能会有显著下降。二维情况下,可分为只有三个点参与定

优快云不再更新 2万+

livedatabus详解,阿里是如何用他来做淘宝架构的?

Database。

ainingmeng的博客 1214

VMware ubuntu虚拟机(或Centos7)与主机共享文件夹

系统环境 Windows 10 Vmware Workstation 15 Pro Ubuntu 20.04.1 LTS centos7 1.Ubuntu配置共享文件 1.1安装VMware-tools 更新最新VMware-tools组件 编辑->首选项->更新->立即下载所有组件 安装VMware-tools 虚拟机->安装VMware-tools 安装后ubuntu会加载一个虚拟光驱,解压文件,在解压的文件目录下执行以下命令进行安装 sudo vmware-instal

weixin_38924500的博客 2160

livedatabus详解,阿里是如何用他来做淘宝架构的?,高级安卓开发面试题

Database。

芯_v_648374雨馨博客 689

深入解析组合逻辑环(combinational loop)的成因与解决方案

本文深入解析了数字电路设计中组合逻辑环(combinational loop)的成因与危害。通过边沿检测和中断轮询(round_robin)仲裁器等实例,揭示了代码如何意外形成环路,并对比了插入触发器、重构逻辑以及状态机思维三种核心解决方案,帮助硬件工程师从根本上避免这一常见设计陷阱,确保电路稳定可靠。

weixin_28278377的博客 313

AD创建属于自己的元件库(详细)

我今天开始学习AD2022,但是我想自己创建属于自己的元件库,但是奈何找了好多教程就是随便几句话就把我打发走了,弄了一天都没搞定(也许是我比较菜),所以现在乱懂了,自己写一个属于我们自己小白的教程,希望有用吧哈哈我比较偷懒,直接使用嘉立创上画好的元件导入,和我们自己创建自己画的步骤其实都一样。

qq_33591173的博客 2万+

高危工业场景人员定位系统设计:四类场景的架构选型与部署要点

本文由航飞光电一线工程团队整理,重点讨论高危工业场景下人员定位系统的架构选型思路。覆盖危化、矿山、港口、电力四类场景,拆解技术路线分工、融合引擎跨区切换实现,以及私有化/本地化部署中的工程难点,供架构师与技术负责人参考。

HF17513371855的博客 367

5分钟搞定Google Custom Search API申请:从注册到获取CX Key全流程

本文详细介绍了如何快速申请和配置Google Custom Search API,从Google Cloud项目创建、启用计费、获取API Key,到在Programmable Search Engine控制台创建自定义搜索引擎并获取关键的CX Key,提供了全流程实战指南。文章还包含安全配置建议、API调用测试方法及前端与后端的集成代码示例,帮助开发者高效实现网站或应用的智能搜索功能。

weixin_29227585的博客 1667

【STM32】 ADC 完全指南:从模拟信号采样量化到五大架构原理

本文系统介绍ADC核心概念与五大主流架构。模拟信号具时间与幅值连续性,需经采样(满足奈奎斯特准则防混叠)、量化(引入±1/2LSB误差,SNR≈6.02N+1.76dB)、编码三步转为数字信号。重点解析Flash(并行高速但受限于比较器数量)、SAR(逐次逼近,低功耗适合MCU如STM32)、双积分(高精度抗工频,用于万用表)、流水线(高速吞吐)及Σ-Δ(高分辨率,靠过采样与噪声整形)五类架构原理、优缺点与应用场景。强调分辨率≠精度,选型本质是速度、精度、功耗与面积的权衡。

专注后端与底层技术,分享实战干货与学习笔记,梦想进入字节跳动,步履不停,热爱不止。 496

STM32CubeMX HAL实战:JY901S串口数据解析与姿态解算

本文详细介绍了如何使用STM32CubeMX HAL库实现JY901S六轴姿态传感器的串口数据解析与姿态解算。从基础硬件连接到USART3配置,再到数据接收状态机实现和传感器校准方法,最后深入讲解互补滤波与Mahony滤波算法在姿态解算中的应用。通过实战代码演示,帮助开发者快速掌握无人机、机器人等项目中关键姿态数据处理技术。

weixin_28703489的博客 432

[Dify实战] 招聘筛简历机器人:自动筛选、排序、生成面试要点-带绑定资源

摘要:本文介绍了如何利用Dify优化简历筛选流程,解决人工筛选耗时、标准不统一等问题。通过结构化输出"评分+亮点+风险+面试关注点",将主观判断转化为规则化流程。关键步骤包括:设计标准化Prompt、配置权重排序策略、确保公平合规性、与ATS系统对接,以及持续优化评估指标。该方法能显著提升筛选效率(缩短招聘周期)、增强一致性(避免主观偏差),并为面试官提供结构化参考信息,最终实现更高效精准的人才筛选。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 581

热管理系列之八:终局判断 - 浸没式冷却、混合架构与技术路线图

动力电池热管理三条路径的终局判断:液冷极致优化守住基盘,直冷在中高端渗透,浸没式冷却从概念到量产。附2026-2030技术路线图与关键产业信号分析。

weixin_54917114的博客 1151

基于STM32单片机的环境监测系统设计与实现

综上所述,基于STM32单片机的环境监测系统具有良好的实时性、准确性和稳定性,能够满足环境监测的需求。本系统的研究意义在于,首先,它能够为用户提供准确的室内空气质量信息,帮助用户了解室内环境的质量状况,从而采取相应的措施来改善室内环境。本文设计并实现了一种基于STM32单片机的环境监测系统,该系统能够实时监测并显示室内环境的温湿度、甲醛浓度以及二氧化碳浓度,为用户提供准确的空气质量信息。实验过程中,我们模拟了不同的环境条件,包括温湿度变化、甲醛和二氧化碳浓度的波动等,以测试系统的实时性、准确性和稳定性。

3254968421的博客 2万+

零信任架构实战:基于天远运营商三要素详版V即时版构建自动化线上授信身份核验网关

破解线上信贷身份核验痛点:从离散证件图片审查到运营商三要素详版数据穿透直连 在互联网消费金融、小额循环信用贷款以及各类纯线上数字化授信平台的业务演进过程中,移动端进件的身份真实性校验是构筑整体合规风控体系的第一道关键屏障。随着移动互联网的高度普及,个人信贷申请全面向移动端 App、微信小程序以及轻量级 Web 门户迁移,“秒级审批、免抵押、纯线上放款”成为了

2501_94041864的博客 160

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

AI高密度算力推动冷却架构升级,全球数据中心高功率CDU市场CAGR达23.0%

QYResearch调研显示,2025年全球数据中心高功率CDU市场规模大约为2.04亿美元,预计2032年将达到9.97亿美元,2026-2032期间年复合增长率(CAGR)为23.0%。未来几年,本行业具有很大不确定性,本文的2026-2032年的预测数据是基于过去几年的历史发展、行业专家观点、以及本文分析师观点,综合给出的预测。

QYR_11的博客 193

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

政务知识库AI架构选型:强合规约束下的架构决策与落地路径

政务知识库是典型的强合规导向场景,架构选型的第一原则是「合规一票否决」:安全优先级高于效果,可控性优先级高于体验,所有技术决策必须先通过等保、密评、信创、数据不出域四大硬性红线校验,再在此基础上优化检索准确率与用户体验。对应部署在互联网政务服务域、政务外网办公域、涉密内网核心域,三域物理隔离,数据仅能通过审批流程单向摆渡,禁止跨网调用模型与流转数据。• 放弃通用文档加载器,基于公文格式标准开发定制化结构化解析器,自动提取文号、标题、发文机关、成文日期、生效日期、密级、主题词等元数据,与分片内容绑定入库。

2401_89363342的博客 367

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

零信任架构实战:基于天远单人婚姻查询构建自动化智慧住房资格核验网关

破解公租房资格核查痛点:从传统纸质婚姻凭证抽检到权威民政数据穿透直连 在智慧城市公共租赁住房(公租房)、保障性租赁住房以及共有产权房等民生保障工程中,保障房资源的公平精准分配是住房保障管理中台的核心职责。按照现行住房保障准入政策,申请主体的家庭结构直接决定了配租资格准入与面积配给标准:单身家庭申请人通常享有特定的单人保障配额与独立的财产评估标准,要求申请人具

2501_94042197的博客 195

“伪私有化”的技术甄别:模型API外调与本地推理的架构差异

企业采购AI Agent平台时,“支持私有化”几乎成了标配话术。但“私有化”三个字背后,可能藏着一条你看不见的出站链路:管理后台在你的内网,模型推理却调用了外部API。这不是私有化,是“伪私有化”。本文从网络层、进程层、数据层和审计层四个维度,拆解模型API外调与本地推理的架构差异,给出可落地的技术甄别方法,附代码示例、状态机设计和熔断机制。

2501_93684580的博客 107

Qt网络编程实战指南:从底层Socket到现代异步架构的选型与避坑

本文梳理Qt网络编程的核心模块与演进路线,对比QTcpSocket与QNetworkAccessManager的使用边界,结合HTTP请求与TCP长连接的完整示例,说明信号槽、内存管理与事件循环的配合方式。重点记录连接池设计、证书校验、线程亲和性等实际开发中的关键决策点,帮助读者在C/S或跨平台项目中建立稳定的网络层基座。

2402_83344867的博客 289

斯坦福 AI Agent 开发课程指南:从底层架构、工程实践到自主智能体

Agent 开发正在从框架调用走向系统工程。早期学习 Agent,可能只需要掌握 Prompt Engineering、Function Calling,以及 LangChain 等框架。如何设计稳定的任务执行循环。如何管理上下文与长期记忆。如何组织工具、环境和多 Agent 协作。如何保证长时间任务执行的可靠性。如何科学评估 Agent 的效果。如何优化成本、延迟与资源利用。如何持续提升系统能力。因此,

hello! 235

RDIMM、LRDIMM、UDIMM深度对比:寄存器架构、容量上限与平台适配

UDIMM、RDIMM与LRDIMM虽外形相同,但电气架构差异决定其性能与容量上限。UDIMM无缓冲,延迟低但容量受限;RDIMM通过RCD缓冲命令/地址,提升容量;LRDIMM进一步用数据缓冲器(DB)全链路减负,实现超大容量。三者互不兼容,平台适配严格,选型必须“平台先行”,类型错误无法通过降频或混插弥补。核心逻辑:先确认平台支持类型,再优化容量与频率,类型正确才是性能发挥的前提。

JGTX2706的博客 267
上一篇: Flutter布局分析,Android面试基础技能罗列
下一篇: 【收藏】2024年Android跳槽大厂必备宝典(1)
普通网友
博客等级 码龄6年 3799粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值