C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南现代 CMake 模块化项目管理指南 彭于斌( @archibate ) 课件 & 源码: https://github.com/parallel101/course 往期录播: https://space.bilibili.com/263032155 找不到头文 件怎么办呀 CMake Cookbook 小彭老师建议 : ~~-·~·~-·~ -~·-·~·- 第一章:文件 / / 目录组织规范 基于 CMake 的 C/C++ 项目,如何优雅地、模块化地组织大量源文件 ? 推荐的目录组织方式 • 目录组织格式: • 项目名 /include/ 项目名 / 模块名 .h • 项目名 /src/ 模块名 .cpp • CMakeLists.txt 中写: • target_include_directories( 项目名 PUBLIC include) • 源码文件中写:0 码力 | 56 页 | 6.87 MB | 1 年前3
GoFrame框架介绍及设计成都医联科技 架构师 目 录 框架介绍 01 模块化设计 02 统一框架设计 03 代码分层设计 04 对象封装设计 05 DAO封装设计 06 未来发展规划 07 框架介绍 第一部分 • 框架介绍 • 框架架构 • 项目初心 框架介绍 GoFrame是一款模块化、高性能、企业级的Go基础开发框架。 • 模块化、松耦合 • 模块丰富、开箱即用 • 简洁易用、快速接入 跨平台性:基于Golang开发语言强大跨平台特性 框架介绍-项目初心 工程化建设 统一框架 核心组件 项目架构 设计模式 开发规范 开发文档 开发工具 …… 模块化设计 第二部分 • 复用原则 • 单仓包设计 • 模块聚合设计 • 常见问题 模块化设计 什么是模块? 模块化的目标? 模块也称作组件,是软件系统中可复用的功能逻辑封装单位。 在不同的软件架构层次,模块的概念会有些不太一样。 在开发框架层 在开发框架层面,模块是某一类功能逻辑的最小封装单位。 在Golang代码层面中,我们也可以将package称作模块。 软件进行模块化设计的目的, 是为了使得软件功能逻辑尽可能的解耦和复用, 终极目标也是为了保证软件开发维护的效率和质量。 模块化设计-复用原则 REP 发布等同原则 (Release/Reuse Equivalency Principle) 软件复用的最小粒度应等同于其发布的最小粒度。0 码力 | 37 页 | 8.84 MB | 1 年前3
1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台的核⼼架构师 - 开源爱好者, Apache SkyWalking PMC 成员 ⽬ 录 ⾯向云原⽣的软件交付 01 端点⼀站式 PaaS - Erda 02 Erda 架构的思考 03 模块化开发框架 04 开源新时代的挑战 05 ⾯向云原⽣的软件交付 第⼀部分 ⾯向云原⽣的企业软件产品 - 敏捷开发 - 微服务化和容器化 - 交付标准化 - 可观察性 特点: 敏捷的⽬标是提升研发效能 议 - 即将⽀持 skywalking 和 opentelemetry 弹性监控架构 模块化开发框架 第四部分 什么是 Erda Infra 开发框架 Erda Infra 是⼀套轻量级 Go 微服务框架,包含⼤量现成的模块和⼯具,能够快速构 建起以模块化驱动的应⽤程序。 • 以模块化设计⽅式来驱动应⽤系统实现,⽀持模块可插拔 • 统⼀配置读取,⽀持默认值、⽀持从⽂件、环境变量、命令⾏参数读取 提供快速构建模块的代码⽣成⼯具 Erda Infra 如何设计 Erda Infra 有什么不同 - 不是重复造轮⼦ - 不仅是web框架 - 不仅是微服务框架 - 为扩展⽽⽣ - 以模块化的开发为核⼼ VS 模块化开发原则 - ⾯向接⼝进⾏开发,⽽不是⾯向实现 - 模块拆分的粒度尽可能⼩ - 模块内聚,模块间松耦合 - 模块间的引⽤使⽤DI⽽不是直接依赖实现包 - 服务可以由多个模块拼装组成0 码力 | 40 页 | 8.60 MB | 1 年前3
RISC-V 开放架构设计之道 1.0.0定义了什么,以及为什么要这么 定义。这本书仅用一百多页(其他架构书籍的三分之一的篇幅)就讲清楚了 RISC-V, 并且原汁原味地解释了 RISC-V 架构与其他架构的不同之处,同时也很好地阐释了 RISC-V 的模块化、扩展性和先进性。 这本书非常适合刚开始学习 RISC-V 架构的学生,是一本非常浅显易懂的教材, 它可以作为计算机体系结构的学习用书之一。在《计算机体系结构:量化研究方法》 中,我们已经可以学习到 非常适合 刚开始学习 RISC-V 的软硬件工程师。本书包含 RISC-V 指令的精确定义,在使用 RISC-V 指令时可以作为随时备查的工具手册。本书内容组织方式高效,按照 RISC-V 模块化的指令定义展开,读者可以按照自己感兴趣的领域有选择地阅读。 本书的出版时间也是恰到好处。我从 2017 年开始接触 RISC-V,亲身经历了 RISC-V 技术高速发展的过程:才 5 年多的时间,RISC-V 公司私有,而是由一 个统一的非营利组织作为主导者和核心规则制定者,任何公司和个人均可免费使用 该架构,无须向任何商业公司支付高昂的授权费。RISC-V 遵循 “大道至简” 的设计 哲学,通过模块化和可扩展的方式,既保持基础指令集的稳定,又保证扩展指令集的 灵活配置,在简洁性、实现成本、功耗、性能和程序代码量等各方面都有较显著的优 势。从最简单的小面积、低功耗的嵌入式微控制器,到功能强大的服务器,都可以基0 码力 | 223 页 | 15.31 MB | 1 年前3
RISC-V 手册 v2(一本开源指令集的指南)........................................................................................ 13 1.2 模块化与增量型 ISA .......................................................................................... ,介绍模块化 RISC-V 指令集的每个组 成部分的十章只用了 100 页——即便为了有助于快速阅读,平均每页用到了一张图片(一共 75 张)。 在解释指令集设计的原理之后,我们将阐述 RISC-V 架构师在设计指令集的时候,如何 在过去 40 年的指令集的基础上取其精华,去其糟粕。要评判一个指令集架构,不仅要看它 包括了什么,而且要看它省略了什么。 随后我们会按顺序介绍这个模块化架构的每个组成部分。每一章都会包含一个用 86还有三个相似的指令,分别执行减 法操作(aas),乘法操作(aam),和除法操作(aad)。由于他们都是单字节指令,它们加起来占用了宝 贵的操作码空间的1.6%(4/256)。 1.2 模块化与增量型 ISA 英特尔曾将其未来押在高端微处理器之上,但那时还需要很多年时间。为了对抗Zilog,英特尔开发了 一款过渡产品,并给它起名为8086。它本应该是短命的,没有任何继任者,但事情并非如此。高端处0 码力 | 164 页 | 8.85 MB | 1 年前3
海量用户推送后台系统架构实践-曾振波API JCache JMQ DB 极光推送后台系统架构 02 01 06 03 07 05 04 08 模块化 异步化 并行化 缓存化 程序及系统优化 基础组件服务化 链接管理 系统安全 09 新技术的应用——K8S部署业务 模块化 • 模块业务逻辑All In导致相互影响,更新升级难度大 • 功能按照业务拆分解耦 • 数据和业务分离 • 快速迭代0 码力 | 23 页 | 1.26 MB | 1 年前3
全栈⼯程师之路 Node.js作为本地开发环境 • 线上 docker ⺫⽬目前的做法 • ⼩小步快⾛走,⼀一次只上⼀一样新技术; • 形成梯队,即可准备上新东⻄西; • 善⽤用 npm,实现 3 化: • 模块化、 • 最⼩小化、 • 服务化 Part 2:快速开发实践 业务边界优化 创业公司有很多可变性,要做的系统也⽆无数,如何保证业 务系统的边界是⾮非常难的,我们其实⾛走了很多弯路 静态api理论 设计/UE 设计/UI + 静态API App 开发 测试 交付 常 规 h5 后台 前端 项⺫⽬目 改 进 后 并⾏行开发流程改进 api约定 约定结构 使⽤用npm模块化 • 使⽤用npmjs的private私有模块(⺫⽬目前做法) • 使⽤用npm的本地模块开发⽅方法(测试和部署都⾮非常 快) • 搭建npm私服(todo) 编写⽣生成器 在web0 码力 | 50 页 | 1.35 MB | 1 年前3
2.3 用golang写一个操作系统现有的微博应⽤用,继续强化 ⺫⽬目前阶段: ü 其他语⾔言不适合 ü 丰富的开源资料 ü 跨平台 ü 编绎速度不到3秒 ü 模块化很好,耦合度很低 ü ⼤大量使⽤用google的技术 ü 我喜欢Golang 价值观,哲学思想都⽐比较符合 选Golang的理由 l C或C++ l 极简的语法 l 快速的编译 以前的同花顺客户端编绎要近20分钟,现在⼩小于3秒 l Package和易⽤用的接⼝口 耦合度低 模块化好 迭代和重构 l 初觉的很好 错误和异常是不同的 l 后⽤用起来很烦 ⼤大量的重复代码 l 最后觉得很合理 写代码的时间很短0 码力 | 33 页 | 1014.12 KB | 1 年前3
百度超级链 XuperChain 3.12-a中文文档通信加密信道满足 一话一密的高安全等级。 密码学模块 Crypto Provider Interface 密码学作为区块链系统的底层技术,相对比较独立。考虑到超级链作为区块 链底层系统方案的模块化目标,我们将密码学相关的功能设计成一个单独的 模块,并通过插件化技术实现了模块可插拔、插件可替换。 因此,超级链首先抽象出了统一的密码学相关的功能,并在此之上定义了统 一的密码学接口,我们称之为Crypto 如果每次转发都Lookup数据库过滤IP,性能有影响,可以考虑在p2p 中维护一个Cache; 插件设计 可插拔架构 超级链从设计之初就以高性能、可插拔的区块链底层技术架构为目标,因此 整个超级链在模块化、接口化设计上做了很多的抽象工作。而插件化机制就 是服务于超级链可插拔的架构目标,使得所有模块具有同样的可插拔机制, 并能满足对模块插件的加载、替换等生命周期的管理。 通过插件化机制可以实现如下架构优点: 成为超级链核心开发 参加超级链线下活动 社区贡献列表 贡献准备 完善超级链文档 开发超级链插件 可插拔架构 超级链从设计之初就以高性能、可插拔的区块链底层技术架构为目标,因此 整个超级链在模块化、接口化设计上做了很多的抽象工作。而插件化机制就 是服务于超级链可插拔的架构目标,使得所有模块具有同样的可插拔机制, 并能满足对模块插件的加载、替换等生命周期的管理。 通过插件化机制可以实现如下架构优点:0 码力 | 336 页 | 12.62 MB | 1 年前3
百度超级链 XuperChain 3.12-c 中文文档通信加密信道满足 一话一密的高安全等级。 密码学模块 Crypto Provider Interface 密码学作为区块链系统的底层技术,相对比较独立。考虑到超级链作为区块 链底层系统方案的模块化目标,我们将密码学相关的功能设计成一个单独的 模块,并通过插件化技术实现了模块可插拔、插件可替换。 因此,超级链首先抽象出了统一的密码学相关的功能,并在此之上定义了统 一的密码学接口,我们称之为Crypto 如果每次转发都Lookup数据库过滤IP,性能有影响,可以考虑在p2p 中维护一个Cache; 插件设计 可插拔架构 超级链从设计之初就以高性能、可插拔的区块链底层技术架构为目标,因此 整个超级链在模块化、接口化设计上做了很多的抽象工作。而插件化机制就 是服务于超级链可插拔的架构目标,使得所有模块具有同样的可插拔机制, 并能满足对模块插件的加载、替换等生命周期的管理。 通过插件化机制可以实现如下架构优点: 成为超级链核心开发 参加超级链线下活动 社区贡献列表 贡献准备 完善超级链文档 开发超级链插件 可插拔架构 超级链从设计之初就以高性能、可插拔的区块链底层技术架构为目标,因此 整个超级链在模块化、接口化设计上做了很多的抽象工作。而插件化机制就 是服务于超级链可插拔的架构目标,使得所有模块具有同样的可插拔机制, 并能满足对模块插件的加载、替换等生命周期的管理。 通过插件化机制可以实现如下架构优点:0 码力 | 336 页 | 12.62 MB | 1 年前3
共 96 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10













