<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[More_Action的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/More_Action</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; More_Action]]></copyright><item><title><![CDATA[Angular10配置webpack打包 「详细教程」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112966680</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112966680</guid><author>More_Action</author><pubDate>Thu, 21 Jan 2021 16:52:32 +0800</pubDate><description><![CDATA[对于 Angular 项目，推荐使用 angular-cli 创建打包项目 Angular 会默认帮我们配置。 但是有特殊的需求时就显然不是很灵活，比如想分割一些较大的打包文件、分析每个打包文件组成，自定义webpack一些参数的时候就发现无从下手。 对许多项目的常见依赖项是日期库moment.js 。 这包括使用语言环境的功能，但是，它大大增加了整体捆绑软件的大小。这些都是需要我们优化的地方。
一、ngx-build-plus 建立额外配置
这里推荐一个工具库ngx-build-plus，不需要改很多东西]]></description><category></category></item><item><title><![CDATA[如何使用Pycharm编写项目 「使用教程」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112960815</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112960815</guid><author>More_Action</author><pubDate>Thu, 21 Jan 2021 16:04:39 +0800</pubDate><description><![CDATA[创建第一个PyCharm项目
环境准备：安装 Python
因为我们即将创建的是一个Python项目，所以Python是必须安装的。
创建新项目 step1： 双击打开 PyCharm，点击 Create New Project：
step2：选择 Pure Python，提供要创建项目的位置，我把这个项目放在了我电脑的这个路径下 /User/xuxh/PycharmProjects/ 并给这个项目起名为 demo：
上图左侧面板，列出了 PyCharm 支持的所有项目类型， 除了 Pure Python ]]></description><category></category></item><item><title><![CDATA[Python 无限级分类树状结构生成算法 「实用代码」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112955118</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112955118</guid><author>More_Action</author><pubDate>Thu, 21 Jan 2021 15:44:10 +0800</pubDate><description><![CDATA[无限级分类树状结构的应用场景很多，例如后端研发需要把用户相关权限读取出来并生成树状结构，前端研发拿到权限树之后可以按照结构展示用户有权限访问的栏目；再例如网页上的栏目分级：  作者在初次接触树状结构生成需求的时候，也是挠头，后来找到了一个代码少且清晰易懂的生成算法：递归。
首先，确保数据库中存储的类别信息如下：
[
    {"id": 1, "name": '电器', "parent": 0},
    {"id": 2, "name": '水果', "parent": 0},
    {"id": ..]]></description><category></category></item><item><title><![CDATA[nodejs作为中间层的实践「详细介绍」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112725689</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112725689</guid><author>More_Action</author><pubDate>Sat, 16 Jan 2021 22:07:55 +0800</pubDate><description><![CDATA[nodejs的出现为前端行业带来了无限的可能性,让很多原来只负责客户端开发的同学也慢慢开始接触和使用服务器端技术.
虽然nodejs带来了很多的好处,但是它也存在自身的局限性.和那些传统老牌的编程语言相比,如JAVA,PHP.nodejs并不能成为它们的替代品,而且在可预估的未来,也很难撼动那些老牌编程语言的地位.
目前nodejs主要有以下几个应用场景.

	前端工程化,比如rollup,webpack在工程化方向的探索
	nodejs中间层
	客户端集成nodejs,比如electron
	市面上一..]]></description><category></category></item><item><title><![CDATA[Containerd镜像lazy-pulling「详细解读 」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112725047</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112725047</guid><author>More_Action</author><pubDate>Sat, 16 Jan 2021 21:25:49 +0800</pubDate><description><![CDATA[一、背景
我们知道，容器运行起来的时间是非常快的，但是如果节点上容器的镜像不存在，那么在运行容器时要先拉取镜像，拉取镜像在容器启动的过程中占用的时间比较长，这个过程要将容器所有的镜像层都拉取到本地磁盘中。据统计，拉镜像操作要占用容器启动时间的76%。这在容器数量少的情况下问题不大，但容器数量比较多并且都是冷启动的时候会非常的慢。
如何解决容器冷启动过程中拉取镜像慢这个问题？有这样的一种解决思路：在容器启动过程中，容器要用的镜像通过高速网络按需从镜像仓库中读取，而不是将镜像所有的层都拉下来。Stargz-..]]></description><category></category></item><item><title><![CDATA[kafka入门介绍「详细教程」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112596287</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112596287</guid><author>More_Action</author><pubDate>Wed, 13 Jan 2021 22:33:06 +0800</pubDate><description><![CDATA[什么是 Kafka
Kafka 是一个分布式流式平台，它有三个关键能力

订阅发布记录流，它类似于企业中的消息队列 或 企业消息传递系统
以容错的方式存储记录流
实时记录流

Kafka 的应用

作为消息系统
作为存储系统
作为流处理器

Kafka 可以建立流数据管道，可靠性的在系统或应用之间获取数据。
建立流式应用传输和响应数据。
Kafka 作为消息系统
Kafka 作为消息系统，它有三个基本组件


Producer : 发布消息的客户端
Broker：一个从生产者接受并存储消息的客户端
Co..]]></description><category></category></item><item><title><![CDATA[2021-01-13]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112590784</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112590784</guid><author>More_Action</author><pubDate>Wed, 13 Jan 2021 21:02:17 +0800</pubDate><description><![CDATA[Linux命令这么多，该怎么从入门到精通？其实，这个事情非常的simple，这篇文章将会带你飞，文章非常的长，非常考验耐心。
&nbsp;&nbsp;&nbsp;&nbsp; 本文将由一个Linux命令概览开始，说明Linux命令的方方面面。如果你读完这部分还是一头雾水，那么就证明需要按照下面的小白教程去学习了，内容涵盖了：如何挑选Linux发行版、如何安装Linux系统，按照主题学习Linux系统的命令等。
1. Linux命令概览


这部分是给稍微有点Linux经验的同学准备的，如果你是初学者，请跳过]]></description><category></category></item><item><title><![CDATA[SpringBoot 2.x系列：Spring JDBC]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112577008</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112577008</guid><author>More_Action</author><pubDate>Wed, 13 Jan 2021 17:32:55 +0800</pubDate><description><![CDATA[JDBC介绍
从这篇文章开始，我们将会介绍SpringBoot另外一个核心的技术，即数据库访问技术，提到数据访问，学习Java的同学瞬间能就想起JDBC技术，JDBC 是 Java Database Connectivity 的全称,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口，提供了诸如查询和更新数据库中数据的一套标准的API，这套标准不同的数据库厂家之间共同准守，并提供各自的具体实现。如图所示： 
这样设计的好处，就是Java程序只需要和JDBC API交互，从而屏蔽了访问数据库..]]></description><category></category></item><item><title><![CDATA[python常用字符串函数「详细解答」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112345596</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112345596</guid><author>More_Action</author><pubDate>Fri, 08 Jan 2021 09:59:10 +0800</pubDate><description><![CDATA[1.数组
a = [1,2,3,5,6,7,8,9,0]
print(a)
#如何创建一个list
L1 = []
print(type(L1))
print(L1)
L2 = [1,2,0,3,0,5,6,7,8,9,0]
print(L2 )
#增
L2.append(11) #插入到最后的一个值
print(L2)
#添加到指定位置,insert(插到第几个，插入什么数据) 其他数据会向右移一个位置
#list中每个值，他们所在的位置叫做下标，这个id是从左到右从0开始
L2.insert(2,13)]]></description><category></category></item><item><title><![CDATA[一行 CSS 代码的魅力「心得分享」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112305002</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112305002</guid><author>More_Action</author><pubDate>Thu, 07 Jan 2021 11:00:09 +0800</pubDate><description><![CDATA[之前在知乎看到一个很有意思的讨论 一行代码可以做什么？那么，一行 CSS 代码又能不能搞点事情呢？
CSS Battle
首先，这让我想到了，年初的时候沉迷的一个网站 CSS Battle 。这个网站是核心玩法就是：
官方给出一张图形，在给定的 400 x 300 的画布上，能够用越短的代码实现它，分数就越高。
注意是，完全一模一样还原。
其中，第一题就非常有趣，看看题目：



嗯，想一想，如果给定这样一张图形，告诉你 HTML 的大小是 400px x 300px，图片中使用到的颜色是 #5D3A3..]]></description><category></category></item><item><title><![CDATA[纯CSS实现常见的UI效果「详细介绍」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112304655</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112304655</guid><author>More_Action</author><pubDate>Thu, 07 Jan 2021 10:51:16 +0800</pubDate><description><![CDATA[切图仔，是大多数前端用来自嘲的称呼。相信很多人平时写页面的时候，大部分时间是在切图和排图，如此往复。这里并不是要否定切图本身，而是在质疑：一直切图到底对自己的功力增长有何好处？想想UI丢给你一套好看的界面，你却只需一个img标签，或者一个background-image属性即可搞定了它，但日后某个地方需要调整某些外观（颜色、文字等），你还不是会让UI再修改之前的素材，然后替换上去完事？这样就完全受制于UI，而无法发挥自己的能动性。
那么，如何打破这个僵局？很简单，如果你CSS玩的够溜，你就无需再进行那枯..]]></description><category></category></item><item><title><![CDATA[Vue前端HTML保存为PDF的两种常用方式 「干货分享」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112259654</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112259654</guid><author>More_Action</author><pubDate>Wed, 06 Jan 2021 10:44:10 +0800</pubDate><description><![CDATA[Vue前端HTML保存为PDF常用方式有两种。

	使用html2Canvas和JsPDF库，转化为图片后保存PDF。
	调用浏览器window.print()，然后手动保存为PDF。

第一种
优点

	没有预览点击即可保存
	不需要手动配置保存
	可选取部分Dom保存

缺点

	较不清晰
	需要先转化为图片
	没有提前预览
	不适合保存过长分页内容
	依赖html2Canvas和JsPDF库

第二种
优点

	可以提前预览
	适合保存过长分页内容比较合适
	直接由浏览器API保存，内容清晰
	开..]]></description><category></category></item><item><title><![CDATA[92道JavaScript面试题附加回答「干货分享」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112259270</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112259270</guid><author>More_Action</author><pubDate>Wed, 06 Jan 2021 10:30:12 +0800</pubDate><description><![CDATA[1. JavaScript垃圾回收机制的了解
对于在JavaScript中的字符串，对象，数组是没有固定大小的，只有当对他们进行动态分配存储时，解释器就会分配内存来存储这些数据，当JavaScript的解释器消耗完系统中所有可用的内存时，就会造成系统崩溃。

内存泄漏，在某些情况下，不再使用到的变量所占用内存没有及时释放，导致程序运行中，内存越占越大，极端情况下可以导致系统崩溃，服务器宕机。

so，JavaScript有自己的一套垃圾回收机制，JavaScript的解释器可以检测到什么时候程序不再使用..]]></description><category></category></item><item><title><![CDATA[两种 CSS 方法论 「详细分析」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112258735</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112258735</guid><author>More_Action</author><pubDate>Wed, 06 Jan 2021 10:12:10 +0800</pubDate><description><![CDATA[说起 CSS 命名规范，大家应该都很熟悉，或者应该听说过 BEM 。BEM 是由 Yandex 团队提出的一种 CSS Class 命名方法，旨在帮助开发人员创建更好的且结构一致的 CSS 模块。


BEM 将页面的类名分为块（Block）、元素（Element）、修饰符（Modifier）。

	块（Block）：一个块是视觉上或者语义上的一个整体，它是一个具体且唯一的一个元素，例如，页面上的一个弹窗，或者是一个搜索框；
	元素（Element）：一般认为是块的组成部分，元素比较用它父级的块名称做为前缀]]></description><category></category></item><item><title><![CDATA[在 vue3 中轻松实现 switch 功能组件 「简单易懂」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112258099</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112258099</guid><author>More_Action</author><pubDate>Wed, 06 Jan 2021 09:41:18 +0800</pubDate><description><![CDATA[编程语言里面，除了使用 if 语句来做条件判断，还有另外一个常用的就是 switch 了。
而在 vue 中，官方已经帮助我们实现了 v-if 这个指令，但是还没有 switch ，那我们能不能自己实现一个呢？
这篇文章就是来探索这个问题，并且最终实现一个 Switch 组件
以终为始
先来看看我们希望用户是如何使用 Switch 的

用 js 的方式来对比一下：

用户可以通过一个 VSwitch 组件来应用 switch 功能
通过 case 来确定匹配的条件
然后每一个 case 匹配的条件用 ..]]></description><category></category></item><item><title><![CDATA[你必须知道的webpack插件原理分析 「详细介绍」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112257740</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112257740</guid><author>More_Action</author><pubDate>Wed, 06 Jan 2021 09:26:39 +0800</pubDate><description><![CDATA[在 webpack 中，专注于处理 webpack 在编译过程中的某个特定的任务的功能模块，可以称为插件。它和 loader 有以下区别：

	
	loader 是一个转换器，将 A 文件进行编译成 B 文件，比如：将 A.less 转换为 A.css，单纯的文件转换过程。webpack 自身只支持 js 和 json 这两种格式的文件，对于其他文件需要通过 loader 将其转换为 commonJS 规范的文件后，webpack 才能解析到。
	
	
	plugin 是一个扩展器，它丰富了 webpa..]]></description><category></category></item><item><title><![CDATA[万恶的前端内存泄漏及万善的解决方案「详解」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112257323</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112257323</guid><author>More_Action</author><pubDate>Wed, 06 Jan 2021 09:15:12 +0800</pubDate><description><![CDATA[最近收到测试人员的反馈说我们开发的页面偶现卡死，点击无反应的情况，特别是打开页面较久的时候发生概率较高。打开任务管理器，看到内存占有率已经很高了，初步判断可能存在内存泄漏的情况。下面排查内存泄漏的原因。
系统进程不再用到的内存，没有及时释放，就叫做内存泄漏（memory leak）。当内存占用越来越高，轻则影响系统性能，重则导致进程崩溃。Chrome 限制了浏览器所能使用的内存极限（64 位为 1.4GB，32 位为 1.0GB）
引起内存泄漏的原因
1、意外的全局变量
由于 js 对未声明变量的处理方..]]></description><category></category></item><item><title><![CDATA[2021-01-05]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112252510</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112252510</guid><author>More_Action</author><pubDate>Tue, 05 Jan 2021 22:12:09 +0800</pubDate><description><![CDATA[Nginx是一个高性能、轻量级的Web和反向代理服务器, 其特点是占有内存及资源少、抗并发能力强。
Nginx安装简单、配置简洁、启动快速便捷、支持热部署、支持 SSL、拥有高度模块化的设计。
Nginx的主要功能有:

	Web服务器
	反向代理
	负载均衡

1. 什么是Nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。
Nginx以事件驱动的方式编写，所以有非常好的性能，同时也是一个非常高效的反向代理、负载平衡服务器。在性能上，Nginx占用很少的系统资源..]]></description><category></category></item><item><title><![CDATA[如何用Vue开发Electron桌面程序? 「干货分享」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112215762</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112215762</guid><author>More_Action</author><pubDate>Tue, 05 Jan 2021 10:32:36 +0800</pubDate><description><![CDATA[一、Electron介绍
Electron 是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目. 使用 JavaScript，HTML 和 CSS 构建跨平台的桌面应用程序
1. 特点

	
	跨平台 可以打包成Mac、Windows 和 Linux三个平台的应用程序
	
	
	简化桌面端开发 （1）Electron 基于 Chromium 和 Node.js,可以使用 HTML, CSS 和 JavaScript 构建应用 （2）提供Electron api 和 NodeJS api..]]></description><category></category></item><item><title><![CDATA[从源码层面理解ArrayList 扩容策略「详解」]]></title><link>https://blog.youkuaiyun.com/More_Action/article/details/112214084</link><guid>https://blog.youkuaiyun.com/More_Action/article/details/112214084</guid><author>More_Action</author><pubDate>Tue, 05 Jan 2021 10:08:34 +0800</pubDate><description><![CDATA[ArrayList 在我们日常开发中用到的非常多，我们知道 ArrayList 内部是通过 Object 数组实现的，而数组的长度一经定义，就无法更改了。
那么问题就来了，ArrayList 是如何实现扩容的呢？
我们先来看看 ArrayList 类中有哪些成员变量。
ArrayList 的成员变量
/**
 * Default initial capacity.
 * 默认的初始容量10。
 */
private static final int DEFAULT_CAPACITY = 10;

/**..]]></description><category></category></item></channel></rss>