<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_45745643的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_45745643</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_45745643]]></copyright><item><title><![CDATA[初识 Nx]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/112716016</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/112716016</guid><author>qq_45745643</author><pubDate>Sat, 16 Jan 2021 18:22:45 +0800</pubDate><description><![CDATA[Nx 是一套功能强大、可扩展的开发工具，可帮助我们开发、测试、构建和扩展 Angular 应用程序，并完全集成支持 Jest、Cypress、ESLint、NgRx 等现代库。
一、安装 CLI
1.使用npm：
npm install -g nx

2.使用yarn：
yarn global add nx

二、创建应用
npx create-nx-workspace@latest

回车后将进行一波安装过程，然后自定义配置。

安装完成得到如下目录结构：

Nx 使代码轻松拆分为单独的项目，项目有两种类]]></description><category></category></item><item><title><![CDATA[git修改已提交的信息]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/112671164</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/112671164</guid><author>qq_45745643</author><pubDate>Fri, 15 Jan 2021 16:19:33 +0800</pubDate><description><![CDATA[修改已提交的注释
主要命令：
git rebase -i master~1 #最后一次
git rebase -i master~5 #最后五次
git rebase -i HEAD~3   #当前版本的倒数第三次状态
git rebase -i commit id #指定的提交位置

着手操作一遍：
1.首先使用 git log 查看提交记录

2.假如我现在要修改 f332a80d 开头的提交注释信息，使用 git rebase -i + 上一次的commit id，也就是 ecb5b584：
git ]]></description><category></category></item><item><title><![CDATA[Docker打包镜像及修改配置]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/112321760</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/112321760</guid><author>qq_45745643</author><pubDate>Thu, 07 Jan 2021 18:06:57 +0800</pubDate><description><![CDATA[最近在学习Docker和实际操作中遇到了不少问题，写篇博客记录一下。
安装
我安装的是windows版的docker desktop，在windows上用docker挺麻烦的，要配置一些东西，在windows上安装docker desktop。
安装完成后，以管理员身份运行一般都能跑起来，如果遇到 Docker Access Denied 报错打不开的情况，需要把计算机当前用户加入到docker-users用户组里面。

打开命令行工具输入下面命令检验docker是否安装成功：

甚至可以跑个hello-w]]></description><category></category></item><item><title><![CDATA[在Angular项目使用socket.io实现通信]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/112173731</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/112173731</guid><author>qq_45745643</author><pubDate>Mon, 04 Jan 2021 14:37:06 +0800</pubDate><description><![CDATA[step1、为项目安装依赖
在终端输入以下命令为我们的angular项目安装express、socket.io、socket.io-client
npm install express socket.io socket.io-client

本人安装的各版本信息如下：
"express": "^4.17.1",
"socket.io": "^3.0.4",
"socket.io-client": "^3.0.4",

step2、编写后台服务
可以在项目中新建一个server文件夹，用来存放我们的后台服务，]]></description><category></category></item><item><title><![CDATA[Angular指令 *ngIf else 使用]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/111147834</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/111147834</guid><author>qq_45745643</author><pubDate>Sun, 13 Dec 2020 23:54:07 +0800</pubDate><description><![CDATA[Angular 中常用的指令有用来遍历的 *ngFor 、控制元素显示隐藏的 *ngIf，今天学习一下 *ngIf 这个常用的指令。
在我们的实际业务中可能遇到这样的需求，一个 table 表格，最后一列有修改、删除或者其他操作，当我们点击修改按钮的时候，当前这一行的内容都出现在一个 input 输入框里面，然后我们可以直接进行修改，这个时候我们就可以使用 *ngIf 和 else 来实现。效果图如下：


部分实现代码：
&lt;tr *ngFor="let item of gridList"&gt;
 ]]></description><category></category></item><item><title><![CDATA[Angular学习之核心文件分析]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/111084784</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/111084784</guid><author>qq_45745643</author><pubDate>Sun, 13 Dec 2020 00:01:53 +0800</pubDate><description><![CDATA[开始学习Angular啦
首先分析一下Angualr项目里的一些核心文件，了解他们是做什么的
1.根模块 app.module.ts
这个文件是 Angular 的根模块，告诉 Angular 如何组装应用
// BrowserModule 浏览器解析的模块
import { BrowserModule } from '@angular/platform-browser';
// Angular 核心模块
import { NgModule } from '@angular/core';
// 根组件
im]]></description><category></category></item><item><title><![CDATA[vue调用百度定位接口实现地理定位]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/109275701</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/109275701</guid><author>qq_45745643</author><pubDate>Sun, 25 Oct 2020 17:36:59 +0800</pubDate><description><![CDATA[其实HTML5中有个 Geolocation API 可以获得用户的地理位置，不过它只能返回用户位置的经度和纬度。

下面是一个简单示例：
var x=document.getElementById("demo");
function getLocation() {
    if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(showPosition);
    }
    else
    {.]]></description><category></category></item><item><title><![CDATA[vue+node+mysql实现用户注册上传头像]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/109261950</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/109261950</guid><author>qq_45745643</author><pubDate>Sat, 24 Oct 2020 18:23:08 +0800</pubDate><description><![CDATA[首先祝大家1024程序员节节日快乐！写篇博客记录一下这个特别的节日！

相信有很多小伙伴写用户管理系统的项目都想实现这样一个功能，就是用户注册可以上传自己的头像，然后把用户信息和头像一起写入数据库，当用户登录成功后可以显示当前用户的头像。

我能想到的第一个方法是先把用户选择的图片通过base64转码，然后把用户信息和转码后的一大串字符串一起写入数据库，用户登录成功后再取出来并交给img标签解析。这个方法的缺点也很明显，性能肯定是大打折扣的，而且转码后的文件会占用很多存储空间，无法存储大图片。第二个办法就是]]></description><category></category></item><item><title><![CDATA[连接服务器MySQL数据库常见报错和解决]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/109134167</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/109134167</guid><author>qq_45745643</author><pubDate>Sat, 17 Oct 2020 16:49:21 +0800</pubDate><description><![CDATA[今天准备和小伙伴们一起写个项目，其中有一个需求需要使用云数据库，正好我之前在服务器上装了mysql数据库，于是我就尝试使用navicat测试一下，走了很多弯路T_T，所以有了这篇博客，给大伙儿避雷！正文开始～

1、环境
服务器：阿里云centOS 7
MySQL版本：5.7
Navicat版本：15
2、连接
首先确保你的MySQL服务已开启，输入如下命令查看：
service mysql status

如果提示OK就说明已启动，否则输入：
service mysql start

以开启MySQL服.]]></description><category></category></item><item><title><![CDATA[vue2使用axios请求报错Cannot set property ‘axios‘ of undefined]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/109104454</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/109104454</guid><author>qq_45745643</author><pubDate>Thu, 15 Oct 2020 20:31:44 +0800</pubDate><description><![CDATA[今天使用axios请求时突然报了个错：

之前用的好好的，怎么今天就突然报这样的错了呢！
细心的同学应该发现了，vue-axios已经升级到3.0版本了，还记得上个月新发布的vue3吗，随着vue3的更新，vue-axios也升级了，大家可以看看官网的介绍 vue-axios

最新的vue-axios3仅支持最新的vue3，所以解决方法就是安装旧版本的vue-axios：
1.卸载vue-axios
npm remove vue-axios

2.重新安装旧版本的vue-axios
npm install]]></description><category></category></item><item><title><![CDATA[node连接mysql数据库遇到的问题和解决]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/109081431</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/109081431</guid><author>qq_45745643</author><pubDate>Wed, 14 Oct 2020 20:49:48 +0800</pubDate><description><![CDATA[今天安装了新版的MySQL(8.0.21)，用node框架连接数据库的时候报了个错：
Client does not support authentication protocol requested by server; consider upgrading MySQL client

原因在于MySQL8.0换了加密插件,而数据库管理客户端还是原来旧版本的加密方式，主要在于安装MySQL8.0过程中的Authentication Method这一配置过程，有了不同的加密方式，所以如果选择强加密（默认应该]]></description><category></category></item><item><title><![CDATA[vue-cli4+element-ui搭建知乎项目及总结]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/108842232</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/108842232</guid><author>qq_45745643</author><pubDate>Mon, 28 Sep 2020 17:46:27 +0800</pubDate><description><![CDATA[花几天时间和小伙伴做了个仿知乎官网的项目，下面是我整理的项目搭建流程及部署和总结，如有不足之处欢迎大家批评指正！

先奉上项目地址和源码！源码地址 ， 项目地址
一、目录结构
本项目使用vue-cli4脚手架创建，目录结构也比之前的2版本要简洁许多，下面是本项目的目录结构。

1.public文件夹下的data和found放的是json数据和图片资源，本来想直接调用知乎的数据接口，奈何没有权限，于是只好将json数据保存在本地了～
2.assets放的也是图片资源
3.components放的是一些组件，.]]></description><category></category></item><item><title><![CDATA[CSS小技巧之替换图片(content)]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/108697191</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/108697191</guid><author>qq_45745643</author><pubDate>Sun, 20 Sep 2020 20:41:08 +0800</pubDate><description><![CDATA[一想到替换图片，我们大部分人可能都会想到用background-image或用两个img元素控制显示隐藏来实现，其实还可以利用css的content属性来替换img中的内容来实现。

Part 1
1.首先我们使用content属性来生成一张图片，先写两个img标签
    &lt;img src="img/qaq.jpg"&gt;
    &lt;img&gt;

2.第一个img用src引入一张图片，第二个img是个空标签，注意这里不要写src属性，就是一个单纯的&lt; img &gt;！然后写cs.]]></description><category></category></item><item><title><![CDATA[Chrome浏览器安装Vue Devtools插件（附带编译好的工具包）]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/108503680</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/108503680</guid><author>qq_45745643</author><pubDate>Wed, 09 Sep 2020 23:47:17 +0800</pubDate><description><![CDATA[我们在使用vue开发项目的时候，如果想要更好的审查和调试 vue 应用，可以使用官方推荐的Vue Devtools。

但是官方的方法比较麻烦，要使用npm编译，搞不好还会报好多莫名其妙的错误。
下面给大家提供一个简便的方法，不会再浪费大家宝贵的时间啦！
1.获取Vue Devtools插件
我已经将编译好的插件上传到博客里啦，可以找一下然后下载。
解压后得到一个 vender 文件夹，打开后目录结构如下

打开 manifest.json文件，找到 "persistent”，将它的值改成true

2..]]></description><category></category></item><item><title><![CDATA[jQuery写一个简易的qq聊天框]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/108246714</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/108246714</guid><author>qq_45745643</author><pubDate>Wed, 26 Aug 2020 20:34:43 +0800</pubDate><description><![CDATA[先放一张效果图！

1.首先我们把基本框架搭出来，还要准备三张图片用来当作头像，下面是html的内容
&lt;body&gt;
&lt;section id="chat"&gt;
    &lt;div class="chatBody"&gt;&lt;/div&gt;
    &lt;div&gt;
        &lt;img src="images/icon.jpg"&gt;
    &lt;/div&gt;
    &lt;textarea class="chatText"&gt;&lt;/text]]></description><category></category></item><item><title><![CDATA[简单的js判断设备是pc端还是移动端，来加载相应的页面]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/107869887</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/107869887</guid><author>qq_45745643</author><pubDate>Fri, 07 Aug 2020 20:41:26 +0800</pubDate><description><![CDATA[最近在做一个前端项目，做了一个pc端的和一个移动端的，就想着可以把这两个页面关联起来，在pc端打开的时候展示pc端的页面，移动端打开展示移动端的页面，进而提升用户体验哈哈

然后自己在网上找了很多中方法，大都有一个问题，就是打开网页的时候加载很慢，要等个好几秒才能加载出页面，用户体验极差，找了很久终于找到一个比较好的方法，页面加载也很快。
话不多说，上代码！

pc的端html页面头部加入下面的代码

&lt;script&gt;
        var sUserAgent = navigator.us.]]></description><category></category></item><item><title><![CDATA[Nginx部署前端项目至远程服务器]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/107435383</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/107435383</guid><author>qq_45745643</author><pubDate>Sat, 18 Jul 2020 21:53:55 +0800</pubDate><description><![CDATA[第一次部署自己写的项目哈哈，其中也踩了很多坑，都是自己慢慢摸索出来的，还是很开心的，写个博客记录以下！
使用工具和环境：
1.阿里云服务器
2.xshell和xftp
3.宝塔面板（傻瓜式操作，非常简单）
4.Nginx
下面开始正式教程了

1.在宝塔面板的软件商店找到Nginx并安装

没有接触过宝塔面板的小伙伴可以尝试一下，宝塔面板安装

接下来等他自己慢慢安装好就可以了

2.点击文件，在/root目录下新建一个app文件夹，用来存放我们的html等静态文件



3.用xshell连接服务器后，打]]></description><category></category></item><item><title><![CDATA[MySQL索引背后的数据结构和算法原理]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/107200879</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/107200879</guid><author>qq_45745643</author><pubDate>Wed, 08 Jul 2020 11:03:01 +0800</pubDate><description><![CDATA[收藏一篇好文章
转载自：MySQL索引背后的数据结构和算法原理
文章比较长，一定要用心看完呀！

]]></description><category></category></item><item><title><![CDATA[MySQL使用MD5加密数据]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/107189780</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/107189780</guid><author>qq_45745643</author><pubDate>Tue, 07 Jul 2020 21:02:40 +0800</pubDate><description><![CDATA[我们在使用数据库的时候，为了安全可能需要对一些数据（比如账号密码）进行加密，写一条博客记录一下嘿嘿

我使用的工具是SQLyog，话不多说，教程开始：
1.在我们的数据库中新建一张表，SQL代码如下
CREATE TABLE `testmd5`(
    `id` INT(4) NOT NULL,
    `name` VARCHAR(20) NOT NULL,
    `pwd` VARCHAR(50) NOT NULL,
    PRIMARY KEY (`id`)
)ENGINE=INNODB DE.]]></description><category></category></item><item><title><![CDATA[使用 Generator 处理异步调用]]></title><link>https://blog.youkuaiyun.com/qq_45745643/article/details/106559817</link><guid>https://blog.youkuaiyun.com/qq_45745643/article/details/106559817</guid><author>qq_45745643</author><pubDate>Thu, 04 Jun 2020 23:20:49 +0800</pubDate><description><![CDATA[Generator 是 ES6 的新规范，它属于函数的一部分，常用于处理异步代码，本篇文章将向大家简单介绍一下 Generator ，如有错误，欢迎大家批评指正哈！
1.一个简单的Generator
这是一个简单的 Generator 例子：
function* gen() {
    return 'first generator';
}
let generatorResult = gen();

使用 * 表示这是一个Generator函数
我们在控制台打印一下 generatorResult ，结果是]]></description><category></category></item></channel></rss>