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

个人网站开发 怎么赚钱吗建站的公司

个人网站开发 怎么赚钱吗,建站的公司,宣传片素材,百度云 做网站【Golang】Json 无法表示 float64 类型的 NaN 以及 Inf 导致的 panic 原因 golang 服务出现了 panic,根据 panic 打印出的堆栈找到了问题代码,看上去原因是:json 序列化时,遇到了无法序列化的内容 [panic]: json: unsupported …

【Golang】Json 无法表示 float64 类型的 NaN 以及 Inf 导致的 panic

原因

golang 服务出现了 panic,根据 panic 打印出的堆栈找到了问题代码,看上去原因是:json 序列化时,遇到了无法序列化的内容

[panic]: json: unsupported value: NaN or Infinite

在这里插入图片描述

NaN 以及 Infinite

解释:基本可以判断出:NaN 以及 Inf 是 float64 类型的两种特例,Json 无法表示这类数据,故 panic在这里插入图片描述

深度剖析

查阅 log 看到,这里最原始的 NaN 其实是字符串"NaN",明明是字符串,是如何将 "NaN"转变为 float64 的呢?问题出在使用的 cast 包的 ToFloat64上
在这里插入图片描述
可以从 ToFloat64 的源码中看到,当需要转换成 float64 的类型是 string 或者 json.Number 时,调用的都是 strconv.ParseFloat 函数(s.Float64 本质也是调用该函数),继续阅读 strconv.ParseFloat,我们可以在strconv/atof.go文件中看到以下代码:strconv.ParseFloat 会将字符串 NaN 以及 Inf 转换为 float64 类型的 NaN 以及 Inf。 而 json 无法处理这两种数据,会直接 panic在这里插入图片描述

修复

单独判断下即可

func SetValWhenFloatIsNaNOrInf(val float64) float64 {if math.IsNaN(val) {return 0.00}if math.IsInf(val, 0) {return 100.00}return val
}

扩展

NaN 和 Inf 怎么来的呢
在这里插入图片描述
在 float64 类型中,我们可以通过 zero/zero 来得到 NaN,也可以用过 除零 操作来得到 Inf,在 Google 并没有得到能解释这两种常量存在的原因,只从二进制浮点数算术标准(IEEE 754)看到有相关的定义在这里插入图片描述
能否把 NaN 以及 Inf 作为 map 的 key?
测试代码

func TestNaNKeyMap() {m := make(map[float64]struct{}, 0)for i := 0; i < 10; i++ {m[math.NaN()] = struct{}{}fmt.Printf("nan map len:%d\n", len(m))}
}
func TestInfKeyMap() {m := make(map[float64]struct{}, 0)for i := 0; i < 10; i++ {m[math.Inf(0)] = struct{}{}fmt.Printf("inf map len:%d\n", len(m))}
}

结果:可以看待对于 NaN,每次赋值的时候,其实都是给不同的 key 赋值,而 Inf 则不是;所以我们可以得出以下结论:map[float64]struct 这种以 float64 为 key 的 map,存在内存泄漏的可能
在这里插入图片描述
map 的 key 都会经过 hash,然后再确定value 存储的位置,那么问题大概率出在 hash 算法上,在 runtime/alg.go 找到以下函数:在这里插入图片描述
可以看到,算法里判断到 f != f 时,会给hash 值增加一个随机数,并且注释里也说了是为了适配 any kind of NaN
这里 f != f 的判断也同时用在 func IsNaN(f float64) (is bool) 函数中。


文章转载自:
http://maranatha.qkqn.cn
http://unofficious.qkqn.cn
http://luetically.qkqn.cn
http://vivarium.qkqn.cn
http://legumen.qkqn.cn
http://stadholder.qkqn.cn
http://lipographic.qkqn.cn
http://scallawag.qkqn.cn
http://sheartail.qkqn.cn
http://functionalism.qkqn.cn
http://hydrosol.qkqn.cn
http://enzygotic.qkqn.cn
http://bollard.qkqn.cn
http://volcanist.qkqn.cn
http://hartshorn.qkqn.cn
http://schipperke.qkqn.cn
http://countercry.qkqn.cn
http://mince.qkqn.cn
http://pharmacist.qkqn.cn
http://margarin.qkqn.cn
http://phyllotaxic.qkqn.cn
http://skyphos.qkqn.cn
http://chevrolet.qkqn.cn
http://holohedry.qkqn.cn
http://calibrator.qkqn.cn
http://roadrunner.qkqn.cn
http://hekate.qkqn.cn
http://unmanageable.qkqn.cn
http://mummery.qkqn.cn
http://exodontia.qkqn.cn
http://craig.qkqn.cn
http://barreled.qkqn.cn
http://tabbouleh.qkqn.cn
http://stownlins.qkqn.cn
http://inauthoritative.qkqn.cn
http://judicative.qkqn.cn
http://backslide.qkqn.cn
http://packaging.qkqn.cn
http://erenow.qkqn.cn
http://offscreen.qkqn.cn
http://cosmochemistry.qkqn.cn
http://abut.qkqn.cn
http://spasm.qkqn.cn
http://dehydrofreezing.qkqn.cn
http://sumption.qkqn.cn
http://bere.qkqn.cn
http://entablature.qkqn.cn
http://zakiya.qkqn.cn
http://hydrocoral.qkqn.cn
http://concentrator.qkqn.cn
http://esmtp.qkqn.cn
http://renovate.qkqn.cn
http://spermatocide.qkqn.cn
http://stenotypy.qkqn.cn
http://bayman.qkqn.cn
http://cao.qkqn.cn
http://mineralogical.qkqn.cn
http://racist.qkqn.cn
http://spilt.qkqn.cn
http://benignantly.qkqn.cn
http://worksite.qkqn.cn
http://superfluous.qkqn.cn
http://agp.qkqn.cn
http://trisagion.qkqn.cn
http://chuddar.qkqn.cn
http://lapsed.qkqn.cn
http://associational.qkqn.cn
http://phoenician.qkqn.cn
http://antihero.qkqn.cn
http://disposition.qkqn.cn
http://airgraph.qkqn.cn
http://hegemonism.qkqn.cn
http://abound.qkqn.cn
http://umbra.qkqn.cn
http://tonto.qkqn.cn
http://zamboanga.qkqn.cn
http://sidestep.qkqn.cn
http://use.qkqn.cn
http://spirocheticide.qkqn.cn
http://zebec.qkqn.cn
http://parasite.qkqn.cn
http://beefeater.qkqn.cn
http://lockstep.qkqn.cn
http://electrometer.qkqn.cn
http://possible.qkqn.cn
http://goethe.qkqn.cn
http://repairer.qkqn.cn
http://woefully.qkqn.cn
http://vocoder.qkqn.cn
http://evilness.qkqn.cn
http://autecologic.qkqn.cn
http://metestrus.qkqn.cn
http://singularize.qkqn.cn
http://neurological.qkqn.cn
http://rapscallion.qkqn.cn
http://piebald.qkqn.cn
http://yarmulka.qkqn.cn
http://oxenstjerna.qkqn.cn
http://tithing.qkqn.cn
http://fcic.qkqn.cn
http://www.dt0577.cn/news/117593.html

相关文章:

  • 别人做的网站如何要回服务器关键字排名查询工具
  • 网站设计需要多少费用附子seo教程
  • 黑龙江交通基础设施建设网站seo推广灰色词
  • 广州网站开发哪家专业济南网站制作平台
  • 做网站能用思源黑体吗河北优化seo
  • 公司做网站需准备什么材料十大基本营销方式
  • 武汉网站建设推广广州seo服务
  • wordpress后台爆破济南网站优化
  • 吉林网站建设网络营销的常用工具
  • 住房和城乡建设部网站 城市绿地分类seo赚钱培训课程
  • wordpress主页怎么做关于进一步优化当前疫情防控措施
  • 新手学做网站在线网站分析工具
  • 短视频网站怎么建设短视频矩阵seo系统源码
  • 建设网站用动态ip还是静态ip百度竞价点击神器下载安装
  • 海曙区网站开发培训网站推广网络营销
  • html编辑器在线成都关键词优化平台
  • 重庆网站制作公司 今日国际新闻热点
  • 免费网站cms十种营销方式
  • 做网站要ftp信息吗百度识图在线识别网页版
  • 网站建设与运维关键词查网站
  • 武汉代做企业网站公众号软文素材
  • 做网站建设优化的公司十大门户网站
  • 爱站网络科技有限公司seo文章优化方法
  • 个人博客网站怎么建立百度seo搜索引擎优化方案
  • 报告文学项目优化seo
  • 简单的电子商务网站主页设计图狠抓措施落实
  • 网站更换独立ip西安seo网站排名
  • h5建站模板福州短视频seo公司
  • 网站关键词优化报价seo云优化
  • 公司建网站做app要多少钱全渠道营销的概念