首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

阿里「Java开发手册」中的1个bug?

前两天写了一篇关于《阿里Java开发手册中的 1 个bug》的文章,评论区有点炸锅了,基本分为两派,支持老王的和质疑老王的。 首先来说,无论是那一方,我都真诚的感谢你们。...咱先放下反对者说的这个含义在阿里《Java开发手册》中是否有体现,因为我确实没有看出来,咱们先顺着这个思路来证实一下这个结论是否正确。...", "Java", "Redis", "MySQL"); } } } 复制代码 可以看出代码中使用了 info 的日志数据级别,那么此时我们再将配置文件中的日志级别设置为大于...那么,我们依然没有办法证明阿里《Java开发手册》中的占位符性能高的结论。...所以我依旧保持我的看法,使用占位符而非字符串拼接,主要可以保证代码的优雅性,可以在代码中少些一些逻辑判断,但这样写和性能无关。

45140

Java编程中如何减少bug的出现次数!

前言 Java编程语言在IT行业毋庸置疑是企业中不可缺少的,现今企业招收大量Java人才,从Web应用到Android应用,这款语言已经被广泛用于开发各类应用及代码中的复杂功能。...不过在编写代码时,bug永远是困扰每一位从业者的头号难题。...在今天的文章中,小职将分享几项最佳实践,希望帮助大家更为轻松地减少Java开发中的bug数量,并且Java核心学习笔记也是学Java必备的知识,希望对大家有帮助!...不要依赖初始化 在Java编程中,开发者常常依赖构造函数进行对象初始化。不过这其实是一种常见误区。我们完全可以在无需调用构造函数的情况下,通过多种方式实现对象分配。...黑客可以利用单一漏洞插入自己的类,进而从代码中提取敏感信息。JVM在默认情况下即不会封闭,不过允许大家在该软件包内进行类封闭。 希望以上可以帮助大家更为轻松地减少Java开发中的bug数量

1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java开发 中运用动态挂载实现 Bug 的热修复

    Attach API:使用动态附件来渗透另外一个 JVM 为了修改一个运行中的 Java 程序,我们首先需要一种可以同处在运行状态的 JVM 进行通信的方式。...因为 Java 的虚拟机实现是一个受到管理的系统,因此拥有进行这些操作的标准 API。提问中涉及到的 API 被称作 attachment API,它是官方 Java 工具的一部分。...在 Java 9 中,乱糟糟的状态才最终得以清理,tools.jar 被 Jigsaw 的模块 jdk.attach 所替代。 ?...后续的修改,Java 代理可以定义第二参数来接收一个 Instrumentation 的实例 。稍后要实现的接口提供了向几个底层方法的访问途径,它们中的一个就能够对已经加载的代码进行修改。...使用 Byte Buddy 来追踪内存泄漏 一个如上述示例的简单的 BUG 修复代理在你熟悉了 instrumentation 的 API 的时候是比较容易实现的。

    1.3K30

    在 Java 中运用动态挂载实现 Bug 的热修复

    Attach API:使用动态附件来渗透另外一个 JVM 为了修改一个运行中的 Java 程序,我们首先需要一种可以同处在运行状态的 JVM 进行通信的方式。...因为 Java 的虚拟机实现是一个受到管理的系统,因此拥有进行这些操作的标准 API。提问中涉及到的 API 被称作 attachment API,它是官方 Java 工具的一部分。...在 Java 9 中,乱糟糟的状态才最终得以清理,tools.jar 被 Jigsaw 的模块 jdk.attach 所替代。 ?...有了一个 Java 代理,VM 和指定的进程 id 就可以查找到一个名为 agentmain 的方法,该方法可以由指定线程中的远程进程来执行: ?...使用 Byte Buddy 来追踪内存泄漏 一个如上述示例的简单的 BUG 修复代理在你熟悉了 instrumentation 的 API 的时候是比较容易实现的。

    1.1K20

    「Hello World」中的「bug」

    选自sunfishcode博客 作者:sunfishcode 机器之心编译 机器之心编辑部 Hello World 可能是许多人编写的第一个程序。这么简单的程序按理说应该没有 bug 吧?...上面提到的所有版本都有一个 bug。 bug 在哪儿? Linux 有一个有趣的设备文件,叫做「/dev/full」,就像它更著名的表亲「/dev/null」一样。...这是一个 bug! 这个 bug 有多严重?可以说,hello world 在任何地方都不会是安全的。...然而,hello world 确实做了一些现实世界的程序所做的事情:打印到标准输出,这可能会被重定向到一个文件。在现实世界中,文件可能会耗尽空间。...在前面的内容中,我们重点看了 bash 和 C,那如果换成 Python 呢?Python 处理错误的原则可是「Errors should never pass silently」。

    42720

    异常使用中的BUG

    F是一家toC互联网公司的Web端测试工程师,负责公司一个测试论坛的测试工作,生活平风浪静,工作暗流涌动。...今日公司上线了双11有奖征集活动,经过多轮测试和修复BUG终于昨日顺利上线,虽不是一帆风顺但是也没出什么篓子,不出意外,本周的工作就这么顺利过去了。...F开始查找各路原因,毕竟线上反馈乃是大事儿,搞不好会算成线上BUG。...此时用户发了一段操作视频,按照F给出的建议,清除缓存,重启浏览器,关闭了网络代理,就差重启电脑了。视频中依然无法看到banner中的图片。...眼见着午饭时间越来越近,不由得饿从肚中来,突然视频中的一个小细节引起了F的注意,如下图: ?

    66220

    【Java NIO空轮询bug和Netty中的解决方法】

    1、问题提出 https://bugs.java.com/bugdatabase/view_bug.do?...bug_id=6670302 简单来说:epoll机制是Linux下一种高效的IO复用方式,相较于select和poll机制来说。...其高效的原因是将基于事件的fd放到内核中来完成,在内核中基于红黑树+链表数据结构来实现,链表存放有事件发生的fd集合,然后在调用epoll_wait时返回给应用程序,由应用程序来处理这些fd事件。...使用IO复用,Linux下一般默认就是epoll,Java NIO在Linux下默认也是epoll机制,但是JDK中epoll的实现却是有漏洞的,其中最有名的java nio epoll bug就是即使是关注的...select轮询事件返回数量为0,NIO照样不断的从select本应该阻塞的Selector.select()/Selector.select(timeout)中wake up出来,导致CPU 100%

    1.5K40

    Android调试中遇到的bug

    错误原因是因为:输出的log内容没有初始化, 09-11 15:29:43.832: WARN/System.err(13065): org.json.JSONException: No value for...:我在解析json 字符串的时候,返回来的键值和我optString的设置没有一致 09-11 15:33:04.697: WARN/dalvikvm(13180): threadid=13: uncaught...(Thread.java:848) 错误原因是:我定义了一个数组,我插入数据的时候用了set,而不是用的add方法 我好傻 09-11 15:33:04.703: WARN/ActivityManager...WARN/System.err(743):     at dalvik.system.NativeStart.run(Native Method) 这个其实不是问题,我也没有找到解决方案,但是我重新调试的时候就不报这个警告了... 主要的原因估计还是我其他的地方错误了,listView的问题 今天好像又碰到了  我一开始学Android写listView的问题,就是创建一个adapter类的时候只知道吧getView写了  而把那些

    59130

    那些年,我们追过的Java BUG

    那些年,我们追过的Java BUG 摘要 你好,我是猫头虎,一个热衷于技术的博主! 对于我们这些Java开发者来说,编程旅程中总是充满了各种意想不到的BUG。...你是否经常在Java的世界中,遭遇过那些令人困惑、令人窒息,但又在事后发现其实很简单的bug?在这篇博客中,我要和大家分享一些在Java开发中遇到的有趣的bug,以及如何解决它们。...希望这篇文章能为Java开发者提供一些有趣的启示,并在搜索中为大家带来一些有趣的故事! 引言 Java,作为一门广泛使用的编程语言,其强大的功能和广泛的应用范围为我们带来了无数的便利。...但同时,由于Java的复杂性,我们在开发过程中也经常遭遇各种问题。 正文 1....参考资料 Java 官方文档 JavaRanch 希望大家在Java的旅程中,能够不断地进步,遇到问题时,不要气馁,要相信自己,相信有一天,你会成为一个优秀的Java开发者!

    16210

    规避 Go 中的常见并发 bug

    本文梳理了论文中提到的常见的bug并给出解决方法的分析。...同时研究发现共享内存和消息传递导致的bug数量不想上下,但是共享这种方法的使用量比消息传递使用的更频繁,所以也得出了共享内存方式更不容易导致bug的结论。...非阻塞式bug 和阻塞式bug类似,非阻塞式bug也由共享内存和消息传递引起:当试图保护一个共享变量失败时候,或消息传递使用不当时候,都可能造成非阻塞式的bug。...什么时候执行,所以goroutine中拿到的i并不确定(大概率这几个循环创建出的goroutine拿到的都是21)。...timer.C: case <- ctx.Done(): return nil } 上面这段代码中,第一行创建的timer由于超时时间是0,所以会立刻触发select中的第一个

    61040

    移动端Webapp中的那些Bug

    我有一个登录页面,在聚焦之后需要往上弹一下,android上正常,然后IOS上还同时引出了一个BUG:输入框上去了,但是光标却在下面闪。怎么办呢?...这样在上层的遮罩去掉之后,就可以300ms后执行下面的link层中的事情,那么也算是用户真正地触发的点击行为,美滋滋。...另外,如果一个页面中有输入框,聚焦之后,滑动过程中在IOS上可能会出现不流畅的问题,其实可以这么做:监测页面的touchmove事件,如果当前页面存在着输入框被active,那么直接让其blur,保证滑动过程中没有输入框被聚焦...说明:测试了很多机型,发现现在的android上的浏览器都貌似修复了这个问题,就是当键盘弹上来的时候,会默认地将输入框上移。但是我在项目中内嵌的webview中确实遇到了这种问题。...如果在IOS中也遇到这样的问题,此时的键盘高度要乘以设备像素比

    3K50

    WCF中关于可靠会话的BUG!!

    如果在从应用程序配置文件加载服务说明或在代码中以编程方式生成服务说明时检测到 DeliveryRequirementsAttribute 属性,则 WCF 会验证所配置的绑定,并支持该属性指定的所有功能...经过我个人的分析,这是WCF的一个Bug。 一、问题再现 我随便定义了一个简单的服务:OrderService。...二、资源的错误定义导致异常消息不正确 我们对上面抛出的异常进行进一步地追踪,你会现在该异常的StackTrace如下。...而异常消息则定义在资源文件中。该资源文件的Key是“TheBindingForDoesnTSupportOrderedDelivery1”。...为此,在此利用Reflector,看看资源项的定义,结果证实资源字符串的内容和上面抛出的异常消息是吻合的。所以,我们可以说由于WCF资源字符串的错误定义或者错误使用导致了这个Bug的产生。 ?

    689110

    Java并发BUG提升篇

    内存一致性问题 当多个线程访问为相同数据的结果不一致时,将发生内存一致性问题。 根据Java内存模型,除主内存(RAM)外,每个CPU都有自己的缓存。...可能会发生以下事件序列: thread1从其自己的缓存中读取计数器值;计数器为0 thread1递增计数器并将其写回到其自己的缓存中;计数器是1 thread2从其自己的缓存中读取计数器值;计数器为0...在以下示例中,我们可以看到如何使用引用作为锁,将方法级同步转换为块级同步。...} } }); threadA.start(); threadB.start(); } } 在上面的代码中,...然后,ThreadA中尝试获取lock2,其已经被threadB获取而threadB尝试获取lock1,其已经被ThreadA获取。因此,他们两个都不会继续运行,这意味着他们陷入了死锁。

    42820

    Java并发BUG基础篇

    因此,Java提供了并发集合,例如CopyOnWriteArrayList 和 ConcurrentHashMap,可以由多个线程同时访问它们: CopyOnWriteArrayList的。由于竞争条件等原因,它们的状态在多线程应用程序中可能变得不一致,从而导致BUG的发生。 那么,如何安全地使用SimpleDateFormat?...将结果存储在计数器中 ; 现在的结果是1 thread2将结果存储在计数器中;现在的结果是1 我们预计该计数器的值为2,但值为1。...,因此这在计数器的读写中强制了一致性。...否则,我们得可以编写自己的代码,将关键部分封装在自定义线程安全的类中。这种方法有助于我们最大程度地减少代码的复杂性并最大程度地提高代码的可重用性。

    44520

    如何减少开发中的 Bug

    所以程序员如何减少开发中的 Bug,既反映了代码质量,也反映了个人综合能力。 那么我们该如何有效的减少开发中的 Bug 呢? 我觉得应该从两方面说起:业务层和代码层。...在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试。...其次,要积累自己的函数库,我们经常用到的一些方法,不妨自己做一个封装,不断沉淀。也许有一天,你会发现,自己不知不知觉中写出了一个 Lodash 函数库。...四、总结 对于这类开放问题仁者见仁,智者见智,我相信每个人都会有自己的看法,也会有自己一套独特的方法。不管黑猫白猫,能抓住老鼠的就是好猫。对于程序员来说,能减少 Bug 的方法就是好方法。...程序员群体流传一句话:不写代码就有没有 Bug。 我们不能因为怕犯错误而减少写代码,更应该知难而上,越挫越勇。要知道日常开发中 「Bug 是不可避免的,只能减少」。

    89000
    领券