Java异步判断线程池所有任务是否执行完成的方法
1.使用ExecutorService和CountDownLatch的方法示例
在Java中,当我们使用线程池(如ExecutorService)来执行异步任务时,常常需要知道所有任务是否都已经完成。ExecutorService接口提供了几种方式来处理这种情况,但最常用的是shutdown()...[2024/7/11]
聊一聊领域驱动与贫血模型
写在前面
前段时间跟领导讨论技术债概念时不可避免地提到了代码的质量,而影响代码质量的因素向来都不是单一的,诸如项目因素、管理因素、技术选型、人员素质等等,因为是技术债务,自然就从技术角度来分析,单纯从技术角度来看代码质量,其实又细分很多原因,如代码设计、代码规范、编程技巧等等,但我个人觉得这些都...[2024/7/11]
3大主流分布式事务框架详解(图文总结) - Hello-Brand
1 简要介绍
随着微服务架构的不断发展,分布式系统逐渐普及到后端领域的每一个角落。
在分布式系统中,跨多个服务的数据一致性一直是一个重大挑战,为解决这一挑战,分布式事务应运而生。
作者在之前的文章《五种分布式事务解决方案》和《4大主流分布式算法介绍》中,详细介绍了分布式事物的解决方案以及实现...[2024/7/11]
Java反射与Fastjson的危险反序列化
Preface
在前文中,我们介绍了 Java 的基础语法和特性和 fastjson 的基础用法,本文我们将深入学习fastjson的危险反序列化以及预期相关的 Java 概念。
什么是Java反射?
在前文中,我们有一行代码 Computer macBookPro = JSON.parseO...[2024/7/8]
不单独部署注册中心,又要具备注册中心的功能,我能上天!
开心一刻
昨天看到一条广告:全国比丑大赛,一等奖 2 万奖金
我高高兴兴骑着自行车去了场地,结果被保安拦着不让进
我心里窃喜:莫非我长得不丑,不符合参赛条件?
我说道:为什么不让我进
保安:这是业余人员间的比赛,职业选手不能参加
敢情不是不丑,而是太丑!
书接上回
上篇 不单独部署...[2024/7/8]
同时安装Java8和Java17:如何自由切换?(For Windows10)
1. 安装Java8与Java17 (这里演示Java17,因为笨人原来一直用的Java8,各位大佬应该也都有8) 如下图所示,选择JDK17,选择Windows的Installer即可! (更新换代,22都已经出了) https: www.oracle.com/java/technologie ...[2024/7/3]
GuavaCache、EVCache、Tair、Aerospike 缓存框架比较
Guava Cache、EVCache、Tair、Aerospike 是不同类型的缓存解决方案,它们各有特点和应用场景。下面我会逐一分析这些缓存系统的优势、应用场景,并提供一些基本的代码示例。
Guava Cache
优势特点:
内置在Guava库中,易于集成和使用。
提供了丰富的缓存配置选...[2024/7/3]
【进阶篇】Java 项目中对使用递归的理解分享【进阶篇】Java 项目中对使用递归的理解分享
【进阶篇】Java 项目中对使用递归的理解分享
目录【进阶篇】Java 项目中对使用递归的理解分享前言一、什么是递归1.1基本概念1.2优缺点1.3与迭代的区别二、实际案例三、改进方案3.1控制递归层数3.1用 Stream 遍历四、文章小结
前言
笔者在最近的项目开发中,遇到了两个父子关系...[2024/7/3]
《优化接口设计的思路》系列:第十一篇—表格的导入导出接口优化
一、前言
大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
作为一名从业已达六年的老码农,我的工作主要是开发后端Java业务系统,包括各种管理后台和小程序等。在这些项目中,我设计过单/多租户体系...[2024/7/3]
SpringBoot+mail 轻松实现各类邮件自动推送
一、简介
在实际的项目开发过程中,经常需要用到邮件通知功能。例如,通过邮箱注册,邮箱找回密码,邮箱推送报表等等,实际的应用场景非常的多。
早期的时候,为了能实现邮件的自动发送功能,通常会使用 JavaMail 相关的 api 来完成。后来 Spring 推出的 JavaMailSender 工...[2024/7/3]
从零开始带你上手体验Sermant自定义插件开发
本文分享自华为云社区《Sermant自定义插件开发上手体验》,作者:华为云开源。
一、研究缘由
由于目前我们所处的行业是汽车行业,项目上进行云服务的迁移时使用到了Sermant中的相关插件, 为了加深对Sermant开发和运行机制的了解,我们从零开始体验Sermant自定义插件的开发。
下面...[2024/7/3]
手把手带你使用JWT实现单点登录
JWT(英文全名:JSON Web Token)是目前最流行的跨域身份验证解决方案之一,今天我们一起来揭开它神秘的面纱!
一、故事起源
说起 JWT,我们先来谈一谈基于传统se ion认证的方案以及瓶颈。
传统se ion交互流程,如下图:
当浏览器向服务器发送登录请求时,验证通过之后...[2024/7/3]
面试官:JVM调优,主要针对是哪一个区域?JVM内存结构是怎样的?
作为一个Java程序员,在日常的开发中,不必像C/C++程序员那样,为每一个内存的分配而操心,JVM会替我们进行自动的内存分配和回收,方便我们开发。但是一旦发生内存泄漏或者内存溢出,如果对Java内存结构不清楚,那将会是一件非常麻烦的事情!本文笔者将为大家详解Java内存结构。
面试tips...[2024/7/3]
Java 将Markdown文件转换为Word和PDF文档 - E-iceblue
Markdown 凭借其简洁易用的特性,成为创建和编辑纯文本文档的常用选择。但某些时候我们需要更加精致的展示效果,例如在专业分享文档或打印成离线使用的纸质版时,就需要将Markdown文件以其他固定的文档格式呈现。通过将 Markdown 转换为 Word 和 PDF 格式,可以得到更多的格式设...[2024/7/1]
项目随笔-【大事件(文章类)】
项目随笔-【大事件(文章类)】
自定义参数校验注解
需要写一个自定义注解Xxx+校验规则的类XxxValidation【需要继承ConstraintValidator】
自定义注解
@Documented
@Target(ElementType.FIELD)
@Retention(Reten...[2024/7/1]
从零开始学Spring Boot系列-集成Spring Security实现用户认证与授权
在Web应用程序中,安全性是一个至关重要的方面。Spring Security是Spring框架的一个子项目,用于提供安全访问控制的功能。通过集成Spring Security,我们可以轻松实现用户认证、授权、加密、会话管理等安全功能。本篇文章将指导大家从零开始,在Spring Boot项目中集...[2024/7/1]
Spring MVC 获取三个域(request请求域,session 会话域,application 应用域)对象的方式 - Rainbow-SeaSpring MVC 获取三个域(request请求域,session 会话域,application 应用域)对象的方式 - Rainbow-Sea
1. Spring MVC 获取三个域(request请求域,se ion 会话域,application 应用域)对象的方式
@目录1. Spring MVC 获取三个域(request请求域,se ion 会话域,application 应用域)对象的方式2. Servlet中的三个域对象3...[2024/7/1]
不单独部署注册中心,又要具备注册中心的功能,咋不让我上天?
开心一刻
暗恋公司的一个女同事,聊了快一年了,一直没勇气表白
上个月突然找我借 5000 块钱,我直接转给她了
我:这钱干嘛用的?
她:给男朋友买个手机
我强颜欢笑说:你真贴心
几天后我收到一个快递,打开一看是部手机!!!
我压抑着内心的激动,放下手头的工作,立马微信上问她怎么回事
...[2024/7/1]
OpenTelemetry 深度定制:跨服务追踪的实战技巧
背景
在上一篇《从 Dapper 到 OpenTelemetry:分布式追踪的演进之旅》中在最后提到在做一些 Trace 的定制开发。
到现在差不多算是完成了,可以和大家分享一下。
我们的需求是这样的:
假设现在有三个服务:ServiceA、ServiceB、ServiceC
S...[2024/6/28]
面试官:transient关键字修饰的变量当真不可序列化?我:烦请先生教我!
一、写在开头
在这篇文章中记录一下之前自己面试时学到的东西,是关于transient关键字的,当时面试官问我IO的相关问题,基本上全答出来了,关于如何不序列化对象中某个字段时,我果断的选择了static和transient,但面试官紧接着问了我:“transient关键字修饰的变量当真不可序列化...[2024/6/28]
如何在Spring Boot框架下实现高效的Excel服务端导入导出?如何在Spring Boot框架下实现高效的Excel服务端导入导出?
前言
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。今天我们就使用纯前对按表格控件带大家了解,如何在Spring Boot框架下实现Excel服务...[2024/6/26]
EMQX配置ssl/tls双向认证+EMQX http客户端设备认证(Java实现)_真实业务实践 - Tom-shushu
一.使用docker搭建Emqx
1.拉取emqx镜像
docker pull emqx/emqx:5.7
2.运行
docker run -d --name emqx emqx/emqx:5.7
3.拷贝 docker中 etc data log 到宿主机的 /opt/emqx 下...[2024/6/26]
使用 Spring 实现控制反转和依赖注入
使用 Spring 实现控制反转和依赖注入
概述
在本文中,我们将介绍IoC(控制反转)和DI(依赖注入)的概念,以及如何在Spring框架中实现它们。
什么是控制反转?
控制反转是软件工程中的一个原则,它将对象或程序的某些部分的控制权转移给容器或框架。我们最常在面向对象编程的上下文中使用它。...[2024/6/26]
面试官:告诉我为什么static和transient关键字修饰的变量不能被序列化?
一、写在开头
在上一篇学习序列化的文章中我们提出了这样的一个问题:
“如果在我的对象中,有些变量并不想被序列化应该怎么办呢?”
当时给的回答是:不想被序列化的变量我们可以使用transient或static关键字修饰;transient 关键字的作用是阻止实例中那些用此关键字修饰的的变量序列...[2024/6/25]
EasyExcel 无法读取图片?用poi写了一个工具类
在平时的开发中,经常要开发 Excel 的导入导出功能。一般使用 poi 或者 EasyExcel 开发,使用 poi 做 excel 比较复杂,大部分开发都会使用 EasyExcel 因为一行代码就能实现导入和导出的功能。但是 EasyExcel 不支持图片的读的操作,本文操作如何实现图片的...[2024/6/25]
ThreadLocal 源码浅析
前言
多线程在访问同一个共享变量时很可能会出现并发问题,特别是在多线程对共享变量进行写入时,那么除了加锁还有其他方法避免并发问题吗?本文将详细讲解 ThreadLocal 的使用及其源码。
一、什么是 ThreadLocal?
ThreadLocal 是 JDK 包提供的,它提供了线程本地变...[2024/6/25]
Java实现管线拓扑关系连通性分析
管线拓扑关系的连通性分析通常涉及图论(Graph Theory)中的概念,特别是无向图(Undirected Graph)的遍历算法,如深度优先搜索(DFS, Depth-First Search)或广度优先搜索(BFS, Breadth-First Search)。
在管线拓扑中,管线可以被...[2024/6/25]
如何使用JavaScript实现在线Excel附件的上传与下载?
前言
在本地使用Excel时,经常会有需要在Excel中添加一些附件文件的需求,例如在Excel中附带一些Word,CAD图等等。同样的,类比到Web端,现在很多人用的在线Excel是否也可以像本地一样实现附件文件的操作呢?答案是肯定的,不过和本地不同的是,Web端不会直接打开附件,而是使用超链...[2024/6/19]
SpringBoot3整合SpringDoc实现在线接口文档
写在前面
在现目前项目开发中,一般都是前后端分离项目。前端小姐姐负责开发前端,苦逼的我们负责后端开发
事实是一个人全干,在这过程中编写接口文档就显得尤为重要了。然而作为一个程序员,最怕的莫过于自己写文档和别人不写文档
大家都不想写文档,那这活就交给今天的主角Swagger来实现了
一、专业名...[2024/6/19]
跳槽!3年Java面试经验总结
中厂->阿里->字节,成都->杭州->成都
系列文章目录和关于我
0.前言
笔者在不足两年经验的时候从成都一家金融科技中厂跳槽到杭州阿里淘天集团,又于今年5月份从杭州淘天跳槽到成都字节。自认为自己在面试这方面有一点心得,处于记录和分享的目的便有了此文,此文纯主观,也许...[2024/6/19]
【解决方案】Java 互联网项目中消息通知系统的设计与实现(上)【解决方案】Java 互联网项目中消息通知系统的设计与实现(上)
目录前言一、需求分析1.1发送通知1.2撤回通知1.3通知消息数1.4通知消息列表二、数据模型设计2.1概念模型2.2逻辑模型三、关键流程设计本篇小结
前言
消息通知系统(notification-system)作为一个独立的微服务,完整地负责了 App 端内所有消息通知相关的后端功能实现。...[2024/6/19]
Java与React轻松导出Excel/PDF数据
前言
在B/S架构中,服务端导出是一种高效的方式。它将导出的逻辑放在服务端,前端仅需发起请求即可。通过在服务端完成导出后,前端再下载文件完成整个导出过程。服务端导出具有许多优点,如数据安全、适用于大规模数据场景以及不受前端性能影响等。
本文将使用前端框架React和服务端框架Spring B...[2024/6/19]
Linux实时查看Java接口数据
1.Linux实时查看Java接口数据的方法
在Linux系统中实时查看Java接口数据通常涉及几个步骤:
(1)编写Java应用程序:首先,我们需要有一个Java应用程序,它暴露了一个或多个HTTP接口。这些接口应该返回我们想要实时查看的数据。
(2)使用HTTP工具或库:在Linux上,...[2024/6/19]
Fastjson基础环境配置与Java基础概念
Preface
此篇系列文章将会从 Java 的基础语法开始,以 Fastjson 的各个反序列化漏洞分析为结尾,详细记录如何从一个具有基础面向对象编程但毫无 Java 基础的小白成长为了解 Fastjson 的各个漏洞并能够熟练利用的网络安全人员。
环境配置
我们使用 IDEA 作为开发的 ...[2024/6/19]
C#.NET与JAVA互通之DES加密V2024
C#.NET与JAVA互通之DES加密V2024
配置视频:
环境:
.NET Framework 4.6 控制台程序
JAVA这边:JDK8 (1.8) 控制台程序
注意点:
1.由于密钥、明文、密文的输入输出参数,都是byte数组...[2024/6/17]
阿里也出手了!Spring CloudAlibaba AI问世了阿里也出手了!Spring CloudAlibaba AI问世了
写在前面
在之前的文章中我们有介绍过SpringAI这个项目。SpringAI 是Spring 官方社区项目,旨在简化 Java AI 应用程序开发,
让 Java 开发者想使用 Spring 开发普通应用一样开发 AI 应用。
而SpringAI 主要面向的是国外的各种大模型接入,对于国内...[2024/6/17]
高级前端开发需要知道的 25 个 JavaScript 单行代码
1. 不使用临时变量来交换变量的值
例如我们想要将 a 于 b 的值交换
let a = 1, b = 2;
交换值
[a, b] = [b, a];
结果: a = 2, b = 1
这行代码使用数组解构赋值的方式来交换两个变量的值...[2024/6/17]
面试官:Java中缓冲流真的性能很好吗?我看未必面试官:Java中缓冲流真的性能很好吗?我看未必
一、写在开头
上一篇文章中,我们介绍了Java IO流中的4个基类:InputStream、OutputStream、Reader、Writer,那么这一篇中,我们将以四个基类所衍生出来,应对不同场景的数据流进行学习。
二、衍生数据流分类
我们上面说了java.io包中有40多个类,都从I...[2024/6/17]
浅拷贝、深拷贝与序列化【初级Java必需理解的概念】
浅拷贝
首先创建两个类,方便理解浅拷贝
@Data
cla Student implements Cloneable{
年龄和名字是基本属性
private int age;
private String name;
书包是引用属性
private...[2024/6/17]
ThreadLocal 核心源码分析
ThreadLocal 简介
多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步方式之外的一种保证和规避多线程访问出现线程不...[2024/6/17]
盘点 Spring Boot 解决跨域请求的几种方法
熟悉 web 系统开发的同学,对下面这样的错误应该不会太陌生。
之所以会出现这个错误,是因为浏览器出于安全的考虑,采用同源策略的控制,防止当前站点恶意攻击 web 服务器盗取数据。
01、什么是跨域请求
同源策略,简单的说就是当浏览器访问 web 服务器资源时,只有源相同才能正常进行通信...[2024/6/17]
C#.NET与JAVA互通之MD5哈希V2024
C#.NET与JAVA互通之MD5哈希V2024
配套视频:
要点:
1.计算MD5时,SDK自带的计算哈希(ComputeHash)方法,输入输出参数都是byte数组。就涉及到字符串转byte数组转换时,编码选择的问题。
2.输入参数,...[2024/6/14]
CS后门源码特征分析与IDS入侵检测
CS后门源码特征分析与IDS入侵检测考核作业
上线x64
getshell
抓心跳包,对特征字符解密Uqd3
用java的checksum8算法得到93,说明是x64的木马
public cla EchoTest {
public static long checksum8(...[2024/6/13]
Java线程池maximumPoolSize和workQueue哪个先饱和?
先说结论,真正的饱和顺序是corePoolSize -> workQueue -> maximumPoolSize。
我们都知道,线程池有以下参数
ThreadPoolExecutor(int corePoolSize, 核心线程数
int...[2024/6/13]
AlertManager解析:构建高效告警系统
本文深入探讨了AlertManager的技术细节和实际应用,从基本概念、核心组件、工作流程,到与Prometheus的集成和实战案例,旨在为专业人士提供一个全面的AlertManager技术和应用指南。
关注作者,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、A...[2024/6/13]
MapStruct - 注解汇总
@Mapper
@Mapper 将接口或抽象类标记为映射器,并自动生成映射实现类代码。
public @interface Mapper {
引入其他其他映射器
Cla <?>[] uses() default {};
将类import 到生成的实现...[2024/6/13]
Java实际工作里用到的几种加密方式
1、Base64加密
最简单的加密方式,甚至可以说不是加密,只是一种用64个字符表示任意二进制数据的方法。Base64编码原理是将输入字符串按字节切分,取得每个字节对应的二进制值(若不足8比特则高位补0),然后将这些二进制数值串联起来,再按照6比特一组进行切分(因为2^6=64),最后一组若不...[2024/6/12]
Jenkins技术概述与开发实战
本文详细讲解了Jenkins的安装与配置、构建作业、流水线、构建、测试和部署的具体方法,涵盖关键概念、详细步骤及代码示例,旨在帮助专业从业者实现高效的CI/CD自动化流程。
关注作者,复旦博士,分享云服务领域全维度开发技术。拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济...[2024/6/12]
Jmeter进行HTTPS接口压测及SSL证书验证
一、前言
使用JMeter压测HTTPS接口比较简单,只需要预先处理SSL证书认证,后面就是压测HTTP接口的通用步骤。
HTTPS连接证书来验证浏览器和WEB服务器之间的连接。通过HTTP连接时,服务器会将证书提供给浏览器。为
了对证书进行身份验证,浏览器会检查服务器证书是否链接到其内...[2024/6/12]
面试官:如何自定义一个工厂类给线程池命名,我:现场手撕吗?
面试场景模拟
面试官:小伙子平时开发中用过线程池吗?聊一聊它
我:肯定用过啊,然后把build的线程池十八问一顿巴拉巴拉
面试官:不错不错,挺了解的嘛,那你知道怎么给线程池命名?手写一个工厂类给线程池命名吧
我:啊这,现场手撕吗?面试官默默的递上A4...
? ?如何给线程池命名?这...[2024/6/11]