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

网站制作价格便宜网络推广渠道公司

网站制作价格便宜,网络推广渠道公司,吴中区建设局招标网站,软件开发计划模板StackOverflow发展到目前,已经成为了全球开发者的金矿。它能够帮助我们找到在各个领域遇到的问题的最有用的解决方案,同时我们也会从中学习到很多新的东西。这篇文章是在我们审阅了StackOverflow上最流行的Java问题以及答案后从中挑出来的。即使你是一个…

StackOverflow发展到目前,已经成为了全球开发者的金矿。它能够帮助我们找到在各个领域遇到的问题的最有用的解决方案,同时我们也会从中学习到很多新的东西。这篇文章是在我们审阅了StackOverflow上最流行的Java问题以及答案后从中挑出来的。即使你是一个有丰富经验的开发者,也能从中学到不少东西。

一、分支预测

问题链接:

https://stackoverflow.com/questions/11227809/why-is-it-faster-to-process-a-sorted-array-than-an-unsorted-array

StackOverflow上最多投票的一个Java问题是:为什么处理一个排序数组要比非排序数组快的多。为了回答这个问题,你需要使用分支预测(branch prediction)。分支预测是一种架构,旨在通过在真实的路径发生前猜测某一分支的下一步来提升处理过程。

分支在这里即一个if语句。这样的话,如果是一个排序数组,那么分支预测将会进行,否则不会进行。

StackOverflow上的一个回答者,链接:http://stackoverflow.com/questions/11227809/why-is-it-faster-to-process-a-sorted-array-than-an-unsorted-array/11227902#11227902

试图使用铁路和火车来简单介绍这个概念。假设你在铁轨连接处要决定火车要走哪条路,你会选择左边还是右边?你可以拦住火车,然后问司机该往那里,但是这样会让整个过程变慢。因此你只能去猜正确的方向,那么如何去猜呢?最好的办法就是通过观察目前这个火车每次经过时的路线,推测出正确的方向。

这就是分支预测:识别模式并使用它。

不幸的是,这个问题的提问者是分支预测失败的受害者。因为他的分支没有任何可以识别出的模式,所以预测出的行为是随机的。

二、Java中的安全

问题链接:

http://stackoverflow.com/questions/8881291/why-is-char-preferred-over-string-for-passwords-in-java

另一个流行的Java问题是:为什么在Java中有关密码的地方更加喜欢使用char[]而不是String?其实原始的问题更加具体一些,就是问的在Swing中,password控件有一个getPassword方法(返回char[]而不是getText()返回的String)。

其实这里不用惊讶-这是一个安全问题。String是不可变的,意味着一旦它被创建了,那么你就不可能去修改它。这也意味着在GC之前,你对这些数据不能做任何处理。因此,只要有人能够访问你的内存,那么String就有可能被他获取到。

这也就是为什么要使用char数组。你可以显示地清除数据或者覆盖它。这样密码这种敏感数据即使GC还没有进行也不会再在系统留下痕迹。

三、异常

问题链接:

http://blog.takipi.com/the-top-10-exceptions-types-in-production-java-applications-based-on-1b-events/

即使很多开发者倾向于忽略对受检异常的处理,StackOverflow上仍然有很多关于异常的问题。其中一个最流行的问题是:什么是NullPointerException,我该怎么处理它?对此,我们并没有感到惊讶,因为这个问题也是在生产环境的Java应用中排名第一的异常。

实际上,当NullPointerException(或者其他exception)在系统出现的时候,我们可以发出一个告警。因为这种异常一般情况下都是业务代码逻辑有问题造成(笔者注)。

四、为什么这段代码使用随机字符串打印出了”hello world”

问题链接:

http://stackoverflow.com/questions/15182496/why-does-this-code-using-random-strings-print-hello-world

这个问题给出了下面的代码,并打印出了”hello world”。


其实,选择一组随机的整数并不是随机的。给定一个seed参数(在这个例子中是-229985452和-147909649), 那么每次随机,同样的seed则会产生同样的输出。

Random(-229985452).nextInt(27)产生的前六个数字:8, 5, 12, 12, 15, 0

Random(-147909649).nextInt(27)产生的前六个数字:23, 15, 18, 12, 4, 0

这样,最终输出的就是”hello world”。

五、为什么两个时间戳相减(in 1927)得出一个奇怪的结果?

问题链接:

http://stackoverflow.com/questions/6841333/why-is-subtracting-these-two-times-in-1927-giving-a-strange-result


按说上面的代码最后的结果应该是1,但实际的输出却是353。其实,这是一个时区的问题。1927年12月31号24:00,上海时间往回调整了5分钟52秒,因此”1927-12-31 23:54:08”发生了两次,Java将后面一次实例化成了本地的这个时间。因此和前一秒的差距成了353。

我们需要指出,如果你试着来运行这段代码,结果并不一定是353。Jon Skeet指出了这一点,链接:

http://stackoverflow.com/a/6841479/5982245

在时区数据库项目2014版中,这个改变的时间点改到了1900-12-31,因此成了344秒的差距。

六、无法被捕获的ChuckNorrisException

问题链接:

http://stackoverflow.com/questions/13883166/uncatchable-chucknorrisexception

这里有一个很明显的问题:如果有exception被抛出,但是没有任何办法去catch,那么应用会崩溃吗?或者如这个问题所问:是否可以写一段Java代码让一个假设的java.lang.ChuckNorrisException无法被捕获。

答案是可以,但是这里有一个”但是”。你可以编译一段代码抛出一个ChuckNorrisException,但是在Runtime时动态生成一个并不继承于Throwable接口的ChuckNorrisException类。当然,为了让这个过程可以进行,你需要关闭掉字节码验证。jtahlborn给出了完整的解决办法。链接:

http://stackoverflow.com/a/13883510/5982245

七、哈希表

哈希表是另外一个在StackOverflow上流行的问题系列。许多用户都想要知道所有集合类之间的区别,什么时候该使用哪种集合。

迭代顺序是主要考虑的因素。使用HashMap则忽略了所有的顺序信息,也就是获取元素的顺序和你插入元素的顺序是没有任何关系的;使用TreeMap则会得到一个排序好的迭代集合;使用LinkedHashMap则是一个FIFO的顺序。

如果你还是对这些感到困惑,这里有一个相关说明的图表可以参考(Rebel Labs制作。链接:

http://zeroturnaround.com/wp-content/uploads/2016/04/Java-Collections-cheat-sheet.png。


八、总结

对于Java,其实关键的不在于你懂多少,而是在于你可以一直学到更多的东西。StackOverflow不仅在code上的一些问题可以帮助我们,也有助于我们回过头来去深入地学习一些我们已经知道的知识。

扩展阅读

HashMap为什么是线程不安全的

科普:String hashCode 方法为什么选择数字31作为乘子

IntelliJ IDEA 常用快捷键

面试必备之TCP常见知识点整理

Maven 的这 7 个问题你思考过没有?

来源:https://www.rowkey.me/blog/2016/08/03/so-java-7-answers/

转载于:https://www.cnblogs.com/javafirst0/p/10760831.html

http://www.lbrq.cn/news/2677951.html

相关文章:

  • 刷题网站开发重庆seo优化
  • 如何做一个个人网站高级搜索入口
  • 网站功能优化短视频代运营费用明细
  • 抖音app下载武汉seo主管
  • 第一次和两个老头做网站苏州优化排名seo
  • 卢氏县住房和城乡规划建设局网站流量大的推广平台有哪些
  • 做的网站无法显示此页会计培训班要多少钱一般要学多久
  • wordpress建站不知道密码如何进行营销推广
  • wordpress08影视网络优化工程师工资
  • 楼盘网站建设方案ppt营销公司排行
  • 深圳龙华做网站的广州最新新闻
  • 网页和网站区别长春最新发布信息
  • 银川网站建设多少钱seo手机关键词排行推广
  • 如何寻找做网站的客户国际网站平台有哪些
  • 网站3级营销是怎么做的网站托管
  • 建立一个门户网站推广普通话的手抄报
  • 电商网站制作项目描述西安专业做网站公司
  • 天津做网站最权威的公司seo外链优化方法
  • 在哪个网站可以做java面试题河南网站关键词优化
  • 申请做网站编辑组长的工作设想网络营销做得好的公司
  • 青海餐饮网站建设成都seo整站
  • 可信网站查询手机卡顿优化软件
  • 乐山旅游英文网站建设网络推广的工作内容
  • web前端网站建设开题报告网络营销怎么做推广
  • 用php做网站上传图片的代码网站如何优化关键词排名
  • 微信公众号手机网站开发成都网站建设制作公司
  • wordpress主题图片路径免费seo快速排名工具
  • 国外高端网站免费网址注册
  • CSS3网站建设上海不限关键词优化
  • 地下城做解封任务的网站哪里有营销策划培训班
  • MySQL高可用改造之数据库开发规范(大事务与数据一致性篇)
  • 2025 年国内可用 Docker 镜像加速器地址
  • Java集合框架、Collection体系的单列集合
  • 【从源码角度深度理解 Python 的垃圾回收机制】:第1课引用计数篇
  • K8s DaemonSet 详解
  • Ubuntu 安装 Kibana