java技术圈 为您找到相关结果 360

Java的BigDecimal如何解决浮点数精度问题_Just for Fun LA

如题,今天我们来看下java.math.BigDecimal是如何解决浮点数的精度问题的,在那之前当然得先了解下浮点数精度问题是什么问题了。下面我们先从IEEE 754说起。 IEEE 754 IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number)),一些特殊数值(无穷(Inf)与非数值(NaN)),以及这些数值的“浮点数运算符”;它也指明了四种数值舍入规则和五种异常状况(包括异常发生的时机与处理方式)。 下面我们就以双精度,也就是double类型,为例来看看浮点数的格式。 signexponentfraction1位11位52位...阅读全文

博文 2020-09-29 03:41:26 CSDN博客

Java工程师高薪训练营

download:Java工程师高薪训练营 public static boolean isWifiEnabled(Context context) { ConnectivityManager mgrConn = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); TelephonyManager mgrTel = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); return ((mgrConn.getActiveNetworkInfo() != null && mgrConn .getAc...阅读全文

博文 2021-06-25 10:16:13 kakayin123

入侵JVM? Java Agent原理浅析和实践

在平时的开发中,我们不可避免的会使用到Debug工具,JVM作为一个单独的进程,我们使用的Debug工具可以获取JVM运行时的相关的信息,查看变量值,甚至加入断点控制,还有我们平时使用JDK自带的JMAP、JSTACK等工具,可以在JVM运行时动态的dump内存、查询线程信息,甚至一些第三方的工具,比如说京东内部使用的JEX、pfinder,阿里巴巴的Arthas,优秀的开源的框架skywalking等等,也可以做到这些,那么这些工具究竟是通过什么技术手段来实现对JVM的监控和动态修改呢?本文会进行介绍和简单的原理分析,同时附带一些样例代码来进行分析。从JVMTI说起JVM在设计之初,就考虑到了虚拟机状态的监控、debug、线程和内存分析等功能,在JDK5.0之前,JVM规范就定义了JVMP...阅读全文

博文 2020-07-14 02:26:30 mp.weixin.qq.com

Elasticsearch Java API的基本使用

Elasticsearch Java API的基本使用说明 在明确了ES的基本概念和使用方法后,我们来学习如何使用ES的Java API. 本文假设你已经对ES的基本概念已经有了一个比较全面的认识。 客户端 你可以用Java客户端做很多事情: 执行标准的index,get,delete,update,search等操作。 在正在运行的集群上执行管理任务。 但是,通过官方文档可以得知,现在存在至少三种Java客户端。 Transport Client Java High Level REST Client Java Low Level Rest Client 造成这种混乱的原因是: 长久以来,ES并没有官方的Java客户端,并且Java自身是可以简单支持ES的API的,于是就先做成了Trans...阅读全文

博文 2020-11-29 08:39:46 简书

NullPointerException 没有堆栈 - cdfive

周五在公司搭好的ELK上查看日志,组长让看看其中NullPointerException出现很多的原因。 通过NullPointerException搜索,点看其中一个查看,发现异常的信息就一行java.lang.NullPointerException,并没有堆栈信息。 看了几个都没有,然后翻代码看记日志的地方,调用了日志基础工程的一个方法,异常对象通过封装传了进去,其中异常信息属性取值用的是Throwables.getStackTraceAsString(e),这是guava包提供的方法,点进去看是取了所有堆栈信息的。 那么问题来了,为什么堆栈信息没显示出来呢? 百度了下,关键字:NullPointerException 没有堆栈 找到类似的问题,发现是JVM虚拟机对异常信息进行了优化,...阅读全文

博文 2021-09-24 03:42:35 博客园

老大难的GC原理及调优,这下全说清楚了

概述 本文介绍GC基础原理和理论,GC调优方法思路和方法,基于Hotspot jdk1.8,学习之后将了解如何对生产系统出现的GC问题进行排查解决 阅读时长约30分钟,内容主要如下: GC基础原理,涉及调优目标,GC事件分类、JVM内存分配策略、GC日志分析等 CMS原理及调优 G1原理及调优 GC问题排查和解决思路 GC基础原理 1 GC调优目标 大多数情况下对 Java 程序进行GC调优, 主要关注两个目标:响应速度、吞吐量 响应速度(Responsiveness) 响应速度指程序或系统对一个请求的响应有多迅速。比如,用户订单查询响应时间,对响应速度要求很高的系统,较大的停顿时间是不可接受的。调优的重点是在短的时间内快速响应 吞吐量(Throughput) 吞吐量关注在一个特定时间段内应...阅读全文

博文 2020-07-31 03:38:28 掘金

hadoop中MapReduce多种join实现实例分析-蚂蚁

一、概述 对于RDBMS中的join操作大伙一定非常熟悉,写sql的时候要十分注意细节,稍有差池就会耗时巨久造成很大的性能瓶颈,而在Hadoop中使用MapReduce框架进行join的操作时同样耗时,但是由于hadoop的分布式设计理念的特殊性,因此对于这种join操作同样也具备了一定的特殊性。本文主要对MapReduce框架对表之间的join操作的几种实现方式进行详细分析,并且根据我在实际开发过程中遇到的实际例子来进行进一步的说明。二、实现原理1、在Reudce端进行连接。 在Reudce端进行连接是MapReduce框架进行表之间join操作最为常见的模式,其具体的实现原理如下:Map端的主要工作:为来自不同表(文件)的key/value对打标签以区别不同来源的记录。然后用连接字段作为...阅读全文

博文 2020-08-31 02:28:56 51CTO博客

主流数字证书有哪些格式?_SSL证书管理 SCM_常见问题_咨询类_华为云

主流的Web服务软件,通常都基于OpenSSL和Java两种基础密码库。 Tomcat、Weblogic、JBoss等Web服务软件,一般使用Java提供的密码库。通过Java Development Kit(JDK)工具包中的Keytool工具,生成Java Keystore(JKS)格式的证书文件。Apache、Nginx等Web服务软件,一般使用OpenSSL工具提供的密码库,生成PEM、KEY、CRT等格式的证书文件。IBM的Web服务产品,如Websphere、IBM Http Server(IHS)等,一般使用IBM产品自带的iKeyman工具,生成KDB格式的证书文件。微软Windows Server中的Internet Information Services(IIS)服务,...阅读全文

博文 2021-09-08 02:29:12 support.huaweicloud.com

Netty 中的 Future & Promise

Netty 源码中大量使用了异步编程,从代码实现角度看就是大量使用了线程池和 Future。熟悉 Java 5 的同学一定对 Future 不陌生。简单来说就是其代表了一个异步任务,任务将在未来某个时刻完成,而 Future 这个接口就是用来提供例如获取接口、查看任务状态等功能。Netty 扩展了 Java 5 引入的 Future 机制。从下面的类图我们可以看到相关类的关系:Netty 的 Future 接口需要注意的是,上面类图中有两个 Future,最上面的是 java.util.concurrent.Future,而其下面的则是 io.netty.util.concurrent.Future。JDK 的 Future 对象,该接口的方法如下:// 取消异步操作 boolean can...阅读全文

博文 2021-08-29 03:33:12 www.linkedkeeper.com

JDK 9学习笔记 - (2)能屈能伸的String

背景String作为JDK最核心的数据类型之一,非常有必要专门学习一下,重点关注这4个文件jdk/src/java.base/share/native/libjava/String.cjdk/src/java.base/share/classes/java/lang/String.javajdk/src/java.base/share/classes/java/lang/StringLatin1.javajdk/src/java.base/share/classes/java/lang/StringUTF16.java存储无论是何种语言的何种实现,String本质上都是字节序列,所有可能的字符加起来就构成了字符集,给字符集中每个字符一个序号就是字符编码,使用最广泛的就是Unicode了,它几...阅读全文

博文 2020-06-11 04:52:36 知乎

Java8中的“菱形继承”问题_潇兮水寒的博客

Java中的“菱形继承”问题 什么是菱形继承Java代码场景一场景二 简单结论解决办法 什么是菱形继承 一张图说明。在C++中允许多继承,D类继承自B、C,而B、C有同一个父类A。那么这个时候调用say方法是否成功?答案是不能,编译器并不能判断这个say来自哪个父类。 #include using namespace std; class A{ public: void say(){ cout<<"Say Hello"<阅读全文

博文 2021-06-11 13:43:50 CSDN博客_java菱形继承

Filter、FilterChain、FilterConfig 介绍

一、Filter 的基本工作原理 1、Filter 程序是一个实现了特殊接口的 Java 类,与 Servlet 类似,也是由 Servlet 容器进行调用和执行的。 2、当在 web.xml 注册了一个 Filter 来对某个 Servlet 程序进行拦截处理时,它可以决定是否将请求继续传递给 Servlet 程序,以及对请求和响应消息是否进行修改。 3、当 Servlet 容器开始调用某个 Servlet 程序时,如果发现已经注册了一个 Filter 程序来对该 Servlet 进行拦截,那么容器不再直接调用 Servlet 的 service 方法,而是调用 Filter 的 doFilter 方法,再由 doFilter 方法决定是否去激活 service 方法。 4、但在 Filt...阅读全文

博文 2020-06-29 03:52:37 菜鸟教程

JDWP 协议及实现 – IBM Developer

byte 1 byte byte 值。 boolean 1 byte 布尔值,0 表示假,非零表示真。 int 4 byte 4 字节有符号整数。 long 8 byte 8 字节有符号整数。 objectID 依据 target Java 虚拟机而定,最大 8 byte Target Java 虚拟机中对象(object)的唯一 ID。这个值在整个 JDWP 的会话中不会被重用,始终指向同一个对象,即使该对象已经被 GC 回收(引用被回收的对象将返回 INVALID_OBJECT 错误。 Tagged-objectID objectID 的长度加 1 第一个 byte 表示对象的类型,比如,整型,字符串,类等等。紧接着是一个 objectID。 threadID 同 objectID 的长...阅读全文

博文 2020-08-13 06:42:57 developer.ibm.com

java反射机制执行Bean中的方法_W_DongQiang的博客

步骤: 一:获取到bean的class实例,方式分两种, 1.通过spring注入的:通过Spring上下文获取到需要代理执行的class实例 Class selectsClass = SpringContextUtils.getBean("beanName").getClass(); 2.没使用spring注入的:通过Class.forName初始化加载bean Class selectsClass= Class.forName(TableSelectsUtil.class.getName()); 二:通过方法名从class实例中获取方法实例 Method method = selectsClass.getMethod("getAll", new Class[] {String.class...阅读全文

博文 2021-06-07 12:59:55 CSDN博客

Flink task和subTask_大数据私房菜的博客

Flink-Task、SubTask、并行度 ldc2013的博客 08-01 292 Task与SubTask 一个算子就是一个Task. 一个算子的并行度是几,这个Task就有几个SubTask 对应关系: 算子=Task 并行度=SubTask task是抽象概念,subtask是物力概念 Parallelism并行度 默认并行度--cpu核数 关键点 不同的并行度(subtask),肯定在不同的slot,但也可能在不同的taskmanager 一个流程序的并行度,可以认为就是其所有算子中算子并行度最大的并行度 数据传输模式: One-to-one:. 【白话Flink基础理论】Flink运行时(Runtime)架构(三)并行度&Task&SubTask&Slot&Flink中的并行剖...阅读全文

博文 2022-08-04 06:54:20 CSDN博客_flink subtask

如何查看jvm中的各种参数以及默认值_wisgood的专栏

1 标准参数 标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容; 通过命令 java即可查看 如下 where options include: -d32 use a 32-bit data model if available -d64 use a 64-bit data model if available -server to select the "server" VM The default VM is server, because you are running on a server-class machine. -cp -classpath 阅读全文

博文 2020-08-01 04:19:25 CSDN博客_如何查看jvm参数

deleted

Flink是下一代大数据计算平台,可处理流计算和批量计算。《Flink-1.9流计算开发:十三、min、minBy、max、maxBy函数》cosmozhu写的本系列文章的第十三篇。通过简单的DEMO来演示min、minBy、max、maxBy函数执行的效果 。需求本篇文章我们来区分min(max)与minBy(maxBy)之间的区别,下面案例是每10秒计算一次最近1分钟的最小值订单。解决方案 public static void main(String[] args) throws Exception { final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); ...阅读全文

博文 2021-10-11 11:48:10 腾讯云

利用转换流将GBK格式文件以UTF-8输出_Java_十里の清风

utf-8格式如何转化为gbk格式 02-27 阅读数 6225 utf-8格式如何转化为gbk格式 今天在编码的时候由于存储的数据和取得数据格式不一致,... 博文 来自: HY845638534的博客 解决中文字符乱码问题,如何将gbk格式转换utf-8格式 04-06 阅读数 2104 中文乱码的原因是因为编码格式是gbk的,而显示的时候是utf-8格式的,所以需要将其utf-8格式,才能正常显示出来。1.gbk生成utf8程序需要经过两次转化。 1.gbk->uni... 博文 来自: u012681014的专栏 Java练习>转换流>>将GBK编码的文本文件,转换为UTF-8编码的文本文件 08-13 阅读数 1312 练习:转换文件编码。题目:将GBK编码的文本文件,转换为...阅读全文

博文 2020-04-26 06:30:21 CSDN博客

Java NIO中,关于DirectBuffer,HeapBuffer的疑问?

1. DirectBuffer 属于堆外存,那应该还是属于用户内存,而不是内核内存?来自 ByteBuffer (Java Platform SE 8 )The contents of direct buffers may reside outside of the normal garbage-collected heap所以是否真的是堆外存并不是强制的,是依赖jvm实现的。回归正题:用户内存还是内核内存?首先,我们知道,每个进程是有独立的地址空间的,也就是说对于一个java进程来说,他只能看到自己的内存,他只能读写自己的内存。而内核其实是有上帝视角的,如早期的linux,内核是能看到并读写所有物理内存的(关于这一点,有兴趣的可以参看我的简写版linux的实现:https://github...阅读全文

博文 2021-08-28 11:12:10 知乎

Cglib及其基本使用 - 五月的仓颉

前言 最近一直在看Spring源码,其实我之前一直知道AOP的基本实现原理: 如果针对接口做代理默认使用的是JDK自带的Proxy+InvocationHandler 如果针对类做代理使用的是Cglib 即使针对接口做代理,也可以将代理方式配置成走Cglib的 之后要看AOP源码了,Proxy+InvocationHandler这套我已经很熟了,想着如果把Cglib研究研究,应该看AOP源码的时候会更快一些,因此本文就研究一下Cglib是什么、如何一些基本的使用、底层实现原理。 Cglib是什么 Cglib是一个强大的、高性能的代码生成包,它广泛被许多AOP框架使用,为他们提供方法的拦截。下图是我网上找到的一张Cglib与一些框架和语言的关系: 对此图总结一下: 最底层的是字节码Byteco...阅读全文

博文 2021-06-12 14:36:43 博客园

Spring中集成Groovy的四种方式_蓝天之枫

groovy是一种动态脚本语言,适用于一些可变、和规则配置性的需求,目前Spring提供ScriptSource接口,支持两种类型,一种是 ResourceScriptSource,另一种是 StaticScriptSource,但是有的场景我们需要把groovy代码放进DB中,所以我们需要扩展这个。 ResourceScriptSource:在 resources 下面写groovy类 StaticScriptSource:把groovy类代码放进XML里 DatabaseScriptSource:把groovy类代码放进数据库中 工程模块为: ResourceScriptSource groovy的pom groovy-all阅读全文

博文 2021-07-09 02:58:30 CSDN博客

为什么阿里巴巴禁止使用BigDecimal的equals方法做等值比较?

BigDecimal,相信对于很多人来说都不陌生,很多人都知道他的用法,这是一种java.math包中提供的一种可以用来进行精确运算的类型。 很多人都知道,在进行金额表示、金额计算等场景,不能使用double、float等类型,而是要使用对精度支持的更好的BigDecimal。 所以,很多支付、电商、金融等业务中,BigDecimal的使用非常频繁。而且不得不说这是一个非常好用的类,其内部自带了很多方法,如加,减,乘,除等运算方法都是可以直接调用的。 除了需要用BigDecimal表示数字和进行数字运算以外,代码中还经常需要对于数字进行相等判断。 关于这个知识点,在最新版的《阿里巴巴Java开发手册》中也有说明: 这背后的思考是什么呢? 我在之前的CodeReview中,看到过以下这样的低级...阅读全文

博文 2021-05-26 02:44:44 juejin.cn

Spring Boot 打包成的可执行 jar ,为什么不能被其他项目依赖? - 江南一点雨

前两天被人问到这样一个问题: “松哥,为什么我的 Spring Boot 项目打包成的 jar ,被其他项目依赖之后,总是报找不到类的错误?” 大伙有这样的疑问,就是因为还没搞清楚可执行 jar 和普通 jar 到底有什么区别?今天松哥就和大家来聊一聊这个问题。 多了一个插件 Spring Boot 中默认打包成的 jar 叫做 可执行 jar,这种 jar 不同于普通的 jar,普通的 jar 不可以通过 java -jar xxx.jar 命令执行,普通的 jar 主要是被其他应用依赖,Spring Boot 打成的 jar 可以执行,但是不可以被其他的应用所依赖,即使强制依赖,也无法获取里边的类。但是可执行 jar 并不是 Spring Boot 独有的,Java 工程本身就可以打包成...阅读全文

博文 2020-05-29 09:15:39 博客园

排序算法(六)

前言我们在上篇文章 排序算法(五)-双调排序 介绍了双调排序,今天我们来看一下另一种排序算法 —— TimSort。TimSort是Tim Peters发明的一种混合排序,最早是Python语言的内置排序算法。关于Python内置的TimSort描述可以查看该 文档。关于TimSort的理论基础,可以查看该篇论文 Optimistic Sorting and Information Theoretic Complexity,这篇论文论证了插入排序和归并排序合并后效率提高的可能性,即TimSort的理论基础。Java自Java 7 后加入TimSort,其实现参考了Python版本的实现,我们可以在JDK源码的util包下找到它,java.util.TimSort,这个class不是publi...阅读全文

博文 2021-08-18 12:35:11 TimSort | SakuraTears的博客

Netty 中的异步编程 Future 和 Promise - rickiyang

Netty 中大量 I/O 操作都是异步执行,本篇博文来聊聊 Netty 中的异步编程。 Java Future 提供的异步模型 JDK 5 引入了 Future 模式。Future 接口是 Java 多线程 Future 模式的实现,在 java.util.concurrent包中,可以来进行异步计算。 对于异步编程,我们想要的实现是:提交一个任务,在任务执行期间提交者可以做别的事情,这个任务是在异步执行的,当任务执行完毕通知提交者任务完成获取结果。 那么在 Future 中是怎么实现的呢?我们先看接口定义: public interface Future { boolean cancel(boolean mayInterruptIfRunning); boolean isCance...阅读全文

博文 2021-08-29 03:35:05 博客园

简单分析Flink算子返回NULL导致的异常

假设我们作业中有这样一段逻辑stream.map(xxx).filter(_ != null).xxx,并且map算子有可能返回NULL,你觉得作业运行会抛NPE吗?明明下游有filter not null,不应该出错才对?但实际情况是运行中有可能抛出异常。1.异常信息可能抛出的异常信息大致如下: // 1. 如果map算子返回值类型为Java Tuple Caused by: java.lang.NullPointerException at org.apache.flink.api.java.typeutils.runtime.TupleSerializer.copy(TupleSerializer.java:111) at org.apache.flink.api.java.typeu...阅读全文

博文 2022-03-29 06:13:47 知乎

什么是FastJson中AutoType反序列化漏洞?_hosaos的博客

文章目录 频繁出现的反序列化漏洞parse()及parseObject()AutoType及安全校验AutoType安全校验AutoType黑名单机制SafeMode安全机制攻击思路 反序列化攻击模拟TemplatesImpl攻击调用链路攻击类Translet生成构造攻击JSON串攻击模拟 写在最后 频繁出现的反序列化漏洞 最近公司的小伙伴们收到了一波安全工单,因为FastJson存在高危漏洞,要求将FastJson版本号升级到1.2.69及以上 漏洞描述如下 在Fastjson<=1.2.68的版本中,通过新的Gadgets链绕过autoType开关,在autoType关闭的情况下仍然可能可以绕过黑白名单防御机制,实现了反序列化漏洞利用的远程代码执行效果,同时,此次修复补丁也补充了auto...阅读全文

博文 2022-05-23 08:07:38 CSDN博客_fastjson的autotype属性

Java JVM 参数设置大全

首页 > 基础教程 > 基础知识 > JDK&JRE&JVM Java JVM 参数设置大全 JVM参数设置说明 参数名称 含义 默认值 -Xms 初始堆大小 物理内存的1/64(<1GB) 默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制. -Xmx 最大堆大小 物理内存的1/4(<1GB) 默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制 -Xmn 年轻代大小(1.4or lator) 注意:此处的大小是(eden+ 2 survivor space).与jmap -heap中显示的New gen是不同的。 整个堆大小=年轻代大小 + 年老代大小 + 持久代...阅读全文

博文 2020-07-28 06:53:23 www.51gjie.com

Java阻塞延迟队列DelayQueue原理及使用_Hopefully Sky的博客

阻塞队列 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,从队列中获取元素的消费者线程会一直等待直到队列变为非空。当队列满时,向队列中放置元素的生产者线程会等待直到队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。 在阻塞队列不可用时,这两个附加操作提供了4种处理方式: 抛出异常:当队列满时,插入元素会抛出IllegalStateException;返回特殊值:offer()是入队方法,当插入成功时返回true,插入失败返回false;poll()是出队方法,当出队成功时返回元素的值,队列为空时返回null一直阻塞:当队列满时,阻塞执行插入方法的线程;当队列空时,阻塞执行出队方法的...阅读全文

博文 2021-09-24 03:45:20 CSDN博客_java 延迟队列

Flink

TIP 本文主要是介绍 Flink-SpringBoot结合案例 。 Spring Boot整合Flink【----------------------------】Flink与Spring Boot的集成Spring容器的集成点依赖jar包注意点maven打包注意点注意包冲突目前方案的缺陷与解决思路参考文章 # Spring Boot整合Flink 使用spring boot整合flink可以快速的构建起整个应用,将关注点重点放在业务逻辑的实现上。在整合的过程中遇到许多问题,最大的问题是flink流无法访问spring容器中的类,从而导致空指针异常,解决思路是在流中进行spring bean的初始化以获得ApplicationContext,进而使用其getBean方法获取类实例。 软件版...阅读全文

博文 2022-07-25 02:23:25 SpringBoot结合案例 | 智能后端和架构

Netty之ByteBuf零拷贝

Netty之ByteBuf零拷贝我们先来看下Zero-copy的定义: "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another. This is frequently used to save CPU cycles and memory bandwidth when transmitting a file over a network. 所谓的 Zero-copy, 就是在操作数据时, 不需要将数据 buffer 从一个内存区域拷贝到另一个内存区域. 少了一次内存的拷贝, 减少了cpu...阅读全文

博文 2021-08-28 11:10:37 简书

java代码之美(4)---guava之Immutable(不可变)集合 - 雨点的名字

Immutable(不可变)集合 一、概述 guava是google的一个库,弥补了java语言的很多方面的不足,很多在java8中已有实现,暂时不展开。Collections是jdk提供的一个工具类。 Guava中不可变对象和Collections工具类的unmodifiableSet/List/Map/etc的区别: 当Collections创建的不可变集合的wrapper类改变的时候,不可变集合也会改变,而Guava的Immutable集合保证确实是不可变的。 1、JDK中实现immutable集合 在JDK中提供了Collections.unmodifiableXXX系列方法来实现不可变集合, 但是存在一些问题,下面我们先看一个具体实例: public class Immutable...阅读全文

博文 2020-05-19 02:57:42 博客园

JAVA8 之 Lambda 表达式与方法引用(二) - 当年明月123

在上一章我们介绍了函数式编程的概念和函数式接口。Lambda 表达式就是函数式编程的具体体现,它需要借助函数式接口才能应用在 Java 语言中。 定义 在编程语言中,lambda 表达式是一种用于指定匿名函数或者闭包的运算符。Lambda 可以很清晰地表达一个匿名函数,可以被传递。有了 Lambda 表达式之后,Lambda 表达式为 Java 添加了缺失的函数式编程特性,使我们能将函数当作一等公民看待。 在将函数作为一等公民的语言中,Lambda 表达式的类型是函数。但在 Java 中,Lambda 表达式是对象,他们必须依附于一类特别的对象类型-函数式接口,因为 Java 要保持向后兼容。 Java 的 Lambda 表达式是一种匿名函数,它是没有声明的方法,即没有访问修饰符,返回值声明...阅读全文

博文 2020-06-09 10:50:30 博客园

动态代理

我们来比较Java的class和interface的区别: 可以实例化class(非abstract); 不能实例化interface。 所有interface类型的变量总是通过向上转型并指向某个实例的: CharSequence cs = new StringBuilder(); 有没有可能不编写实现类,直接在运行期创建某个interface的实例呢? 这是可能的,因为Java标准库提供了一种动态代理(Dynamic Proxy)的机制:可以在运行期动态创建某个interface的实例。 什么叫运行期动态创建?听起来好像很复杂。所谓动态代理,是和静态相对应的。我们来看静态代码怎么写: 定义接口: public interface Hello { void morning(String na...阅读全文

博文 2021-06-12 14:15:39 廖雪峰的官方网站

如何理解BIO、NIO、AIO的区别?

很多文章在谈论到BIO、NIO、AIO的时候仅仅是抛出一堆定义,以及一些生动的例子。看似很好理解。但是并没有将最基础的本质原理显现出来,如果没有没有从IO的原理出发的话是很难理解这三者之间的区别的。所以本篇文章从Java是如何进行IO操作为开头进行分析。 Java中的IO原理 首先Java中的IO都是依赖操作系统内核进行的,我们程序中的IO读写其实调用的是操作系统内核中的read&write两大系统调用。 那内核是如何进行IO交互的呢? 网卡收到经过网线传来的网络数据,并将网络数据写到内存中。 当网卡把数据写入到内存后,网卡向cpu发出一个中断信号,操作系统便能得知有新数据到来,再通过网卡中断程序去处理数据。 将内存中的网络数据写入到对应socket的接收缓冲区中。 当接收缓冲区的数据写好之...阅读全文

博文 2021-08-16 03:05:31 juejin.cn

Netty 权威指南笔记(二):Java NIO 和 Netty 对比_albon arith

Netty 权威指南笔记二Java NIO 和 Netty 对比 Java NIO 开发Netty 开发 示例程序 Netty 权威指南笔记(二):Java NIO 和 Netty 对比 Netty 是业界流行的 NIO 框架之一,它的健壮性、功能、性能、可定制性和可扩展性在同类框架中都说首屈一指的,也已经得到了成百上千商用项目的验证。Netty 框架都有什么优点呢? API 使用简单,开发门槛低。功能强大,预置多种编解码功能,支持多种主流协议。定制能力强,可以通过 ChannelHandler 对通信框架灵活扩展。性能高。成熟稳定,社区活跃,已经修复了 Java NIO 所有的 Bug。经历了大规模商业应用的考验,质量有保证。 Java NIO 开发 我们看一看在 笔记(一)里面的 Jav...阅读全文

博文 2021-08-27 08:12:00 CSDN博客

由阿里巴巴Java开发规约HashMap条目引发的故事-云栖社区

大热的《阿里巴巴Java开发规约》中有提到: 【推荐】集合初始化时,指定集合初始值大小。说明:HashMap使用如下构造方法进行初始化,如果暂时无法确定集合大小,那么指定默认值(16)即可: public HashMap (int initialCapacity) { this(initialCapacity, DEFAULT_LOAD_FACTOR); } 看到代码规约这一条的时候,我觉得是不是有点太 low 了,身为开发,大家都知道 HashMap 的原理。 什么?这个要通过插件监测?没必要吧,哪个开发不知道默认大小,何时 resize 啊,然后我和孤尽打赌随机咨询几位同学以下几个问题: HashMap 默认bucket数组多大? 如果new HashMap<>(19),bucket数组...阅读全文

博文 2020-07-14 09:57:56 阿里云

大家都说 Java 反射效率低,你知道原因在哪里么

【这是 ZY 第 17 篇原创技术文章】 预备知识 了解 Java 反射基本用法 看完本文可以达到什么程度 了解 Java 反射原理及 Java 反射效率低的原因 文章概览 我们在 Java 开发中,难免会接触到反射,而在一些框架中,反射的运用更是常见。我相信,每次提到反射,大家的第一反应一定是反射效率低,尽量少使用。 但是反射的效率到底低多少?反射效率低的原因在哪里? 这篇文章就来探索一下这些问题。 由于本机上安装的是 openjdk 12,所以这里就使用 openjdk 12 源码进行分析。 我们先看结论,然后分析一下 Java 反射的原理,过程中大家可以根据结论,对源码做一些思考,然后再根据原理中的一些实现,看看 Java 反射效率低的原因。 零、先放结论 Java 反射效率低主要原因...阅读全文

博文 2021-06-11 13:40:17 juejin.cn

从实际案例聊聊Java应用的GC优化

当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步提高性能,称为GC优化。但GC算法复杂,影响GC性能的参数众多,且参数调整又依赖于应用各自的特点,这些因素很大程度上增加了GC优化的难度。即便如此,GC调优也不是无章可循,仍然有一些通用的思考方法。本篇会介绍这些通用的GC优化策略和相关实践案例,主要包括如下内容: > 优化前准备: 简单回顾JVM相关知识、介绍GC优化的一些通用策略。 > 优化方法: 介绍调优的一般流程:明确优化目标→优化→跟踪优化结果。 > 优化案例: 简述笔者所在团队遇到的GC问题以及优化方案。一、优化前的准备GC优化需知为了更好地理解本篇所介绍的内容,你需要了解如下内容。 1. GC相关基础知识,包括但不限于: a) GC工作原...阅读全文

博文 2020-08-01 04:17:44 美团技术团队

某课网体系课-Java工程师2022版网盘下载

download:百度网盘2022全新升级,综合就业率常年第一,王牌编程语言0基础入门,高效掌握Java工程师所需能力,冲击大厂高薪一课学懂学透,给你更高的就业起点,更好的就业终点内容过“硬”紧跟市场用人标准聚焦主流技术企业级开发能力每年升级完善讲师过“硬”只要大厂经历讲师2年+开发经验助教“大师”带“小白”你的起点就是“BAT”就业只是起点,我们的目标是高薪就业,稳定就业,更为你长久的职业生涯赋能一套经过时间的考验、无数学生的验证,不断打磨升级的精品课...阅读全文

深入理解JDK动态代理机制

深入理解JDK动态代理机制本文是基于jdk1.8来对动态代理的底层机制进行探究的 Java中代理的实现一般分为三种:JDK静态代理、JDK动态代理以及CGLIB动态代理。在Spring的AOP实现中,主要应用了JDK动态代理以及CGLIB动态代理。但是本文着重介绍JDK动态代理机制,CGLIB动态代理后面会接着探究。 代理一般实现的模式为JDK静态代理:创建一个接口,然后创建被代理的类实现该接口并且实现该接口中的抽象方法。之后再创建一个代理类,同时使其也实现这个接口。在代理类中持有一个被代理对象的引用,而后在代理类方法中调用该对象的方法。 其实就是代理类为被代理类预处理消息、过滤消息并在此之后将消息转发给被代理类,之后还能进行消息的后置处理。代理类和被代理类通常会存在关联关系(即上面提到的持...阅读全文

博文 2021-06-12 14:15:56 简书

Flink的Task与SubTask理解_黄土高坡上的独孤前辈的博客

文章目录 官网参考1.任务2.通过flinkUI可以看到 有几个框就是几个Task3.程序模型4.流的分类5.Operator Chains6.Task Slot (TM = JVM)7.获取整个算子的执行计划8.flink通过webUI的Jar包传到哪里去了 java.io.tmpdir=/tmp 官网参考 # https://ci.apache.org/projects/flink/flink-docs-release- 1.11/concepts/flink-architecture.html 1.任务 Task:任务 是一个阶段多个相同功能的subtask的集合 ==》 对比于spark中的taskSet SubTask:子任务 subTask是Flink中任务的最小单元,subta...阅读全文

博文 2022-08-04 07:00:13 CSDN博客_flink subtask

ElasticSearch 聚合分析 - 码农充电站

公号:码农充电站pro 主页:https://codeshellme.github.io ES 中的聚合分析(Aggregations)是对数据的统计分析功能,它的优点是实时性较高,相比于 Hadoop 速度更快。 1,聚合的分类 ES 中的聚合分析主要有以下 3 大类,每一类都提供了多种统计方法: Metrics:对文档字段进行统计分析(数学运算),多数 Metrics 的输出是单个值,部分 Metrics 的输出是多个值。 Sum:求和 Max:求最大值 Min:求最小值 Avg:求平均值 等 Bucket:一些满足特定条件的文档集合(对文档进行分组)。 Terms Range 等 Pipeline:对其它的聚合结果进行再聚合。 Avg bucket:求平均值 Max bucket:求最...阅读全文

博文 2022-04-20 13:00:08 博客园

深入剖析Linux IO原理和几种零拷贝机制的实现

前言零拷贝(Zero-copy)技术指在计算机执行操作时,CPU 不需要先将数据从一个内存区域复制到另一个内存区域,从而可以减少上下文切换以及 CPU 的拷贝时间。它的作用是在数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现 CPU 的零参与,彻底消除 CPU 在这方面的负载。实现零拷贝用到的最主要技术是 DMA 数据传输技术和内存区域映射技术。零拷贝机制可以减少数据在内核缓冲区和用户进程缓冲区之间反复的 I/O 拷贝操作。零拷贝机制可以减少用户进程地址空间和内核地址空间之间因为上下文切换而带来的 CPU 开销。正文1. 物理内存和虚拟内存由于操作系统的进程与进程之间是共享 CPU 和内存资源的,因此需要一套完善的内存管理机制防止进程之间内存泄漏的问题。为了更...阅读全文

博文 2021-08-17 04:10:56 知乎

借用Arthas分析maven非包版本冲突导致找不到类问题

背景: 微服务应用xxx.jar依赖netty-all-4.1.25Final,项目中使用通信工具async-http-client-2.0.31内置耦合了io.netty的几个同包名同类名的类;Tomcat应用运行时报:java.lang.NoSuchMethodError: io.netty.channel.DefaultChannelId.newInstance()Lio/netty/channel/DefaultChannelId;。But netty-all包中是存在DefaultChannelId类的,显然发生冲突了(该类加载的地方并非来自于netty-all-4.1.25Final.jar==>后面分析类来源)微服务应用必须使用高版本的netty,固只能考虑升级http-cli...阅读全文

博文 2023-09-13 16:34:22 CSDN博客