<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[simple_start的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/simple_start</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; simple_start]]></copyright><item><title><![CDATA[Redis持久化 ROD快照和AOF的 简单自我记忆]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/119825225</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/119825225</guid><author>simple_start</author><pubDate>Fri, 20 Aug 2021 15:48:41 +0800</pubDate><description><![CDATA[RDB快照（snapshot）





AOF

你可以配置 Redis 多久才将数据 fsync 到磁盘一次。 有三个选项：


1 appendfsync always：每次有新命令追加到 AOF 文件时就执行一次 fsync ，非常慢，也非常安全。
2 appendfsync everysec：每秒 fsync 一次，足够快，并且在故障时只会丢失 1 秒钟的数据。
3 appendfsync no：从不 fsync ，将数据交给操作系统来处理。更快，也更不安全的选择。


AOF重写



R...]]></description><category></category></item><item><title><![CDATA[mysql 中 timestamp  长度的问题]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/108773296</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/108773296</guid><author>simple_start</author><pubDate>Thu, 24 Sep 2020 14:21:10 +0800</pubDate><description><![CDATA[时间戳。范围是'1970-01-01 00:00:01.000000'UTC到'2038-01-19 03:14:07.999999'UTC。 TIMESTAMP值存储为自纪元（'1970-01-01 00:00:00'UTC）以来的秒数。TIMESTAMP不能代表值'1970-01-01 00:00:00'，因为它等于从历元开始的0秒，而值0保留用于表示’ 00:00 -00-00 00:00:00’，即" 0 "时间戳值。

mysql 中 timestamp 设置时间不能超过 '1970-01-01.]]></description><category></category></item><item><title><![CDATA[JVM 虚拟机   执行 class 字节码七个阶段：加载、验证、准备、解析、初始化、使用、卸载。]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/108725647</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/108725647</guid><author>simple_start</author><pubDate>Tue, 22 Sep 2020 10:30:59 +0800</pubDate><description><![CDATA[一、加载



下面是对于加载过程最为官方的描述。


加载阶段是类加载过程的第一个阶段。在这个阶段，JVM 的主要目的是将字节码从各个位置（网络、磁盘等）转化为二进制字节流加载到内存中，接着会为这个类在 JVM 的方法区创建一个对应的 Class 对象，这个 Class 对象就是这个类各种数据的访问入口。


其实加载阶段用一句话来说就是：把代码数据加载到内存中。这个过程对于我们解答这道问题没有直接的关系，但这是类加载机制的一个过程，所以必须要提一下。

二、验证

当 JVM 加载完 Class 字节.]]></description><category></category></item><item><title><![CDATA[SpringBoot 使用Swagger-ui  get请求 date参数]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/108618791</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/108618791</guid><author>simple_start</author><pubDate>Wed, 16 Sep 2020 13:20:05 +0800</pubDate><description><![CDATA[@GetMapping("/select/date")
@ApiImplicitParams({
      @ApiImplicitParam(name = "startTime",value = "开始时间",dataType = "java.util.Date" ),
      @ApiImplicitParam(name = "endTime",value = "结束时间",dataType = "java.util.Date")
})
public void select(Date start.]]></description><category></category></item><item><title><![CDATA[Springboot  统一处理异常  自己实现]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/108121755</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/108121755</guid><author>simple_start</author><pubDate>Thu, 20 Aug 2020 15:24:13 +0800</pubDate><description><![CDATA[软件开发过程中，不可避免的是需要处理各种异常，如何优雅的抛出异常






自定义一个 异常基类继承运行时异常类 RuntimeException 让其他自定义异常继承





import lombok.Data;

/**
 *
 *  自定义一个   异常基类继承运行时异常类
 *  让其他自定义异常继承
 * @author not_simple
 * @version 1.0
 * @date 2020/8/17 20:50
 */
@Data
public class Ba...]]></description><category></category></item><item><title><![CDATA[Springboot 统一异常处理 Assert @ControllerAdvice]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/108104611</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/108104611</guid><author>simple_start</author><pubDate>Wed, 19 Aug 2020 18:10:00 +0800</pubDate><description><![CDATA[Springboot 统一异常处理 Assert @ControllerAdvice

软件开发过程中，不可避免的是需要处理各种异常，就我自己来说，至少有一半以上的时间都是在处理各种异常情况，所以代码中就会出现大量的try {...} catch {...} finally {...} 代码块，不仅有大量的冗余代码，而且还影响代码的可读性。比较下面两张图，看看您现在编写的代码属于哪一种风格？然后哪种编码风格您更喜欢？





丑陋的 try catch 代码块



优雅的Controller

上面的.]]></description><category></category></item><item><title><![CDATA[RabbitMQ  5种队列]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/106689784</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/106689784</guid><author>simple_start</author><pubDate>Thu, 11 Jun 2020 16:32:28 +0800</pubDate><description><![CDATA[RabbitMQ 5种队列









1.简单队列







生产者 - &gt; Queue -&gt; 消费者



2.Work模式









一个生产者、2个消费者。

一个消息只能被一个消费者获取。



轮询分发模式

1、消费者1和消费者2获取到的消息内容是不同的，同一个消息只能被一个消费者获取。
2、消费者1和消费者2获取到的消息的数量是相同的，一个是消费奇数号消息，一个是偶数。



公平分发 （能者多劳）



// 同一时刻服务器只...]]></description><category></category></item><item><title><![CDATA[java8 新特性 - Optional类]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/106588263</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/106588263</guid><author>simple_start</author><pubDate>Sat, 06 Jun 2020 16:38:00 +0800</pubDate><description><![CDATA[Optional类

  到目前为止，臭名昭著的空指针异常时导致java应用程序失败的最常见原因。以前，为了解决空指针异常，Google公司著名的Guava项目引入了Optional类，Guava通过使用检测空指针的方式来防止代码污染，他鼓励程序员写更干净的代码。收到Google Guava的启发，Optional类已经成为java 8 类库的一部分。



  Optional&lt;T&gt;类（java.util.Optional）是一个容器类，他可以保存类型T的值，代表这个值存在。或者...]]></description><category></category></item><item><title><![CDATA[java8 新特性 - Stream API]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/106403180</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/106403180</guid><author>simple_start</author><pubDate>Wed, 03 Jun 2020 17:53:26 +0800</pubDate><description><![CDATA[Stream API说明

  java8中有两大最为重要的改变。第一个是lambda表达式；另一个则是Stream API。

  Stream API（java.util.stream）把真正的函数式编程风格引入到java中。这是目前为止对java类库最好的补充，因为Steam API 可以极大的提供java程序员的生产力，让程序员写出更高效、干净、简介的代码

  Stream 是 java8中处理集合的关键抽象概念，它可以指定你希望对集合进行的操作，可以执行非常复杂的查找、过滤和映射数据...]]></description><category></category></item><item><title><![CDATA[java8 新特性 - 方法引用]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/106383134</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/106383134</guid><author>simple_start</author><pubDate>Wed, 27 May 2020 15:43:04 +0800</pubDate><description><![CDATA[方法引用

方法引用的使用


 1.使用情景:当要传递给Lambda体的操作，已经有实现的方法，可以使用方法引用
 2.方法引用，本质上就是lambda表达式，而Lambda表达式作为函数式接口的实例。所以方法引用，也是函数式接口的实例
 3.使用格式：类(或对象) :: 方法名
 4.具体分为如下的三种情况：
         情况1 对象::非静态方法
         情况2 类 :: 静态方法
 ...]]></description><category></category></item><item><title><![CDATA[java8 新特性 - 函数式接口]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/106382575</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/106382575</guid><author>simple_start</author><pubDate>Wed, 27 May 2020 15:27:05 +0800</pubDate><description><![CDATA[函数式接口

函数式接口(Functional Interface)就是一个有且仅有一个抽象方法，但是可以有多个非抽象方法的接口。

函数式接口可以被隐式转换为 lambda 表达式。

Lambda 表达式和方法引用（实际上也可认为是Lambda表达式）上。

@FunctionalInterface 注解作用检验是否是函数式接口



代码练习


package com.sgl.lambda;

/**
 * 自定义函数式接口
 *
 *@FunctionalInterface 注解作用检验是否是..]]></description><category></category></item><item><title><![CDATA[java8 新特性 - Lambda表达式]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/106239180</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/106239180</guid><author>simple_start</author><pubDate>Wed, 20 May 2020 17:50:44 +0800</pubDate><description><![CDATA[为什么使用Lambda表达式

   lambda是一个匿名函数，我们可以吧Lambda表达式理解为是一段可以传递的代码（将代码像数据一样进行传递）。使用它可以写出更加简洁、更加灵活的代码。作为一种更紧凑的代码风格，是java 的语言表达能力得到了提升。


package com.sgl.lambda;

import org.junit.Test;

import java.util.Comparator;
import java.util.function.Consumer;

/**
 * l...]]></description><category></category></item><item><title><![CDATA[java 动态代理   自我学习笔记]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/106145622</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/106145622</guid><author>simple_start</author><pubDate>Fri, 15 May 2020 17:01:02 +0800</pubDate><description><![CDATA[动态代理：当想要给实现了某个接口的类中的方法，加一些额外的处理。比如说加日志，加事务等。可以给这个类创建一个代理，故名思议就是创建一个新的类，这个类不仅包含原来类方法的功能，而且还在原来的基础上添加了额外处理的新类。这个代理类并不是定义好的，是动态生成的。具有解耦意义，灵活，扩展性强。

动态代理实现：首先必须定义一个接口，还要有一个InvocationHandler(将实现接口的类的对象传递给它)处理类。再有一个工具类Proxy(习惯性将其称为代理类，因为调用他的newInstance()可以产生代理对象]]></description><category></category></item><item><title><![CDATA[java 反射机制 自我学习笔记]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/105411688</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/105411688</guid><author>simple_start</author><pubDate>Thu, 09 Apr 2020 17:48:48 +0800</pubDate><description><![CDATA[本文章只是自我学习总结与整理

        https://www.bilibili.com/video/BV1Kb411W75N?p=636

目录

1 java反射机制概述

2 理解class类并获取class实例

3 类的加载与classLoader的理解

4 创建运行时类的对象

5 获取运行时类的完整结构

6 调用运行类的制定结构



1 java反射...]]></description><category></category></item><item><title><![CDATA[对java封装和java反射机制之间的关系的一些理解]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/105366490</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/105366490</guid><author>simple_start</author><pubDate>Tue, 07 Apr 2020 15:52:41 +0800</pubDate><description><![CDATA[java的封装，个人的简单理解就是将一个类的功能暴露给外部，但是将内部实现细节隐藏起来。换个说话就是类的外部只需要知道我给你提供了哪些功能即可，关于这些功能是是如何实现的你不需要知道，也不让你知道。这就相当于一款软件，用户只需要这款软件有些什么功能，如何使用即可，具体这些功能是如何实现的，用户不需要知道也无权知道。java的封装机制就有效的在代码的编码阶段防止外部类窥探功能接口的内部原理...]]></description><category></category></item><item><title><![CDATA[将jar包安装到本地Maven仓库]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/104696034</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/104696034</guid><author>simple_start</author><pubDate>Fri, 06 Mar 2020 14:57:37 +0800</pubDate><description><![CDATA[1、安装jar包到本地仓库



mvn install:install-file -Dfile=D:\temp\rc-gateway-api-client.jar 

-DgroupId=cn.conac.rc.api.client 

-DartifactId=rc-gateway-api-client 

-Dversion=1.0.0 -Dpackaging=jar



    ...]]></description><category></category></item><item><title><![CDATA[MySQL的四种事务隔离级别及分析]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/104673002</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/104673002</guid><author>simple_start</author><pubDate>Thu, 05 Mar 2020 13:24:01 +0800</pubDate><description><![CDATA[一、事务的基本要素（ACID）

　　1、原子性（Atomicity）：事务开始后所有操作，要么全部做完，要么全部不做，不可能停滞在中间环节。事务执行过程中出错，会回滚到事务开始前的状态，所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体，就像化学中学过的原子，是物质构成的基本单位。

　　2、一致性（Consistency）：事务开始前和结束后，数据库的完整性约束没有被破坏 。比如A...]]></description><category></category></item><item><title><![CDATA[com.alibaba.fastjson和net.sf.json用法区别]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/104653657</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/104653657</guid><author>simple_start</author><pubDate>Wed, 04 Mar 2020 14:50:47 +0800</pubDate><description><![CDATA[最后总结两者区别：

【1】json转换json对象

net.sf.json使用：JSONObject object = JSONObject.fromObject(body);

com.alibaba.fastjson： JSONObject object = JSONObject.parseObject(body);

【2】json对象转换成javabean对象

net.sf.json...]]></description><category></category></item><item><title><![CDATA[linux  redis安装以及RedisDesktopManager连接失败的情况]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/103993793</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/103993793</guid><author>simple_start</author><pubDate>Thu, 16 Jan 2020 13:32:51 +0800</pubDate><description><![CDATA[linux redis安装以及RedisDesktopManager连接失败的情况

 

linux 官网

    https://redis.io/download

安装

官网网页底部 偷懒了



* 

RedisDesktopManager连接失败的情况

  解决方法一



1 修改 配置文件redis.conf


bind 127.0.0.1...]]></description><category></category></item><item><title><![CDATA[linux  如何查看端口占用并关闭占用端口的进程]]></title><link>https://blog.youkuaiyun.com/simple_start/article/details/103993384</link><guid>https://blog.youkuaiyun.com/simple_start/article/details/103993384</guid><author>simple_start</author><pubDate>Wed, 15 Jan 2020 17:34:35 +0800</pubDate><description><![CDATA[linux 查看端口占用并如何关闭占用端口的进程



查看端口




netstat -tunlp








查看某端口


netstat -tunlp|grep 6379








杀死进程

 小心别 输入错了


kill -9 2970



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