<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[成长之路]]></title><description><![CDATA[乐于分享、共同学习，筑梦前行......]]></description><link>https://blog.youkuaiyun.com/xfwdxt</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xfwdxt]]></copyright><item><title><![CDATA[手写JS的new操作符的功能、手写实现JS中Object类的call函数、apply函数的功能]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/134266090</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/134266090</guid><author>xfwdxt</author><pubDate>Tue, 07 Nov 2023 14:16:25 +0800</pubDate><description><![CDATA[手写JS的new操作符的功能、手写实现JS中Object类的call函数、apply函数的功能。]]></description><category></category></item><item><title><![CDATA[Vite构建的Vue3项目打包后dist文件夹放Nginx服务器访问添加上下文路径]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/131658964</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/131658964</guid><author>xfwdxt</author><pubDate>Tue, 11 Jul 2023 14:31:35 +0800</pubDate><description><![CDATA[Vue3项目打包后如何添加访问路径，vite.config.ts、Nginx如何配置]]></description><category></category></item><item><title><![CDATA[Angular高版本中为自定义的独立class类添加显式的Angular装饰器]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/127969837</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/127969837</guid><author>xfwdxt</author><pubDate>Mon, 21 Nov 2022 18:18:59 +0800</pubDate><description><![CDATA[【代码】Angular高版本中为自定义的独立class类添加显式的Angular装饰器。]]></description><category></category></item><item><title><![CDATA[深入理解Angular模块化概念]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/126017727</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/126017727</guid><author>xfwdxt</author><pubDate>Wed, 27 Jul 2022 16:34:27 +0800</pubDate><description><![CDATA[组件模板中使用的其它组件（表单组件/路由组件/公共组件/指令/管道等）必须在module中导入其依赖，只在根模块app.module.ts中导入无效（服务除外。BroswerModule，由于浏览器模块只在项目启动时运行一次，所以只需要在根组件模块中导入即可。，即模块化开发（组件/指令/服务/管道/路由），与js模块化是不同的概念，但具有异曲同工之妙；，如果当前组件需要被其它地方使用，那么还需要同时进行导出，在export数组中配置一下）；的，不能直接互相通信，通过服务和路由来进行通信。...]]></description><category></category></item><item><title><![CDATA[javascript递归遍历文件夹下面的所有文件并返回所有文件全路径名称数组以及解析JavaScript方法体字符串的结束位置]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/122369651</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/122369651</guid><author>xfwdxt</author><pubDate>Fri, 07 Jan 2022 18:09:08 +0800</pubDate><description><![CDATA[前端脚本经常需要用到遍历指定文件夹下面的所有文件（包含子文件夹）的内容并做特定的逻辑处理，下面给出同步遍历的方式，开箱即用。
main()

function main() {
    let allFiles = getAllFiles(srcDir);
    console.log(`文件数量:${allFiles.length}`);
    for (let i = 0; i &lt; allFiles.length; i++) {
        let filePath = allFiles[]]></description><category></category></item><item><title><![CDATA[Linux系统查看开放的端口、开启指定端口、关闭指定端口和查看及删除定时任务]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/114690222</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/114690222</guid><author>xfwdxt</author><pubDate>Fri, 12 Mar 2021 11:32:51 +0800</pubDate><description><![CDATA[Linux系统管理端口的操作命令

以下操作在需要开启防火墙，防火墙的开启(重启)、关闭和查看防火墙的状态见末尾

1.查看所有已经对外开放的端口：firewall-cmd --list-ports

2.开启指定的端口：firewall-cmd --zone=public --add-port=8080/tcp --permanent

3.关闭指定的端口：firewall-cmd --zone=public --remove-port=8080/tcp --permanent

4.重启防火墙才能生效：]]></description><category></category></item><item><title><![CDATA[Idea自带的工具打jar包和Maven打Jar包（SpringBoot工程）]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/114673021</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/114673021</guid><author>xfwdxt</author><pubDate>Thu, 11 Mar 2021 17:22:00 +0800</pubDate><description><![CDATA[1.Idea自带的工具打jar包

（1）点击菜单栏的File后选中Project Structure，接着按如下图所示操作：







（2）点击“OK”按钮后会出现下图的界面，然后继续点击“OK”按钮



（3）现在开始打jar包，选中要打包的module按如下图所示操作：

  

（4）打完之后会发现第2步中的Output Directory中指定的位置会出现xxx.jar包





2.Maven打Jar包（推荐）

pom.xml文件的配置示例：

要点：

（1）指定打包方...]]></description><category></category></item><item><title><![CDATA[Vim编辑器最常用的快捷键]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/114641624</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/114641624</guid><author>xfwdxt</author><pubDate>Wed, 10 Mar 2021 17:44:37 +0800</pubDate><description><![CDATA[Vim编辑器常用快捷键
光标移动到行首、行尾：					数字0/$
光标移动到第一行、最后一行：			大写H/L  快速移动到第一行也可以用gg
光标移动到第几行、从当前位置跳跃几行：	数字+大写G   数字+回车

向上搜索：/字符
向下搜索：?字符

删除光标所在的字符（往后删）、删除光标前面的一个字符（往前删）：x/X
删除当前行：		 		dd
删除光标所在字符到该行末尾：d$

当前行前面插入空行：		大写字母O（并进入insert模式）
复制当前行，复制当前行及下面的总共n行：yy   nyy.]]></description><category></category></item><item><title><![CDATA[Oracle和MySQL多表条件分页查询的高效SQL语句、MySQL分页查询总数total的获取]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/113246039</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/113246039</guid><author>xfwdxt</author><pubDate>Wed, 27 Jan 2021 13:54:00 +0800</pubDate><description><![CDATA[Oracle数据库分页查询：

利用rownum和between and关键字


-- 查询员工表和薪水表的分页sql（pageNo：页号从1开始，pageSize：每页大小）
select
	* 
from(
	select
		ROWNUM rNo,
		user_id,
		user_name,
		user_dept,
		user_salary 
	from(
		select
			info.user_name,
			salary.* 
		from
			zdy_userinfo inf.]]></description><category></category></item><item><title><![CDATA[div内容居中和布局居中样式总结]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/111468888</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/111468888</guid><author>xfwdxt</author><pubDate>Mon, 21 Dec 2020 11:24:34 +0800</pubDate><description><![CDATA[1.div的内容居中

（1）水平居中


&lt;div align="center"&gt;&lt;button&gt;按钮&gt;&lt;/button&gt;&lt;/div&gt;

CSS：


div{
    display: block;  // div默认为块级元素，如果是第三方控件或继承父类元素不是block，则需要指定（必要时提高优先级）
    text-align: center;
}

（2）垂直居中

设置line-height等于height即可（当line-height为]]></description><category></category></item><item><title><![CDATA[Mac安装mysql8.x最简洁的步骤，避免采坑]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/109337066</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/109337066</guid><author>xfwdxt</author><pubDate>Wed, 28 Oct 2020 17:20:11 +0800</pubDate><description><![CDATA[1.下载mysql8的.dmg安装包（官网下载需要Oracle账号，推荐网上搜索一个8系列的版本即可）

2.双击.dmg安装包，不断点击下一步。但是需要注意以下两点：

（1）密码认证方式都选第二个（不是默认的，即传统的认证方式）；

（2）输入root用户的密码（一定要记下来，忘记了可以重置但是比较麻烦，推荐通过系统设置点击mysql服务后再uninstall重装）

3.打开系统设置-点击mysql服务logo-点击Stop Mysql Server；



4.配置环境变量到~/.bash_prof]]></description><category></category></item><item><title><![CDATA[Thymeleaf模板引擎处理日期输入框回显问题type=“date“类型的坑 和 单选按钮、复选框的回显]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/107314070</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/107314070</guid><author>xfwdxt</author><pubDate>Mon, 13 Jul 2020 11:58:15 +0800</pubDate><description><![CDATA[type="date"类型的日期输入框的默认格式为"yyyy/MM/dd"，但是如果试用Thymeleaf模板日期格式化工具类的时候使用"yyyy/MM/dd"就无法回显数据，必需使用类似于"yyyy-MM-dd"这种格式才能回显。


&lt;input th:value="${#dates.format(emp.birth, 'yyyy-MM-dd')}" type="date"
                               class="form-control"
          ]]></description><category></category></item><item><title><![CDATA[Idea Spring Boot配置文件.yaml或.properties不能自动提示的有效解决办法]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/107163389</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/107163389</guid><author>xfwdxt</author><pubDate>Mon, 06 Jul 2020 17:52:43 +0800</pubDate><description><![CDATA[SpringBoot项目的配置文件.yaml/.yml/.properties文件编写的时候没有自动提示，网上的解决办法五花八门，不一定适合具体个人的IDE环境，下面总结一套能解决绝大部分情况的方案：

先给出能自动识别的图样：



步骤1：先检查IDEA是否安装了支持SpringBoot项目的插件（如果是通过IDEA创建的SpringBoot项目都集成了），如下图所示：



步骤2：检查IDEA的文件类型识别器File Types是否支持.yaml,.yml,.properties结尾的文件

 ..]]></description><category></category></item><item><title><![CDATA[webpack打包前端项目入门]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/106923093</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/106923093</guid><author>xfwdxt</author><pubDate>Tue, 23 Jun 2020 14:50:05 +0800</pubDate><description><![CDATA[前言：在开发过程中，利用webpack可以帮我们自动把ES6语法编译成低版本浏览器能解析的JavaScript代码。下面给出webpack打包前端项目入门案例。

[终端：进入项目所在目录]

1.初始化项目依赖：

npm init -y

2.安装webpack-cli脚手架

npm install webpack webpack-cli --save-dev

3.配置打包运行命令[package.json文件中]"dev": "webpack --mode development --watch"]]></description><category></category></item><item><title><![CDATA[Mac系统容易忽视但很实用的命令整理]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/106468617</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/106468617</guid><author>xfwdxt</author><pubDate>Mon, 01 Jun 2020 11:22:15 +0800</pubDate><description><![CDATA[001.终端指定用哪个软件打开指定的文件


# open -a 实用哪个软件(软件名有空格需转义)  文件名路径
open -a /Applications/Google\ Chrome.app xx.html


002.终端下载文件


# curl -o 存储到本地的文件路径 服务器上的文件路径
curl -o foo.pdf 'http://server1.cyberciti.biz/foo.pdf'

003.
...]]></description><category></category></item><item><title><![CDATA[金额输入框校验和自动校正、支持指定任意位数小数decimal、支持只能输入整数、支持是否允许输入负数等功能]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/106431241</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/106431241</guid><author>xfwdxt</author><pubDate>Fri, 29 May 2020 19:08:38 +0800</pubDate><description><![CDATA[应用场景：开发前端交互页面时，经常遇到金额输入框、指定小数位数的数字输入框，单一的正则表达式无法满足大部分的业务校验需求，下面总结一个实用巧妙而又灵活的把普通输入框变成自动校正输入框的解决方案：

数字（金额）输入框：


输入金额：&lt;input id="money"&gt;

原生JS自动校正：


let dom = document.getElementById("money");
dom.addEventListener("input", function () {
    co...]]></description><category></category></item><item><title><![CDATA[总结JSON.parse()报错VM71:1 Uncaught SyntaxError: Unexpected token u in JSON at position 0等之类的问题]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/106306129</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/106306129</guid><author>xfwdxt</author><pubDate>Sat, 23 May 2020 21:21:20 +0800</pubDate><description><![CDATA[问题场景：在调试前端应用的时候经常出现形如“Uncaught SyntaxError: Unexpected”之类的令人头疼觉得莫名其妙的问题；所以有必要总结整理一下关于JSON.parse()这个API方法的注意事项。以便在以后的开发中出现类似的问题能第一时间想到可能是这个方法的参数值不合法导致的报错。

常见取值对应报错的情况：






...]]></description><category></category></item><item><title><![CDATA[CSS定位总结：position=static/relative/absolute/fixed时的区别、top/bottom/left/right与margin外边距的运用]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/106122414</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/106122414</guid><author>xfwdxt</author><pubDate>Thu, 14 May 2020 16:17:24 +0800</pubDate><description><![CDATA[&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;style&gt; 
*{ margin:0; padding:0; }
div
{
margin:0px;
width:200px;
height:100px;
background-color:yellow;
}
.parent{
	position:static;
    border: 1px solid red;
    width:300px;
    height:230px;
    b.]]></description><category></category></item><item><title><![CDATA[JS正则表达式常见场景下的用法总结]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/105992155</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/105992155</guid><author>xfwdxt</author><pubDate>Fri, 08 May 2020 14:21:05 +0800</pubDate><description><![CDATA[（一）前置知识总结：1. 正则表达式 /xxxx/[标识] 其中的标识含义
•g （全文查找）
•i （忽略大小写）
•m （多行查找）

2. 正则表达式创建的两种方式（等价，都是对象）
创建对象的方式：


var re = new RegExp("a");   // RegExp是一个对象,最简单的正则表达式,将匹配字母a
var re= new RegExp("a", "i");// ...]]></description><category></category></item><item><title><![CDATA[原生JS动态计算输入框文本内容的宽度，当内容宽度超过输入框的宽度时可控]]></title><link>https://blog.youkuaiyun.com/xfwdxt/article/details/103896410</link><guid>https://blog.youkuaiyun.com/xfwdxt/article/details/103896410</guid><author>xfwdxt</author><pubDate>Wed, 08 Jan 2020 18:55:30 +0800</pubDate><description><![CDATA[需求场景：左边输入框输入内容，右边输入框用placeholder展示，当placeholder的内容宽度超过右边输入框的宽度时，placeholder强行替换为“请选择”

注意事项：1、左右输入框的大小、样式都无关；

2、实际业务中右边输入框的大小样式是随机的，所以示例代码中右边输入框加了左右不等的内边距，并且监听了浏览器窗口大小的变化，而具体的业务开发时右边输入框的大小是随机确定...]]></description><category></category></item></channel></rss>