<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Joe192的博客]]></title><description><![CDATA[弥补短板只会让你平凡，发挥优势才能实现卓越。]]></description><link>https://blog.youkuaiyun.com/Joe192</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Joe192]]></copyright><item><title><![CDATA[Jenkins构建微服务架构项目使用Supervisord进行启动]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/157138015</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/157138015</guid><author>Joe192</author><pubDate>Mon, 19 Jan 2026 16:56:38 +0800</pubDate><description><![CDATA[摘要：Supervisorctl是Supervisor的管理工具，用于控制其管理的进程。Supervisor包含服务端supervisord和客户端supervisorctl。常用命令包括查看状态(status)、启停程序(start/stop)和重载配置(reload)。在CentOS7中配置Spring Boot程序需安装Supervisor，创建配置文件并设置日志路径等参数。可通过Jenkins配置sudo权限管理Supervisor，也可使用systemd或直接脚本管理作为替代方案。最后在Jenki]]></description><category></category></item><item><title><![CDATA[Nacos 3.x 支持PostgreSQL数据库完整教程]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/156713532</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/156713532</guid><author>Joe192</author><pubDate>Thu, 08 Jan 2026 11:10:48 +0800</pubDate><description><![CDATA[本文介绍了如何为Nacos 3.1.0版本添加PostgreSQL数据库支持。主要修改集中在plugin.datasource工程中：首先创建postgresql目录并复制mysql实现代码；然后在DataSourceConstant中新增pgsql常量；最后修改ConfigInfoBetaMapperByPostgreSql和ConfigInfoMapperByPostgreSql两个类，调整SQL语句以适配PostgreSQL语法。这些修改使得Nacos能够在保留原有MySQL和Derby支持的同时，新]]></description><category></category></item><item><title><![CDATA[阿里开源线上诊断工具Arthas，适合生产环境故障排查]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/154356776</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/154356776</guid><author>Joe192</author><pubDate>Mon, 03 Nov 2025 18:42:45 +0800</pubDate><description><![CDATA[Arthas 是阿里开源的线上诊断工具，尤其适合生产环境下的动态监控、问题排查，无需重启服务，对业务侵入性极低。下面整理了一批高频实用的 Arthas 命令及实际用法，直接解决 “线程阻塞、GC 异常、方法耗时、依赖冲突” 等问题。作用：立即找出 “阻塞其他线程的根源线程”（通常是死锁或长期持有锁的线程）。场景：服务调用超时、无响应时，先执行此命令，10 秒内定位是否有死锁或阻塞。二、下载arthas （-O是将远端文件保存到本地）四、线程问题排查（核心场景）三、Arthas启动。]]></description><category></category></item><item><title><![CDATA[基于docker+python+paddleocr构建自己本地化ocr服务]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/146198622</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/146198622</guid><author>Joe192</author><pubDate>Wed, 12 Mar 2025 10:40:54 +0800</pubDate><description><![CDATA[【代码】基于docker+python+paddleocr构建自己本地化ocr服务。]]></description><category></category></item><item><title><![CDATA[centos7静默安装oracle11g及简单操作]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/145821434</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/145821434</guid><author>Joe192</author><pubDate>Mon, 24 Feb 2025 10:15:04 +0800</pubDate><description><![CDATA[2.修改CentOS系统标识 (由于Oracle默认不支持CentOS)

2.1.删除CentOS Linux release 7.9.2009 (Core)（快捷键dd），改成redhat-7

3.修改sysctl.conf

添加以下内容:
4.修改完后,启用新的配置

5.安装必须的软件包

6.创建安装oracle程序用户组

7.创建DBA用户组

8.创建用户oracle 并加入到dba组

9.将用户oracle加入到oinstall组

10.修改用户oracle的密码

11.查看用户]]></description><category></category></item><item><title><![CDATA[Jenkins使用Publish Over SSH插件远程部署程序到阿里云服务器]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/141321550</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/141321550</guid><author>Joe192</author><pubDate>Mon, 19 Aug 2024 11:55:07 +0800</pubDate><description><![CDATA[使用Jenkins远程构建springboot服务到阿里云上，Jenkins版本：Version 2.462.1。]]></description><category></category></item><item><title><![CDATA[Tiny11builder制作自己的纯版Windows镜像系统，测试有效]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/140708086</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/140708086</guid><author>Joe192</author><pubDate>Fri, 26 Jul 2024 10:16:10 +0800</pubDate><description><![CDATA[终端管理员 运行 Set-ExecutionPolicy unrestricted					必须，否则无法运行。等待几分钟，Tiny11 Builder将生成一个名为“tiny11.iso”的镜像文件。等会出现这个界面，选择和装载镜像的版本系统，我这边是专业版，选择 4  然后回车。出现以下，选择刚刚装载的镜像盘符，我这里是G，输入G即可，回车下一步。下载好的window11镜像右键，选择挂载或装载即可。准备工作完成后，下面就正式傻瓜式一步步执行就行。在我的电脑下面就会出现。到这基本就顺利完成了。]]></description><category></category></item><item><title><![CDATA[Postgresql处理JSON类型中替换某个属性值问题]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/135126661</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/135126661</guid><author>Joe192</author><pubDate>Thu, 21 Dec 2023 11:27:19 +0800</pubDate><description><![CDATA[有没有办法获取所选JSON数组元素的索引并将SELECT语句和UPDATE语句合并为一个？使用postgresql对json的特性使用sql批量处理json中某个属性的值。基本执行上面就可以批量处理josn数组里面boardId的属性值了。因为是更新同一个tent_info字段，所有得分两次执行才行。想要替换boardId的值。#三、处理单个属性值。]]></description><category></category></item><item><title><![CDATA[使用HutoolUtil工具包之树结构工具TreeUtil 快速处理数据树形结构数据，很好很强大！]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/130398760</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/130398760</guid><author>Joe192</author><pubDate>Thu, 27 Apr 2023 09:08:23 +0800</pubDate><description><![CDATA[数据库里面有子父级的数据，查询出来是一个平级list集合，想要展示树形的数据结构，需要重新封装一下，所以提供一个通用的方法方便灵活。]]></description><category></category></item><item><title><![CDATA[【LogBack日志】打印mybatis中sql日志并存放到指定文件中]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/130123557</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/130123557</guid><author>Joe192</author><pubDate>Thu, 13 Apr 2023 10:12:30 +0800</pubDate><description><![CDATA[在springboot中使用logbac-spring.xml单独打印mybaits中的sql，另存一个单独的日志中。
2、logback-spring.xml

3、关键几点
几个关键点a. 文件名需要为​​logback-spring.xml​​; 动态日志路径才会生效; 属性文件中配置 ​​log.path=xxx​​;【Log日志】logback.xml动态配置属性值(包括接入的第三方配置)b. levle 需要是DEBUG等级; 因为sql日志是DEBUG等级的；name= 存放mapper文件的]]></description><category></category></item><item><title><![CDATA[在docker build 期间无法使用进程替换,因为 bash 进入posix 模式]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/129790101</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/129790101</guid><author>Joe192</author><pubDate>Mon, 27 Mar 2023 10:21:14 +0800</pubDate><description><![CDATA[显然作为sh运行会导致 bash 切换到 POSIX 模式,该模式不允许进程替换: /bin/sh: -c: 第 0。在 docker build 期间无法使用进程替换,因为 bash 进入 posix 模式 在 Dockerfile 中,我想使用进程替换: RUN echo ]]></description><category></category></item><item><title><![CDATA[mybatis 处理数组类型及使用Json格式保存数据 JsonTypeHandler and ArrayTypeHandler]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/129673135</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/129673135</guid><author>Joe192</author><pubDate>Mon, 20 Mar 2023 18:24:27 +0800</pubDate><description><![CDATA[mybatis 比 ibatis 改进了很多，特别是支持了注解，支持了plugin inteceptor，也给开发者带来了更多的灵活性，相比其他ORM，我还是挺喜欢mybatis的。]]></description><category></category></item><item><title><![CDATA[Jdbc连接oracle远程数据库字符集US7ASCII中文乱码解决]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/127528314</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/127528314</guid><author>Joe192</author><pubDate>Wed, 26 Oct 2022 10:58:27 +0800</pubDate><description><![CDATA[因为程序代码本身的编码是utf-8，使用jdbc连接查询oracle数据库表数据中文乱码，plsql设置环境变量NLS_LANG=AMERICAN_AMERICA.US7ASCII 是能解决plsql显示正常，但是程序使用jdbc连接数据库还是乱码。数据库：oracle11g 字符集：AMERICAN_AMERICA.US7ASCII。1、配置服务端编码和客户端编码。]]></description><category></category></item><item><title><![CDATA[微服务（分布式架构）扩展之AKF拆分原则]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/126832483</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/126832483</guid><author>Joe192</author><pubDate>Tue, 13 Sep 2022 15:15:37 +0800</pubDate><description><![CDATA[AKF 立方体也叫做scala cube，它在《The Art of Scalability》一书中被首次提出，旨在提供一个系统化的扩展思路。AKF 把系统扩展分为以下三个维度：X 轴：直接水平复制应用进程来扩展系统。Y 轴：将功能拆分出来扩展系统。Z 轴：基于用户信息扩展系统。]]></description><category></category></item><item><title><![CDATA[Spring系列16：注解详解和Spring注解增强(基础内功)]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/125781012</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/125781012</guid><author>Joe192</author><pubDate>Thu, 14 Jul 2022 11:40:30 +0800</pubDate><description><![CDATA[有部分小伙伴反馈说前面基于注解的Spring中大量使用注解，由于对Java的注解不熟悉，有点难受。建议总结一篇的Java注解的基础知识，那么，它来了！什么是代码中写的注释？那是给开发者看的，但是编译之后的字节码文件中是没有注释信息的，也就是说注释对于java编译器和JVM来说是没有意义的，看不到！类比注释是给人看的，注解则是给java编译器和JVM看的一些标识，编译器和虚拟机在运行的过程中可以获取注解信息来做一些处理。注解定义的语法如下：
参数名称可以没有，也可以定义多个，定义细节如下：定义注解时候需要考虑]]></description><category></category></item><item><title><![CDATA[Spring系列15：Spring AOP 概念与快速入门篇]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/125745355</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/125745355</guid><author>Joe192</author><pubDate>Wed, 13 Jul 2022 09:42:20 +0800</pubDate><description><![CDATA[OOP： Object-oriented Programming 面向对象编程，大家再熟悉不过了AOP：Aspect-oriented Programming 面向切面编程面向切面编程通过提供另一种思考程序结构的方式来补充面向对象编程。OOP 中模块化的关键单元是类，而 AOP 中模块化的单元是切面。Spring 的关键组件之一是 AOP 框架。Spring IoC 容器不依赖 AOP，AOP 对 Spring IoC 的补充提供了非常强大的中间件解决方案。主要用于下面2方面：先了解一下核心 AOP 概念和]]></description><category></category></item><item><title><![CDATA[Spring系列14：SpEL详解]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/125744579</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/125744579</guid><author>Joe192</author><pubDate>Tue, 12 Jul 2022 16:04:28 +0800</pubDate><description><![CDATA[Spring 表达式语言（简称“SpEL”）是一种强大的表达式语言，支持在运行时查询和操作对象图。语言语法类似于 Unified EL，但提供了额外的功能，最值得注意的是方法调用和基本的字符串模板功能。虽然 SpEL 是 Spring 产品组合中表达式评估的基础，但它不直接与 Spring 绑定，可以独立使用。表达式语言支持以下功能：通过几个案例快速体验SpEL表达式的使用。纯字面意义的字符串输出，体验使用的基本步骤。
案例2 字符串方法的字面调用
在表达式中调用字符串的普通方法和构造方法。

案例3 针对]]></description><category></category></item><item><title><![CDATA[Spring系列13：Resource接口及内置实现]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/125743588</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/125743588</guid><author>Joe192</author><pubDate>Tue, 12 Jul 2022 15:21:10 +0800</pubDate><description><![CDATA[本文内容Java 的标准 java.net.URL 类和各种 URL 前缀的标准处理程序不足以满足所有对低级资源的访问。 例如没有标准化的 URL 实现可用于访问需要从类路径或相对于 ServletContext 获取的资源。 虽然可以为专门的 URL 前缀注册新的处理程序（类似于现有的前缀处理程序如 http:），但这通常相当复杂，并且 URL 接口仍然缺乏一些理想的功能，例如检查是否存在的方法 指向的资源。针对上述这种情况，Spring 提供了更强大的接口Resource用于对低级资源的抽象访问，其定义]]></description><category></category></item><item><title><![CDATA[Spring系列12：IoC容器的扩展点]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/125742536</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/125742536</guid><author>Joe192</author><pubDate>Tue, 12 Jul 2022 14:58:56 +0800</pubDate><description><![CDATA[知识需要成体系地学习，本系列文章前后有关联，建议按照顺序阅读。上一篇我们详细介绍了Spring Bean的生命周期和丰富的扩展点，没有阅读的强烈建议先阅读。本篇来详细讲讲容器提供的扩展点，完整的生命周期图镇楼。作用和定义常规 BeanPostProcessor 的作用是提供自定义的实例化逻辑、初始化逻辑、依赖关系解析逻辑等，对bean进行增强。主要的作用阶段是初始阶段前后。该接口定义了2接口，分别是前置增强和后置增强。 Spring AOP 功能主要是通过 BeanPostProcessor 实现的。
自定]]></description><category></category></item><item><title><![CDATA[Spring系列11： `@Value` `@Resource` `@PostConstruct` `@PreDestroy` 详解]]></title><link>https://blog.youkuaiyun.com/Joe192/article/details/125741838</link><guid>https://blog.youkuaiyun.com/Joe192/article/details/125741838</guid><author>Joe192</author><pubDate>Tue, 12 Jul 2022 14:25:31 +0800</pubDate><description><![CDATA[前面章节介绍了使用@Autowired注入依赖的详细用法，感兴趣的可以翻看前面的文章。
Spring 还支持通过在字段或 bean 的Setter方法上使用 JSR-250 @Resource 注解进行注入。
1.1、基本使用
依赖组件定义
使用@Resource注入依赖
运行测试
@Resource和@Autowired的区别@Value 通常用于注入外部化属性。在字段或方法构造函数参数级别使用的注释，指示注解元素的默认值表达式。
案例1
使用@Value注入配置属性值
外部配置文件demo10/appl]]></description><category></category></item></channel></rss>