- 博客(166)
- 资源 (4)
- 收藏
- 关注
原创 细品spring设计,可扩展性编程Aware接口,Adapter类
在Spring中,Aware接口是一组特定的接口,用于向Bean提供特定的资源或信息。通过实现Aware接口,Bean可以感知到容器的特定状态或资源。通过实现这些Aware接口,Bean可以在初始化时获取到相应的资源或信息,从而实现更灵活的逻辑处理。
2024-03-12 19:23:10 518 2
原创 记录一次spring的类中注入其他类显示空指针的问题
DI(Dependency Injection)即依赖注入,是Spring框架的一个核心特性。它是一种设计模式,通过该模式,对象之间的依赖关系由容器在运行期来决定,而不是在编译期确定。
2024-03-12 19:18:14 363
原创 java多线程测试websocket demo(使用文件流)
这个demo主要是利用Java多线程来测试WebSocket通信。首先,创建一个WebSocket服务器和客户端,然后使用多线程来模拟多个客户端同时连接服务器进行通信。通过多线程测试,可以验证WebSocket通信的并发性能和稳定性。同时,可以通过多线程测试来模拟不同场景下的并发请求,以便对WebSocket服务器进行压力测试和性能优化。整个demo会包括创建WebSocket服务器和客户端的代码,以及多线程测试的代码实现。通过这个demo,可以更好地了解WebSocket通信的多线程测试方法和实现。
2024-01-25 19:46:41 1228
原创 记录一次在文件多处理的场景中遇到的问题
当一个音频传过来的时候,需要根据A的返回值对B进行不同的处理,A接口已有,当时任务急,B接口是写死的,后面需要优化这一部分的代码。获取文件的字节流后,发现后面会报一个文件中不到的问题,仔细排查后,发现操作系统并没有这个文件。
2024-01-23 17:29:02 514
原创 从minio下载wav文件返回File对象
通过Minio,用户可以构建自己的私有云存储解决方案,也可以作为公共云存储服务的替代方案。Minio是一个开源的分布式对象存储服务,它兼容Amazon S3 API,可以用于构建高性能、可扩展的存储基础设施。可扩展:Minio可以轻松地扩展到数百台服务器,以满足不断增长的存储需求。高性能:Minio能够快速地处理大规模的数据,并提供高速的数据读写操作。安全性:Minio支持数据加密和访问控制,确保存储的数据得到安全保护。开源:Minio是开源的,用户可以免费使用并根据需要进行定制和扩展。
2024-01-23 17:21:12 507
原创 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 1093
原创 JVM内存区域
这些内存区域主要用于支持Java程序的运行和管理对象、方法等数据。不同的内存区域有不同的作用和管理方式,对于Java程序的性能和内存管理起着重要的作用。
2024-01-18 20:01:39 536
原创 记录一次transferto遇到的问题java.io.FileNotFoundException:的发生原因
有一个接口,上传文件,然后先对文件进行A处理,得到结果后保存到数据库,然后对文件进行B处理,开始的时候已经有业务A了,接受一个MultipartFile的参数,处理完保存数据库,现在需要添加一个新的功能。后对比发现正常执行的接口都是只对文件进行一次处理,包括原有的逻辑,我注释掉A逻辑,发现B逻辑可以正常执行。判断是多次读取数据,流中没有数据了。其实这个问题并不是很难发现,中间处理过程也是没想到这里的问题,当时也没有去看A逻辑的代码,导致的问题。只能说修改已有的代码还是需要慎重一点。
2024-01-18 19:59:31 867
原创 使用nginx代理ws为
Nginx是一个高性能的开源Web服务器,也可以用作反向代理服务器、负载均衡器和HTTP缓存。它具有低内存消耗和高并发处理能力,因此被广泛用于大型网站和应用程序的部署。Nginx的架构采用事件驱动模型,能够高效地处理并发连接,同时具有灵活的配置选项和丰富的功能模块,使其成为一个流行的Web服务器解决方案。Nginx支持多种操作系统,包括Linux、Unix、Windows等,同时也支持多种协议,如HTTP、HTTPS、SMTP、POP3和IMAP等。
2024-01-17 18:15:35 485
原创 解决Reinitialized existing Git repository
通过以上步骤,你应该能够成功解决"Reinitialized existing Git repository"的问题,并且重新初始化你的Git仓库。可能是因为你想重新初始化已存在的Git仓库。这可能是因为你想重置Git仓库的状态,或者想重新开始一个新的Git历史记录。确保你在正确的目录下。命令切换到你的Git仓库所在的目录。可以直接删掉.git目录即可。
2024-01-17 18:10:41 2680
原创 ThreadLocal用法以及使用场景
ThreadLocal类提供了一种线程局部变量的机制,使得每个线程都可以拥有自己的变量副本,从而避免了线程安全问题。get()
2024-01-16 20:19:50 397
原创 java使用jni调用cpp的示例
用于调用C++中的对应函数。在C++中,我们编写了四个对应的函数来执行实际的四则运算操作。当我们运行Java程序时,它将加载C++库并调用其中的函数来执行计算。首先,我们需要创建一个Java类来调用C++函数进行四则运算。然后,我们需要编写C++函数来执行实际的计算操作。在这个例子中,我们创建了一个名为。
2024-01-16 20:17:25 543
原创 git第一次提交代码到仓库(初始化提交)
其中,“提交说明”是对本次提交的描述,可以是任意文字,用于帮助其他开发者理解本次提交的目的和内容。要将代码提交到仓库,首先需要初始化一个git仓库。这将在当前目录下创建一个.git的隐藏文件夹,表示该目录已经成为一个git仓库。提交完成后,可以在远程仓库中查看到提交的文件和提交说明。打开命令行工具,进入到要初始化git仓库的目录下。使用以下命令将文件添加到git仓库中,如果是。将要提交的文件放入该仓库中。
2024-01-11 16:02:41 914
原创 解决git : 无法将“git”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确
具体操作方法是:右键点击“此电脑” -> 属性 -> 高级系统设置 -> 环境变量,然后在系统变量中找到“Path”变量,点击编辑,然后添加git的安装路径,保存并关闭所有窗口后重新打开命令行窗口。如果git已经正确安装并且路径已经添加到系统的环境变量中,但仍然出现这个问题,那么可能是因为系统环境变量没有立即生效。你可以尝试重新安装git,并确保在安装过程中选择添加git到系统的环境变量中。首先,确保你已经正确安装了git,并且git的安装路径已经添加到系统的环境变量中。你可以在命令行中输入。
2024-01-11 15:59:22 4138
原创 jvm垃圾回收相关的算法
JVM主要通过以下几种方式来判断对象是否需要回收:引用计数法:JVM通过引用计数器来判断对象的引用数量,当引用数量为0时,表示对象可以被回收。可达性分析算法:JVM通过根对象(如栈中的引用、静态变量等)出发,对对象进行可达性分析,判断对象是否可被访问到,如果不可达,则表示对象可以被回收。年龄判断:对于分代垃圾回收算法,JVM会根据对象的存活时间来判断对象是否需要回收,存活时间较长的对象会被移到老年代,存活时间较短的对象会被回收。
2024-01-07 16:30:36 842
原创 tcp和udp的区别(附java实现)
TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种不同的网络传输协议,它们在数据传输时有一些重要的区别。
2024-01-07 16:25:11 454
原创 图及图的相关算法(附习题)
边和权重:(A, B, 4), (A, C, 2), (B, C, 5), (B, D, 10), (C, D, 3), (C, E, 2), (D, E, 4)我们以图中的顶点和边的信息来举一个Dijkstra算法的习题。现在假设我们要从顶点A出发,使用Dijkstra算法来找到从A到其他顶点的最短路径和距离。这样就完成了使用Dijkstra算法来计算从A到其他顶点的最短路径和距离的过程。这样就完成了使用Dijkstra算法来计算从A到其他顶点的最短路径和距离的过程。顶点:A, B, C, D, E。
2024-01-04 20:24:27 1193
原创 线性表以及栈的常用习题以及解决思路
线性表是一种数据结构,是由n个具有相同特性的数据元素组成的有限序列。线性表中的数据元素之间存在着一对一的关系,即除了第一个元素外,每个元素都有且仅有一个直接前驱,除了最后一个元素外,每个元素都有且仅有一个直接后继。线性表可以用顺序存储结构或链式存储结构来实现。在顺序存储结构中,线性表的元素存储在一块连续的存储空间中;在链式存储结构中,线性表的元素通过指针相连,形成一个链表。线性表常见的操作包括插入、删除、查找等。
2024-01-04 20:11:57 371
原创 网络相关的计算(附例题)
在计算机网络中,IP地址、子网掩码和网关是非常重要的概念,它们之间有着密切的关系。IP地址是用来唯一标识网络中的设备的,它由32位二进制数字组成,通常以点分十进制的形式表示。子网掩码用来划分IP地址中的网络部分和主机部分,它也由32位二进制数字组成,通常以点分十进制的形式表示。网关则是连接不同网络之间的设备,它通常是一个路由器或者交换机。举个例子,假设一个网络的IP地址为192.168.1.1,子网掩码为255.255.255.0,网关为192.168.1.254。
2024-01-02 14:25:17 546
原创 判断ipv4属于哪一类地址以及nat的相关概念
网络地址转换(NAT)是一种网络技术,用于将私有网络内部的IP地址转换成公共IP地址,以便在公共网络上进行通信。NAT通常用于家庭网络或企业网络中,以允许多个设备共享单个公共IP地址。
2024-01-02 14:19:55 387
原创 练习题--根据前序遍历和中序遍历计算后序遍历
通过以上演算,我们成功地根据给定的前序遍历和中序遍历结果构建了二叉树,并获取了其后序遍历结果。当给定前序遍历和中序遍历结果时,我们可以通过递归的方式来构建二叉树,并获取其后序遍历结果。然后我们在中序遍历结果中找到根节点的位置,即。最后,我们可以对构建的二叉树进行后序遍历,得到后序遍历结果为。,说明根节点在中序遍历结果中的位置是在索引为3的位置。首先,我们可以确定前序遍历的第一个元素。,可以得到左子树的根节点为。,可以得到右子树的根节点为。,对应的前序遍历结果为。,对应的前序遍历结果为。
2023-12-28 14:27:31 813 1
原创 哈希表:解决冲突的数据结构
哈希表是一种高效的数据结构,能够快速查找和访问键值对。但是,哈希冲突是不可避免的问题,因此解决冲突的方法对于设计一个高效的哈希表至关重要。链地址法和开放寻址法是常见的解决哈希冲突的方法,它们各有优缺点,需要根据具体的应用场景来选择合适的方法。
2023-12-28 14:21:01 602
原创 计算机网络的7层协议和4层协议的区别
计算机网络协议分为7层和4层两种体系结构,分别是OSI参考模型和TCP/IP参考模型。它们在协议层次划分和协议种类上有一些区别。
2023-12-27 11:06:59 1064
原创 java中代理的实现并在spring的应用
Java代理机制是一种在运行时创建一个代理对象来代替原始对象的方法。代理对象通常用于在调用原始对象的方法之前或之后执行一些额外的操作,例如日志记录、性能监控等。
2023-12-26 14:33:04 400
原创 mysql使用expain查看sql语句执行
当使用EXPLAIN命令来查看SQLEXPLAIN是一个在MySQL中用于分析查询性能的关键命令。通过在SQL查询语句前加上EXPLAIN关键字,可以获取有关查询执行计划的详细信息,包括MySQL将如何执行查询以及使用哪些索引等重要信息。执行EXPLAIN命令后,MySQL会返回一组行,每一行都包含了关于查询执行的重要信息。这些信息包括了查询中涉及的表、使用的索引、访问类型、扫描的行数等等。通过分析这些信息,可以更好地理解查询的执行方式,找到可能存在的性能瓶颈,并且优化查询语句以提高性能。
2023-12-25 14:58:44 385
原创 MySQL的聚簇索引和非聚簇索引的区别以及示例
聚簇索引是一种索引结构,它与数据行存储在一起,即索引的叶子节点就是数据行本身。在MySQL中,。
2023-12-25 14:53:16 1010 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 1200
原创 多线程vs单线程,优化代码使用多线程一定会正提升吗?
多线程适用于以下场景:并行处理:需要同时处理多个任务,例如同时下载多个文件、同时处理多个网络请求等。提高响应速度:需要提高系统的响应速度,例如Web服务器同时处理多个客户端请求。并发访问:需要支持多个用户同时访问共享资源,例如数据库并发访问、文件读写等。
2023-12-22 14:31:12 443
原创 cpu的调度策略
假设有三个进程 P1、P2 和 P3,它们的执行时间分别为 8ms、6ms 和 4ms,优先级分别为高、中、低。假设有三个进程 P1、P2 和 P3,它们的到达时间分别为 0ms、2ms 和 4ms,执行时间分别为 7ms、4ms 和 1ms。假设有三个进程 P1、P2 和 P3,它们的执行时间分别为 24ms、3ms 和 3ms,时间片大小为 4ms。按照时间片轮转的策略,进程会按照顺序执行,每个进程执行一个时间片。假设有三个进程 P1、P2 和 P3,它们的执行时间分别为 6ms、3ms 和 8ms。
2023-12-20 21:52:08 458
原创 死锁的原理、产生条件及避免死锁的方法,银行家算法的简介和实现
死锁是指在多个进程或线程之间,由于彼此互相持有对方所需资源而无法继续执行的情况。死锁发生的原因通常是由于多个进程同时请求资源,但由于资源分配不当或者竞争条件等问题,导致彼此之间陷入僵局无法继续执行。
2023-12-20 21:49:06 1219
原创 两种方案实现等待线程池结束后执行后面的业务代码
并发测试:在并发测试中,有时需要等待所有测试线程执行完毕后再进行结果汇总和分析,这时可以使用这两种方法来等待所有测试线程执行完毕。批量任务处理:当需要并发执行多个任务,然后等待所有任务执行完毕后进行下一步操作时,可以使用这两种方法来等待所有任务执行完毕。线程池管理:在使用线程池执行任务时,有时需要等待所有任务执行完毕后再关闭线程池,可以使用这两种方法来实现这一需求。总之,在使用这两种方法等待线程执行完毕时,需要仔细考虑业务逻辑和线程安全问题,确保程序能够正确地执行。等待线程执行完毕时,需要调用。
2023-12-19 20:33:09 1607
原创 和空指针异常说再见,Java Optional的使用
在Java中,Optional是一个容器对象,用于表示一个值存在或不存在。它可以帮助我们更好地处理可能为空的情况,避免空指针异常。本文将介绍Java Optional的常用API和使用场景。
2023-12-18 17:26:18 603
原创 springbootjpa中@Modifying的用法
当使用Spring Data JPA进行数据库操作时,有时候我们需要执行一些更新或删除操作,而不仅仅是查询操作。注解为我们提供了一种方便的方式来标记需要修改数据库的查询方法,同时也提醒了我们在使用这些方法时需要注意一些细节。注解的话,Spring Data JPA默认认为查询方法是只读的,即不会修改数据库。注解能够明确告诉Spring Data JPA,这个方法需要修改数据库,从而确保操作的准确性和可靠性。注解一起使用,用于标记一个自定义的查询方法需要修改数据库。注解,以便更好地操作数据库。
2023-12-18 17:23:06 1237
原创 RestTemplate&Openfeign&Dubbo在远程调用的区别
以上代码演示了使用RestTemplate、OpenFeign和Dubbo调用远程接口的示例代码。RestTemplate是一个非常常用的HTTP客户端,可以用来发送HTTP请求;OpenFeign是一个声明式的HTTP客户端,可以通过定义接口的方式来调用远程接口,无需手动编写HTTP请求代码;Dubbo是一个分布式服务框架,可以通过RPC方式调用远程接口。
2023-12-14 15:19:38 194
原创 springboot整合websocket实现控制输入流
WebSocket 是一种在客户端和服务器之间进行实时双向通信的协议。它提供了一种更高效、更可靠的替代方案,以替代传统的HTTP请求-响应模式。使用WebSocket 可以实现实时聊天、实时数据更新、多人协同编辑等功能。在Web开发中,可以使用WebSocket API 来实现前后端的实时通信,同时也有许多流行的JavaScript库和框架(如Socket.IO)提供了更简单和方便的使用方式。需要注意的是,WebSocket 需要浏览器和服务器双方都支持该协议才能进行通信。
2023-12-13 10:24:47 174
onlinechater.rar
2020-12-09
spring-5.2.6.RELEASE-dist.zip
2020-05-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人