单例模式之文件缓存器
2012年4月18日 天气阴 天气灰蒙蒙的,对于我们这种要为毕业做准备的人来说,这天气舒服,凉爽 中午睡了一个时后 打开电脑 突然感觉 眼睛不适应电脑屏幕的亮度,就是最近眼睛看电脑太久了 不工作 了 呵呵 看来该休息一下喽 好久没更新文章了 更新一个吧
单例模式
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace 单例模式
{
//单例模式介绍
//一个类在一个程序中只有一个对象
//类似于程序的配置文件,一个程序中只能有一个配置文件,多个的话,程序 不知道在哪个文件去调
//应用 文件缓存管理器
class Program
{
static void Main(string[] args)
{
//Earth ea=new Earth();//不能创建对象
/*Earth ea1=Earth.getEarth();
Earth ea2=Earth.getEarth();
Console.WriteLine(object.ReferenceEquals(ea1,ea2));//看是否是同一个对象 return true;
*/
//应用 文件缓存器
FileCacheManager fc = FileCacheManager.instanse;//因为instanse是filecachemanager唯一的对象 ,所以其他类都只存这个对象的值
string s=fc.ReadFile(@"c:\1.txt");
Console.WriteLine(s);
System.Threading.Thread.Sleep(8000);//为看到效果 在睡的8秒中 把文本文件 修改一下 看能否得到正确结果
s = fc.ReadFile(@"c:\1.txt");
Console.WriteLine(s);
Console.ReadKey();
}
}
class Earth
{
//static的赋值语句运行一次(在类的第一次加载的时候)
private static Earth instanse = new Earth();//2、声明一个静态字段,初始化一个实例(提供对象的唯一实例)
private Earth()//1、把构造函数private(防止外部调用构造函数创建对象)
{
}
public static Earth getEarth()//3、编写一个静态方法或者静态属性,返回那个唯一的实例
{
return instanse;
}
public int population { get; set; }
}
sealed class FileCacheManager//新建一个文件缓存管理器类 防止继承 用sealed关键字
{
public static readonly FileCacheManager instanse = new FileCacheManager();//设置一个只读的变量 存储该对象
Dictionary<string, CacheItem> dic = new Dictionary<string, CacheItem>();//创建字典
private FileCacheManager()
{
}
public string ReadFile(string filename)
{
if (dic.ContainsKey(filename))//判断文件 是否已读
{
DateTime lasttime = File.GetLastWriteTime(filename);
if (lasttime == dic[filename].lastwriteTime)//判断文件 是否修改 根据最后修改时间
{
return dic[filename].content;
}
else
return readtext(filename);
}
else
{
return readtext(filename);
}
}
private string readtext(string filename)//读取文件 放到字典中
{
string txt = File.ReadAllText(filename);
CacheItem ch = new CacheItem();
ch.content = txt;
ch.lastwriteTime = File.GetLastWriteTime(filename);//因为文件有可能被修改 为了获取的数据保持同步 所以保存他的最后修改时间 再去判断一下
dic[filename] = ch;//写入字典
return txt;
}
}
class CacheItem//用于保存缓存项
{
public string content;
public DateTime lastwriteTime;
}
}
转载于:https://www.cnblogs.com/arno-zhang/archive/2012/04/18/5027557.html
单例模式之文件缓存器相关推荐
- java 文件 缓存_JAVA缓存技术
转载地址:http://blog.csdn.net/madun/article/details/8569860 最近再ITEYE上看到关于讨论JAVA缓存技术的帖子比较多,自己不懂,所以上网大概搜了下 ...
- SDWebImage实现原理(怎么实现图片缓存器)
入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处 ...
- [翻译]运用文件解析器在任意文件中使用虚拟应用路径(~)
原文出处:http://www.codeproject.com Using the FileResolver to allow virtual application paths ( ~ ) i ...
- php加速缓存器opcache,apc,xcache,eAccelerator
一.opcache opcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销. PHP 5.5. ...
- 系统垃圾文件清理器 制作:China Doll (莫增成)
@echo off ::修正于2018-10-06 color 4a Title 系统垃圾文件清理器 制作:China Doll (莫增成) echo. echo ================== ...
- Reg Organizer(注册表文件清理器) v8.30.2中文绿色便携版
点击下载来源:Reg Organizer(注册表文件清理器) v8.30.2中文绿色便携版 Reg Organizer是一款高品质的注册表文件清理器工具,通过简单的清理和整理窗口注册表项以及卸载程序来 ...
- bridge cc2021|adobe bridge cc 2021中文直装版(文件资源管理器) v11.0.0.83
adobe bridge cc 2021是adobe公司最新发布的一款功能强大的文件资源管理器,由于该软件可以很好的帮助用户管理电脑文件,因此受到了极大的欢迎,使用它可以帮助用户让电脑里面的文件排列井 ...
- C语言里的out函数,c语言 vc 用waveout函数写wave文件播放器
用WaveOut函数写wave文件播放器 要炒菜的话,就得先准备工具,如锅.铲子.炉灶等.对程序来说,就是各种函数的应用.WaveOut函数在windowsAPI中属于低阶接口,用来播放的话需要用到下 ...
- squid反向代理作为web前端内容缓存器及局域网内客户机通过代理服务器上网
反向代理服务器有两种传输模式: 1.同步模式:(如:squid)用户发起请求,请求立即被转到后端的服务器,于是在浏览器和后端服务器之间就建立了一个连接,在请求完成前这个连接是一直存在的. 2.异步模式 ...
最新文章
- Ubuntu 16.04.1 LTS上安装电源管理系统TLP
- docker获取镜像很慢解决办法
- 损失函数中正则化项L1和L2的理解
- FreeBSD下安装配置Hadoop集群(性能调优)
- git 每次都要输入用户名密码_Git向GitHub提供代码
- dreamcast游戏_《Dreamcast Collection》开箱及游戏介绍
- 【论文串烧】基于特定实体的文本情感分类总结(PART I)
- .h和.cpp文件的区别 .
- android模拟器 bridge,ADB (Android Debug Bridge)简介
- c语言第四章选择结构作业,《c语言程序设计教程》林芳易云飞》第四章选择结构例题,习题详解...
- linux(Centos7系统)中安装JDK、Tomcat、Mysql
- python实现ddos防护_python实现的防DDoS脚本
- ADP论文关键要点总结
- split,splice,slice 三者的用法
- Opencv-Python-导向滤波快速导向滤波
- 微信小程序开发和APP开发有哪些区别
- 如何快速创建 Rproject 文件?
- 杂学——硬件:MIPI,压/速/频信号、并行转串行,SDI,PPM,单片机及开发板,交流直流,电容电阻,总线,RS485
- FM非相干解调原理及Keil代码
- PrimoBurnerSDK蓝光刻录工具开发工具包
热门文章
- 数据结构-循环单链表之约瑟夫问题
- hive简介以及安装配置
- video thumbnails
- 商业银行为什么大量组织高净值小规模活动?
- STC单片机程序下载失败总结
- ARM和NEON指令 very gooooooood.............
- python 发送邮件不显示附件_python3发送邮件(无附件)
- python测试用例管理_Python测试框架Pytest的常用插件测试报告
- 怎么画单极交流放大电路波形图_珠海放大IC怎么样
- 计算机二级mysql是什么_计算机二级mysql考什么内容?