JDK8到JDK17有哪些吸引人的新特性?
作者:京东零售 刘一达
前言
2006年之后SUN公司决定将JDK进行开源,从此成立了OpenJDK组织进行JDK代码管理。任何人都可以获取该源码,并通过源码构建一个发行版发布到网络上。但是需要一个组织审核来确保构建的发行版是有效的, 这个组织就是JCP(Java Community...[2023/4/19]
Java的对象克隆
本节我们会讨论 Cloneable 接口,这个接口指示一个类提供了一个安全的 clone() 方法。
Object 类提供的 clone() 方法是 “浅拷贝”,并没有克隆对象中引用的其他对象,原对象和克隆的对象仍然会共享一些信息。深拷贝指的是:在对象中存在其他对象的引用的情况下,会同时克隆对...[2023/4/19]
8个JavaScript中高阶函数的运用分享8个JavaScript中高阶函数的运用分享
目录函数作为参数传递函数作为返回值函数柯里化函数组合面向切面编程函数式编程闭包复杂的例子 函数作为参数传递
高阶函数可以接受一个或多个函数作为参数,这些函数可以在高阶函数中被调用,实现某种特定的功能
function operation(num1, num2, callback) {
...[2023/4/19]
解决java启动时报线程占用报错:Exception?in?thread?“Thread-14“?java.net.BindException:?Address?already?in?use:?bind
目录前言1 异常2 问题定位2.1 第一种情况2.2 第二种情况2.3 第三种情况3 问题原因4 思考学习总结 前言
本文提供三种不同的解决方式,也是三种不同的情况和思路
我的问题是在springboot整合了xxl-job一段时间后出现的。如果你程序里集成了xxl-job或者有需要配置其它...[2023/4/19]
【深度思考】聊聊JDK动态代理原理
1. 示例
首先,定义一个接口:
public interface Staff {
void work();
}
然后,新增一个类并实现上面的接口:
public cla Coder implements Staff {
@Override
public voi...[2023/4/17]
麻了,不要再动不动就BeanUtil.copyProperties!!!
前言
最近项目上要求升级一个工具包hutool的版本,以解决安全漏洞问题,这不升级还好,一升级反而捅出了更大的篓子,究竟是怎么回事呢?
事件回顾
我们项目原先使用的hutool版本是5.7.2,在代码中,我们的数据传输对象DTO和数据实体对象中大量使用了工具包中的BeanUtil.copyPr...[2023/4/17]
Java中「Future」接口详解Java中「Future」接口详解
目录一、背景二、Future接口1、入门案例2、Future接口三、CompletableFuture类1、基础说明2、核心方法2.1 实例方法2.2 计算方法2.3 结果获取方法2.4 任务编排方法2.5 异常处理方法3、线程池问题四、CompletableFuture原理1、核心结构2、零依...[2023/4/17]
Java构建树结构的公共方法
一、前提
pId需要传入用来确认第一级的父节点,而且pId可以为null。
树实体类必须实现:TreeNode接口
MyTreeVo必须有这三个属性:id、pId、children
可以根据不同需求,配置TreeNode和MyTreeVo中固定的属性
二、代码
定义TreeNode接口
...[2023/4/14]
java.lang.OutOfMemoryError- unable to create new native thread 问题排查
问题描述
最近连续两天大约凌晨3点,线上服务开始异常,出现OOM报错。且服务所在的物理机只能ping通,但是无法登录。报错信息如下:
ERROR 04-12 03:01:43,930 [DefaultQuartzScheduler_Worker-3] JobRunShell[JobRunShe...[2023/4/14]
带你揭开神秘的Javascript AST面纱之Babel AST 四件套的使用方法
作者:京东零售 周明亮
写在前面
这里我们初步提到了一些基础概念和应用:
分析器
抽象语法树 AST
AST 在 JS 中的用途
AST 的应用实践
有了初步的认识,还有常规的代码改造应用实践,现在我们来详细说说使用 AST, 如何进行代码改造?
Babel AST 四件套的使用方法
...[2023/4/12]
Java并发(一)----进程、线程、并行、并发
一、进程与线程
进程
程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的
当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。
...[2023/4/12]
Java中ThreadLocal的用法和原理
用法
隔离各个线程间的数据
避免线程内每个方法都进行传参,线程内的所有方法都可以直接获取到ThreadLocal中管理的对象。
package com.example.test1.service;
import org.springframework.scheduling.annotati...[2023/4/12]
Java实现文件上传的方法总结
目录1.文件上传接收文件接口2.接口主要内容部分3.postman接口调用 1.文件上传接收文件接口
Controller成通过post上传方式定义接口,上传文件通常使用post的上传方式,get用于获取数据、文件。 单个入参可以使用@RequestParam标注,不用封装到类里边在使用@Rep...[2023/4/12]
Java KindEditor粘贴图片自动上传到服务器功能实现
?图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHan...[2023/4/12]
深入了解JavaScript中的垃圾回收机制深入了解JavaScript中的垃圾回收机制
JavaScript中的垃圾回收机制负责自动管理内存,回收不再使用的对象所占用的内存空间。在JavaScript中,开发者不需要显式地分配和释放内存,垃圾回收器会自动完成这些操作。以下是关于JavaScript垃圾回收机制的一些关键概念:
内存生命周期:JavaScript内存生命周期包括分配、...[2023/4/12]
Java 异常处理:使用和思考Java 异常处理:使用和思考
概念
异常处理的概念起源于早期的编程语言,如 LISP、PL/I 和 CLU。这些编程语言首次引入了异常处理机制,以便在程序执行过程中检测和处理错误情况。异常处理机制随后在 Ada、Modula-3、C++、Python、Java 等编程语言中得到了广泛采用和发展。在 Java 中,异常处理是提...[2023/4/10]
c#快速入门~在java基础上,知道C#和JAVA 的不同即可
? 观看下文前提:如果你的主语言是java,现在想再学一门新语言C#,下文是在java基础上,对比和java的不同,快速上手C#,当然不是说学C#的前提是需要java,而是下文是从主语言是java的情况下,学习C#入门到进阶。
C# 学习参考文档和开发工具
微软c#官方文档:h...[2023/4/10]
让代码变得优雅简洁的神器:Java8 Stream流式编程
原创/朱季谦
本文主要基于实际项目常用的Stream Api流式处理总结。
因笔者主要从事风控反欺诈相关工作,故而此文使用比较熟悉的三要素之一的【手机号】黑名单作代码案例说明。
我在项目当中,很早就开始使用Java 8的流特性进行开发了,但是一直都没有针对这块进行开发总结。...[2023/4/10]
干掉复杂的工具类,国产Java工具类库 Hutool 很香!干掉复杂的工具类,国产Java工具类库 Hutool 很香!
Hutool 大家已经比较熟悉了,这是一个超全的 Java 工具库,深受国内开发者的喜爱。
我之前其实是不太喜欢使用这种功能太多的工具类的,也比较担心稳定性和安全性,后面慢慢接受了就感觉其实也还好。而且,我们还可以按需只引入自己需要的功能模块,相对也比较灵活。
Hutool 的官方文档介绍的...[2023/4/7]
万字详解 | Java 流式编程
概述
Stream API 是 Java 中引入的一种新的数据处理方法。它提供了一种高效且易于使用的方法来处理数据集合。Stream API 支持函数式编程,可以让我们以简洁、优雅的方式进行数据操作,还有使用 Stream 的两大原因:
在大多数情况下,将对象存储在集合中就是为了处理它们,因此...[2023/4/7]
Java BIO,NIO,AIO
一丶IO模型&Java IO
Unix为程序员提供了以下5种基本的io模型:
blocking io: 阻塞io
nonblocking io: 非阻塞io
I/O multiplexing: io多路复用
signal driven I/O:信号驱动io
asynchronous I...[2023/4/6]
java -- Stringbuild、Date和Calendar类
Stringbuild类
由于String类的对象内容不可改变,每次拼接都会构建一个新的String对象,既耗时,又浪费内存空间
这时需要通过java提供的StringBuild类解决这个问题
StringBuilder又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,可以看...[2023/4/6]
阿里巴巴为什么这样强制从List中删除元素阿里巴巴为什么这样强制从List中删除元素
还是先举个例子,你侄女对天文知识感兴趣,然后你就用程序写了太阳系九大星系(水星、金星、地球、火星、木星、土星、天王星、海王星、冥王星)的运行轨迹图,然后拿给侄女看。然后她说错了错了,你的知识太旧了,多了一颗星。根据2006年8月24日国际天文联合大会召开,在会议上经过投票表决,冥王星被降级为矮行...[2023/4/3]
Java 8 中需要知道的4个函数式接口-Function、Consumer、Supplier、Predicate
前言
Java 8 中提供了许多函数式接口,包括Function、Consumer、Supplier、Predicate 等等。这 4 个接口就是本篇将要分享的内容,它们都位于 java.util.function 包下。
为什么需要知道这几个函数式接口?
因为这 4 个函数式接口是 Ja...[2023/4/3]
java中optional的一些常用方法总结
目录前言1. 创建Optional对象2. 获取Optional对象的值3. 判断Optional对象是否包含非空值4. 获取Optional对象中的值或默认值5. 获取Optional对象中的值或抛出异常6. 转换Optional对象中的值7. 过滤Optional对象中的值Java 9 增强补充...[2023/4/3]
Java BasePooledObjectFactory 对象池化技术Java BasePooledObjectFactory 对象池化技术
Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
一个对象池包含一组已经初始化过且可以使用的对象,而可以在有需求时创建和销毁对象。池的用户可以从池子中取得对象,对其进行操作处理,并在不需要时归还给池子而非直接销毁它。这是一种特殊的工厂对...[2023/3/31]
更优雅的OrientDB Java API
OrientDB API v1.0.0(OrientDB 3.x)
Gitee
OrientDB介绍
OrientDB是一个开源的NoSQL数据库管理系统,同时也是一款高性能的图数据库,支持ACID事务以及原子操作。
官网
图数据库介绍
图数据库是以点、边为基础存储单元,以高效存储、查询图...[2023/3/31]
开发了一个Java库的Google Bard API,可以自动化与AI对话了
开发了一个Java库的Google Bard API,可以自动化与AI对话了
Google Bard是Google提供的还在实验阶段的人工智能对话服务。这明显是对标ChatGPT来的,它可以提供更实时的答案,会基于Google强大的网页数据。
为了更方便的使用并实现自动化,我写了一个Java类...[2023/3/27]
【JavaScript快速排序算法】不同版本原理分析
说明
快速排序(QuickSort),又称分区交换排序(partition-exchange sort),简称快排。快排是一种通过基准划分区块,再不断交换左右项的排序方式,其采用了分治法,减少了交换的次数。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外...[2023/3/27]
当transcational遇上synchronized
工作当中经常会遇到既需要开启事务管理,同时也需要同步保证线程安全的场景。
比如一个方法
@Transactional
public synchronized void test(){
}
不知道大家有没有这样写过?
这样写会有问题吗?
众所周知,spring使用动态代理...[2023/3/24]
美团面试:熟悉哪些JVM调优参数?
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~
Github地址
面试网站
今天来...[2023/3/24]
java异步编程的7种实现方式小结
目录同步编程一、线程 Thread二、Future三、FutureTask四、异步框架 CompletableFuture五、 SpringBoot 注解 @Async六、Spring ApplicationEvent 事件七、消息队列 最近有很多小伙伴给我留言,能不能总结下异步编程,今天就和大家简...[2023/3/24]
Java Tomcat 启动闪退问题解决集
目录一、Java环境不对,Tomcat 不同版本需要的Java环境不同。二、环境变量没有配置好三、Tomcat端口被占用四、配置文件编码问题五、启动时需要的配置文件编写出错六、部分相关文件丢失七、免安装的tomcat闪退八、修改配置文件setcla path.bat九、等待更新 Tomcat 启动时...[2023/3/24]
Java开发HashMap?key必须实现hashCode?equals方法原理
目录一、问题引入二、hashCode、equals方法都未实现三、只实现hashCode方法四、只实现equals方法五、hashCode、equals方法都实现六、总结 一、问题引入
平时在开发中,相信你多多少少都使用过HashMap,而当你用自定义对象作为key时,很多人会告诉你:你必须...[2023/3/22]
带你深入Java Log框架,彻底搞懂Log4J、Log4J2、LogBack,SLF4J
最近系统被扫出来还在使用老旧的log4j,需要升级到最新的log4j。但是在升级的发现,Java相关的日志处理库有log4j, log4j2,slf4j和logback,初一看确实有点头大,那么区别是啥呢?之前也大概知道一些,查找了大量相关资料,这里好好总结一下,相信你读完就会熟练掌握
...[2023/3/20]
Java多线程开发CompletableFuture的应用
?做Java编程,难免会遇到多线程的开发,但是JDK8这个CompletableFuture类很多开发者目前还没听说过,但是这个类实在是太好用了,了解它的一些用法后相信你会对它爱不释手(呸渣男,咋对谁都爱不释手呢),好了我先简单举个列子,告诉你用它有多好。Single Dog拿一个Appoint...[2023/3/20]
Java项目是不是分布式,真有那么重要吗?
大家好,我是3y啊。
大概不知道从什么时候,「微服务」「分布式」这两个词又再次频繁出现在我的视线里。
「微服务」「分布式」在我刚毕业的时候还是比较关注的,那时候还入门了一把SpringCloud,写了一篇很长的文章,还是很顶的,有不少的大号都给我转载了,在知乎又获得了很多的赞。
那时候觉得...[2023/3/20]
JavaScript?DOM?API的使用教程及综合案例
目录一. 什么是DOM二. 最常用的DOM API1. 选中页面元素2. 操作元素的属性2.1 事件概念2.2 获取/修改元素内容2.4 获取/修改元素属性2.5 获取/修改表单元素属性2.6 获取修改样式属性3. 操作页面节点3.1 新增节点3.2 删除节点三. 综合案例1. 猜数字2. 表白墙总...[2023/3/20]
JavaScript图片打印方案实例详解
最近有个页面打印图片的小需求。就是系统界面展示有一些证件照片,我们希望可以点击图片旁边的打印小按钮,就可以将这张图片直接打印到A4纸张上,例如下图效果:
其实浏览器 window 对象提供了 print 方法,就可以对整个页面进行打印。只需要点击按钮执行以下方法即可。
window....[2023/3/20]
微软出品自动化神器【Playwright+Java】系列(十二)测试框架的设计与开发微软出品自动化神器【Playwright+Java】系列(十二)测试框架的设计与开发
一、前言
大家好,我是六哥!
又有好长一段时间没更文了,不是我懒,而是确实在更文上,没有以前积极了,这里是该自我检讨的。
其实不是我不积极,而是相对更文学习来说,优先级不是最高。
对我而言,目前最重要的就是减肥,除了下雨下雪,我都坚持每天5公里,keep记录如下:
早在四天前就完成了p...[2023/3/15]
JavaScript+Canvas实现带跳动效果的粒子动画
目录前言实现过程运行效果总结 前言
用 HTML5 的 Canvas 元素实现一个带有跳动效果的粒子动画。会用到 Canvas 的2D渲染上下文,通过 JavaScript 编写绘图代码,实现画布上一系列粒子的随机运动和相互作用。还会使用 CSS3 动画属性,使得画布背景颜色和粒子颜色能够流畅地...[2023/3/15]
Java并发小结01Java并发小结01
Java并发小结01
主要参考自《实战Java高并发程序设计》。
需要知道的概念
- 同步与异步
- 并发与并行
- 临界区
- 阻塞与非阻塞
- 死锁、饥饿、活锁
同步与异步
同步:同步方法一旦被调用,必须等待方法返回后才能继续后续的行为。
异步:异步方法就像一个消息传递,被调用后方法...[2023/3/14]
java 中文繁简体转换工具 opencc4j 使用介绍 1.8.0
Opencc4j
Opencc4j 支持中文繁简体转换,考虑到词组级别。
在线体验
Features 特点
严格区分「一简对多繁」和「一简对多异」。
完全兼容异体字,可以实现动态替换。
严格审校一简对多繁词条,原则为「能分则不合」。
词库和函数库完全分离,可以自由修...[2023/3/14]
一个由public关键字引发的bug
先来看一段代码:
@Service
@Slf4j
public cla AopTestService {
public String name = "真的吗";
@Retryable
public void test(){
模拟业务操作
...[2023/3/14]
生产环境Java应用服务内存泄漏分析与解决
有个生产环境CRM业务应用服务,情况有些奇怪,监控数据显示内存异常。内存使用率99.%多。通过生产监控看板发现,CRM内存超配或内存泄漏的现象,下面分析一下这个问题过程记录。
1、服务器硬件配置部署情况
生产服务器采用阿里云ECS机器,配置是2HZ、8GB,单个应用服务独占,CRM应用独立部...[2023/3/14]
AI来实现代码转换!Python转Java,Java转Go不在话下?
今天看到个有趣的网站,给大家分享一下。
该网站的功能很神奇,可以实现编程语言的转化。感觉在一些场景之下还是有点作用的,比如你原来跟我一样是做Java的,因为工作需要突然转Go。这个时候用你Java的经验 + 这个工具,或许可以起到一定的帮助作用。
工具的使用也很简单,只需要在左侧黏贴你想...[2023/3/14]
JAVA重试机制多种方式深入浅出JAVA重试机制多种方式深入浅出
重试机制在分布式系统中,或者调用外部接口中,都是十分重要的。
重试机制可以保护系统减少因网络波动、依赖服务短暂性不可用带来的影响,让系统能更稳定的运行的一种保护机制。
为了方便说明,先假设我们想要进行重试的方法如下:
@Slf4j
@Component
public cla HelloS...[2023/3/14]
【选择排序算法详解】Java/Go/Python/JS/C 不同语言实现
【选择排序算法详解】Java/Go/Python/JS/C 不同语言实现
说明
选择排序(Selection Sort)是一种简单直观的排序算法。跟冒泡、插入排序一样,它将数列分为已排序和待排序两个区间。首先在待排序序列中找到最小(或最大)的元素,追加到已排序序列中,然后继续从待...[2023/3/8]
JavaMail 邮件发送,有意思的附件名乱码 → 客户端正常,web端乱码
开心一刻
昨晚,媳妇很感伤的看着我
媳妇:以后岁数大了,我要走你前面去了,你再找个老伴
我:我不想找
媳妇:你找一个,不用替我守着,以后你说你头疼发烧,也得有个给你端水递药的呀
媳妇抹着眼泪:到老是个伴
我:我想找个年轻的
现在我左脸还有一个掌印,火辣辣的...[2023/3/8]
详解如何用Java实现对m3u8直播流抽帧
目录什么是抽帧什么是 FFmpeg什么是 JavaCV最简单的抽帧抽帧算法 什么是抽帧
抽帧(frame extraction)是指从视频流中提取一些特定的帧,通常是关键帧或者随机帧,以供后续处理。对于m3u8直播流,可以使用Java中的FFmpeg库来实现抽帧功能。
什么是 FFmpeg
...[2023/3/8]