当前位置: 首页 > 编程日记 > 正文

自己写的内存池Slabs

看memcached的源码写的,虽然很粗糙,但是基本思想还是有的,自娱自乐,后期不断改进。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>struct st{void * start;void * end;char ptr[10];
};
struct it{struct it* prev;struct it* next;int key;int value;int used;
};
void add(struct it* t,const int data)
{while(t->next){if(!t->used){t->value=data;t->used=1;return;}t++;}
}
void del(struct it* t,const int data)
{while(t->next){if(t->used&&t->value==data){t->used=0;t->value=0;return;}t++;}
}
main(){void * slabs=malloc(200);
struct st* pst;
struct it* pit;
int i,k1,k2,k3;
memset(slabs,0,200);
pst=(struct st*)slabs;
pit=(struct it*)(pst+1);pit->prev=0;pit->key=1;pit->value=0;pit->used=0;
for(i=1;i<10;i++){pit=pit+1;pit->key=i+1;pit->value=0;pit->used=0;pit->prev=pit-1;pit->prev->next=pit;pit->next=NULL;
}pit=(struct it*)(pst+1);
k1=11;
k2=22;
k3=33;
add(pit,k1);
add(pit,k2);
add(pit,k3);
del(pit,k2);
return 0;
}

相关文章:

Eclispse Che(2):启动Che服务,进入IDE界面

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/50888878 未经博主允许不得转载。 博主地址是&#xff1a;http://blog.csdn.net/freewebsys 1&#xff0c;关于Docker 上次使用Che的时候没有成功创建Project。 其实主要问题就是docker的网络问题。 使用…

使用strace和ltrace跟踪程序调用

ltrace能够跟踪进程的库函数调用,它会显现出哪个库函数被调用,而strace则是跟踪程序的每个系统调用.1.系统调用的输出对比程序代码&#xff1a;#include <stdio.h> main(){char str[] "Abcde";printf("\n string %s length %d \n",str,str_length(…

NeHe OpenGL第三十三课:TGA文件

NeHe OpenGL第三十三课&#xff1a;TGA文件 加载压缩和未压缩的TGA文件: 在这一课里&#xff0c;你将学会如何加载压缩和为压缩的TGA文件&#xff0c;由于它使用RLE压缩&#xff0c;所以非常的简单&#xff0c;你能很快地熟悉它的。 我见过很多人在游戏开发论坛或其它地方询问…

阿里自动驾驶新突破!达摩院自研ISP图像处理器大幅提升安全性

阿里巴巴达摩院在自动驾驶领域取得新突破&#xff01;4月8日&#xff0c;据记者了解&#xff0c;达摩院已经自主研发出用于车载摄像头的ISP处理器&#xff0c;保障自动驾驶车辆在夜间拥有更好的“视力”&#xff0c;“看”得更清晰&#xff0c;从而大幅提升自动驾驶安全性, 而背…

3月14号作业

<!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title></title> </head> <body> <br/> <br/> <img src"51job表单_03.gif"</br> <br/> <br/>…

NeHe OpenGL第三十五课:播放AVI

NeHe OpenGL第三十五课&#xff1a;播放AVI 在OpenGL中播放AVI: 在OpenGL中如何播放AVI呢&#xff1f;利用Windows的API把每一帧作为纹理绑定到OpenGL中&#xff0c;虽然很慢&#xff0c;但它的效果不错。你可以试试。 首先我得说我非常喜欢这一章节.Jonathan de Blok使我产生…

为什么TCP的TIME_WAIT状态要保持2MSL?

TIMEWAIT状态也称为 2MSL等待状态。每个具体TCP实现必须选择一个报文段最大生存时间MSL(Maximum Segment Lifetime)。它是任何报文段被丢弃前在网络内的最长时间。我们知道这个时间是有限的&#xff0c;因为TCP报文段以IP数据报在网络内传输&#xff0c;而IP数据报则有限制其生…

深度 | 一文读懂“情感计算”在零售中的应用发展

作者 | 黄程韦博士、刘刚、包飞博士、杨现博士、孙皓博士、沈艺博士来源 | 苏宁零售技术研究院零售商需要不断通过创新服务来提高顾客的购物体验&#xff0c;而情感计算在该领域具有独特优势。它在零售行业的应用&#xff0c;主要集中在提升购物体验的服务中。在这个科技逐步改…

mysql基于replication实现最简单的M-S主从复制

2019独角兽企业重金招聘Python工程师标准>>> 什么是replication Replication可以实现数据从一台数据库服务器&#xff08;master&#xff09;复制到一到多台数据库服务器。 默认情况下&#xff0c;属于异步复制&#xff0c;因此无需维持长连接。 通过配置&#xff0…

Linux下高并发socket最大连接数所受的各种限制

修改最大打开文件数 # ulimit -n 修改最大进程数 # ulimit -u ------------------------------------------------------ Linux下高并发socket最大连接数所受的各种限制 转自&#xff1a;http://blog.csdn.net/guowake/article/details/6615728 1、修改用户进程可打开…

linux安全问答(1)

一、如何限制对系统资源的过度使用&#xff1f; &#xff08;1&#xff09;、编辑/etc/security/limits.conf文件&#xff0c;在其中加入或改变下面这些内容&#xff1a; * hard core 0 //禁止创建core文件 * hard rss 5000 //表示除root用户之外&#xff0c;其他用户都只能最多…

快速搭建对话机器人,就用这一招!

作者 | Milvus.io 责编 | 胡巍巍问答系统是自然语言处理领域一个很经典的问题&#xff0c;它用于回答人们以自然语言形式提出的问题&#xff0c;有着广泛的应用。其经典应用场景包括&#xff1a;智能语音交互、在线客服、知识获取、情感类聊天等。常见的分类有&#xff1a;生成…

目前流行的源程序版本管理软件和项目管理软件都有哪些?各有什么优缺点?...

目前流行的源程序版本管理软件和项目管理软件&#xff1a;Microsoft TFS&#xff0c;Github&#xff0c;SVN&#xff0c;Coding 各自的优缺点&#xff1a; Microsoft TFS&#xff1a;优点&#xff1a;任务版上能将需求、项目进度一览无余&#xff0c;对于小团队而言&#xff0c…

孙鑫mfc学习笔记第十四课

第十四课网络的相关知识&#xff0c;网络程序的编写&#xff0c;Socket是连接应用程序与网络驱动程序的桥梁&#xff0c;Socket在应用程序中创建&#xff0c;通过bind与驱动程序建立关系。此后&#xff0c;应用程序送给Socket的数据&#xff0c;由Socket交给驱动程序向网络上发…

Linux环境编译安装Mysql以及补装innodb引擎方法

mysql安装 5.6以后可能会收费&#xff0c;所以选择5.1以下从台湾中山大学镜像下载 1.首先要安装C编译环境 # yum install gcc-c 2.下载解压 # wget http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-5.1/mysql-5.1.73.tar.gz# tar zxvf mysql-5.1.73.tar.gz# cd mysql-5…

Python 炫技操作:合并字典的七种方法

来源 | Python编程时光&#xff08;ID: Cool-Python&#xff09;Python 语言里有许多&#xff08;而且是越来越多&#xff09;的高级特性&#xff0c;是 Python 发烧友们非常喜欢的。在这些人的眼里&#xff0c;能够写出那些一般开发者看不懂的高级特性&#xff0c;就是高手&am…

shell脚本编程基础(1)及RAID阵列

shell脚本&#xff1a;Linux从底层到上层的系统架构&#xff1a;硬件-->内核-->库(lib)-->shell-->用户。shell既是一种命令语言&#xff0c;也是程序设计语言&#xff08;shell脚本&#xff09;&#xff0c;作为一种命令语言&#xff0c;它提供了用户与内核的交互…

freemarker基本语法及实例

EG.一个对象BOOK 1.输出 ${book.name} 空值判断&#xff1a;${book.name?if_exists }, ${book.name?default(‘xxx’)}//默认值xxx ${ book.name!"xxx"}//默认值xxx 日期格式&#xff1a;${book.date?string(yyyy-MM-dd)} 数字格式&#xff1a;${boo…

前百度主任架构师创业,两年融资千万美元,他说AI新药研发将迎来黄金十年...

「AI技术生态论」 人物访谈栏目是CSDN发起的百万人学AI倡议下的重要组成部分。通过对AI生态专家、创业者、行业KOL的访谈&#xff0c;反映其对于行业的思考、未来趋势的判断、技术的实践&#xff0c;以及成长的经历。2020年&#xff0c;CSDN将对1000人物进行访谈&#xff0c;形…

Linux环境安装卸载JDK以及安装Tomcat和发布Java的web程序

Linux环境&#xff1a;CentOS7.2 一.安装JDK 安装好的CentOS会自带OpenJdk&#xff0c;最好还是先卸载系统自带的JDK&#xff0c;然后自己重新去Oracle网站下载最新的JDK安装。 1.卸载系统自带的JDK 查看java信息 # java -version 查看JDK # rpm -qa | grep java 或者 还…

(转)详解css3弹性盒模型(Flexbox)

今天刚学了css3的弹性盒模型&#xff0c;这是一个可以让你告别浮动、完美实现垂直水平居中的新特性。 Flexbox是布局模块&#xff0c;而不是一个简单的属性&#xff0c;它包含父元素和子元素的属性。 Flexbox布局的主体思想是似的元素可以改变大小以适应可用空间&#xff0c;当…

Java开发环境的搭建以及使用eclipse创建项目

一、Java 开发环境的搭建 这里主要说windows环境下怎么配置Java环境。如果是Linux环境参考本博客另一篇文章即可&#xff1a; Linux环境安装卸载JDK 1.首先安装JDK java的SDK简称JDK。 去官网下载最新的JDK即可&#xff1a; http://www.oracle.com/technetwork/java/javase…

​MMIT冠军方案 | 用于行为识别的时间交错网络,商汤公开视频理解代码库

作者 | 商汤出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;本文主要介绍三个部分&#xff1a;一个高效的SOTA视频特征提取网络TIN&#xff0c;发表于AAAI2020ICCV19 MMIT多标签视频理解竞赛冠军方案&#xff0c;基于TIN和SlowFast一个基于PyTorch&#xff0c;包含大…

MySQL的主从服务器配置

MySQL的主从服务器配置常见开源数据库有&#xff1a;MySQL&#xff0c;PostgreSQL&#xff0c;SQLite等&#xff0c;商业性质的&#xff1a;Oracle&#xff0c;Sql Server&#xff0c;DB2&#xff0c;Sybase&#xff0c;Infomix其中&#xff0c;Oracle的版本有Oracle 11g,Oracl…

Anaconda中安装Orange3脚本-完整版

2019独角兽企业重金招聘Python工程师标准>>> #Anaconda中安装Orange3脚本&#xff0c;完整版。包括插件的安装&#xff0c;在脚本中一次完成。 sudo apt-get update sudo apt-get -y install git python-pip python-virtualenv python-qt4-dev python3-pyqt4 libqt…

使用eclipse创建Struts2项目

eclipse版本&#xff1a; Kepler Service Release 1 http://www.eclipse.org/downloads/ struts版本&#xff1a;2.3.16 http://struts.apache.org/ 1.新建web项目 打开Eclipse&#xff0c;新建一个web项目"Struts2" 项目名字 勾选 web.xml选项 建好的…

8、进程通信-匿名管道

匿名管道 一个单向&#xff0c;未命名的管道&#xff0c;通常用来在一个父进程和一个子进程间传输数据。只能实现本地机器上两个进程间的通信&#xff0c;而不能实现跨网络的通信。 BOOL CreatePipe( PHANDLE hReadPipe, // read handle PHANDLE hWriteP…

Enhanced-RCNN: 一种高效的比较句子相似性的方法 |​WWW 2020

作者 | 彭爽出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;国际顶级会议WWW2020将于4月20日至24日举行。始于1994年的WWW会议&#xff0c;主要讨论有关Web的发展&#xff0c;其相关技术的标准化以及这些技术对社会和文化的影响&#xff0c;每年有大批的学者、研究人…

直接可以拿去用的正则验证表达式

直接可以拿去用的正则验证表达式为了方便自己也方便初学的学弟们&#xff0c;自己总结了网上的众多正则验证式&#xff0c;现分享给大家&#xff0c;可以直接拿去用。一、校验数字的1 数字&#xff1a;^[0-9]*$2 n位的数字&#xff1a;^\d{n}$3 至少n位的数字&#xff1a;^\d{n…

家庭局域网开启AP隔离利用无线路由器互连

一开始可以上网&#xff0c;可以ping网关192.168.1.1&#xff0c;但是几台电脑之间就是不能互ping。 其实&#xff0c;真实的原因就是没有开启无线路由器的AP隔离。 在浏览器中输入192.168.1.1进入路由搜索一般用户名密码都是admin&#xff0c;具体请参见自己路由的说明书 操…