应用程序失败的原因有很多,有一些工具可以解决每一个可能的错误源,例如日志管理工具、错误跟踪器、性能监视解决方案等等。在下面的文章中,我们将介绍一些工具,这些工具专注于检测和预测异常何时可能发生。 1. X-Pack X-Pack是麋鹿堆栈的扩展...
前言 最近翻看以前写的 PPT, 发现了在2019年做的一次技术分享,关于 Java 问题排查,由于没什么公司机密可言,整理下分享给大家~ 线上问题处理流程 直接放PPT截图吧,现在看来依然不过时。 问题排查 可从三个方面入手 · 知识:有些...
今天做文件上传功能,需求要求文件内容相同的不能重复上传。感觉这个需求挺简单的就交给了一位刚入行的新同学。等合并代码的时候发现这位同学居然用文件名称相同和文件大小相同作为两个文件相同的依据。这种条件判断靠谱吗? 从概率上来说遇到两个文...
很多时候我们需要将一个类的实例变成二进制数据存储或是通过网络发送,这个过程叫序列化。如果将二进制数据解析成位于内存中的类实例或是相关数据结构,那叫反序列化。所有的序列化算法都遵循一定的套路,例如: class A { publi...
大家都知道当我们在进行条件判断的时候除了可以使用 if-else 之外,还可以是用 switch,而且在 JDK 7 之后在 switch 中还增加了 String 类型的支持,如下代码所示。 public static void testSwitch(String language) { &nbs...
前言 由于线程的创建和销毁对操作系统来说都是比较重量级的操作,所以线程的池化在各种语言内都有实践,当然在 Java 语言中线程池是也非常重要的一部分,有 Doug Lea 大神对线程池的封装,我们使用的时候是非常方便,但也可能会因为不了解其具体实现...
函数式配置概览 为了满足更加方便的配置,Retryer 类提供了许多可以配置的信息。 默认配置 /** * 默认配置测试 */ public void defaultConfigTest() { Retryer.<String>newInstan...
原来我一直将java当做不用delete的c++来用,但是最近在工作上遇到一些问题,发现这样的做法不管用,因为工作上遇到的java代码采用了很多框架,例如spring boot之类。当我想深入了解这些框架的设计原理时发现,如果不了解java的高级语法特性,这些框架的...
写在前面 Java8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理集合数据。Stream API可以极大提高Java程序员的生产力,让我们写出高效率、干净、简洁的代码。 这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且...
重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不...
如何使用 Java 开发工具包中的 Java 监控和管理控制台。 Java 开发工具包(JDK)提供了开发 Java 应用程序的二进制文件、工具和编译器。其中一个有用的工具是 jconsole。 为了演示,我将使用 WildFly J2EE 应用服务器,它是 JBOSS 开源应用服务器...
Java 11是自Java 8以来的又一个LTS版本,是目前全球使用最多的LTS版本之一。今天我们接着在Java 9 到 Java 17系列文章中来认识针对普通开发者的Java 11。 字符串API增强 在Java 11中,针对String的操作进一步得到加强。避免我们在很常见的场景中...
前言 了解类加载的过程,有利于在类初始化时进行一些功能操作;本文全面讲解类加载过程。 一、类加载介绍 1、类加载生命周期 从类被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期分为7个阶段,加载(Loading)、验证(Verifica...
一、介绍 在实际的业务开发的时候,研发人员往往会碰到很多这样的一些场景,需要提供相关的电子凭证信息给用户,例如网银/支付宝/微信购物支付的电子发票、订单的库存打印单、各种电子签署合同等等,以方便用户查看、打印或者下载。 例如下图的电...
今天下班的路上,看到有人问这样一个问题: 我看到这个问题的第一眼也有点懵。 但如果把问题换成以下代码,答案对于我来说还是非常清晰的。 String str = "test" + "1"; 但是当一个字符串和一个整数相加时,会创建几个对象呢? 作...
近日浏览网上一些图片提取文字的网站,觉得甚是有趣,花费半日也做了个在线图片识别程序,完成了两个技术方案的选择,一是 tesseract + Python flask的方案实现,二是 tesseract + Spring web 的技术解决方案,并简作论述,与君共勉。 一、tesserac...
一、Collection类 (一)在程序开发中,对集合的操作使用的比较多。在集合中进行对元素的排序,查找集合中的某个元素,替换集合中的元素等。 (二)集合中对元素排序的方法: 1.boolean addAll(Collection c)方法是把指定集合中所有元素添加到这个...
Java核心反射机制 基本反射 反射是一种动态类的处理机制,通过 Class类 来实现反射机制; Class类的基本信息: Module java.base Package java.lang Class Class<T> &...
问题现象 最近,笔者负责测试的某个算法模块机器出现大量报警,报警表现为机器CPU持续高占用。该算法模块是一个优化算法,本身就是CPU密集型应用,一开始怀疑可能是算法在正常运算,但很快这种猜测就被推翻:同算法同学确认后,该算法应用只使用了一...
日志框架分为三大部分,包括日志门面、日志适配器、日志库。利用门面设计模式,即Facade来进行解耦,使日志使用变得更加简单,如下图: 日志门面 门面设计模式是面向对象设计模式中的一种,日志框架采用的就是这种模式,类似JDBC的设计理念。它只...