当前位置: 首页 > news >正文

展示网站深圳seo

展示网站,深圳seo,德化网站建设,写出网站开发的基本流程自己实现的一个缓存数据库#xff08;搞着玩#xff09; 想法来源特点说明 上代码主体基类测试类 注 想法来源 做过一个小型项目#xff0c;客户要求易移植#xff0c;不能使用收费的数据库#xff0c;最好是一个包搞定#xff0c;尝试过用sqlite#xff0c;在部分linux… 自己实现的一个缓存数据库搞着玩 想法来源特点说明 上代码主体基类测试类 注 想法来源 做过一个小型项目客户要求易移植不能使用收费的数据库最好是一个包搞定尝试过用sqlite在部分linux上可能需要自己安装环境比较麻烦 mysql也需要安装客户技术实力比较弱不安装多的依赖一键运行最好 特点说明 支持多线程 支持多表 适合小型项目不用安装配置其它数据库可以做到只有一个包一键启动 如果将主键id调整为手动指定的字符串可以作为系统的配置库来使用数据都在内存里面读取速度快 由于是数据是全量进行持久化保存所以不支持太大的数据量 上代码 主体 namespace Memory.Db {/// summary/// 内存数据库/// 支持多线程/// 支持多表/// 不支持大量数据/// 建议每个表数据量不要超过1w或者数据文件大小保持在5M以内/// 数据都在内存里面所以读取速度会相当快/// 适合项目/// 1.小型项目/// 2.数据量小 不想使用数据库安装配置麻烦/// /summarypublic class CacheDB:ISingleton{/// summary/// 雪花id类/// /summaryreadonly SnowflakeId _sid;public CacheDB(SnowflakeId sid){_sid sid;}//数据库private static ConcurrentDictionarystring, ConcurrentDictionarylong, dynamic _db new();//数据存放路径private string _fielpath wwwroot/cachedb/;//锁对象private object lockobj new object();/// summary/// 新增或修改/// /summary/// typeparam nameT/typeparam/// param nameitem/param/// returns/returns/// exception crefException/exceptionpublic T AddOrUpdateT(T item) where T : CacheDBEntityBase, new(){//取得表var table GetTableT();//判断是否新增if (item.Id 0){//新增item.Id _sid.GenerateId();item.CreatedTime DateTime.Now;}else{//修改if (!table.ContainsKey(item.Id)) throw new Exception(数据不存在);var old table[item.Id];item.CreatedTime old.CreatedTime;//将原来的创建时间值取过来防止被空值覆盖item.UpdateTime DateTime.Now;}///新增或修改table.AddOrUpdate(item.Id, item, (a, b) item);//保存快照SaveToFileT();return item;}/// summary/// 删除/// /summary/// typeparam nameT/typeparam/// param nameitem/param/// exception crefException/exceptionpublic void DeleteT(T item) where T : CacheDBEntityBase, new(){//取得表var table GetTableT();//按id删除if (item.Id 0) throw new Exception(未提供Id);if (table.ContainsKey(item.Id)){table.Remove(item.Id, out _);//保存快照SaveToFileT();}}/// summary/// 返回列表/// /summary/// typeparam nameT/typeparam/// returns/returnspublic ListT GetListT() where T : CacheDBEntityBase, new(){var table GetTableT();//这里先序列化成json再序列化为指定类型不然会出现值为空的情况var json table.ToJson();var data json.ToEntityDictionarylong, T();return data.Select(x x.Value).ToList();}/// summary/// 按id查询单条/// /summary/// typeparam nameT/typeparam/// param nameid/param/// returns/returnspublic T FindT(long id) where T : CacheDBEntityBase, new(){var table GetTableT();var mod table[id] as T;return mod;}/// summary/// 取得表/// /summary/// typeparam nameT/typeparam/// returns/returnspublic ConcurrentDictionarylong, dynamic GetTableT() where T: CacheDBEntityBase,new(){//获取表名var _table typeof(T).Name;ConcurrentDictionarylong, dynamic data;//判断表是否已经存在于缓存if (!_db.ContainsKey(_table)){//保存路径var _path ${_fielpath}{_table}.json;if (File.Exists(_path)){//如果文件存在从文件读取数据到缓存var json File.ReadAllText(_path);_db[_table] json.ToEntityConcurrentDictionarylong, dynamic();}else{//如果文件不存在创建新的表_db[_table] new ConcurrentDictionarylong, dynamic();}}data _db[_table];//返回表return data;}/// summary/// 快照/// /summary/// typeparam nameT/typeparam/// returns/returnsprivate async Task SaveToFileT(){lock (lockobj){var _table typeof(T).Name;var json _db[_table].ToJson();var _path ${_fielpath}{_table}.json;Directory.CreateDirectory(_fielpath);File.WriteAllText(_path, json);}}} } 基类 public class CacheDBEntityBase{/// summary/// 主键/// /summarypublic long Id { get; set; }/// summary/// 创建时间/// /summarypublic DateTime CreatedTime { get; set; }/// summary/// 修改时间/// /summarypublic DateTime? UpdateTime { get; set; }} 测试类 public class aa: CacheDBEntityBase{public string name { get; set; }public string name2 { get; set; }public string name3 { get; set; }public string name4 { get; set; }public string name5{ get; set; }}public class bb : CacheDBEntityBase{public string name { get; set; }}注 上面代码中的部分内容说明 ToJson 方法将实体转为json字符串 ToEntity 方法将json字符串转为指定的类型 SnowflakeId 雪花id类 用来生成id 上面代码中没有这些内容的实现请自行实现替代
http://www.dnsts.com.cn/news/208970.html

相关文章:

  • 酒店网站建设特色网页制作培训心得体会
  • 网站导航条图片素材建筑行业资讯网站
  • 西宁微信网站建设需要多少钱发布网站需要备案
  • 云网站建设的意义网站开发怎么学
  • 商城建网站qq邮箱在线登录网页版
  • 无锡网站开发商城网站前期推广
  • 防城港北京网站建设电商网站建设概念
  • 网站的支付系统怎么做个人网站可以做淘宝店铺名
  • 网站推广应该坚持什么策略广汉市建设局网站
  • 印刷网站 源码郑州装修公司口碑哪家好
  • 2008 iis 添加 网站 权限网络推广多少钱
  • org 结尾的网站注册要什么手续网页设计你若安好便是晴天作业
  • 南宁网站建设哪家公司实力强公司做网站 要准备哪些素材
  • 百度搜索优化怎么做优化大师使用心得
  • 上海定制网站建设公司wordpress工作原理
  • 凡科做网站怎么样基于WordPress的交流社区
  • 网络网站网站怎么做的漳州市长泰县建设局网站
  • 现在自己做网站卖东西行么广告营销案例100例
  • 六安门户网站建设哪家好营销策划方案设计的技巧
  • 二手房公司网站建设专门做装修的网站
  • 隆尧企业做网站浙江做网站公司有哪些
  • 免费开源网站移动端显卡天梯图2021
  • 选择网站的关键词wordpress百度云直链
  • 51zwd一起做网站三亚网页制作
  • 网站建设寻找可以途径建立平台什么意思
  • 代替做网站推广什么网站可以看女人唔易做
  • 学生网站建设总结报告做淘宝客注册网站好做吗
  • wordpress跨站脚本攻击漏洞WordPress纯代码百度收录
  • 网站建设销售职责美橙建站五合一建站套餐申请
  • 上海建立公司网站网站推广哪个平台最好