- 博客(38)
- 收藏
- 关注
原创 JAVA中的多线程
本文介绍了Java多线程并发编程的核心概念和实现方式。主要内容包括:1. 并发的基本概念,即多个任务交替执行,提高资源利用率;2. Java实现线程的三种方式:继承Thread类、实现Runnable接口和Callable接口;3. ExecutorService线程池的四种实现方式(Cached、Fixed、Scheduled、SingleThread)及其适用场景;4. 线程池的核心参数和执行流程;5. 线程的生命周期状态和关键方法;6. 线程安全问题的解决方案,如同步机制、显示锁、原子变量等。文章通过
2025-06-10 22:22:27
861
原创 Map相关知识
摘要:本文介绍了三种重要的数据结构:二叉树、红黑树和散列表。二叉树每个节点最多有两个子节点;二叉搜索树要求左子树值小于节点值,右子树值大于节点值;红黑树是一种自平衡二叉搜索树,具有颜色标记和平衡规则。散列表基于数组实现,通过散列函数快速访问数据,使用链表或红黑树解决冲突。详细讲解了HashMap的实现机制包括底层结构、扩容策略和常用方法,并比较了HashMap与Hashtable在安全性、性能和功能特性上的区别。
2025-06-09 20:50:31
1003
原创 LinkedList、Vector、Set
摘要:LinkedList和Vector是Java集合框架中两种不同的实现类。LinkedList基于双向链表结构,适用于频繁插入删除操作,提供队列和栈的实现,线程不安全但效率较高。Vector是线程安全的动态数组,扩容时容量翻倍,但效率较低,通常被ArrayList替代。Set接口不允许重复元素,HashSet基于哈希表实现无序存储,TreeSet基于红黑树实现有序存储。开发中应根据需求选择适合的集合类型,LinkedList适合队列/栈场景,Vector适用于多线程环境,而HashSet/TreeSet
2025-06-07 19:11:39
972
原创 深度解析ArrayList
ArrayList作为Java集合框架中的动态数组实现,其底层采用Object[]数组存储元素,具有自动扩容机制(默认初始容量10,扩容为1.5倍)。主要特性包括:快速随机访问(O(1))、插入删除效率较低(涉及元素移动)。使用时需注意线程不安全问题,建议多线程环境下使用Collections.synchronizedList或CopyOnWriteArrayList。常见操作包括增删改查,遍历方式多样(普通/增强for循环、Iterator、Lambda)。与数组相比,ArrayList支持动态扩容但性能
2025-06-04 21:49:03
708
原创 集合类基础概念
Java集合框架概述 Java集合框架包含两大类:单列集合(Collection)和双列集合(Map)。Collection分为有序可重复的List(如ArrayList、LinkedList)和无序不可重复的Set(如HashSet、TreeSet);Map存储键值对(如HashMap、TreeMap)。集合相比数组具有动态扩展、丰富操作和泛型支持的优势,但性能稍逊于基本类型数组。使用时需根据有序性、重复性、访问模式和线程安全等需求选择合适的集合类型,如ArrayList适合随机访问,LinkedList
2025-06-03 21:01:34
932
原创 JAVA中的注解和泛型
Java注解与泛型编程指南 摘要: Java注解是JDK5引入的元数据机制,用于代码标注而不影响逻辑,通过反射可读取。文章介绍了4种元注解(@Target、@Retention等)及自定义注解实现,并展示了配合AOP实现登录日志的案例。泛型部分阐述了参数化类型的概念,包括泛型方法(如<E>)和泛型类(<T>)的使用,以及类型通配符和类型擦除原理。通过Box等示例说明了泛型如何提高代码复用性和类型安全性。最后指出运行时泛型类型信息会被擦除的局限。全文结合理论讲解和代码示例,为Java开
2025-06-02 15:31:33
1162
原创 Java基本数据类型、抽象类和接口、枚举、时间类、String类全面介绍
本文总结了Java编程语言中的核心数据类型及相关知识要点。主要内容包括: 八种基本数据类型(byte/short/int/long/float/double/char/boolean)的存储空间、默认值和范围; 数据类型转换规则(自动/强制转换)及示例代码; 抽象类与接口的区别(语法规则、使用场景); 时间处理类(传统Date/Calendar与Java8新时间API对比); String类的特性(不可变性、常量池)及常用方法(判断、截取、替换等); 枚举类型的定义、特点及与常量类的对比。文章通过表格对比和
2025-06-01 17:04:52
673
原创 Git入门到精通:30分钟掌握核心技巧
本文系统介绍Git从基础到实践的完整工作流。核心内容包括:一、基础理论篇,阐述Git分布式特性与版本控制原理;二、实操命令篇,演示分支管理(新建/合并)、远程协作等关键操作;三、可视化工具篇,展示IDEA与Gitee的集成使用;四、安全配置篇,详解SSH密钥与权限控制;五、常见问题篇,提供冲突解决、大文件提交等疑难场景的解决方案。重点突出分布式版本控制的优势,强调团队协作规范(如避免强制提交),对比Rebase与Merge差异,并配有Gitee平台的具体操作示例。全文兼顾理论体系与实际应用,帮助开发者高效管
2025-05-31 21:53:35
1922
原创 脚本一键式启动Nginx、Mysql、Redis
此脚本包含拉取镜像、数据卷挂载、容器启动三大部分,可一键式安装三大环境。新建一个depoy.sh文件在服务器上,然后复制以下内容。如果需要修改数据库MYSQL密码和Reids密码。在启动脚本之前,需要安装docker环境!给脚本文件添加执行权限。
2025-03-18 15:10:18
540
原创 Docker如何启动SuperSet实现报表功能
#这里使用openssl rand -base64 42生成自己的密钥SQLALCHEMY_TRACK_MODIFICATIONS = False # 禁用修改追踪,减少性能开销6 启动镜像--name superset \ # 设置容器名称为 superset-d \ # 在后台运行容器-p 8088:8088 \ # 映射宿主机的 8088 端口到容器的 8088 端口。
2025-02-26 18:27:42
829
原创 Nginx实现负载服务之间的负载均衡
解压后在文件夹目录下点击nginx.exe,这里应该会一闪而过,不用担心,应该是启动成功了,我们可以鼠标右键打开任务管理器输入nginx。此时我们通过访问127.0.0.1:8888/路径的一些资源就会代理到127.0.0.1:8086/8087/8088 上。文件路径在nginx:tag/conf/nginx.conf 这里是我的全部配置文件,你们可以自定义修改。可以选择自己想要的操作系统和版本,小编这里使用的是windows的1.24版本。返回控制台看见每个服务都有输出。
2024-11-08 13:10:51
1058
原创 vue+websocket实现即时聊天平台
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它主要用于在客户端和服务器之间建立持久的连接,允许实时数据交换。WebSocket 的设计目的是为了提高 Web 应用程序的交互性,减少延迟和带宽的使用。全双工通信:客户端和服务器可以同时发送和接收数据,而不需要等待对方完成发送。持久连接:建立一次连接后,可以保持该连接,直到主动关闭。这比传统的 HTTP 请求/响应模型更加高效。低延迟:由于不需要为每个请求建立新的连接,WebSocket 可以显著减少延迟。节省带宽。
2024-11-02 11:41:06
1719
1
原创 LeetCode(力扣)数组篇 JAVA刷题详解
是不是有许多小伙伴在刷力扣的时候感觉无从下手?从头按顺序开始刷的童鞋们可能会比较有感触,为什么才第四题就感觉很难了?没关系,本文将对力扣的 1-500 题中不需要会员的数据结构与算法题目(数据库与 shell 除外)进行分类,并推荐一个刷题的顺序。完全零基础可以刷题吗?不能,至少要基本掌握一门计算机语言的语法。但现在在网上随便搜一下就能搜到许多关于计算机语言的教程。当然,最好还是上一下正规的课程。刷题顺序很重要吗?重要。按照题目类别结构化地刷题的速度不仅更快,而且可以在刷完一类题之后进行总结。
2024-08-04 16:25:50
2074
原创 SrpingBoot+Aop+注解实现JAVA当中对日志的操作的记录
面向切面编程)是一种编程范式,旨在通过分离横切关注点(cross-cutting concerns)来提高模块化程度。横切关注点是指那些应用程序中贯穿多个模块的功能,如日志记录、安全性、事务管理等。这些功能通常会散布在多个模块中,导致代码重复和难以维护。在本此操作中,因为不是所有的controller都需要进行日志的记录,所以我们不需要对整个controller层都进行通知(与切面类绑定),而是通过注解的形式哪个方法需要记录日志就在哪个方法上面添加注解注解类:Log/**
2024-06-26 10:45:51
642
原创 nginx实现反向代理出现502的解决方法
我的也是可以访问的,说明我的端口80和8800都是开放的,如果你的在nginx访问不到 说明端口没有开放,可以关闭防火墙或者开放安全组的端口。然后进入容器执行这行命令: curl http://1.92.141.215:8800/captchaImage命令。这样我们通过代理的url去访问我们的服务器资源就可以成功访问了。因为在docker容器里,我们映射了代理到本机的。通过这样你就可以正常访问到代理的资源路径了。假设您要开放 TCP 端口 80。是不一样的,所以无法通过。可以看到是能访问得到的。
2024-06-24 11:23:32
2516
2
原创 Docker如何安装redis
将配置文件放到 /temp/redis/conf目录下。在当前根目录下创建文件夹 存放配置文件和挂载数据文件。需要把防火墙关闭或者开放安全组的端口6379。把这些配置改成自己需要的内容。可以看到 是可以进行连接的。我们用客户端来连接一下。
2024-06-23 14:10:15
1590
原创 如何理解事务并发中产生的脏读、幻读、不可重复读和他们的解决方法
在MySQL中,事务是一组可以作为单个工作单元来执行的操作。事务确保数据库在并发环境下的数据一致性和完整性。MySQL中的事务主要用于处理多个操作步骤的执行,以确保所有步骤都成功完成,否则,系统将回滚到事务开始之前的状态。原子性(Atomicity):事务中的所有操作要么全部执行成功,要么全部不执行。即使在系统崩溃的情况下,也不会存在部分成功、部分失败的状态。一致性(Consistency):事务执行前后,数据库从一个一致的状态转换到另一个一致的状态。事务的执行不会破坏数据库的完整性约束。
2024-05-30 16:38:29
865
原创 如何搭建springBoot项目中的全局异常处理和自定义异常处理
异常(Exception)是在程序执行过程中出现的一种特殊情况或错误。它可以是由于程序逻辑错误、运行环境问题、用户输入错误等原因导致的一种非正常的状态或事件。在编程领域中,异常通常用来表示一种无法预料或处理的情况,它会导致程序无法继续正常执行。当程序运行过程中遇到异常,如果没有适当的处理机制,可能会导致程序崩溃或产生未预期的结果。全局异常处理器是一种集中处理应用程序中所有未捕获异常的机制,常用于 Web 应用程序中,以提供统一的异常处理和用户友好的错误响应。
2024-05-22 09:38:45
1608
原创 Redis当中用StringRedisTemplate封装好的工具类
【代码】Redis当中用StringRedisTemplate封装好的工具类。
2024-05-10 23:33:48
634
原创 SpringBoot整合SpringSecurity+JWT实现web应用中的认证和授权
Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更 丰富的功能,社区资源也比Shiro丰富。一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多,因为相比与SpringSecurity,Shiro的上手更加的简单。一般Web应用的需要进行认证和授权。认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户授权:经过认证后判断当前用户是否有权限进行某个操作。
2024-05-09 14:34:12
1499
2
原创 springboot+vue写的一个在线音乐平台
输入图片说明](https://foruda.gitee.com/images/1709624746804838830/a5171847_12604361.png "屏幕截图")[输入图片说明](https://foruda.gitee.com/images/1709624836636214543/db125e60_12604361.png "屏幕截图")- pc前端:git clone https://gitee.com/codeTear/starmusic.git。
2024-04-09 16:42:08
375
2
原创 SpringBoot整合ElasticSearch实现自动补全以及搜索关键字高亮
Elasticsearch是一个开源的分布式搜索和分析引擎,它是建立在Apache Lucene搜索引擎库之上的。Elasticsearch提供了一个RESTful API,用于实时地存储、搜索和分析大量数据。它被广泛用于构建实时搜索、日志分析、应用程序性能监控等各种用例中。分布式架构:可以轻松地扩展到多个节点,实现高可用性和水平扩展。实时搜索:支持实时索引和搜索,能够快速地处理大量数据。多种数据类型支持:除了全文搜索外,还支持结构化数据、地理空间数据等多种数据类型的搜索和分析。
2024-03-27 14:54:17
1880
1
原创 关于docker-compose在linux上的集群部署
在这个地方有个bug 微服务可能会执行失败 因为每个微服务执行前提下都需要nacos成功运行 但是在这里nacos执行的比较慢 所以解决方法就是重启微服务 但是这样我发现我还是有个别微服务项目失败了,我也懵了 不过总体思路还是缕清了。Dockerfile文件在下面介绍 除了端口 其它内容都一样 docker-compose.yml文件也在文章下面介绍。这里与前面文件目录都是对应的 都对应了各自的微服务。gateway网关转发的几个接口也是可以用的。多谢大家的阅览 希望可以和大家一起探讨各种问题。
2024-03-10 17:29:45
650
1
原创 nginx报错ob for nginx.service failed because the control process exited with error code.See “systemct
这种错误一般都是因为nginx要嘛端口被占用要么与SElinux与关、小编试了好久终于找到解决方法。一般只要禁用SElinux就可以。这将使 SELinux 切换为 Permissive 模式,允许所有操作但仍会记录违规的操作。以 root 用户身份登录到服务器。该命令将显示 SELinux 的当前状态。
2024-03-04 16:36:58
869
1
原创 关于linux的防火墙放行问题的解决
要开放防火墙端口以允许外部访问特定的服务,你需要确定你使用的是哪种类型的防火墙和操作系统。大多数现代Linux发行版使用。下面我将介绍在这些不同环境中如何开放端口。作为防火墙,可以通过以下命令来开放端口8080(假设你的服务使用TCP协议)首先要放行http和https的流量,对于CentOS,你可以使用。作为防火墙工具,而Ubuntu 18.04及以上版本默认使用。命令来管理防火墙规则。在使用UFW的Ubuntu系统上,开放端口变得更简单。如果要开放某个端口的访问:这里例如端口是8080。
2024-03-03 13:57:22
772
原创 利用阿里云的短信验证实现登录的功能的熟悉
我记得这里如果你是一个新的用户的话 你是可以获得免费的100条短信的额度来使用的。因为我的代码放在一个service里面所以调用就很简单 直接通过类名调用。注意:这个方法只能是用于测试的手机号码在阿里云上绑定过的才可以。如果需要不同手机号都能发验证码 需要申请签名的时候选择其他。我们可以通过前端来调用 这里用PostMan来调试一下。创建一个AccessKey 并且记录他们的值。可以看出这个功能是可以正常实现的。利用postman进行测试。
2024-01-17 12:49:38
655
原创 nginx实现手机端和pc端的的适配
这样的话 当你访问你的网站nginx就会根据你的配置文件去寻找你对应的资源去访问,实现了手机端和pc端的适应。修改nginx的默认配置文件 default.conf。
2023-12-24 13:07:32
1295
3
原创 nginx配置安装免费证书
HTTP(超文本传输协议)和HTTPS(超文本传输安全协议)都是用于在计算机网络上进行数据传输的协议。它们的主要区别在于安全性方面。HTTP是一种不加密的协议,数据以明文形式传输,容易被黑客截获并窃取数据。而HTTPS则通过使用SSL/TLS协议进行加密,从而保证了数据在传输过程中的安全性,防止数据被窃取、篡改或伪造。具体来说,HTTPS在HTTP之上添加了SSL/TLS协议,在客户端和服务器之间传输数据时先进行加密再传输,防止数据被窃听和篡改。
2023-12-22 20:53:48
848
原创 springBoot整合jwt实现token令牌认证
作为计算机术语时,是“令牌”的意思。Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。实施 Token 验证的方法挺多的,还有一些标准方法,比如 JWT,读作:jot ,表示:JSON Web Tokens。在这里我定义的签名是静态变量 可以根据自己需求来定义 这里的id是从数据库里面拿到的 这里的验证token符合的话就放行,否则就抛异常。
2023-12-12 21:29:46
1046
原创 用sacrapy框架爬取qq音乐的mv并且linux部署实现定时更新mv的url
Scrapy是一个用于Web抓取和数据提取的Python框架。它旨在简化从网络中提取数据的过程。Scrapy可以自动处理许多常见的任务,如请求管理、页面解析和存储结果。它使用Twisted以异步方式处理请求并支持多个请求同时进行。Scrapy包含了一系列组件,这些组件可以灵活地组合在一起完成不同的任务。其中最主要的组件包括:1.引擎(Engine):控制整个系统的数据流控制,触发事件在不同的组件间传递。
2023-12-10 21:52:58
213
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人