自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Always__的代码世界

你所做的就是将简单的做到最好

  • 博客(94)
  • 收藏
  • 关注

原创 【STL】空间配置器剖析(完结)

内存基本处理工具STL提供了五个全局函数用于处理空间,分别为:1. construct 用于构造;2. destroy 用于析构;3. uninitialized_copy(first, last, result) 将[first,last)范围内的对象复制到result处;4. uninitiated_fill(first, last, X) 将[first,last

2016-04-28 11:35:17 667

原创 【STL】空间配置器剖析(三)--内存池

内存池上篇文章的阅读量目前为止竟然高达4000+,让作者真是受宠若惊啊(呃呃呃。毕竟是一只菜鸟啊!)。正文开始咯:内存池上篇文章我们对于对对象构造前的内存配置和对象析构后的空间释放进行深入探索。详细介绍了空间配置器的,第一级空间配置器(malloc_alloc_template),第二级空间配置器(defalult_alloc_template).这篇文章将针对free

2016-04-28 09:55:53 1569

原创 【STL】空间配置器剖析(二)

上篇文章主要对于对象的构造含和析构进行了主要说明,这篇文章将对对象构造前的内存配置和对象析构后的空间释放进行深入探索。好的,话不多说马上进入是正文:对对象构造前的内存配置和对象析构后的空间释放,由负责,SGI对此的设计哲学如下:向system heap要求空间。考虑多线程的状态考虑内存不足的应变措施考虑过多的“小型区块”可能造成的内存碎片问题C++的内存配置

2016-04-25 11:37:28 9393

原创 【STL】空间配置器剖析(一)

最近看了看侯捷的《STL源码剖析》,打算看完之后写写笔记,毕竟很多东西看起来看懂了,却并不一定能够将其描述清楚,说到底还是没有彻底弄明白,更主要是写给自己看的,记录一下,以便以后再看。本文主要讲下面先从一个简单的allocator源码看起:#ifndef _JJALLOC_#define _JJALLOC_ #include #include #include #inc

2016-04-23 12:04:58 919

原创 录音播放系统(实现pcm转码mp3,wav)

本文介绍了基于waveX低级音频API采集音频,然后播放的技术,也支持实时的播放。对于将录音和播放分开的做法原因是为了保存pcm文件(未经压缩过的音频文件),然后转码wav和mp3格式。PCM(Pulse code modulation):脉冲编码调制 ,即对波形按照固定周期频率采样。为了保证采样后数据质量,采样频率必须是样本声音最高频率的两倍,这就是 Nyquist 频率 .

2017-03-01 01:39:26 5252 2

转载 内存屏障解析

当你看到“内存屏障”四个字的时候,你的第一反应是什么?寄存器里取出了错误的值?ifence,sfence之类的指令?还是诸如volatile之类的关键字?好吧,我第一次看到这四个字的时候,脑子里浮现出的是魔兽争霸里绿油油的铺满苔藓的岩石屏障- -#,并且,当我搞明白内存屏障具体是什么,而且自认为对其很熟悉之后,我的第一反应依然是那几块绿油油的石头,而且很想上去A一把!言归正传,先解释下

2016-07-17 17:03:49 865

原创 解决mysql无法远程登录的问题

基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限。下面我们将列出解决方案。若要允许Linux系统中的mysql数据库可以被远程连接,需要执行以下两个步骤:1、进入mysql,创建一个新用户,将用户赋予远程登录操作数据库的权利。        格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by "用

2016-07-10 22:26:21 5263

原创 列出rpm包内容和解压rpm包内容

总是记不住这个命令,每用一次就google一次,有时候google的结果还找半天,记录在此。列出rpm包的内容:rpm -qpl *.rpm解压rpm包的内容:(没有安装,就像解压tgz包一样rpm包)rpm2cpio *.rpm | cpio -div你的linux下可能没有rpm2cpio这个命令,用过简单指令安装即可。sudo apt-get inst

2016-07-10 22:09:46 7522

原创 /usr/bin/ld: skipping incompatible解决方案

今天在做项目的时候,用make命令后出现了/usr/bin/ld: skipping incompatible......问题。这个问题实质是链接库文件时,库文件版本与平台版本不对应的问题。解决方法:objdump -p libmylib.a  看一下该库的版本是32为还是64位的,或是ARM版还是..等等。仔细分析一下。你就会恍然大雾。(我的碰到的问题是:编译器选择的是64版,但是xxx

2016-07-10 22:05:05 31842 2

原创 Ubuntu下忘记MySQL root密码解决方法

Linux下忘记MySQL root密码解决方法,基于Ubuntu 14.04 LTS。忘了mysql密码,从网上找到的解决方案记录在这里。编辑mysql的配置文件/etc/mysql/my.cnf,在[mysqld]段下加入一行“skip-grant-tables”。重启mysql服务@ubuntu:~$ sudo service mysql restar

2016-07-10 21:54:57 876

转载 linux 文件的atime,ctime,mtime

Linux系统文件有三个主要的时间属性,分别是 ctime(change time), atime(access time), mtime(modify time)。这三个时间很容易混淆,准备深入了解linux的童鞋请区分这三者的区别atime:Access time,是在读取文件或者执行文件时更改,即文件最后一次被读取的时间。说明: st_atime           Time

2016-07-09 16:55:59 535

原创 【项目】HuffMan编码--文件压缩

HuffManTree,又称为最优二叉树,是加权路径最短的二叉树。使用贪心算法来构建哈夫曼树。贪心算法:是指在问题求解时,总是做出当前看起来最好的选择。也就是说贪心算法做出的不是整体最优解,而是某种意义上的局部最优解。贪心算法不是对所有的问题都能得到最优解。如下图哈夫曼树我们来分析下文件压缩的原理:如图的哈夫曼树,我们将叶节点作为每个字符出现的次

2016-06-19 16:31:28 963

原创 【Git】Git指令学习与其原理探究(一)

这篇文章记录我学习Git的过程中遇到的问题及对于某些问题的看法,如有错误,还望不吝赐教!ps:这篇文章介绍本地库,下篇将介绍与远程库的交互。Git是什么 & 为什么要有Git?    既然您能看到这篇文章,相信你对Git也有了一点点的了解,或者您本来就是大神,来观望下博主而已。    言归正传,那么到底什么是Git呢!    Git是目前世界上最先进的分布式

2016-06-16 20:53:06 9410 5

转载 【网络】HTTP协议中的长连接和短连接(keep-alive状态)

什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。 HTTP首部的Connection: Keep-alive是HTTP1.0浏览器和服务器的实验性扩展,当前的HTTP1.1 RFC

2016-06-07 19:57:34 8187

转载 一致性哈希算法分析

转自:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到

2016-06-05 15:14:51 569

原创 【DS】堆操作及其应用

堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储是最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。代码如下:#include#include#includeusing namespace std;//最大堆:每个父节点的值都大于孩子节点//最大堆:每个父节点的值都小于孩子节点//仿函数来确定创建大堆还是小堆

2016-06-04 22:33:24 570

原创 【DS】哈希表实现

哈希表的介绍和扩展请查看这篇文章:http://blog.csdn.net/always__/article/details/51584446基于线性探测,二次探测的哈希表结构,实现字典查询。代码如下:#pragma once#include#includeusing namespace std;////命名空间First--线性探测法//namespace First

2016-06-04 16:28:05 511

原创 【DS】Hash表及布隆过滤器

什么是Hash     Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数

2016-06-04 16:10:28 2996

转载 HTTP状态码

转载自http://blog.csdn.net/irean_lau。HTTP协议状态码表示的意思主要分为五类 ,大体是 :1××   保留 2××   表示请求成功地接收 3××   为完成请求客户需进一步细化请求 4××   客户错误 5××   服务器错误100 Continue 指示客户端应该继续请求。回送用于通知客户端此次请求已经收到

2016-05-31 13:05:50 1419

原创 【Linux基础】静态库与动态库探究

在Linux操作系统中,普遍使用ELF格式作为可执行程序或者程序生成过程中的中间格式。ELF(Executable and Linking Format,可执行连接格式)是UNIX系统实验室(USL)作为应用程序二进制接口(Application BinaryInterface,ABI)而开发和发布的。工具接口标准委员会(TIS)选择了正在发展中的ELF标准作为工作在32位Intel体系上不同

2016-05-19 12:11:37 986

原创 【剑指offer】两队列实现栈与两栈实现队列

题目:用两个栈实现一个队列。队列的声明如下,请实现他的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能在完成代码之前应该想清楚测试用例:1,在空的队列(栈)里添加删除元素。2,往非空的队列(栈)里添加删除元素。3,连续删除元素直至队列(栈)为空。两队列实现栈:#include#includeus

2016-05-17 19:04:54 468

原创 【Linux基础】常用服务器构建

在Linux下,有好多可以帮助我们更好工作的服务器,例如ftp,nfs,ssh服务器等,今天我就来记录一下我搭建的这几种服务器和具体他们的用法。操作环境:Ubuntu14.04ftp服务器1.安装vsftpd服务器:sudo apt-get install vsftpd2.配置vsftpd.conf文件sudo vi /etc/vsftpd.conf添加下面设置

2016-05-17 00:40:21 1145

转载 【C语言】变长数组与柔性数组

前两天看程序,发现在某个函数中有下面这段程序:int n; //define a variable nint array[n]; //define an array with length n在我所学的C语言知识中,这种数组的定义在编译时就应该有问题的,因为定义数组时,数组的长度必须要是一个大于0的整型字面值或定义为 const 的常量。例如下面这样in

2016-05-11 17:34:14 4318

原创 【C语言】动态内存分配alloca

头文件#include函数原型void* _cdecl alloca(size_t);参数是申请分配内存的字节数,返回值为分配到的内存地址。alloca主要的特征是,它是在栈上开辟的空间,当它作用域结束时会自动释放内存,不用像malloc那样,要用free动态释放空间。还有就是malloc开辟空间成功后,并未对内存空间初始化,必须调用memset来进行初始化,而alloca则初

2016-05-11 17:17:58 4031

原创 【C语言】整型溢出和整型提升

什么是整型溢出:C语言的整型问题相信大家并不陌生了。对于整型溢出,分为无符号整型溢出和有符号整型溢出。对于unsigned整型溢出,C的规范是有定义的——“溢出后的数会以2^(8*sizeof(type))作模运算”,也就是说,如果一个unsigned char(1字符,8bits)溢出了,会把溢出的值与256求模。例如:unsigned char x = 0xff; pr

2016-05-11 01:01:58 2478

原创 【剑指offer】旋转数组的最小值

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减序列的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。输入描述一个非递减序列的一个旋转数组输出描述输出旋转数组的最小元素题目分析  原数组最小的值必然是第一个,旋转后数组是

2016-05-09 11:00:11 897

原创 【STL】SGI STL私房菜:_type_traits

刚开始我们先了解一下全特化和偏特化的知识:模板有两种特化,偏特化和全特化。类模板有偏特化和全特化,而函数模板只有全特化。先看一下类模板:templateclass Test{public: Test(T1 i,T2 j):a(i),b(j){cout<<"模板类"<<endl;}private: T1 a; T2 b;};template<>class Test

2016-05-03 12:27:21 642

原创 reinterpret_cast类型转换运算符的理解

今天同学在群里发了一篇题,关于reinterpret_cast类型转换的,个人觉得有必要记录一下:题目代码如下:#include using namespace std;class A {public: virtual void func() { cout << "A::func" << endl; } virtual void funcA() { cout << "

2016-04-28 18:39:09 995

原创 【DS】数据结构--二叉树实现

最近开始复习数据结构,感觉脑子不好使,特此记录一下,以便日后查看,也希望能给大家一些帮助!类定义和一些函数接口:templatestruct BinaryTreeNode{ BinaryTreeNode(T data) :_data(data), _left(NULL), _right(NULL) {} BinaryTreeNode* _left;

2016-04-23 17:22:17 699

原创 【c++】深度探索虚继承内存布局

C++中虚拟继承的概念为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避免了数据不一致的问题。class 派生类名:virtual 继承方式  基类名virtual是关键字,声明该基类

2016-04-22 17:11:33 1922

转载 【C++】强制类型转换运算符

C++有四种强制类型转换符,分别是dynamic_cast,const_cast,static_cast,reinterpret_cast。其中dynamic_cast与运行时类型转换密切相关,在这里我们先介绍dynamic_cast,其他三种在后面介绍。1、dynamic_cast运算符该转换符用于将一个指向派生类的基类指针或引用转换为派生类的指针或引用。

2016-04-17 09:38:55 576

转载 深度理解TLB机制

TLB:Translation Lookaside Buffer.根据功能可以译为快表,直译可以翻译为旁路转换缓冲,也可以把它理解成页表缓冲。里面存放的是一些页表文件(虚拟地址到物理地址的转换表)。当处理 器要在主内存寻址时,不是直接在内存的物理地址里查找的,而是通过一组虚拟地址转换到主内存的物理地址,TLB就是负责将虚拟内存地址翻译成实际的物理内 存地址,而CPU寻址时会优先在TLB中进

2016-04-16 10:15:49 8334

转载 全网优秀IT博客导航

转自:http://blog.csdn.net/gatieme 感谢分享博客导航linuxlinux全线教程–提供了linux教程,服务器管理教程,BSD教程,还有编程语言(C/Java/Python/Perl),以及网络等全栈学习教程存储技术NoSQLFan–关注NoSQL相关的新闻与技术刘爱贵的专栏–中科院博士

2016-04-16 09:07:06 616

原创 【C++】成员函数的重载,覆盖,隐藏

对于面向对象程序设计的三个特性:封装,继承,多态。封装:封装的目的主要是为了实现源代码的安全性。所以我们对其有访问控制。C++语言使用了三个明确的关键字来设置类中的边界:public,private,protected。继承的类可以访问protected成员,但是不能访问私有成员。继承:重用接口,如果一个类的功能不够强大,或者我们需要在这个类的中加上另外一些功能,我们就可以使用继承

2016-04-15 20:43:40 742

转载 线程安全问题理解

线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据===========================================================

2016-04-14 09:09:58 332

转载 【C++】迭代器的失效

迭代器(iterator)是一个可以对其执行类似指针的操作(如:解除引用(operator*())和递增(operator++()))的对象,我们可以将它理解成为一个指针。但它又不是我们所谓普通的指针,我们可以称之为广义指针,你可以通过sizeof(vector::iterator)来查看,所占内存并不是4个字节。    首先对于vector而言,添加和删除操作可能使容器的部分或者全部迭代

2016-04-13 22:37:16 362

原创 【剑指offer】重建二叉树

题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。//Definition for binary tree struct TreeNode { int val; TreeN

2016-04-09 11:38:29 327

原创 腾讯面试题--生成格雷码

vector getGray(int n){ vector arr(int(pow(2,n))); if (n == 1) { arr[0] = "0"; arr[1] = "1"; return arr; } vector last = getGray(n - 1); for (int i = 0; i < last.size();++i) { arr[i]

2016-04-09 11:36:40 416

原创 【剑指offer】空格替换

题目描述:请实现一个函数,将一个字符串中的空格替换成“ % 20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We % 20Are % 20Happy。void replaceSpace(char str[], int Length) { assert(str != NULL || Length > 0); int num=0; int len

2016-04-09 11:34:29 392

原创 【剑指offer】从尾到头打印链表

***************从尾到头打印链表***************************思路1:借助栈结构来实现:vector printListFromTailToHead(struct ListNode* head) { stack vestack; vector ret; while (head != NULL) { vestack.push(head->

2016-04-09 11:32:15 293

空空如也

空空如也

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

TA关注的人

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