<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[无名程序员]]></title><description><![CDATA[一个兴趣使然的博客，印象笔记的整理]]></description><link>https://blog.youkuaiyun.com/c764193441</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; c764193441]]></copyright><item><title><![CDATA[spring自定义Bean的创建]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/119150173</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/119150173</guid><author>c764193441</author><pubDate>Tue, 27 Jul 2021 18:06:21 +0800</pubDate><description><![CDATA[spring自定义Bean的创建
背景
众所周知,spring创建Bean的方式为工厂方式,如果想在Bean创建的时候做下扩展处理,spring停供了相应的扩展点进行扩展.


spring在容器初始化时,先读取Bean的定义,例如xml中的定义,config class中的定义,存储在beanDefinitionMap 中


如果想改变Bean的内容,可以改变Bean的定义,从而使之后的Bean的创建实例都改变


BeanFactoryPostProcessor就是用来改变Bean的定义的,Abstr]]></description><category></category></item><item><title><![CDATA[spring回调机制-aware接口]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/119144918</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/119144918</guid><author>c764193441</author><pubDate>Tue, 27 Jul 2021 15:22:28 +0800</pubDate><description><![CDATA[spring回调机制-aware接口
定义
由启动容器类进行分析,AbstractApplicationContext中的prepareBeanFactory方法
    /**
	 * Configure the factory's standard context characteristics,
	 * such as the context's ClassLoader and post-processors.
	 * @param beanFactory the BeanFactory to con]]></description><category></category></item><item><title><![CDATA[gradle springboot多模块基本写法]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/119004820</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/119004820</guid><author>c764193441</author><pubDate>Thu, 22 Jul 2021 17:33:37 +0800</pubDate><description><![CDATA[父模块
import java.time.OffsetDateTime
import java.time.format.DateTimeFormatter

buildscript {
    repositories {
        mavenLocal()
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        mavenCentral()
        // grandle插件
  ]]></description><category></category></item><item><title><![CDATA[feign Ambiguous mapping 解决方式]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/119000023</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/119000023</guid><author>c764193441</author><pubDate>Thu, 22 Jul 2021 15:18:45 +0800</pubDate><description><![CDATA[Feign Ambiguous mapping 解决方式
背景
feign在使用过程中,一般先定义接口,再定义具体实现的controller,如下所示
@FeignClient(name = "shore-app")
public interface StoreApi {

    @GetMapping("/api/store/getStoreNum")
    Integer getStoreNum();

    @GetMapping("/api/store/getStoreNumByConditi]]></description><category></category></item><item><title><![CDATA[枚举校验实现]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/118939864</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/118939864</guid><author>c764193441</author><pubDate>Tue, 20 Jul 2021 17:15:30 +0800</pubDate><description><![CDATA[枚举校验
背景
后端处理前端回传的参数,经常有枚举类型的校验,一般使用用Bean validator 去做校验,但是validator功能较弱
这时候就用自定义校验规则去实现
实现
定义注解
import jakarta.validation.Constraint;
import jakarta.validation.Payload;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import]]></description><category></category></item><item><title><![CDATA[feign注册失败]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/84930198</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/84930198</guid><author>c764193441</author><pubDate>Sun, 09 Dec 2018 18:04:09 +0800</pubDate><description><![CDATA[一、关于Feign
在微服务架构开发是，我们常常会在一个项目中调用其他服务，其实使用Spring Cloud Rbbon就能实现这个需求，利用RestTemplate 的请求拦截来实现对依赖服务的接口调用， 但是实际项目中对服务依赖的调用可能不止于 一 处，往往 一 个接口会被多处调用，所以我们通常都会针对各个微服务自行封装 一 些客户端类来包装这些依赖服务的调用。 这个时候我们会发现，由于 Re...]]></description><category></category></item><item><title><![CDATA[SQL优化简单总结]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/84025268</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/84025268</guid><author>c764193441</author><pubDate>Tue, 13 Nov 2018 10:54:56 +0800</pubDate><description><![CDATA[SQL优化简单总结


查询优化


避免全表扫描，优先考虑在where和order by涉及的列上建立索引


is null值判断会导致引擎放弃使用索引，变成全表扫描，如：


select id from t where num is null
-- 导致全表扫描


**！=或&amp;amp;lt;&amp;amp;gt;**操作符也会导致引擎放弃使用索引，进行全表扫描，如：

select id from t whe...]]></description><category></category></item><item><title><![CDATA[java虚拟机结构]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/83828369</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/83828369</guid><author>c764193441</author><pubDate>Wed, 07 Nov 2018 17:44:25 +0800</pubDate><description><![CDATA[java虚拟机结构

类加载器：负责从文件系统或网络中加载Class信息,加载到方法区的内存里面
方法区：存放类信息,常量信息,常量池信息,包括字符串字面量和数字常量
java堆：虚拟机启动时建立java堆，是主要的内存工作区域，几乎所有对象实例存放到java堆中，堆空间是所有线程共享的
直接内存：javaNIO允许java使用直接内存，提高性能，性能优于java堆，读写频繁的场合下用
栈：每个虚...]]></description><category></category></item><item><title><![CDATA[数据库4种隔离级别]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/83826921</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/83826921</guid><author>c764193441</author><pubDate>Wed, 07 Nov 2018 16:48:57 +0800</pubDate><description><![CDATA[数据库4种隔离级别
READ UNCOMMITED(未提交读)
问题:事务没提交,其他事务可看到数据,脏读
READ COMMITED(提交读)
大多数数据库系统的默认隔离级别是READ COMMITTED，这种隔离级别就是一个事务的开始，只能看到已经完成的事务的结果，正在执行的，是无法被其他事务看到的。这种级别会出现读取旧数据的现象
问题:事务执行到一半,其它事务不知道,可能读取了事务前的数据
...]]></description><category></category></item><item><title><![CDATA[interrupt、interrupted 、isInterrupted 区别]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/80757705</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/80757705</guid><author>c764193441</author><pubDate>Thu, 21 Jun 2018 11:16:30 +0800</pubDate><description><![CDATA[interrupt、interrupted 、isInterrupted 区别

1、interrupt 

interrupt方法用于中断线程。调用该方法的线程的状态为将被置为”中断”状态。

注意：线程中断仅仅是置线程的中断状态位，不会停止线程。需要用户自己去监视线程的状态为并做处理。支持线程中断的方法（也就是线程中断后会抛出interruptedException的方法）就是在监视线程的中断...]]></description><category></category></item><item><title><![CDATA[Java 多线程：InheritableThreadLocal 实现原理]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/80728611</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/80728611</guid><author>c764193441</author><pubDate>Tue, 19 Jun 2018 09:28:46 +0800</pubDate><description><![CDATA[Java 多线程：InheritableThreadLocal 实现原理



前言

介绍 InheritableThreadLocal 之前，假设对 ThreadLocal 已经有了一定的理解，比如基本概念，原理，如果没有，可以参考：Java 多线程：threadlocal关键字。

这里再复习下 ThreadLocal 的原理，因为会对 InheritableThreadLocal 的理解 ...]]></description><category></category></item><item><title><![CDATA[netty入门-helloword介绍]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/79776131</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/79776131</guid><author>c764193441</author><pubDate>Sun, 01 Apr 2018 10:38:17 +0800</pubDate><description><![CDATA[netty入门-helloword介绍

server代码样例



package day1;

import java.net.InetSocketAddress;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.logging.Logger;

impo...]]></description><category></category></item><item><title><![CDATA[netty入门-io介绍]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/79767046</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/79767046</guid><author>c764193441</author><pubDate>Sat, 31 Mar 2018 11:07:03 +0800</pubDate><description><![CDATA[netty入门-io介绍



传统io样例



package com.hrf.io;

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Logger;

public cl...]]></description><category></category></item><item><title><![CDATA[Arrays.asList传入参数的问题]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/79548843</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/79548843</guid><author>c764193441</author><pubDate>Wed, 14 Mar 2018 00:03:45 +0800</pubDate><description><![CDATA[做了一道笔试题，回来验证结果的时候发现里面有个陷阱，找了一下才发现Arrays.asList这个方法有坑 
asList的定义如下



public static &amp;lt;T&amp;gt; List&amp;lt;T&amp;gt; asList(T... a) { 
return new ArrayList&amp;lt;T&amp;gt;(a); 
}

这个T必须是对象类型。好比我们不能new ArrayList 只能new ...]]></description><category></category></item><item><title><![CDATA[关于MySQL 通用查询日志和慢查询日志分析]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/79538711</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/79538711</guid><author>c764193441</author><pubDate>Tue, 13 Mar 2018 12:08:15 +0800</pubDate><description><![CDATA[MySQL中的日志包括：错误日志、二进制日志、通用查询日志、慢查询日志等等。这里主要介绍下比较常用的两个功能：通用查询日志和慢查询日志。

1）通用查询日志：记录建立的客户端连接和执行的语句。

2）慢查询日志：记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询

（1）通用查询日志

在学习通用日志查询时，需要知道两个数据库中的常用命令：

1） showvari...]]></description><category></category></item><item><title><![CDATA[java多态]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/79519877</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/79519877</guid><author>c764193441</author><pubDate>Sun, 11 Mar 2018 20:41:17 +0800</pubDate><description><![CDATA[java多态理解

最近面试做到一些笔试题，对多态的理解，脑袋一片空白，既熟悉又陌生的概念，一下子说不出来，确实是做多年java的我的一个失败，所以又去找了一下概念，恶补一下。

个人理解的多态：父类与子类之间相互类型转换（子类能上下转，父类不能强转子类），所表现出来的行为属性不一样



首先来个标准的概念说明 
多态： java的多态体现在一个变量可以引用多个不同类型的对象，前提是这些不同类必...]]></description><category></category></item><item><title><![CDATA[设计模式回顾-Observer模式]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/79516969</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/79516969</guid><author>c764193441</author><pubDate>Sun, 11 Mar 2018 15:44:24 +0800</pubDate><description><![CDATA[设计模式回顾-Observer模式（watcher模式）

观察者模式

当对象间存在一对多关系时，则使用观察者模式（Observer Pattern）。比如，当一个对象被修改时，则会自动通知它的依赖对象。观察者模式属于行为型模式。



介绍

意图：定义对象间的一种一对多的依赖关系，当一个对象的状态发生改变时，所有依赖于它的对象都得到通知并被自动更新。

主要解决：一个对象状态改变给其他对象通...]]></description><category></category></item><item><title><![CDATA[设计模式回顾-Singleton模式]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/79516509</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/79516509</guid><author>c764193441</author><pubDate>Sun, 11 Mar 2018 15:04:28 +0800</pubDate><description><![CDATA[设计模式回顾-Singleton模式

单例模式（Singleton Pattern）是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式，它提供了一种创建对象的最佳方式。

这种模式涉及到一个单一的类，该类负责创建自己的对象，同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式，可以直接访问，不需要实例化该类的对象。

注意：


1、单例类只能有一个实例。
2、...]]></description><category></category></item><item><title><![CDATA[设计模式回顾-factory模式]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/79516196</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/79516196</guid><author>c764193441</author><pubDate>Sun, 11 Mar 2018 14:34:24 +0800</pubDate><description><![CDATA[设计模式回顾-factory模式

工厂模式（Factory Pattern）是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式，它提供了一种创建对象的最佳方式。

在工厂模式中，我们在创建对象时不会对客户端暴露创建逻辑，并且是通过使用一个共同的接口来指向新创建的对象。





介绍

意图：定义一个创建对象的接口，让其子类自己决定实例化哪一个工厂类，工厂模式使其创建过程延迟...]]></description><category></category></item><item><title><![CDATA[设计模式回顾-Template模式(实际处理交给子类)]]></title><link>https://blog.youkuaiyun.com/c764193441/article/details/79510387</link><guid>https://blog.youkuaiyun.com/c764193441/article/details/79510387</guid><author>c764193441</author><pubDate>Sat, 10 Mar 2018 18:13:14 +0800</pubDate><description><![CDATA[设计模式回顾-Template模式(实际处理交给子类)



模板模式

在模板模式（Template Pattern）中，一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现，但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。





介绍

意图：定义一个操作中的算法的骨架，而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义...]]></description><category></category></item></channel></rss>