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

只有域名怎么做网站哪个网站有介绍拿到家做的手工活

只有域名怎么做网站,哪个网站有介绍拿到家做的手工活,wordpress+js插件,南京市公共资源建设中心网站一#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://wiki.neutronadmin.com/news/117200/

相关文章:

  • 如何查看网站服务器类型诺邯郸网站建设
  • 自己如何建设网站首页程序员做一个网站多少钱
  • 给实体店老板做的网站如何做网站运营
  • 网站制作软件下载安装怎样在百度上做网站
  • 河源市网站建设公司wordpress官方中文主题
  • 网站建设的实验报告企业网络工程建设方案
  • 建立商城网站wordpress后台修改默认主题
  • 怀化网站排名优化深圳网站建设与网站制作
  • 用dw做网站阿里巴巴logo高清
  • 怎么搭建手机网站m中国职业技能培训中心官网
  • 贵阳哪家网站建设公司好建筑网站可以ai绘画吗
  • 产品设计需要学的软件天津的网络优化公司排名
  • 上海网站建设服务宁德北京官方seo搜索引擎优化推荐
  • 域名解析后网站怎么建设旅游网站开发背景论文
  • 哪些网站可以做淘宝推广有没人做阿里巴巴网站维护的
  • 音乐网站设计外国河南省做网站的企业
  • 自己网站怎么做百度优化网络推广公司服务内容
  • 网站自响应苍南规划建设局网站
  • 查询网站空间的服务商wordpress英文企业模板
  • 深圳品牌网站制作自己设计小程序
  • ppt免费下载雷锋网站wordpress 如何发布文章
  • 公司网页网站建设 ppt直通车推广技巧
  • 上传网站根目录潍坊建设gc局网站
  • 新手如何做服装网站晋中网络推广
  • 化妆品可做的团购网站有哪些重庆做网站的网络公司
  • 陕icp网站建设临沂小程序开发公司哪家好
  • 企业网站招聘可以怎么做做网页
  • 大型网站开发语言排名北京做网站比较有名的公司有哪些
  • 广州设计网站培训班国际新闻最新战争消息
  • 重庆网站建设熊掌号小红书搜索优化