自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

手边笔记

好记性不如烂笔头~

  • 博客(149)
  • 资源 (14)
  • 收藏
  • 关注

原创 brpc线程模型和网络模型

brpc线程模型和网络模型1. 简单介绍本文主要介绍brpc的线程模型,以及网络请求处理的整个流程。1.1 brpc线程模型简介bthread是brpc使用的M:N线程库,目的是在提高程序的并发度的同时,降低编码难度,并在核数日益增多的CPU上提供更好的scalability和cache locality。”M:N“是指M个bthread会映射至N个pthread,一般M远大于N。由于linux当下的pthread实现(NPTL)是1:1的,M个bthread也相当于映射至N个LWP。bthre

2021-03-12 18:16:27 5690

原创 vector向量数据库

向量数据库是近几年刚出来的一种新型数据库,用于存储向量数据,并支持对向量数据做相关相似度检索,本文主要介绍向量数据库的研发方向,以及成熟的向量数据库应该具备的能力。

2023-10-13 10:47:39 183

原创 tensorstore简单介绍

TensorStore是谷歌开源的C++库,主要用于读、写大规模的多维数组。

2023-10-13 10:42:10 224

原创 basic paxos算法简述

P2c:如果一个编号为 n 的提案具有 value v,该提案被提出,那么存在一个多数派,要么他们中所有人都没有接受(accept)编号小于 n 的任何提案,要么他们已经接受(accept)的所有编号小于 n 的提案中编号最大的那个提案具有 value v;P2a:一旦一个具有 value v 的提案被批准(chosen),那么之后任何 Acceptor 再次接受(accept)的提案必须具有 value v;P1:一个 Acceptor 必须接受第一次收到的提案。Paxos算法中的角色允许身兼数职。

2023-08-04 16:49:36 202

原创 重新认识C语言中的结构体

我们对C语言中的struct的印象是什么?它是C语言中内置的复合数据类型;相当于C++中的class;丰富的初始化操作;Struct的拷贝为浅拷贝;支持嵌套、指针等操作;支持位字段,节省空间。如果你知道的只有这些,那么说明你对struct了解的还不够深刻,后续我们简单聊聊结构体的一些知识。本文的代码以及描述都是基于linux环境。1. C++中的structC++中的struct本质上和class没有区别,struct也支持构造函数、成员函数、虚函数、继承等,仅仅只有默认的访问权

2021-10-27 20:51:43 220

原创 sysbench代码剖析和实践

sysbench是一款比较流行的测试工具,主要用于测试fileio、cpu、memory、threads、mutex等的性能测试,但是最主要的还是做数据库的性能测试,经常用来测试MySQL、Drizzle、AttachSQL、Oracle、PostgreSQL等相关的数据库,也可以扩展支持其他的数据库以及测试用例,本文主要介绍sysbench的代码逻辑、代码调试、lua脚本以及相关扩展功能。本文的介绍主要基于sysbench 1.0的代码:repo:https://github.com/akopyto

2021-10-13 20:55:51 1287

原创 云原生数据库新趋势

存算分离的架构下,如何做计算下推?如何支持多写?DDC场景下的存算分离:CPU、MEM、Disk?K8S + 数据库 的前景?

2021-10-09 10:44:49 130

原创 硬件对数据库设计的影响

0. 硬件一直在影响着数据库设计为什么会有WAL?是为了把随机写开销化成顺序写。为什么会有buffer pool?为了写操作和读操作更加迅速。为什么我们要用Page作为B+ Tree的节点单位?为了简化磁盘读取方式。为什么Wisckey火了?因为SSD的大规模使用,使得LSM的架构可以有更好的设计。1. CPU单核CPU性能提升不明显,多核CPU带来的性能损耗;NUMA架构下如何管理多核对同一块内存的访问?并发控制?如何减少CPU陷入内核?内核旁路?用户态?如何降低CPU利用率?算法

2021-10-09 10:35:31 214

原创 分布式数据库的挑战

1. 分片如何保证你选的partition key在数据增长的时候依然保持均匀分布?如何选择Partition的列?是不是应该在Query的比较多的列上做Partition?Join的比较频繁的2个Region,是不是一般放到一个节点比较好?(跨Region查询)如何评价不同分片策略的优劣?2. 事务如何优化2PC?怎样做并发控制,怎么控制写写冲突(一般通过锁),读写冲突(MVCC)?要支持哪些隔离级别?发号器?如何做?3. 优化器跨Region的join如何优化?如何做SQ

2021-10-09 10:32:36 140

原创 使用systemtap模拟磁盘IO故障

真实场景下,磁盘故障时有发生,如何模拟

2021-09-26 21:08:45 1679

原创 使用systemtap模拟网络延迟

上文介绍了IO延迟的注入,本文主要介绍网络的延迟注入,其实网络的延迟模拟工具有很多,我们可以通过tc、iptables等常用工具来做,这些工具都很好用,但是如果精细到系统调用级别的延迟注入,上述常规的工具可能就不太容易实现了,这正是stap擅长的领域。下面就是一个在服务端建立连接后延迟3秒返回的stap脚本:#!/usr/bin/stap# file: sock_connect_delay.stp# cmd: sudo stap ./sock_connect_delay.stp -g# 在建连

2021-09-26 20:43:13 658

原创 使用systemtap模拟磁盘IO延时

在分布式存储系统的异常测试中,模拟硬件故障是一个比较头痛的问题。比较幸运的是,Linux环境下有一个非常好的工具SystemTap(https://sourceware.org/systemtap/),可以使用stap给系统调用增加勾子,并注入我们期望的异常,达到验证应用程序在异常情况的行为是否符合预期的目的。注意:stap会影响系统调用的行为,为了限制影响面,建议做好filter(可以通过pid、devname等条件限制),否则会严重影响系统稳定性,不建议在生产环境使用。生产环境经常因为IO抖动,

2021-09-26 20:31:36 1658

原创 gcc之__attribute__字节对齐参数设置

在性能要求比较高的场景下,经常会用到字节对齐,我们可以通过gcc的__attribute__来设置struct的字节对齐,比较常用的就是aligned和packet,本文主要介绍这两种设置字节对齐的用法。1. aligned - 设置变量对齐aligned的功能就是设置变量按照指定的字节进行内存对齐,对齐的字节数必须是2的指数,再看一个使用的例子:// file: test.c// gcc test.c -o test#include <stdint.h>#include <s

2021-09-26 18:12:31 2247

原创 网络故障模拟工具

在做异常测试时需要模拟网络异常,经常使用的模拟工具有tc和iptables。1. tctc(traffic control)一般用来做精细的网络故障模拟。模拟网络延迟:# 1. 将 eth0 网卡的传输设置为延迟 100 毫秒发送:**# tc qdisc add dev eth0 root netem delay 100ms## 2. 将 eth0 网卡的传输设置为延迟 100ms ± 10ms (90 ~ 110 ms 之间的任意值)发送# tc qdisc add dev eth0 r

2021-04-08 11:28:34 1086

原创 Mellanox网卡参数调优

为了提高IPv4和IPv6的流量性能,可以使用Linux sysctl命令修改操作系统设置的默认系统网络参数。但是,需要注意,更改网络参数可能会在不同的系统上产生不同的结果。结果显著依赖于CPU和芯片组的效率。ref:https://community.mellanox.com/s/article/linux-sysctl-tuninghttps://community.mellanox.com/s/article/performance-tuning-for-mellanox-adaptersh

2021-04-07 14:33:16 2557

原创 socket的O_NONBLOCK以及TCP_NODELAY

设置socket的O_NONBLOCK以及TCP_NODELAY1. no-blocking将socket设置为no-blocking意味着socket收发数据都是非阻塞的,相比于阻塞方式,需要特殊处理这个错误码:EWOULDBLOCK or EAGAIN(这两个错误码是一样的,都是35),进行重试或者重新调度。将socket设置非阻塞有多种方法,下面会一一汇总。1.1 fcntl设置O_NONBLOCKPOSIX的fcntl用的比较广泛,兼容性也比较好,优先推荐使用fcntl来设置,缺点是需要两

2021-04-07 14:19:15 5247

翻译 在c++中实现一个good spinlock

在c++中实现一个good spinlock网上有很多关于spinlock不好的实现。他们都犯了相同的错误:在RMW(read-modify-write)操作上自旋。我后面会说明为什么这些实现不好,也会介绍如何在C++中实现一个好的spinlock,并且这个实现很容易迁移到其他编程语言中。在本文的最后提供了完整的spinlock实现。一个bad spinlock实现最基本的自旋锁使用一个boolean值(或1个bit)来表示锁是否被持有。要获取锁,使用原子交换操作将boolean值设置为true。

2021-03-30 17:45:15 1637 1

原创 double free or corruption错误定位

“double free or corruption”错误定位1. 测试程序先写一个简单的测试程序模拟double free错误:// file: t.c#include <stdlib.h>void *func1(size_t size) { return malloc(size);}void func2(void *p) { free(p);}int main() { char *ptr = func1(sizeof(char));

2021-03-17 12:36:30 11645 1

原创 通过火焰图查看调用栈

1. 将火焰图的项目clone下来# git clone https://github.com/brendangregg/FlameGraph.git2. 采集数据:# sudo perf record -F 99 -p $PID -g -- sleep 303. 查看每个调用栈的百分比# perf report -n --stdio4. 生成火焰图# perf script -i perf.data &> perf.unfold# ./stackcollapse-per

2021-03-10 16:46:36 343

原创 使用perf分析网络系统调用栈

使用perf分析网络系统调用栈1. 增加事件比如增加了如下网络通信相关的系统调用:# perf probe --add sys_writev='sys_writev'# perf probe --add sys_writev_exit='sys_writev%return'# perf probe --add vfs_writev_exit='vfs_writev%return'# perf probe --add do_readv_writev_exit='do_readv_writev%re

2021-03-10 16:30:56 2090

原创 CEPH OSD_SCRUB_ERRORS 错误处理

1. 错误描述# ceph health detailHEALTH_ERR 1 scrub errors; Possible data damage: 1 pg inconsistentOSD_SCRUB_ERRORS 1 scrub errorsPG_DAMAGED Possible data damage: 1 pg inconsistent pg 2.33c6 is active+clean+inconsistent, acting [355,138,29]2. 问题定位查看对应

2020-12-23 10:09:49 4293 2

原创 CEPH架构总体说明

文章目录1. Ceph架构说明1.1 整体架构图1.2 接口类型1.2.1 RBD1.2.2 CephFS1.2.3 RadosGW1.3 RADOS2. RADOS概念介绍2.1 Monitor2.2 RADOS对象存储2.3 pool和PG2.4 对象寻址过程2.5 对象读写2.6 数据均衡2.7 Peering2.8 Recovery&Backfill2.9 纠删码2.10 快照和克隆2.11 Cache Tier2.12 scrub3. 参考资料1. Ceph架构说明1.1 整体架构图

2020-05-15 11:30:09 741

原创 对象存储相关工作总结

TODOref:https://www.163yun.com/help/documents/68792520222625792

2020-05-14 17:56:56 226

原创 HDFS集群数据迁移方案-distcp

HDFS集群数据迁移方案-distcp1. 原理distcp原理是在Hadoop集群中使用MapReduce分布式拷贝数据。2. 资源消耗源集群有只有数据读取和网络传输的消耗目的集群需要执行MapReduce任务,并且有数据写入的消耗(3副本需要有3倍的写入)3. 兼容性同版本集群拷贝(或者协议兼容版本之间的拷贝)使用HDFS协议hadoop distcp  hd...

2020-04-17 10:43:24 1340

原创 EC纠删码理论介绍

文章目录纠删码理论介绍1 什么是EC?2 EC(4+2)编解码简介3 EC的数学原理4 EC存储的优缺点纠删码理论介绍1 什么是EC?EC:纠删码-Erasure Code,是一种编码理论:EC是纠错码的一种,通过增加校验片,保证数据可靠性。特性:将数据分成k个分片,生成m个校验片,假设n=k+m,在n个分片中任意选取k个分片,就可以将原始数据恢复回来。EC不仅应用在存储领域,通信...

2020-04-17 10:23:31 9881

原创 研发过程管理与质量控制

质量控制是研发过程管理非常重要的一环,需要考虑到从需求的产生到最终功能上线,以及后续的运维工作,甚至是故障的处理。方方面面都需要考虑到。具体包含如下环节。需求:需求分析、需求评审、需求排期设计:总体设计、接口设计、详细设计、邮件讨论、方案评审、signoff机制实现:功能开发、单元测试、开发冒烟、性能自测、CodeReview、提测邮件测试:用例评审、功能测试、性能测试、异常测试、稳...

2019-10-22 09:46:59 2595

原创 对象存储数据可靠性技术

1. 概述对象存储能够提供海量、安全、低成本、高可靠的云存储服务,使用RESTful API 可以在互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类型供选择全面优化存储成本,并提供99.999999999%的数据可靠性。2. 可靠性定义数据的可靠性,即丢失数据的可能性,类似于数据库系统中ACID中的D,数据的持久性,一旦在系统中成功写入数据,那么这条数据不应该丢失。对象存储可靠...

2019-10-17 15:18:48 1380

原创 数据湖技术说明

1. 为什么要做存储和计算分离?随着数据量的增长,存储和计算资源的使用率严重不均衡从数据的生命周期来看,存在冷热数据分层的现象2. 数据仓库和数据湖有什么不同?一是存储数据类型不同二是数据处理模式不同三是服务对象不同3. 数据湖的优势一是数据集成方式简单二是加速数据准备过程三是具备更好的可扩展性四是系统建设成本更低五是便于创建智能化分析应用4. 数据湖的未来相对...

2019-10-17 15:11:32 692

原创 消息队列使用场景汇总

在工作中经常会用到消息队列(MQ),消息队列适用的场景有哪些呢?消息处理的方式有哪些?1. 功能场景解耦削峰填谷最终一致性广播消费无限重试2. 消息处理exact onceat least onceat most once3. 其他TODO...

2018-06-23 14:26:08 409

原创 ElasticSearch查询操作最大sharding数目限制

ElasticSearch查询操作最大sharding数目限制1. 问题说明在ES中做一个大范围的查询时,经常会报这个错误:{ "error":{ "root_cause":[ { "type":"illegal_argument_exception", "reaso...

2018-05-08 23:27:00 8794

原创 ElasticSearch运维手册

ElasticSearch运维手册0. 介绍主要介绍了ES常用的在运维过程中可能会用到的一些命令。1. 查看ES集群中节点信息查看ES集群中所有节点信息,以及各个节点内存和CPU相关的指标$ curl -X GET 'http://192.168.5.1:9200/_cat/nodes?v'ip heap.percent ram.percent...

2018-04-12 22:55:01 4540

原创 ELK性能优化说明

ELK性能优化简要说明1. 系统部署说明 组件 机器配置 说明 ElasticSearch&amp;Kibana 3 * (32 core + 128GB mem + SAS 3.6T*12) EK混部 Logstash 3 * (40 core + 32GB mem) 单独部署,比较耗cpu DS&amp;Kafka 5 ...

2018-03-31 17:35:05 6451

原创 Kibana查询语法详解

Kibana查询语法详解Kibana查询语法和Lucene相同,下面是Lucene的查询语法介绍。注意:Lucene查询语法不适合在程序中使用,程序中使用可以调用Lucene-API,API提供了丰富功能来组合定制你所需要的查询器,查询语法是为手工输入高级查询设计的,而不是为程序拼接语法串而设计的。1. 简单说明1.1 Terms一个查询将分解为若干Term以及操作符...

2018-03-31 17:33:47 55800

原创 数据库系统——关系型数据在磁盘上的存储布局

ELKtail可以使用ELKtail连上Elasticsearch,以tail的方式查看ES中的日志。 使用方式也和tail命令类似,下面是常用的使用方法介绍。基本用法elktail不加参数直接使用elktail不加任何参数,那么将会尝试连接localhost:9200,并且tail最近的logstash index,展示message字段信息$ ./elktai...

2018-03-31 17:32:23 1088

原创 Elasticsearch介绍文档

Elasticsearch介绍文档0. 说明主要介绍ES的相关概念以及如何使用1. 一些概念索引-index - 一个索引就是一个拥有几分相似特征的文档的集合 - 相当于数据库中的database类型-type - 一个类型是你的索引的一个逻辑上的分类/分区 - 通常,会为具有一组共同字段的文档定义一个类型 - 相当于数据库中的table文档-docume...

2018-03-31 17:28:24 545

原创 netty系列3-Java BIO编程

网络模型基本的模型是client/server模型,client进程和server进行通信,server端做绑定IP,并绑定端口;client端向服务端监听的地址发起连接请求,通过三次握手建立连接。如果建立成功,双方就可以通过socket进行通信。

2017-11-10 10:17:33 349

原创 netty系列2-Linux网络IO模型

1. 阻塞和非阻塞阻塞和非阻塞描述的是IO函数,指访问某个函数时是否会阻塞线程(block,线程进入阻塞状态)2. 同步和异步同步和异步描述的是执行IO操作的主体是谁同步是由用户进程自己去执行最终的IO操作异步是用户进程自己不关心实际IO操作的过程,只需要由内核在IO完成后通知它既可,由内核进程来执行最终的IO操作3. IO分类3.1 阻塞IO模型阻塞IO指的是用户调用读写方法是阻塞的

2017-11-09 19:30:25 358

原创 netty系列1-JAVA IO演进之路

在JAVA1.4之前的版本,JAVA对I/O的支持并不完善,基于JAVA所有的Socket通信都是同步阻塞模式,这一模式虽然简化了开发难度,但是在性能和可靠性方面存在着巨大的瓶颈。在很长一段时间里,大型的应用服务器都是采用C/C++开发的。采用Java BIO开发的服务端软件只能通过不断扩容来满足高并发和低延迟,极大的增加了企业的成本。

2017-11-08 11:40:12 590

原创 性能测试应该怎么做?

两个原则平均值不靠谱吞吐量和响应时间要挂钩怎样做性能测试1 你得定义一个系统的响应时间latency,建议是TP99,以及成功率比如路透的定义:99.9%的响应时间必需在1ms之内,平均响应时间在1ms以内,100%的请求成功。2 在这个响应时间的限制下,找到最高的吞吐量测试用的数据,需要有大中小各种尺寸的数据,并可以混合。最好使用生产线上的测试数据。3 在这个吞吐量做Soak Te

2017-11-06 17:28:22 1083

原创 利用Nginx的resolver实现动态upstream

之前写了篇文章用openresty实现了一个动态路由,虽然说是动态的,但是实际上还是需要将upstream在配置文件中写好,还是相当于静态的。最近工作中有这方面的需求,upstream是完全动态,由客户端来指定,开始的时候有一些错误,最后通过resolver指定dns服务来完成,具体流程如下。1. 开始采坑nginx的配置如下:worker_processes 1;events { wor

2017-09-15 00:01:13 38860 2

ceph资料打包大汇总.zip

里面包含3本PDF文档: 1. ceph.pdf:ceph知识树结构思维图 2. Ceph架构剖析.pdf:总结了CEPH整体架构 3. Ceph Cookbook.pdf:《Ceph Cookbook》中文版,目录、内容清晰 4. Learning Ceph.pdf:《Learning Ceph》英文电子版,目录、内容支持粘贴复制

2020-05-15

Pinot架构介绍

Pinot 是一个实时分布式的 OLAP 数据存储和分析系统。LinkedIn 使用它实现低延迟可伸缩的实时分析。Pinot 从离线数据源(包括 Hadoop 和各类文件)和在线数据源(如 Kafka)中攫取数据进行分析。Pinot 被设计是可以进行水平扩展的。 该文档主要是一个内部分享的ppt。

2015-07-03

Pinot简单介绍

Pinot 是一个实时分布式的 OLAP 数据存储和分析系统。LinkedIn 使用它实现低延迟可伸缩的实时分析。Pinot 从离线数据源(包括 Hadoop 和各类文件)和在线数据源(如 Kafka)中攫取数据进行分析。Pinot 被设计是可以进行水平扩展的。 该篇文章是对Pinot的简单介绍,http://blog.csdn.net/cjfeii/article/details/46711307。

2015-07-01

机器学习与R语言

Machine learning with R 该书是英文版的。

2014-05-10

存储技术介绍

该文档是ppt格式,是一位存储大牛做讲座用的ppt,做的很详细。 目录: 1. 网络存储介绍 2. 备份与容灾 3. 主要研究领域

2014-05-10

lua编程指南

本书详细讲解了lua编程的方方面面,是一本不错的lua学习教程,也可以作为lua的参考书。

2014-05-10

苹果公司安全编程手册

苹果公司的安全编程手册,coder可以看看这个。主要介绍编码规范之类的。

2014-04-24

Nginx模块参考手册中文版

主要介绍的是nginx模块开发的技术,是pdf文件。挺好的。

2014-04-24

Thinking in C++ (中文版,英文版)压缩包.zip

Thinking in C++ 中文版和英文版合集

2012-10-19

Glibc内存管理-Ptmalloc2源代码分析

本文通过Glibc的内存暴增问题,主要介绍了系统的内存管理问题,具体如下: 目录 1. 问题 2. 基础知识 2.1 X86平台Linux进程内存布局 2.1.1 32位模式下进程内存经典布局 2.1.2 32位模式下进程默认内存布局 2.1.3 64位模式下进程内存布局 2.2 操作系统内存分配的相关函数 2.2.1 Heap操作相关函数 2.2.2 Mmap映射区域操作相关函数 3. 概述 3.1 内存管理一般性描述 3.1.1 内存管理的方法 3.1.2 内存管理器的设计目标 3.1.3 常见C内存管理程序 3.2 Ptmalloc内存管理概述 3.2.1 简介 3.2.2 内存管理的设计假设 3.2.3 内存管理数据结构概述 3.2.4 内存分配概述 3.2.5 内存回收概述 3.2.6 配置选项概述 3.2.7 使用注意事项 4. 问题分析及解决 5. 源代码分析 5.1 边界标记法 5.2 分箱式内存管理 5.2.1 Small bins 5.2.2 Large bins 5.2.3 Unsorted bin 5.2.4 Fast bins 5.3 核心结构体分析 5.3.1 malloc_state 5.3.2 Malloc_par 5.3.3 分配区的初始化 5.4 配置选项 5.5 Ptmalloc的初始化 5.5.1 Ptmalloc未初始化时分配/释放内存 5.5.2 ptmalloc_init()函数 5.5.3 ptmalloc_lock_all(),ptmalloc_unlock_all(),ptmalloc_unlock_all2() 5.6 多分配区支持 5.6.1 Heap_info 5.6.2 获取分配区 5.6.3 Arena_get2() 5.6.4 _int_new_arena() 5.6.5 New_heap() 5.6.6 get_free_list()和reused_arena() 5.6.7 grow_heap(),shrink_heap(),delete_heap(),heap_trim() 5.7 内存分配malloc 5.7.1 public_mALLOc() 5.7.2 _int_malloc() 5.8 内存释放free 5.8.1 Public_fREe() 5.8.2 _int_free() 5.8.3 sYSTRIm()和munmap_chunk()

2012-10-09

模式设计简述及源码实现

这是一本23种设计模式的简单表述书,并用C++源码实现,全文通俗易懂,可以在读GOF的大作《模式设计》之前看这本书,从而对模式设计有一个浅显的认识,然后再研读GOF的《模式设计》就会轻松很多。

2012-10-09

列存数据库研究

本文主要讲了列存数据库的现状、列存数据库的中用到的技术、列存数据库使用的环境,又介绍了一个列存数据库的产品:Sysbase IQ,最后展望了列存数据库的未来。是一篇很好的介绍列存数据库技术的一篇文章。

2012-08-23

列存储数据库关键技术综述

这是一篇学术论文,以下是简介: 随着互联网技术的发展、硬件的不断更新、企业及政府信息化的不断深入, 应用的复杂性要求越来越高, 推动着数据存储技术向着海量数据、分析数据、智能数据的方向发展, 以便为数据仓库、在线分析提供高效实时的技术支持。基于行存储的数据库技术面临新的问题, 已经出现了技术瓶颈。近些年来, 一种新的数据存储理念, 即基于列存储的关系型数据库( 简称列数据库, 下同)应运而生。列数据库能够快速发展, 主要原因是其复杂查询效率高, 读磁盘少, 存储空间少, 以及由此带来的技术、管理和应用优势。对列数据库技术的基本现状、关键支撑技术以及应用优势进行了介绍和分析。

2012-08-23

UNIX环境高级编程.rar

本书全面介绍了UNIX系统的程序设计界面—系统调用界面和标准C库提供的许多函数。 本书的前15章着重于理论知识的阐述,主要内容包括UNIX文件和目录、进程环境、进程控制、进程间通信以及各种I/O。在此基础上,分别按章介绍了多个应用实例,包括如何创建数据库函数库,PostScript 打印机驱动程序,调制解调器拨号器及在伪终端上运行其他程序的程序等。 本书内容丰富权威,概念清晰精辟,一直以来被誉为UNIX编程的“圣经”,对于所有UNIX程序员—无论是初学者还是专家级人士—都是一本无价的参考书籍。

2012-06-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除