Future和CompletableFuture解析与使用

一、Future模式Java1.5开始,提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。Future接口可以构建异步应用,是多线程开发中常见的设计模式。当我们需要调用一个函数方法时。如果这个函数执行很慢,那么我们就要进行等待。但有时候,我们可能并不急着要结果。因

DirectByteBuffer与MappedByteBuffer

在此之前,我一直以为这两个类之间是完全不同的东西,因为他们的理念并不相同,一个是在堆外分配内存,一个是使用内存映射(虽然其也是占用了堆外内存),先引用大佬的文章占小狼:深入浅出MappedByteBuffer前言javaio操作中通常采用BufferedReader,BufferedInputStr

字节码增强技术-Byte Buddy

字节码增强技术-ByteBuddy为什么需要在运行时生成代码?Java是一个强类型语言系统,要求变量和对象都有一个确定的类型,不兼容类型赋值都会造成转换异常,通常情况下这种错误都会被编译器检查出来,如此严格的类型在大多数情况下是比较令人满意的,这对构建具有非常强可读性和稳定性的应用有很大的帮助,这也

JNDI注入原理及利用

前言本篇讲述了RMI-JNDI注入的利用原理,分析了利用流程;使用了marshalsec反序列化工具去简单的起一个RMI/LDAP服务端对于导致JNDI注入的漏洞代码扩展至com.sun.rowset.JdbcRowSetImpl函数,为fastjson反序列化起一个引子,准备新起一文。分析了jav

Java8 Stream

Java中的Stream可以定义为来自源的一系列元素,这些元素支持对它们的聚合操作。这里的源是指向流提供数据的Collection或Array。Stream保持数据在源中的顺序。该聚合操作或批量操作是操作这让我们很容易和清楚地表达对流元素共同操作。在继续之前,了解Java8Streams的设计方式使

关于Java性能的9个谬论

Java的性能有某种黑魔法之称。部分原因在于Java平台非常复杂,很多情况下问题难以定位。然而在历史上还有一种趋势,人们靠智慧和经验来研究Java性能,而不是靠应用统计和实证推理。在这篇文章中,我希望拆穿一些最荒谬的技术神话。 1.Java很慢 关于Java的性能有很多谬论,这一条是最过时的,可能也是最为明显的。 确实,在上世纪90年代和本世纪初处,Java有时是很慢。

推荐给初级Java程序员的3本进阶书

原作者在这篇文章中介绍3本不错的技术书籍。作者认为这些书籍对新手或者学生而言尤其有帮助。通过一些基础性的教程入门后,我们可以使用Java做基础性的编程。然而,当我们需要从初级提升更高的一个层次时,大多数的人却不知道从何入手。一些好的书籍在这个阶段可以很好地帮助初级开发人员。

Java深度历险(二)——Java类的加载、链接和初始化

在上一篇文章中介绍了Java字节代码的操纵,其中提到了利用Java类加载器来加载修改过后的字节代码并在JVM上执行。本文接着上一篇的话题,讨论Java类的加载、链接和初始化。Java字节代码的表现形式是字节数组(byte[]),而Java类在JVM中的表现形式是java.lang.Class类的对象。一个Java类从字节代码到能够在JVM中被使用,需要经过加载、链接和初始化这三个步骤。这三个步骤中

Java编程:常见问题汇总

该页面收集了一些不好的代码,对于初学者来说看起来似乎并不那么糟糕。初学者经常在语言语法上挣扎。他们对标准JDK类库以及如何最好地利用它也不了解。实际上,我已经从日常初级代码中收集了所有示例。我已经修改了原始代码,为它提供了示例字符,从而突出了问题所在。SonarQube可以很容易地发现许多这些问题。我强烈推荐此工具。

异常以及异常处理框架探析

摘要:本文主要与您探讨异常以及异常处理相关方面的一些知识,主要包括检查异常与非检查异常的理解,多视角观察理解异常,进而探讨关于构建稳健且可扩展的异常框架方面的一些设计原则。   概述   一般情况下,企业级应用都对应着复杂的业务逻辑,为了保证系统的健壮,必然需
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×