自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 问答 (3)
  • 收藏
  • 关注

原创 SpringCloud Alibaba(2021.0.1版本)微服务-OpenFeign以及相关组件使用(保姆级教程)

🌟 本套mode使用的是Alibaba的2021.0.1版,springboot的2.6.3实现(适用于springboot 2.7~2.4),使用到的组件包括OpenFeign(实现远程调用)、loadbalancer(负载均衡)、hystrix(熔断降级)、nacos(注册中心)

2023-09-08 21:33:18 1749 1

原创 前端加springboot实现Web Socket连接通讯以及测试流程(包括后端实现心跳检测)

写这个项目主要是有有个项目需要后端有数据实话返回前端,一开始采用前端轮询的方式,后面觉得及时性上有些不行,然后改为使用websocket ,具体实现demo以及测试流程发出来提供交流学习,WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

2023-08-22 17:25:13 1938

原创 【2023】java通过modbus4j实现modus TCP通讯

Modbus RTU:——传输的是字节数组(bit[])通信:读写输出:可以读写输入:只能读存储区:输出线圈、输入线圈、输出寄存器、输入寄存器存储区范围:5位和6位功能代码0x01:读线圈0x02:读离散量输入0x03:读保持寄存器0x04:读输入寄存器测试使用Modbus Slave() 模拟saveid:看资料"从站在modbus总线上可以有多个",仿真软件就能模拟一个从站,就是ID=1,当然可以修改成ID=2。

2023-07-12 16:07:23 7837 13

原创 【2023】JAVA和PLC实现通讯读取写入数据,以三菱PLC举例

进行PLC连接需要了解两个概念:长连接和短连接。为了更好的说明当前的通信情况,我把所有的通信拆分为四个部分,连接,发,收,断开。短连接:连接,发,收,断开,连接,发,收,断开,连接,发,收,断开,连接,发,收,断开…无限循环长连接:连接,发,收,发,收,发,收,发,收,发,收,发,收,发,收,发,收,发,收…断开

2023-07-04 17:08:19 8733 27

原创 【2024】Kafka Streams详细介绍与具体使用(1)

Kafka Streams是构建在Apache Kafka之上的客户端库,用于构建高效、实时的流处理应用。它允许你以高吞吐量和低延迟的方式处理记录流,并且可以容易地扩展和复制数据处理流程。这种流处理方式适用于从简单的数据转换到复杂的事件驱动的应用程序。

2024-06-05 20:16:34 950

原创 【2024】通过EasyExcel实现不定长Excel表头导出、以及多sheet页和单元格合并效果

EasyExcel是阿里巴巴开源的一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。

2024-06-05 19:11:58 1197

原创 【2024】Gradle安装配置以及基于Kotlin 进行详细使用

在java的项目开发过程中我们会使用到一些依赖管理的构建工具、目前常用的主要有Maven和Gradle两种;Maven不用多说,基本上学java的基本上都会用到,毕竟是现在使用最多的,也是使用的比较久的了,但maven由于使用的是XML进行配置,相对比较繁琐,可读性也比较差;而且构建的数据较慢,不支持增量构建;小项目还好,当比较大型的项目时,就会比较影响。所以Apache重新孵化出了一个新的项目,就是Gradle。

2024-05-10 19:27:55 1410

原创 【2024】springboot通过阿里云oss进行文件单个批量文件上传下载

写该项目主要是自己编写小程序,需要进行存储一些图片以及视频,在我们进行文件存储的时候,主要可以通过纪中途径进行存储,可以选择通过转二进制直接存储在数据库,或者直接存储在前端服务器,也可以自己搭建一个文件存储系统(如minio、FastDFS等),还有就是可以存储在第三方搭建好的云存储服务器,最常用的就是阿里OSS了,也就是我使用的、拿来即用。

2024-04-24 22:24:35 1010

原创 【2024】kafka原生以及配合springboot的使用(Kafka-3)

本文主要是介绍通过使用原生代码方式和结合springboot分别如何更好的去使用理解kafka如果需要看理论或者安装kafka可以看我前面两篇内容🍅kafka使用和安装。

2024-04-02 21:26:15 1483

原创 【2024】kafka入门学习与使用(kafka-2)

Kafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区、多副本,基于Zookeeper的分布式消息流平台(2.8版本以后可以不需要依赖目前已经成为 Apache 软件基金会的顶级项目。它被设计用于处理大规模的实时数据流,并具有高吞吐量、低延迟、高可靠性和可扩展性等特点。kafka如果还没安装的可以看下面的文章🍅kafka-linux和docker安装消息队列:用于存放消息的一个组件消息队列最主要的作用其实是用于帮我们解决通信问题,通过内部封装,定义规范帮我们实现简单异步通信;

2024-03-30 18:36:33 1073

原创 【2023】kafka在linux和docker安装(kafka-1)

先进入`kafka/bin`目录下- . 创建topic 1. `./kafka-topics.sh`:脚本路径,都默认存放bin目录下 2. `my_topic`:主题名字 3. `localhost:9092` :zookeeper的ip和端口 4. `3` :分区设置三个 5. `1`:副本设置一个

2024-03-30 18:29:02 1094 1

原创 【2024】java使用WebClient实现chatGPT调用建立web socket连接

通过java实现对chatGPT的API接口实现websocket流式输出以及接口调用两种方式代码。

2024-01-20 16:12:40 1820

原创 【2024】ArrayList和LinkedList详解介绍对比

ArrayList是实现了List接口的动态数组,所谓动态数组就是他的大小是可变的。实现了所有可选列表操作,并允许包括Null在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。默认初始容量是10。默认初始容量为10。随着ArrayList中元素的增加,它的容量也会不断的自动增长。

2024-01-09 09:22:12 1271 1

原创 【2023】java常用HTTP客户端对比以及使用(HttpClient/OkHttp/WebClient)

现在java使用的http客户端主要包括以下几种而这些中使用得最频繁的主要是:Apache HttpClient:这是一个功能强大且广泛使用的第三方库,用于进行HTTP通讯。它提供了更高级的API和更丰富的功能,比如支持连接池、认证、重定向、Cookie管理等。Apache HttpClient可以作为独立的库使用,也可以作为Apache HttpComponents项目的一部分。OkHttp:这是另一个流行的第三方库,用于进行HTTP通讯。

2024-01-09 09:12:32 1871

原创 【2023】hadoop基础介绍

通过分布式的方式进行存储5,为了避免block块丢失,一般会进行冗余备份(通过添加副本块的方式备份),避免文件丢失。在进行读写时,会优先读写到网络距离最近的那台dataNode给客户端进行读写,实现读写的最优解。操作命令添加协议头就会分别是对对应的系统执行,如果不带是会按照。hadoop安装教程可以看我这篇文章===>产品插件用于使用:Big Data Tools。采用的是分散—>汇总模式进行分布式计算。分布式存储:主从架构——架构角色。HDFS只能追加和删除,不能修改。追加数据到HDFS文件。

2023-12-28 22:19:33 996

原创 【2023】通过docker安装hadoop以及常见报错

准备安装的环境,最好是cenos的环境,相对问题会少一些,我因为是mac的内存比较珍贵,所以嫌麻烦就没安装虚拟机,所以问题非常多(所以还是不要嫌麻烦最好),就使用的是mac。的,该镜像除了hadoop还需要有jdk,所以需要先把jdk的包先准备好,因为要用到hive,我把hive的包也内嵌进去了,所以需要把包先准备好。找到下面截图的这个位置把地址修改为jdk的实际安装路径,不要是{}的,路径是前面配置的Dockerfile文件时配置的路径。创建一些文件夹,用于存储hadoop运行时时产生文件的存储。

2023-12-28 22:02:21 1513

原创 nacos配置中心配置已经常见错误总结

🌟 本套mode使用的是Alibaba的2021.0.1版,springboot的2.6.3实现(适用于springboot 2.7~2.4),Nacos使用的最新的2.2.3版本,如果需要看安装nacos和基础搭建可以看我下面的博客!nacos的安装和基本配置使用可以查看我这篇博客,或者关注下面的专栏后续会持续更新其他的Spring Cloud 组件介绍以及使用🍅Nacos下载与安装配置(2.2.3版本示例)🥒Spring Cloud Alibaba专栏。

2023-12-24 22:38:16 2154

原创 【2023】通过redis 实现分布式锁由原生到Redisson代码三种实现和介绍

- **获取锁**:使用`redisTemplate.opsForValue().setIfAbsent()`, 方法实现,该方法的底层其实就是调用了`execute()`方法实现了`setnx`命令(先进行判定键是否存在,不存在则设置key,成功后返回`true`;存在则直接返回`false`)。 - **释放锁**:直接使用`redisTemplate.delete()`方法删除掉该key即可释放成功。但在删除之前需要通过验证值的方式,验证是否是该线程自己的锁。

2023-10-25 11:38:06 231

原创 【2023】redis-stream配合spring的data-redis详细使用

(包括广播和组接收)

2023-10-19 16:29:08 782

原创 【2023】redis-stream配合spring的data-redis详细使用(包括广播和组接收)

Redis Stream(Redis Streams)是Redis 5.0版本引入的一种数据结构,用于处理时间序列数据、消息队列和日志流。它提供了高吞吐量、持久性、有序、可扩展的消息传递解决方案。Redis Stream 结构是对传统发布/订阅模式的增强,使你能够更灵活地处理数据流,并提供了以下主要特性:多生产者和多消费者:多个生产者可以同时向 Stream 中写入消息,而多个消费者可以独立订阅并消费消息。每个消费者可以有不同的消费速率。

2023-10-15 20:05:10 642

原创 【2023】从事务的特征以及解决方式上分析MySQL是如何保证事务的

事务,事务到底是什么?事务其实就是以一组访问或者更新数据库的各种数据项的一个执行单元,可以是一条也可以是多条执行操作。- 在针对查询时,只要是在本事务内执行的查询操作,不管数据库被如何被其他事务修改了,只要本事务内没修改,事务内查询的结果都会返回一致的结果.- 针对修改操作时,不管多少条修改语句,在执行过程中会出现三种情况,执行成功提交事务,数据库全部修改成功;系统中断,全部回滚,全部回退到事务开启之前的结果;一条执行失败,全部回滚,全部回退到事务开启之前的结果

2023-09-19 15:09:32 301

原创 【2023】基于docker 实现部署jar包项目(包括单个和多个一起部署)

该方式适用于jar包较少时,项目复杂度不高时使用,如果部署的比较多的话还是建议使用docker的编码工具Docker Compose或者k8s进行统一部署。

2023-09-11 20:00:00 4858 4

原创 【2023】CompletableFuture使用代码案例实习使用场景介绍-(保姆级教程)

是 Java 8 引入的一种异步编程工具,位于包中。它提供了一种方便的方式来执行异步任务,并在任务完成时执行相应的操作。是对Future的扩展和增强;是一种可完成或失败的Future。它提供了一种通用的机制来处理异步操作的结果,包括处理异步任务的完成、异常处理和组合多个异步任务的结果。并且通过实现CompletionStage实现了对任务编排的能力,执行某一阶段,可以向下执行后续阶段。异步执行的时候,如果未定义线程池,默认线程池是。

2023-09-04 17:38:19 234

原创 【2023】Spring Validation中@NotNull注解、@NotBlank注解介绍以及使用

注解:JSR 303 定义了一组用于验证的注解,如 @NotNull、@Size、@Pattern、@Min、@Max 等。通过在 Java 对象的属性上添加这些注解,可以指定验证的条件和约束。早期的 Spring Web 基于 Hibernate Validator 实现了这些校验规范。在后期,Spring 将这部分校验独立成为了一个模块spring-validation,需要额外引入依赖实现相关注解校验。

2023-08-25 17:34:08 2498

原创 【2024】MySQL中常用函数和窗口函数的基本使用方式

- `SELECT COUNT(*) FROM table_name;`:计算表中的行数。- `SELECT SUM(column_name) FROM table_name;`:计算表中指定列的总和。- `SELECT AVG(column_name) FROM table_name;`:计算表中指定列的平均值。- `SELECT MAX(column_name) FROM table_name;`:返回表中指定列的最大值。

2023-08-16 17:49:31 780

原创 【2023】java打印PDF(不需要调用浏览器直接静默打印)

实现步骤先大致介绍一下这篇文章的内容,主要是通过 Adobe Acrobat DC(或者其他的PDF模板制作app),制作好PDF模板,然后通过`itextpdf`框架把数据写入到模板对应的文本域中,可以实现PDF文件打开,写入的内容可以正常显示代表pdf文件制作没用问题了。- 然后在需要连接打印机打印的上部署一个调用本地打印机的jar包,jar主要通过`pdfbox`框架实现调用本地打印机,成功把需要打印的pdf文件传递到打印机的打印队列,实现打印。在打印机主机的jar写好接受服务器打印的pdf

2023-08-09 16:42:47 2866 1

原创 XXL-Job 具体通过docker 配置,再通过springboot执行注册实现完整流程

在平时的业务场景中,经常有一些场景需要使用定时任务,比如: - 时间驱动的场景:某个时间点发送优惠券,发送短信等等。 - 批量处理数据:批量统计上个月的账单,统计上个月销售数据等等。 - 固定频率的场景:每隔5分钟需要执行一次。

2023-08-04 18:03:13 1231

原创 【2023】Redis实现消息队列的方式汇总以及代码实现

经常听到很多人讨论,关于「把 Redis 当作队列来用是否合适」的问题。有些人表示赞成,他们认为 Redis 很轻量,用作队列很方便。也些人则反对,认为 Redis 会「丢」数据,最好还是用「专业」的队列中间件更稳妥。这篇文章就聊一聊把 Redis 当作队列,究竟是否合适这个问题。我们会从简单到复杂,一步步带你梳理其中的细节,把常用的实现方式展现一遍。好了,总结一下。

2023-08-02 17:22:06 1203

原创 【2023】分享国内外大厂开发主要AI网站

(Midjourney,ChatGPT,Stable Diffusion绘画)(生成Midjourney关键词,每天免费60张)(DALL·E和Midjourney绘画)(生成Midjourney关键词)​。(论文知识库,与论文AI对话)(支持GPT4的科研神器)(帮你阅读生成知识图谱)(快速提取PDF信息)(通过文字实现P图)

2023-07-27 11:14:45 450

原创 【2023】java数据结构-时间、空间复杂度分析

时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间。空间复杂度(Space Complexity)是算法在执行过程中所需的额外空间的量度。它用于评估算法对内存资源的使用情况,包括算法使用的额外内存空间的大小和增长趋势。时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。O(1):只要代码的执行时间不随着n的增大而增大,这样的代码复杂度都是O(1)。O(n):T(n)与代码的执行次数成正比(代码的执行时间越长,时间复杂度越高)

2023-07-26 16:24:28 210

原创 【2023】Nacos下载与安装配置(2.2.3版本示例)

1.1 什么是NacosNacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施开启鉴权之后,你可以自定义用于生成JWT令牌的密钥,

2023-07-26 09:34:58 19938 4

原创 【2023】HashMap详细源码分析解读

HashMap是Map中的重要实现类,它是一个散列表,存储的内容是键值对(key=>value)映射。HashMap是非线程安全的。HashMap中允许存储null的键和值,键是唯一的。在JDK1.8以前,HashMap的底层数据结构是纯粹的数组+链表结构。由于数组具有读取快,增删慢的特点,而链表具有读取慢,增删快的特点,HashMap将二者相结合,并且没有使用同步锁进行修饰,它的性能较好。数组是HashMap的主体,链表则是为了解决哈希冲突而引入。拉链法。

2023-07-25 17:40:54 260 1

原创 【2023】ArrayList和LinkedList详解介绍对比

可以被当作堆栈(后进先出)、队列(先进先出)或双端队列进行操作。数据添加删除效率高,只需要改变指针指向即可,但是访问数据的平均效率低,需要对链表进行遍历。非同步,线程不安全。支持null元素、有顺序、元素可以重复不要使用普通for循环去遍历LinkedList,使用迭代器或者foreach循环(foreach循环的原理就是迭代器)去遍历LinkedList即可:这种方式是直接按照地址去找数据的,将会大大提升遍历LinkedList的效率。

2023-07-21 17:37:43 219

原创 【2023】java中多线程中synchronized的八种实现方式

普通同步方法(同步代码块)如果是相同实例对象的则会发生互斥,如果是不同实例对象调用则不会发生互斥静态同步方法(同步代码块)则不管是什么方式调用都会发生互斥,需要等待。

2023-07-20 18:01:27 301

原创 【2023】使用alibaba的easyexcel框架实现excel表格及二维码下载(简洁、高效没有多余代码,都有注释)

生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到KB级别,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。

2023-07-19 17:54:55 509

原创 【2023】java内存溢出和内存泄漏代码测试及检测

在这个例子中,循环申请Object 对象,并将所申请的对象放入一个Vector 中,如果仅仅释放引用本身(o=null),那么Vector 仍然引用该对象,所以这个对象对GC 来说是不可回收的。我们知道jvm通过持久带实现了java虚拟机规范中的方法区,而运行时常量池就是保存在方法区中的,因此发生这种溢出可能是运行时常量池溢出,或是由于程序中使用了大量的jar或class,使得方法区中保存的class对象没有被及时回收或者class信息占用的内存超过了配置的大小。

2023-07-18 17:57:21 1754

原创 【2023】多线程之 Fork/Join框架

Fork/Join框架是一个实现了ExecutorService接口的多线程处理器,它专为那些可以通过递归分解成更细小的任务而设计,最大化的利用多核处理器来提高应用程序的性能。与其他ExecutorService相关的实现相同的是,Fork/Join框架会将任务分配给线程池中的线程。而与之不同的是,Fork/Join框架在执行任务时使用了工作窃取算法。fork在英文里有分叉的意思,join在英文里连接、结合的意思。

2023-07-17 17:33:24 320

原创 【2023】项目开发过程中接口幂等性解决方案实现,及代码示例

使用redis的原生操作SETNX命令来实现,这个方法会发送一条命令到Redis服务器, 如果键不存在,则设置键值对,并设置过期时间,返回true;如果键已经存在,则不做任何操作,并返回false。 使用Redis原生操作实现虽然简单,但在高并发情况下可能存在竞争条件的问题,因为尽管setIfAbsent方法本身是原子的,但在设置过期时间时不是同一个操作, 可能存在一定的延迟,具体根据自己情况来,如果对原子性

2023-07-17 17:15:55 555

原创 【2023】RabbitMQ配合springboot使用代码实现

Direct是RabbitMQ默认的交换机模式,也是最简单的模式.即创建消息队列的时候,指定一个BindingKey.当发送者发送消息的时候,指定对应的Key.当Key和消息队列的BindingKey一致的时候,消息将会被发送到该消息队列中.主要是依据一种模式(通配符+字符串),而当发送消息的时候,只有指定的Key和该模式相匹配的时候,消息才会被发送到该消息队列中.把队列注入容器,初始化时创建:类上需要加配置类注解-config:配置类。sender:生产者。配置类:config。配置类:config。

2023-07-14 16:01:53 169

原创 【2023】RabbitMQ基本介绍及代码实现(1)

MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。

2023-07-14 15:54:47 607

java常用书籍自学专用

java常用书籍自学专用

2023-09-14

sql练习题目包括答案

sql练习题目包括答案

2023-09-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除