积分充值
 首页
前端开发
AngularDartElectronFlutterHTML/CSSJavaScriptReactSvelteTypeScriptVue.js构建工具
后端开发
.NetC#C++C语言DenoffmpegGoIdrisJavaJuliaKotlinLeanMakefilenimNode.jsPascalPHPPythonRISC-VRubyRustSwiftUML其它语言区块链开发测试微服务敏捷开发架构设计汇编语言
数据库
Apache DorisApache HBaseCassandraClickHouseFirebirdGreenplumMongoDBMySQLPieCloudDBPostgreSQLRedisSQLSQLiteTiDBVitess数据库中间件数据库工具数据库设计
系统运维
AndroidDevOpshttpdJenkinsLinuxPrometheusTraefikZabbix存储网络与安全
云计算&大数据
Apache APISIXApache FlinkApache KarafApache KyuubiApache OzonedaprDockerHadoopHarborIstioKubernetesOpenShiftPandasrancherRocketMQServerlessService MeshVirtualBoxVMWare云原生CNCF机器学习边缘计算
综合其他
BlenderGIMPKiCadKritaWeblate产品与服务人工智能亿图数据可视化版本控制笔试面试
文库资料
前端
AngularAnt DesignBabelBootstrapChart.jsCSS3EchartsElectronHighchartsHTML/CSSHTML5JavaScriptJerryScriptJestReactSassTypeScriptVue前端工具小程序
后端
.NETApacheC/C++C#CMakeCrystalDartDenoDjangoDubboErlangFastifyFlaskGinGoGoFrameGuzzleIrisJavaJuliaLispLLVMLuaMatplotlibMicronautnimNode.jsPerlPHPPythonQtRPCRubyRustR语言ScalaShellVlangwasmYewZephirZig算法
移动端
AndroidAPP工具FlutterFramework7HarmonyHippyIoniciOSkotlinNativeObject-CPWAReactSwiftuni-appWeex
数据库
ApacheArangoDBCassandraClickHouseCouchDBCrateDBDB2DocumentDBDorisDragonflyDBEdgeDBetcdFirebirdGaussDBGraphGreenPlumHStreamDBHugeGraphimmudbIndexedDBInfluxDBIoTDBKey-ValueKitDBLevelDBM3DBMatrixOneMilvusMongoDBMySQLNavicatNebulaNewSQLNoSQLOceanBaseOpenTSDBOracleOrientDBPostgreSQLPrestoDBQuestDBRedisRocksDBSequoiaDBServerSkytableSQLSQLiteTiDBTiKVTimescaleDBYugabyteDB关系型数据库数据库数据库ORM数据库中间件数据库工具时序数据库
云计算&大数据
ActiveMQAerakiAgentAlluxioAntreaApacheApache APISIXAPISIXBFEBitBookKeeperChaosChoerodonCiliumCloudStackConsulDaprDataEaseDC/OSDockerDrillDruidElasticJobElasticSearchEnvoyErdaFlinkFluentGrafanaHadoopHarborHelmHudiInLongKafkaKnativeKongKubeCubeKubeEdgeKubeflowKubeOperatorKubernetesKubeSphereKubeVelaKumaKylinLibcloudLinkerdLonghornMeiliSearchMeshNacosNATSOKDOpenOpenEBSOpenKruiseOpenPitrixOpenSearchOpenStackOpenTracingOzonePaddlePaddlePolicyPulsarPyTorchRainbondRancherRediSearchScikit-learnServerlessShardingSphereShenYuSparkStormSupersetXuperChainZadig云原生CNCF人工智能区块链数据挖掘机器学习深度学习算法工程边缘计算
UI&美工&设计
BlenderKritaSketchUI设计
网络&系统&运维
AnsibleApacheAWKCeleryCephCI/CDCurveDevOpsGoCDHAProxyIstioJenkinsJumpServerLinuxMacNginxOpenRestyPrometheusServertraefikTrafficUnixWindowsZabbixZipkin安全防护系统内核网络运维监控
综合其它
文章资讯
 上传文档  发布文章  登录账户
IT文库
  • 综合
  • 文档
  • 文章

无数据

分类

全部后端开发(25)C++(25)

语言

全部中文(简体)(25)

格式

全部PPT文档 PPT(16)PDF文档 PDF(9)
 
本次搜索耗时 0.080 秒,为您找到相关结果约 25 个.
  • 全部
  • 后端开发
  • C++
  • 全部
  • 中文(简体)
  • 全部
  • PPT文档 PPT
  • PDF文档 PDF
  • 默认排序
  • 最新排序
  • 页数排序
  • 大小排序
  • 全部时间
  • 最近一天
  • 最近一周
  • 最近一个月
  • 最近三个月
  • 最近半年
  • 最近一年
  • pdf文档 Hello 算法 1.0.0b4 C++版

    复杂度 hello‑algo.com 34 return root; } Figure 2‑13. 满二叉树产生的指数阶空间复杂度 对数阶 ?(log ?) 对数阶常见于分治算法和数据类型转换等。 例如“归并排序”算法,输入长度为 ? 的数组,每轮递归将数组从中点划分为两半,形成高度为 log ? 的递 归树,使用 ?(log ?) 栈帧空间。 再例如“数字转化为字符串”,输入任意正整数 反码:正数的反码与其原码相同,负数的反码是对其原码除符号位外的所有位取反。 ‧ 补码:正数的补码与其原码相同,负数的补码是在其反码的基础上加 1 。 Figure 3‑4. 原码、反码与补码之间的相互转换 显然,「原码」最为直观,然而数字却是以「补码」的形式存储在计算机中的。这是因为原码存在一些局限 性。 一方面,负数的原码不能直接用于运算。例如,我们在原码下计算 1 + (−2) ,得到的结果是 (−2) = 00000001 + 10000010 = 10000011 = −3 3. 数据结构 hello‑algo.com 42 为了解决此问题,计算机引入了「反码」。例如,我们先将原码转换为反码,并在反码下计算 1 + (−2) ,并 将结果从反码转化回原码,则可得到正确结果 −1 。 1 + (−2) = 00000001(原码) + 10000010(原码) = 00000001(反码)
    0 码力 | 343 页 | 27.39 MB | 1 年前
    3
  • pdf文档 Hello 算法 1.1.0 C++ 版

    。而通过对数换底公式,我们可以得到具有 不同底数、相等的时间复杂度: ?(log? ?) = ?(log? ?/ log? ?) = ?(log? ?) 也就是说,底数 ? 可以在不影响复杂度的前提下转换。因此我们通常会省略底数 ? ,将对数阶直接 记为 ?(log ?) 。 6. 线性对数阶 ?(? log ?) 线性对数阶常出现于嵌套循环中,两层循环的时间复杂度分别为 ?(log ?) 和 反码:正数的反码与其原码相同,负数的反码是对其原码除符号位外的所有位取反。 ‧ 补码:正数的补码与其原码相同,负数的补码是在其反码的基础上加 1 。 图 3‑4 展示了原码、反码和补码之间的转换方法。 图 3‑4 原码、反码与补码之间的相互转换 原码(sign‑magnitude)虽然最直观,但存在一些局限性。一方面,负数的原码不能直接用于运算。例如在原 码下计算 1 + (−2) ,得到的结果是 −3 ,这显然是不对的。 0000 0001 + 1000 0010 = 1000 0011 → −3 为了解决此问题,计算机引入了反码(1’s complement)。如果我们先将原码转换为反码,并在反码下计算 1 + (−2) ,最后将结果从反码转换回原码,则可得到正确结果 −1 。 第 3 章 数据结构 hello‑algo.com 57 1 + (−2) → 0000 0001 (原码) + 1000 0010
    0 码力 | 379 页 | 18.47 MB | 1 年前
    3
  • pdf文档 Hello 算法 1.0.0 C++版

    。而通过对数换底公式,我们可以 得到具有不同底数、相等的时间复杂度: ?(log? ?) = ?(log? ?/ log? ?) = ?(log? ?) 也就是说,底数 ? 可以在不影响复杂度的前提下转换。因此我们通常会省略底数 ? ,将对数 阶直接记为 ?(log ?) 。 6. 线性对数阶 ?(? log ?) 线性对数阶常出现于嵌套循环中,两层循环的时间复杂度分别为 ?(log ?) 和 反码:正数的反码与其原码相同,负数的反码是对其原码除符号位外的所有位取反。 ‧ 补码:正数的补码与其原码相同,负数的补码是在其反码的基础上加 1 。 图 3‑4 展示了原码、反码和补码之间的转换方法。 图 3‑4 原码、反码与补码之间的相互转换 「原码 sign‑magnitude」虽然最直观,但存在一些局限性。一方面,负数的原码不能直接用于运算。例如在 原码下计算 1 + (−2) ,得到的结果是 −3 ,这显然是不对的。 0000 0001 + 1000 0010 = 1000 0011 → −3 为了解决此问题,计算机引入了「反码 1’s complement」。如果我们先将原码转换为反码,并在反码下计 算 1 + (−2) ,最后将结果从反码转换回原码,则可得到正确结果 −1 。 第 3 章 数据结构 hello‑algo.com 57 1 + (−2) → 0000 0001 (原码) + 1000
    0 码力 | 378 页 | 17.59 MB | 1 年前
    3
  • pdf文档 Hello 算法 1.0.0b5 C++版

    。而通过对数换底公式,我们可以 得到具有不同底数的、相等的时间复杂度: ?(log? ?) = ?(log? ?/ log? ?) = ?(log? ?) 也就是说,底数 ? 可以在不影响复杂度的前提下转换。因此我们通常会省略底数 ? ,将对数 阶直接记为 ?(log ?) 。 6. 线性对数阶 ?(? log ?) 线性对数阶常出现于嵌套循环中,两层循环的时间复杂度分别为 ?(log ?) 和 反码:正数的反码与其原码相同,负数的反码是对其原码除符号位外的所有位取反。 ‧ 补码:正数的补码与其原码相同,负数的补码是在其反码的基础上加 1 。 图 3‑4 展示了原码、反码和补码之间的转换方法。 图 3‑4 原码、反码与补码之间的相互转换 「原码 true form」虽然最直观,但存在一些局限性。一方面,负数的原码不能直接用于运算。例如在原码下 计算 1 + (−2) ,得到的结果是 −3 ,这显然是不对的。 + (−2) → 0000 0001 + 1000 0010 = 1000 0011 → −3 为了解决此问题,计算机引入了「反码 1’s complement code」。如果我们先将原码转换为反码,并在反码 下计算 1 + (−2) ,最后将结果从反码转化回原码,则可得到正确结果 −1 。 第 3 章 数据结构 hello‑algo.com 55 1 + (−2) → 0000
    0 码力 | 377 页 | 30.69 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化

    * * * * 结构体的内存布局: AOS 与 SOA • AOS ( Array of Struct )单个对象的属性紧挨着存 • xyzxyzxyzxyz • SOA ( Struct of Array )属性分离存储在多个数组 • xxxxyyyyzzzz • AOS 必须对齐到 2 的幂才高效, SOA 就不需要。 • AOS 符合直觉,不一定要存储在数组这种线性结构, float ,大小仅为 12 字节。 • 所以当修改 MyClass 的 x 属性时,必须读取整个 MyClass ,仅仅 修改其中的 x 属性,然后写回。这就浪费了: y 的写、 z 的写、 z 的读。实际用上的只有: x 的读, y 的读, x 的写。浪费了 50% 带宽。 • 而 SOA 把三个属性分开存,每个属性作为独立的数组,稠密存储。 这样当用不到 z 的时候, z 数组就完全不会被读取,不会占用内 并非随意选取,而是要让每 个属性 SOA 数组的大小为一个页 ( 4KB )才能最高效,原因稍后会说明。 AOSOA :注意,内部 SOA 的尺寸不宜太小 如果内部 SOA 太小,内部循环只有 16 次连续的读 取, 16 次结束后就会跳跃一段,然后继续连续的 读取。这会导致 CPU 预取机制失效,无法预测下 一次要读哪里,等发现跳跃时已经来不及了,从而 计算的延迟无法隐藏。 如果每个属性都要访问到,那还是
    0 码力 | 147 页 | 18.88 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理

    自定义构造函数:单个参数 自定义构造函数:单个参数(陷阱) 自定义构造函数:单个参数(避免陷阱) 避免陷阱体现在哪里? • 加了 explicit 表示必须用 () 强制转换。 • 否则 show(80) 也能编译通过! • 所以,如果你不希望这种隐式转换, • 请给单参数的构造函数加上 explicit 。 • 比如 std::vector 的构造函数 vector(size_t n) 也是 explicit 14f} 会出错,因为 {} 是非强制转换。 2. Pig(“ 佩奇” , 3.14f) 不会出错,但是 Pig{“ 佩奇” , 3.14f} 会出错,原因同上,更安全。 3. 可读性: Pig(1, 2) 则 Pig 有可能是个函数, Pig{1, 2} 看起来更明确。 • 其实谷歌在其 Code Style 中也明确提出别再通过 () 调用构造函数,需要类型转换时应该 用: 1. static_cast(3 static_cast(3.14f) 而不是 int(3.14f) 2. reinterpret_cast(0xb8000) 而不是 (void *)0xb8000 • 更加明确用的哪一种类型转换( cast ),从而避免一些像是 static_cast(ptr) 的错误 。 • 虽然作者也经常会忍不住在 zeno 中用 编译器默认生成的构造函数:无参数(小心 POD 陷阱!)
    0 码力 | 96 页 | 16.28 MB | 1 年前
    3
  • pdf文档 《深入浅出MFC》2/e

    函数CreateWindow 完全包办了整个巨大的工程。但是窗口 产生之前,其属性必须先设定好。所谓属性包括窗口的「外貌」和「行为」,一个窗口 的边框、颜色、标题、位置等等就是其外貌,而窗口接收消息后的反应就是其行为(具 体地说就是指窗口函数本身)。程序必须在产生窗口之前先利用API 函数RegisterClass 设定属性(我们称此动作为注册窗口类别)。RegisterClass 需要一个大型数据结构 生与死」对此有详细解释。 消息循环 初始化工作完成后,WinMain 进入所谓的消息循环: while (GetMessage(&msg,...)) { TranslateMessage(&msg); // 转换键盘消息 DispatchMessage(&msg); // 分派消息 } 其中的TranslateMessage 是为了将键盘消息转化,DispatchMessage 会将消息传给窗口函 建立新进程之前,系统必须做出两个核心对象,也就是「进程对象」和「执行线程对象」。 CreateProcess 的第三个参数和第四个参数分别指定这两个核心对象的安全属性。至于第 五个参数(TRUE 或FALSE)则用来设定这些安全属性是否要被继承。关于安全属性及 其可被继承的性质,碍于本章的定位,我不打算在此介绍。 第六个参数dwCreationFlags 可以是许多常数的组合,会影响到进程的建立过程。这些
    0 码力 | 1009 页 | 11.08 MB | 1 年前
    3
  • pdf文档 Hello 算法 1.2.0 简体中文 C++ 版

    。而通过对数换底公式,我们可以得到具有 不同底数、相等的时间复杂度: ?(log? ?) = ?(log? ?/ log? ?) = ?(log? ?) 也就是说,底数 ? 可以在不影响复杂度的前提下转换。因此我们通常会省略底数 ? ,将对数阶直接 记为 ?(log ?) 。 6. 线性对数阶 ?(? log ?) 线性对数阶常出现于嵌套循环中,两层循环的时间复杂度分别为 ?(log ?) 和 反码:正数的反码与其原码相同,负数的反码是对其原码除符号位外的所有位取反。 ‧ 补码:正数的补码与其原码相同,负数的补码是在其反码的基础上加 1 。 图 3‑4 展示了原码、反码和补码之间的转换方法。 图 3‑4 原码、反码与补码之间的相互转换 原码(sign‑magnitude)虽然最直观,但存在一些局限性。一方面,负数的原码不能直接用于运算。例如在原 码下计算 1 + (−2) ,得到的结果是 −3 ,这显然是不对的。 0000 0001 + 1000 0010 = 1000 0011 → −3 为了解决此问题,计算机引入了反码(1’s complement)。如果我们先将原码转换为反码,并在反码下计算 1 + (−2) ,最后将结果从反码转换回原码,则可得到正确结果 −1 。 第 3 章 数据结构 www.hello‑algo.com 57 1 + (−2) → 0000 0001 (原码) + 1000
    0 码力 | 379 页 | 18.48 MB | 10 月前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南

    也可以只针对一个库,只对他启用位置无关的代码 (PIC) 第 4 章:对象的属性 除了 POSITION_INDEPENDENT_CODE 还有哪些这样的属性? 另一种方式: set_target_properties 批量设置多个属性 另一种方式:通过全局的变量,让之后创建的所有对象都享有同样的属性 相当于改变了各个属性的初始默认值。 要注意此时 set(CMAKE_xxx) 必须在 add_executable xx_OUTPUT_DIRECTORY 系列属性 • 所以,可以设置 mylib 的这些属性,让 mylib.dll 文件输出到 PROJECT_BINARY_DIR ,也就是项目根目录( main 所在的位置)。这样 main.exe 在 运行时就能找到 mylib.dll 了。 • 是的,为了伺候这睿智的 Wendous 系统,需要设置全部 6 个属性,是不是非常繁琐? 不懂就问,为什么说 这样改了别人如果装在不同地方就出错了。 顺便一提, CMake 的路径分割符始终是 / 。即使在 Windows 上,也 要把所有的 \ 改成 / ,这是出于跨平台的考虑。请放心, CMake 会自 动在调用 MSVC 的时候转换成 \ ,你可以放心的用 ${x}/bin 来实现和 Python 的 os.path.join(x, ‘bin’) 一样的效果。 毕竟大多数操作系统都是 Unix-like 嘛……就 Windows
    0 码力 | 166 页 | 6.54 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化

    寄存器里同时运算,很像数学中矢量的逐元 素加法。因此 SIMD 又被称为矢量,而原始的一次只能处理 1 个 float 的方式,则称为 标量。 • 在一定条件下,编译器能够把一个处理标量 float 的代码,转换成一个利用 SIMD 指令的 ,处理矢量 float 的代码,从而增强你程序的吞吐能力! • 通常认为利用同时处理 4 个 float 的 SIMD 指令可以加速 4 倍。但是如果你的算法不 适合 对缓存的占用等一系列连锁反应,总之,要根据实际情况选择优化方案。 结构体的内存布局: AOS 与 SOA • AOS ( Array of Struct )单个对象的属性紧挨着存 • xyzxyzxyzxyz • SOA ( Struct of Array )属性分离存储在多个数组 • xxxxyyyyzzzz • AOS 必须对齐到 2 的幂才高效, SOA 就不需要。 • AOS 符合直觉,不一定要存储在数组这种线性结构, 符合直觉,不一定要存储在数组这种线性结构, 而 SOA 可能无法保证多个数组大小一致。 • SOA 不符合直觉,但通常是更高效的! AOS :紧凑存储多个属性 SIMD 矢量化失败! 符合一般面向对象编程 (OOP) 的习惯,但常常不利于性能 SOA :分离存储多个属性 SIMD 矢量化成功! 不符合面向对象编程 (OOP) 的习惯,但常常有利于性能。 又称之为面向数据编程 (DOP) 。 AOSOA
    0 码力 | 108 页 | 9.47 MB | 1 年前
    3
共 25 条
  • 1
  • 2
  • 3
前往
页
相关搜索词
Hello算法1.00b4C++1.10b5高性性能高性能并行编程优化课件0702深入深入浅出MFC1.2简体中文简体中文1104
IT文库
关于我们 文库协议 联系我们 意见反馈 免责声明
本站文档数据由用户上传或本站整理自互联网,不以营利为目的,供所有人免费下载和学习使用。如侵犯您的权益,请联系我们进行删除。
IT文库 ©1024 - 2025 | 站点地图
Powered By MOREDOC AI v3.3.0-beta.70
  • 关注我们的公众号【刻舟求荐】,给您不一样的精彩
    关注我们的公众号【刻舟求荐】,给您不一样的精彩