<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LSL666_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LSL666_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LSL666_]]></copyright><item><title><![CDATA[this调用导致 @Transactional 事务失效原因以及解决方法]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/163482657</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/163482657</guid><author>LSL666_</author><pubDate>Tue, 04 Aug 2026 22:28:29 +0800</pubDate><description><![CDATA[摘要：Spring的@Transactional注解基于AOP动态代理实现，要求通过代理对象调用才能生效。常见失效场景是类内部使用this调用本类事务方法（this指向原始对象而非代理）。解决方案：1）使用AopContext.currentProxy()获取代理对象调用（需开启@EnableAspectJAutoProxy(exposeProxy=true)）；2）将事务方法拆分到独立Service类中，通过注入调用。后者更推荐，避免直接操作代理对象。（149字）]]></description><category></category></item><item><title><![CDATA[ThreadLocal介绍]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/163443568</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/163443568</guid><author>LSL666_</author><pubDate>Mon, 03 Aug 2026 15:11:13 +0800</pubDate><description><![CDATA[摘要： ThreadLocal实现线程数据隔离，核心原理是利用线程内部的ThreadLocalMap存储数据，以ThreadLocal实例为key。多线程共享同一个ThreadLocal对象时，数据因存储在不同线程的独立Map中而互不干扰。典型应用场景如Tomcat请求处理中的用户信息存储。注意事项包括：线程池场景需手动remove()防止脏数据、弱引用key无法完全避免内存泄漏、避免存储可变共享对象等。ThreadLocal类似独立办公室的储物柜，同一把钥匙（ThreadLocal实例）在不同线程（办公室]]></description><category></category></item><item><title><![CDATA[SpringBoot静态资源映射]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/163417033</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/163417033</guid><author>LSL666_</author><pubDate>Sun, 02 Aug 2026 15:21:19 +0800</pubDate><description><![CDATA[Spring Boot 对 WebJars 的映射规则是：所有 /webjars/** 请求，都会去 classpath:/META-INF/resources/webjars/ 下（如下图）找资源。如果能成功打开 jQuery 的源码文件，说明 WebJars 映射规则生效 ——Spring Boot 自动找到了 classpath:/META-INF/resources/webjars/jquery/3.3.1/jquery.js 这个资源。如果按优先级从高到低，依次删除文件，即可验证所有的优先级。]]></description><category></category></item><item><title><![CDATA[10 Springboot的热部署]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/163417014</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/163417014</guid><author>LSL666_</author><pubDate>Sun, 02 Aug 2026 15:18:41 +0800</pubDate><description><![CDATA[SpringBoot热部署功能通过spring-boot-devtools依赖实现，无需重启即可更新代码、配置和模板文件。添加依赖后，修改文件按Ctrl+F9（部分需加Fn）触发热重启，支持Java代码、配置文件和模板（需关闭模板缓存）。静态资源修改后浏览器刷新即可生效，显著提升开发效率。该功能适用于开发环境，需注意不同IDE的快捷键差异。]]></description><category></category></item><item><title><![CDATA[【redis实战】使用Redis实现图片验证码]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/163416943</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/163416943</guid><author>LSL666_</author><pubDate>Sun, 02 Aug 2026 15:14:39 +0800</pubDate><description><![CDATA[本文介绍了基于Redis的验证码功能实现方案。通过对比数据库、Cookie和Session存储的缺点（性能低、不安全、分布式不兼容等），选用Redis作为验证码存储方案，因其高性能、自动过期和分布式友好等优势。技术实现上，使用SpecCaptcha生成验证码图片和文本，IdUtil生成UUID作为Redis键，并通过RedisTemplate设置120秒过期时间。接口返回统一格式的验证码数据（UUID、Base64图片和验证码文本），供前端展示和校验。核心代码展示了验证码生成、存储和返回的全流程，体现了安全]]></description><category></category></item><item><title><![CDATA[4 Docker 镜像安装与容器启动]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/160534461</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/160534461</guid><author>LSL666_</author><pubDate>Sun, 26 Apr 2026 22:43:01 +0800</pubDate><description><![CDATA[本文介绍了Docker镜像安装与容器启动的两种方式，类比本地软件安装流程。方式1是通过Docker Hub在线搜索和拉取镜像（如MySQL），方式2是使用离线镜像包加载。重点讲解了容器启动命令dockerrun的参数配置，包括端口映射、环境变量设置和数据卷挂载等。文章还解释了容器与镜像的关系、Docker的网络隔离特性，以及如何通过端口映射解决多容器运行时的端口冲突问题。最后对比了容器与独立操作系统的异同，强调容器是轻量级的隔离运行环境。]]></description><category></category></item><item><title><![CDATA[3 安装docker]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/160534428</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/160534428</guid><author>LSL666_</author><pubDate>Sun, 26 Apr 2026 22:39:15 +0800</pubDate><description><![CDATA[摘要：本文介绍了Docker的zip安装方法，主要步骤包括：1)将docker.zip文件放入/opt/docker目录并解压；2)通过docker info命令验证安装是否成功。相比yum安装，zip安装方式无需联网。安装过程可简化为三个关键步骤：解压安装包、赋予执行权限、运行安装脚本。docker info命令可用于查看Docker系统配置和运行状态，包括版本信息、资源统计等，是验证安装和排查问题的重要工具。安装成功后，通过查看版本信息即可确认安装完成。]]></description><category></category></item><item><title><![CDATA[微服务架构]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/160505438</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/160505438</guid><author>LSL666_</author><pubDate>Sat, 25 Apr 2026 17:36:49 +0800</pubDate><description><![CDATA[，如果用硬编码 IP 的方式调用，新增 / 减少实例时要改代码（比如从 3 个扩到 4 个，就得手动加 IP），又麻烦又容易出错，只适合极小系统。图中的 “Nginx（流量网关）” 是一个集群（多台 Nginx 服务器组成），只对外暴露443端口（HTTPS 协议的默认端口）。API 网关会先接收前端的请求，然后通过 RPC 分别调用这三个微服务，拿到各自的数据后，剔除手机号、身份证号等敏感信息，再组装成一个统一的响应结果返回给前端。核心目的就是解决微服务集群（比如多实例的商品服务）的调用问题。]]></description><category></category></item><item><title><![CDATA[微服务架构——有关概念]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/160505406</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/160505406</guid><author>LSL666_</author><pubDate>Sat, 25 Apr 2026 17:35:11 +0800</pubDate><description><![CDATA[目录2 微服务系统架构2.1 一些概念2.1.1 域名2.1.3 断点故障2.1.2 DNS服务器2.1.3 浏览器输入www.baidu.com的操作流程2.1.4 localhost和 127.0.0.1 的区别2.1.5 不同协议默认端口号2.1.6 网关2.1.7 集群2.1.8 QPS2.1.9 RPC2.1.10 VPN2.1.11 带宽2.1.12 网络通讯的五元组（七元组）2.1.13 有状态和无状态服务2.1.14 DNS 挟持]]></description><category></category></item><item><title><![CDATA[什么是微服务]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/160451919</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/160451919</guid><author>LSL666_</author><pubDate>Thu, 23 Apr 2026 22:54:48 +0800</pubDate><description><![CDATA[本文系统梳理了Java Web开发技术演进历程。从早期基于Servlet的单体架构，到SSH/SSM框架时代的技术分层，最终演进为当前主流的微服务架构。重点分析了微服务架构的特点：将单体应用拆分为独立部署的小型服务单元，每个服务聚焦单一业务功能，通过轻量协议通信。文章对比了不同架构的优劣势，指出微服务具有松耦合、技术栈灵活、容错性强等优势，但也带来了分布式系统复杂性的挑战。技术发展从Servlet到SpringBoot/SpringCloud的演进，体现了Java生态对开发效率和系统可扩展性的持续优化。]]></description><category></category></item><item><title><![CDATA[快速Spring Cloud+ELK+AOP搭建一个简单的项目]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/160443603</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/160443603</guid><author>LSL666_</author><pubDate>Thu, 23 Apr 2026 16:42:52 +0800</pubDate><description><![CDATA[本文介绍了使用SpringCloud+ELK+AOP搭建微服务项目的完整方案。项目包含生产者(8081端口)和消费者(8082端口)两个微服务，通过Feign实现远程调用。关键技术点包括： 日志收集：通过AOP切面拦截接口请求，使用Logback将日志发送到Logstash(4560端口) ELK环境：使用Docker搭建Elasticsearch存储日志，Kibana(5601端口)进行可视化展示 调用流程：浏览器请求→消费者AOP拦截→Feign调用生产者→返回结果→日志记录→ELK存储展示 配置细节：]]></description><category></category></item><item><title><![CDATA[7 MySQL事务]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/160327862</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/160327862</guid><author>LSL666_</author><pubDate>Mon, 20 Apr 2026 10:54:50 +0800</pubDate><description><![CDATA[摘要：本文介绍了数据库事务的基本概念和操作方式。事务是数据库操作的执行单元，具有ACID特性（原子性、一致性、隔离性、持久性）。文中通过转账案例演示了MySQL事务的两种操作方式：命令方式（start transaction/commit/rollback）和设置自动提交方式（set autocommit=off）。同时讲解了JDBC中操作事务的Connection接口方法，以及事务隔离级别（Read uncommitted至Serializable）对脏读、不可重复读和幻读的影响。最后通过具体案例演示了不]]></description><category></category></item><item><title><![CDATA[6 sql注入漏洞]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/160326775</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/160326775</guid><author>LSL666_</author><pubDate>Mon, 20 Apr 2026 10:41:00 +0800</pubDate><description><![CDATA[此时所有的 ' 都只是普通字符串里的引号，不再具备 “闭合字符串、拼接 SQL 逻辑” 的能力，数据库会把 1\'or\'1\'=\'1 当作完整的密码字符串去匹配，而不是 SQL 语法的一部分。SQL 注入产生原因是 SQL 语句的拼接，利用 SQL 关键字产生效果。SQL 注入产生原因是 SQL 语句的拼接，利用 SQL 关键字产生效果。这里把用户输入的 username 和 password 直接拼接到 SQL ，没任何过滤，就给了攻击者篡改 SQL 逻辑的机会。* 后台的程序拼接SQL语句。]]></description><category></category></item><item><title><![CDATA[网络爬虫登录场景与流程]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/159998201</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/159998201</guid><author>LSL666_</author><pubDate>Thu, 09 Apr 2026 22:44:10 +0800</pubDate><description><![CDATA[本文摘要：网络爬虫登录流程主要分为四种场景：1）公开数据直接请求；2）账号密码登录（使用Selenium模拟）；3）验证码登录（结合短信读取工具）；4）图形验证码登录（需OCR识别）。通用流程包括发起请求、获取响应、解析数据、存储数据及反爬处理。不同场景需采用特定工具组合（如Requests、Selenium、OpenCV等）应对验证机制，最终获取有效会话进行数据爬取。]]></description><category></category></item><item><title><![CDATA[计算机网络——网络模型和TCP]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/159998151</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/159998151</guid><author>LSL666_</author><pubDate>Thu, 09 Apr 2026 22:41:57 +0800</pubDate><description><![CDATA[摘要：OSI七层模型（物理层至应用层）是理论性网络分层标准，TCP/IP四层模型（应用层至网络接口层）是其简化实现。TCP通过三次握手建立可靠连接，四次挥手安全断开，采用序列号、确认应答、超时重传等机制保证可靠传输。滑动窗口实现流量控制，匹配接收方处理能力。TIME_WAIT状态确保连接彻底关闭并防止旧数据干扰。TCP面向连接、可靠，UDP无连接、高效，两者适用于不同场景。HTTP短连接通常由服务器发起关闭，长连接则由任意方触发关闭条件时发起。]]></description><category></category></item><item><title><![CDATA[AI视觉概述]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/159894471</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/159894471</guid><author>LSL666_</author><pubDate>Mon, 06 Apr 2026 21:46:00 +0800</pubDate><description><![CDATA[obsidian。]]></description><category></category></item><item><title><![CDATA[Linux命令]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/159893905</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/159893905</guid><author>LSL666_</author><pubDate>Mon, 06 Apr 2026 21:21:55 +0800</pubDate><description><![CDATA[Linux常用命令速查指南： 进程管理：ps -ef/aux查看进程，top监控资源，kill -9终止进程 内存查看：free -h显示内存使用情况 文件查找：find按名称查找，grep按内容搜索 日志查看：tail -f实时跟踪，less分页浏览 端口查询：ss/netstat查看端口占用 权限管理：chmod修改权限，chown更改属主 记忆要点： 进程操作：ps查，top看，kill杀 文件检索：find找文件，grep搜内容 日志监控：tail实时，less分页 网络诊断：ss查端口 权限设置：]]></description><category></category></item><item><title><![CDATA[JVM——OOM异常]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/159835432</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/159835432</guid><author>LSL666_</author><pubDate>Sat, 04 Apr 2026 22:53:56 +0800</pubDate><description><![CDATA[摘要：OOM（OutOfMemoryError）是JVM无法分配内存时抛出的致命错误，主要包括堆溢出、方法区溢出和直接内存溢出三种类型。堆溢出常见于内存泄漏或大对象分配失败；方法区溢出由类元数据过多引起；直接内存溢出则因堆外内存未及时释放。定位方法包括生成堆转储文件、分析内存快照和检查代码。解决方案涉及调整内存参数、修复内存泄漏、优化缓存设计、减少动态类生成等。关键是通过监控工具预警内存异常，并在代码层面规范资源管理。]]></description><category></category></item><item><title><![CDATA[JVM——线上问题定位]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/159835418</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/159835418</guid><author>LSL666_</author><pubDate>Sat, 04 Apr 2026 22:51:51 +0800</pubDate><description><![CDATA[本文总结了线上问题排查的通用方法：对于接口报错/RT超时，可通过日志定位或使用SBA/ELK监控工具；CPU飙高时可用top+jstack命令或Arthas工具分析线程堆栈；死锁问题可通过jstack或Arthas的thread-b命令检测。文章还区分了有无运维时的不同处理流程，并详细介绍了各类问题的具体排查方案，包括日志分析、监控系统使用、线程状态检查等，为线上故障定位提供了系统化的解决思路。]]></description><category></category></item><item><title><![CDATA[nginx——方向代理和负载均衡]]></title><link>https://blog.youkuaiyun.com/LSL666_/article/details/159748770</link><guid>https://blog.youkuaiyun.com/LSL666_/article/details/159748770</guid><author>LSL666_</author><pubDate>Thu, 02 Apr 2026 08:41:45 +0800</pubDate><description><![CDATA[Nginx是一款高性能的Web服务器和反向代理工具，因其稳定性强、并发处理能力优异而广受企业青睐。其核心功能包括：1）反向代理，通过隐藏真实服务器IP保障服务安全；2）负载均衡，支持轮询、权重分配等策略，可自动剔除不可用节点；3）请求过滤，结合Lua脚本实现安全防护。配置主要通过nginx.conf文件实现，包含全局设置、事件模块、HTTP服务定义等部分，可通过upstream定义服务集群，location配置代理规则。在Docker部署时需挂载配置文件实现持久化，并通过端口映射对外提供服务。Nginx还支]]></description><category></category></item></channel></rss>