前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >论编程期间遇到的奇葩问题 -- 编译器压根不搭理你

论编程期间遇到的奇葩问题 -- 编译器压根不搭理你

原创
作者头像
世玉
修改2020-12-07 11:25:50
4050
修改2020-12-07 11:25:50
举报
文章被收录于专栏:世玉的专栏世玉的专栏

曾经的我,天真的以为,代码里面只存在真或者假的2种概念,什么非真非假的情况不可能出现。至于说什么遇事不决,量子力学。在编程的生涯里面,那是扯淡。

然而,随着编程的年限久了,什么奇葩的事情就会慢慢的被遇到,有时候会让你三观都被颠覆。这个时候我基本就从一个无神论者,变成了有神论者了。什么烧香磕头呀拜佛呀。都会来一遍。然后喝一杯Java。休息一会儿(或者休息一晚上)。然后完了以后就会莫名的找到所谓的 “原因” ,看着确实合理的 “原因” !

是什么情况呢?很多时候表现出来的就是 classes 文件没有编译 ! 比如我此时敲下代码, eclipse 此刻自动编译。 部署到tomcat 里面 ,理论上当前这一份 类文件 的修改时间 就是当前时间。 然而,某些时候这份文件却没有被修改。 修改时间还是在上一次修改时间呆着。 不论你尝试多少次。 结果都是一样的。关键的问题是,写代码的我们,很多时候都不敢完全相信自己的代码没有问题,于是就陷入了疯狂的调试, 测试。 调试, 测试.............................. 啊,要疯!

直到我们检测了N+ 1 遍以后 ,已经完全相信自己写的代码没问问题, sql 语句可以在 navicate 里面顺利跑出来结果。 写的 List 代码在别的main 方法里面测试,结果和预期完全一样时候。 这个时候你会体会到什么叫绝望。这个时候你会感觉到很诡异的感觉。比如有时候 一句简单的代码如下:

代码语言:javascript
复制
 if(1==1){ 
    System.out.println( "1");
  }else{
    System.out.println( "2");
  }

而结果是它在控制台打印着 2 , 此时我的感觉是我的世界观都被颠覆了。 我深信不疑的基本理论都被动摇了。why ? 然后开始去看classes 文件是否编译了。 (很多时候想不起来这回事 ! ). 当看到类文件的修改时间压根就没变过, 内心的信仰就又坚定了。

然后就是开始一直编译,一直编译,一直编译..........................

天知道我编译了多少次!

有人会问,那你为撒还不用IDEA 呢? 我用过,而且我经常2个切换着用。 因为有些项目就是eclipse 的项目。 同事用的eclipse,如果我再把它变成IDEA 的项目。中间会发生一些莫名其妙的问题。而且还耽误时间。我用IDEA的时间少,我不知道IDEA会不会也出这样的问题。

但是究其根本原因,到底是因为撒?

计算机底层不就是电流嘛, 不就是开闭电路,形成0,1 ,这样的逻辑 “概念” 嘛?在电压稳定的情况下。理论上是不可能出现模棱两可的事情吧?

虽然说这样的 0, 1 被各种封装, 变成0000000, 11111111, 0101001,001,0111. 然后再用对应的表来表示这玩意儿是撒意思,也就是ASCII 码,GBK, GBK2312, UTF-8 , UTF-9 , UTF-16.............................

中间经历了各种解码,加密等等。但是既然是无数人都在使用的东西,这一套玩意儿一定是确定的。1就是true. 0 就是false 。 无可厚非吧,无需争论吧?

那么为撒就会出现这样模棱两可的事情呢?

想想都觉得诡异莫测!

面对这样的问题之时,我是无能为力的了,只有喝杯Java, 冷静一下。 然后休息一会儿, 要是还不行,就关机重启,基本上关机重启能解决90% 的问题。至于重启都解决不了, 那就是重装软件,重装系统了。

后记:这样诡异的问题还很多,编译器不工作只是1个,后面还会遇到mysql 不搭理你的情况。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档