奇怪的bug

2024-06-12 18:12
文章标签 bug 奇怪

本文主要是介绍奇怪的bug,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

奇怪的bug 合集

1.不可见字符集问题

起因是在自己做小项目的时候,通过lombok的@data注解,默认生成实体类的get set方法
但是在某个方法中获取一个属性值的时候显示找不到该属性值的get方法,具体直接贴图

在这里插入图片描述
在这里插入图片描述

我以为是lombok的配置问题,或者是idea的缓存问题,但是…通过一系列的排查,清缓存,还是报错…
后面我有单独的获取了一下,但是能获取到 ,王德法???一脸问号脸的我???

在这里插入图片描述

于是我猜想:这两个玩意儿不能不一样吧???原模原样复制,写个main测试一下

public static void main(String[] args) {String s = "app.getАррTуре()";String s1 = "app.getAppType()";for (int i = 0; i < s.length(); i++) {if (s.charAt(i) == s1.charAt(i)) {System.out.println("s:" + s.charAt(i) + " s1:" + s1.charAt(i) + " 相等");} else {System.out.println("s:" + s.charAt(i) + " s1:" + s1.charAt(i) + " 不相等");}}}

但是结果却运行出来这么个玩意儿,同样让我震惊??,确实不一样… 持续懵逼中…
s:a s1:a
s:p s1:p
s:p s1:p
s:. s1:.
s:g s1:g
s:e s1:e
s:t s1:t
s:А s1:A 不相等
s:р s1:p 不相等
s:р s1:p 不相等
s:T s1:T
s:у s1:y 不相等
s:р s1:p 不相等
s:е s1:e 不相等
s:( s1:(
s:) s1:)

什么A != A??
百度了一圈
大概是这个原因:

代码中,字符串 s 和 s1 看起来在大多数位置上是相似的,但有一个重要的区别:s 字符串中包含了一些非ASCII字符(在这种情况下是俄文字符 “Арр”),而 s1 则只包含ASCII字符。
比较这两个字符串中的字符时,即使它们在视觉上可能看起来相似(比如您的 “A” 和 “А”),但它们在计算机中的表示是完全不同的。ASCII字符集主要用于表示英文字母、数字和一些标点符号,它只定义了从0到127的字符代码。而 “А” 是一个Unicode字符,它在Unicode字符集中的位置与ASCII中的 “A” 不同。
在Java中,char 数据类型用于存储Unicode字符,因此 “A” 和 “А” 被视为两个不同的字符,即使它们在视觉上可能相似。
对于索引位置0、1和2(即 “app” 部分),两个字符串的字符是相同的,因此会输出 “相等”。但是,当您到达索引位置3时,s 中的字符是 “А”(Unicode中的某个值),而 s1 中的字符是 “g”(ASCII值为103)。由于这两个字符在Unicode中的值不同,因此输出将是 “不相等”。

继续看了看 改吧改吧

public static void main(String[] args) {String s = "app.getАррTуре()";String s1 = "app.getAppType()";for (int i = 0; i < s.length(); i++) {if (s.charAt(i) == s1.charAt(i)) {System.out.println("s:" + s.charAt(i) + " s1:" + s1.charAt(i) + " 相等");} else {System.out.println("s:" + s + " (" + (int) s.charAt(i) + ") s1:" + s1 + " (" + (int) s1.charAt(i) + ") 不相等(Unicode值不同)");System.out.println("s:" + s.charAt(i) + " s1:" + s1.charAt(i) + " 不相等");}}}

输出:

s:a s1:a 相等
s:p s1:p 相等
s:p s1:p 相等
s:. s1:. 相等
s:g s1:g 相等
s:e s1:e 相等
s:t s1:t 相等
s:app.getАррTуре() (1040) s1:app.getAppType() (65) 不相等(Unicode值不同)
s:А s1:A 不相等
s:app.getАррTуре() (1088) s1:app.getAppType() (112) 不相等(Unicode值不同)
s:р s1:p 不相等
s:app.getАррTуре() (1088) s1:app.getAppType() (112) 不相等(Unicode值不同)
s:р s1:p 不相等
s:T s1:T 相等
s:app.getАррTуре() (1091) s1:app.getAppType() (121) 不相等(Unicode值不同)
s:у s1:y 不相等
s:app.getАррTуре() (1088) s1:app.getAppType() (112) 不相等(Unicode值不同)
s:р s1:p 不相等
s:app.getАррTуре() (1077) s1:app.getAppType() (101) 不相等(Unicode值不同)
s:е s1:e 不相等
s:( s1:( 相等
s:) s1:) 相等

可见,代码中有脏东西… 至此 该bug 修复…

这篇关于奇怪的bug的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054960

相关文章

JavaBug系列-解决SpringBoot返回Xml结构的问题

JavaBug系列之SpringBoot返回Xml结构的问题 Java医生一、关于错误信息二、如何解决问题 Java医生 本系列记录常见Bug,以及诊断过程和原因 作者:Java医生 教学: Java企业项目辅导,专注于辅导新入职员工,解决各种问题! V:study_51ctofx 一、关于错误信息 如图,SpringBoot请求返回Xml格式信息 通过以上信息分析,

JavaBug系列- Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class load

JavaBug系列之Mysql驱动问题 Java医生一、关于错误信息二、如何解决问题 Java医生 本系列记录常见Bug,以及诊断过程和原因 Java/一对一零基础辅导/企业项目一对一辅导/日常Bug解决/代码讲解/毕业设计等 V:study_51ctofx 一、关于错误信息 APPLICATION FAILED TO START Description: Fai

【解决bug之路】npm install node-sass(^4.14.1)连环报错解决!!!(Windows)

有关node-sass的深入分析可参考:又报gyp ERR!为什么有那么多人被node-sass 坑过? 主要有如下三方面错误,请自查: 1.node,npm版本需与node-sass版本匹配,像node-sass(^4.14.1)就得node 14.x版本才可以,node 16不行 gyp ERR! build error15 gyp ERR! stack Error: `

排查 MyBatis XML 配置中的 IF 语句与传值名称不匹配的 Bug

文章目录 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得 前言,在改一个bug得时候发现一个有意思得问题,就是mybatis得xml中if判断得问题,传值名字不匹配依旧可以进行判断,如下图 传值userName,但是有意思得事情出现了,进了if,并且没有报错,尝试了两次都是这

彻底解决魅族手机无法彻底卸载应用的bug

使用Flyme系统的同学可能会遇到一个问题: 卸载了某些软件(例如通过开发者模式调试安装的应用)后,实际这个应用还残留在系统,当你用低版本或者其他签名的apk覆盖安装的时候会提示“安装失败”,要求你卸载后重新安装。 可是无论你从应用列表寻找还是清理垃圾,都根本找不到这个应用。 闹鬼?这个bug一直伴随着flyme,可怜工程师们竟然一个都没发现。 今天笔者教大家一招解决这个问题。

今天做了freemaker 导出word文档 的bug修复,解决 \n换行 问题

结合Freemaker导出文件 public void exportSimpleWord() throws Exception{// 要填充的数据, 注意map的key要和word中${xxx}的xxx一致Map<String,String> dataMap = new HashMap<String,String>();dataMap.put("username", "张三");dataMap.

【软件测试】软件测试-----什么是Bug?Bug是如何分级的?Bug的生命周期是怎样的?如何描述一个Bug?

博客目录 一.软件测试的生命周期二.BUG的定义和级别2.1 bug的概念.2.2 如何描述一个bug.2.3bug的级别2.3.1 bug分级的意义.2.3.2 bug的四种级别. 三.BUG的生命周期.四.当与开发人员发生冲突该如何处理(高频面试)五.总结 一.软件测试的生命周期 软件测试贯穿于软件的整个生命周期,针对这句话我们一起来看一下软件测试是如何贯穿软件的整个生命周

【ListView】有关填充bug

假设要实现如下效果 ListView里若使用RelativeLayot则会出现错误 得不到垂直线的填充 线性布局的高度设置为match_parent会使高度为0,必须给它一个固定值,比如20dp ListView建议使用LinearLayout在最外层,而最外层的宽高无论如何设置都无法确定的,建议第二层也使用linearLayout来布局 【实现

ListView数据只有显示不全bug

Android编程中,ScrollView嵌套ListView时,会无法正确的计算ListView的大小。解决的办法有如下两种: 解决方案1: 直接把包含ListView控件的ScrollView控件从布局文件中去除,留下ListView控件,这是最简单快捷的解决办法,如果一定要在ScrollView中包含ListView,则参考解决方案2:

ScrollView嵌套listview滑动位置底部bug

三种方案,个人推荐第三种: 1 sv.fullScroll(ScrollView.FOCUS_UP); 2 sv.setScrollY(0); 3 sv.smoothScrollTo(0,20); 滑动冲突解决listView: public class ListViewForScrollView extends ListView {public ListVie