java
文章平均质量分 50
[奸笑]这个不是斜眼笑[奸笑]
这个作者很懒,什么都没留下…
展开
-
记录一次spring的类中注入其他类显示空指针的问题
DI(Dependency Injection)即依赖注入,是Spring框架的一个核心特性。它是一种设计模式,通过该模式,对象之间的依赖关系由容器在运行期来决定,而不是在编译期确定。原创 2024-03-12 19:18:14 · 346 阅读 · 0 评论 -
java多种方式读取文件
【代码】java多种方式读取文件。原创 2024-01-25 19:58:17 · 343 阅读 · 0 评论 -
java多线程测试websocket demo(使用文件流)
这个demo主要是利用Java多线程来测试WebSocket通信。首先,创建一个WebSocket服务器和客户端,然后使用多线程来模拟多个客户端同时连接服务器进行通信。通过多线程测试,可以验证WebSocket通信的并发性能和稳定性。同时,可以通过多线程测试来模拟不同场景下的并发请求,以便对WebSocket服务器进行压力测试和性能优化。整个demo会包括创建WebSocket服务器和客户端的代码,以及多线程测试的代码实现。通过这个demo,可以更好地了解WebSocket通信的多线程测试方法和实现。原创 2024-01-25 19:46:41 · 1193 阅读 · 0 评论 -
记录一次在文件多处理的场景中遇到的问题
当一个音频传过来的时候,需要根据A的返回值对B进行不同的处理,A接口已有,当时任务急,B接口是写死的,后面需要优化这一部分的代码。获取文件的字节流后,发现后面会报一个文件中不到的问题,仔细排查后,发现操作系统并没有这个文件。原创 2024-01-23 17:29:02 · 511 阅读 · 0 评论 -
从minio下载wav文件返回File对象
通过Minio,用户可以构建自己的私有云存储解决方案,也可以作为公共云存储服务的替代方案。Minio是一个开源的分布式对象存储服务,它兼容Amazon S3 API,可以用于构建高性能、可扩展的存储基础设施。可扩展:Minio可以轻松地扩展到数百台服务器,以满足不断增长的存储需求。高性能:Minio能够快速地处理大规模的数据,并提供高速的数据读写操作。安全性:Minio支持数据加密和访问控制,确保存储的数据得到安全保护。开源:Minio是开源的,用户可以免费使用并根据需要进行定制和扩展。原创 2024-01-23 17:21:12 · 483 阅读 · 0 评论 -
Spring Cloud Gateway 路由配置策略
Spring Cloud Gateway 路由配置策略Spring Cloud Gateway 是一个基于 Spring Boot 2.x 和 Spring WebFlux的轻量级网关服务,用于构建微服务架构中的 API 网关。它提供了一种简单、高效、灵活和可扩展的方式来路由请求到后端的微服务。Spring Cloud Gateway 的核心特性包括:路由功能:可以根据请求的属性(路径、参数等)将请求路由到相应的后端服务。过滤器功能:可以对请求进行预处理、后处理和过滤,如鉴权、日志记录等原创 2024-01-19 15:19:46 · 1071 阅读 · 0 评论 -
JVM内存区域
这些内存区域主要用于支持Java程序的运行和管理对象、方法等数据。不同的内存区域有不同的作用和管理方式,对于Java程序的性能和内存管理起着重要的作用。原创 2024-01-18 20:01:39 · 533 阅读 · 0 评论 -
记录一次transferto遇到的问题java.io.FileNotFoundException:的发生原因
有一个接口,上传文件,然后先对文件进行A处理,得到结果后保存到数据库,然后对文件进行B处理,开始的时候已经有业务A了,接受一个MultipartFile的参数,处理完保存数据库,现在需要添加一个新的功能。后对比发现正常执行的接口都是只对文件进行一次处理,包括原有的逻辑,我注释掉A逻辑,发现B逻辑可以正常执行。判断是多次读取数据,流中没有数据了。其实这个问题并不是很难发现,中间处理过程也是没想到这里的问题,当时也没有去看A逻辑的代码,导致的问题。只能说修改已有的代码还是需要慎重一点。原创 2024-01-18 19:59:31 · 837 阅读 · 0 评论 -
使用nginx代理ws为
Nginx是一个高性能的开源Web服务器,也可以用作反向代理服务器、负载均衡器和HTTP缓存。它具有低内存消耗和高并发处理能力,因此被广泛用于大型网站和应用程序的部署。Nginx的架构采用事件驱动模型,能够高效地处理并发连接,同时具有灵活的配置选项和丰富的功能模块,使其成为一个流行的Web服务器解决方案。Nginx支持多种操作系统,包括Linux、Unix、Windows等,同时也支持多种协议,如HTTP、HTTPS、SMTP、POP3和IMAP等。原创 2024-01-17 18:15:35 · 414 阅读 · 0 评论 -
解决Reinitialized existing Git repository
通过以上步骤,你应该能够成功解决"Reinitialized existing Git repository"的问题,并且重新初始化你的Git仓库。可能是因为你想重新初始化已存在的Git仓库。这可能是因为你想重置Git仓库的状态,或者想重新开始一个新的Git历史记录。确保你在正确的目录下。命令切换到你的Git仓库所在的目录。可以直接删掉.git目录即可。原创 2024-01-17 18:10:41 · 2538 阅读 · 0 评论 -
ThreadLocal用法以及使用场景
ThreadLocal类提供了一种线程局部变量的机制,使得每个线程都可以拥有自己的变量副本,从而避免了线程安全问题。get()原创 2024-01-16 20:19:50 · 393 阅读 · 0 评论 -
java使用jni调用cpp的示例
用于调用C++中的对应函数。在C++中,我们编写了四个对应的函数来执行实际的四则运算操作。当我们运行Java程序时,它将加载C++库并调用其中的函数来执行计算。首先,我们需要创建一个Java类来调用C++函数进行四则运算。然后,我们需要编写C++函数来执行实际的计算操作。在这个例子中,我们创建了一个名为。原创 2024-01-16 20:17:25 · 526 阅读 · 0 评论 -
git第一次提交代码到仓库(初始化提交)
其中,“提交说明”是对本次提交的描述,可以是任意文字,用于帮助其他开发者理解本次提交的目的和内容。要将代码提交到仓库,首先需要初始化一个git仓库。这将在当前目录下创建一个.git的隐藏文件夹,表示该目录已经成为一个git仓库。提交完成后,可以在远程仓库中查看到提交的文件和提交说明。打开命令行工具,进入到要初始化git仓库的目录下。使用以下命令将文件添加到git仓库中,如果是。将要提交的文件放入该仓库中。原创 2024-01-11 16:02:41 · 902 阅读 · 0 评论 -
解决git : 无法将“git”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确
具体操作方法是:右键点击“此电脑” -> 属性 -> 高级系统设置 -> 环境变量,然后在系统变量中找到“Path”变量,点击编辑,然后添加git的安装路径,保存并关闭所有窗口后重新打开命令行窗口。如果git已经正确安装并且路径已经添加到系统的环境变量中,但仍然出现这个问题,那么可能是因为系统环境变量没有立即生效。你可以尝试重新安装git,并确保在安装过程中选择添加git到系统的环境变量中。首先,确保你已经正确安装了git,并且git的安装路径已经添加到系统的环境变量中。你可以在命令行中输入。原创 2024-01-11 15:59:22 · 3869 阅读 · 0 评论 -
jvm垃圾回收相关的算法
JVM主要通过以下几种方式来判断对象是否需要回收:引用计数法:JVM通过引用计数器来判断对象的引用数量,当引用数量为0时,表示对象可以被回收。可达性分析算法:JVM通过根对象(如栈中的引用、静态变量等)出发,对对象进行可达性分析,判断对象是否可被访问到,如果不可达,则表示对象可以被回收。年龄判断:对于分代垃圾回收算法,JVM会根据对象的存活时间来判断对象是否需要回收,存活时间较长的对象会被移到老年代,存活时间较短的对象会被回收。原创 2024-01-07 16:30:36 · 840 阅读 · 0 评论 -
tcp和udp的区别(附java实现)
TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种不同的网络传输协议,它们在数据传输时有一些重要的区别。原创 2024-01-07 16:25:11 · 451 阅读 · 0 评论 -
进程和线程
在操作系统中,线程和进程是两个重要的概念,它们是操作系统中最基本的执行单元。虽然它们都是用来执行程序的,但是它们之间有很大的区别。原创 2024-01-07 16:20:46 · 481 阅读 · 0 评论 -
java中代理的实现并在spring的应用
Java代理机制是一种在运行时创建一个代理对象来代替原始对象的方法。代理对象通常用于在调用原始对象的方法之前或之后执行一些额外的操作,例如日志记录、性能监控等。原创 2023-12-26 14:33:04 · 396 阅读 · 0 评论 -
mysql使用expain查看sql语句执行
当使用EXPLAIN命令来查看SQLEXPLAIN是一个在MySQL中用于分析查询性能的关键命令。通过在SQL查询语句前加上EXPLAIN关键字,可以获取有关查询执行计划的详细信息,包括MySQL将如何执行查询以及使用哪些索引等重要信息。执行EXPLAIN命令后,MySQL会返回一组行,每一行都包含了关于查询执行的重要信息。这些信息包括了查询中涉及的表、使用的索引、访问类型、扫描的行数等等。通过分析这些信息,可以更好地理解查询的执行方式,找到可能存在的性能瓶颈,并且优化查询语句以提高性能。原创 2023-12-25 14:58:44 · 379 阅读 · 0 评论 -
MySQL的聚簇索引和非聚簇索引的区别以及示例
聚簇索引是一种索引结构,它与数据行存储在一起,即索引的叶子节点就是数据行本身。在MySQL中,。原创 2023-12-25 14:53:16 · 1000 阅读 · 1 评论 -
五种io模型对比以及使用场景,提供java demo
标题:对比各种 I/O 方式及其使用场景在计算机编程中,I/O(输入/输出)操作是非常常见的,它涉及到程序与外部设备(如磁盘、网络、键盘、显示器等)之间的数据交换。随着计算机技术的发展,出现了多种 I/O 方式,每种方式都有其特点、优势和劣势。本文将对比目前为止的各种 I/O 方式,包括阻塞 I/O、非阻塞 I/O、I/O 多路复用、信号驱动 I/O、异步 I/O 等,并给出它们的使用场景和一个 Java 的使用例子。原创 2023-12-22 14:47:52 · 1185 阅读 · 0 评论 -
多线程vs单线程,优化代码使用多线程一定会正提升吗?
多线程适用于以下场景:并行处理:需要同时处理多个任务,例如同时下载多个文件、同时处理多个网络请求等。提高响应速度:需要提高系统的响应速度,例如Web服务器同时处理多个客户端请求。并发访问:需要支持多个用户同时访问共享资源,例如数据库并发访问、文件读写等。原创 2023-12-22 14:31:12 · 436 阅读 · 0 评论 -
自定义线程池核心参数讲解
当我们需要创建一个自定义的线程池时,可以使用类来实现。类的构造函数允许我们传入多个参数来自定义线程池的行为。原创 2023-12-19 20:36:56 · 462 阅读 · 0 评论 -
两种方案实现等待线程池结束后执行后面的业务代码
并发测试:在并发测试中,有时需要等待所有测试线程执行完毕后再进行结果汇总和分析,这时可以使用这两种方法来等待所有测试线程执行完毕。批量任务处理:当需要并发执行多个任务,然后等待所有任务执行完毕后进行下一步操作时,可以使用这两种方法来等待所有任务执行完毕。线程池管理:在使用线程池执行任务时,有时需要等待所有任务执行完毕后再关闭线程池,可以使用这两种方法来实现这一需求。总之,在使用这两种方法等待线程执行完毕时,需要仔细考虑业务逻辑和线程安全问题,确保程序能够正确地执行。等待线程执行完毕时,需要调用。原创 2023-12-19 20:33:09 · 1544 阅读 · 0 评论 -
和空指针异常说再见,Java Optional的使用
在Java中,Optional是一个容器对象,用于表示一个值存在或不存在。它可以帮助我们更好地处理可能为空的情况,避免空指针异常。本文将介绍Java Optional的常用API和使用场景。原创 2023-12-18 17:26:18 · 600 阅读 · 0 评论 -
RestTemplate&Openfeign&Dubbo在远程调用的区别
以上代码演示了使用RestTemplate、OpenFeign和Dubbo调用远程接口的示例代码。RestTemplate是一个非常常用的HTTP客户端,可以用来发送HTTP请求;OpenFeign是一个声明式的HTTP客户端,可以通过定义接口的方式来调用远程接口,无需手动编写HTTP请求代码;Dubbo是一个分布式服务框架,可以通过RPC方式调用远程接口。原创 2023-12-14 15:19:38 · 184 阅读 · 0 评论 -
springboot整合websocket实现控制输入流
WebSocket 是一种在客户端和服务器之间进行实时双向通信的协议。它提供了一种更高效、更可靠的替代方案,以替代传统的HTTP请求-响应模式。使用WebSocket 可以实现实时聊天、实时数据更新、多人协同编辑等功能。在Web开发中,可以使用WebSocket API 来实现前后端的实时通信,同时也有许多流行的JavaScript库和框架(如Socket.IO)提供了更简单和方便的使用方式。需要注意的是,WebSocket 需要浏览器和服务器双方都支持该协议才能进行通信。原创 2023-12-13 10:24:47 · 169 阅读 · 0 评论 -
java将byte数组转换成无符号
Java中的byte是一种基本数据类型,它是8位有符号的二进制数,范围从-128到127。它通常用于表示小整数或存储二进制数据,例如文件或图像。因为它只需要1个字节的存储空间,所以它在节省内存方面非常有用。它还可以与其他基本数据类型进行转换,例如int、short和long。在Java中,byte类型通常用于处理原始的二进制数据,例如文件读写、位运算等等。原创 2023-12-11 16:15:53 · 616 阅读 · 0 评论 -
java多线程优化接口调用时间的问题
CompletableFuture是Java 8中引入的异步编程工具,它可以方便地进行异步任务的处理,实现任务之间的串联和组合,以及异常的处理等。CompletableFuture类使用起来非常方便,支持链式调用和函数式编程风格。我们可以在一个CompletableFuture实例中执行一个异步任务,并设置任务结束后的回调函数。同时,也可以利用CompletableFuture提供的方法来串联多个异步任务。原创 2023-12-08 14:50:26 · 385 阅读 · 0 评论 -
详解http请求头,响应头以及在实际开发中
HTTP (Hypertext Transfer Protocol) 协议是一种用于传输超文本的标准协议,它是 Web 通信的基础。HTTP 协议是无状态的,即每次请求是相互独立的,服务器不会记住上一次请求的信息。HTTP 协议采用客户端-服务器模式,客户端发起请求,服务器响应请求,并将响应返回给客户端。HTTP 协议主要分为以下两个部分:HTTP 协议的优点是简单、灵活、可扩展性强,但缺点是通信使用明文,数据容易被窃取或篡改。原创 2023-12-07 14:30:14 · 427 阅读 · 0 评论 -
java使用ffmpeg拆分和拼接音频
ffmpeg是一个开源的跨平台音视频处理工具,它可以对音视频进行格式转换、压缩、采集、裁剪、剪辑等操作。ffmpeg能够处理的音视频格式很多,包括常见的mp4、avi、mov等格式,也包括一些不那么常见的格式。ffmpeg最初是由法国程序员Fabrice Bellard编写的,现在已经成为了流行的音视频处理工具。ffmpeg支持命令行操作,也可以通过API集成到其他应用程序中使用。原创 2023-12-07 11:26:12 · 541 阅读 · 0 评论 -
java中lambda中Consumer<T>作为函数参数的使用
Consumer接口是Java 8中的一个函数式接口,它包含一个抽象的accept方法,可以接受一个参数并执行某些操作,通常用于对集合或流中的每个元素进行遍历和处理。其中,T是表示该方法接受的参数类型,accept方法接收一个T类型的参数,并执行具体的操作。原创 2023-12-05 11:51:16 · 485 阅读 · 0 评论 -
java21实战record
效果原创 2023-12-04 16:13:55 · 378 阅读 · 0 评论 -
springboot多文件上传
Spring Boot 是一个强大的、灵活的、开发效率高的框架,适合开发各种类型的 Web 应用或微服务,是现代化的企业级开发的首选。原创 2023-12-01 14:24:11 · 606 阅读 · 0 评论 -
面试官:说一下ArrayList和LinkedList有什么区别 我:。。。。面试: 对了但是没全对
我(自信的回答):因为当尝试在数组的中间添加元素的时候,数组要将这个位置后面的所有的索引都要进行改变,过程如下,假设定义数组arr长度为10,当我向第5个位置添加元素的时候,就要执行arr[11]=arr[10]....,以此类推,最后arr[4]=value,这中间,移动了很多元素,删除也是同理。插入和删除操作:当需要插入或者删除某个元素时,ArrayList需要将该元素之后的所有元素向后移动一个位置,而LinkedList只需要修改前后元素的指针即可。我(心里):简单,学过数据结构的都知道有什么区别。原创 2023-11-30 19:11:40 · 184 阅读 · 0 评论 -
记录一次docker搭建tomcat容器的网页不能访问的问题
Tomcat是Apache软件基金会的Jakarta项目中的一个重要子项目,是一个Web服务器,也是Java应用服务器,是开源免费的软件。它是一个兼容Java Servlet和JavaServer Pages(JSP)的Web服务器,可以作为独立的Web服务器,也可以与其他Web服务器(比如Apache)配合使用。它采用Java编写,支持跨平台性,可以在Windows、Linux等多种操作系统上运行。原创 2023-11-30 17:43:10 · 536 阅读 · 0 评论 -
java给pcm添加头wav头
PCM是一种数字音频编码方式,即脉冲编码调制(Pulse Code Modulation)。PCM是一种将模拟信号转换成数字信号的技术,主要用于数字音频的存储和传输。PCM在音频领域的应用非常广泛,例如CD、DVD、数字广播、数字电视等。PCM编码过程中,通过抽样、量化和编码三个步骤将模拟信号转换为数字信号。首先将模拟信号按照一定的时间间隔进行抽样,得到一系列数字量化值。然后将这些量化值按照预定的量化步长进行量化,将连续的模拟信号量化为离散的数字信号。最后将这些数字信号进行编码和压缩,以减小数据量。原创 2023-11-28 11:48:29 · 359 阅读 · 0 评论 -
springboot整合websocket
HTTP(Hypertext Transfer Protocol)是一种用于传输超文本数据的应用层协议。它是基于TCP/IP协议来传输数据的,是Web浏览器和Web服务器之间进行数据交换的标准协议。HTTP协议的主要特点包括:简单易用:HTTP协议使用简单,易于开发和调试。无状态:HTTP协议是一种无状态协议,即服务器不会记住之前客户端的请求信息,每个请求都是独立的。可扩展:HTTP协议支持各种不同的请求方式和响应类型,同时也可以通过HTTP头部来传递自定义数据。原创 2023-11-27 10:19:36 · 194 阅读 · 0 评论 -
CountDownLatch和CyclicBarrier
CountDownLatch是一个计数器,通过它可以控制线程执行的先后顺序。它的作用是让某个线程等待若干个其他线程执行完后再执行。使用CountDownLatch时需要指定一个计数器的值,当所有计数器都为0时,等待线程才会继续执行。CyclicBarrier也可以用于控制线程的顺序执行。它可以协调一组线程在某个屏障处等待并互相等待,直到所有线程都到达该屏障后再一起继续执行。CyclicBarrier可以重复使用,每次调用await()方法时,计数器的值都会减1,当计数器为0时,所有线程都会被释放。原创 2023-11-22 14:19:46 · 59 阅读 · 0 评论 -
docker部署jdk21的镜像
Docker将操作系统、应用程序和硬件虚拟化进行了彻底的分离,使应用程序更加容易运行在不同的计算机环境中。在Docker中配置/etc/profile文件有时不会生效,因为/etc/profile是在登录时执行的,而Docker中默认情况下没有登录shell。标准库等组件,是 Java 开发和运行的必要工具。Docker的目标是为开发人员提供一个简单的方式来构建、发布和运行应用程序,并极大地简化了应用程序的生命周期管理。的标准库,提供了许多常用的 Java 类和接口,使得 Java 开发更加简单、高效。原创 2023-11-21 15:58:19 · 3280 阅读 · 0 评论