<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[葉無聞]]></title><description><![CDATA[以后，一座城，一个人。]]></description><link>https://blog.youkuaiyun.com/HU_YEWEN</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; HU_YEWEN]]></copyright><item><title><![CDATA[docker 简易入门]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/141929148</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/141929148</guid><author>HU_YEWEN</author><pubDate>Thu, 05 Sep 2024 13:56:00 +0800</pubDate><description><![CDATA[是一种分层、轻量级并且高性能的文件系统，支持对文件系统的修改作为一次提交来一层层的叠加。但并不是所有的镜像都可以在镜像仓库中找到，另外我们也需要为我们自己的业务应用去构建镜像。镜像是一份用来创造容器的配置文件，而容器可以视作最小型的一个操作系统。: 镜像，可以理解为一个容器的模板配置，通过一个镜像可以启动多个容器。: 镜像仓库，存储大量镜像，可以从镜像仓库拉取和推送镜像。的yum镜像源，如果在国内，添加阿里云的镜像源。的镜像与容器就是分层存储，可用的存储引擎有。镜像与容器的关系，类似于代码与进程的关系。]]></description><category></category></item><item><title><![CDATA[努力让人记住的tsconfig.json配置介绍]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/141223477</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/141223477</guid><author>HU_YEWEN</author><pubDate>Thu, 15 Aug 2024 15:26:55 +0800</pubDate><description><![CDATA[如果一个目录下存在一个tsconfig.json文件，那么它意味着这个目录是Type Script项目的根目录。 tsconfig.json文件中指定了用来 编译这个项目的根文件和 编译选项]]></description><category></category></item><item><title><![CDATA[怎么理解docker中的写时复制？]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/141184266</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/141184266</guid><author>HU_YEWEN</author><pubDate>Wed, 14 Aug 2024 10:35:23 +0800</pubDate><description><![CDATA[写时复制技术通过延迟数据复制，优化了存储和内存的使用。共享数据：初始阶段，多个进程或层共享相同的数据。延迟复制：只有在数据被修改时，才会复制数据到新的位置。独立副本：修改后的数据仅在新的副本中进行，而原始数据保持不变。这种技术有效减少了不必要的数据复制，提高了效率，同时保留了数据的完整性和一致性。]]></description><category></category></item><item><title><![CDATA[怎么理解docker中的联合文件系统（Union File System）？]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/141184081</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/141184081</guid><author>HU_YEWEN</author><pubDate>Wed, 14 Aug 2024 10:32:32 +0800</pubDate><description><![CDATA[联合文件系统的“单一的目录结构”是指将多个层次结构合并，使它们看起来像是一个统一的文件系统。它保持了文件和目录的树级结构，并且根据优先级覆盖文件。这样用户在访问合并后的文件系统时，可以方便地看到和操作所有层中的文件和目录。]]></description><category></category></item><item><title><![CDATA[看懂express源码，这一篇就够了！]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/141165173</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/141165173</guid><author>HU_YEWEN</author><pubDate>Tue, 13 Aug 2024 15:32:23 +0800</pubDate><description><![CDATA[express是基于nodejs进一步扩展封装的服务端框架，提供了简洁的API、中间件支持、灵活的路由管理以及静态文件服务，具备强大的扩展性和庞大的生态系统，适用于各种规模的项目。]]></description><category></category></item><item><title><![CDATA[mac m1运行具有canvas模块时报所需arm64架构和系统x86_64”不匹配]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/131324243</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/131324243</guid><author>HU_YEWEN</author><pubDate>Wed, 21 Jun 2023 11:19:45 +0800</pubDate><description><![CDATA[确认您的计算机上是否安装了 CMake 工具。如果没有，请安装它。确保您的计算机上已经安装了 Cairo 和 Pango 库。这将强制 Node.js 使用 “x86_64” 架构编译 “canvas” 模块。确保您已经安装了模块 “canvas” 的所有依赖项。检查是否已成功更改 “canvas” 模块以支持 “x86_64” 架构。打开命令行终端，并进入 “canvas” 模块的目录。保存并关闭 binding.gyp 文件。]]></description><category></category></item><item><title><![CDATA[mac m1 安装brew问题]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/131324183</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/131324183</guid><author>HU_YEWEN</author><pubDate>Wed, 21 Jun 2023 11:17:39 +0800</pubDate><description><![CDATA[由于是安装在 M1 Mac 上，需要先安装 Rosetta。Rosetta 是一个跨架构的虚拟机，可以让 Intel 架构的应用程序在 Mac M1 上运行。如果你不知道 Mac M1 是否已经安装了 Rosetta，请打开终端并输入以下命令。，则表示已经在本机上运行 M1 版本的终端。否则需要在 Finder 中用 Cmd+I 获取终端应用的信息，在界面中选择“打开用 Rosetta 打开”并确认即可。如果输出结果中包含"Intel"，则表示你的 Mac M1 已经成功安装了 Rosetta。]]></description><category></category></item><item><title><![CDATA[mac M1安转node-canvas失败]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/131324073</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/131324073</guid><author>HU_YEWEN</author><pubDate>Wed, 21 Jun 2023 11:16:27 +0800</pubDate><description><![CDATA[兼容性问题 - node-canvas 与当前 Node.js /npm 版本不兼容。尝试使用较早或较新的 Node.js /npm 版本安装 node-canvas。缺少依赖项 - node-canvas 模块所需的依赖项可能没有安装或没有正确安装。如果你在使用其他操作系统，请根据操作系统和目标程序包管理器来安装对应的依赖库。当安装依赖项后，尝试重新安装 node-canvas。编译或安装问题 - 可能是由于编译或安装错误引起的。这个错误似乎是由于 node-canvas 模块编译安装过程中失败导致的。]]></description><category></category></item><item><title><![CDATA[说说Cordova实现拍视频和从相册选取视频功能过程中要踩的坑]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/120204814</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/120204814</guid><author>HU_YEWEN</author><pubDate>Thu, 09 Sep 2021 17:53:48 +0800</pubDate><description><![CDATA[这里不上代码，也不说实现细节，只说说这一路上踩的坑……



视频拍摄

我是用cordova-plugin-media-cature插件来做视频拍摄的，遇到一个问题就是拍完返回的时候界面卡住了，有时候还出现程序崩溃的情况，这问题找了很久，甚至觉得是插件和手机版本不兼容，毕竟插件最后一次更新是在三年前，后来在cordova-plugin-camera插件文档中找到了这个描述



原来是我在回调函数里加了个alert来查看返回情况，这做法有点low，一般来讲，打印到控制台的话一般不会出现这种问题的，但是既.]]></description><category></category></item><item><title><![CDATA[记一下Array中那巧妙的reduce方法]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/117288155</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/117288155</guid><author>HU_YEWEN</author><pubDate>Wed, 26 May 2021 13:08:41 +0800</pubDate><description><![CDATA[reduce这个看似平常的东西，实质上却是一个很有用的方法，很多人更多的是把它当作一个求和的工具，但其实它有更多的用法，具体要看我们怎么去把它的用法挖掘出来，接下来慢慢说一下。

reduce()是JavaScript Array数组的归并方法，与forEach、map、some、every等迭代方法一样都会对数组每一项进行遍历，但是reduce可以同时将前面数组项遍历产生的结果和当前元素进行运算，这一点是其它迭代方法做不到的，也因此使它拥有不一样的能力。

一、reduce 语法


arr.reduc.]]></description><category></category></item><item><title><![CDATA[详解Unicode和JavaScript字符编码]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/114276936</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/114276936</guid><author>HU_YEWEN</author><pubDate>Tue, 02 Mar 2021 10:10:43 +0800</pubDate><description><![CDATA[Unicode

Unicode，又称万国码、统一码和国际码，是由统一码联盟制定的一套规范统一的字符编码集，其设计意图是将世界上所有字符都包含在其中，它使用特定的十六进制编号来表示字符，每一个特定十六进制编号统称为码点，也叫码位，用“U+”紧接四位或五位十六进制数字来进行表示（例如U+597D表示中文“好”），在Unicode3.0中，也可用“U-”紧接八位十六进制数字表示。目前，Unicode整理并编码了世界上绝大部分的字符，并且已经普遍运用到各个编程语言，其中就包括了接下来要讲的JavaScript编码]]></description><category></category></item><item><title><![CDATA[扒去JS中Number那最后一层“衣服”]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/105070056</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/105070056</guid><author>HU_YEWEN</author><pubDate>Tue, 24 Mar 2020 13:39:48 +0800</pubDate><description><![CDATA[​JavaScript采用“IEEE 754 标准定义的双精度64位格式”表示Number数字。也就是说，js没有所谓的整数，所有数字实质上都是浮点数 . . . . . .



然后，完了。



呃 . . . . . . 我果然是一个失败的标题党，话还没说完，“衣服”就扒光了。



好吧，失败就失败，问题不大，这并不妨碍我们对Number进行探究。

我们说JS中的Number实...]]></description><category></category></item><item><title><![CDATA[Unicode详解（附UTF-8、UTF-16和UTF-32）]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/99663652</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/99663652</guid><author>HU_YEWEN</author><pubDate>Fri, 16 Aug 2019 14:26:44 +0800</pubDate><description><![CDATA[Unicode

在百度百科上，对Unicode的介绍是这样的：

“ Unicode（统一码、万国码、单一码）是计算机科学领域里的一项业界标准，包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的，它为每种语言中的每个字符设定了统一并且唯一的二进制编码，以满足跨语言、跨平台进行文本转换、处理的要求。”

Unicode源于一个很简单的想法：将全世界所有的字符包含在一...]]></description><category></category></item><item><title><![CDATA[ES6学习总结之let 和 const 命令]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/99590427</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/99590427</guid><author>HU_YEWEN</author><pubDate>Thu, 15 Aug 2019 16:23:54 +0800</pubDate><description><![CDATA[前言

在说let和const命令之前，我先讲述一下JavaScript中的变量声明命令var，在ES6之前，变量的声明几乎都是使用var命令，通过var声明的变量所在的作用域是全局作用域或者函数作用域，变量一旦被声明，在其所在作用域下的任何位置都能被访问而不会被报错，同时，var所声明的变量会被提升到作用域最前面，所以可以在声明之前对变量进行访问，只不过此时会返回undefined。而ES6新增...]]></description><category></category></item><item><title><![CDATA[css white-space属性总结]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/90638871</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/90638871</guid><author>HU_YEWEN</author><pubDate>Tue, 28 May 2019 15:04:36 +0800</pubDate><description><![CDATA[white-space 属性用于设置如何处理元素内的空白。它有几个可选值：normal，nowrap，pre，pre-wrap，pre-line,默认情况下，white-space的值是normal。
1、normal值

normal表示合并空格，即多个相邻空格合并成一个空格，并且在源码中的换行也当空格处理，只会根据文本所在容器的大小进行换行。

这里的空白是值空白字符，包括空格，制表符等空白字...]]></description><category></category></item><item><title><![CDATA[CSS3渐变属性]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/90604792</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/90604792</guid><author>HU_YEWEN</author><pubDate>Tue, 28 May 2019 10:53:10 +0800</pubDate><description><![CDATA[渐变可以使得元素背景更加有灵性并具有生气，虽然我们可以使用背景图片来呈现渐变效果，但却是不够灵活，当想要改变颜色时需要使用图片编辑器重新编辑，而渐变则可以在代码中直接改变颜色就可以了。CSS3提供了两种渐变方式，分别是线性渐变（linear-gradient）和径向渐变（radial-0gradien）。



一、线性渐变（linear-gradient）

线性渐变就是沿着某个方向进行颜色上...]]></description><category></category></item><item><title><![CDATA[js对象数组去除重复]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/90291833</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/90291833</guid><author>HU_YEWEN</author><pubDate>Fri, 17 May 2019 13:53:34 +0800</pubDate><description><![CDATA[一、使用数组方法reduce


var obj = {};
var aa = [{
    "name": "aa",
    "pwd": "xvxv"
}, {
    "name": "aa",
    "pwd": "xvxv"
}, {
    "name": "bb",
    "pwd": "xvxv"
}, {
    "name": "cc",
    "pwd": "xvxv...]]></description><category></category></item><item><title><![CDATA[IIFE（即时调用函数表达式）]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/89710182</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/89710182</guid><author>HU_YEWEN</author><pubDate>Tue, 30 Apr 2019 16:13:40 +0800</pubDate><description><![CDATA[我这菜鸟学习jQuery插件代码时，经常遇到如下面的代码：


;(function($, window, document, undefined) {
    //...
})(Jquery,window,document)

那么，这一段代码有什么作用呢？我也不知道，但看了以下这遍文章时，总算有个基本的了解

What (function (window, document, undefine...]]></description><category></category></item><item><title><![CDATA[理解JS同步、异步和事件循环]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/89514993</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/89514993</guid><author>HU_YEWEN</author><pubDate>Thu, 25 Apr 2019 15:19:15 +0800</pubDate><description><![CDATA[JS之所以存在同步和异步，都源于JS是一门单线程脚本语言，也就是说同一时间只能用来做一件事，至于为什么说是单线程，那是由js这门语言的用途特征所决定的，js用来页面与用户之间的交互，其中包括操作DOM，如果是多线程，这会造成很复杂的同步问题，例如在创建DOM节点的同时删除同一个DOM节点，那这时就出现了矛盾，JS引擎以哪个线程为主呢？所以单线程这个本质特征在目前甚至未来都基本不会改变。

一、主线...]]></description><category></category></item><item><title><![CDATA[详解DOM对象中clientWidth、offsetWidth等属性]]></title><link>https://blog.youkuaiyun.com/HU_YEWEN/article/details/89354192</link><guid>https://blog.youkuaiyun.com/HU_YEWEN/article/details/89354192</guid><author>HU_YEWEN</author><pubDate>Wed, 17 Apr 2019 16:28:09 +0800</pubDate><description><![CDATA[我们有时需要获得鼠标在某盒子中的位置，或者是随意移动某盒子的位置，在这些场景中我们可能经常需要用到clientWidth、offsetWidth、offsetTop啊等等。但是对于初学者来说（包括我），看到这些就头疼，因为感觉意思都相近，但作用却不同，所以今天天我就来捋一捋，搞清楚，后面好干活。好吧，废话不多说，开始吧。

先上一下示例代码，下面要用到。

HTML:       ...]]></description><category></category></item></channel></rss>