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

网站关键词设置腾讯云网站备案吗

网站关键词设置,腾讯云网站备案吗,海报生成免费,网站系统后台一#xff1a;背景1. 讲故事在开始本文之前#xff0c;真的好想做个问卷调查#xff0c;到底有多少人和我一样#xff0c;对 JsonConvert 的认识只局限在 SerializeObject 和 DeserializeObject 这两个方法上(┬#xff3f;┬), 这样我也好结伴同行#xff0c;不再孤单落… 一背景1. 讲故事在开始本文之前真的好想做个问卷调查到底有多少人和我一样对 JsonConvert 的认识只局限在 SerializeObject 和 DeserializeObject 这两个方法上(┬┬), 这样我也好结伴同行不再孤单落魄????????????或许是这两个方法基本上能够解决工作中 80% 的场景对于我来说确实是这样但随着编码的延续终究还是会遇到那剩下的 20% 所以呀。。。我的场景是这样的前段时间写业务代码的时候我有一个自定义的客户算法类型的Model这个Model中有这种算法类型下的客户群以及Report统计信息还用了 HashSet 记录了该类型下的 CustomerID集合为了方便讲述我把Model简化如下class CustomerAlgorithmModel{public string DisplayName { get; set; }public int CustomerType { get; set; }public ReprotModel Report { get; set; }public HashSetint CustomerIDHash { get; set; }}class ReprotModel{public int TotalCustomerCount { get; set; }public int TotalTradeCount { get; set; }} 那有意思的就来了我个人是有记日志的癖好就想着以后不会出现死无对证的情况然后就理所当然的使用 JsonConvert.SerializeObject, 这一下就出问题了日志送入到了 ElasticSearch 然后通过 Kibana 查不出来为啥呢看完上面的 Model 我想你也猜到了原因json体太大了哈好歹 CustomerIDHash 中也有几十万个撒这一下全导出成json了这 size 还能小吗要不我写段代码看一看。static void Main(string[] args){var algorithModel new CustomerAlgorithmModel(){CustomerType 1,DisplayName ????????,Report new ReprotModel(){TotalCustomerCount 1000,TotalTradeCount 50},CustomerIDHash new HashSetint(Enumerable.Range(1, 500000))};var json JsonConvert.SerializeObject(algorithModel);File.WriteAllText(1.txt, json, Encoding.UTF8);Console.WriteLine(写入完成);} 可以看到仅一个json就 3.3M这样的记录多来几打后在 kibana 上一检索浏览器就卡的要死其实 CustomerIDHash 这个字段对我来说是可有可无的就算存下来了也没啥大用所以需求就来了如何屏蔽掉 CustomerIDHash。二寻求解决方案1. 使用 JsonIgnore有问题就网上搜啊这一搜马上就有人告诉你可以使用 JsonIgnoreAttribute 忽略特性加好这个特性后继续跑一下程序。[Newtonsoft.Json.JsonIgnore]public HashSetint CustomerIDHash { get; set; } 太好了终于搞定了但是静下心来想一想总感觉心里有那么一点不舒服为什么这么说一旦你给这个 CustomerIDHash 套上了 JsonIgnore 这就意味着它在 JsonConvet 的世界中从此消失也不管是谁在使用这个Model 但这并不是我的初衷我的初衷仅仅是为了在记录日志的时候踢掉 CustomerIDHash可千万不要影响在其他场景下的使用哈现在这种做法就会给自己给别人挖坑埋下了不可预知的bug我想你应该明白我的意思还得继续寻找下一个方案。2. 使用自定义的 JsonConverter真的Newtonsoft 太强大了我都想写一个专题好好弥补弥补我的知识盲区其实在这个场景中不就是想把 HashSetint 给屏蔽掉嘛Newtonsoft 中专门提供了一个针对特定类型的自定义处理类接下来我就写一段/// summary/// 自定义一个 针对 HashSetint 的转换类/// /summarypublic class HashSetConverter : Newtonsoft.Json.JsonConverterHashSetint{public override HashSetint ReadJson(JsonReader reader, Type objectType, HashSetint existingValue, bool hasExistingValue, JsonSerializer serializer){return existingValue;}public override void WriteJson(JsonWriter writer, HashSetint value, JsonSerializer serializer){writer.WriteNull();}} 就是这么简单然后就可以在 SerializeObject 的时候指定下自定义的 HashSetConverter 即可然后再将程序跑起来看一下。var json JsonConvert.SerializeObject(algorithModel, Formatting.Indented, new HashSetConverter()); 从图中看貌似也是解决了但我突然发现自己要钻牛角尖了如果我的实体中又来了一个顶级优质客户群的 TopNCustomerIDHash但因为这个CustomerID 比较少我希望在 Json 中能保留下来然后就是踢掉的那个 CustomerIDHash 我要保留 CustomerIDHash.Length哈哈搞事情哈那接下来怎么解决呢修改 Model 实体class CustomerAlgorithmModel{public HashSetint CustomerIDHash { get; set; }// topN 优质客户群public HashSetint TopNCustomerIDHash { get; set; }} HashSetConverter 增加逻辑鉴别是否为保留字段public override void WriteJson(JsonWriter writer, HashSetint value, JsonSerializer serializer){if (writer.Path TopNCustomerIDHash){writer.WriteStartArray();foreach (var item in value){writer.WriteValue(item);}writer.WriteEndArray();}else{writer.WriteValue(value.Count);}} 最后给 TopNCustomerIDHash 赋值var algorithModel new CustomerAlgorithmModel(){CustomerType 1,DisplayName ????????,Report new ReprotModel(){TotalCustomerCount 1000,TotalTradeCount 50},CustomerIDHash new HashSetint(Enumerable.Range(1, 500000)),TopNCustomerIDHash new HashSetint(Enumerable.Range(1, 10)),}; 三块都搞定后就可以把程序跑起来了如下图貌似钻牛角尖的问题是解决了既然钻牛角尖肯定要各种鄙视比如这里的 ReportModel 我是不需要的CustomerType 我也是不需要的我仅仅需要看一下 DisplayName 和 TotalCustomerCount 这两个字段就可以了 那这个要怎么解决呢3. 使用 匿名类型确实很多时候记日志就是为了跟踪 Model 中你特别关心的那几个字段所以掺杂了多余的字段确实也是没必要的这里可以用匿名来解决我就来写一段代码var json JsonConvert.SerializeObject(new{algorithModel.DisplayName,algorithModel.Report.TotalCustomerCount}, Formatting.Indented); 三总结虽然阻击了几个回合但同时也发现了 Newtonsoft 中还有特别多的未挖掘功能真的需要好好研究研究源码已下好接下来准备做个系列来解剖一下值得一提的是 .Net中已自带了 System.Text.Json.JsonSerializer 类目前来看功能还不算太丰富简单用用还是可以的本篇就说到这里希望对您有帮助。
http://www.zqtcl.cn/news/647245/

相关文章:

  • 中国建设银行网站对公业务wordpress 文章归档页面
  • 东软 网站群平台建设用个人电脑做网站服务器
  • 音乐播放网站开发pc端营销网站的关键字
  • 江门网站推广宿州官方网站建设
  • 企业网站建设策划书范文江苏高端网站建设
  • 网站开发 浏览器济宁网站建设服务
  • 整套网站建设网站开发中如何实现gps定位
  • 网站建设计划表福州自助建站
  • 网站做的比较好的公司吗2017年做网站多少钱
  • 基础展示营销型型网站重庆百度总代理
  • 网站建设 技术可行性这是我自己做的网站
  • 西安网站策划关键词优化哪家好
  • 能看建设动漫黄图的网站海外仓一件代发平台
  • 做网站都需要了解什么大连福佳新城2026年建站吗
  • php 网站部署到服务器泉州模板建站哪家好
  • 网站服务器上的跳转选择怎么做网站是怎么建立的
  • 网站后台目录如何保护公司网站建设需要要求什么软件
  • 四川省建设厅网站官网自己做的网站能上传到凡科吗
  • 米拓网站建设-app定制开发免费个人建站系统
  • 网站改版公司如何帮公司做网站
  • 曹县汽车网站建设网站怎么做才 吸引人
  • 河南周口东宇网站建设wordpress怎么重新安装插件
  • wordpress无法上传主题南通做网站优化公司
  • 做彩票网站能挣到钱吗南充市房产信息网
  • 沧州北京网站建设金华网站建设哪个公司好点
  • 北京朝阳建站优化wordpress主题访问慢
  • wordpress最快仿站酷炫个人特别网站
  • 公司建站详细步骤如何注册一家公司要多少钱
  • 网站推广网络营销山西大学物理电子工程学院研招网
  • 亚马逊做国际外贸在哪个网站毕业设计网站开发选题依据