<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[小小的博客]]></title><description><![CDATA[专注技术、重视前沿]]></description><link>https://blog.youkuaiyun.com/sinat_30160727</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sinat_30160727]]></copyright><item><title><![CDATA[kafka关于ERROR Uncaught exception in scheduled task ‘kafka-log-retention‘问题解决]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/120159193</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/120159193</guid><author>sinat_30160727</author><pubDate>Tue, 07 Sep 2021 15:30:33 +0800</pubDate><description><![CDATA[[2021-09-07 10:27:07,763] WARN [ReplicaManager broker=0] Stopping serving replicas in dir /tmp/kafka-logs (kafka.server.ReplicaManager)
[2021-09-07 10:27:07,764] ERROR Uncaught exception in scheduled task ‘kafka-log-retention’ (kafka.utils.KafkaScheduler)
]]></description><category></category></item><item><title><![CDATA[用js写谷歌浏览器插件]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/116235329</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/116235329</guid><author>sinat_30160727</author><pubDate>Wed, 28 Apr 2021 16:34:23 +0800</pubDate><description><![CDATA[需求
在工作中，如果我们需要修改别人网页的内容，因为我们没有别人的代码，所以我们不能靠修改源代码的方式解决。但是谷歌浏览器提供了插件功能，我们可以自己编写插件实现浏览指定网页，修改网页的内容。
步骤

在桌面创建一个文件夹，命名demo
在demo文件夹下创建一个文件夹，命名content
然后再content文件夹下创建一个js文件夹和一个manifest.json文件。
最后在js文件夹下创建一个index.js文件，最终目录格式如下


示例
举例修改百度首页中，“百度热榜”四个字的颜色，如下


m]]></description><category></category></item><item><title><![CDATA[（二）activiti之IDEA安装bpmn插件actiBPM]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/115054573</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/115054573</guid><author>sinat_30160727</author><pubDate>Sun, 21 Mar 2021 19:58:33 +0800</pubDate><description><![CDATA[activiti学习笔记：
activiti快速入门生成25张表
如果我们需要学习activiti流程，那么我们需要先设计bpmn流程文件。后面通过activiti接口加载bpmn文件，就可以创建流程了。设计bpmn文件的软件有很多，包括eclipse和IDEA都有对应的插件。因为我用的是IDEA开发编辑器，所以这里介绍下IDEA如果安装bpmn插件actiBPM。
1、打开IDEA

2、找到file-&gt;settings

3、找到settings-&gt;plugins

4、找到右边最下方的br]]></description><category></category></item><item><title><![CDATA[activiti快速入门生成25张表]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/115031116</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/115031116</guid><author>sinat_30160727</author><pubDate>Sat, 20 Mar 2021 17:16:34 +0800</pubDate><description><![CDATA[1、引入maven依赖
&lt;dependencies&gt;

&lt;!-- 日志依赖--&gt;

&lt;!-- 日志接口api--&gt;
  &lt;dependency&gt;
    &lt;groupId&gt;org.slf4j&lt;/groupId&gt;
    &lt;artifactId&gt;slf4j-api&lt;/artifactId&gt;
    &lt;version&gt;1.8.0-beta0&lt;/version&gt;
  &lt;/dependenc]]></description><category></category></item><item><title><![CDATA[Java基础篇之可能会忽略的整型变量细节知识]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/108290058</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/108290058</guid><author>sinat_30160727</author><pubDate>Sat, 29 Aug 2020 08:32:49 +0800</pubDate><description><![CDATA[在整型变量的字面量赋值中，有一些细节在此记录下。
1、byte
        byte b1 = 2;
        byte b2 = 128;
        byte b3 = (2147483648);

上面三个赋值语句，第一个不会有编译错误，第二个赋值128已经超过了byte的最大值，所以需要强制类型转换，第三种赋值超过了int的最大值，强制转换也会编译错误。
2、short
        short s1 = 2;
        short s2 = 32768;
        sh]]></description><category></category></item><item><title><![CDATA[java基础篇之synchronized锁状态变化过程]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/108289995</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/108289995</guid><author>sinat_30160727</author><pubDate>Sat, 29 Aug 2020 08:05:40 +0800</pubDate><description><![CDATA[在多线程环境下，synchronized是经常用到的加锁方式，锁的状态有无锁、偏向锁、轻量级锁和重量级锁。下面就阐述下，这些状态是如何变化的。
一、升级
1、无锁状态
在锁对象刚刚new出来的时候，是无锁状态，比如
Object o = new Object();

2、偏向锁
在锁对象o被使用后，即synchronized(o)，状态会变成偏向锁，对象o的对象头中记录了线程的ID。如下图所示，锁o上标记了线程A才会执行代码块。

3、轻量级锁状态
当在偏向锁时，另外一个线程也来竞争的时候，就会升级为轻量级]]></description><category></category></item><item><title><![CDATA[数据结构排序算法的java实现]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/90400768</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/90400768</guid><author>sinat_30160727</author><pubDate>Tue, 21 May 2019 09:46:32 +0800</pubDate><description><![CDATA[一、冒泡排序
public static void bubbleSort(int[] datas) {

        int length = datas.length;
        boolean sortFlag = true;
        for (int index = 0; index &lt; length &amp;&amp; sortFlag; index++) {
 ...]]></description><category></category></item><item><title><![CDATA[The bean 'redisTemplate' could not be injected as a 'org.springframework.data.redis.core.RedisTempla]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/88365085</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/88365085</guid><author>sinat_30160727</author><pubDate>Sat, 09 Mar 2019 13:37:23 +0800</pubDate><description><![CDATA[使用springboot集成redis的时候，启动项目报错：
The bean 'redisTemplate' could not be injected as a 'org.springframework.data.redis.core.RedisTemplate' because it is a JDK dynamic proxy that implements:
	org.springfra...]]></description><category></category></item><item><title><![CDATA[SpringBoot之@ComponentScan和@SpringBootApplication扫描覆盖问题]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/87935912</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/87935912</guid><author>sinat_30160727</author><pubDate>Tue, 26 Feb 2019 15:27:50 +0800</pubDate><description><![CDATA[@SpringBootApplication=@Configuration+@EnableAutoConfiguration+@ComponentScan，其中扫描包的范围为启动类所在包和子包，不包括第三方的jar包。如果我们需要扫描通过maven依赖添加的jar，我们就要单独使用@ComponentScan注解扫描第三方包。
但是，如果@SpringBootApplication和@Compon...]]></description><category></category></item><item><title><![CDATA[记mybatis查询null字段导致的NPE]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/86703927</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/86703927</guid><author>sinat_30160727</author><pubDate>Wed, 30 Jan 2019 15:30:36 +0800</pubDate><description><![CDATA[背景：
我们在写sql语句时，不推荐使用select *的，所以我们只需要查询出我们需要的字段值就可以了。但是，如果查询的某几个字段值都是null，我们使用list接收的话，那么list中的对象就是null，引起NPE问题。
分析：
查看mybatis处理查询结果的源码，主要是将结果封装成对象

getRowValue就是把每行的结果封装成对象返回。
其中有一个方法是applyAutomaticM...]]></description><category></category></item><item><title><![CDATA[Nginx负载均衡]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/85344133</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/85344133</guid><author>sinat_30160727</author><pubDate>Sat, 29 Dec 2018 19:16:25 +0800</pubDate><description><![CDATA[上一篇我们介绍了nginx的反向代理，本文主要介绍在反向代理基础上的负载均衡。
背景：
随着服务器访问量的不断增大，导致单台机器服务延时不断增大，对服务器的压力也越来越大，为了解决这一问题，我们可以部署多个服务节点，然后使用某种算法是的访问分散到各个节点，大大降低的服务器的压力。
实践：
本文主要介绍nginx的负载均衡及各种算法，不会对代理配置有过多的讲解，不熟悉的可以阅读上一篇文章Nginx反...]]></description><category></category></item><item><title><![CDATA[Nginx反向代理配置解释]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/85332068</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/85332068</guid><author>sinat_30160727</author><pubDate>Fri, 28 Dec 2018 22:04:36 +0800</pubDate><description><![CDATA[背景：
如果没有代理服务器，客户端请求直接发送到后台服务器，直接就暴露了真实服务器的信息，不够安全。加上代理服务器后，客户端发请求首先到代理服务器，然后由代理服务器将请求发送到真实服务器。代理服务器也会将响应缓存到硬盘中，返回到客户端。
加上代理服务器后，系统图如下：

实践：
本文nginx部署在192.168.121.140服务器上，监听端口8088。springboot项目部署在192.16...]]></description><category></category></item><item><title><![CDATA[Nginx搭建静态资源服务配置详解]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/85328704</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/85328704</guid><author>sinat_30160727</author><pubDate>Fri, 28 Dec 2018 17:16:35 +0800</pubDate><description><![CDATA[第一种：单个server，root配置根目录
nginx配置文件中，server模块默认配置了location，如下：
server {
        listen       8088;//server的监听端口
        server_name  localhost,192.168.121.140;//server的ip地址
        
        location / {
...]]></description><category></category></item><item><title><![CDATA[Zookeeper的Leader选举机制]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/85248083</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/85248083</guid><author>sinat_30160727</author><pubDate>Tue, 25 Dec 2018 15:00:06 +0800</pubDate><description><![CDATA[一、前言
前面学习了Zookeeper服务端的相关细节，其中对于集群启动而言，很重要的一部分就是Leader选举，接着就开始深入学习Leader选举。
二、Leader选举
2.1 Leader选举概述
Leader选举是保证分布式数据一致性的关键所在。当Zookeeper集群中的一台服务器出现以下两种情况之一时，需要进入Leader选举。
(1) 服务器初始化启动。
(2) 服务器运行期间无法和...]]></description><category></category></item><item><title><![CDATA[redis之集群模式]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/84920627</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/84920627</guid><author>sinat_30160727</author><pubDate>Sun, 09 Dec 2018 10:50:53 +0800</pubDate><description><![CDATA[本文主要介绍搭建redis的集群架构，其中会记录搭建遇到的坑。在之前的哨兵模式下，我们做到了高可用阶段，哨兵模式同样也存在一些不足之处，比如写数据在固定的master节点，就算有多个master节点，master之间也要有通信来同步数据，这些都给master增加一定的压力。
redis的集群模式思想之给每个master节点分配一定数量的slot（共16384个），set数据的时候，根据CRC16（...]]></description><category></category></item><item><title><![CDATA[redis之哨兵模式]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/84889751</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/84889751</guid><author>sinat_30160727</author><pubDate>Sat, 08 Dec 2018 09:46:51 +0800</pubDate><description><![CDATA[一、为什么有哨兵模式？
在前面的主从模式下，当master节点挂了之后，slave节点的role还是slave，这就导致不能够写数据，系统不能用了。为了提高可用性，当master节点挂了之后，我们可以手动在任意slave节点执行下面命令使其成为master
slaveof no one

使得slave不再是slave节点，变成master节点。然后我们在其他slave节点执行slaveof 新m...]]></description><category></category></item><item><title><![CDATA[redis之去中心化主从复制模式]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/84885990</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/84885990</guid><author>sinat_30160727</author><pubDate>Fri, 07 Dec 2018 19:22:00 +0800</pubDate><description><![CDATA[在上一篇redis简单搭建主从复制中，我们介绍了如何搭建redis的一主二从复制模式，基本结构图如

上图中的slave节点可以有很多个，这样就会一个master挂了很多slave，导致master的压力很大。为了解决这个问题，我们以缓解master的压力为目的，使用去中心化（不是所有slave都和master有直接关系）主从复制模式，基本结构图如下：

上图中，将原本一个master的3个sla...]]></description><category></category></item><item><title><![CDATA[redis简单搭建主从复制]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/84799012</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/84799012</guid><author>sinat_30160727</author><pubDate>Tue, 04 Dec 2018 21:19:30 +0800</pubDate><description><![CDATA[本次主要搭建redis复制模式，这里共两台虚拟机，搭建一主二从复制模式。上一篇已经介绍过redis如何安装的，这里不再赘述。注意：本文并没有加入哨兵
节点安排：
（1）master1：192.168.121.140:6381
（2）master2：192.168.121.140:6382（备用）
（2）slave1：192.168.121.139:6379
（3）slave2：192.168.12...]]></description><category></category></item><item><title><![CDATA[redis在CentOS安装]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/84671425</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/84671425</guid><author>sinat_30160727</author><pubDate>Sat, 01 Dec 2018 10:37:30 +0800</pubDate><description><![CDATA[1.通过命令wget下载redis4.0.11版本
  wget http://download.redis.io/releases/redis-4.0.11.tar.gz
    tar xzf redis-4.0.11.tar.gz
    cd redis-4.0.11
    make

下载结束后，解压，进入解压后的文件夹，执行make编译。
上述步骤可能遇到的问题：
（1）提示wget...]]></description><category></category></item><item><title><![CDATA[springboot之前后端传参类型比较]]></title><link>https://blog.youkuaiyun.com/sinat_30160727/article/details/84658556</link><guid>https://blog.youkuaiyun.com/sinat_30160727/article/details/84658556</guid><author>sinat_30160727</author><pubDate>Fri, 30 Nov 2018 16:25:04 +0800</pubDate><description><![CDATA[在实际的项目开发中，后台controller方法可能有各种数据类型的参数接收前端传递的值，比如8种基本数据类型、对象、集合等。有的时候，前端不知道使用什么形式的传参，比如key-value或raw（json或数组）。为了系统的学习和运用，本文对各种类型的情况作了实验，记录各种结果。本文并不会介绍原理，只为记录实验结果。


...]]></description><category></category></item></channel></rss>