- 博客(84)
- 收藏
- 关注
原创 Go——Swagger API文档访问500
摘要 Swagger文档生成后需显式导入才能生效。使用swag init生成docs.go文件后,必须在代码中通过import _ "项目/docs"显式导入该包,否则Swagger处理器将因找不到文档数据而返回500错误。
2026-01-01 23:05:56
210
原创 ThinkPHP ——安装部署与配置
本文介绍了ThinkPHP8框架的安装部署与调试过程。主要内容包括:1) 使用phpstudy安装PHP8.0.2环境;2) 通过Composer创建ThinkPHP8项目并配置阿里云镜像源;3) 在phpstudy中创建网站并开启调试模式;4) 配置文件读取方法,包括.env和config目录下的配置;5) URL访问模式说明及URL重写配置。文章提供了详细的图文操作步骤,帮助开发者快速搭建ThinkPHP8开发环境并进行基础配置。
2025-12-07 15:59:39
363
原创 Debug —— 部署微服务中微服务的配置文件及本地注册Nacos没问题但部署到Docker中就注册失败
问题摘要 在Docker中部署Nacos服务时,客户端始终连接127.0.0.1:19375端口,原因是客户端无法解析Nacos返回的容器hostname地址,导致回退到本地随机端口。通过curl检查Nacos接口发现返回的是容器内部hostname而非IP地址。最终解决方案是: 检查Nacos版本兼容性 确保客户端能正确解析服务器地址 修改容器配置后需删除旧镜像重新构建 成功实现本地Docker部署 关键点:容器网络解析问题、版本兼容性、正确的镜像更新方式。
2025-11-13 11:36:39
606
原创 Docker
Docker入门与项目部署实战摘要 本课程系统讲解Docker容器技术,覆盖基础命令、数据卷管理、镜像构建和网络配置等核心内容。通过MySQL和Nginx的部署案例展示容器化应用实践,详细解析常用命令如run、exec、rm等操作。重点演示数据卷挂载技巧,包括本地目录挂载和容器间数据共享。在项目部署部分,以Java应用为例,展示从Dockerfile编写、镜像构建到容器运行的完整流程。课程还包含实用技巧如命令别名设置、字符集配置等细节处理,帮助学员快速掌握Docker在开发运维中的实际应用。
2025-11-04 01:05:25
360
原创 Debug —— 本地Mysql数据迁移到Docker的Mysql容器中,使用创建容器时的正确密码登录失败
本文分析了MySQL容器使用数据卷挂载本地数据库文件后密码登录异常的问题。核心原因是MySQL用户密码存储于系统表而非配置文件,数据卷中的历史数据会覆盖新设置的密码。提供三种解决方案:1)直接使用原密码登录;2)进入容器执行SQL重置密码;3)删除数据卷重新初始化。特别指出即使重置密码仍可能失效的原因在于系统表数据的持久化特性。150字
2025-11-02 18:41:32
980
原创 Debug——Jenkins安装插件一堆红
摘要:文章指出Jenkins安装问题的解决方案:1)避免从中文网站下载旧版本Jenkins,应选择高版本以确保插件兼容性;2)需注意Jenkins版本与JDK版本的兼容性,否则需重新下载。解决后系统状态显示正常(配图展示绿色成功界面)。全文强调版本匹配的重要性,提供简明解决方案。
2025-10-22 13:50:52
251
原创 Debug——主机无法访问虚拟机中Docker开启的容器
文章摘要(149字) 本文解决了主机无法访问虚拟机Docker容器的问题。核心原因是Linux系统未开启IP转发功能,通过cat /proc/sys/net/ipv4/ip_forward确认值为0后,使用sysctl -w net.ipv4.ip_forward=1成功启用转发,实现正常访问。研究发现:1)IP转发功能是桥接/NAT网络的关键;2)虚拟机防火墙(firewalld/iptables)主要限制外部网络访问,不影响宿主机通信。文中详细提供了防火墙端口开放方法和验证命令,并指出NAT/仅主机模式
2025-10-21 12:25:01
631
原创 Debug —— Docker配置镜像后下载Mysql等报连接超时
摘要:用户在尝试多个Docker镜像源均出现连接超时问题后,通过配置daemon.json文件添加7个国内镜像源(包括高校和第三方镜像),最终成功解决下载问题。配置方法为向配置文件中批量写入多个镜像地址,其中至少一个可用源实现正常拉取。该方案适用于因网络限制导致的Docker镜像拉取失败场景。(149字)
2025-10-20 22:07:56
409
原创 Linux快速入门
本文介绍了Linux操作系统的基础知识,包括Linux简介、虚拟机使用、SSH工具、Linux命令格式以及文件目录管理等内容。重点讲解了文件和目录的基本操作命令(如ls、cd、mkdir等)、文件属性与权限设置(chmod、chown)以及文件编辑工具(vi/vim)的使用方法。这些知识为Linux系统初学者提供了入门指南,涵盖了系统管理的基础操作技能。
2025-10-15 21:09:27
231
原创 WebSocket —— 在线聊天室
本文介绍了消息推送的常用方式(轮询、SSE、WebSocket)及其API实现,并以在线聊天室为例展示具体应用。主要内容包括:1)WebSocket前后端API配置;2)基于Spring Boot的聊天室实现流程,包含用户认证、消息格式定义和会话管理;3)关键代码示例(配置类、POJO、控制器等),通过HttpSession实现用户状态维护。项目采用WebSocket全双工通信,相比轮询和SSE更高效,适合实时交互场景。
2025-10-12 20:44:15
1976
7
原创 苍穹外卖 —— 公共字段填充
本文介绍了通过自定义注解和切面实现数据库操作公共字段自动填充的技术方案。关键点包括:1)定义AutoFill注解标记需要自动填充的方法;2)创建切面类AutoFillAspect,在方法执行前拦截处理;3)根据操作类型(INSERT/UPDATE)动态反射设置创建时间、修改时间等公共字段。该方案通过AOP技术实现了公共字段的集中管理,避免了重复代码,提高了开发效率和代码可维护性。测试结果验证了方案的可行性,能够正确识别操作类型并自动填充相应字段。
2025-10-09 16:28:46
171
原创 苍穹外卖 —— 环境搭建
本文介绍了前后端开发环境的搭建过程及项目整体结构。前端部分展示了环境配置步骤;后端部分重点讲解了项目模块划分(sky-common公共模块、sky-pojo实体模块、sky-server业务模块)、Git版本控制以及数据库设计。数据库设计部分详细列出了11张核心表(员工表、分类表、菜品表等)的结构说明,包括字段名、数据类型和功能说明。文章通过图文结合的方式,系统呈现了项目开发环境的完整配置方案。
2025-09-16 11:37:43
768
原创 SpringBoot -原理篇
本文介绍了SpringBoot的核心原理与配置管理。主要内容包括:1)配置优先级规则;2)Bean管理,涵盖获取bean、作用域设置及第三方bean引入;3)SpringBoot核心原理,重点解析起步依赖机制和自动配置实现,通过@Conditional条件注解实现动态装配;4)自定义starter案例,详细分析实现方案,包括依赖定义、自动配置类编写和属性配置。文章通过大量图示展现了SpringBoot的底层机制,为开发者深入理解框架原理和实现自定义扩展提供了系统指导。
2025-09-14 23:02:39
540
原创 mybatis-plus 的更新操作(个人资料更新) —— 前后端传参空值处理
MyBatis-Plus 的 updateById 和 update 方法区别及空值处理方案 摘要:MyBatis-Plus 的 updateById 方法会更新所有字段包括 null 值,而 update 方法配合条件包装器只会更新非 null 字段。前端传空字符串而非 null 时也会导致数据库被覆盖。解决方案包括:前端只传需更新字段,或后端对每个字段进行非空校验。示例代码展示了如何手动处理空字符串和特殊值(如-1表示不更新),确保只更新有效字段。这种方案能兼容不传参、传空或传null的情况,同时通过特
2025-09-08 19:31:05
541
原创 JavaWeb —— AOP
本文介绍了Spring AOP的基础和进阶知识。AOP(面向切面编程)通过预编译和动态代理实现程序功能的统一维护,核心概念包括连接点、切入点、通知和切面等。文章详细讲解了五种通知类型(@Before、@After等)、通知执行顺序、execution和@annotation两种切入点表达式写法,以及如何获取连接点信息。最后通过一个记录操作日志的案例,演示了AOP在实际开发中的应用。Spring AOP能有效解耦业务代码与非业务功能,提高开发效率。
2025-09-08 16:00:53
308
原创 JavaWeb ——事务管理
本文介绍了Spring框架的两大核心之一AOP面向切面编程在事务管理中的应用。主要内容包括:1)通过配置日志可查看事务管理过程;2)事务属性设置,如异常回滚(rollbackFor)和传播行为(propagation);3)传播行为的7种类型及其应用场景,如REQUIRED、REQUIRES_NEW等;4)通过日志过滤功能可方便地筛选事务相关日志。文章通过图示和代码示例展示了Spring事务管理的实现方式和配置技巧。
2025-09-05 19:02:59
356
原创 JavaWeb —— 异常处理
本文介绍了如何实现全局异常处理机制,通过引入异常处理框架,提供系统化解决方案。主要内容包括:异常处理的引入背景、具体的实现方案、全局异常处理器的配置方法,以及最终的总结。该机制能有效捕获和处理系统异常,提升程序健壮性,为开发者提供统一的错误处理方式。
2025-09-05 16:08:49
220
原创 JavaWeb —— 登录校验
本文介绍了JWT令牌和会话技术在Web开发中的应用。主要内容包括:1)JWT令牌的生成与校验,对比了setSubject与setClaims的区别;2)登录流程中JWT令牌的下发与校验机制;3)过滤器(Filter)的基本概念、执行流程及登录校验的实现;4)比较了Filter、Interceptor和API网关的适用场景。文章通过代码示例和图示详细说明了JWT令牌的集成使用方式,以及如何通过过滤器实现请求拦截和身份验证功能,为Web应用的安全认证提供了完整的技术方案。
2025-09-05 15:53:35
939
原创 Spring Boot 全局异常处理问题分析与解决方案
摘要:本文分析了Spring Boot项目中全局异常处理器无法捕获过滤器异常的问题,并提出四种解决方案。问题表现为过滤器抛出的异常未被全局处理器捕获,导致响应格式不一致。解决方案包括:1) 在过滤器中手动处理异常;2) 使用ErrorController统一处理;3) 通过AOP切面拦截异常;4) 开发自定义异常处理框架。每种方案各有优缺点,开发者可根据项目需求选择合适的方法,确保整个应用的异常处理一致性。
2025-09-03 18:12:23
1349
2
原创 Mybatis的两种更新操作方式 理解
本文对比了MyBatis-Plus中两种更新方式:新建对象设置字段和传入完整对象。新建对象方式通过仅设置需更新字段,适合批量更新部分字段,效率更高;传入完整对象方式会更新所有字段,适合确保单个记录所有字段正确更新,安全性更好。两种方式分别适用于不同场景:前者用于批量更新部分字段,后者用于精确更新完整记录。开发者可根据更新需求选择合适方式,兼顾效率与准确性。
2025-09-02 19:59:46
789
原创 八股——IM项目(二)
消息队列与群聊系统优化方案 消息队列积压解决方案 当消息队列积压时,可从消费者、Broker和生产者三方面优化: 消费者端:增加实例、异步批处理、多线程分离拉取与处理、流控机制 Broker端:创建临时Topic分流、动态分配分区 生产者端:限流、批量发送、业务降级 群聊实现优化 从"暴力广播"升级为"精准扩散"方案: 查询群成员及所在服务器 按服务器分组推送 目标服务器精准投递给在线成员 针对大群问题采用混合模式: 500人以下:写扩散(实时推送) 500人以上:读
2025-08-08 12:05:07
999
原创 八股——IM项目(一)
本文介绍了IM系统中用户登录状态管理、消息流转机制及可靠性保障方案。登录状态通过Redis维护用户与长链接服务器的映射关系,同时在长链接服务中保存用户ID与管道的对应关系。消息流转分为单聊和群聊两种模式:单聊通过Redis精准转发,群聊则采用广播方式减少Redis压力。系统通过TCP Keepalive和心跳机制检测连接状态,并采用多级保障防止消息丢失,包括Kafka持久化、ACK确认和消息重传机制。针对离线消息和实时消息的顺序问题,提出了基于全局自增sequenceId的解决方案,确保消息时序正确性。文章
2025-08-06 21:17:18
1088
原创 八股——WebSocket
本文摘要:WebSocket是一种应用层协议,支持实时双向通信,通过HTTP协议升级建立持久连接,相比HTTP协议更适合实时交互场景。文章解析了WebSocket与HTTP的区别、TCP沾包拆包问题、Keepalive机制、物理断开连接的处理等关键技术点,并对比了SSE协议,说明WebSocket在IM系统中的优势在于其全双工通信能力。最后还探讨了WebSocket如何通过确认机制和重传策略保证消息可靠性。
2025-08-05 18:12:20
1088
原创 八股——Kafka相关
消息队列核心作用与Kafka架构解析 摘要: 消息队列主要实现系统解耦、异步通信和流量削峰三大功能。Kafka作为高性能消息队列,其集群架构包含生产者、Broker集群(含Leader/Follower副本)和消费者组。Kafka通过分区顺序I/O、零拷贝技术和页缓存优化实现超高吞吐,根本原因在于其仅进行两次数据拷贝(优于RocketMQ的三次)。消息可靠性通过生产者ACK确认、Broker副本同步和消费者手动提交三重保障。顺序消费则需依赖分区机制,通过相同Key确保消息进入同一分区,并由单线程消费该分区实
2025-08-04 20:11:28
1338
2
原创 SQL理解——INNER JOIN
这篇内容分析了SQL查询设计,主要探讨如何高效查询两个用户间的单聊会话ID。作者通过INNER JOIN连接用户会话表和会话表,确保只返回双方都参与的活跃单聊会话。相比LEFT JOIN,INNER JOIN能更精准地匹配需求,避免返回无效数据,同时提高查询性能。该设计满足了查找共同会话且保证状态有效的核心需求,体现了对数据完整性和查询效率的考虑。
2025-07-31 22:19:43
394
原创 Java—Optional
《优雅处理"可能不存在":Optional与Stream的最佳实践》 摘要:本文通过对比两种代码实现方式,展示了Java 8中Optional与Stream组合的优越性。传统for循环需要手动处理null检查和分支逻辑,而新方法通过Optional的"安全盒子"理念,将可能不存在的值显式封装,配合Stream的操作链,实现了:1)语义更直观的查询表达;2)自动化的null安全处理;3)单行完成所有分支逻辑。关键技巧包括findFirst()返回Optional、map
2025-07-11 17:08:59
350
原创 Web后端开发-Mybatis
MyBatis入门教程 本文介绍了MyBatis框架的基本使用,主要包含以下内容: 快速入门:通过示例展示了如何配置MyBatis环境,包括数据库连接信息(驱动类、URL、用户名和密码)和实体类User的定义。 Mapper接口:演示了使用@Mapper和@Select注解创建UserMapper接口,实现简单的查询功能。 单元测试:提供了SpringBoot整合MyBatis的测试示例,展示如何通过Mapper接口查询数据。 JDBC对比:通过原始JDBC代码示例,说明了MyBatis简化数据库操作的优势
2025-07-08 21:00:41
604
原创 Web后端开发-分层解耦
本文介绍了Java Web开发中的三层架构设计及分层解耦思想,通过员工信息查询案例展示了Controller-Service-Dao的分层实现。首先展示了原始代码结构,然后将业务逻辑从Controller层拆分到Service层,数据访问逻辑封装到Dao层。接着讲解了基于接口的解耦方法,通过IOC(控制反转)和DI(依赖注入)实现组件间的松耦合。文章包含多个代码示例,如EmpDao接口、EmpService实现类等,并配有架构图说明各层职责。最后通过Spring框架的@Component和@Autowire
2025-07-07 21:33:04
523
原创 Web后端开发-请求响应
本文介绍了SpringBoot中处理HTTP请求参数的多种方式,包括:1)简单参数处理,使用原始Servlet API或直接接收参数,支持@RequestParam注解进行参数映射;2)实体参数绑定,自动将请求参数映射到POJO对象;3)数组/集合参数处理,支持String数组和List接收;4)日期参数格式化,通过@DateTimeFormat指定格式;5)JSON参数解析,使用@RequestBody绑定复杂对象;6)路径参数提取,通过@PathVariable获取URL中的变量。每种方式均配有代码示例
2025-07-07 16:08:35
1787
原创 Web后端开发-SpringBootWeb入门、Http协议、Tomcat
Web后端开发简介:介绍了Web后端开发的基本概念,包括服务器处理请求、业务逻辑实现等核心内容。 SpringBootWeb入门:通过示例代码演示了如何创建简单的SpringBoot控制器,实现"Hello World"响应功能。 HTTP协议解析:详细讲解了HTTP请求和响应协议的结构特点,并指出Web服务器在HTTP解析中的重要作用,开发者可专注于业务逻辑。 自定义服务器示例:展示了用Java实现的基础Web服务器代码,包括请求处理和响应生成的核心流程。 (共144字)
2025-07-06 20:17:40
232
原创 Web前端开发-Vue
本文介绍了Vue.js的基础入门知识,主要包含以下内容: Vue快速入门示例,展示如何创建Vue实例并实现数据绑定 Vue核心指令介绍: v-bind:动态绑定属性 v-model:实现表单双向绑定 v-on:事件绑定 条件渲染和列表渲染: v-if/v-show:条件显示 v-for:列表循环渲染 综合案例:使用Vue指令实现用户表格数据展示,包含条件判断和循环渲染 所有示例都提供了完整的HTML代码实现,帮助初学者快速掌握Vue基础指令的使用方法。
2025-07-06 17:15:58
914
原创 Web前端开发-JS
本文介绍了JavaScript的基础知识,主要包含三部分内容:引入方式、基础语法和函数定义。JavaScript可以通过内部脚本或外部脚本方式引入网页,基础语法部分详细讲解了变量声明(var/let/const)、数据类型(number/string/boolean等)、类型转换及运算符使用。函数定义部分展示了两种定义方式(function关键字和变量赋值方式)及调用方法。文章通过代码示例直观展示了JavaScript的基本使用方法,适合初学者快速了解JS编程基础。
2025-07-06 15:43:20
866
原创 Web前端开发-HTML、CSS
本文介绍了HTML快速入门的基础知识,包括开发工具VS Code的使用、HTML基础标签和样式设置。主要内容涵盖:1)HTML文档结构及常用标签;2)图片和路径的三种引用方式(绝对路径、网络路径和相对路径);3)三种样式设置方法(行内样式、内嵌样式和外联样式);4)选择器应用(元素选择器、类选择器和ID选择器);5)超链接的使用。通过小型文件管理系统的案例演示了标题排版、样式修改等基础操作,适合HTML初学者快速掌握网页开发基础。
2025-07-06 14:19:08
1637
原创 初始化问题
文章摘要: 当List<Book> books仅声明而未初始化时,books实际上为null值,调用isEmpty()会抛出NullPointerException。这是因为未初始化的集合类引用默认值为null,无法执行任何方法调用。相比之下,声明时立即初始化(new ArrayList<>())的方式更安全可靠,既避免了空指针异常,又符合防御性编程原则。最佳实践是在声明变量时直接初始化集合,或在构造函数中确保初始化,这能有效提高代码健壮性,减少运行时错误。
2025-07-05 01:48:42
840
原创 基础数据类型-引用类型
Java中变量赋值和传递行为差异:基本类型赋值是值传递,修改副本不影响原值;引用类型赋值是引用的复制,多个变量指向同一对象,修改对象状态会影响所有引用。方法参数传递均为值传递,但对引用类型参数,修改对象内容会影响原引用,而修改参数引用本身不影响原引用。理解这种差异对于正确使用变量和参数至关重要。
2025-07-04 23:29:36
358
原创 Web前端开发-课程安排
本文展示了11张图片,内容涉及多个领域。图片格式统一采用优快云博客平台的图片描述标签,编号从0bdce0c314f74a4fb954b5322efcaba3到dbb1aea024d34365b26422e31c23103c。这些图片可能包含技术教程、代码示例或数据分析图表等常见的技术博客内容。所有图片都采用相同的标记方式,表明它们可能属于同一系列或同一主题的文章插图。
2025-06-28 18:18:56
141
原创 黑马-Web开发-导学
本文展示了一系列多样化的图片内容。从图片描述来看,涵盖了多个主题和场景,包括可能的自然景观、城市风貌或抽象概念等。这些图片通过不同的视觉元素呈现,展现了丰富的色彩和构图。虽然具体内容未明确说明,但可以看出这是一组经过精心挑选或创作的视觉素材,适用于博客、设计项目或多媒体展示等用途。图片编号显示至少包含6个不同的图像资源,为读者提供了多维度的视觉体验。
2025-06-28 18:06:44
142
原创 Java-IO流(二)
本文介绍了Java IO流中的字符流和缓冲流操作。字符流部分包括文件字符输入流(FileReader)和输出流(FileWriter),演示了如何读取和写入字符数据,并比较了单字符读取与字符数组读取的性能差异。缓冲流部分重点讲解了字节缓冲流(BufferedInputStream和BufferedOutputStream)的使用方法,通过包装原始IO流来提高读写效率。文章包含代码示例和性能对比,展示了如何利用缓冲流进行文件复制操作,并强调了flush()和close()方法在字符输出流中的重要性。
2025-06-27 20:24:36
421
原创 Java-IO流(一)
File类和IO流是Java中处理文件和输入输出操作的核心内容。File类用于表示文件或目录路径,提供创建、删除、判断文件类型、获取文件信息等功能。IO流分为字节流和字符流,用于读写数据。 File类常用方法包括:创建对象时支持绝对/相对路径;exists()判断路径是否存在;isFile()/isDirectory()区分文件类型;getName()获取文件名;length()获取文件大小;lastModified()获取修改时间;getPath()/getAbsolutePath()获取路径信息。此外,
2025-06-26 18:51:00
464
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅