条目十<了解分配子(allocator)的约定和限制> 在STL标准库中,分配子的存在有点怪异. 一开始的设计意图是提供一个内存模型的抽象,让使用库者库忽略操作系统的near指针和far指针问题.但此目的没有达到.另一个目的是为了有利于开发作为对象形式存在的内存管理器. 从书中的这句话,其实我咋一看下去是比较模糊.细细琢磨,stl中的allocator就是发育畸形了,没有按照本意来发育,成为了另外一种存在. 在多数标准容器中,没有从它们的分配子allocator分配内存. ** 分配子注意什么…
条目十五<注意strng实现的多样性> 下面以一个打印string空对象的大小切入本条目: #include #include using namespace std; int main() { string ss; printf("ss size: %ld\n", sizeof(ss)); return 0; } ss size: 32 string和char一样大是常见的,但是string的大小是char的7倍也是常见的.上面例子是在环境是 gun c++下的运行结果,…
条目十四<使用reserve来避免不必要的重新分配> 使用vector和string的插入元素的时候,我们是不用担心内存问题的(只要不超过容器的max_size).因为底层有分配子管理内存.在插入元素的时候,内存不够会发生像realloc的过程: 分配新的内存块,它有容器目前容量的几倍.在大部分实现中,vector和string的容量每次以2为因数增 长.也就是说,当容器必须扩展时,它们的容量每次翻倍. 把所有元素从容器的旧内存拷贝到它的新内存. 销毁旧内存中的对象. 回收旧内存 先看个例子…
<条目十六>如何将vector和string的数据传给遗留的API 优秀的代码是可以延续的,所以并非所有的代码都是重构的,而且有时候重构会对整个系统影响较大,投入巨大,得不偿失.然而,也不必为了系统的稳定而抛弃先进和方便的技术. 正如如果你想在遗留的老代码中想传vector和string给形参是数组的接口,那么可以按以下的方法做: 接口:void dosomething(const char* ptr, size_t size); 传vector给dosomething接口方法: 1.&…
<条目十八>避免使用vector 先说结论: 一是:vector<bool>不是标准容器,因为标准容器的对于T *p = &c[0];必须是可编译的. 二是:vector<bool>并不是以单个元素为bool来存储的. 在底层实现中,vector<bool>中为了节省空间,bool并不真的是以单个字节来存储的,而是通过位bit来表示的,一个位代表一个bool表示. vector不满足STL容器的必要条件,你最好不要使用它;而deque和bitset是…
条目十二<切勿对slt容器的线性安全性又不切实际的依赖> 这一条目,我想用简短而有力的语句来总结. stl库是为了照顾大多数情况,而不是某一领域,如果在库层次实现线性安全,很大可能是对性能有所损耗的,这样就得不偿失了,还是让开发者自己按需实现.标准没有在库实现线性安全.一般是厂商实现,可能吧,只能是期望,不一定的. 我们可以期望: 1.stl提供多个线程读是安全的 2.stl提供多个线程对不同的容器做写入操作是安全的. 这些都是期望啊啊啊. 必要的线性安全还是要靠我们自己来控制的. 线性安全一…
由于最近业务需要,写了个获取网段内所有IP的函数,以及分配可用子网段的函数 /** * 根据网段获取计算所有IP * @param string $segment 网段 '139.217.0.1/24' * @return array IP列表 ['139.217.0.1','139.217.0.2'……] */ function getIpBySegment($segment) { $segmentInfo = explode("/", $segment);//['139.217.0…
--1. 使用IN关键字 --例1 查询系别人数不足5人的系别中学生的学号.姓名和系别 --系别人数不足5人的系别 ==>选择条件 select Sdept from Student Group by Sdept --显示这些系别的学生信息 Select sno, sname, sdept From Student WHERE sdept IN ( select Sdept from Student Group by Sdept ) --2. 使用EXISTS关键字 --例2 如果“MA"…
第一部分:(参考百度百科) 一.STL简介 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Lee和David R Musser在惠普实验室工作时所开发出来 的.现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. STL的代码从广义上讲分为三类:algorithm(算法).container(容器)和iterator(迭代器),几乎所有的代码都采用了…
第一章容器 第1条:慎重选择容器类型. 标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist和rope.slist是一个单向链表,rope本质上是一“重型”string. 非标准的关联容器hash_set.hase_multiset.hash_map和hash_multimap. vector<char> 作为string的替代.(见第13条) vector作为标准关联容器的替…
0.前言随机访问迭代器: vector.string.dequeSTL的一个革命性的方面就是它的计算复杂性保证 条款01:慎重选择容器类型 c++提供的容器:标准STL序列容器:vector.string.deque.list标准STL关联容器:set.multiset.map.multimap非标准STL容器:stack.queue.hash_set.hash_map STL容器的一个分类方法:连续内存容器:逻辑相邻的元素物理地址也相邻:vector.string.deque基于节点的容器:逻…
条目十三<尽量使用vector和string来代替使用数组> 数组在现代编程语言中基本都存在,应用可谓广泛,不可或缺,虽然在一些语言中(go)有切片等数据结构,但是数组还是存在的. 但是在有了stl后,在使用数组时更建议用vector和string来代替,因为在动态分配数组的内存时,需要人为的管理内存.比如在new T[]时,需要在用完分配的数组后先手工释放数组存放的对象,然后再释放数组的内存 直接使用数组的不好之处有: 在很多时候,如果程序运行时在动态分配数组内存后产生异常,那么就不会调用析…
STL内存创建 Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu  转载请标明来源 1.      Stl内存创建基类模板__malloc_alloc_template STL的经常使用的内存创建參考文件: stl_alloc.h,文件里定义了__malloc_alloc_template模板库,创建与释放使用C方法malloc.free.realloc,模板库里面主要对外提供了函数: allocate: 分配内存 deallocate: 释放内存 re…
在一些特定的业务场景下,使用hive默认的配置对数据进行分析,虽然默认的配置能够实现业务需求,但是分析效率可能会很低. Hive有针对性地对不同的查询进行了优化.在Hive里可以通过修改配置的方式进行优化. 以下,几种方式调优的属性. 1.列裁剪 在通过Hive读取数据的时候,并不是所有的需求都要获取表内的所有的数据.有些只需要读取所有列中的几列,而忽略其他列的的数据. 例如,表Table1包含5个列Column1.Column2.Column3.Column4.Column5.下面的语句只会在…
一级域名(baidu.com)也叫作顶级域名,注册一级域名是需要付费的. 而二级域名(image.baidu.com)是一级域名的延伸,所以只要购买了一级域名,二级域名是可以任意配置的. 其实(www.baidu.com)也是二级域名,只是大家已经习惯使用www为前缀的二级域名作为网站的主域名而已. 通过DNS解析服务商,可以为每个二级域名绑定不同的主机IP,这样即使只有一个主域名也可以架设多个网站了. 如果你只有一台主机,并且要在上面建立多个项目,还得通过子域名的方式访问,那么你需要配置 Ap…
paip.输入法编程---词库多意义条目分割 python实现. ==========子标题 python mysql 数据库操作 多字符分隔,字符串分割 字符列表循环  作者 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com 来源: http://blog.csdn.net/attilax ===================主要的流程 词库原来格式 carp      n.鲤鱼:v.吹毛求疵    813 需要意义分割.. 主要的流程如下: for  …
自定义View的步骤 当andoid提供的系统组件不满足要求时候,完全可以集成View来派生自定义组件. 首定定义一个继承View的子类,然后重写他一个或几个方法. 重写的方法介绍 构造器:这是定制View最基本的方式,当用java代码创建或者从xml文件读取都需要用到该方法. onFinishInflate()这是一个回调方法,当应用从xml布局文件加载该组件,并利用它来构造界面后,会调用这个方法. onMeasure():改方法检测View组件以及它包含的组件大小. onLayout():需…
Netty源码分析第五章: ByteBuf 第八节: subPage级别的内存分配 上一小节我们剖析了page级别的内存分配逻辑, 这一小节带大家剖析有关subPage级别的内存分配 通过之前的学习我们知道, 如果我们分配一个缓冲区大小远小于page, 则直接在一个page上进行分配则会造成内存浪费, 所以需要将page继续进行切分成多个子块进行分配, 子块分配的个数根据你要分配的缓冲区大小而定, 比如只需要分配1k的内存, 就会将一个page分成8等分 简单起见, 我们这里仅仅以16字节为例,…
C++内存分配与释放 1. new 运算符 与 operator new一条 new 表达式语句( new Type; )中的 new 是指 new 运算符.operator new 是定义在 #include <new> 中声明的一系列全局函数, 其中部分全局函数可被重写, 或在自定义类型定义为成员函数, 这样该类或其子类将使用成员函数的版本进行内存分配.new 和 operator 对应用程序至关重要, 一旦应用程序定义了全局版本的 operator new/delete, 应用程序就负担…
  我们知道,一般认为在Android进程的内存模型中,heap分为两部分,一部分是native heap,一部分是Dalvik heap(实际上也是native heap的一部分).   Android Bitmap 是一个比较特殊的类,用来加载图片的,而图片的数据部分一般较大,因此在创建Bitmap对象时,Android system 采用的策略是将其分为两个部分,一个是基本信息(如宽度),一个是像素点数据.前者会保存在Dalvik heap中,也就是Bitmap对象所指的空间,后者会单独放…
前面介绍了怎样通过Socket在客户端与服务端之间传输文本,当然Socket也支持在客户端与服务端之间传输文件,因为文件本身就是通过I/O流实现读写操作的,所以在套接字的输入输出流中传输文件真是再合适不过了.只是套接字属于长连接,倘若Socket一直不关闭,连接将总是处于就绪状态,也就无法判断文件数据是否已经传输完成.为了检验文件传输的结束时刻,可以考虑实时下列的两种技术方案之一:1.客户端每次连上Socket之后,只发送一个文件的数据,且发送完毕的同时立即关闭套接字,从而告知服务端已经成功发送…
SubPage 级别的内存分配: 通过之前的学习我们知道, 如果我们分配一个缓冲区大小远小于page, 则直接在一个page 上进行分配则会造成内存浪费, 所以需要将page 继续进行切分成多个子块进行分配, 子块分配的个数根据你要分配的缓冲区大小而定, 比如只需要分配1KB 的内存, 就会将一个page 分成8 等分.简单起见, 我们这里仅仅以16 字节为例, 跟踪其分配逻辑.在分析其逻辑前, 首先看PoolArean 的一个属性: private final PoolSubpage<T>[…
目       录 1.      概述... 2 2.      平台演示... 2 3.      消息管理... 2 4.      子用户权限管理... 3 5.      元件移动事件... 3 6.      联动控制... 4 7.      增加油表和饼图... 5 1.   概述 发布iNeuOS 3.4版本,主要发布和更新:消息管理.子用户权限管理.元件移动事件.联动控制和油表饼状图等,并且大幅优化代码,主要提高执行效率和健壮性. 此版本应用到中核集团的核测控项目中表现突出,…
摘要 超文本传输协议(HTTP)是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议.它是一种通用的,不分状态(stateless)的协议,除了诸如名称服务和分布对象管理系统之类的超文本用途外,还可以通过扩展它的请求方式,错误代码和报头来完成许多任务.HTTP的一个特点是数据表示方式的典型性和可协商性允许独立于传输数据而建立系统.在1990年WWW全球信息刚刚起步的时候HTTP就得到了应用.HTTP的第一个版本叫做HTTP/0.9,是一种为互联网原始数据传输服务的简单协议.由RFC 19…
Effective STL 读书笔记 标签(空格分隔): 未分类 慎重选择容器类型 标准STL序列容器: vector.string.deque和list(双向列表). 标准STL管理容器: set.multiset.map和multimap. 非标准STL序列容器: slist(单向列表)和rope(重型字符串?). 非标准STL关联容器: hash_set.hash_multiset.hash_map和hash_multimap.(c++11引入了unordered_set.unordere…
http://www.cnblogs.com/arthurliu/archive/2011/08/07/2108386.html 作者:咆哮的马甲 出处:http://www.cnblogs.com/arthurliu/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 转载请保持文档的完整性,严禁用于任何商业用途,否则保留追究法律责任的权利. 第一条: 慎重选择容器类型 C++所提供的容器类型有如下几种: 标准STL序列容器 vector…
建表规则如下: CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (…
基于ZigBee的家居控制系统的设计与应用 PPT简介:http://pan.baidu.com/s/1i38PC6D 摘  要 智能家居是未来家居的发展方向,其利用先进的网络技术.计算机技术和无线通信技术等将家居中的各种电子电气设备连接起来,统一管理.远程监控和资源共享,实现了高效.便利的生活环境.近些年互联网的迅猛发展,网络的稳定性.安全性和网络带宽都有了长足的发展,由互联网提供的各种服务已经深入到人们生活的方方面面,因此将智能家居系统同互联网结合起来,为用户提供远程控制服务,延伸智能家居系…
1.概述 继续<那些年使用Hive踩过的坑>一文中的剩余部分,本篇博客赘述了在工作中总结Hive的常用优化手段和在工作中使用Hive出现的问题.下面开始本篇文章的优化介绍. 2.介绍 首先,我们来看看Hadoop的计算框架特性,在此特性下会衍生哪些问题? 数据量大不是问题,数据倾斜是个问题. jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个jobs,耗时很长.原因是map reduce作业初始化的时间是比较长的. sum,count,max,mi…
内存池可有效降低动态申请内存的次数,减少与内核态的交互,提升系统性能,减少内存碎片,增加内存空间使用率,避免内存泄漏的可能性,这么多的优点,没有理由不在系统中使用该技术. 内存池分类: 1.              不定长内存池.典型的实现有apr_pool.obstack.优点是不需要为不同的数据类型创建不同的内存池,缺点是造成分配出的内存不能回收到池中.这是由于这种方案以session为粒度,以业务处理的层次性为设计基础. 2.             定长内存池.典型的实现有LOKI.B…