<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[booleandev]]></title><description><![CDATA[深自缄默，如云漂泊]]></description><link>https://blog.youkuaiyun.com/Booleaning</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Booleaning]]></copyright><item><title><![CDATA[Swgger3 接入]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/142251166</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/142251166</guid><author>Booleaning</author><pubDate>Sat, 14 Sep 2024 10:08:46 +0800</pubDate><description><![CDATA[引用 Knife4j 的 starter。]]></description><category></category></item><item><title><![CDATA[设计模式之代理模式]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140500712</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140500712</guid><author>Booleaning</author><pubDate>Wed, 17 Jul 2024 17:20:31 +0800</pubDate><description><![CDATA[代理模式（Proxy Pattern）是软件工程中的一种设计模式，它属于结构型模式，用于在不直接访问实际对象的情况下，通过一个或多个代理对象来间接访问某个对象或执行某些操作。]]></description><category></category></item><item><title><![CDATA[PGSQL数据膨胀问题排查]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140373418</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140373418</guid><author>Booleaning</author><pubDate>Fri, 12 Jul 2024 10:56:04 +0800</pubDate><description><![CDATA[但是，因为数据库的数据需要同步至 数据仓库 ，因此使用了 Flink-CDC 进行同步，Flink-CDC 会开启一个复制槽，正常运行的情况下， Flink-CDC 会实时消费复制槽中的 WAL 日志，如果 Flink-CDC 同步任务关闭，但是又未关闭复制槽，复制槽为了保证订阅者数据完整性，会自动记录 FLink-CDC 上一次消费的位置，方便 Flink-CDC 下一次重启，重新监听 WAL 日志。我们一起来慢慢解决这个问题吧！，但是此方案会锁全库，因此执行的时候，必须停服执行，对业务的影响较大。]]></description><category></category></item><item><title><![CDATA[PGSQL 批量更新]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140373339</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140373339</guid><author>Booleaning</author><pubDate>Fri, 12 Jul 2024 10:54:09 +0800</pubDate><description><![CDATA[在我们的平常业务中，经常需要批量更新数据，例如：现阶段需要更新 1000 个包裹的上网时间，每个包裹的上网时间是不一样的，假如我们一个一个包裹更新，则需要与数据库进行 1000 次的交互，很大的消耗数据库的性能，并且更新的速度也很慢，因此，我们通常需要进行批量更新数据。以上是各种执行  PGSQL 批量更新的方案，个人的推荐度是 插入更新 > 子表 > 实体表 > 临时表。插入更新比较推荐的理由是这种方案 SQL 写起来结构比较清晰。]]></description><category></category></item><item><title><![CDATA[Spring Aop 获取入参和出参]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140373223</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140373223</guid><author>Booleaning</author><pubDate>Fri, 12 Jul 2024 10:51:32 +0800</pubDate><description><![CDATA[本次，我利用 Spring Aop 的注解方式获取切入点的入参和出参，因为比较简单，所以就直接上代码了。]]></description><category></category></item><item><title><![CDATA[Spring AOP 切面执行顺序]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140372591</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140372591</guid><author>Booleaning</author><pubDate>Fri, 12 Jul 2024 10:37:53 +0800</pubDate><description><![CDATA[Aspect：切面，由一系列切点、增强和引入组成的模块对象，可定义优先级，从而影响增强和引入的执行顺序。事务管理（Transaction management）在java企业应用中就是一个很好的切面样例。Join point：接入点，程序执行期的一个点，例如方法执行、类初始化、异常处理。在Spring AOP中，接入点始终表示方法执行。Advice：增强，切面在特定接入点的执行动作，包括 "around," "before" and "after"等多种类型。]]></description><category></category></item><item><title><![CDATA[zuul 网关超时优化]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140372560</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140372560</guid><author>Booleaning</author><pubDate>Fri, 12 Jul 2024 10:37:05 +0800</pubDate><description><![CDATA[前段时间，线上的服务不知道为啥，突然全部的服务都超时，所有的请求经过网关都超时，后来进行链路追踪排查，发现有一个服务链接 RDS 数据库，一个查询花费了 20S 的查询时间，导致后续调用该服务的应用都超时。然后超时的连接占满了 zuul 的转发池，最终导致了所有经过 gateway 的服务都在等待，导致全体服务全部超时。]]></description><category></category></item><item><title><![CDATA[Hibernate Type源码解析]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140372410</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140372410</guid><author>Booleaning</author><pubDate>Fri, 12 Jul 2024 10:34:00 +0800</pubDate><description><![CDATA[BasicType: 基础类型，例如 long,int,string 等基础类型。AssociationType: 关联类型的 type，主要用于外键等相关。IdentifierType: 主键相关的类型 type。]]></description><category></category></item><item><title><![CDATA[idea 修改 git 提交用户名]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140372375</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140372375</guid><author>Booleaning</author><pubDate>Fri, 12 Jul 2024 10:33:07 +0800</pubDate><description><![CDATA[修改当前项目目录下的 config 文件。]]></description><category></category></item><item><title><![CDATA[链表常见算法]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140372304</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140372304</guid><author>Booleaning</author><pubDate>Fri, 12 Jul 2024 10:31:30 +0800</pubDate><description><![CDATA[我这写的是两个链表合并，例如1->2->3->4和2->3->4，这里合并为1->2->3->4->2->3->4。但是我觉得题目的意思是合并为1->2->2->3->3->4->4，我这里应该写错了。主要的实现方式是在类中设置一个。的内部类，用来存储链表的节点。]]></description><category></category></item><item><title><![CDATA[Gateway 聚合swagger文档]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140371840</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140371840</guid><author>Booleaning</author><pubDate>Fri, 12 Jul 2024 10:20:27 +0800</pubDate><description><![CDATA[‍在微服务架构下，通常每个微服务 都会使用 Swagger 来管理我们的接口文档，当微服务越来越多，接口查找管理无形中要浪费我们不少时间，因此，我们需要把其它系统的 Swagger 文档聚合到  Gateway ,方便我们统一查看接口文档。]]></description><category></category></item><item><title><![CDATA[zuul 源码解析]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140371777</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140371777</guid><author>Booleaning</author><pubDate>Fri, 12 Jul 2024 10:19:03 +0800</pubDate><description><![CDATA[路由定位器，在 Spring Cloud Zuul 中，RouteLocator 的主要作用是加载 zuul 路由配置信息（如yml配置文件或数据库）到zuul中，再由过滤器将这些信息一步步去匹配，主要的 RouteLocator 有如下几种。复合路由定位器，主要集成所有的路由定位器（如配置文件路由定位器，服务发现定位器，自定义路由定位器等）来路由定位。服务发现的路由定位器，去注册中心如Eureka，consul等拿到服务名称，以这样的方式。路由刷新，只有实现了此接口的路由定位器才能被刷新。]]></description><category></category></item><item><title><![CDATA[转-Java 异常处理的 20 个最佳实践，你知道几个？]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140371720</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140371720</guid><author>Booleaning</author><pubDate>Fri, 12 Jul 2024 10:17:57 +0800</pubDate><description><![CDATA[异常的英文单词是 exception，异常本质上是程序上的错误，包括程序逻辑错误和系统错误。比如使用空的引用、数组下标越界、内存溢出错误等，这些都是意外的情况，背离我们程序本身的意图。错误在我们编写程序的过程中会经常发生，包括编译期间和运行期间的错误，在编译期间出现的错误有编译器帮助我们一起修正，然而运行期间的错误便不是编译器力所能及了，并且运行期间的错误往往是难以预料的。假若程序在运行期间出现了错误，如果置之不理，程序便会终止或直接导致系统崩溃，显然这不是我们希望看到的结果。]]></description><category></category></item><item><title><![CDATA[ZUUL超时配置]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140371680</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140371680</guid><author>Booleaning</author><pubDate>Fri, 12 Jul 2024 10:16:52 +0800</pubDate><description><![CDATA[zuul相关问题
connect-timeout-millis和socket-timeout-millis的区别


connect-timeout-millis

连接服务的时间
connect-timeout-millis=1


socket-timeout-millis

服务器连接及响应时间
socket-timeout-millis=1+2+3



]]></description><category></category></item><item><title><![CDATA[shading-jdbc数据库读写分离]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140371636</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140371636</guid><author>Booleaning</author><pubDate>Fri, 12 Jul 2024 10:15:44 +0800</pubDate><description><![CDATA[ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈，它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar（计划中）这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能，可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。ShardingSphere定位为关系型数据库中间件，旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力，而并非实现一个全新的关系型数据库。]]></description><category></category></item><item><title><![CDATA[【转】-多线程之Callable]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140315396</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140315396</guid><author>Booleaning</author><pubDate>Wed, 10 Jul 2024 09:58:21 +0800</pubDate><description><![CDATA[而自从Java 1.5开始，就提供了Callable和Future，通过它们可以在任务执行完毕之后得到任务执行结果。在前面的文章中我们讲述了创建线程的2种方式，一种是直接继承Thread，另外一种就是实现Runnable接口。因为Future只是一个接口，所以是无法直接用来创建对象使用的，因此就有了下面的FutureTask。如果需要获取执行结果，就必须通过共享变量或者使用线程通信的方式来达到效果，这样使用起来就比较麻烦。可以看到，这是一个泛型接口，call()函数返回的类型就是传递进来的V类型。]]></description><category></category></item><item><title><![CDATA[【转】-synchronized与Lock的区别与使用]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140315013</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140315013</guid><author>Booleaning</author><pubDate>Wed, 10 Jul 2024 09:49:32 +0800</pubDate><description><![CDATA[***//***//***//***//***/lock()：获取锁，如果锁被暂用则一直等待unlock():释放锁tryLock(): 注意返回类型是boolean，如果获取锁的时候锁被占用就返回false，否则返回truetryLock(long time, TimeUnit unit)：比起tryLock()就是给了一个时间期限，保证等待参数时间。]]></description><category></category></item><item><title><![CDATA[【转】-Java实现生产者和消费者的5种方式]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140314810</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140314810</guid><author>Booleaning</author><pubDate>Wed, 10 Jul 2024 09:44:18 +0800</pubDate><description><![CDATA[生产者和消费者问题是线程模型中的经典问题：生产者和消费者在同一时间段内共用同一个存储空间，生产者往存储空间中添加产品，消费者从存储空间中取走产品，当存储空间为空时，消费者阻塞，当存储空间满时，生产者阻塞。现在用四种方式来实现生产者消费者模型。]]></description><category></category></item><item><title><![CDATA[【转】-Java并发编程：阻塞队列]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140314764</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140314764</guid><author>Booleaning</author><pubDate>Wed, 10 Jul 2024 09:43:10 +0800</pubDate><description><![CDATA[注意，非阻塞队列中的方法都没有进行同步措施。前面谈到了非阻塞队列和阻塞队列中常用的方法，下面来探讨阻塞队列的实现原理，本文以ArrayBlockingQueue为例，其他阻塞队列实现原理可能和ArrayBlockingQueue有一些差别，但是大体思路应该类似，有兴趣的朋友可自行查看其他阻塞队列的实现源码。本文先讲述一下java.util.concurrent包下提供主要的几种阻塞队列，然后分析了阻塞队列和非阻塞队列的中的各个方法，接着分析了阻塞队列的实现原理，最后给出了一个实际例子和几个使用场景。]]></description><category></category></item><item><title><![CDATA[【转】-Java 中的阻塞队列]]></title><link>https://blog.youkuaiyun.com/Booleaning/article/details/140314721</link><guid>https://blog.youkuaiyun.com/Booleaning/article/details/140314721</guid><author>Booleaning</author><pubDate>Wed, 10 Jul 2024 09:42:13 +0800</pubDate><description><![CDATA[阻塞队列（）是一个支持两个附加操作的队列。这两个附加的操作是：在队列为空时，获取元素的线程会等待队列变为非空。当队列满时，存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景，生产者是往队列里添加元素的线程，消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器，而消费者也只从容器里拿元素。方法\处理方式抛出异常返回特殊值一直阻塞超时退出插入方法add(e)offer(e)put(e)移除方法remove()poll()take()检查方法。]]></description><category></category></item></channel></rss>