<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Remember_Z的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Remember_Z</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Remember_Z]]></copyright><item><title><![CDATA[springboot中Instant时间传参及序列化]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/132118006</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/132118006</guid><author>Remember_Z</author><pubDate>Sat, 05 Aug 2023 12:26:47 +0800</pubDate><description><![CDATA[在部分场景中，后台的时间属性用的不是Date或Long，而是Instant，Java8引入的一个精度极高的时间类型，可以精确到纳秒，但实际使用的时候不需要这么高的精确度，通常到毫秒就可以了。而在前后端传参的时候需要对Instant类型进行序列化及反序列化等处理，默认情况下，ObjectMapper是不支持序列化Instant类型的，需要注册。在后台配置SpringBoot的时候，需要考虑两种情况，一种就是Instant作为。可以看到，结果是符合预期的，可以在毫秒时间戳和Instant之间相互转换。]]></description><category></category></item><item><title><![CDATA[centos 7-aarch64如何替换yum源_aarch64 yum源]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/131362153</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/131362153</guid><author>Remember_Z</author><pubDate>Sat, 24 Jun 2023 15:26:11 +0800</pubDate><description><![CDATA[版权归所有。]]></description><category></category></item><item><title><![CDATA[Spring Schedule如何动态添加修改定时任务]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/130430208</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/130430208</guid><author>Remember_Z</author><pubDate>Fri, 28 Apr 2023 16:58:04 +0800</pubDate><description><![CDATA[以cron表达式任务为例，在上面的基础上，如果有如下定时任务，在每天凌晨一点执行一次，但是后面发现时间不合适，需要修改触发时间为凌晨两点，按照现有的方式，通常只能修改代码重新部署了。日志如下，从日志中可以看到，上面的操作是成功的，而且也是非常方便的，可以很方便的动态添加定时任务，其余几个方法就不写出来了，感兴趣的可以自己试一下。当然，上面的例子中，因为都是在run方法内，所以没那么多讲究，一般在正式使用的时候，会在。通常情况下，我们使用的功能很简单，只需要在配置类上加一个。在上面的快速开始一节中，通过。]]></description><category></category></item><item><title><![CDATA[Jackson自定义序列化]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/127947500</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/127947500</guid><author>Remember_Z</author><pubDate>Sun, 20 Nov 2022 12:23:33 +0800</pubDate><description><![CDATA[Jackson自定义序列化]]></description><category></category></item><item><title><![CDATA[Jackson多态反序列化]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/127875824</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/127875824</guid><author>Remember_Z</author><pubDate>Tue, 15 Nov 2022 22:43:10 +0800</pubDate><description><![CDATA[多态序列化与反序列化，主要是借助于Jackson的与注解实现，下面将通过几个例子来简述其运用。首先，创建几个基本的实体类。这些类都比较简单，有共同的属性也有不同的属性，这里为了简单，共同属性就只有一个type。]]></description><category></category></item><item><title><![CDATA[WebSocket的使用]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/127873486</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/127873486</guid><author>Remember_Z</author><pubDate>Tue, 15 Nov 2022 20:43:06 +0800</pubDate><description><![CDATA[主流浏览器都支持websocket，可以新建个HTML文件，使用下述的JavaScript代码进行测试，也可以直接使用浏览器的控制台进行测试。1、新建Springboot项目，我这里使用的版本是2.5.7，添加websocket依赖。提供的客户端进行测试，相对来说，这种方式更加灵活一些，更便于扩展。WebSocket中Stomp的下次再写吧。3、服务端ServerEndpoint。（1）使用主流浏览器进行测试。3、测试方式与第一种一样。其他的可以不用配置，注解的Bean注册到。1、依赖与第一种一样。]]></description><category></category></item><item><title><![CDATA[MySQL5.7的JSON基本操作]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/125604662</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/125604662</guid><author>Remember_Z</author><pubDate>Mon, 04 Jul 2022 17:23:05 +0800</pubDate><description><![CDATA[MySQL5.7的JSON基本操作]]></description><category></category></item><item><title><![CDATA[springboot中LocalDate请求参数处理]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/125246224</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/125246224</guid><author>Remember_Z</author><pubDate>Sun, 12 Jun 2022 15:49:23 +0800</pubDate><description><![CDATA[版本说明：在项目中，有几个地方使用到了作为请求参数，有的是作为参数进行传递，也有的作为请求体中的一个属性进行传递，即下面两种情况

在后台接收参数的时候，需要分别对二者进行处理，否则无法正常接收到参数。添加如下的配置类即可，一般情况下，都是通过实现接口来处理跨域、静态资源映射或者添加拦截器等。而要处理LocalDate请求参数，最简单的做法就是添加类型转换器。
2、1、LocalDate作为请求体中的一个属性
一般情况下是不会有问题的，如果真的出现了如下的错误，那多半是手动修改了中的
实际上，项目中是有的，]]></description><category></category></item><item><title><![CDATA[常用的加密算法]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/125232881</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/125232881</guid><author>Remember_Z</author><pubDate>Sat, 11 Jun 2022 11:33:33 +0800</pubDate><description><![CDATA[加密算法我们整体可以分为：可逆加密和不可逆加密，可逆加密又可以分为：对称加密和非对称加密。]]></description><category></category></item><item><title><![CDATA[HDFS之SecondaryNameNode]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/124874297</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/124874297</guid><author>Remember_Z</author><pubDate>Thu, 19 May 2022 23:34:36 +0800</pubDate><description><![CDATA[1、回顾HDFS架构体系
之前有简单提及过，HDFS的架构中，除了NameNode和DataNode外，还有个SecondaryNameNode也扮演着重要的角色。再来简单回顾下HDFS的架构体系
（1）Client

文件切分，文件上传 HDFS 的时候，Client 将文件切分成 一个一个的Block，然后进行存储
与 NameNode 交互，获取文件的位置信息
与 DataNode 交互，读取或者写入数据
Client 提供一些命令来管理 HDFS，比如启动或者关闭HDFS
Client 可以通过一些]]></description><category></category></item><item><title><![CDATA[浅析RestTemplate的Jackson消息转换器]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/124684071</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/124684071</guid><author>Remember_Z</author><pubDate>Tue, 10 May 2022 11:17:11 +0800</pubDate><description><![CDATA[一、前因后果
之前有写过一个关于上游接口不按规范导致的 Jackson 序列化问题（见https://blog.youkuaiyun.com/Remember_Z/article/details/119737998 或 https://www.yangguirong.com/archives/ji-yi-ci-fan-xu-lie-hua-yi-chang），大概就是接口文档中标明了某个字段是数组格式，但是当数组中只有一个对象时，这个属性会直接以对象的形式的返回，如下两种返回形式
// 当数组长度大于1时，返回值与文档]]></description><category></category></item><item><title><![CDATA[HDFS 的Shell命令]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/124650855</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/124650855</guid><author>Remember_Z</author><pubDate>Sun, 08 May 2022 17:05:21 +0800</pubDate><description><![CDATA[hadoop fs 等同于 hdfs dfs

1、列出所有受支持的命令

hadoop fs

[root@hadoop-node1 hadoop-3.3.2]# hadoop fs
Usage: hadoop fs [generic options]
        [-appendToFile &lt;localsrc&gt; ... &lt;dst&gt;]
        [-cat [-ignoreCrc] &lt;src&gt; ...]
        [-checksum [-v] &l.]]></description><category></category></item><item><title><![CDATA[HDFS概述]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/124649986</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/124649986</guid><author>Remember_Z</author><pubDate>Sun, 08 May 2022 16:25:38 +0800</pubDate><description><![CDATA[HDFS（Hadoop Distributed File System），Hadoop分布式文件系统。适用于一次写入，多次读取的场景。
1、优缺点
（1）优点

高容错性：通过增加副本的形式来提高容错性。在一个节点上，副本最多只有一个，某节点挂了之后，若可用节点依旧大于等于副本数量，则会自动增加一个副本到其他节点。
适合处理大数据

数据规模：能够处理数据规模达到GB、TB、甚至PB级别的数据；
文件规模：能够处理百万规模以上的文件数量，数量相当之大。



（2）缺点

不适合低延时数据访问，比如毫秒级的]]></description><category></category></item><item><title><![CDATA[快速搭建一个hadoop集群]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/124647281</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/124647281</guid><author>Remember_Z</author><pubDate>Sun, 08 May 2022 14:01:36 +0800</pubDate><description><![CDATA[快速搭建一个hadoop集群一、准备虚拟机二、配置ssh免密登录三、编写文件同步脚本四、安装jdk和hadoop五、hadoop集群配置六、启动集群
快速搭建一个hadoop集群

本文不讲原理，只记录一下快速搭建hadoop集群的过程。参考：https://www.bilibili.com/video/BV1Qp4y1n7EN
系统：CentOS7.7
hadoop版本：3.3.2
jdk版本：1.8.0_321

一、准备虚拟机
1、安装三台虚拟机，安装过程可参考 超详细的CentOS7.4下载与图文安]]></description><category></category></item><item><title><![CDATA[maven打包时跳过测试，并打包源码和文档]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/124634826</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/124634826</guid><author>Remember_Z</author><pubDate>Sat, 07 May 2022 17:11:52 +0800</pubDate><description><![CDATA[springboot项目，打包时跳过测试，并打包源码和文档的maven插件配置，仅此记录备忘。]]></description><category></category></item><item><title><![CDATA[浅析spring中的多数据源解决方案AbstractRoutingDataSource的使用]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/124432280</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/124432280</guid><author>Remember_Z</author><pubDate>Tue, 26 Apr 2022 21:15:00 +0800</pubDate><description><![CDATA[浅析spring中的多数据源解决方案AbstractRoutingDataSource的使用
AbstractRoutingDataSource是spring提供的一种多数据源解决方案，其继承关系如下图所示。

上图中没有将一些属性展示出来，这里挑几个重点的属性简单分析一下。
private Map&lt;Object, Object&gt; targetDataSources;
private Object defaultTargetDataSource;
private boolean lenientF]]></description><category></category></item><item><title><![CDATA[浅析可重入锁的加锁释放锁过程]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/124364307</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/124364307</guid><author>Remember_Z</author><pubDate>Sat, 23 Apr 2022 15:16:19 +0800</pubDate><description><![CDATA[一、AQS
AQS：AbstractQueuedSynchronizer，抽象队列同步器，是juc的基础，如常用的ReentrantLock、Semaphore、CountDownLatch、ReentrantReadWriteLock等都是基于AQS来进行设计的。
AQS通过维护一个同步状态state和一个双向队列CLH来实现加锁释放锁。
CLH队列中存放的Node结点主要关注如下几个属性：

waitStatus：等待状态，取值分别为CANCELLED = 1，SIGNAL = -1，CONDITION]]></description><category></category></item><item><title><![CDATA[springboot+redis主从复制、哨兵、读写分离]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/123242857</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/123242857</guid><author>Remember_Z</author><pubDate>Wed, 02 Mar 2022 23:10:57 +0800</pubDate><description><![CDATA[redis安装、主从配置、哨兵配置、以及在springboot中的集成、读写分离等。]]></description><category></category></item><item><title><![CDATA[失败重试方案spring-retry]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/122959609</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/122959609</guid><author>Remember_Z</author><pubDate>Wed, 16 Feb 2022 11:24:57 +0800</pubDate><description><![CDATA[在后台对接第三方接口时，由于网络波动等原因，经常会出现请求超时的情况，但是有些接口不能因为一次超时就判定为失败，通常都会有重试，比如连续请求三次都失败，才认为请求失败。
方案一：在代码中进行逻辑判断
以前在处理这类问题的时候，我们大多采用的是这种方案。即设置一个重试次数，然后每次调用后判断是否调用成功，如果调用失败且没有超过重试次数，则重试调用。如下
@Test
void invoke() {
    int failCount = 0;
    while (failCount &lt; 3) {
   ]]></description><category></category></item><item><title><![CDATA[AOP+注解+SpringEL表达式记录操作日志]]></title><link>https://blog.youkuaiyun.com/Remember_Z/article/details/122552962</link><guid>https://blog.youkuaiyun.com/Remember_Z/article/details/122552962</guid><author>Remember_Z</author><pubDate>Tue, 18 Jan 2022 09:22:06 +0800</pubDate><description><![CDATA[在后台管理系统中，日志是不可或缺的，通常，在开发的时候我们会设置日志级别为debug或info，上线后再设置为error，这些系统日志在帮助我们排查系统问题时作用非常大。但还有一类日志也是非常重要的，那就是操作日志，也就是记录用户在某个时间点干了什么事的日志。这篇文章就简单聊聊如何更好的记录操作日志。
在参与过不少项目的开发后，大概总结出了下面这么几种记录日志的方式。
第一种就是直接调用日志方法，类似下面这种，这类代码在以前的老系统中非常常见，好处是代码清晰，但太冗余了，总不可能每次要记录日志都复制一遍，如]]></description><category></category></item></channel></rss>