golang 关于 Inf,-Inf,Infinity,-Infinity 等无穷大无穷小特殊字符转换问题

Posted ecake

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 关于 Inf,-Inf,Infinity,-Infinity 等无穷大无穷小特殊字符转换问题相关的知识,希望对你有一定的参考价值。

记录一个比较个例的问题,某天API突然写入数据失败,原因是数据库写入长度超出,并且从日志中发现了 "Infinity" 这样的特殊字符串

英语渣渣的我有懵,客户端发过来的数据,API都会转换为对应的数据类型,再进行数据库写入,如果是字符串,最多就转成0,怎么会长度超出

万变不离其宗,肉眼看不出的问题(哈哈 其实就是知识界有限),那就打断点,看看这个字符串究竟被转化成什么

 可以看到,“Infinity” 通过 strconv.ParseFloat 转换为 +Inf ,即无穷大

后面通过尝试,发现 Inf,-Inf,Infinity,-Infinity 这些特殊字符串,都是可以被识别转换为无穷大无穷小

因为数据库设置的字段类型是 decimal ,写入无穷大的值,自然是长度超出

 

找到问题所在,那么接下来就是要解决啦

正常API业务处理,无论是 无穷大 还是 无穷小 都属于不合法的参数值,可按0处理

所以在 strconv.ParseFloat 加了个 判断 参数值 含英文字母,即返回  0  

 

这是检查字符串是否含英文字母的工具方法 

func ContainsEnglish(str string) bool
  dictionary := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
  for _, v := range str
    if strings.Contains(dictionary, string(v))
      return true
   
 
  return false

 

End.

night nice~~

 

 

关于WEB-INF目录下的静态资源(jscssimg)的访问

  首先,需要明确的是WEB-INF目录是被保护起来的,其下的jsp页面不能直接运行,只能通过控制器跳转来访问;而同样在此目录下的静态资源(js、css、img)也不能被WEB-INF目录外的其他文件直接引用。

WEB-INF下的目录结构如图:

技术分享图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

jsp文件夹下放的是jsp文件,static文件夹下放的是css,js,img等静态资源;

由于jsp文件夹与static文件夹都在WEB-INF目录下,故jsp文件夹下的jsp引入某js可通过相对路径访问:

  <script src="../static/js/echarts.js"></script>  

而在webContent目录下的jsp想要引入WEB-INF下的静态资源,则得通过springmvc的配置文件进行设置:

  <mvc:resources mapping="/static/**" location="/WEB-INF/static/" />

可以理解为将/WEB-INF/static/目录映射为/static/目录,引入静态资源可通过以下的路径:

  <link href="static/css/elegant-icons-style.css" rel="stylesheet" />

---------------------
作者:XGBYL
来源:CSDN
原文:https://blog.csdn.net/finger_c/article/details/80264337
版权声明:本文为博主原创文章,转载请附上博文链接!





以上是关于golang 关于 Inf,-Inf,Infinity,-Infinity 等无穷大无穷小特殊字符转换问题的主要内容,如果未能解决你的问题,请参考以下文章

关于WEB-INF目录及Tomcat部署方式原理的简单理解

关于WEB-INF下的jsp,使用绝对路径如何访问?

关于WEB-INF目录下的静态资源(jscssimg)的访问

关于无穷大数INF的取值

关于web项目创建后WEB-INF下面没有出现web.xml的解决方法

关于WEB-INF目录下无法访问webapp下的css等静态文件