• 持久内存编程
  • 持久内存编程
21年品牌 40万+商家 超1.5亿件商品

持久内存编程

①全新正版,现货速发,7天无理由退换货②天津、成都、无锡、广东等多仓就近发货,订单最迟48小时内发出③无法指定快递④可开电子发票,不清楚的请咨询客服。

83.65 7.0折 119 全新

库存2件

浙江嘉兴
认证卖家担保交易快速发货售后保障

作者[美]史蒂夫·斯卡格尔(SteveScargall)

出版社机械工业出版社

ISBN9787111676744

出版时间2021-04

装帧平装

开本16开

定价119元

货号31121778

上书时间2024-10-14

倒爷图书专营店

三年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介



目录
译者序<br/>前言<br/>致谢<br/>作者简介<br/>贡献者简介<br/>技术评审者简介<br/>译者简介<br/>第1章 持久内存编程简介  1<br/>1.1 高级示例程序  2<br/>1.1.1 有何区别  4<br/>1.1.2 性能差异  5<br/>1.1.3 程序复杂性  5<br/>1.1.4 libpmemkv如何运行  5<br/>1.2 后文提要  6<br/>1.3 总结  7<br/>第2章 持久内存架构  8<br/>2.1 持久内存的特性  8<br/>2.2 持久内存的平台支持  9<br/>2.3 缓存层级  10<br/>2.4 电源故障保护域  11<br/>2.5 刷新、排序和屏障操作的需求  13<br/>2.6 数据可见性  16<br/>2.7 用于持久内存的英特尔机器指令  16<br/>2.8 检测平台功能  17<br/>2.9 应用程序启动与恢复  18<br/>2.10 后文提要  20<br/>2.11 总结  20<br/>第3章 持久内存的操作系统支持  21<br/>3.1 内存和存储的操作系统支持  21<br/>3.2 持久内存用作块存储  22<br/>3.3 持久内存感知型文件系统  23<br/>3.4 内存映射文件  24<br/>3.5 持久内存直接访问  30<br/>3.6 总结  37<br/>第4章 持久内存编程的基本概念  38<br/>4.1 有何区别  38<br/>4.2 原子更新  39<br/>4.3 事务  39<br/>4.3.1 原子性  39<br/>4.3.2 一致性  40<br/>4.3.3 隔离性  40<br/>4.3.4 持久性  40<br/>4.4 刷新不具有事务性  41<br/>4.5 启动时职责  41<br/>4.6 针对硬件配置进行调优  41<br/>4.7 总结  42<br/>第5章 持久内存开发套件简介  43<br/>5.1 背景  43<br/>5.2 选择正确的语义  44<br/>5.3 易失性库  44<br/>5.3.1 libmemkind  44<br/>5.3.2 libvmemcache  45<br/>5.3.3 libvmem  46<br/>5.4 持久性库  46<br/>5.4.1 libpmem  46<br/>5.4.2 libpmemobj  46<br/>5.4.3 libpmemobj-cpp  47<br/>5.4.4 libpmemkv  47<br/>5.4.5 libpmemlog  47<br/>5.4.6 libpmemblk  48<br/>5.5 工具和命令程序  48<br/>5.5.1 pmempool  48<br/>5.5.2 pmemcheck  48<br/>5.5.3 pmreorder  49<br/>5.6 总结  49<br/>第6章 libpmem:底层持久内存支持  50<br/>6.1 使用库  51<br/>6.2 映射文件  51<br/>6.3 复制到持久内存  52<br/>6.4 分解刷新步骤  53<br/>6.5 总结  54<br/>第7章 libpmemobj:原生事务性对象存储  55<br/>7.1 什么是libpmemobj  55<br/>7.2 为什么不使用malloc()  55<br/>7.3 组合操作  56<br/>7.4 内存池  56<br/>7.4.1 创建内存池  56<br/>7.4.2 池对象指针和根对象  59<br/>7.4.3 打开内存池并从内存池中读取数据  60<br/>7.5 内存池集  61<br/>7.5.1 串联池集  61<br/>7.5.2 副本池集  62<br/>7.6 管理内存池和池集  62<br/>7.7 类型化对象标识符  63<br/>7.8 分配内存  63<br/>7.9 持久保存数据  63<br/>7.9.1 原子操作  64<br/>7.9.2 保留/发布API  66<br/>7.9.3 事务API  68<br/>7.9.4 可选标记  71<br/>7.9.5 持久保存数据总结  71<br/>7.10 libpmemobj的API可提供保障  71<br/>7.11 管理库操作  72<br/>7.12 调试与错误处理  72<br/>7.13 总结  74<br/>第8章 libpmemobj-cpp:自适应语言C++和持久内存  75<br/>8.1 简介  75<br/>8.2 元编程  75<br/>8.2.1 持久指针  76<br/>8.2.2 事务  76<br/>8.2.3 创建快照  77<br/>8.2.4 分配  79<br/>8.3 C++标准限制  80<br/>8.3.1 对象的生命周期  80<br/>8.3.2 平凡类型  81<br/>8.3.3 对象布局  82<br/>8.3.4 指针  83<br/>8.3.5 限制总结  85<br/>8.4 简化持久性  85<br/>8.5 生态系统  91<br/>8.5.1 持久容器  91<br/>8.5.2 持久容器示例  91<br/>8.6 总结  94<br/>第9章 pmemkv:持久内存键值存储  95<br/>9.1 pmemkv架构  97<br/>9.2 电话簿示例  99<br/>9.3 让持久内存更靠近云  102<br/>9.4 总结  103<br/>第10章 持久内存编程的易失性用途  104<br/>10.1 简介  104<br/>10.2 背景  105<br/>10.2.1 内存分配  105<br/>10.2.2 工作原理  105<br/>10.2.3 支持的内存“类型”  105<br/>10.3 memkind API  107<br/>10.3.1 类型管理API  107<br/>10.3.2 堆管理API  111<br/>10.3.3 类型配置管理  112<br/>10.3.4 更多memkind代码示例  113<br/>10.4 面向PMEM类型的C++分配器  113<br/>10.4.1 pmem::allocator方法  114<br/>10.4.2 嵌套容器  114<br/>10.5 C++示例  114<br/>10.5.1 使用pmem::allocator  115<br/>10.5.2 创建字符串向量  115<br/>10.6 使用持久内存扩展易失性内存  116<br/>10.7 libvmemcache:面向大容量持久内存的高效易失性键值缓存  120<br/>10.7.1 libvmemcache概述  120<br/>10.7.2 libvmemcache设计  122<br/>10.7.3 使用libvmemcache  124<br/>10.8 总结  126<br/>第11章 设计适用于持久内存的数据结构  127<br/>11.1 连续数据结构和碎片化  127<br/>11.1.1 内部和外部碎片化  127<br/>11.1.2 原子性和一致性  128<br/>11.1.3 选择性持久化  131<br/>11.1.4 示例数据结构  131<br/>11.2 总结  140<br/>第12章 调试持久内存应用程序  141<br/>12.1 用于Valgrind的pmemcheck  142<br/>12.1.1 栈溢出示例  142<br/>12.1.2 内存泄漏示例  143<br/>12.2 Intel Inspector?—?Persistence Inspector  144<br/>12.2.1 栈溢出示例  144<br/>12.2.2 内存泄漏示例  145<br/>12.3 常见的持久内存编程问题  146<br/>12.3.1 非持久存储  146<br/>12.3.2 数据存储未添加到事务  157<br/>12.3.3 将一个内存对象添加至两个不同的事务  160<br/>12.3.4 内存覆写  165<br/>12.3.5 非必要刷新  166<br/>12.3.6 乱序写入  170<br/>12.4 总结  179<br/>第13章 实际应用程序中实现持久性  180<br/>13.1 数据库示例  180<br/>13.2 不同的持久内存实现方式  181<br/>13.3 开发持久内存感知型MariaDB*存储引擎  181<br/>13.3.1 了解存储层  182<br/>13.3.2 创建存储引擎类  183<br/>13.4 总结  191<br/>第14章 并发和持久内存  192<br/>14.1 事务与多线程  192<br/>14.2 持久内存上的互斥体  196<br/>14.3 原子操作与持久内存  198<br/>14.4 持久内存的并发数据结构  198<br/>14.4.1 并发有序映射  199<br/>14.4.2 并发散列映射  202<br/>14.5 总结  202<br/>第15章 分析与性能  204<br/>15.1 简介  204<br/>15.2 性能分析概念  204<br/>15.2.1 计算受限与内存受限  204<br/>15.2.2 内存延时与内存容量  205<br/>15.2.3 读取与写入性能  205<br/>15.2.4 内存访问模式  205<br/>15.2.5 I/O存储受限的工作负载  205<br/>15.3 确定工作负载是否适合持久内存  206<br/>15.3.1 易失性用例  206<br/>5.3.2 需要持久性的用例  208<br/>15.4 使用持久内存的工作负载性能分析  209<br/>15.4.1 确定工作负载特性  210<br/>15.4.2 内存带宽与延时  210<br/>15.4.3 持久内存读写比率  211<br/>15.4.4 工作集大小与内存占用空间大小  211<br/>15.4.5 非一致内存架构行为  211<br/>15.4.6 优化面向持久内存的软件  212<br/>15.5 总结  215<br/>第16章 PMDK内部组件:重要算法和数据结构  216<br/>16.1 持久内存池:高层架构概览  216<br/>16.2 内存映射的不确定性:持久内存对象标识符  218<br/>16.3 持久化线程本地存储:使用通道  220<br/>16.4 确保电源故障原子性:重做日志和撤销日志  220<br/>16.4.1 事务重做日志  221<br/>16.4.2 事务撤销日志  221<br/>16.4.3 libpmemobj统一日志  222<br/>16.5 持久分配:事务持久分配器的接口  223<br/>16.6 持久内存堆管理:持久内存分配器设计  223<br/>16.7 ACID事务:高效的底层持久事务  226<br/>16.8 延迟重新初始化变量:将易失性状态存储在持久内存上  227<br/>16.9 总结  228<br/>第17章 可靠性、可用性与可维护性  229<br/>17.1 处理不可纠正错误  229<br/>17.1.1 已使用的不可纠正错误处理  230<br/>17.1.2 未使用的不可纠正错误处理  231<br/>17.1.3 清除不可纠正错误  234<br/>17.2 设备状态  234<br/>17.2.1 ACPI定义的设备状态函数(_NCH,_NBS)  236<br/>17.2.2 特定供应商的设备状态(_DSM)  236<br/>17.2.3 ACPI NFIT状态事件通知  236<br/>17.3 不安全/异常关机  237<br/>17.4 总结  238<br/>第18章 远程持久内存  239<br/>18.1 RDMA网络协议  240<br/>18.2 初始远程持久内存架构的目标  242<br/>18.3 确保远程持久性  242<br/>18.3.1 通用远程复制方法  243<br/>18.3.2 设备远程复制方法  244<br/>18.4 一般软件架构  246<br/>18.5 librpmem架构及其在复制中的使用  246<br/>18.5.1 使用内存池集配置远程复制  249<br/>18.5.2 性能注意事项  249<br/>18.5.3 远程复制错误处理  250<br/>18.5.4 向复制世界“问好”  251<br/>18.6 总结  254<br/>第19章 高级主题  256<br/>19.1 非一致性内存访问  256<br/>19.1.1 NUMACTL Linux程序  257<br/>19.1.2 NDCTL Linux程序  258<br/>19.1.3 英特尔内存延迟检查器程序  259<br/>19.1.4 NUMASTAT程序  260<br/>19.1.5 英特尔VTune Profiler —Platform Profiler  261<br/>19.1.6 IPMCTL程序  261<br/>19.1.7 BIOS调优选项  261<br/>19.1.8 自动NUMA平衡  261<br/>19.2 使用具有持久内存的卷管理器  263<br/>19.3 mmap()的MAP_SYNC标记  264<br/>19.4 总结  265<br/>附录A 如何在Linux上安装NDCTL和DAXCTL  266<br/>附录B 如何安装持久内存开发套件  271<br/>附录C 如何在Linux和Windows上安装IPMCTL  277<br/>附录D 面向持久内存的Java  282<br/>附录E 远程持久内存复制的未来  289<br/>术语表  292

内容摘要
本书讲述了持久内存编程这项技术,以及它为什么受行业欢迎。其中涵盖了操作系统和硬件需求,以及如何使用模拟或真实的持久内存硬件创建开发环境。本书解释了基本概念,并介绍了C、C++、JavaScript和其他语言的持久内存编程API,讨论了持久内存上的RMDA,阐述了其安全特性。本书还包括可以在读者自己的系统上运行的源代码和示例。

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP