<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fox_bert的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fox_bert</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fox_bert]]></copyright><item><title><![CDATA[VS Code 安装及常用插件]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/144142502</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/144142502</guid><author>fox_bert</author><pubDate>Thu, 17 Apr 2025 18:00:28 +0800</pubDate><description><![CDATA[Visual Studio Code简称VS Code，是一款功能强大的代码编辑器，与IDE（集成开发环境）不同，VS Code需要安装平台相应的编译器和语言的扩展。IDE：是用于提供程序开发环境的应用程序，包括代码编辑器、编译器、调试器和图形用户界面等工具，集成了代码编写、分析、编译和调试等功能。]]></description><category></category></item><item><title><![CDATA[Elasticsearch（二）集成Spring Boot 基本的API操作]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/142337940</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/142337940</guid><author>fox_bert</author><pubDate>Fri, 11 Oct 2024 16:35:25 +0800</pubDate><description><![CDATA[如果创建项目后拉取不到对应依赖，springboot 可以选用低一些的稳定版本例如 2.3.2.RELEASE 版本。Java使用对应的rest风格调用ES是通过client依赖包进行操作的。配置需要的 maven 依赖。（当然也可自定义ES版本）]]></description><category></category></item><item><title><![CDATA[node js安装、配置（Windows版）]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/140281569</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/140281569</guid><author>fox_bert</author><pubDate>Tue, 09 Jul 2024 09:52:22 +0800</pubDate><description><![CDATA[清理 shell 配置文件中 PNPM_HOME 的环境变量（HOME/.bashrc、HOME/.bashrc、HOME/.bashrc、HOME/.zshrc 或者 $HOME/.config/fish/config.fish）3、npm 如果已经安装了包，修改全局配置并不能迁移过去。LTS(Long Time Support，经过测试，相对完善、稳定的版本)1、npm 默认在当前路径下，将下载的包存到自动创建的。这样下载好的包可以直接用，不会存在找不到的问题。node 目录下新建目录。]]></description><category></category></item><item><title><![CDATA[GIT 使用相关技巧记录]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/140251308</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/140251308</guid><author>fox_bert</author><pubDate>Sun, 07 Jul 2024 20:44:41 +0800</pubDate><description><![CDATA[提交用户信息分为全局和本地两种。]]></description><category></category></item><item><title><![CDATA[Docker（四）容器相关操作及问题处理]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/139088407</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/139088407</guid><author>fox_bert</author><pubDate>Tue, 21 May 2024 17:52:44 +0800</pubDate><description><![CDATA[在dockerfile文件里添加下面内容.............#设置时区保存后，利用 docker build 命令生成镜像使用即可,使用dockerfile创建的镜像的容器改变了容器的时区，这样不仅保证了容器时间与宿主机时间一致（假如宿主机也是CST）,并且像上面使用tomcat作为父镜像的话，JVM的时区也是CST,这样tomcat的日志信息的时间也是和宿主机一致的，像上面那两种方式只是保证了宿主机时间与容器时间一致，JVM的时区并没有改变，tomcat日志的打印时间依旧是UTC。]]></description><category></category></item><item><title><![CDATA[定时任务的几种实现方式]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/107047224</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/107047224</guid><author>fox_bert</author><pubDate>Tue, 07 May 2024 14:32:56 +0800</pubDate><description><![CDATA[定时任务实现的几种方式：

1、Timer：这是java自带的java.util.Timer类，这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行，但不能在指定时间运行。一般用的较少。
	2、ScheduledExecutorService：也jdk自带的一个类；是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说,任务是并发执行,互不影响。
	3、Spring Task：Spring3.0以后自带的task，可以将]]></description><category></category></item><item><title><![CDATA[Elasticsearch（一）基本语法命令]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/125655866</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/125655866</guid><author>fox_bert</author><pubDate>Sun, 14 Aug 2022 15:06:02 +0800</pubDate><description><![CDATA[重要】1、关于分词term：直接查询精确的解析（会用到分词器，分词器存在两种情况，text 和 keyword）match：会使用分词器解析！（先分析文档，然后再通过分析的文档进行查询）两个类型text：会被分词器分析keyword：不会被分词器分析。......]]></description><category></category></item><item><title><![CDATA[MongoDB（一）基本介绍及安装]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/125583040</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/125583040</guid><author>fox_bert</author><pubDate>Sun, 03 Jul 2022 18:28:14 +0800</pubDate><description><![CDATA[MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品，是非关系数据库当中功能最丰富，最像关系数据库的。它支持的数据结构非常松散，是类似json的bson格式，因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大，其语法有点类似于面向对象的查询语言，几乎可以实现类似关系数据库单表查询的绝大部分功能，而且还支持对数据建立索引。区别官方地址：MongoDB Comm]]></description><category></category></item><item><title><![CDATA[Java多线程（六）JUC包功能]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/125399985</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/125399985</guid><author>fox_bert</author><pubDate>Wed, 22 Jun 2022 00:14:35 +0800</pubDate><description><![CDATA[产生原因：多线程并发场景下，操作如 ArrayList 这种不安全的集合会出现问题，可能后面写入的会覆盖前面的


会出现异常 ：ConcurrentModificationException 多线程调用的时候：
读取场景：直接对数据进行读取
写入场景：写入的情况将原先的复制一份，在复制的上面进行写入，写入完成，将此数据覆盖元原先的数据
目的：在写入时避免覆盖，造成数据问题   推荐使用：CopyOnWriteArrayList


  推荐使用：CopyOnWriteArraySet


  推荐使用：C]]></description><category></category></item><item><title><![CDATA[Java多线程（五）生产者、消费者案例]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/125392327</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/125392327</guid><author>fox_bert</author><pubDate>Tue, 21 Jun 2022 17:47:52 +0800</pubDate><description><![CDATA[生产完再消费，消费完再生产：满足数量后才开始进行消费，消费完全部再进行生产一只猫钓鱼，一次钓一条，放桶里，满五条后，拿回家。
另一只猫吃鱼，一次吃一条，吃完后，让钓鱼猫再去钓鱼 ，如此继续（1）水桶：用来放鱼


（2）创建生产者和消费者





（3）main方法测试


 （4）执行结果【边生产边消费】生产者：只要不大于5就一直去生产；消费者：只要有就可以一直去消费桶里最多放5条鱼
一只猫钓鱼，一次钓一条
放桶里
同时通知另一只猫吃鱼，一次吃一条
同时通知钓鱼猫再钓鱼 （只要桶里鱼不满足5条）
如此继]]></description><category></category></item><item><title><![CDATA[Mybatis（四）一级缓存与二级缓存的理解以及用法]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/125235804</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/125235804</guid><author>fox_bert</author><pubDate>Sat, 11 Jun 2022 16:30:14 +0800</pubDate><description><![CDATA[先说缓存，合理使用缓存是优化中最常见的，将从数据库中查询出来的数据放入缓存中，下次使用时不必从数据库查询，而是直接从缓存中读取，避免频繁操作数据库，减轻数据库的压力，同时提高系统性能。一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象，在对象中有一个数据结构用于存储缓存数据。不同的sqlSession之间的缓存数据区域是互相不影响的。也就是他只能作用在同一个sqlSession中，不同的sqlSession中的缓存是互相不能读取的。一级缓存的工作原理：用户发起查询请求，]]></description><category></category></item><item><title><![CDATA[RabbitMQ（五）死信队列与延时队列]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/125224653</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/125224653</guid><author>fox_bert</author><pubDate>Sat, 11 Jun 2022 00:07:44 +0800</pubDate><description><![CDATA[DLX，全称为 Dead-Letter-Exchange，可以称为死信交换机，也有人称之为死信邮箱，当消息在一个正常队列中变成死信（dead message）之后，它能被重新发送到另一个交换机中，这个交换机就是DLX，绑定DLX的队列就称之为死信队列。消息变成死信，可能由于以下原因：DLX也是一个正常的交换机，和一般的交换机没有区别，它能在任何队列上被指定。实际上就是设置某一个队列的属性，当这个队列中存在死信时，rabbitMQ就会自动的将这个消息重新发布到设置的DLX上去，进而被路由到另一个队列，即死信队]]></description><category></category></item><item><title><![CDATA[Redis（七）主从复制原理浅析]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/105056645</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/105056645</guid><author>fox_bert</author><pubDate>Tue, 07 Jun 2022 11:41:11 +0800</pubDate><description><![CDATA[一、缓存穿透的概念

缓存穿透的情景：

每一次请求不同的值（符合有效的值规则），并且该值是数据库不可能存在的。那么就会出现不停的访问数据库，并返回空。这样就使 redis 无效化，便是缓存穿透。









二、布隆过滤器


布隆过滤器的本质：

位数组（二进制向量）
	一系列随机映射函数
布隆过滤器实现思想：

假设有一个 bit数组，里面存的只有0和1；0代表不存在，1...............]]></description><category></category></item><item><title><![CDATA[Nacos（二）服务注册与发现原理分析]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/125133148</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/125133148</guid><author>fox_bert</author><pubDate>Sun, 05 Jun 2022 16:16:11 +0800</pubDate><description><![CDATA[Nacos 另一个非常重要的特性就是服务注册与发现，说到服务的注册与发现相信大家应该都不陌生，在微服务盛行的今天，服务是非常重要的，而在 Nacos 中服务更被称为他的一等公民。Nacos 支持几乎所有主流类型的 “服务” 的发现、配置和管理。了解过 Dubbo 的同学，应该对 Dubbo 的架构非常熟悉，最经典的一张架构图如下所示：图中的6个步骤的含义解释如下：其中图中最上方的 Registry 就是注册中心，负责服务的注册与发现。Dubbo 有自己的 Registry 实现，而 Nacos 则是另一种 ]]></description><category></category></item><item><title><![CDATA[雪花算法（SnowFlake）]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/125132631</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/125132631</guid><author>fox_bert</author><pubDate>Sun, 05 Jun 2022 15:43:36 +0800</pubDate><description><![CDATA[现在的服务基本是分布式、微服务形式的，而且大数据量也导致分库分表的产生，对于水平分表就需要保证表中 id 的全局唯一性。对于 MySQL 而言，一个表中的主键 id 一般使用自增的方式，但是如果进行水平分表之后，多个表中会生成重复的 id 值。那么如何保证水平分表后的多张表中的 id 是全局唯一性的呢？如果还是借助数据库主键自增的形式，那么可以让不同表初始化一个不同的初始值，然后按指定的步长进行自增。例如有3张拆分表，初始主键值为1，2，3，自增步长为3。当然也有人使用 UUID 来作为主键，但是 UUID]]></description><category></category></item><item><title><![CDATA[Redis（八）哨兵模式原理浅析]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/125122326</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/125122326</guid><author>fox_bert</author><pubDate>Sat, 04 Jun 2022 18:07:23 +0800</pubDate><description><![CDATA[redis 哨兵模式浅析]]></description><category></category></item><item><title><![CDATA[分布式事务解决方案——Alibaba-seata]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/124630761</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/124630761</guid><author>fox_bert</author><pubDate>Sat, 14 May 2022 14:56:31 +0800</pubDate><description><![CDATA[一、seata介绍

官方文档：Seata 是什么

Seata 是一款开源的分布式事务解决方案，致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式，为用户打造一站式的分布式解决方案。


Seata术语

TC (Transaction Coordinator) - 事务协调者

维护全局和分支事务的状态，驱动全局事务提交或回滚。

负责通知命令的中间件Seata-Server



TM (Transaction Manage]]></description><category></category></item><item><title><![CDATA[Redis（六）单线程I/O多路复用模型浅析]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/124531809</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/124531809</guid><author>fox_bert</author><pubDate>Sun, 01 May 2022 20:30:54 +0800</pubDate><description><![CDATA[Redis 的 I/O 多路复用模型有效的解决单线程的服务端，使用不阻塞方式处理多个 client 端请求问题。在看 I/O 多路复用知识之前，我们先来看看 Redis 的客服端怎么跟客服端建立连接的、单线程 socket 服务端为什么会存在 I/O 阻塞。



一、Redis客户端连接

Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自 client 端的连接，当一个连接建立后，Redis 内部会进行以下一些操作：


	首先，客户端 socket 会被设置为非阻塞模]]></description><category></category></item><item><title><![CDATA[CentOS 7 安装MySQL 5.7]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/124485979</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/124485979</guid><author>fox_bert</author><pubDate>Sat, 30 Apr 2022 17:50:03 +0800</pubDate><description><![CDATA[一、下载

1、下载安装包





2、解压：使用 tar -zxvf 文件名进行解压。





3、移动路径、文件夹改名：将解压的文件夹移动到usr路径下自定义一个文件夹

移动路径：

使用命令 mv 当前文件名(或路径) 空格 移动到的目标路径/：（例如：mv anaconda-ks.cfg 1dir/）


mv /home/marvin/My_Software/Development/mysql-5.7.26-linux-glibc2.12-x86_64 /usr/my_develop_sof]]></description><category></category></item><item><title><![CDATA[Redis（五）缓存雪崩、缓存击穿、缓存穿透]]></title><link>https://blog.youkuaiyun.com/fox_bert/article/details/124365989</link><guid>https://blog.youkuaiyun.com/fox_bert/article/details/124365989</guid><author>fox_bert</author><pubDate>Sat, 23 Apr 2022 17:41:33 +0800</pubDate><description><![CDATA[一、缓存雪崩


通常我们为了保证缓存中的数据与数据库中的数据一致性，会给 Redis 里的数据设置过期时间，当缓存数据过期后，用户访问的数据如果不在缓存里，业务系统需要重新生成缓存，因此就会访问数据库，并将数据更新到 Redis 里，这样后续请求都可以直接命中缓存。



那么，当大量缓存数据在同一时间过期（失效）或者 Redis 故障宕机时，如果此时有大量的用户请求，都无法在 Redis 中处理，于是全部请求都直接访问数据库，从而导致数据库的压力骤增，严重的会造成数据库宕机，从而形成一系列连锁反应，造成]]></description><category></category></item></channel></rss>