<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[moonfish0607的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/moonfish0607</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; moonfish0607]]></copyright><item><title><![CDATA[Java Apache POI 小记(读取Word通过模板创建PPT)]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/127492869</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/127492869</guid><author>moonfish0607</author><pubDate>Mon, 24 Oct 2022 17:39:35 +0800</pubDate><description><![CDATA[Java Apache POI 小记(读取Word通过模板创建PPT)]]></description><category></category></item><item><title><![CDATA[单例设计模式]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/103082194</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/103082194</guid><author>moonfish0607</author><pubDate>Wed, 04 Dec 2019 09:36:26 +0800</pubDate><description><![CDATA[单例设计模式]]></description><category></category></item><item><title><![CDATA[GoF23设计模式总述]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/103052711</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/103052711</guid><author>moonfish0607</author><pubDate>Fri, 15 Nov 2019 11:10:39 +0800</pubDate><description><![CDATA[GoF23设计模式开篇引导]]></description><category></category></item><item><title><![CDATA[C#入门经典第七版读书笔记1（C#简介）]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/83114478</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/83114478</guid><author>moonfish0607</author><pubDate>Sun, 05 May 2019 15:08:39 +0800</pubDate><description><![CDATA[C#简介]]></description><category></category></item><item><title><![CDATA[微信小游戏抓包分析]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/88419278</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/88419278</guid><author>moonfish0607</author><pubDate>Tue, 12 Mar 2019 23:31:41 +0800</pubDate><description><![CDATA[有人说过

]]></description><category></category></item><item><title><![CDATA[算法学习笔记1（数组，动态数组，散列表）]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/79373173</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/79373173</guid><author>moonfish0607</author><pubDate>Tue, 17 Apr 2018 22:48:53 +0800</pubDate><description><![CDATA[众所周知，数据结构和算法对于一个开发人员是多么的重要，一个好的数据结构和算法，可以让你在实现同一个功能的时候，提升非常多的效率。笔者作为一个初入IT业的菜鸟，觉得也很有必要在这方面下一番功夫，所以特开此篇作为学习数据结构和算法的开篇，后面会继续记录分享我的学习经历。

因为笔者主要做java这块儿的，所以前期写的东西可能都是以java来进行描述的，不过数据结构和算法这种东西，其实跟语言的关联性不是...]]></description><category></category></item><item><title><![CDATA[《Java线程与并发编程实践》学习笔记3（初识线程同步）]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/79146954</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/79146954</guid><author>moonfish0607</author><pubDate>Tue, 06 Feb 2018 14:54:48 +0800</pubDate><description><![CDATA[在平常的开发当中，我们往往要使用到多线程编程的技术，当线程之间没有交互的时候，这种情况下程序将会变得比较简单。如果发生了交互，那么就必须考虑到多线程之间的安全问题，本篇来初步认识Java中如何使用同步的特性来保证线程的安全。





线程中存在的问题

java对线程的支持自然增强了其应用能力，但同时也增加了java的复杂性，使得我们在开发的过程中必须要更加小心，否则多线程的程序中很有可能会出现]]></description><category></category></item><item><title><![CDATA[《Java线程与并发编程实践》学习笔记2（启动线程，中断线程，等待线程，线程睡眠）]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/79135842</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/79135842</guid><author>moonfish0607</author><pubDate>Tue, 23 Jan 2018 09:29:03 +0800</pubDate><description><![CDATA[本篇要讲述的是线程中的启动线程（start），中断线程（interrupt），等待线程（join），以及线程睡眠（sleep）。下面将分别介绍这四种线程操作方式。





启动线程：

当我们创建好一个线程对象或者其子类对象后，我们可以通过调用Thread类中的start方法来启动与该对象所关联的线程，用一个最简单的例子来描述就是：



package com.newway.interrupu]]></description><category></category></item><item><title><![CDATA[《Java线程与并发编程实践》学习笔记1(Thread 和 Runnable)]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/78842860</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/78842860</guid><author>moonfish0607</author><pubDate>Wed, 20 Dec 2017 21:36:28 +0800</pubDate><description><![CDATA[本篇作为笔者对于《Java线程与并发编程实践》一书的学习笔记的开篇。



概述

首先，我们需要先了解什么是线程，再接着深入学习。 
  讲到线程又不得不谈到进程（Process），进程的定义是计算机中的程序关于某数据集合上的一次运行活动，是系统进行资源分配和调度的基本单位。乍一看下没接触过的朋友可能感觉有点儿云里雾里，简单点儿说进程就是一段程序的执行过程，甚至于你可以粗略的将进程看做你计算机中]]></description><category></category></item><item><title><![CDATA[Java IO笔记（FilterReader/FilterWriter）]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/78389899</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/78389899</guid><author>moonfish0607</author><pubDate>Mon, 30 Oct 2017 09:19:57 +0800</pubDate><description><![CDATA[本篇讲述的是java io包中的FilterReader/FilterWriter，它们同FilterInputStream/FilterOutputStream一样，是Reader和Writer的包装类，为Reader/Writer提供了更多的功能，下面先贴上源码，对其进行简单的分析。

FilterReader：

package java.io;

public abstract c]]></description><category></category></item><item><title><![CDATA[Java IO笔记（FileReader/FileWriter）]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/78365263</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/78365263</guid><author>moonfish0607</author><pubDate>Fri, 27 Oct 2017 15:16:30 +0800</pubDate><description><![CDATA[本篇讲述的java io包中的FileReader/FileWriter。它们的功能与前面讲过的FileInputStream/FileOutputStream基本类似，只是前者是基于字符流后者是基于字节流，它们都能从文件中读取或者写入数据，下面先贴上源码进行简单的分析。
FileReader：
package java.io;

public class FileReader extends]]></description><category></category></item><item><title><![CDATA[java IO笔记（StringReader/StringWriter）]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/78320363</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/78320363</guid><author>moonfish0607</author><pubDate>Mon, 23 Oct 2017 16:39:19 +0800</pubDate><description><![CDATA[本篇将要讲述的是java io包中的StringReader和StringWriter。这两个类都是Reader和Writer的装饰类，使它们拥有了对String类型数据进行操作的能力。下面还是先附上源码，然后对其进行简单的分析：StringReader：package java.io;
 
public class StringReader extends Reader {

    //内置了...]]></description><category></category></item><item><title><![CDATA[java IO笔记(PushbackInputStream)]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/78237363</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/78237363</guid><author>moonfish0607</author><pubDate>Sat, 14 Oct 2017 22:02:59 +0800</pubDate><description><![CDATA[本]]></description><category></category></item><item><title><![CDATA[java IO笔记（DataInputStream/DataOutputStream）]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/78209350</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/78209350</guid><author>moonfish0607</author><pubDate>Wed, 11 Oct 2017 22:32:45 +0800</pubDate><description><![CDATA[本篇讲述的是java io包中的DataInputStream和DataOutputStream。
下面还是先贴出源码进行简单的分析：
DataInputStream.java:
package java.io;

public class DataInputStream extends FilterInputStream implements DataInput {

    /**]]></description><category></category></item><item><title><![CDATA[java IO笔记(RandomAccessFile)]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/78198207</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/78198207</guid><author>moonfish0607</author><pubDate>Tue, 10 Oct 2017 22:06:25 +0800</pubDate><description><![CDATA[本篇讲述的内容是java io中的RandomAccessFile。
RandomAccessFile是java io体系中提供给我们的一种文件访问类，它自己同时包含了读写功能，当然它最大的特点是可以自由访问文件中的位置，无需从头开始访问，下面先贴上RandomAccessFile的源码，通过源码对其进行学习。

package java.io;

import java.nio.chann]]></description><category></category></item><item><title><![CDATA[Java IO笔记（BufferedReader/BufferedWriter）]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/78159257</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/78159257</guid><author>moonfish0607</author><pubDate>Wed, 04 Oct 2017 20:22:32 +0800</pubDate><description><![CDATA[本篇讲述的是java io包中的BufferedReader和BufferedWriter。从名字中可以看出它们分别是Reader和Writer的子类，它们的特点是在对流进行读写操作时，内置了缓存区，通过减少与磁盘之间IO操作的此处，从而提升了读写效率，下面我们来简要的看看它们的源码。
BufferedReader.java：package java.io;

import java.util.]]></description><category></category></item><item><title><![CDATA[java IO笔记（BufferedInputStream/BufferedOutputStream）]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/78111432</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/78111432</guid><author>moonfish0607</author><pubDate>Wed, 27 Sep 2017 12:07:54 +0800</pubDate><description><![CDATA[本篇讲述的是java io包中的BufferedInputStream类和BufferedOutputStream类。
下面我们通过源码分别对这两个类进行学习。
1.BufferedInputStream:

package java.io;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;

public cl]]></description><category></category></item><item><title><![CDATA[java IO笔记（FileterInputStream/FilterOutputStream）]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/78062120</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/78062120</guid><author>moonfish0607</author><pubDate>Fri, 22 Sep 2017 13:48:29 +0800</pubDate><description><![CDATA[本篇讲述的是java io包中的FilterInputStream和FilterOutputStreaem，老规矩，先附上两个类的源码。
FilterInputStream：package java.io;

public class FilterInputStream extends InputStream {
    /**
     * 内部声明了一个InputStream对象的句柄，用于]]></description><category></category></item><item><title><![CDATA[java IO笔记（FileInputStream/FileOutputStream）]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/78042196</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/78042196</guid><author>moonfish0607</author><pubDate>Wed, 20 Sep 2017 16:14:29 +0800</pubDate><description><![CDATA[本篇要学习的是java io包中的FileInputStream类和FileOoutputStream类。
文件是我们常见的数据源之一，所以java为我们封装好了支持文件读写的流工具，下面我们通过源码分别来学习这两个类。
FileInputStream.java：
package java.io;

import java.nio.channels.FileChannel;
import s]]></description><category></category></item><item><title><![CDATA[Java IO笔记（StreamTokenizer）]]></title><link>https://blog.youkuaiyun.com/moonfish0607/article/details/77976082</link><guid>https://blog.youkuaiyun.com/moonfish0607/article/details/77976082</guid><author>moonfish0607</author><pubDate>Thu, 14 Sep 2017 09:51:17 +0800</pubDate><description><![CDATA[本篇讲述的是java io包中的StreamTokenizer类。
StreamTokenize类可以将任何的输入流分割为一系列标记（token），可以每次读取一个标记，
StreamTokenizer.java:package java.io;

import java.util.Arrays;

public class StreamTokenizer {
    //内部声明了一个Rea]]></description><category></category></item></channel></rss>