<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[weixin_49123737的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/weixin_49123737</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; weixin_49123737]]></copyright><item><title><![CDATA[如何防止RocketMQ中消息被重复消费?]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/126049997</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/126049997</guid><author>weixin_49123737</author><pubDate>Fri, 29 Jul 2022 10:25:03 +0800</pubDate><description><![CDATA[如何解决rocketmq消息重复消费]]></description><category></category></item><item><title><![CDATA[什么是I/O多路复用]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/125916926</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/125916926</guid><author>weixin_49123737</author><pubDate>Thu, 21 Jul 2022 17:51:17 +0800</pubDate><description><![CDATA[要想知道什么是I/O多路复用，首先我们要来了解一下BIO和NIO。]]></description><category></category></item><item><title><![CDATA[java中的Stack解析]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/121617826</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/121617826</guid><author>weixin_49123737</author><pubDate>Mon, 29 Nov 2021 20:13:24 +0800</pubDate><description><![CDATA[一、什么是Stack

Stack就是栈，是一个重要的数据结构，它具有先进后出的特点。

栈的入栈和出栈操作都在栈顶进行，也可以说是在栈的尾部进行。所以先存的要在后面才能取出来，所以栈具有先进后出的特点。



二、源码解析

2.1 栈的底层结构

首先我们查看一下api 可以发现Stack继承的是Vector类，由此我们可以得出，栈的底层也是一个数组



2.2 构造方法

栈的构造方法只有一个


 public Stack() {
    }

创建一个空栈，这里我们不禁有一个疑问，既然它继承..]]></description><category></category></item><item><title><![CDATA[finalize与gc的区别]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/121524671</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/121524671</guid><author>weixin_49123737</author><pubDate>Mon, 29 Nov 2021 19:35:40 +0800</pubDate><description><![CDATA[一、finalize




]]></description><category></category></item><item><title><![CDATA[设计模式之工厂模式]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/121479243</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/121479243</guid><author>weixin_49123737</author><pubDate>Wed, 24 Nov 2021 20:33:46 +0800</pubDate><description><![CDATA[一、什么是工厂模式

在日常生活中，如果我们需要造一辆车，那么我们需要很多零件去把车组装起来，而这些零件一般又是来自不同的工厂的。这就跟我们在编写代码的时候一样，有时候需要去创建一个非常复杂的对象，这时候我们就可以创建一个工厂类去专门创建这些零件。这就是我所理解的工厂模式。

二、工厂模式的分类

工厂模式是三种设计模式相近的总称，它一共有三种。分别是简单工厂模式、工厂方法模式、抽象工厂模式

2.1 简单工厂模式

专门定义一个类用来创建其它类的实例，被创建的实例通常都具有共同的父类。

这里我们相当于是]]></description><category></category></item><item><title><![CDATA[jdk1.8新特性]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/121408564</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/121408564</guid><author>weixin_49123737</author><pubDate>Thu, 18 Nov 2021 19:56:07 +0800</pubDate><description><![CDATA[1.lambda 表达式

lambda表达式本质上是一段匿名内部类，也可以是一段可以传递的代码

2.接口里的方法



接口中可以定义默认实现方法和静态方法

在接口中可以使用default和static关键字来修饰接口中定义的普通方法

当一个类继承父类又实现接口时，若后两者方法名相同，则优先继承父类中的同名方法，即“类优先”，如果实现两个同名方法的接口，则要求实现类必须手动声明默认实现哪个接口中的方法。

3.函数式接口

函数式接口的提出是为了给Lambda表达式的使用提供更好的支持。

什么是函]]></description><category></category></item><item><title><![CDATA[java中== 和 equals的区别]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/121253284</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/121253284</guid><author>weixin_49123737</author><pubDate>Thu, 18 Nov 2021 19:08:34 +0800</pubDate><description><![CDATA[要想明白他们的区别，我们先把他们各自的用法搞明白。

首先我们来看==

一、==

对于基本数据类型来说，==比较的是两个类型的值是否相同，相同则返回true，不相同就返回false

代码示例：


public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 1;
		int b = 1;
		int c = 2;
		float d = 3.1]]></description><category></category></item><item><title><![CDATA[泛型的协变与逆变]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/121384884</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/121384884</guid><author>weixin_49123737</author><pubDate>Wed, 17 Nov 2021 20:07:27 +0800</pubDate><description><![CDATA[一、类型擦除

首先看下面这段代码：







按照Java重载来说，我参数列表不同，它是不会报错的，但是这里报了一个同名错误，这是因为 Java在编译的时候会把泛型，上面的&lt;String&gt;和&lt;Integer&gt;都给擦除掉。这就是java 的类型擦除。

ps：这里并没有真正的擦除



二、协变

我们可以利用通配符来实现泛型的协变：&lt;? extends T&gt;子类通配符；这个通配符定义了?继承自T，可以帮助我们实现向上转换：



现在list的类型是&lt;? ..]]></description><category></category></item><item><title><![CDATA[二叉树的前序，中序，后序遍历]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/121308012</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/121308012</guid><author>weixin_49123737</author><pubDate>Sat, 13 Nov 2021 18:54:25 +0800</pubDate><description><![CDATA[我们知道，二叉树的遍历有三种，分别是前序遍历、中序遍历和后序遍历，我们来看看这三种遍历的特性：

一、前序

前序遍历的基本思路是先遍历根节点，再遍历左节点，最后遍历右节点。

我们在这里随便找一个二叉树给大家演示它的遍历



先遍历根节点，这里的根节点是A，所以我们首先输出A，然后看他是否有左节点，有左节点就先遍历，然后输出B，然后发现B又有左节点，就继续遍历B的左节点D，然后输出D，再检查D是否有左节点，有就遍历，这里输出G，G是它的叶子节点了，没有子节点，然后去遍历D的右节点，输出H，再看H是否有左]]></description><category></category></item><item><title><![CDATA[java中throw 和 throws的区别（面试题）]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/121294423</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/121294423</guid><author>weixin_49123737</author><pubDate>Fri, 12 Nov 2021 19:42:28 +0800</pubDate><description><![CDATA[大家都知道java中拥有两种处理异常的关键字，throw和throws，今天我就来浅谈一下他们的区别

区别1

throw用在方法体内，后面跟的是异常类的对象名。


public  void checkEmpIDLength(String empID){
	
		if(empID.length() != 6){
			 throw new IllegalArgumentException("员工ID异常");
		}
	}


throws用在方法声明的时候，后面跟的是异常的类名


public vo]]></description><category></category></item><item><title><![CDATA[什么是哈希冲突？怎样解决哈希冲突？]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/121251851</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/121251851</guid><author>weixin_49123737</author><pubDate>Wed, 10 Nov 2021 17:33:07 +0800</pubDate><description><![CDATA[首先，要明白哈希冲突，我们需要明白什么是哈希表。

一、哈希表

概念：

哈希表（又叫散列表）是根据关键码值(Key value)而直接进行访问的数据结构。也就是说，它通过把关键码值映射到表中一个位置来访问记录，以加快查找的速度。这个映射函数叫做散列函数，存放记录的数组叫做散列表。

二、哈希冲突

我认为哈希表其实就是一个存放哈希值的一个数组，哈希值是通过哈希函数计算出来的，那么哈希冲突就是两个不同值的东西，通过哈希函数计算出来的哈希值相同，这样他们存在数组中的时候就会发生冲突，这就是哈希冲突。就像是高]]></description><category></category></item><item><title><![CDATA[java 中类的加载顺序]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/121086549</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/121086549</guid><author>weixin_49123737</author><pubDate>Mon, 01 Nov 2021 19:31:25 +0800</pubDate><description><![CDATA[父类


public class Animal {
	public String name;
	public int leg;
	static {
		System.out.println("这是父类的static代码块");
	}
	{
		System.out.println("这是父类的代码块");
	}
	public Animal() {
		System.out.println("这是父类的构造方法");
	}
	public void enjoy() {
		System.out.print]]></description><category></category></item><item><title><![CDATA[什么是值传递和引用传递?]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/121020180</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/121020180</guid><author>weixin_49123737</author><pubDate>Fri, 29 Oct 2021 10:53:33 +0800</pubDate><description><![CDATA[一.概念

按值传递：方法接收的是调用者提供的值
	按引用传递：方法接收的是调用者提供的变量地址
二.分析

首先,java数据类型分为基本数据类型和引用数据类型,基本数据类型包括byte,short,int,long,float.double,char,Boolean.引用数据类型String,以及new出来的对象,

值传递是相对于




...]]></description><category></category></item><item><title><![CDATA[1. JVM运行原理。2. Float类型和long类型那个取值范围更大。3. 数据类型解析]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/120835567</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/120835567</guid><author>weixin_49123737</author><pubDate>Mon, 18 Oct 2021 22:15:55 +0800</pubDate><description><![CDATA[1.JVM运行原理

首先要对字节码文件进行类的加载,进行类的加载时需要java类库的支持,然后通过字节码解释器和JIT即时编辑器分别执行引擎,最后将结果输出到硬件上.





2.float类型和long类型哪个取值范围更大

float类型在java中占四个字节,long类型占八个字节,但是float类型的取值范围比long类型的取值范围更大,这是因为float类型的32位,被分成了几个区域,第一位是符号位,第二位到第九位为指数,最后第十位到第三十二位为尾数位.



所以它的计算公式为V=(-1).]]></description><category></category></item><item><title><![CDATA[rhcsa移动，复制文件，以及创建删除目录文件]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/120288937</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/120288937</guid><author>weixin_49123737</author><pubDate>Tue, 14 Sep 2021 15:35:48 +0800</pubDate><description><![CDATA[在根下创建一个目录ceshi，在测试目录下创建一个user目录，将/etc/passwd和/etc/shadow文件复制到/ceshi/user目录中，给/ceshi//user/passwd文件创建一个硬链接文件为passwd.bak，给/ceshi/user/shadow文件创建一个软链接为sh.link。
使用代码[root@localhost ~]# mkdir /ceshi/进行创建并且查看根目录下是否有这个目录



因为要把另外的文件复制到/ceshi/user下，所以我们在ceshi目录下再]]></description><category></category></item><item><title><![CDATA[1、使用思维导图工具画出linux的文件系统层级结构图（其中要指出不同文件的文件类型且简要说明不同文件的作用）2、总结出vim的三个模式中你认为实用的命令3、找到所有你学过的外部命令的可执行文件，]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/120248684</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/120248684</guid><author>weixin_49123737</author><pubDate>Sun, 12 Sep 2021 11:34:43 +0800</pubDate><description><![CDATA[1.思维导图：





总结出vim的三个模式中你认为实用的命令.
一般模式：gg 跳转到文档首部行首

 yy 复制光标所在行

 u 撤销当前操作

$行尾

^行首

n[enter] n为数字，光标向下移动n行

插入模式：i 在光标前插入

I在光标所在行第一个非空格符前插入

a 在光标后插入

A 在光标所在行末尾插入

s 删除光标所在位置字符并插入

S 删除光标所在行并插入

o 在光标所在行...]]></description><category></category></item><item><title><![CDATA[HCIA综合实验]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/120242833</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/120242833</guid><author>weixin_49123737</author><pubDate>Sun, 12 Sep 2021 11:32:05 +0800</pubDate><description><![CDATA[需求图：





第一步，进行网段的划分，从图中我们可以看出，该网络共有七个网段，有两个网段已经有了ip地址，所以我们只需要将192.168.1.0/24网段划分成为五个网段，最后得到的结果如图中所示。

第二步，配置交换机，创建vlan 配置access和trunk干道

交换机1：



交换机2：



第三步，配置路由器，配置各个接口和子接口的ip地址，子接口还需要开启arp广播，开启ospf协议，由于pc1-pc4需要自动获取ip地址，所以要创建ip地址池，并且在对应的接口上设置全局...]]></description><category></category></item><item><title><![CDATA[将虚拟机的网络连接模式分别调换成仅主机模式、nat模式、桥接模式并获取ip地址使用ssh通过不同用户远程连接]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/120242041</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/120242041</guid><author>weixin_49123737</author><pubDate>Sat, 11 Sep 2021 19:33:14 +0800</pubDate><description><![CDATA[nat模式：

1.首先，在虚拟机内使用dhcp获取ip地址



2.其次，在moba内通过远程连接

登录root：

ssh root@192.168.140.128



登录用户：

ssh chenshilin@192.168.140.128

、3.上网测试



能上网



仅主机模式：

1.先将模式设置成为仅主机模式，再通过dhcp获取IP 再通过moba来远程连接





2.远程登录

登录root：

ssh root@192.168.144.128

root@192.16.]]></description><category></category></item><item><title><![CDATA[linux文件系统的权限和磁盘分区]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/119003647</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/119003647</guid><author>weixin_49123737</author><pubDate>Thu, 22 Jul 2021 23:55:43 +0800</pubDate><description><![CDATA[1、添加两块5g大小的磁盘，将第一块磁盘的分区分为两个主分区并格式化为xfs的文件系统类型，第二块磁盘的分区分为一个逻辑分区并格式化为ext4的文件系统类型。
2、将三个分区分别开机自动挂载在/disk1,/disk2,/disk3目录上。
3、在/disk1目录中创建一个普通文件，该文件的所属者为redhat，redhat可以查看并修改该文件内容，xiaoming和wukong用户可以查看该文件内容，剩下的其他用户对于该文件没有任何权限。
4、在/disk2目录中创建一个ceshi目录，任何人在该目录下面]]></description><category></category></item><item><title><![CDATA[linux用户管理实验]]></title><link>https://blog.youkuaiyun.com/weixin_49123737/article/details/118944796</link><guid>https://blog.youkuaiyun.com/weixin_49123737/article/details/118944796</guid><author>weixin_49123737</author><pubDate>Wed, 21 Jul 2021 15:09:48 +0800</pubDate><description><![CDATA[1、新建几个普通用户wukong，wuneng，wujing，他们都属于xiyouji组的成员，其中wujing没有和系统交互的shell。
2、wukong和wuneng的密码都为redhat。
3、通过sudo使得wukong可以使用wuneng和wujing的权限在他们的家目录下创建普通文件file。
4、通过sudo使得wukong可以将密码配置文件中自己的密码信息相关内容保存至自己家目录下的mima文件。
5、创建用户和组，新建一个名为adminuser的组，组id为3333；新建一个名为xiao]]></description><category></category></item></channel></rss>