<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Adonis_D_Gogh的博 客]]></title><description><![CDATA[No lines changed: content is already properly formatted]]></description><link>https://blog.youkuaiyun.com/Adonis_D_Gogh</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Adonis_D_Gogh]]></copyright><item><title><![CDATA[如何算得海明校验码]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/114585428</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/114585428</guid><author>Adonis_D_Gogh</author><pubDate>Tue, 09 Mar 2021 15:47:26 +0800</pubDate><description><![CDATA[例子：8位数0110 1001如何算得海明校验码
1、先按公式(2^k)-1&gt;=m+k,m是原数据的位数，k是校验码位数；
2、校验码只存在于1、2、4、8……等2的指数倍位，这是已知常识；
3、得到校验码k=8；
4、m+k=12，从右到左一次编号1-12个格子，将1 2 4 8留给检验码，此处用k代替空格
5、将原数据高位在左低位在右顺序放入，结果如：0110k100k1kk
6、原数据的每一位所在格，都由检验码的数所在格相加而成，这样的思路得到：第12格为8+4
7、由上一步可得到，各个校验码格]]></description><category></category></item><item><title><![CDATA[SonarQube使用笔记]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/106840794</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/106840794</guid><author>Adonis_D_Gogh</author><pubDate>Thu, 18 Jun 2020 18:34:11 +0800</pubDate><description><![CDATA[SonarQube使用笔记
简介
SonarQube是一个用于管理代码质量的开放平台，可以快速的定位代码中潜在的或者明显的错误。目前支持java,C#,C/C++,Python,PL/SQL,Cobol,JavaScrip,Groovy等二十几种编程语言的代码质量管理与检测。
环境&amp;版本


Centos6.10
jdk8
mysql5.7
sonarqube-7.7
sonar-scanner-2.8
特别注意：sonarqube 能支持jdk8和mysql的最高版本是sonarqube-7.7
]]></description><category></category></item><item><title><![CDATA[Java8 Stream reduce操作]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/106825481</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/106825481</guid><author>Adonis_D_Gogh</author><pubDate>Thu, 18 Jun 2020 10:51:22 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/u011213044/article/details/103997757

Reduce，顾名思义为减少的意思，就是根据指定的计算模型将Stream中的值计算得到一个最终结果。在之前的一篇文章Java8函数式编程中简单介绍，Stream的count、min 和max方法底层都是依赖reduce实现的，本篇文章将简单介绍一下Java8 Stream reduce的几种基本用法。


首先来看一下Reduce三种形式：
S.N.  方法说明
1 Opti...]]></description><category></category></item><item><title><![CDATA[springboot自动装配原理学习笔记]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/106430620</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/106430620</guid><author>Adonis_D_Gogh</author><pubDate>Fri, 29 May 2020 18:22:07 +0800</pubDate><description><![CDATA[springboot自动装配原理学习笔记

IoC控制反转

实际上就是把对象的生命周期托管到Spring容器中，反转指对象的获取方式反转了。

使用Spring IoC容器之后，客户端类不需要再通过new创建对象，直接从容器中获取。



IoC容器中的对象构建

IoC容器中的对象在早期的spring中，是通过xml配置bean，spring解析xml来装载到容器；

Springboot则是通过自动装配来实现（后文会讲）。



DI依赖注入

IoC容器在运行期间，动态的把某种依赖关系注入到组件..]]></description><category></category></item><item><title><![CDATA[Redis的两种持久化RDB和AOF]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/105689389</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/105689389</guid><author>Adonis_D_Gogh</author><pubDate>Wed, 22 Apr 2020 18:18:44 +0800</pubDate><description><![CDATA[原文链接：https://blog.youkuaiyun.com/qq_36795474/article/details/82938721


Redis持久化备份数据的方式有两种：RDB(Redis DataBase) 、 AOF(Append OnlyFile).


RDB

什么是RDB


在指定时间间隔内，将内存中的数据集快照写入磁盘，也就是Snapshot快照，它恢复时是将快照文件直接读到内...]]></description><category></category></item><item><title><![CDATA[JAVA8十大新特性详解]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/105658590</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/105658590</guid><author>Adonis_D_Gogh</author><pubDate>Tue, 21 Apr 2020 15:14:04 +0800</pubDate><description><![CDATA[原文：https://www.jianshu.com/p/0bf8fe0f153b

一、接口的默认方法

Java 8允许我们给接口添加一个非抽象的方法实现，只需要使用 default关键字即可，这个特征又叫做扩展方法，示例如下：


interface Formula {
    double calculate(int a);

    default double sqrt(int a) ...]]></description><category></category></item><item><title><![CDATA[Java8 Optional使用总结]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/105297027</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/105297027</guid><author>Adonis_D_Gogh</author><pubDate>Fri, 03 Apr 2020 17:09:09 +0800</pubDate><description><![CDATA[java8 推出的Optional的目的就是为了杜绝空指针异常，帮助开发者开发出更优雅的代码，使用Optional不正确时，将会违背设计者的初衷。

一、Optional的构造方式：

1、Optional.of(T)

该方式的入参不能为null，否则会有NPE，在确定入参不为空时使用该方式。

2、Optional.ofNullable(T)

该方式的入参可以为null，当入参不确定为非...]]></description><category></category></item><item><title><![CDATA[观察者模式以及tomcat实现的观察者模式]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/105138320</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/105138320</guid><author>Adonis_D_Gogh</author><pubDate>Fri, 27 Mar 2020 12:06:47 +0800</pubDate><description><![CDATA[原文：https://my.oschina.net/u/2457218/blog/1536680

观察者设计模式

观察者模式也称作发布订阅模式，监听器模式，被观察管理各个观察者，当被观察者的状态有变更的时候，会主动通知观察者。

 通常的情况下，我们会怎么实现如果一个对象的状态变更，通知到对相应状态感兴趣的类呢，这个可以分为主动通知和被动通知。

 主动通知：...]]></description><category></category></item><item><title><![CDATA[java的io库用到的装饰模式是如何体现的?]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/105091755</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/105091755</guid><author>Adonis_D_Gogh</author><pubDate>Wed, 25 Mar 2020 11:56:36 +0800</pubDate><description><![CDATA[概论
java的io包下大概有85个类,真复杂。其实不然这些类又可以分为以下四个部分。

输入流输出流
字节流InputStreamOutputStream
字符流 ReaderWriter 
简单来说,这四部分的对应都是很整齐的,有Fil...]]></description><category></category></item><item><title><![CDATA[spring boot 2.0+thymeleaf idea调试时正常,打jar包运行报错. 找不到模板文件]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/104836822</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/104836822</guid><author>Adonis_D_Gogh</author><pubDate>Fri, 13 Mar 2020 11:21:39 +0800</pubDate><description><![CDATA[thymeleaf + springboot 使用时，idea跑起来能正常访问；

打成jar包就会找不到页面；

我在网上搜了两天，基本都是


配置文件和去掉路径前面的"/"


偶尔看到因为大小写原因导致，

当我最后盯着idea上的application.properties发懵的时候，

突然发现


spring.thymeleaf.suffix=.html

这一行配置后面竟然有个...]]></description><category></category></item><item><title><![CDATA[nginx部署在云服务器，监听80端口404]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/104814825</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/104814825</guid><author>Adonis_D_Gogh</author><pubDate>Thu, 12 Mar 2020 11:28:10 +0800</pubDate><description><![CDATA[ubuntu18.04的系统，安装好nginx，并在/etc/nginx/conf.d/nginx.conf 对虚拟主机进行配置

问题描述：

nginx部署在云服务器，监听80端口报错404；

nginx安装配置好之后，发现监听非80端口，都能够正常访问，此时配置如下：


upstream adg.com {
        server 127.0.0.1:8080;
}
server ...]]></description><category></category></item><item><title><![CDATA[@Scheduled执行阻塞问题]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/103857657</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/103857657</guid><author>Adonis_D_Gogh</author><pubDate>Mon, 06 Jan 2020 14:58:15 +0800</pubDate><description><![CDATA[原文：https://blog.youkuaiyun.com/lym0721/article/details/89499588

一. 问题描述

  最近项目中发现一个问题，计划每日凌晨4:40执行一个定时任务，使用注解方式： @Scheduled(cron = “0 40 4 * * ?”)，cron表达式明显没有问题，但是这个定时任务总是不按时执行，有时候得等到8点多，有时候9点多才执行。后来查了下，原...]]></description><category></category></item><item><title><![CDATA[Java日志框架SLF4J和log4j以及logback的联系和区别]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/103857518</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/103857518</guid><author>Adonis_D_Gogh</author><pubDate>Mon, 06 Jan 2020 14:52:22 +0800</pubDate><description><![CDATA[1.SLF4J(Simple logging Facade for Java)

意思为简单日志门面，它是把不同的日志系统的实现进行了具体的抽象化，只提供了统一的日志使用接口，使用时只需要按照其提供的接口方法进行调用即可，由于它只是一个接口，并不是一个具体的可以直接单独使用的日志框架，所以最终日志的格式、记录级别、输出方式等都要通过接口绑定的具体的日志系统来实现，这些具体的日志系统就有log...]]></description><category></category></item><item><title><![CDATA[Found multiple occurrences of org.json.JSONObject on the class path]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/103514857</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/103514857</guid><author>Adonis_D_Gogh</author><pubDate>Thu, 12 Dec 2019 19:24:20 +0800</pubDate><description><![CDATA[今天在测试代码的时候报了以下错误，特此记录：


Found multiple occurrences of org.json.JSONObject on the class path:

 jar:file:/D:/OpenSources/MyRepository/org/json/json/20170516/json-20170516.jar!/org/json/JSONObject.c...]]></description><category></category></item><item><title><![CDATA[MySQL联合索引的命中规则]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/103183110</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/103183110</guid><author>Adonis_D_Gogh</author><pubDate>Thu, 21 Nov 2019 15:19:25 +0800</pubDate><description><![CDATA[一.建表

创建测试表foo，创建联合索引，顺序abc


CREATE TABLE foo (
a VARCHAR ( 20 ) DEFAULT '' NULL,
b VARCHAR ( 20 ) DEFAULT '' NULL,
c VARCHAR ( 20 ) DEFAULT '' NULL,
d VARCHAR ( 20 ) DEFAULT '' NULL 
);
CREATE INDEX...]]></description><category></category></item><item><title><![CDATA[查看Docker容器的信息]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/103066348</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/103066348</guid><author>Adonis_D_Gogh</author><pubDate>Thu, 14 Nov 2019 14:09:13 +0800</pubDate><description><![CDATA[对于运行在Docker环境的容器，有时我们想查询它们的一些基本信息，例如环境变量、hostname、ip地址等，接下来我们以一个tomcat容器为例，看看有哪些方式来取得这些信息；

原文地址：https://blog.youkuaiyun.com/boling_cavalry/article/details/80215214

创建tomcat容器
在docker环境下执行如下命令，即可创建一个名为tomc...]]></description><category></category></item><item><title><![CDATA[Java线程的6种状态及切换(透彻讲解)]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/103013185</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/103013185</guid><author>Adonis_D_Gogh</author><pubDate>Mon, 11 Nov 2019 17:18:44 +0800</pubDate><description><![CDATA[Java中线程的状态分为6种。

1.初始(NEW)：新创建了一个线程对象，但还没有调用start()方法。
2.运行(RUNNABLE)：Java线程中将就绪（ready）和运行中（running）两种状态笼统的称为“运行”。
线程对象创建后，其他线程(比如main线程）调用了该对象的start()方法。该状态的线程位于可运行线程池中，等待被线程调度选中，获取CPU的使用权，此时处于就绪状态...]]></description><category></category></item><item><title><![CDATA[Ubuntu修改系统默认编码]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/102857724</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/102857724</guid><author>Adonis_D_Gogh</author><pubDate>Fri, 01 Nov 2019 15:02:07 +0800</pubDate><description><![CDATA[使用 locale 命令查看系统当前编码


经过网上查资料，修改 /etc/default/locales 文件


myubuntu@ubuntu:~$ sudo vi /etc/default/locale 
  LANG="zh_CN.UTF-8"
  LANGUAGE="zh_CN:zh"
  LC_ALL="zh_CN.UTF-8"

现在继续查看系统编码会发现，系统编码还是原来的编...]]></description><category></category></item><item><title><![CDATA[转：JVM 线上故障排查基本操作]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/102737523</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/102737523</guid><author>Adonis_D_Gogh</author><pubDate>Fri, 25 Oct 2019 10:03:51 +0800</pubDate><description><![CDATA[前言

对于后端程序员，特别是 Java 程序员来讲，排查线上问题是不可避免的。各种 CPU 飚高，内存溢出，频繁 GC 等等，这些都是令人头疼的问题。楼主同样也遇到过这些问题，那么，遇到这些问题该如何解决呢？

首先，出现问题，肯定要先定位问题所在，然后分析问题原因，再然后解决问题，最后进行总结，防止下次再次出现。

今天的文章，就如我们的题目一样，讲的是基本操作，也就是一些排查线上问题的基本方...]]></description><category></category></item><item><title><![CDATA[Java单播、广播、多播(组播)]]></title><link>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/102730765</link><guid>https://blog.youkuaiyun.com/Adonis_D_Gogh/article/details/102730765</guid><author>Adonis_D_Gogh</author><pubDate>Thu, 24 Oct 2019 20:01:55 +0800</pubDate><description><![CDATA[一、通信方式分类

　　在当前的网络通信中有三种通信模式：单播、广播和多播(组播)，其中多播出现时间最晚，同时具备单播和广播的优点。

单播：单台主机与单台主机之间的通信
	广播：当台主机与网络中的所有主机通信
	多播：当台主机与选定的一组主机的通信


二、单播　　

单播是网络通信中最常见的，网络节点之间的通信 就好像是人们之间的对话一样。如果一个人对另外一个人说话，

那么用网络技术的术语...]]></description><category></category></item></channel></rss>