单例模式之文件缓存器

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux目录详解

转自 http://www.cnblogs.com/Daniel-G/archive/2012/10/06/2712932.html详解Linux目录&#xff08;目录树详细解释&#xff09;给大家一篇关于Linux目录 方面的详细说明&#xff0c;好好读一下&#xff01;Linux目录详解(RHEL5.4)linux有四种基本文件系统类型&#xff1a;--普…

Windows安装cnpm报错 The operation was rejected by your operating system.

Windows在安装cnpm时出现如下错误 npm ERR! The operation was rejected by your operating system. npm ERR! Its possible that the file was already in use (by a text editor or antivirus), npm ERR! or that you lack permissions to access it. npm ERR! npm ERR! If y…

hao123电脑版主页_hao123浏览器 原生网民的记忆 一代站长的传奇

百度又有产品说再见了&#xff01;上线快8年的百度浏览器&#xff0c;再也不会更新了&#xff01;4月3日&#xff0c;百度浏览器官网发公告称&#xff0c;“桌面百度、百度工具栏、百度地址栏、百度极速浏览器&#xff0c;hao123浏览器&#xff0c;产品将不再更新&#xff0c;基…

Client does not support authentication protocol requested by server;

今天把服务器的MYSQL从4升级到了5。用phpmyadmin连接时出现下面错误Client does not support authentication protocol requested by server; conside在网上发现解答&#xff1a;将mysql升级到5.x版本后&#xff0c;用客户端登录时出现了 Client does not support authenticati…

一些软件设计的原则

以前本站向大家介绍过一些软件开发的原则&#xff0c;比如优质代码的十诫和Unix传奇(下篇)中所以说的UNIX的设计原则。相信大家从中能够从中学了解到一些设计原理方面的知识&#xff0c;正如我在《再谈“我是怎么招聘程序”》中所说的&#xff0c;一个好的程序员通常由其操作技…

小米平板2刷remix_昆明小米售后维修点手机维修怎么收费?小米手机拆机换屏教程...

小编最近修了很多小米手机&#xff0c;大部分维修的故障基本都是手机碎屏&#xff0c;手机换电池之类的&#xff0c;小编从事小米手机维修十余年&#xff0c;小米手机整体机型性价比还是不错的&#xff0c;所以市场上用的人还是比较多&#xff0c;尤其是在校学生&#xff0c;今…

第2章 Python 数字图像处理(DIP) --数字图像基础2 - 图像感知要素 - 图像取样和量化 - 空间分辨率和灰度分辨率

目录图像感知与获取一个简单的成像模型图像取样和量化空间分辨率和灰度分辨率图像感知与获取 一个简单的成像模型 我们用形如 f(x,y)f(x,y)f(x,y) 的二维函数来表示图像。在空间坐标 (x,y)处f(x, y)处 f(x,y)处f的值是一个标量&#xff0c;其物理意义由图像源决定&#xff0c…

了解javascript中函数执行顺序

我个人觉得一般人不会有这种写法&#xff0c;但艺不压身&#xff0c;呵呵。希望能帮到初学的朋友&#xff01;大家一起进步&#xff01; 首先列举出8个例子&#xff0c;然后例子的解答会在文章末尾贴出&#xff01;测试代码一&#xff1a; <script language"JavaScript…

外部资源获取

处理外部资源是很繁琐的事情&#xff0c;我们可能需要处理URL资源、File资源资源、ClassPath相关资源、服务器相关资源&#xff08;JBoss AS 5.x上的VFS资源&#xff09;等等很多资源。因此处理这些资源需要使用不同的接口&#xff0c;这就增加了我们系统的复杂性&#xff1b;而…

芯明天debug assertion failed_YJLV铝芯电力电缆的基本介绍

原标题&#xff1a;YJLV铝芯电力电缆的基本介绍YJLV铝芯电力电缆&#xff0c;型号全称&#xff1a;铝芯交联聚乙烯绝缘聚氯乙烯护套电力电缆。YJLV电缆的含义为&#xff1a;YJ----交联聚乙烯绝缘;L----线芯材质为铝材。V----聚氯乙烯护套。YJLV电缆工作温度为导体额定工作温度9…

1.1.1 从简单的数据类型开始

/// <summary>/// C# 1.0 中定义的产品类型/// </summary>public class Product1{string name;public string Name { get { return name; } }decimal price;public decimal Price { get { return price; } }public Product1(string name, decimal price){this.name…

第2章 Python 数字图像处理(DIP) --数字图像基础3 - 图像内插 - 最近邻内插 - 双线性插值 - 双三次内插 - 图像放大

目录图像内插放大图像图像内插 内插通常在图像放大、缩小、旋转和几何校正等任务中使用。内插并用它来调整图像的大小&#xff08;缩小和放大&#xff09;&#xff0c;缩小和放大基本上采用图像重取样方法 最近邻内插&#xff0c;这种方法将原图像中最近邻的灰度赋给了每个新…

然爸读书笔记(2014-2)----影响力

第一章&#xff1a;影响力的武器 动物可能会看到某种颜色的羽毛而变得具有攻击性&#xff0c;或者听到某种叫声久对自己的天敌呵护有加。动物的这种愚蠢机械反应在人类身上也有&#xff0c;在某个触发特征出现时&#xff0c;我们会不假思索的做出相应的反应&#xff0c;之所以会…

pb 如何导出csv_Firefox火狐浏览器将提供导出密码至本地的功能

6月2日&#xff0c;据外媒All About Lifehacks报道&#xff0c;Mozilla官方的bug报告页面显示&#xff0c;Firefox浏览器的导出或备份密码请求的问题在前两天被关闭&#xff0c;并被标记为已解决。据了解&#xff0c;该请求早在多年前就有人提出。如今被标记为已解决&#xff0…

跟着别人的感觉做网络推广之二

无意中闯入了站台网&#xff08;一家历史很悠久的分类信息网站&#xff0c;印象中比58 赶集 百姓创办时间还早。&#xff09; 进入后当然看医疗分类了&#xff1a; http://www.zhantai.com/ 站台网&#xff0c;不是大的省份网民不能位置定位时&#xff0c;默认进入的是北京分站…

iOS - OC 面向对象语法

1、类 1&#xff09;根类&#xff1a;因为类 NSObject 是层次结构的最顶层&#xff0c;因此称为根类。 可以将类称为子类&#xff08;subclass&#xff09;和父类&#xff08;superclass&#xff09;&#xff0c;也可以将类称为子类和超类。2&#xff09;分类&#xff0f;类别&…

第2章 Python 数字图像处理(DIP) --数字图像基础4 -- 像素间的一些基本关系 - 邻域 - 距离测试

目录像素间的一些基本关系像素的相邻像素距离测试import sys import numpy as np import cv2 import matplotlib import matplotlib.pyplot as plt import PIL from PIL import Imageprint(f"Python version: {sys.version}") print(f"Numpy version: {np.__ve…

网页关闭(解决window.close在火狐下不兼容问题)

熟悉前端的都知道&#xff0c;火狐默认状态非window.open的页面window.close是无效的 网上有很多人说&#xff0c;在火狐的地址栏输入:about:config然后找到dom.allow_scripts_to_close_windows;把false改为true 看着这些人的说法&#xff0c;不得不说我蛋疼了 我做的是网站&am…

iphone备忘录突然没了_苹果突然下架12 天猫:双11有惊喜!iPhone12 mini配色缩水

点击“蓝字”关注我们苹果旗舰店突然下架iPhone 12 天猫回应&#xff1a;请期待11.11的惊喜今天&#xff0c;有网友反馈&#xff0c;苹果天猫旗舰店的iPhone 12和iPhone 12 Pro被下架了。小编查看了下&#xff0c;天猫Apple Store旗舰店确实已经下降了目前在售的 iPhone 12 和 …

CGI小白一些漫想

CGI Common Gateway Interface 一种基于浏览器的输入、在Web服务器上运行的程序方法你创建客户端的 CGI脚本, 服务器端的程序用来处理用户输入, 结果返回给用户CGI脚本是什么&#xff1f;它是怎样工作的  CGI脚本是用下列两种方法使用的: 作为一个表单的ACTION 或 作为一个页中…