
Java
文章平均质量分 76
以Java为基础,逐步深入,搭建完整架构体系
SoftwareDevOps
CSDN全栈领域优质创作者、特邀专家博主;阿里云乘风计划者博主专家、华为云云享专家
展开
-
xxl-job如何动态传参
调度中心:统一管理任务调度平台上的调度任务,负责触发调度执行,并且提供任务管理平台。它主要负责管理调度信息,按照调度配置发出调度请求,但自身不承担业务代码。执行器:接收调度中心的调度并且执行,可以直接执行也可以集成到项目中。它负责接收调度请求并执行任务逻辑,包括执行请求、终止请求和日志请求等。原创 2024-11-26 17:03:10 · 2307 阅读 · 0 评论 -
探究短信里的短链接是如何实现的
我们日常在收短信的时候,会经常发现,他们的短信里的跳转链接,都是非常短非常短的,这是为什么呢?因为现在短信新规出来,是按字数收费的,而不是按条。比如腾讯云短信新规,70字为一条,哪怕你是一条短信,100个字,就会按照两条来计费,这个时候短链接就有了相当大的优势。那么短链接是如何实现的呢?原创 2024-08-21 13:20:29 · 1260 阅读 · 1 评论 -
Java如何实现pdf转base64以及怎么反转?
今天在做发送邮件功能的时候,发现邮件的附件部分,比如pdf文档,要求先把pdf转为base64,邮件才会发送。那接下来就先看看Java 如何把 pdf文档转为base64。两种方式,一种是通过插件 jar 包的方式引入,另外一种则是 通过原生的 文件流来读取pdf 并转为 byte 字节。原创 2024-06-03 18:53:33 · 2506 阅读 · 1 评论 -
java.lang.IllegalStateException: Failed to load property source from location ‘classpath:/applicatio
从这个报错里,我们可以清晰的看出是加载文件出了问题,我们需要先排查下配置文件是否出现了问题。比如格式错误,拼写错误等等这种低级的错误。最后找到问题,因为这个文件的编码格式是GBK,项目的编码格式是UTF-8,里面有注释,注释乱码,导致编译失败。如果你的文件名称是完全正常的,编译后的target文件里面也有application-dev.yml,那你。再给大家看下完整的报错信息,是不是这样的。原创 2024-03-20 16:04:11 · 9169 阅读 · 0 评论 -
单例模式的双重检查锁定是什么?
单例模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。双重检查锁定(Double-Checked Locking)是一种在单例模式中使用的性能优化技术。在传统的单例模式实现中,我们通常通过将构造函数设为私有,再提供一个静态方法来返回类的唯一实例。而双重检查锁定则是在这个基础上增加了线程安全的考虑,避免在多线程环境下出现性能问题和错误结果。双重检查锁定的基本思想是在获取单例对象时进行双重检查,即先检查实例是否已经创建,如果尚未创建,再进行同步操作来确保只有一个线程创建实例。原创 2023-12-27 13:42:38 · 15319 阅读 · 0 评论 -
单例模式的双重检查锁定是什么
单例模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。双重检查锁定(Double-Checked Locking)是一种在单例模式中使用的性能优化技术。在传统的单例模式实现中,我们通常通过将构造函数设为私有,再提供一个静态方法来返回类的唯一实例。而双重检查锁定则是在这个基础上增加了线程安全的考虑,避免在多线程环境下出现性能问题和错误结果。双重检查锁定的基本思想是在获取单例对象时进行双重检查,即先检查实例是否已经创建,如果尚未创建,再进行同步操作来确保只有一个线程创建实例。原创 2023-11-13 10:34:26 · 1110 阅读 · 0 评论 -
Elasticsearch实现全文搜索的步骤和实现原理
在分布式搜索中,Elasticsearch 使用一种叫做倒排索引分布式的技术来加速搜索。当搜索请求到达时,各个分片将自己的搜索结果返回给协调节点(coordinator),协调节点负责合并、排序和返回最终的搜索结果。ElasticSearch(简称为ES)是一个基于开源的分布式搜索和分析引擎,它提供了强大的全文搜索、结构化查询、实时数据分析和可视化等功能。倒排索引是一种将文档中的词汇出现映射到文档的数据结构,它提供了快速查找某个词汇在哪些文档中出现的能力。这样可以保证搜索时能够准确匹配到文档中的词汇。原创 2023-09-26 19:01:23 · 17806 阅读 · 1 评论 -
2023年了,还不知道你的事务为什么会失效吗?
事务(Transaction)是指作为一个逻辑单位执行的一系列数据库操作。它将一组相关的操作视为一个整体,要么全部成功执行,要么全部回滚,以保证数据库的一致性和完整性。原子性(Atomicity):事务中的所有操作要么全部执行成功,要么全部回滚失败,没有中间状态。如果事务中的任何一个操作失败,那么所有的操作都将被回滚,数据库状态被恢复到事务开始之前的状态。一致性(Consistency):事务在执行前和执行后,数据库的完整性约束必须得到保持。原创 2023-09-26 10:42:40 · 16479 阅读 · 0 评论 -
你对java的原子性了解多少?
在Java中,原子性是指一个操作是不可被中断的整体操作。原子性确保一个操作在多线程环境下执行时,不会被其他线程干扰,要么完全执行成功,要么完全不执行。通过运行这个测试程序,可以看到无论多少个线程执行,最终计数器的值都是正确的,这得益于。Java实现原子性的原理主要依赖于底层硬件和虚拟机的支持。我们创建了多个线程,并启动它们来并发地访问计数器。方法,将计数器的值增加指定的次数。最终,我们输出计数器的最终值。方法可以保证对计数器的操作具有原子性。类来存储计数器的值,并定义了。类提供了原子性的操作。原创 2023-09-17 18:21:10 · 18855 阅读 · 1 评论 -
你对Spring Security使用场景以及底层原理有了解吗?
Spring Security是一个基于Spring框架的安全性解决方案,提供了全面的身份验证、授权和安全功能。它可以应用于多种场景以确保应用程序的安全性和保护敏感资源。Spring Security广泛应用于各种场景,包括Web应用程序、RESTful API、微服务架构中的认证和授权。它提供了强大的安全性功能,可以帮助开发人员保护应用程序免受恶意攻击,并确保只有授权用户可以访问受保护的资源。原创 2023-09-17 18:06:21 · 18024 阅读 · 2 评论 -
你对lambda表达式的使用方法以及底层原理了解吗?
Lambda表达式是Java编程语言中引入的一种函数式编程的特性,它可以用更简洁的方式来表示匿名函数。Lambda表达式可以作为一种行内函数,用于替代传统的匿名内部类。其中,parameters表示Lambda表达式的参数列表,可以为空或包含一个或多个参数。箭头符号->将参数列表与表达式或代码块进行分隔。如果Lambda表达式只有一条表达式,可以直接写表达式;如果Lambda表达式需要执行多条语句,则需要使用代码块{}来包裹语句。原创 2023-09-17 17:43:07 · 18997 阅读 · 2 评论 -
Java中stream是什么?有什么作用?如何使用?
在Java中,Stream(流)是一种用于操作集合(Collection)、数组等数据源的API。它提供了一种功能强大且表达力高的编程模型,可以用更简洁、更具可读性的方式处理数据。Stream的主要作用是进行数据的转换、筛选、聚合等操作,可以极大地简化对数据的处理。使用Stream可以避免显式地使用迭代器或循环来操作集合,提高代码的可读性和简洁性。stream()在上述示例中,我们首先获取了一个整数列表作为数据源。然后,通过调用stream()方法获取了一个数据流。接着,使用中间操作filter()原创 2023-09-17 17:30:29 · 19873 阅读 · 4 评论 -
java中零拷贝和深拷贝的原理以及实现探究
深拷贝和零拷贝是两个在 Java 中广泛使用的概念,它们分别用于对象复制和数据传输优化。下面将详细介绍这两个概念的原理,并给出相应的 Java 代码示例。原创 2023-09-17 16:19:45 · 17652 阅读 · 0 评论 -
如何在Spring Boot中配置双数据源?
如何在Springboot中配置双数据源?原创 2023-07-28 20:59:16 · 26550 阅读 · 5 评论 -
Java如何实现定时读取json文件里的内容
Java 读取json文件里的内容已经实现,那么接下来就可以添加定时任务,来定时去执行。那么关于定时任务,市面上也有很多方法,但今天这次就先用Java 8 自带的Timer来实现,不需要依赖什么jar包,轻量级的定时任务。其实市面上获取json配置文件中的内容多种多样,但该方法用了极简的形式来实现,代码不多,还是很方便的。为了及时获取最新的货物信息并进行后续处理,我们就需要编写一个程序,它能够每天准时自动读取这个JSON文件,并将读取到的数据用于后续的业务逻辑。注解,它会自动去执行。原创 2023-07-18 14:40:07 · 24638 阅读 · 1 评论 -
java 如何快速实现异步调用方法
在实现异步调用之前,我们先了解一下,什么是异步编程?什么场景下适用等等情况。我们都知道,在传统的同步编程中,当一个操作开始执行时,程序会阻塞并等待该操作完成,然后才能继续执行后续代码。这种阻塞等待的方式可能会导致程序响应性能下降,因为在等待的过程中无法同时处理其他任务。这种显而易见的,在某种耗时的场景下,就显得无用了,甚至很影响体验。如文件读写、网络请求或计算密集型任务,再如人脸融合特效等等,都是耗时的操作,这个时候,我们就需要异步编程了。原创 2023-07-13 12:04:46 · 34817 阅读 · 4 评论 -
如何利用Java实现 AI 人脸融合特效
如何利用Java实现 AI 人脸融合特效原创 2023-07-10 19:25:16 · 33244 阅读 · 8 评论 -
java实现远程执行Linux下的shell脚本
最近有个项目,需要在Linux下的服务器内写了一部分Python脚本,业务处理却是在Java内,那么就想能不能在Java里面,来远程执行Linux下的Python脚本,就是把shell命令写到Java里面。我们想要去执行Linux下的shell命令,那我们第一步的操作就是应该去连接服务器,先和服务器打通才能进行下一步。如果想要执行的输出结果的话,我们可以加上InputStream输出流,来确认是否执行成功。当我们连接上服务器后,我们就需要打开一个Session,来执行我们的脚本shell命令。原创 2023-06-30 16:02:55 · 32353 阅读 · 0 评论 -
使用ganymed-ssh2连接linux报错 Cannot negotiate, proposals do not match
最近有个项目,需要在Linux下的服务器内写了一部分Python脚本,业务处理却是在Java内,那么就想能不能在Java里面,来远程执行Linux下的Python脚本,就是把shell命令写到Java里面。于是上网查了下,还真有第三方jar库,专门给java提供远程执行ssh的一个第三方jar包,于是一顿操作接入后,一执行,发现报错!然后我们再运行下代码,我这边执行的shell命令是ls,即在root目录下,列出当前文件夹。这是因为算法加密的不同导致的,我们可以在Linux下打开ssh的配置文件进行修改。原创 2023-06-29 13:50:53 · 32979 阅读 · 1 评论 -
【微服务】一文了解Nginx网关搭建教程
nginx是一个高性能HTTP服务器,反向代理服务器,邮件代理服务器,TCP/UDP反向代理服务器。单个系统主要用于处理客户端请求,一个系统处理客户端的请求量是有限的,当客户端的并发量超过了系统的处理能力的时候,就会导致服务器性能降低,速度变慢,直接影响用户体验,所以为了提升性能,我们会创建多个服务实例,形成集群系统用于保证高可用。也有部分业务场景,需要暴露给第三方,所以我们需要暴露出部分接口给第三方,这个时候我们就可以利用Nginx的反向代理,来代理我们的后端服务器。原创 2023-06-22 09:30:00 · 23445 阅读 · 0 评论 -
java服务端如何接入WebSocket?
日常工作中,我们都是使用http请求,来进行前后交互,那么我们也会有使用websocket来进行前后交互的时候,那么它俩有什么区别呢?原创 2023-05-30 15:15:16 · 29457 阅读 · 7 评论 -
【SpringBoot】SpringBoot项目如何接入Excel?
我们在做项目的时候,Excel 导入与导出是项目中经常用到的功能,在 Java 中常用 `poi` 实现 Excel 的导入与导出。**由于 poi 占用内存较大,在高并发下很容易发生 OOM 或者频繁 fullgc,阿里基于 poi 开源了 EasyExcel 项目**。除了节约内存,`EasyExcel` 还简化了 API,通过`注解`映射 Excel 单元格与对象字段之间的关系,简单的几行代码就能搞定复杂的导入导出功能了。原创 2022-10-22 11:48:09 · 984 阅读 · 5 评论 -
SpringBoot 定时任务
Quartz、xxl-job等。但有时候,我们仅仅只是为了执行某一个场景,比如我需要定时执行某一条SQL,那如果仅仅为了这一个场景,而引入定时任务框架,是不是有点繁重和啰嗦呢?那有轻量级的定时任务吗?有的!这时候我们可以使用SpringBoot自带的三种定时任务方式,简单轻便快捷,针对小场景,非常高效!原创 2022-10-10 11:03:29 · 217 阅读 · 0 评论 -
【Java】springBoot 整合 Netty流程
目前绝大多数企业中,后台框架使用的大部分都是SpringBoot,对于做游戏行业的公司来说,不可避免会和网络通信打交道,这样就用到了RPC框架,来进行网络间的通信。那本文就介绍SpringBoot框架如何整合 Netty。关于Netty 中 数据传输使用protobuf。protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和python,每一种实现都包含了相应语言的编译器以及库文件。原创 2022-10-07 21:55:38 · 1131 阅读 · 1 评论 -
【Java】一篇文章吃透两种动态代理
JDK动态代理和CGLIB动态代理。这两种代理的应用可以说是非常广泛,在各大框架中多多少少都能看出它的身影。比如mybatis框架中使用动态代理生成的mapper,spring中的aop使用动态代理增强等。今天这篇文章就主要介绍下这两种动态代理的实现方式、原理以及优缺点。1、JDK原生动态代理时java原生支持的、不需要任何外部依赖、但是它只能基于接口进行代理(因为它已经继承了proxy了,java不支持多继承)2、CGLIB通过继承的方式进行代理。原创 2022-10-02 07:00:00 · 835 阅读 · 0 评论 -
【Caffeine】高性能缓存库,万字详解教程
大家在做项目时,遇到的第一个问题就是如何提高服务器的性能,从而提升用户的体验。当遇到这个问题时,不可避免的就会引出了缓存这个概念。而缓存(主要从服务端介绍) 又分本地缓存和分布式缓存以及数据库缓存。这三种缓存分别适应不同的场景,这里我们先介绍一下本地缓存。说到本地缓存,就不得不说到caffeine,caffeine 被称之为缓存之王。它为什么被这么多人推崇呢?这离不开它的高性能。首先,Caffeine是基于 Java 8 的高性能,接近最佳的缓存库。并且它 使用启发的 API 提供内存缓存。原创 2022-10-01 07:00:00 · 1651 阅读 · 1 评论 -
万字详解Spring相关组件配置原理
相信小伙伴们对于springIOC、AOP、DI、Bean的生命周期,用了哪些设计模式等等。大家都知道这些或多或少也了解。虽然说用的很熟悉,也能解决一些项目中的业务问题,但在用的时候有没有想过,我为什么要这么用,这么用的意义是什么,其背后的意义和原理 又是什么呢?接下来这篇文章就来剖析下,spring 中常用的一些结构,它的背后的实现原理,既能巩固自身基础也能应对面试。双赢。Spring 是一个轻量级的 Java 开发框架。Spring 的核心是控制反转(IOC)和面向切面编程(AOP)。原创 2022-09-21 08:30:00 · 727 阅读 · 0 评论 -
万字详解ThreadLocal 源码剖析及使用场景
相信大家在编程或者做项目当中,或多或少都见过,不少人觉得它很高大上,会用的都是大佬级别的。实际情况真是如此吗?你是真的用不上吗?这篇文章主要讲一下,让你看完后,能够立马投入使用,成为别人眼中的大佬!原创 2022-09-19 13:26:35 · 304 阅读 · 0 评论 -
Quartz,更优雅地管理你的定时任务
最近做项目的时候,有业务需要用到定时任务来实现,因此特地对定时任务相关知识进行了调研,记录在此。原创 2022-09-08 14:36:39 · 553 阅读 · 0 评论 -
SQL查找是否“存在“,别再count了
我们在项目当中,会经常根据某一条件从数据库表中查询 『有』与『没有』。只有两种状态,那为什么在写SQL的时候,还要`SELECT count(*)` 呢?无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的`count`,仿佛对 `count` 很情有独钟。...原创 2022-08-26 11:38:40 · 469 阅读 · 0 评论 -
rabbitMq 直连模式实现多消费者轮询消费(一对多)
通过rabbitMq的直连模式(direct)来实现多个消费者对消息的轮询读取(一对多)原创 2022-07-29 15:40:23 · 2395 阅读 · 0 评论 -
rabbitMq详细安装部署
rabbitMq的详细安装原创 2022-07-29 13:57:12 · 451 阅读 · 0 评论 -
从单体架构到分布式架构,有哪些坑?
任何一个架构风格,都可以实现功能性需求,但是一个好的架构风格能在功能性需求之上,提升非功能性需求,那么你可能会问,什么是非功能性需求?举例:**扩展性、稳定性**等等。这里我将会以我认知结合踩过的坑,来给大家详细讲一下,我们是如何从单体架构演进到分布式架构,在向分布式单体架构的演进的道路上,又如何进行的抉择,以及为什么最后同时选择了微服务架构+分布式架构的原因。接下来就结合一个系统来作为案例,贯穿主线讲解。首先来讲一下,最初的单体架构的经历和转型。...原创 2022-07-21 11:21:12 · 444 阅读 · 0 评论 -
Copy ‘XXXX‘ to effectively final temp variable
今天,在项目中使用lambda表达式遇到了一个问题:Copy 'standDatasMap' to effectively final temp variable原创 2022-07-01 15:09:30 · 2767 阅读 · 0 评论 -
项目中字符串判空总结
在项目中,相信已经有不少的伙伴们已经被java的NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨,有大佬说过“防止空指针异常,是程序员的基本修养。”但是修养归修养,也是我们程序员最令人头疼的问题之一,那么我们今天就要尽可能的利用Java8的新特性`Optional`来尽量简化代码同时高效处理NPE(Null Pointer Exception 空指针异常)。...原创 2022-07-01 14:24:30 · 844 阅读 · 0 评论 -
最受欢迎的30款开源软件
今天来分享一下最受欢迎的30款开源软件,总有一款是你的所爱。所谓开源,就是把软件的源代码开放出来,大家都能看到源代码,大家可以一起研究源代码并对软件的进行优化和改进。越来越多的IT公司对开源持开放态度,一方面有了优秀的开源项目,就不用再重复造轮子,可以直接拿来使用;另一方面,自己公司有优秀的自研项目,为了发展壮大可以选择将项目开源,让更多的开发者参与进来,一起努力提升软件的功能!原创 2022-06-29 12:24:32 · 10975 阅读 · 0 评论 -
spring boot 常用注解,让生产力up up up
在spring boot 项目实际开发中,我们用的最多的就是各种注解,如果对各个注解都了如指掌,并能灵活运用的话,那对在实际开发中肯定会让生产力大大提高。下面就对spring boot的各种注解做一个总结。希望对大家有所帮助。......原创 2022-06-15 16:39:06 · 439 阅读 · 0 评论 -
【java】提升开发效率的17个轮子
在实际开发过程中,有许多不错的小工具,也就是我们平常说的:轮子。如果在我们的日常工作当中,能够将这些轮子熟练的使用,再配合一下idea的快捷键,可以极大得提升我们的开发效率。享受快人一步的快感,成为别人眼中的大佬。今天我决定把一些压箱底的小工具,分享给大家,希望对你有所帮助。本文会分享17个我们日常工作中一定会用得到的小工具。非常适合萌新和初级开发人员,快来收藏和关注吧。......原创 2022-06-10 15:53:33 · 1028 阅读 · 2 评论 -
学习netty第一步----了解什么是异步和事件驱动
今天看了看netty的大神之作,《netty实战》,给大家推荐推荐。大家都知道netty是网络编程,在网络编程这一领域,netty的地位,无可撼动。那今天就来了解了解什么是异步和事件驱动原创 2022-06-02 17:07:50 · 496 阅读 · 0 评论 -
技能树评测
技能树的评测原创 2022-06-01 11:54:57 · 1405 阅读 · 1 评论