空降进阿里的P10,什么水平?

本文探讨了架构师最重要的能力——抽象思考,指出在面对复杂系统时,这种能力对于解决问题和设计高效架构至关重要。同时,强调了实际操作前的预演和计算在架构设计中的重要性。推荐了前阿里P10郭东白的《郭东白的架构课》,该课程涵盖了架构师的生存法则、价值创造、个人成长和思考力提升等方面,适合希望提升架构能力的程序员学习。

后台有读者问了我一个很有意思的话题:你觉得架构师最关键的能力是什么?

我以前经常聊架构师的事,但越来越不爱聊了,一方面是这些东西万变不离其宗,总聊没意思;另一方面林子大了,什么鸟都有,我心目中合格的架构师基本等同于团队中技术最厉害的人,然而现在不写代码、架构图逻辑不通、满嘴跑火车,给老板看的 ppt 吹得天花乱坠,给下边人看的文档写得狗屁不通的架构师居然大有人在。

甚至还有一些不太有节操的公司,直接把“架构师”作为研发岗位的前缀和后缀,伪装成高薪招人。我看不懂,但大受震撼。

扯远了,聊回来。架构师最关键的能力是什么?我认为是抽象思考能力。

写程序本身不难,我相信任何经过培训的人都能写得像模像样,但写好程序却非常难,因为系统越来越复杂,通过堆砌代码的方式来实现,很快就干不下去了,难度会成几何级数增长,解决这个问题的关键就是抽象思考能力。

身为架构师,脑子必须从头至尾都是最清醒的,系统再复杂,你都要能找到系统中那些不变的东西,把他们作为支点来架起整个系统的设计。通过把系统的组件划分到不同维度,不同层次实现封装“变化”。

而且,好的架构师是很会算的,而不是一切都靠“压测”。程序能够负载多大的规模和压力,超出这个负载能力,会出现怎样的问题,应该怎样解决,这个问题,照目前的发展速度,大概多久会出现……

在真刀真枪开始做事之前,在把想法落实并组装起来之前,牛逼的架构师就在脑子里推导过,在虚拟的空间里演练过,排除了各种问题,判断了各种可能性。毕竟,现实中做事的成本再低,都低不过脑子里的推演。

因此,架构师的抽象思维能力非常重要。当然,不仅仅是架构师,任何需要面对复杂系统的程序员都需要具备这一能力。

推荐前阿里P10郭东白最近完结的专栏《郭东白的架构课》给你,我上个月刚看完,它涵盖「项目经验、最佳实践、提升思考力」这三个架构师必须高度重视的能力纬度,对我启发很大。

阿白回顾在甲骨文、微软、亚马逊、阿里、车好多这二十多年的职业收获,分享了自己总结出来的架构方法论、诸多成长的方法和避坑原则,包括「架构师的六大生存法则」、「架构活动实施的八个关键节点」、「架构师能力提升的五大关键能力」等。

从刚上线火爆至今,已经有超过 2w 人学习了,课程容量很大,约 35w 字,听说明天就涨价到 ¥199 了,今天极客时间老用户到手仅 ¥90,新用户 ¥59,我赶紧趁着最后一波优惠推荐下。

79c1811df5b13d01ba370d1e2674e5ad.jpeg

👆长按扫码,免费试读👆

P10 大师课明天24点涨价至 ¥199

今日新用户仅 ¥59 ,速速拿下

郭东白经历了一个架构师职业发展的完整历程,从程序员做起,做过兼职架构师,也做过跨域架构师和总架构师,后来是 CTO ,履历非常牛逼,我贴出来给你看看:

学术方面:本科上海交通大学,硕士、博士布朗大学,在云计算、电商平台和算法等领域以第一、第二作者发表过 70 多篇论文和 1 部著作,是浙江大学计算机学院兼职教授和博导。

工作方面:在甲骨文公司(Oracle)任职超过 10 年;又在微软和亚马逊任职;

2014 年 9 月,郭东白以首席架构师的身份加入阿里巴巴速卖通(AliExpress),并于 2017 年 3 月晋升为 CTO;2018 年 12 月,郭东白升任 Lazada 集团 CTO,掌管负责分布在全球 6 个研发中心的超过 600 名工程师,并与阿里巴巴集团内部各部门合作以支持 Lazada 的业务增长。

 P10 在整个阿里大概只有 400 多个,CTO 就更是少了,更何况还是独立业务线的 CTO,含金量十足。

可能跟浓厚的学术背景有关,据说曾经专栏写作计划是 40 讲,后来思考过程越梳理越多,扩到了 67 讲,共 35 万字,其中还有跟快手高级副总裁于冰等技术大牛的视频访谈,课程容量爆炸。

整个专栏分为四个模块,覆盖架构师职业成长四个不同维度上的内容。

模块一:架构师的六大生存法则。东白结合自己几十年经历总结的作为一个架构师必须要尊重的六大原则。

模块二:架构师的价值创造。从大型架构项目实施层面上考虑,你作为一个架构师必须要关注和干预的重要节点,教你在架构活动中如何去创造价值。

模块三:专注到你个人,帮你规划在架构师这个职业上的成长。架构师成长的每个阶段面临的挑战都不一样,要解决问题的本质也不一样, 东白会结合自己在这些角色中的经历和观察总结,提出帮助你突破障碍、完成能力跃迁的具体建议。

模块四也就是最后一个模块:思考力。思考力作为架构师生存的核心能力,甚至可以说是未来任何职业的核心能力。东白提供了一些他和自己的团队提升思考质量的方法,包括逻辑思维、批判思维、逆向工程、反思、跨越边界和数据分析。

0aae407816908aa7fa76e48a80c84932.jpeg

具体详细内容,可以看看目录:

16b18669b243ccd0a95b31756e241ccb.jpeg

不光我觉得好,朋友圈好多大佬都在推荐,顺手截了些留言供你参考:

dcecc3e3981e750e437024446e07c5db.jpeg0fc06e89359e8ebe2a8db047bd311825.jpeg

再提醒一次:

专栏明天24点涨价至 ¥199

35w 字,67讲内容,好几场大牛视频访谈

现在极客时间老用户入手仅 ¥90,新用户仅 ¥59

强烈建议没在极客时间买过课的朋友别错过新人优惠

这波是入手的最好机会,抓住哈

6ebef973f5b2f1860b47fa3f2853bee3.jpeg

P10 大牛郭东白二十多年的架构经验,订阅了就可以无限回看,而且还能随时在文章下面留言提问,直接与阿白交流,非常值得购买。

如今很多技术人都想着当架构师,觉得挣钱多、权力大,抛开动机是否正确不谈,我更认同阿白说的架构师没有速成班。希望他的这些经验和原则,可以帮你提升思考力,做好取舍,少走一些弯路,多一些成功机会。

👇 点击「阅读原文」

免费试读,对话前阿里 P10

建立你的架构师成长战略

<think>我们正在讨论链接器脚本和内存区域相关的概念。用户之前询问了关于.zbss段的问题,具体是“.zbss uninitialized data, abs 18 addressing”的含义。 首先,我们需要解析这个描述: - `.zbss`:这是一个段名,通常表示零初始化的BSS段(Block Started by Symbol)。在嵌入式系统中,BSS段用于存放未初始化的全局变量和静态变量,或者显式初始化为0的变量。在程序启动时,这部分内存会被初始化为0。 - `uninitialized data`:未初始化数据,这印证了.zbss段的作用。 - `abs 18 addressing`:这里的关键是“abs 18”,它表示地址是绝对的(abs),并且可能是18位地址。在微控制器(如8位或16位单片机)中,内存地址空间可能采用分段或分页的方式,而18位地址意味着地址总线宽度为18位,可寻址空间为$2^{18}=256$KB。 在链接器脚本中,我们可能会看到类似这样的定义: ``` .zbss (NOLOAD) : { *(.zbss .zbss.*) } > memory_region ``` 而“abs 18 addressing”可能是指这个段被放置在绝对地址空间,且使用18位地址。 具体来说: - **绝对地址(abs)**:表示该段的地址在链接时确定,是固定的物理地址。与位置无关代码(PIC)相对,绝对地址意味着不需要重定位。 - **18位地址**:表明地址范围是0x00000到0x3FFFF(因为$2^{18}=262144$个地址,即256KB)。这种寻址方式常见于某些特定的微控制器架构,比如一些16位单片机(如MSP430X扩展寻址)或者某些8位单片机的扩展地址模式。 例如,在一些使用扩展地址的架构中,内存空间可能被分成多个块,18位地址可以覆盖更大的内存空间。传统的8位或16位处理器通常有16位地址总线(64KB),通过使用分页寄存器扩展为更大的地址空间(如18位),从而可以访问256KB的内存。 在链接器脚本中,我们可能会这样指定内存区域: ``` MEMORY { ZBSS_RAM (w) : ORIGIN = 0x20000, LENGTH = 0x8000 /* 假设起始地址为0x20000(18位地址) */ } ``` 那么,`.zbss`段就会被放置在这个区域中。 总结: - `.zbss`:未初始化(或零初始化)的数据段。 - `abs 18 addressing`:该段链接到18位绝对地址空间,即地址范围0x00000到0x3FFFF(256KB)内的一个固定地址。 相关问题: §§相关问题§§ 1. 在嵌入式系统中,.bss段和.zbss段有何区别? 2. 为什么需要零初始化数据段(.zbss)? 3. 18位地址空间在微控制器中是如何实现的? 4. 链接器脚本中如何为不同段指定绝对地址? </think>### .zbss段详解:未初始化数据与绝对18位寻址 #### 1. **.zbss段核心含义** `.zbss`是嵌入式系统中的特殊内存段,具有以下特性: - **未初始化数据存储区**:存放程序启动时**不需要显式初始化**的全局/静态变量(如`int global_var;`) - **零初始化保证**:在程序加载时由**启动代码自动清零**(区别于普通.bss段) - **内存优化设计**:不占用可执行文件体积(仅在运行时分配RAM) #### 2. **abs 18 addressing解析** - **绝对寻址 (abs)**:变量地址在**链接时固定**,不可重定位 示例:`0x2000_0000`(STM32的RAM起始地址) - **18位地址空间**:支持最大$2^{18} = 256 \text{KB}$ 寻址范围 $$ \text{地址范围} = 0x00000 \sim 0x3FFFF $$ 常见于16位/32位MCU(如TI MSP430X、某些ARM Cortex-M) #### 3. 技术实现图解 ```plaintext +---------------------------+ | Executable (.bin/.hex) | +-----------+-------+-------+ | | 不占存储空间 ↓ ↓ 不占存储空间 +-------+-------+ | .zbss | .bss | ← 运行时空降的零初始化区域 +-------+-------+ RAM地址: 0x20000000 ↑ ↑ 0x20000300 | | 绝对18位地址 ─┘ └─ 编译器自动分配 ``` #### 4. 链接器脚本示例 ```ld MEMORY { RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 256K /* 18位地址空间 */ } SECTIONS { .zbss (NOLOAD) : { _szbss = .; /* 段起始地址 */ *(.zbss*) /* 收集所有.zbss段 */ _ezbss = .; /* 段结束地址 */ } > RAM /* 定位到绝对地址RAM */ } ``` ▶ 启动代码需实现`.zbss`清零(通常用`__zero_memory`函数)[^1] #### 5. 与普通.bss段的区别 | 特性 | .zbss段 | .bss段 | |--------------|--------------------------|--------------------------| | 初始化方式 | 强制零初始化 | 可能含非零初始值 | | 文件体积 | 不占存储空间 | 不占存储空间 | | 应用场景 | 中断向量表/硬件寄存器 | 普通全局变量 | | 访问速度 | 通常需cache一致性操作 | 直接访问 | | 典型编译器 | IAR/Keil专用 | GCC通用 | ### 典型应用场景 ```c /* 在.zbss段声明变量 */ __attribute__((section(".zbss"))) volatile uint32_t system_tick_count; // 必须零初始化的系统计数器 void SystemInit() { // 启动代码自动清零system_tick_count while(1) { system_tick_count++; // 直接访问绝对地址 } } ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值