C# 内存映射研究学习
class Program { static void Main(string[] args) { int size = 512; int position = 0; MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile("1.mmf", FileMode.OpenOrCreate, "1", size); //创建一个内存映射文件 MemoryMappedViewAccessor mmva = mmf.CreateViewAccessor(0, size); //创建一个视图,提供操作途径,操作的时候不经过IO,直接扔给底层系统 Console.WriteLine("硬盘文件中的原始值===="); for (int i = 0; i < 12; i++) { //展示数据 Console.WriteLine(mmva.ReadByte(i)); } Console.WriteLine("开始尝试操作=========="); mmva.Write(position, 255); //写一个字节的数据255(byte) position++; //偏移位置,避免覆盖其他的数据 mmva.Write(position, 0); position++; mmva.Write(position, 0); position++; int num = new Random().Next(int.MinValue, int.MaxValue); mmva.Write(position, num); //写4个字节的随机(int) position += 4; byte[] bs = new byte[] { 1, 2, 3, 4 }; //再写4个固定的byte数据 mmva.WriteArray(position, bs, 0, bs.Length); for (int i = 0; i < 12; i++) { //展示数据 Console.WriteLine(mmva.ReadByte(i)); } Console.ReadKey(); } }
所谓内存映射就是指定一个文件,然后把这个文件映射到内存中,然后使用操作的时候就能省去很多事,直接把数据扔给底层系统处理,这样读写就会很快,用来保存大量的数据就很爽,而且一个文件貌似可以用多个视图操作,所以这个技术可以作为不同进程之间的数据共享手段
最近发现,这个内存映射好像并么有比FileStream操作快,反而变慢了,不知道是什么鬼
标签:
C#学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2015-08-06 visual studio 自定义警告标签
2015-08-06 mysql 使用 insert ignore into和unique实现不插入重复数据功能
2015-08-06 mysql 判断指定条件数据存不存在,不存在则插入