<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[张铎]]></title><description><![CDATA[不将就，知道做到。]]></description><link>https://blog.youkuaiyun.com/zhanduo0118</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zhanduo0118]]></copyright><item><title><![CDATA[2021年总结]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/122281213</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/122281213</guid><author>zhanduo0118</author><pubDate>Sun, 02 Jan 2022 21:35:46 +0800</pubDate><description><![CDATA[今年还行，没有大起大落，穷的还算稳定。




]]></description><category></category></item><item><title><![CDATA[Docer容器客户端在启动的镜像的时候报错Error invoking remote method ‘docker-start-container‘: Error: (HTTP code 500]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/120821468</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/120821468</guid><author>zhanduo0118</author><pubDate>Mon, 18 Oct 2021 10:22:59 +0800</pubDate><description><![CDATA[打开docker容器，启动redis镜像，报错：






Error invoking remote method 'docker-start-container': Error: (HTTP code 500) server error - Ports are not available: listen tcp 0.0.0.0:2181: bind: An attempt was made to access a socket in a way forbidden by its access per.]]></description><category></category></item><item><title><![CDATA[ToB和ToC产品的差异，知道这几点就够了]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/120718859</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/120718859</guid><author>zhanduo0118</author><pubDate>Tue, 12 Oct 2021 10:41:08 +0800</pubDate><description><![CDATA[最近新公司涉及到ToB和ToC。以前对这块很模糊，所以上网查了一下。主要有以下几个方面不同：

1. 用户群体

所谓用户群体，就是什么样的人在使用你的产品。ToC和ToB最大的差别就是用户群体不同。ToC的用户基本上是个人用户，而每个人都是个性鲜明的个体，想让你的产品满足所有人的个性显然是困难的，甚至于，不太可能的，而我们要做的，正是抓住用户群体的共性，满足它们。而ToB的用户普遍是企业，是购买我们产品的客户。客户和用户的区别在于，客户所关注的不是自身的贪，痴，嗔。而是产品是否能够提升KPI，产品的性价比]]></description><category></category></item><item><title><![CDATA[rabbitmq交换器的四种模式]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/120398347</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/120398347</guid><author>zhanduo0118</author><pubDate>Tue, 21 Sep 2021 08:25:07 +0800</pubDate><description><![CDATA[rabbitmq交换器的四种模式：

1.fanout：fanout类型的Exchange会把所有发送到该Exchange的消息路由到所有与它绑定的Queue中。

2.direct：direct类型的Exchange会把消息路由到那些binding key与routing key完全匹配的Queue中。

3.topic：topic类型的Exchange在匹配规则上进行了扩展，它与direct类型的Exchage相似，也是将消息路由到binding key与routing key相匹配的Queue中，..]]></description><category></category></item><item><title><![CDATA[https原理，工作流程]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/120392836</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/120392836</guid><author>zhanduo0118</author><pubDate>Mon, 20 Sep 2021 16:50:45 +0800</pubDate><description><![CDATA[HTTPS = HTTP + SSL/TLS，即用SSL/TLS对数据进行加密和解密，Http进行传输。
	
	
	SSL，即Secure Sockets Layer（安全套接层协议），是网络通信提供安全及数据完整性的一种安全协议。
	
	
	TLS，即Transport Layer Security(安全传输层协议)，它是SSL3.0的后续版本。
	


客户端发起Https请求，连接到服务器的443端口。
	服务器必须要有一套数字证书（证书内容有公钥、证书颁发机构、失效日期等）。
	服务器将自己的数..]]></description><category></category></item><item><title><![CDATA[Bean初始化操作-SpringMVC中@ControllerAdvice注解的三种使用场景]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/120377379</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/120377379</guid><author>zhanduo0118</author><pubDate>Sun, 19 Sep 2021 09:40:34 +0800</pubDate><description><![CDATA[一. Bean初始化操作

1. 简介

很多时间当一个Bean被创建出来后，我们希望做一些初始化操作，如初始化数据、缓存预热等。有以下三种方法：

初始化方法initMethod
	注解@PostConstruct
	InitializingBean的afterPropertiesSet方法
2. 三种方法实现

先准备一个类用于测试，代码如下：


public class BeanLifeCheck implements InitializingBean {
    private static fi]]></description><category></category></item><item><title><![CDATA[Java中POJO、VO、DTO、PO、Entity的区别]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/120377358</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/120377358</guid><author>zhanduo0118</author><pubDate>Sun, 19 Sep 2021 09:27:14 +0800</pubDate><description><![CDATA[最近发现很多小伙伴在规划项目结构的时候，总是无法区分POJO、VO、DTO、PO、Entity

特此记录一下，方便大家学习

1、POJO

Plain Ordinary Java Object
无规则简单Java对象，一个中间对象，可以转化为VO、DTO、PO

2、VO

View Object
表示层对象，一般在Controller层使用，对应页面显示的数据对象。

3、DTO

Data Transfer Object
数据传输对象，一般在Service层使用，如PO有30个属性，页面VO只显示1]]></description><category></category></item><item><title><![CDATA[Spring是怎么解决循环依赖的？]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/120377316</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/120377316</guid><author>zhanduo0118</author><pubDate>Sun, 19 Sep 2021 09:24:47 +0800</pubDate><description><![CDATA[Spring是怎么解决循环依赖的？
首先，Spring 解决循环依赖有两个前提条件：

不全是构造器方式的循环依赖
必须是单例
基于上面的问题，我们知道Bean的生命周期，本质上解决循环依赖的问题就是三级缓存，通过三级缓存提前拿到未初始化完全的对象。

第一级缓存：用来保存实例化、初始化都完成的对象

第二级缓存：用来保存实例化完成，但是未初始化完成的对象

第三级缓存：用来保存一个对象工厂，提供一个匿名内部类，用于创建二级缓存中的对象



假设一个简单的循环依赖场景，A、B互相依赖。



A对象的..]]></description><category></category></item><item><title><![CDATA[看完就明白_spring事务的7种传播行为]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/120280164</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/120280164</guid><author>zhanduo0118</author><pubDate>Tue, 14 Sep 2021 09:18:05 +0800</pubDate><description><![CDATA[什么叫事务传播行为？听起来挺高端的，其实很简单。
即然是传播，那么至少有两个东西，才可以发生传播。单体不存在传播这个行为。

事务传播行为（propagation behavior）指的就是当一个事务方法被另一个事务方法调用时，这个事务方法应该如何进行。
例如：methodA事务方法调用methodB事务方法时，methodB是继续在调用者methodA的事务中运行呢，还是为自己开启一个新事务运行，这就是由methodB的事务传播行为决定的。

Spring定义了七种传播行为：1、PROPAGATIO...]]></description><category></category></item><item><title><![CDATA[谈谈Spring中都用到了哪些设计模式？]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/120279958</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/120279958</guid><author>zhanduo0118</author><pubDate>Tue, 14 Sep 2021 08:58:18 +0800</pubDate><description><![CDATA[工厂设计模式

Spring使用工厂模式可以通过 BeanFactory 或 ApplicationContext 创建 bean 对象。

两者对比：

BeanFactory ：延迟注入(使用到某个 bean 的时候才会注入),相比于BeanFactory来说会占用更少的内存，程序启动速度更快。
	ApplicationContext ：容器启动的时候，不管你用没用到，一次性创建所有 bean 。BeanFactory 仅提供了最基本的依赖注入支持，ApplicationContext 扩展了 Bean]]></description><category></category></item><item><title><![CDATA[spring注解常用汇总]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/120116261</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/120116261</guid><author>zhanduo0118</author><pubDate>Sun, 05 Sep 2021 15:58:16 +0800</pubDate><description><![CDATA[@Configuration把一个类作为一个IoC容器，它的某个方法头上如果注册了@Bean，就会作为这个Spring容器中的Bean。
@Scope注解 作用域
@Lazy(true) 表示延迟初始化
@Service用于标注业务层组件、
@Controller用于标注控制层组件（如struts中的action）
@Repository用于标注数据访问组件，即DAO组件。
@Component泛指组件，当组件不好归类的时候，我们可以使用这个注解进行标注。
@Scope用于指定scope作用域的（用在类上.]]></description><category></category></item><item><title><![CDATA[一个接口有多个实现类时，调用接口时，如何判定调用的哪个实现类？]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/120116160</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/120116160</guid><author>zhanduo0118</author><pubDate>Sun, 05 Sep 2021 15:57:05 +0800</pubDate><description><![CDATA[一个接口对应多个实现类

一个接口对应对个实现类，需要注入指定的实现类。
如：Interface接口下有两个实现类InterfaceImpl1和InterfaceImpl2。
接口：


package com.example.service;
public interface Interface1 {
    void fun1();
}

对应实现类1InterfaceImpl1：


@Service("s1")
public class Interface1Impl1 implements Inte]]></description><category></category></item><item><title><![CDATA[mysql 7种JOIN理论，看完你就懂了]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/119530187</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/119530187</guid><author>zhanduo0118</author><pubDate>Mon, 09 Aug 2021 08:53:34 +0800</pubDate><description><![CDATA[select * from tbl_emp a inner join tbl_dept b on a.deptId=b.id;

select * from tbl_emp a LEFT JOIN tbl_dept b on a.deptId=b.id;

select * from tbl_emp a RIGHT JOIN tbl_dept b on a.deptId=b.id;

select * from tbl_emp a LEFT JOIN tbl_dept b on a.deptId=b.id ]]></description><category></category></item><item><title><![CDATA[VMware该虚拟机似乎正在使用中。如果该虚拟机未在使用，请按“获取所有权(T)”按钮获取它的所有权]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/119514670</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/119514670</guid><author>zhanduo0118</author><pubDate>Sun, 08 Aug 2021 14:50:33 +0800</pubDate><description><![CDATA[启动VMware虚拟机，无法正常打开并出现以下信息：
原因：
这是因为当运行一个“虚拟系统”时，为防止该系统被另外一个VMware程序打开，导致数据被修改或损坏，VMware会自动在该“虚拟系统”所在的文件夹下，生成三个锁定文件。
分别为：.vmx.lck（虚拟系统锁定）,.vmdk.lck（虚拟磁盘锁定）,*.vmem.lck（虚拟内存锁定）。
当该虚拟系统正常关机后，VMware解锁，.vmdk.lck和.vmem.lck文件夹消失。
当该虚拟机程序正常关闭后，*.vmx.lck文件夹消失。
但是若出现]]></description><category></category></item><item><title><![CDATA[mysql的逻辑架构介绍]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/119481960</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/119481960</guid><author>zhanduo0118</author><pubDate>Sat, 07 Aug 2021 11:19:21 +0800</pubDate><description><![CDATA[连接层

最上层是一些客户端和连接服务，包含本地sock通信和大多数基于客户端服务端工具实现的类似于tcp/p的通信。主要完成一些类似于连接处
理、授权认证、及相关的安全方案。在该层上引入了线程池的概念，为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于
SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限

服务层

第二层架构主要完成大多少的核心服务功能，如SQL接口，并完成缓存的查询，SQL的分析和优化及部分内置函数的执行。所有跨存储引擎的
功能也在这一层实现，如过程、.]]></description><category></category></item><item><title><![CDATA[JavaBean和SpringBean的区别？]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/119084022</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/119084022</guid><author>zhanduo0118</author><pubDate>Sun, 25 Jul 2021 16:47:59 +0800</pubDate><description><![CDATA[什么是JavaBean:
JavaBean是一种JAVA语言写的可重用组件。JavaBean符合一定规范写的Java类，是一种规范。它的方法命名，构造以及行为必须符合特定的要求：
1.所有属性为private
 2.这个类必须具有一个公共的（public）无参构造函数

 3.private属性必须提供public的getter和setter来给外部访问，并且方法的命名也必须遵循一定的命名规范

 4.这个类是可序列化的，要实现serializable接口

什么是SpringBean:
SpringBea]]></description><category></category></item><item><title><![CDATA[什么是开源软件？]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/119076955</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/119076955</guid><author>zhanduo0118</author><pubDate>Sun, 25 Jul 2021 08:47:43 +0800</pubDate><description><![CDATA[什么是开源软件？
开源软件就是把软件程序与源代码文件一起打包提供给用户。用户既可以不受限制地使用该软件的全部功能，也可根据自己的需求修改源代码，修改完之后再发布出去。
用户具有使用自由、修改自由、重新发布自由，因此开源软件都有着很高的人气，大家聚集在开源社区，共同推动开源软件的进步。

...]]></description><category></category></item><item><title><![CDATA[springboot使用日志报错 trace(java.util.function.Supplier＜java.lang.String＞) in Logger cannot be applied to]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/119052851</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/119052851</guid><author>zhanduo0118</author><pubDate>Sat, 24 Jul 2021 09:07:00 +0800</pubDate><description><![CDATA[Logger logger = LoggerFactory.getLogger(getClass());
    // 日志的级别从低到高,如下排列
    @Test
    public void testLog() {
        logger.trace("这个trace日志");
        logger.debug("这个debug日志");
        logger.info("这个info日志");
        logger.warn("这个warn日志");
       ]]></description><category></category></item><item><title><![CDATA[内存泄漏和内存溢出有啥区别？]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/118937567</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/118937567</guid><author>zhanduo0118</author><pubDate>Tue, 20 Jul 2021 15:57:33 +0800</pubDate><description><![CDATA[1、内存泄漏(Memory Leak)：是指程序在申请内存后，无法释放已申请的内存空间，一次内存泄漏似乎不会有大的影响，但内存泄漏堆积后的后果就是内存溢出。
2、内存溢出(Memory Overflow)：指程序申请内存时，没有足够的内存供申请者使用，或者说，给了你一块存储int类型数据的存储空间，但是你却存储long类型的数据，那么结果就是内存不够用，此时就会报错OOM,即所谓的内存溢出。
3、二者的关系
内存泄漏的堆积最终会导致内存溢出。内存溢出就是你要的内存空间超过了系统实际分配给你的空间，此时系统相]]></description><category></category></item><item><title><![CDATA[springmvc整体执行流程]]></title><link>https://blog.youkuaiyun.com/zhanduo0118/article/details/118895782</link><guid>https://blog.youkuaiyun.com/zhanduo0118/article/details/118895782</guid><author>zhanduo0118</author><pubDate>Mon, 19 Jul 2021 14:45:48 +0800</pubDate><description><![CDATA[]]></description><category></category></item></channel></rss>