• 到底怎样写 try-catch,才能称之为高手?
    try-catch,一个大家最常见不过的语法,但是有些人却用不好。乱用try-catch写过C++的人都知道,那异常捕获特别不好用,甚至有些异常还捕获不了,在Java中,try-catch特别好使,如果一个人的代码没有try-catch,有时候会被大家质疑代码写的不健壮。try-catch虽好,但不可乱用,原因在于try-catch可以隐藏代码缺陷,不利于bug排查。如果没有try-catch,那程序会崩溃,崩溃后从日志中可以一眼看出问题的原因。
  • 使用 Elastic Beats 搜集日志到 Pulsar
    本文主要涉及 Beats 和 Pulsar 服务的搭建、测试、数据的发送及消费。关于 Apache Pulsar 和 Elastic BeatsApache Pulsar 是一个分布式消息发布订阅系统。Elastic Beats 集合了多种单一用途数据采集器。Elastic Beats 包括 Filebeat、Metricbeat、Functionbeat、Winlogbeat、Journalbeat 和 Auditbeat,本项目开发的 Output 适用于以上所有 Beat。本次试验以 Filebeat 的使用为例。初始化网络在测试中 Beats 到 Pulsar 的网络环境必须是相通的,因此需要提前初始化网络。1dockernetworkcreatepulsar-beat该命令会创建一个名为 pulsar-beat 的网络,之后 Pulsar 服务和 Beats 都会连接到该网络。安装测试单机模式下安装 Pulsar为方便测试,本次使用单机模式安装 Pulsar,并使用 Docker 镜像 apachepulsar/pulsar:2.3.0 启动服务。新开一个窗口,拉取 Pulsar 的镜像并启动服务。
  • Advanced Design System ADS 2020 射頻、微波和信号完整性仿真软件下载
    Advanced Design System 2020 已经发布一段时间了,高级软件设计系统 ADS 是领先的电子设计自动化软件,适用于射频、微波和信号完整性应用。ADS 2020 依然保持与 ADS 2019 一致的安装步骤,老wu这里复用一下之前发表过的ADS 2019的安装方法贴在这里,然后稍作调整。默认的安装路径为:“C:\Program Files\Keysight\”, 大家也可以通过开始菜单的快捷方式,鼠标右键点击”Advanced Design System 2020″这个图标,在弹出的菜单中选择“属性”-》“打开文件位置”找到ADS 2020的安装路径。
  • JAVA上机实验笔记
    JAVA上机实验习题解答,不保证一定是正确的,仅供参考。若文中存在错误,请及时指出。没什么好说的,直接写就行了。= 1) // 如果不符合角谷猜想则会陷入死循环。System.out.println(x + " 符合角谷猜想。
  • System.currentTimeMillis()竟然存在性能问题,这我能信?
    但是令人没想到的是,除了精度问题,竟还存在性能问题。System.currentTimeMillis()是极其常用的基础Java API,广泛地用来获取时间戳或测量代码执行时长等,在我们的印象中应该快如闪电。publicclassCurrentTimeMillisPerfDemo{privatestaticfinalintCOUNT=100;publicstaticvoidmainthrowsException{longbeginTime=System.nanoTime();for{System.currentTimeMillis();}longelapsedTime=System.nanoTime()-beginTime;System.out.println;CountDownLatchstartLatch=newCountDownLatch;CountDownLatchendLatch=newCountDownLatch;for{newThread.start();}beginTime=System.nanoTime();startLatch.countDown();endLatch.await();elapsedTime=System.nanoTime()-beginTime;System.out.println;}}执行结果如下图。可见,并发调用System.currentTimeMillis()一百次,耗费的时间是单线程调用一百次的250倍。实际上在极端情况下,System.currentTimeMillis()的耗时甚至会比创建一个简单的对象实例还要多,看官可以自行将上面线程中的语句换成new HashMap<>之类的试试看。来到HotSpot源码的hotspot/src/os/linux/vm/os_linux.cpp文件中,有一个javaTimeMillis()方法,这就是System.currentTimeMillis()的native实现。TSC计时器性能较好,因为有专用的寄存器来保存时间戳。关于HPET和TSC的细节可以参见https://en.wikipedia.org/wiki/High_Precision_Event_Timer与https://en.wikipedia.org/wiki/Time_Stamp_Counter。~cat/sys/devices/system/clocksource/clocksource0/available_clocksourcetschpetacpi_pm~cat/sys/devices/system/clocksource/clocksource0/current_clocksourcetsc~echo'hpet'>/sys/devices/system/clocksource/clocksource0/current_clocksource如何解决这个问题?
  • 不敢相信?System.currentTimeMillis()存在性能问题
    可见,并发调用System.currentTimeMillis()一百次,耗费的时间是单线程调用一百次的250倍。实际上在极端情况下,System.currentTimeMillis()的耗时甚至会比创建一个简单的对象实例还要多,看官可以自行将上面线程中的语句换成new HashMap<>之类的试试看。来到HotSpot源码的hotspot/src/os/linux/vm/os_linux.cpp文件中,有一个javaTimeMillis()方法,这就是System.currentTimeMillis()的native实现。jlong os::javaTimeMillis() { timeval time; int status = gettimeofday; assert(status != -1, "linux error"); return jlong * 1000 + jlong;}挖源码就到此为止,因为已经有国外大佬深入到了汇编的级别来探究,详情可以参见《The Slow currentTimeMillis()》这篇文章。关于HPET和TSC的细节可以参见https://en.wikipedia.org/wiki/HighPrecisionEventTimer与https://en.wikipedia.org/wiki/TimeStamp_Counter。~ cat /sys/devices/system/clocksource/clocksource0/available_clocksourcetsc hpet acpi_pm~ cat /sys/devices/system/clocksource/clocksource0/current_clocksourcetsc~ echo 'hpet' > /sys/devices/system/clocksource/clocksource0/current_clocksource如何解决这个问题?
  • 只知道用它打印了Hello World,除此之外你了解多少呢?
    System.out.println() 结构图如下:以下是JDK源中System.out.println的骨架结构,和代码片段。在启动时由java运行时环境初始化,并且可以在执行期间由开发人员更改。当我们运行性能分析时,运行多个System.out.println并记录时间,执行时间会按比例增加。当打印超过50个字符并打印超过50,000行时,性能下降。不过无论如何请勿使用System.out.println打印日志到stdout。但当我们开发生产质量软件时,我们应该注意到应该使用记录组件,并且应该避免使用System.out.println。例如,X消息只能在PRODUCTION上打印,Y消息应打印在ERROR等上。'err'与PrintStream相关联,并将参数打印到标准错误输出流。
  • 不敢相信?System.currentTimeMillis()存在性能问题
    System.currentTimeMillis()是极其常用的基础Java API,广泛地用来获取时间戳或测量代码执行时长等,在我们的印象中应该快如闪电。可见,并发调用System.currentTimeMillis()一百次,耗费的时间是单线程调用一百次的250倍。实际上在极端情况下,System.currentTimeMillis()的耗时甚至会比创建一个简单的对象实例还要多,看官可以自行将上面线程中的语句换成new HashMap<>之类的试试看。来到HotSpot源码的hotspot/src/os/linux/vm/os_linux.cpp文件中,有一个javaTimeMillis()方法,这就是System.currentTimeMillis()的native实现。= -1, "linux error"); return jlong * 1000 + jlong;}挖源码就到此为止,因为已经有国外大佬深入到了汇编的级别来探究,详情可以参见《The Slow currentTimeMillis()》这篇文章。关于HPET和TSC的细节可以参见https://en.wikipedia.org/wiki/HighPrecisionEventTimer与https://en.wikipedia.org/wiki/TimeStamp_Counter。~ cat /sys/devices/system/clocksource/clocksource0/available_clocksourcetsc hpet acpi_pm~ cat /sys/devices/system/clocksource/clocksource0/current_clocksourcetsc~ echo 'hpet' > /sys/devices/system/clocksource/clocksource0/current_clocksource如何解决这个问题?
  • System.currentTimeMillis()竟然存在性能问题,这我能信?
    但是令人没想到的是,除了精度问题,竟还存在性能问题。System.currentTimeMillis()是极其常用的基础Java API,广泛地用来获取时间戳或测量代码执行时长等,在我们的印象中应该快如闪电。publicclassCurrentTimeMillisPerfDemo{privatestaticfinalintCOUNT=100;publicstaticvoidmainthrowsException{longbeginTime=System.nanoTime();for{System.currentTimeMillis();}longelapsedTime=System.nanoTime()-beginTime;System.out.println;CountDownLatchstartLatch=newCountDownLatch;CountDownLatchendLatch=newCountDownLatch;for{newThread.start();}beginTime=System.nanoTime();startLatch.countDown();endLatch.await();elapsedTime=System.nanoTime()-beginTime;System.out.println;}}执行结果如下图。可见,并发调用System.currentTimeMillis()一百次,耗费的时间是单线程调用一百次的250倍。实际上在极端情况下,System.currentTimeMillis()的耗时甚至会比创建一个简单的对象实例还要多,看官可以自行将上面线程中的语句换成new HashMap<>之类的试试看。来到HotSpot源码的hotspot/src/os/linux/vm/os_linux.cpp文件中,有一个javaTimeMillis()方法,这就是System.currentTimeMillis()的native实现。TSC计时器性能较好,因为有专用的寄存器来保存时间戳。关于HPET和TSC的细节可以参见https://en.wikipedia.org/wiki/High_Precision_Event_Timer与https://en.wikipedia.org/wiki/Time_Stamp_Counter。~cat/sys/devices/system/clocksource/clocksource0/available_clocksourcetschpetacpi_pm~cat/sys/devices/system/clocksource/clocksource0/current_clocksourcetsc~echo'hpet'>/sys/devices/system/clocksource/clocksource0/current_clocksource如何解决这个问题?
  • Java 大神的十个私藏避坑绝技
    publicclassChange{ publicstaticvoidmain{ System.out.println; }}从主观上看, 打印的结果必然是0.90, 然后这却是一个主观错误.对于1.10这个数, 计算机只会使用近似的二进制浮点数表示, 产生精度影响.从上面的例子中来看, 1,10在计算机中表示为1.099999, 这个1.10并没有在计算机中得到精确的表示.针对这个精度问题, 我们可能会选择: System.out.printf;解决, 尽管打印出来的是正确答案, 但是依旧会暴露出一个问题: 如果精度控制在2.00 - 1.0010; 那么精度误差依旧会出现.这里也说明了: 使用printf, 计算机底层依旧是使用二进制的方式来计算, 只不过这种计算提供了更好的近似值而已.那么应该怎么解决这个问题呢?
  • JDK 13 新特性一览
    点击上方“Java知音”,选择“置顶公众号”技术文章第一时间送达!应用程序在执行期间可能具有非常不同的堆空间要求。将此功能添加到ZGC将受到同一组用户的欢迎。新的实 现很容易适应用户模式线程,也就是光纤,目前正在Project Loom中进行探索。动机:在java.net.Socket和java.net.ServerSocketAPI,以及它们的底层实现,可以追溯到JDK 1.0。该实现使用本机数据 结构来支持异步关闭,这是多年来微妙可靠性和移植问题的根源。>)已使用现有newFileSystem并指定类加载器 的代码创建源兼容性问题。
  • 【先睹为快】JDK 13 新特性一览!
    应用程序在执行期间可能具有非常不同的堆空间要求。例如,启动期间所需的堆可能大于稳态执行期间稍后所需的堆。将此功能添加到ZGC将受到同一组用户的欢迎。新的实现很容易适应用户模式线程,也就是光纤,目前正在Project Loom中进行探索。动机:在java.net.Socket和java.net.ServerSocketAPI,以及它们的底层实现,可以追溯到JDK 1.0。该实现使用本机数据 结构来支持异步关闭,这是多年来微妙可靠性和移植问题的根源。
  • 如何减少长时间的 GC 停顿?
    采取以下步骤以确保 GC 停顿时间最少且最短。长时间的 GC 停顿对应用程序是不利的,它会影响服务的 SLA,进而导致糟糕的用户体验,并对核心应用程序的服务造成严重损害。因此,在本文中,我列出了导致长时间 GC 停顿的关键原因以及解决这些问题的可能的解决方案。因此,优化应用程序以创建更少的对象是减少长 GC 停顿的有效策略。因此,增加年轻代的大小有可能减少长时间的 GC 停顿。考虑增加 GC 线程数。但它仍然会导致应用程序遭受长时间的 GC 停顿。
  • JDK 13 新特性一览
    应用程序在执行期间可能具有非常不同的堆空间要求。例如,启动期间所需的堆可能大于稳态执行期间稍后所需的堆。将此功能添加到ZGC将受到同一组用户的欢迎。新的实 现很容易适应用户模式线程,也就是光纤,目前正在Project Loom中进行探索。动机:在java.net.Socket和java.net.ServerSocketAPI,以及它们的底层实现,可以追溯到JDK 1.0。该实现使用本机数据 结构来支持异步关闭,这是多年来微妙可靠性和移植问题的根源。>)已使用现有newFileSystem并指定类加载器 的代码创建源兼容性问题。
  • 偷偷告诉你,这样可以减少长时间的 GC 停顿
    采取以下步骤以确保 GC 停顿时间最少且最短。长时间的 GC 停顿对应用程序是不利的,它会影响服务的 SLA,进而导致糟糕的用户体验,并对核心应用程序的服务造成严重损害。因此,优化应用程序以创建更少的对象是减少长 GC 停顿的有效策略。因此,增加年轻代的大小有可能减少长时间的 GC 停顿。因此,在增加 GC 线程数之前,需要进行充分的测试。但它仍然会导致应用程序遭受长时间的 GC 停顿。在 Full GC 期间,整个 JVM 被冻结(即在
  • JDK 13 新特性一览
    应用程序在执行期间可能具有非常不同的堆空间要求。例如,启动期间所需的堆可能大于稳态执行期间稍后所需的堆。将此功能添加到ZGC将受到同一组用户的欢迎。新的实 现很容易适应用户模式线程,也就是光纤,目前正在Project Loom中进行探索。动机:在java.net.Socket和java.net.ServerSocketAPI,以及它们的底层实现,可以追溯到JDK 1.0。该实现使用本机数据 结构来支持异步关闭,这是多年来微妙可靠性和移植问题的根源。>)已使用现有newFileSystem并指定类加载器 的代码创建源兼容性问题。
  • JDK13新特性!你了解多少?看这里!
    点击上方“Java学习”,选择“置顶公众号”技术文章第一时间送达!应用程序在执行期间可能具有非常不同的堆空间要求。例如,启动期间所需的堆可能大于稳态执行期间稍后所需的堆。将此功能添加到ZGC将受到同一组用户的欢迎。动机:在java.net.Socket和java.net.ServerSocketAPI,以及它们的底层实现,可以追溯到JDK 1.0。该实现使用本机数据 结构来支持异步关闭,这是多年来微妙可靠性和移植问题的根源。该实现还有几个并发问题,需要进行大修才能正确解决。>)已使用现有newFileSystem并指定类加载器 的代码创建源兼容性问题。
  • Apple 在 iOS 13.1 中使用 Swift 开发的应用程序
    Python开发点击右侧关注,探讨技术话题!作者 | Timac来源 | https://blog.timac.org来源公众号丨知识小集Swift 是在 Apple WWDC 2014 上推出的,看看 Apple 自己在 iOS 中 Swift 的使用度是件很有意思事件。2015 年发布的 iOS 9 仅包含一个用 Swift 编写的应用程序 Calculator。从那时起,iOS 10.1,iOS 11.1 和 iOS 12.0 中使用 Swift 的应用程序数量逐年增加。检测方法在先前的文章中已经详细介绍了本文使用的检测方法和工具。如果您有兴趣,请参阅 Apple’s use of Swift in iOS 10.1 and macOS 10.121。iOS 13.1 中的 Swift以下是在 iOS 13.1 中使用 Swift 的所有二进制文件的列表。请注意,这些二进制文件可能只包含一行 Swift 代码,不一定完全用 Swift 编写。
  • JDK13新特性详解
    应用程序在执行期间可能具有非常不同的堆空间要求。例如,启动期间所需的堆可能大于稳态执行期间稍后所需的堆。将此功能添加到ZGC将受到同一组用户的欢迎。新的实现很容易适应用户模式线程,也就是光纤,目前正在Project Loom中进行探索。动机:在java.net.Socket和java.net.ServerSocketAPI,以及它们的底层实现,可以追溯到JDK 1.0。该实现使用本机数据结构来支持异步关闭,这是多年来微妙可靠性和移植问题的根源。该实现还有几个并发问题,需要进行大修才能正确解决。
  • JDK 13 新特性详解
    应用程序在执行期间可能具有非常不同的堆空间要求。例如,启动期间所需的堆可能大于稳态执行期间稍后所需的堆。将此功能添加到ZGC将受到同一组用户的欢迎。新的实现很容易适应用户模式线程,也就是光纤,目前正在Project Loom中进行探索。动机:在java.net.Socket和java.net.ServerSocketAPI,以及它们的底层实现,可以追溯到JDK 1.0。该实现使用本机数据结构来支持异步关闭,这是多年来微妙可靠性和移植问题的根源。该实现还有几个并发问题,需要进行大修才能正确解决。
活跃用户
《科技日报》是富有鲜明科技特色的综合性日报,是面向国内外公开发行的中央主流新闻媒体,是党和国家在科技领域的重要舆论前沿,是广大读者依靠科技创造财富、提升文明、刷新生活的服务平台,是中国科技界面向社会、连接世界的明亮窗口。
TechWeb专注于互联网消费领域,每日专业提供互联网产品、智能设备及互联网服务等方面的最新资讯。
数字生活家,手机新娱乐
《中国银行保险报》是中国银行保险监督管理委员会主管唯一工作日报。
数字公民的糖
专业的中文 IT 技术社区,与千万技术人共成长。
腾讯新闻旗下腾讯科技官方账号,在这里读懂科技!
凤凰科技频道官方账号,带你直击真相。
从思考,到创造
让创业者不再孤独@i黑马
雷锋网,读懂智能&amp;未来。
用极客视角,追踪你最不可错过的科技圈。有快闻、也有洞见;有脑洞、也有思考。
最好的中文人物报道
36氪是中国领先的新商业媒体,提供新锐深度的商业报道。我们强调趋势与价值,我们的slogan是:让一部分人先看到未来。
计算机网络学习从入门到精通
SegmentFault 思否 ( sifou.com ) 是中国领先的开发者社区。我们希望为中文开发者提供一个纯粹、高质的技术交流平台,帮助更多的开发者获得成长与成功。
每天分享 Python 干货,后台回复「1024」,送你特别推送。
中国企业IT人交流的技术社区
分享程序员生活点滴以及程序员各种吐槽。这里没有具体技术讲解,只有幽默、职场、规划、学习路线、学习方法总结。输入相关关键词可以获得相应的文章,输入m获取全部文章编号。
有影响力的程序员自媒体,关注程序员相关话题:程序人生、IT技术、IT职场、学习资源等。