<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[feiyuciuxun的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/feiyuciuxun</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; feiyuciuxun]]></copyright><item><title><![CDATA[jvm系列]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/108211204</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/108211204</guid><author>feiyuciuxun</author><pubDate>Tue, 25 Aug 2020 10:15:45 +0800</pubDate><description><![CDATA[虚拟机分为两种：

程序虚拟机：jvm等
	系统虚拟机：VMware等
jvm的位置



程序虚拟机(jvm)需要运行在操作系统之上，和硬件没有直接的交互。在安装虚拟机时要关注是安装在哪个操作系统上，不同操作系统的虚拟机是不一样的。

而系统虚拟机用来模仿硬件。

jdk、jre、jvm三者的关系


...]]></description><category></category></item><item><title><![CDATA[设计模式]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/107500243</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/107500243</guid><author>feiyuciuxun</author><pubDate>Tue, 21 Jul 2020 22:59:54 +0800</pubDate><description><![CDATA[单例：

1、饿汉式：

类加载到内存后，就实例化一个单例，JVM保证线程安全，简单实用，推荐使用

唯一缺点：不管用到与否，类装载时就完成实例化


public class Singleton1 {
    private static final Singleton1 INSTANCE = new Singleton1();
    private Singleton1() {

    }
    public static Singleton1 getInstance(){
        ret]]></description><category></category></item><item><title><![CDATA[客户端&服务器访问方式的演进]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/107051333</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/107051333</guid><author>feiyuciuxun</author><pubDate>Wed, 15 Jul 2020 14:38:11 +0800</pubDate><description><![CDATA[前言：

1、网络模型：

  a.编程模型：TCP、UDP

    i. TCP : 可靠连接，使命必达，速度慢

    ii. UDP : 不可靠，速度快

  b. BIO / OIO

    i. Blocking IO / Old IO

  c. NIO（linux支持）

    i. New IO : Non-Blocking IO

  d. AIO(仅仅windows支持)

    i. Asynchronous IO
...]]></description><category></category></item><item><title><![CDATA[java之Lambda表达式]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/107312334</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/107312334</guid><author>feiyuciuxun</author><pubDate>Mon, 13 Jul 2020 17:58:36 +0800</pubDate><description><![CDATA[目录

一、简单实例：

二、Lambda表达式的使用

三、方法引用

一、简单实例：


        Runnable r1 = new Runnable() {
            @Override
            public void run() {
                System.out.println("我爱你中国");
            }
        };
        r1.run();
        System.out.println("]]></description><category></category></item><item><title><![CDATA[集合]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/107200354</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/107200354</guid><author>feiyuciuxun</author><pubDate>Wed, 08 Jul 2020 17:13:30 +0800</pubDate><description><![CDATA[List:

ArrayList: jdk1.2, 线程不安全 底层使用数组：Object[ ] ，如果非要使用线程安全的ArrayList可以使用Collections工具类中的某个方法。
	LinkList:  jdk1.2, 线程不安全 底层使用双向链表
	Vector:   jdk1.1, 线程安全   底层使用数组:Object[ ]  很少用了
一、ArrayList源码分析:

1、jdk1.7情况下：

ArrayList list = n...]]></description><category></category></item><item><title><![CDATA[枚举]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/107186173</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/107186173</guid><author>feiyuciuxun</author><pubDate>Tue, 07 Jul 2020 17:29:52 +0800</pubDate><description><![CDATA[自定义枚举类：


public class test01 {
    public static void main(String[] args) {
        System.out.println(Session.AUTOMN.getAge());
        System.out.println(Session.AUTOMN.getName());
    }

}
class Session{
    private final String name;
    private final]]></description><category></category></item><item><title><![CDATA[String类]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/107131542</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/107131542</guid><author>feiyuciuxun</author><pubDate>Sun, 05 Jul 2020 17:24:49 +0800</pubDate><description><![CDATA[目录

创建String实例的方式：

String 、StringBuilder、StringBuffer对比

创建String实例的方式：


        // 在方法区的常量池生成一个字符串abc,如果
        String str1 = "abc";
        // str2 和str1引用的是同一个字符串，也就是说在常量池中只有一个abc
        String str2 = "abc";
        // 本质上 this.value = new char[0];
]]></description><category></category></item><item><title><![CDATA[java多线程学习总结]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/107120898</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/107120898</guid><author>feiyuciuxun</author><pubDate>Sat, 04 Jul 2020 19:10:04 +0800</pubDate><description><![CDATA[大纲：

基本概念：程序、进程、线程
	线程的创建和使用
	线程的生命周期
	线程的同步
	线程的通信
	JDK5.0新增线程创建方式
一、基本概念：

1、程序：一段静态的代码

2、进程：是程序的一次执行过程，或者是正在运行的一个程序，是一个动态的过程。有它自身的产生、存在、和消亡的过程——生命周期

进程作为资源分配的单位，系统会在运行时为每个进程分配不同的内存区域
3、线程：进程可以进一步细化为线程，是一个程序内部的一条执行路径。

线程作为调度和执行的单位，每个线程拥有独立的运行栈和程序计数器(p]]></description><category></category></item><item><title><![CDATA[java之多态]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/106773717</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/106773717</guid><author>feiyuciuxun</author><pubDate>Tue, 16 Jun 2020 08:58:20 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[java之类的构造器]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/106773274</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/106773274</guid><author>feiyuciuxun</author><pubDate>Mon, 15 Jun 2020 23:11:24 +0800</pubDate><description><![CDATA[super调用构造器：

我们可以在子类的构造器中显示的使用“super(形参列表)”的方式，调用父类中声明的指定的构造器
	“super(形参列表)”的使用，必须声明在子类构造器的首行！
	我们在类的构造器中，针对于“this(形参列表)”或"super(形参列表)"只能二选一，不能同时出现
	在构造器的首行，没有显示的声明“this(形参列表)”或"super(形参列表)"，则默认调用的事父类中空参的构造器
	在类的多个构造器中，至少有一个类的构造器中使用了“super(形参列表)”，调用父类中的构造器]]></description><category></category></item><item><title><![CDATA[java方法重写的规定]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/106762845</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/106762845</guid><author>feiyuciuxun</author><pubDate>Mon, 15 Jun 2020 15:09:36 +0800</pubDate><description><![CDATA[重写的规定：

      方法的声明：权限修饰符 返回值类型 方法名(形参列表){

            // 方法体

      }

约定俗称：子类中的叫重写的方法，父类中的叫被重写的方法

子类重写的方法的方法名和形参列表与父类被重写方法的方法名和形参列表相同
	子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符 
     特殊情况：子类不能重写父类中声明为private权限的方法

返回值类型
父类被重写的方...]]></description><category></category></item><item><title><![CDATA[java之日期时间类]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/105173627</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/105173627</guid><author>feiyuciuxun</author><pubDate>Mon, 30 Mar 2020 00:00:47 +0800</pubDate><description><![CDATA[JDK1.8之前

java.util.Date

构造方法：


new Date()
new Date(long date)

经常使用的方法：


// 测试此日起是否在指定日期之后
boolean after(Date when)
// 测试此日期是否在指定日期之前
boolean before(Date when)
// 比较两个日期的相等性
boolean equals(Object ...]]></description><category></category></item><item><title><![CDATA[java之IO]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/105158290</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/105158290</guid><author>feiyuciuxun</author><pubDate>Sat, 28 Mar 2020 15:41:17 +0800</pubDate><description><![CDATA[目录



一、文件基本信息：

（1） 获取文件或目录的详细信息

 (2) 获取文件或目录的路径

 (3) 创建、删除、重命名

 （4） 判断是文件还是目录

 （5） 不存在的一个文件或目录

获取文件下一级

求一个目录的总大小

删除一个包含子目录，子文件的文件夹

一、文件基本信息：

（1） 获取文件或目录的详细信息


 getName()
 len...]]></description><category></category></item><item><title><![CDATA[maven隔离]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/105131345</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/105131345</guid><author>feiyuciuxun</author><pubDate>Thu, 26 Mar 2020 23:40:59 +0800</pubDate><description><![CDATA[使用maven隔离的必要性

为什么引入maven隔离
	代码开发、代码测试、发布版本是我们开发过程中必不可少的三个环节，以数据库为例，生产环境所使用的数据库与测试环境所使用的定不相同，
		为解决地址不同的问题，我们一般在同一个配置文件中写好两套环境地址，在使用开发环境时，将生产环境配置注释掉；而在发布正式版本前，
		需要将开发环境配置注释掉，使用生产环境地址；
		这样的来回切换，就很容易导...]]></description><category></category></item><item><title><![CDATA[log]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/105023302</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/105023302</guid><author>feiyuciuxun</author><pubDate>Sun, 22 Mar 2020 10:15:56 +0800</pubDate><description><![CDATA[log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4...]]></description><category></category></item><item><title><![CDATA[java异常]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/105010044</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/105010044</guid><author>feiyuciuxun</author><pubDate>Sat, 21 Mar 2020 15:00:56 +0800</pubDate><description><![CDATA[所有类的根父类是Object。
 枚举的公共父类是Enum，根父类仍然是Object
 异常的公共父类是Throwable，根父类仍然是Object

 1、异常的公共父类：java.lang.Throwable


 (1)只有当对象是此类（或其子类之一）的实例时，才能通过 Java 虚拟机或者 Java throw 语句“抛”出。
 (2)只有此类或其子类之一才可以是 ca...]]></description><category></category></item><item><title><![CDATA[git命令总结]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/104176001</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/104176001</guid><author>feiyuciuxun</author><pubDate>Tue, 04 Feb 2020 23:41:24 +0800</pubDate><description><![CDATA[创建git仓库：git init

添加文件到git仓库分两步

把文件添加到仓库：git add 文件名（git add 后可以接多个文件名，如：git add file1.txt file2.txt）
	把文件提交到仓库：git commit -m + 注释 (针对add多个文件，git commit命令可以一次性提交)
显示当前仓库的状态：git status

add之前使用gi...]]></description><category></category></item><item><title><![CDATA[RDD转换算子]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/104064538</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/104064538</guid><author>feiyuciuxun</author><pubDate>Mon, 03 Feb 2020 00:04:02 +0800</pubDate><description><![CDATA[value类型1

map

rdd.map：调用map方法的源码如下：


def map[U: ClassTag](f: T =&gt; U): RDD[U] = withScope {
    val cleanF = sc.clean(f)
    new MapPartitionsRDD[U, T](this, (context, pid, iter) =&gt; iter.map(cl...]]></description><category></category></item><item><title><![CDATA[RDD的创建]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/104063320</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/104063320</guid><author>feiyuciuxun</author><pubDate>Tue, 21 Jan 2020 17:41:56 +0800</pubDate><description><![CDATA[RDD有三种创建方式

1、从内存/集合中创建


val conf: SparkConf = new SparkConf().setAppName("test01").setMaster("local[*]")
val sc = new SparkContext(conf)
    
val rdd1: RDD[Int] = sc.parallelize(List(1, 2, 3, 4))

v...]]></description><category></category></item><item><title><![CDATA[隐式转换之reduceByKey]]></title><link>https://blog.youkuaiyun.com/feiyuciuxun/article/details/104034819</link><guid>https://blog.youkuaiyun.com/feiyuciuxun/article/details/104034819</guid><author>feiyuciuxun</author><pubDate>Sun, 19 Jan 2020 00:07:38 +0800</pubDate><description><![CDATA[下面代码中，wordToOne是RDD类型，调用了reduceByKey方法，但是reduceByKey是PairRDD类型的方法，那不属于一个类型，为什么可以调用呢？ 或者说RDD类中不存在reduceByKey方法

原因是RDD类中有隐式转换，将RDD通过隐式转换是的可以使用PairRDD的方法


package com.aiyunxiao.test01

import org.apach...]]></description><category></category></item></channel></rss>