<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Inuyasha__的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Inuyasha__</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Inuyasha__]]></copyright><item><title><![CDATA[nodejs First Follow Select集合 算法分析和代码]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/116032061</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/116032061</guid><author>Inuyasha__</author><pubDate>Thu, 22 Apr 2021 21:00:55 +0800</pubDate><description><![CDATA[LL1
前言
LL1是编译原理自上至下分析方法的一种，是其他分析方法的基础。本篇文章将通过一个例子附带代码讲述整个过程。读者一定要喜欢哦。
文法数据结构
const grammar = {
  S: [["M", "H"], ["a"]],
  H: [["L", "S", "o"], [EMPTY]],
  K: [["d", "M", "L"], [EMPTY]],
  L: [["e", "H", "f"]],
  M: [["K"], ["b", "L", "M"]],
};

上述的数据结构表示的]]></description><category></category></item><item><title><![CDATA[一篇文章图文并茂地带你粗略了解 devServer proxy 原理]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/113830592</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/113830592</guid><author>Inuyasha__</author><pubDate>Wed, 17 Feb 2021 01:36:57 +0800</pubDate><description><![CDATA[devServer proxy 原理
前言
笔者在网络上查询 devServer 原理的时候，竟然网上没有一篇这样的文章，笔者斗胆用自己的知识阐述一下 devServer 是如何实现跨域的（注意，本篇文章并非完整实现proxy，亦或是实现devserver 的各个功能，仅仅是对 devServer proxy 部分做个粗略的原理解读。
在阅读本文之前，希望你有基础的 node.js 知识以及 js 知识。
同源政策
浏览器有同源政策，对不同域（即协议，主机，端口任何一个不同的 URL）的 http 请求进行]]></description><category></category></item><item><title><![CDATA[一篇文章图文并茂地带你轻松学会 HTML5 ajax2.0]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/113804148</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/113804148</guid><author>Inuyasha__</author><pubDate>Sat, 13 Feb 2021 22:12:53 +0800</pubDate><description><![CDATA[JavaScript ajax2.0
当你再网络上查询 ajax2.0的时候，会发现几乎查不到什么东西 ，因为其实他和 XMLHttpRequest Level 2 应该是同义的意思。大家似乎都倾向于查询后者。
在谈到 ajax2.0 之前，不妨先看一下 ajax1.0 有什么缺陷，导致了 2.0 的诞生。
ajax 1.0

无法支持文件的上传和读取
没有进度反馈信息
无法跨域请求数据

而新的 ajax2.0 解决了这些问题，并且带来的新的特性
ajax2.0
假设我们已经创建了一个 xhr 对象
co]]></description><category></category></item><item><title><![CDATA[一篇文章图文并茂地带你轻松学会 HTML5 storage]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/113798491</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/113798491</guid><author>Inuyasha__</author><pubDate>Sat, 13 Feb 2021 00:35:21 +0800</pubDate><description><![CDATA[html5 storage api
localStorage 和 sessionStorage 是 html5 新增的用来存储数据的对象，他们让我们可以以键值对的形式存储信息。
为什么要有 storage ?
我们已经有了 session 可以帮助我们存储信息，为何还需要 storage 呢？

各个浏览器的 cookie 长度大概只能在 4kb 左右，而 storage 大概能达到 5M，这意味着可以存储更多的信息
cookie 可以被后端更改，在每次进行网络请求的时候都会被发送给服务器，而 storag]]></description><category></category></item><item><title><![CDATA[一篇文章图文并茂地带你轻松实践 HTML5 history api]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/113794881</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/113794881</guid><author>Inuyasha__</author><pubDate>Fri, 12 Feb 2021 14:52:06 +0800</pubDate><description><![CDATA[HTML5  history api
前言
由于笔者在网络上没有找到比较好的关于 history api 的实践案例，有的案例过于杂乱，没有重点，有些案例只是告诉读者 api 是什么，却没告诉怎么用，本文章从零开始带读者实践 history api ，建议和笔者一起写一遍。
效果
注意 url 变化，另外用到了 虎裤里 和 狼大的图，侵权马上删。

流程


html 部分
需要引入 jquery


&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
  &lt;he]]></description><category></category></item><item><title><![CDATA[一篇文章图文并茂地带你学习 JavaScript 模块]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/113786425</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/113786425</guid><author>Inuyasha__</author><pubDate>Wed, 10 Feb 2021 22:19:18 +0800</pubDate><description><![CDATA[JavaScript 模块
一个模块仅仅就是一个文件。模块之间可以通过一些特殊的库等来引用或导出。
为何要模块化？
由于大部分的代码是关于修改变量的，如何组织变量会影响编码的质量，以及维护他们的成本。
如果只有少数变量，完全可以通过函数作用域解决。但是这也让我们很难在各个函数之间共享变量。
例如在曾经的 jQuery 时代，在加载任何 jQuery 插件之前，我们必须先保证引入了 jQuery，这个时候所有的 &lt;script&gt; 标签必须以正确的顺序排列，否则将会抛出错误。
当依赖越来越多的时候，]]></description><category></category></item><item><title><![CDATA[一篇文章图文并茂地带你了解 JavaScript 严格模式]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/113777883</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/113777883</guid><author>Inuyasha__</author><pubDate>Wed, 10 Feb 2021 00:39:21 +0800</pubDate><description><![CDATA[JavaScript 严格模式 use strict
前言
在很长的一段时间内，JavaScript 是兼容性发展的。这意味着新的语言特性并不会影响原有的代码。但是也带来了一些缺点，一些 JavaScript 的设计者做出的不太好的决定或失误被永远的加入了JavaScript。
这种情况直到 ES5 的出现得到了改变。我们可以在代码的首部添加特殊的指令 use strict 来使某些不良的 JavaScript 特性得到改善。
本文对于读者来说是补充知识的文章，由于现在许多前端学习者包括笔者是从 ES6 语]]></description><category></category></item><item><title><![CDATA[一篇文章图文并茂地带你轻松学完 JavaScript 闭包]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/113758507</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/113758507</guid><author>Inuyasha__</author><pubDate>Mon, 08 Feb 2021 16:08:33 +0800</pubDate><description><![CDATA[JavaScript 闭包
为了更好地理解 JavaScript 闭包，笔者将先从 JavaScript 执行上下文以及 JavaScript 作用域开始写起，如果读者对这方面已经了解了，可以直接跳过。
1. 执行上下文
简单来说，JavaScript 有三种代码运行环境，分别是:

Global Code 是 JavaScript 代码开始运行的默认环境
Function Code 是 JavaScript 函数运行的环境
Eval Code 是 利用 eval 函数执行的代码环境

执行上下文可以理解为]]></description><category></category></item><item><title><![CDATA[一篇文章图文并茂地带你轻松学完 JavaScript 设计模式(二)]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/113744027</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/113744027</guid><author>Inuyasha__</author><pubDate>Sun, 07 Feb 2021 17:08:38 +0800</pubDate><description><![CDATA[JavaScript 设计模式(二)
本篇文章是 JavaScript 设计模式的第二篇文章，如果没有看过我上篇文章的读者，可以先看完 上篇文章 后再看这篇文章，当然两篇文章并没有过多的依赖性。
5. 代理模式
代理模式提供了对目标对象的另一种访问机制。
在 vue3 还没出来之前，我猜过可能会使用 proxy 取代 defineProperty ，结果也被验证了，毕竟 proxy 比 defineProperty 支持更多的拦截机制，可以对数组的方法进行拦截。
const obj = {};

const]]></description><category></category></item><item><title><![CDATA[一篇文章图文并茂地带你轻松学完 JavaScript 设计模式(一)]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/113743715</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/113743715</guid><author>Inuyasha__</author><pubDate>Sun, 07 Feb 2021 17:00:58 +0800</pubDate><description><![CDATA[JavaScript 设计模式(一)
本文需要读者至少拥有基础的 ES6 知识，包括 Proxy, Reflect 以及 Generator 函数等。
至于这次为什么分了两篇文章，有损传统以及标题的正确性，是这样的。
其实放在一篇文章里也可以，但是希望读者能够更加轻松点，文章太长也会导致陷入阅读疲倦中。
因此希望读者理解。
1. 工厂模式
JavaScript 寄生模式就是一种 工厂模式，具体可以参考我的关于 JavaScript 继承 这篇文章，这里不再细谈寄生模式。
工厂模式是用工厂方法代替 new 的]]></description><category></category></item><item><title><![CDATA[一篇文章图文并茂地带你轻松学完 JavaScript 事件循环机制(event loop)]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/113665162</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/113665162</guid><author>Inuyasha__</author><pubDate>Thu, 04 Feb 2021 21:47:42 +0800</pubDate><description><![CDATA[JavaScript 事件循环机制 (event loop)
本篇文章已经默认你有了基础的 ES6 和 javascript语法 知识。
本篇文章比较细致，如果已经对同步异步，单线程等概念比较熟悉的读者可以直接阅读执行栈后面的内容了解 event loop 原理
在了解 JavaScript 事件循环机制之前，得先了解同步与异步的概念
同步与异步

同步（Sync

const cal = () =&gt; {
    for (let i = 0; i &lt; 1e8; i++) {
        /]]></description><category></category></item><item><title><![CDATA[一篇文章图文并茂地带你轻松学完 JavaScript 继承]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/113642742</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/113642742</guid><author>Inuyasha__</author><pubDate>Thu, 04 Feb 2021 13:59:58 +0800</pubDate><description><![CDATA[JavaScript 继承
在阅读本文章之前，已经默认你了解了基础的 JavaScript 语法知识，基础的 ES6 语法知识 。
继承种类
简单的继承种类可以分为

构造函数继承
原型链继承
class继承
寄生继承

其中 class 继承是 ES6 后提供的一种语法糖，方便其他面向对象语言的程序员更好的接受 JavaScript 中的继承，本质上还是原型链继承。
1. 构造函数继承
function Person() {
    this.name = "name";
    this.eat = f]]></description><category></category></item><item><title><![CDATA[一篇文章图文并茂地带你轻松学完 JavaScript 原型和原型链]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/113621872</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/113621872</guid><author>Inuyasha__</author><pubDate>Wed, 03 Feb 2021 23:25:07 +0800</pubDate><description><![CDATA[JavaScript 原型和原型链
在阅读本文章之前，已经默认你了解了基础的 JavaScript 语法知识，基础的 ES6 语法知识 。
本篇文章旨在为 JavaScript继承 打下基础
原型

在 JavaScript 里任何一个函数都有一个 prototype 属性，这个属性称之为原型

function Person() {
    this.name = "name";
}
console.log(Person.prototype)

而 Person.prototype 实际上是一个包含 co]]></description><category></category></item><item><title><![CDATA[C# 数据库]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/112191676</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/112191676</guid><author>Inuyasha__</author><pubDate>Mon, 04 Jan 2021 18:07:47 +0800</pubDate><description><![CDATA[数据库
ADO.NET
主要特点

使用数据命令执行数据库交互
使用数据集缓存数据
数据保持为XML
通过架构定义数据结构

模型结构

Connection

表示个与数据源的物理连接

DataAdapter

Connection与DataSet的桥梁，管理四个Command对象来处理后端数据集和数据源的通信

Command

SQL命令的载体

DataReader

从数据源中或许仅向前的只读的数据流

DataSet

数据集中的数据可能来自多个数据源，支持外键和唯一约束
连接对象的创建
st]]></description><category></category></item><item><title><![CDATA[C# 多线程]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/112191645</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/112191645</guid><author>Inuyasha__</author><pubDate>Mon, 04 Jan 2021 18:07:15 +0800</pubDate><description><![CDATA[多线程
线程的建立与启动
void fun() {
    // .. 执行耗时操作
}
var start = new ThreadStart(fun); // 创建线程入口
var thread = new Thread(start); // 创建线程
thread.Start();

线程的常用方法




方法
作用




Start
启动线程，分配给线程除了CPU之外的所有系统资源，并执行各种安全检查。调用后线程处于Unstarted状态


Join
当前线程阻塞直到调用这个方法的线程执行完毕]]></description><category></category></item><item><title><![CDATA[C# 流]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/112191601</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/112191601</guid><author>Inuyasha__</author><pubDate>Mon, 04 Jan 2021 18:06:45 +0800</pubDate><description><![CDATA[流
文件流
FileStream 构造方法
public FileStream(string path, FileMode mode);
public FileStream(string path, FileMode mode, FileAccess access);

// path =&gt; 文件的路径
/* mode =&gt; {
	Open,
	OpenOrCreate
}
*/
/* access =&gt; {
	Read,
	Write,
	ReadWrite
}
*/

fs.Seek(]]></description><category></category></item><item><title><![CDATA[C# 类和对象]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/112191539</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/112191539</guid><author>Inuyasha__</author><pubDate>Mon, 04 Jan 2021 18:05:34 +0800</pubDate><description><![CDATA[类和对象
基本类
修饰符
对于类或者方法，下列修饰符访问性通用




访问修饰符
同 类
同程序集子类
同程序集 非子类
不同程序集子类
不同程序集非子类




public
√
√
√
√
√


internal
√
√
√




protected
√
√

√



private
√






protected  internal
√
√
√
√



观察可得，protected只能用于子类继承，internal用于同程序集继承，public都可以继承，private都不能继承
构造函]]></description><category></category></item><item><title><![CDATA[C# 基本语法]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/112191511</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/112191511</guid><author>Inuyasha__</author><pubDate>Mon, 04 Jan 2021 18:05:01 +0800</pubDate><description><![CDATA[基本语法
数组
一维数组
int[] a = new int[3];
for (int i = 0; i &lt; a.Length; i++) {
    a[i] = i + 1;
}

/**
需要注意 a.Length 属性值为大写
*/

规则二维数组
int [,] b = new int[3, 4];
for(int i = 0; i &lt; b.GetLength(0); i++) {
    for(int j = 0; j &lt; b.GetLength(1); j++) {
   ]]></description><category></category></item><item><title><![CDATA[C#概述]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/112191482</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/112191482</guid><author>Inuyasha__</author><pubDate>Mon, 04 Jan 2021 18:04:22 +0800</pubDate><description><![CDATA[概述
CLR概念和功能

CLR是一套完整的，高级的虚拟机，用来支持不同的编程语言，并支持它们之间互相操作
可以管理内存，易于设计组件和应用程序，可以跨语言互动
JIT编译器，一次编译，就可以运行在任何支持运行库的任何CPU和操作系统上

C#优势和特点

类型安全，简单，是衍生出来的面向对象的编程语言
具备高生产率和C++的行动力
适合于Windows平台

C#开发应用程序的步骤

编写代码
代码编译为 MSIL， 存储在装配件中
JIT编译器将MSIL编译为本机代码
在托管的CLR环境下运行本机代码
]]></description><category></category></item><item><title><![CDATA[DOM接口技术]]></title><link>https://blog.youkuaiyun.com/Inuyasha__/article/details/111940015</link><guid>https://blog.youkuaiyun.com/Inuyasha__/article/details/111940015</guid><author>Inuyasha__</author><pubDate>Wed, 30 Dec 2020 00:28:45 +0800</pubDate><description><![CDATA[DOM接口技术
DOM概述
DOM是什么

Document Object Model 文档对象模型
DOM是一个与平台无关，语言无关的应用程序接口
DOM是W3C组织定义并公布的一个规范

DOM作用

提供一个统一的XML数据接口
应用DOM，可以动态创建文档，遍历文档，添加修改删除文档中的内容
DOM接口规范提供了一种编写XML代码的方法

DOM的结构


DOM把文档表示为节点（Node）对象树


节点对象表示文档中XML元素，也代表文档内其他所有内容（比如文本
根元素,处理指令,注释文档类型,]]></description><category></category></item></channel></rss>