自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (1)
  • 收藏
  • 关注

原创 如何使用repo管理本地私有仓库

目录1. 引导脚本2. 搭建仓库3. repo without gerrit1. 引导脚本repo安装前需要首先下载引导脚本,mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/rep...

2018-10-16 20:26:40 4871

原创 windows下使用cygwin搭建git服务器

在windows上搭建git服务器需要分两步,首先, 要在windows环境下实现ssh服务器, 以及通过public key的authorized登陆.其二, 要在windows下安装模拟GNU环境的git版本或者自带gui shell的git版本.由于windows下面原生不支持ssh协议, 网上多数教程都是通过一些第三方的ssh server软件实现ssh登陆. 另外通过msys...

2016-11-20 20:23:01 7308 3

原创 binder传递fd的机制

进程获得的fd是进程fd table中的index, 在fd table中记录了file指针, file对象保留在kernel空间中. 因此不同进程间传递fd本身并没有什么意义. binder通过parcel传递fd的本质, 是将源进程的fd table中对应项指针, 记录到target进程的fd table中.client端add的fd和server端读出的是两个值.

2016-04-01 09:44:03 3434

原创 Rvalue Reference In Cxx11

Rvalue Reference In Cxx11author: vector03mail:   [email protected]. copy constructor与临时对象.当函数返回一个对象时, CFoo getFoo(args...) { CFoo ret(...); ... ... return ret;}如

2016-03-11 08:25:00 648

原创 Inside of Jemalloc

Jemalloc最初是Jason Evans为FreeBSD开发的新一代内存分配器, 用来替代原来的phkmalloc, 最早投入使用是在2005年. 到目前为止, 除了原版Je, 还有很多变种被用在各种项目里. Google在android5.0里将bionic中的默认分配器从Dl替换为Je,也是看中了其强大的多核多线程分配能力.同经典分配器, 如Dlmalloc相比, Je在基本思路和实现上存在明显的差别. 比如,Dl在分配策略上倾向于先dss后mmap的方式, 为的是快速向前分配, 但Je

2016-02-04 14:11:38 5516 4

原创 dlmalloc 2.8.6 源码详解(7)

释放的主要过程就是根据用户传入的payload, 找到chunk指针, 然后分别检查前一个和后一个chunk是否可以合并. 这里唯一需要注意的就是与dv和top这些特殊chunk的交互.基本流程如下,1. 通过用户传入的mem指针计算出chunk指针p. 如果FOOTERS打开, 则通过magic计算出其所属的mspace指针, 并进行校验. 2. 若p是通过direct mmap生成的, 则还原其头尾的fake chunk后直接munmap释放并结束. 详细内容请参考3.4.2小节的说明.

2014-11-20 15:35:58 2263 1

原创 dlmalloc 2.8.6 源码详解(6)

基本上sys_alloc分为四个步骤,1. 首先检查请求大小nb是否超出mmap_threshold的阈值. 如果是, 则放弃由分配器管理, 直接在mmap区开辟, 原因前面说过, 不再赘述.2. 根据mspace设定及当前top space的使用情况, 向系统申请一块适当的内存. Dlmalloc按照下面的顺序由主到次开辟,第一, 如果允许MORECORE, 则优先通过MORECORE开辟连续内存空间.

2014-11-17 10:40:13 2275

原创 dlmalloc 2.8.6 源码详解(5)

本章节介绍dlmalloc的分配算法和实现. 由于存在多mspace的情况, dlmalloc使用了两套API. 一套对应默认的mspace, 以dl前缀开头, 如dlmalloc, dlrealloc等. 如果创建了自定义的mspace, 则使用mspace开头的API, 如mspace_malloc, mspace_realloc等. 但两套API在基础算法上是一致的. 我们就以默认的API为主要对象介绍.

2014-11-14 10:48:14 3293 3

原创 dlmalloc 2.8.6 源码详解(4)

在dlmalloc的内部结构中,除了基础的chunk外,还存在一种粒度更粗的结构,称为区段(segment).之所以需要额外引入这种数据结构是为了提升对非连续内存的管理能力. dlmalloc将连续内存划分到一个segment中管理,而段与段之间则是不连续的,所有的段都由一个mspace统一去管理.如果用户程序创建了多个mspace,这些mspace内部包含的segment有可能在地址上连续,但实际归属于不同的空间.

2014-11-13 09:54:07 3556

原创 dlmalloc 2.8.6 源码详解(3)

前面介绍过, dlmalloc将小于256字节的内存划分为small chunk, 256字节以上的划分为tree chunk.对这两种chunk的管理也采用不同方式. small chunk使用small bins管理,采用更精确的标记方法,而tree chunk用tree bins管理,较之使用相对粗放的管理方式.这种划分方法基于这样一种经验性的认知,即小块内存总是连续而频繁的分配,因此需要更加精确匹配,否则将产生时间和空间上的缺失,相反大块内存则往往一次性的分配,由此产生的代价和浪费相对较低.

2014-11-11 11:25:43 3042 5

原创 dlmalloc 2.8.6 源码详解(2)

本文章由vector03原创, 转载请注明出处.邮箱地址: [email protected], 欢迎来信讨论. 2. 标记结构本章节将介绍基本的内存标记结构,包括chunk, tree chunk, sbin, tbin, segment, mstate等.这些重要的机构组成了dlmalloc分配算法的基础.2.1 chunkchunk是dlmalloc中最基本的一种结

2014-11-10 12:56:09 3824 7

原创 dlmalloc 2.8.6 源码详解(1)

本文章由vector03原创, 转载请注明出处.邮箱地址

2014-11-10 12:34:37 8154

原创 一个简单的实验,Java数组遍历

Java提供了多种数组遍历的方法,从传统的for while到新的foreach. 那么,倒底该选择哪种遍历方式呢,也许很多人不会刻意关心这类问题,这个东西完全凭个人习惯.本人以前也不曾注意过,只不过在玩了project euler之后,逐渐开始关心起java程序的性能来(我也不再用C++写了,这种小游戏没必要). 于是乎就做了一个对比试验,在数组中放置从1到1m的数,然后将它们累

2014-02-04 11:53:42 1349

原创 使用表驱动技术优化程序结构

1.前言 所谓的表驱动技术实际上是一种回调函数(callback function),它能够使调用者在完全不知道细节的情况下完成复杂的操作。使用这种技术不但可以使你的代码更加紧凑,还能够降低各个模块的耦合程度,优化程序结构。表驱动的适用范围很广,无论是底层驱动开发,还是上层通讯都可以用到,甚至Microsoft著名的MFC中的消息映射也使用了这一技术。本文结合一个例子介绍了如何在实际工程中使用该技术。

2011-05-25 09:40:00 1385 2

原创 MFC下的日志系统开发

中大型软件项目中,日志系统是不可或缺的组成部分。尤其随着软件规模越来越大,内部结构越来越复杂,日志调试成为一种重要的调试方法。本文介绍了一个通用,高效,简洁的日志系统的设计思路。文章分两部分,一部分是负责日志记录的CTLog类,另一部分是负责日志显示CTLogEdit类。

2011-05-14 09:10:00 3685

原创 以有序链表构成的开放式散列表

1. 前言在复杂编程中,常常遇到查找问题,如何能更快更简单的找到我们需要的数据是一个经典问题。在各种查找方法中最简单的是使用数组或者链表,进行线性查找,但是往往效率比较低。因为如果要查找的数据恰好在线性表前面那么自然很快就能得到结果,而目标处在最后则要耗费很多时间去挨个查找。另一方面,大量的线性查找也意味着我们的程序当中要嵌套大量的循环语句,这本身对于程序可读性和运行效率都是不利的。我个人不建议在程序中循环或者分支语句超过三层,多了就会让人感觉代码像一团浆糊,单单辨别划分程序块的括号就很困难了。    为了

2011-03-25 14:37:00 915

HashTableDemo

自己写的开放式散列表demo程序 使用有序链表可以实现自适应查找 有什么意见欢迎指教

2011-03-25

空空如也

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

TA关注的人

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