Decorative image frame

Python

一、相关说明

二、Python知识学习框架

  • 基础知识(1)

    • 源文件的字符编码

      • 默认编码UTF-8
      • 不使用默认编码,则要声明文件的编码,一般情况下写在文件的第一行
        • # -*- coding: encoding -*-
    • 变量的命名

      • 变量名只能包含字母、数字和下划线
      • 变量名以字母或下划线开头,不能以数字开头
      • 变量名不能包含空格,使用下划线来分隔单词
      • Python关键字和函数名不能用作变量名
    • 基本规则

      • #
      • ‘’’ ‘’’
      • 缩进
      • 空行

      提示:# 单行注释,’’’ ‘’’多行注释

    • 变量赋值

      • 赋值符

        =

      • 增量赋值

        +=

      • 多重赋值

        x=y=z=1

      • 多元赋值

        x,y,z=1,2.0,’a’

    • 运行python

      • 两种模式

        • 脚本式编程
        • 交互式编程
      • 运行脚本

        命令行模式

  • 基础知识(2)

    • 标识符

      • 标识符

        计算语言中允许作为名字的有效字符串集合

      • 特殊标识符

        • 关键字

          • 保留字

            不允许另用

          • import keyword

            • 查看所有
            • 判断是否
              • keyword.kwlist
              • keyword.iskeyword()
        • 专用下划线标识符

          • 特殊变量

            • 下划线(_)作为

              变量前缀&后缀

          • 特殊用法

            • _xxx

              • 不能直接访问的类属性
              • 通过类提供的接口进行访问
            • __xxx__

              • 特殊变量

                系统定义的名字

              • Python

                特殊方法专用标识

            • __xxx

              • 私有变量

                仅用于类中

      • 合法标识符

        • 第一个字符

          字母/下划线(_)

        • 其余字符

          字母/数字/下划线(_)

    • 对象属性

      • Pyhton使用对象类型来存储数据

      • 特性

        • 身份

        • 类型

          type()

      • 对象属性

        • 访问

          .

        • 常用

          • 属性
          • 方法
    • 动态类型

    • 内存管理

      • 变量

        • 在计算机内存中的表示
          • a=’ABC’
            • 在内存中
              • 创建了一个’ABC’的字符串
            • 在内存中
              • 创建了一个名为a的变量并把它指向’ABC’
          • b=a
            • 创建了一个名为的变量并把它指向a指向的字符串’ABC’
          • a=’XYZ’
            • 创建了一个’XYZ’的字符串并把a指向改为’XYZ’
          • print(b
            • b的指向并没有更改
            • →’ABC’
        • 本质上
          • 变量用来指向数据对象
          • 计算机内部把任何数据都看成一个对象
          • 对变量赋值关联数据对象和变量
      • 常量

        全部大写的变量名(本质上还是变量)

      • del语句

        删除对象的一个引用

    • IO编程

      • print()
        • 打印到屏幕
        • print(a,b)
          • 依次打印
          • 遇到,输出一个空格
      • input()
        • 读取键盘输入
        • input()
          • 可以接收Python表达式
          • 返回运算结果
    • 模块结构&布局

  • 数据类型

    • 类型

      • 概念

        指的是数据的分类,它定义了数据的存储方式、可以执行的操作以及数据的表现形式

      • 作用

        对数据的一种划分

    • 标准类型

      • 标准数据类型

        • 数字
          • 整型(int)
          • 浮点型(float)
          • 布尔型(bool)
          • 复数(complex)
        • 字符串
        • 列表
        • 元组
        • 集合
        • 字典
      • 标准类型操作符

        • 算术运算符

          • +,-,*,/
          • %
          • **
          • //
        • 比较运算符

          • ==,!=
          • >,>=,<,<=
        • 赋值运算符

          • =
          • +=,-=,*=,/=,%=,**=,//=
        • 位运算符

          • &,|,^,-
          • <<,>>
        • 逻辑运算符

          and,or,not

        • 成员运算符

          in,not in

        • 身份运算符

          is,is not

      • 内置函数

        • type()
        • isinstance()
        • cmp(a,b)
          • a>b 返回1
          • a<b 返回-1
          • a=b 返回0
        • str()/repr()
        • dir()
  • 数值类型

    • 分类

      • 整数类型

        • 0X

          16进制

        • 0B

          2进制

        • 0O

          8进制

      • 浮点数类型

      • 复数类型

        • z=a+bj

          • a

            实数部分z.real

          • b

            虚数部分z.imag

    • 关系

      • 整数→浮点数→复数
      • 互相转换
        • int()
        • float()
        • complex()
    • 内置函数

      • abs()

      • ceil()/floor()

        上入整数/下舍整数

      • divmod()

        • 返回元组
          • num1/num2
          • num1%num2
      • pow()

        指数

      • round()

        四舍五入

    • 随机数

      • randint()

        随机整数

      • randrange()

        指定范围内取随机数

      • uniform(x,y)

        • 随机浮点数

          [x,y]

      • random()

        • 随机浮点数

          [0,1)

      • choice()

        随机序列中的一个元素

      • shuffle(lst)

        将序列所有元素随机排序

      • seed([x])

    • 其他

      • 空值
        • None
        • 注意
          • 不能理解为0
            • 0有意义
            • None为特殊空值
  • 序列

    • 内涵

      • 有序排列
      • 包括
        • str
        • list
        • tuple
    • 操作符

      • 标准类型操作符

        (数据类型-标准类型-标准类型操作符)均适用

      • 序列类型操作符

        • 关系

          • in

          • not in

            1
            obj in seq  # 输出: True/False
        • 连接

          • +(推荐使用seq1.extend(seq2))
            • seq1 + seq2
        • 重复

            • seq * expr
        • 切片

          • [],[:],[::]
            • seq[index]
            • seq[index1:index2]
          • 基本样式
            • [下限:上限:步长]
            • 上限本身不包括在内(开区间)
          • 拓展样式
            • 倒数切片
              • s[-10:-1]
              • s[-2:]
            • 逆序
              • [::-1]
            • 隔一取一
              • s[::2]
            • 全选
              • s/s[:]/s[::]/s[:None]/s[None:]
          • 注意
            • 切片索引可超过序列长度
            • range(-1,-4,-1)
              • 返回[-1 , -2 , -3]
      • 内置函数

        • 类型转换

          • list()
          • str()
          • tuple()
          • set()
        • 可操作内置函数

          • len()
          • reversed()
          • sum()
          • zip()
          • enumerate()
          • sorted()
          • max()
          • min()
        • 其他操作

          • all(s)

            返回True,如果所有元素都为True

          • any(s)

            返回True,如果任一元素为True

          • s.count(x)

            返回x在s中出现的次数

          • s.index(x)

            返回x在s中第一次出现的下标(索引)

  • 字符串

    • 操作符

      • 标准类型操作符

        (数据类型-标准类型-标准类型操作符)均适用

      • 序列操作符

          • 连接多个字符串
          • join()性能更佳
      • 格式化操作符

        • 百分号格式化
        • str.format() 方法
      • 原始字符操作符(r/R)

        • r’’(’’内部字符默认不转义)
      • Unicode字符串操作符(u/U)

        • u’’
    • 独特特性

      • 特殊字符串

        • \n

          换行

        • \t

          制表符

        • \\

          反斜杠

          • \
        • \r

          回车

      • ‘’’ ‘’’

        • 多行内容
      • 不可变性

        • 指向永远不变
        • 改变一个字符串元素需要创建字符串
      • 注意

        • 单引号和双引号用法相同均表示字符串
        • 字符串可看作特殊的元组
    • 编码问题

      • 概念

        • 1bit(位)

          0/1 两种可能性

        • 1byte(字节)

          • =8bit
          • 2^8=256种可能性
      • 背景知识

        • ASCII

          • 1个字节8位
          • 字符集–英文字符+常见符号
        • Unicode

          • 2个字节16位

          • 字符集–世界文字字符

          • 变长编码方式

            • UTF-32

              统一4个字节

            • UTF-16

              • 常用字符(基本多文种平面,BMP)2个字节
              • 超出BMP的字符(辅助平面)4个字节
            • UTF-8

              • 英文1个字节
              • 中文3个字节
              • 生僻字符4-6个字节
        • 汉字

          • DBCS
            • GB2312
            • GBK
            • GB18030
          • 127号
            • 之前–半角字符
            • 之后–全角字符
      • 计算机只能处理数字

        • 文本→数字
        • Unicode(字符集)→UTF-8(可变长编码方式)
      • Python

        • 类型

          • UTF-8

            3.X版本(默认编码)

          • ASCII

            2.X版本(默认编码)

        • 指定方式

          • # -*- coding: utf-8 -*-
        • 转换

          • Unicode字符串转换为UTF-8

            .encode(‘utf-8’)

          • UTF-8转换为Unicode字符串

            .decode(‘utf-8’)

    • 内置函数

      • 内置函数

        • 查看所有内置函数

          dir(str)

        • 更改显示方式

          • 大小写
            • str.upper()
              • 小写字母转换为大写字母
            • str.lower()
              • 大写字母转换为小写字母
            • str.capitalize()
              • 第一个字母转换为大写,其余字母转换为小写
            • str.title()
              • 首字母转换为大写,其余字母转换为小写
            • str.swapcase()
              • 大写字母转换为小写,小写字母转换为大写
          • 宽度
            • str.center(width)
              • 居中
            • str.ljust(width)/str.rjust(width)
              • 左/右对齐
            • str.zfill(width)
              • 用0填充,字符串以正号或负号开始,考虑符号
          • 编码
            • str.encode()
            • str.decode()
        • 检查

          • str.count()
          • str.find(str)/str.rfind()
          • str.index()/str.rfind()
          • str.endswith()/str.startswith()
            • 检查字符串是否以指定的后缀结束
            • 检查字符串是否以指定的前缀开始
          • str.isalnum()/str.isalpha()/str.isdigit()/str.islower()/str.isspace()/str.istitle()/str.isupper()
            • 检查字符串是否至少有一个字符(字母或数字)
            • 检查字符串是否只包含字母字符
            • 检查字符串是否只包含数字
            • 检查字符串是否只包含小写字母
            • 检查字符串是否只包含空白字符(空格、制表符、换行符等)
            • 检查字符串是否单词首字母大写,其余字母小写
            • 检查字符串是否只包含大写字母
        • 修改

          • str.expandtabs(tabsize=8)
            • 用于将字符串中的制表符(\t)扩展为空格
            • 将制表符扩展为多少个空格的宽度,默认值为8
            • 如果tabsize参数小于1,设置为1
            • 如果tabsize参数大于8,扩展为相应数量的空格
          • str.replace(‘a’,’A’)
            • 修改字符串中的特定部分
          • str.strip()/str.lstrip()/str.rstrip()
            • 去除字符串两端的空白字符或其他指定的字符
            • 去除字符串左侧的空白字符或其他指定的字符
            • 去除字符串右侧的空白字符或其他指定的字符
          • str.split()/str.rsplit()/splitlines()
            • 字符串(默认以空格)分割成一个列表
            • 字符串右侧开始分割成一个列表
            • 不接收任何参数,根据\n、\r分割字符串
          • str.partition()/str.rpartition()
            • 字符串开始搜索分隔符进行分割
            • 字符串末尾搜索分隔符进行分割
          • str.join()
            • 序列中的元素连接成一个字符串
        • 格式化字符串

  • 列表 | 元组

    • 列表(list)

      • 元素可变,操作会影响原表

      • 操作符

        • 序列类型操作符

          • [] & [:]
          • in & not in
          • +(推荐使用list1.extend(list2))
        • 列表解析

        • 内置函数

          • 序列类型

            • len()/sum()/max()/min()
            • sorted()/reversed()
            • enumerate()/zip()
            • list()
          • 列表类型

            • list.count()

            • list.index()

            • list.append()

              末尾追加

            • list1.extend(list2)

              list1末尾添加list2所有元素

            • list.insert()

              • 指定位置插入元素

              • list.insert(i,X)

                插入元素X到指定位置i处

            • list.remove()

            • list.pop()

              • 删除末尾元素

              • list.pop(i)

                删除指定位置i的元素

            • list.clear()

            • list.copy()

            • list.sort()/list.reverse()

              排序/逆序

        • 注意

          • 用于改变对象值的可变对象的方法
            • 无返回值
            • 直接修改原对象
    • 元组(tuple)

      • 元素不可变,一旦初始化不能修改

      • 操作符

        • 序列类型操作符
      • 内置函数

        • 序列类型

          len()

        • 元组类型

          • tuple.index()
          • tuple.count()
      • 注意

        • 单元素元组tuple = (1,)
        • 字典的键值可作为元组
    • 拷贝问题

      • 浅拷贝

        • 概念
          • 创建了一个新的对象
          • 复制的是原始对象中元素的引用,不是元素本身
          • 原始对象中的元素是可变的,拷贝后的对象中对应的元素会受到影响
        • 拷贝
          • list.copy()/list[:]
          • dict.copy()
          • copy.copy()
      • 深拷贝

        • 概念

          • 创建了一个新的对象
          • 递归地复制了原始对象中的所有对象
          • 深拷贝的对象,修改其中一个不会影响另一个
        • 拷贝

          copy.deepcopy()

      • 注意

        • 不可变数据类型(元组、字符串、数字等)
        • 浅拷贝和深拷贝之间没有区别
  • 字典 | 集合

    • 字典(dict)

      • 操作

        • 创建

          • ={}
          • ={key:value,key:value}
          • =dict(([key,value],[key,value]))
          • ={}.fromkeys((key1,key2),value)
        • 访问

          • 返回键dict.keys()
          • 返回值dict.values()
          • 返回键值对dict.items()
        • 判断key是否存在

          • in/not in
          • dict.get(key)
            • dict.get(key)
              • 存在返回值
              • 不存在返回None
            • dict.get(key,-1)
              • 存在返回值
              • 不存在返回-1
        • 删除key

          • dict.pop(key)/dict.popitem()

            • 移除字典中指定键的项

              返回值

            • 移除字典中的最后一项

              返回最后一项键值对

          • del dict[key]

        • 清空dict

          • dict.clear()
          • del dict
      • 内置函数

        • 标准类型

          • type()
          • str()
        • 相关函数

          • dict()
          • len()
          • hash()
            • 判断是否可哈希
            • 可哈希才可作为字典的键
        • 内置函数

          • 返回迭代器

            • 返回键dict.keys()
            • 返回值dict.values()
            • 返回键值对dict.items()
          • 其他

            • dict.copy()

              浅复制

            • dict.get(key,default=X)

              • 获取字典中指定键对应的值
              • default可选参数
                • 键存在时,返回对应的值
                • 键不存在时,返回X
                • 未选该参数,默认为 None
            • dict.setdefault(key,default=X)

              • 获取字典中指定键对应的值
              • default可选参数
                • 键存在时,返回对应的值
                • 键不存在时,添加键到字典中,其值设置为提供的默认值X,返回X
                • 未选该参数,默认为 None
            • dict1.update(dict2)

              • dict2中键X已存在于dict1中

                值被更新为键X对应的值

              • dict2中键Y不存在于dict1中

                把键Y以及Y对应的值添加到dict1中

      • dict vs list

        • dict
          • 查找速度极快,不会随key增加而变慢
          • 占用大量内存
        • list
          • 顺序查找,速度随元素增加变慢
          • 占用内存少
      • 注意

        • key必须是可哈希的,不可变对象(均可哈希)
          • 字符串、数值
          • 元组(只能包括不可变类型)
    • 集合(set)

      • 无序的、不包含重复元素
      • 分类
        • 可变集合–set
        • 不可变集合–frozenset
      • 操作符
      • 内置函数
      • set vs tuple
  • 条件 | 循环

    • 条件

      • if语句

        • if 条件: …

          1
          2
          if 条件:
          # 条件为真时执行的代码块
        • if 条件: … else: …

          1
          2
          3
          4
          if 条件:
          # 条件为真时执行的代码块
          else:
          # 条件为假时执行的代码块
        • if 条件1: … 条件2: … else: …

          1
          2
          3
          4
          5
          6
          7
          if 条件1:
          # 条件1为真时执行的代码块
          elif 条件2:
          # 条件1为假且条件2为真时执行的代码块
          # 可以有多个elif分支
          else:
          # 所有条件都为假时执行的代码块
      • 条件表达式(三元操作符)

        • X if 条件 else Y
        • 基于条件的真值选择X或Y
    • 循环

      • 循环

        • while
        • for
        • 注意
          • while…else
          • for…else
      • 循环控制

        • break

          停止执行整个循环

        • continue

          跳过本次执行,进入下一次循环

        • pass

          • 空语句
          • 用于
            • if/elis/else
            • while/for
            • def/class
            • try/except/finally
    • 内置函数

      • range()

        • 完整语法
          • range(start,end,step=)
        • 简略语法
          • range(end)
          • range(start,end)
      • enumerate()

      • reversed()

        反序访问

      • zip()

      • sorted()

    • 迭代器

    • 生成器

  • 文件对象

    • 概念

      • 文件只是连续的字节序列
      • 用来访问
        • 普通的磁盘文件
        • 类文件(打开的URL读取的Web页面)
    • 内建函数

      • open()

        • 参数

          open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

          • 参数含义

            • file

              文件路径或文件对象

            • mode(指定文件打开模式)

              • ‘r’

                只读模式,默认

              • ‘w’

                写入模式,会覆盖文件(文件已存在)内容

              • ‘a’

                追加模式,会在文件末尾追加内容

              • ‘b’

                二进制模式,用于读写二进制文件

              • ‘+’

                可以用于读写模式

            • buffering

              指定缓冲方式

            • encoding

              指定文件编码

            • errors

              指定编码错误的处理方式

            • newline

              指定如何处理不同操作系统的换行符

            • closefd

              用于指示在文件关闭时是否关闭底层文件描述符

            • opener

              指定使用自定义方式打开文件

          提示:buffering、encoding、errors、newline、closefd、opener这几个参数很少用

        • 返回file对象

    • 内建方法

      • 输入

        • file.read(size)
          • size读取的最大字节数
          • 未指定或设置为None,读取整个文件内容
        • file.readline()/file.readlines
          • 读取文件的一行
          • 读取文件的所有行
      • 输出

        • file.write()/file.writelines()
          • 字符串写入到文件中
          • 字符串序列写入到文件中
      • 定位

        • file.seek(offset,whence=X)

          • 移动文件对象的当前位置指针
          • offset
            • offset移动的字节数
            • 正值表示向前移动,负值表示向后移动
          • whence=X
            • 指定移动的起始位置
            • 0(默认)–文件开头
            • 1–当前文件位置
            • 2–文件末尾
        • file.tell()

          返回文件对象的当前位置

      • 其他

        • file.close()

        • file.flush()

          强制将文件对象内已写入的数据从缓冲区(buffer)写入到文件系统

        • file.truncate(size)

          • 裁剪文件
          • 未指定或为None,默认裁剪到当前位置
    • 内建属性

      • file.closed

        • 文件是否关闭

          True/False

      • file.encoding

        文件编码

      • file.mode

        文件模式

      • file.name

        文件的名称或路径

  • 错误 & 异常

    • 概述

      • 错误
        • 语法错误
        • 逻辑错误
      • 异常
        • 由于程序错误在正常控制流以外采取的行为
        • 两个阶段
          • 检测到错误(解释器触发异常)
          • 调用不同操作(处理异常)
        • 常见类型
          • BaseException
            • KeyboardInterrupt
              • 用户中断(通常是Ctrl+C)
            • SystemExit
              • 解释器请求退出
            • Exception
              • NameError
                • 引用了未定义的变量
              • ZeroDivisionError
                • 除以零时
              • SyntaxError
                • 语法错误
              • IndexError
                • 索引超出序列的范围
              • KeyError
                • 访问不存在的键
              • AttributeError
                • 访问未知的对象属性
          • 所有的错误类型都继承自BaseException
    • 异常处理

      • try: … except exception1: … except exception2: … except: … else: … finally: …

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        try:
        ...
        except exception1:
        ...
        except exception2:
        ...
        except:
        ...
        else:
        ...
        finally:
        ...
        • try

          • 需要检测的代码
          • 若有异常发生
            • 层层比较
              • except exception1
              • except exception2
            • 直到找到归属执行语句
          • 语句块中异常发生点后的剩余语句永远不会到达
        • except

          • 语法

            except Exception [as var]

          • 用法

            • 捕获多个异常

              • except [Exception1,…ExceptionN] [as var]
              • 放入一个元组
            • 捕获所有异常

              • except

                空except子句

              • except Exception

              • except BaseException

          • 捕获后忽略错误

            except Exception: pass

        • else

        • finally

          无论是否有异常最后都要执行

      • 流程

        • try→异常→except→finally
        • try→无异常→else→finally
      • try-except vs try-finally

        • try-except

          异常捕获和多条件错误处理

        • try-finally

          确保执行清理代码(是否发生异常无关)

  • 模块

    • 模块

      • 内涵

        一个.py文件构成一个模块

      • 包含

        • Python对象定义
        • Python语句
      • 目的

        从逻辑上组织代码

    • 引入模块

      • import module1,module2,…

        • 调用模块、对象
        • import a as b
          • 调用a模块
          • 模块a重命名为b
      • from module import name1,name2,…

        可直接使用导入的对象

      • from module_name import *

        • 可直接使用所有对象
        • 不提倡
      • 推荐导入顺序

        • 标准库模块
          • os(操作系统接口)
          • sys(与Python解释器相关的参数和函数)
          • math(数学函数)
          • datetime(日期和时间处理)
          • json(JSON数据编码和解码)
          • re(正则表达式操作)
        • 第三方模块
          • numpy(科学计算)
          • pandas(数据分析)
          • requests(HTTP请求)
          • flask(Web应用框架)
          • tensorflow(机器学习)
        • 自定义模块
    • 内置函数

      • globals()

        全局名称空间

      • locals()

        局部名称空间

      • reload()

        • 重新载入模块
        • reload(module_name)
      • dir()

        • 字符串列表
        • 一个模块里定义的所有模块、变量&函数
  • 面向对象编程

  • 函数

    • 概述

      • 内涵

        对程序逻辑进行结构化/过程化

      • 定义

        • def
        • return
          • 随时返回函数结果
          • 返回形式
            • 无返回值
              • 方法
                • 不用return
                • 仅return(不加返回值)
              • 返回对象类型
                • None
            • 一个值/对象
            • 总结
              • 返回对象数目 实际返回对象
              • 0 None
              • 1 object
              • > 1 tuple
          • 执行到return时,停止执行函数内余下的语句
        • 空函数(占位函数或无操作函数)
          • 不执行任何操作的函数
          • def empty_function(): pass
    • 装饰器

    • 参数

      • 处理参数传递的两种形式

        • 值传递

          • 参数

            基本数据类型

          • 内涵

            • 变量传递给函数后
              • 函数在内存中
                • 复制一个新变量
                • 不影响原有变量
            • 指向新的引用对象
        • 指针传递

          • 参数

            list

          • 内涵

            • 变量传递给函数的是指针
              • 指针指向序列在内存中的位置
              • 在函数中对list的操作
                • 在原有内存中进行
                • 从而影响原有变量
            • 原引用对象被改变
        • 可以先检查参数类型isinstance()

Mysql

一、相关说明

  • 更新日期2024931538分(持续更新中)

二、Mysql相关知识

  • 数据库基础

    • 命令行登陆mysql命令

      输入 mysql 【-h主机名 -P端口号 】-u用户名 -p密码

      • 登录本地的数据库则可以不用输入主机名和端口号,直接输入 mysql -u用户名 -p密码即可

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        D:\phpEnv\www>mysql -uroot -p123456
        mysql: [Warning] Using a password on the command line interface can be insecure.
        Welcome to the MySQL monitor. Commands end with ; or \g.
        Your MySQL connection id is X
        Server version: 5.7.40 MySQL Community Server (GPL)

        Copyright (c) 2000, 2022, Oracle and/or its affiliates.

        Oracle is a registered trademark of Oracle Corporation and/or its
        affiliates. Other names may be trademarks of their respective
        owners.

        Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

        mysql>

        提示:在 -p 后直接输入密码,则不可以加空格,并且在这里输入密码,密码会显示出来;建议-p后按回车,命令行窗口就会自动跳到下一行:Enter password:

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        D:\phpEnv\www>mysql -uroot -p
        Enter password: ******
        Welcome to the MySQL monitor. Commands end with ; or \g.
        Your MySQL connection id is X
        Server version: 5.7.40 MySQL Community Server (GPL)

        Copyright (c) 2000, 2022, Oracle and/or its affiliates.

        Oracle is a registered trademark of Oracle Corporation and/or its
        affiliates. Other names may be trademarks of their respective
        owners.

        Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

        mysql>
      • 登录的是远端服务器的数据库,则得输入主机名和端口号,主机192.1X8.5.1X6,端口3306,用户名为root,密码123456

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        D:\phpEnv\www>mysql -h192.1X8.5.1X6 -P3306 -uroot -p123456
        mysql: [Warning] Using a password on the command line interface can be insecure.
        Welcome to the MySQL monitor. Commands end with ; or \g.
        Your MySQL connection id is X
        Server version: 5.6.50-log Source distribution

        Copyright (c) 2000, 2022, Oracle and/or its affiliates.

        Oracle is a registered trademark of Oracle Corporation and/or its
        affiliates. Other names may be trademarks of their respective
        owners.

        Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

        mysql>

        注意:-P端口号中的P是大写的,要跟密码前面的p(小写)区分开

    • 命令行退出mysql命令

      quit; 或者 exit; 或者 \q;

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      mysql> quit;
      Bye

      D:\phpEnv\www>

      mysql> exit;
      Bye

      D:\phpEnv\www>
      mysql> \q;
      Bye

      D:\phpEnv\www>

三、SQL语句及其种类

  • 数据定义语言DDL(Data Definition Language)——CREATE、DROP、ALTER、…

    • 创建数据库

      CREATE DATABASE 数据库名;

    • 删除数据库

      DROP DATABASE 数据库名;

    • 使用数据库

      USE 数据库名;

    • 创建表

      CREATE TABLE 表名(

      ​ 列名1 列1类型,

      ​ …

      ​ 列名n 列n类型,

      ​ PRIMARY KEY (‘列名’)

      );

    • 删除表

      DROP TABLE 表名;

    • 查看数据库、数据表、表结构

      SHOW DATABASES;

      SHOW TABLES;

      DESC 表名; 或 DESCRIBE 表名;

    • 原数据表的结构,索引

      SHOW CREATE TABLE 表名;

    • 修改表名

      RENAME TABLE 原表名 TO 新表名;

  • 数据查询语言DQL(Data Query Language)——SELECT

    • 简单查询

      SELECT * FROM 表名 WHERE 字段=’值’;

      SELECT * FROM 表名 WHERE 条件 IN(‘值’,’值’,…,’值’);

    • 联表查询

      • 左连接

        SELECT a.*,b.字段(需要的值) FROM B表名 b LEFT JOIN A表名 a ON a.字段 =b.字段 WHERE 字段=’值’;

    • 嵌套查询

      SELECT * FROM A表名 WHERE 字段1 IN(SELECT 字段1 FROM B表名 WHERE 字段3 =’值’);

    • 其他查询

      • 去掉重复值

        • DISTINCT

          SELECT DISTINCT 字段 FROM 表名;

      • 限制行数

        • LIMIT

          SELECT * FROM 表名 LIMIT 数值;

      • 范围区间

        • BETWEEN…AND

          SELECT * FROM 表名 WHERE 字段1 = ‘值’ AND 字段2 BETWEEN ‘起始范围’ AND ‘结束范围’;

      • 除…之外

        • NOT IN

          SELECT 字段(需要的值) FROM 表名 WHERE 字段(除…之外) NOT IN (‘值’);

      • 包含

        • LIKE

          SELECT * FROM 表面 WHERE 字段 LIKE ‘%值%’;

      • 排序

        • 升序

          SELECT * FROM 表名 WHERE 字段 = ‘值’ ORDER BY 排序字段 ASC;

        • 降序

          SELECT * FROM 表名 WHERE 字段 = ‘值’ ORDER BY 排序字段 DESC;

        • 先升序再升序

          SELECT * FROM 表名 WHERE 字段 = ‘值’ ORDER BY 排序字段1 ASC,排序字段2 ASC;

          SELECT * FROM 表名 WHERE 字段 = ‘值’ ORDER BY 排序字段1,排序字段2;

        • 先降序再降序

          SELECT * FROM 表名 WHERE 字段 = ‘值’ ORDER BY 排序字段1 DESC,排序字段2 DESC;

        • 分组

          • GROUP BY

            SELECT * FROM 表名 GROUP BY 字段1,…,字段N;

            SELECT * FROM 表名 GROUP BY 字段1,…,字段N ORDER BY 字段 ASC/DESC;

            SELECT * FROM 表名 GROUP BY 字段1,…,字段N HAVING 字段(<、>、=)值;

            提示:# WHERE关键字无法与合计函数一起使用,聚合函数作为筛选条件时,不能用WHERE,而是用HAVING语法 # HAVING关键字放在GROUP BY关键字后面,针对分组后的数据进行筛选

        • 组合查询

          • UNION ALL

            SELECT 字段 FROM 表名 WHERE 字段=’值’ UNION ALL SELECT 字段 FROM 表名 WHERE 字段=’值’;

        • 设置别名

          • AS

            SELECT 字段 AS 别名 FROM 表名;

        • WHERE过滤空值

          WHERE 列名 IS NOT NULL

          WHERE 列名 != ‘NULL’

          WHERE 列名 <> ‘NULL’

        • 操作符

          AND

          OR

          提示:AND优先级大于OR优先级

          • MAX最大值

            SELECT MAX(字段) FROM 表名;

          • MIN最小值

            SELECT MIN(字段) FROM 表名;

          • AVG平均值

            SELECT AVG(字段) FROM 表名;

          • SUM和

            SELECT SUM(字段) FROM 表名;

        • 函数

          条件函数

  • 数据操纵语言DML(Data Manipulation Language)——INSERT、UPDATE、DELETE

    • INSERT INTO 表名 (字段1,字段2,…,字段n) VALUES (‘值1’,’值2’,…,’值n’);

    • UPDATE 表名 SET 字段 = ‘值’(需要修改的值) WHERE 字段 = ‘值’;

    • DELETE 表名 WHERE 字段 = ‘值’ AND 字段 =’值’;

  • 数据控制语言DCL(Data Control Language)

四、其他相关知识

  • 性能

    • SELECT

    • SELECT * FROM 表

      查询出表中所有数据,性能比较差

      • SELECT 常量 FROM 表

      查询出结果是所有记录数的常量,性能比较高

    • SELECT COUNT(*)、SELECT COUNT(1)、SELECT COUNT(主键)

      • SELECT COUNT(*)和SELECT COUNT(1)两者返回结果是一样的
      • 没有主键,使用COUNT(1)比COUNT(*)快
      • 有主键,那么COUNT(主键)最快

Excel(二)--基础

一、相关说明

  • 博主本地环境:Windows 11家庭中文版、64位操作系统,基于x64的处理器
  • 更新日期20248281445分(持续更新中)

二、单元格基本操作

  • 选择单元格
  • 输入数据
  • 编辑单元格
  • 清除单元格
  • 移动和复制单元格
  • 合并单元格
  • 调整列宽和行高
  • 隐藏和取消隐藏列/行
  • 插入和删除单元格、行或列
  • 锁定和解锁单元格

三、函数

  • 日期与时间函数

    • TODAY 返回当前日期

      1
      =TODAY()  # 2024/8/26
    • NOW 返回当前的日期和时间

      1
      =NOW()  # 2024/8/26 16:05
    • DATE 创建一个日期值,由年、月、日组成

      1
      =DATE(2024, 8, 26)  # 2024/8/26
    • TIME 创建一个时间值,由小时、分钟和秒组成

      1
      =TIME(16, 6, 10)  # 4:06 PM
    • YEAR 从日期值中提取年份

      1
      =YEAR("2024-08-26")  # 2024
    • MONTH 从日期值中提取月份

      1
      =MONTH("2024-08-26")  # 8
    • DAY 从日期值中提取天数

      1
      =DAY("2024-08-26")  # 26
    • HOUR 从时间值或日期时间值中提取小时数

      1
      =HOUR("16:09:26")  # 16
    • MINUTE 从时间值或日期时间值中提取分钟数

      1
      =MINUTE("16:10:35")  # 10
    • SECOND 从时间值或日期时间值中提取秒数

      1
      =SECOND("16:11:03")   # 3
    • WEEKDAY 返回日期值对应的星期几的数字或文本

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      =WEEKDAY("2024-08-26")    # 2
      =WEEKDAY("2024-08-26",1) # 2
      =WEEKDAY("2024-08-26",2) # 1
      =WEEKDAY("2024-08-26",3) # 0
      =WEEKDAY("2024-08-26",11) # 1
      =WEEKDAY("2024-08-26",12) # 7
      =WEEKDAY("2024-08-26",13) # 6
      =WEEKDAY("2024-08-26",14) # 5
      =WEEKDAY("2024-08-26",15) # 4
      =WEEKDAY("2024-08-26",16) # 3
      =WEEKDAY("2024-08-26",17) # 2

      (...)1-从1(星期日)到7(星期六)的数字
      (...)2-从1(星期一)到7(星期日)的数字
      (...)3-从0(星期一)到6(星期日)的数字
      (...)11-数字1(星期一)至7(星期日)
      (...)12-数字1(星期二)至7(星期一)
      (...)13-数字1(星期三)至7(星期二)
      (...)14-数字1(星期四)至7(星期三)
      (...)15-数字1(星期五)至7(星期四)
      (...)16-数字1(星期六)至7(星期五)
      (...)17-数字1(星期日)至7(星期六)
      默认是1
    • DAYS 返回两个日期之间的天数

      1
      2
      =DAYS("2024-08-31", "2024-08-26")   # 5
      =DAYS("2024-08-26", "2024-08-31") # -5
  • 数学函数

    • ABS 返回一个数的绝对值

      1
      2
      =ABS(10)  # 10
      =ABS(-10) # 10
    • MOD 返回除法的余数

      1
      =MOD(10, 3)  # 1
    • POWER 返回一个数的指定次幂

      1
      =POWER(2, 5)  # 32
    • INT 将数字向下舍入到最接近的整数

      1
      =INT(9.99)  # 9
    • ROUND 将数字四舍五入到指定的小数位数

      1
      2
      =ROUND(3.14159, 2)  # 3.14
      =ROUND(6.65783, 2) # 6.66
    • ROUNDDOWN 将数字向下舍入到指定的小数位数

      1
      =ROUNDDOWN(3.9, 0)  # 3
    • ROUNDUP 将数字向上舍入到指定的小数位数

      1
      =ROUNDUP(3.1, 0)  # 4
    • SUM 计算一系列数字的总和

      1
      =SUM(A1:A10)  # 计算A1到A10单元格的总和
    • SUMIF 根据指定的条件对一系列数字求和

      1
      =SUMIF(A1:A10, ">10")  # 计算A1到A10中大于10的数字之和
    • SUMIFS 根据多个条件对一系列数字求和

      1
      =SUMIFS(B1:B10, A1:A10, ">5", C1:C10, "<18")  # 21

    • MEDIAN 返回一组数字的中位数

      1
      2
      =MEDIAN(1, 3, 3, 6, 7, 8, 9)  # 取中位数6
      =MEDIAN(A1:A10) # 取A1到A10单元格的中位数
    • RANK 返回一个数字在一系列数字中的排名(默认是降序排名)

      1
      2
      =RANK(A1, A1:A10)  # A1单元格的值在A1到A10中的排名(降序)(值越小排名越靠后)
      =RANK(A1, A1:A10, 1) # A1单元格的值在A1到A10中的排名(升序)(值越小排名越靠前)
  • 统计函数

    • COUNT 计算指定单元格中包含数字的单元格的数量

      1
      =COUNT(A1:A10)  # 计算A1到A10中包含数字的单元格数量
    • COUNTA 计算指定单元格中非空的单元格的数量

      1
      =COUNTA(A1:A10)  # 计算A1到A10中非空单元格的数量
    • COUNTIF 计算指定单元格中满足特定条件的单元格数量

      1
      =COUNTIF(A1:A10, ">10")  # 计算A1到A10中大于10的单元格数量
    • COUNTIFS 计算指定单元格中满足多个条件的单元格数量

      1
      =COUNTIFS(A1:A10, ">10", B1:B10, "<20")  # 如果A1到A10中大于10且B1到B10中小于20,则计算满足条件的单元格数量
    • AVERAGE 计算一系列数字的平均值

      1
      =AVERAGE(A1:A10)  # 计算A1到A10中数字的平均值
    • MIN 找出一系列数字中的最小值

      1
      =MIN(A1:A10)  # 找出A1到A10中的最小值
    • MAX 找出一系列数字中的最大值

      1
      =MAX(A1:A10)  # 找出A1到A10中的最大值
    • SMALL 从一系列数字中返回第k个最小的值

      1
      =SMALL(A1:A10, 3)  # 找出A1到A10中的第3个最小值
    • LARGE 从一系列数字中返回第k个最大的值

      1
      =LARGE(A1:A10, 2)  # 找出A1到A10中的第2个最大值
  • 查找与引用函数

    • VLOOKUP 在一列中查找特定信息,返回同行中另一列的值

      格式

      1
      VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
      • lookup_value: 要查找的值
      • table_array: 包含数据的区域或范围(要查找数据表)
      • col_index_num: 数据表中返回值的列号
      • range_lookup: 布尔值,指定是否进行近似匹配,FALSE/0表示精确匹配,TRUE/1表示近似匹配
      1
      2
      =VLOOKUP("A", A1:B10, 2, 0)  # 在A1:B10中查找"A"并返回A所在行的第二列的值
      =VLOOKUP("A", A1:B10, 2, FALSE) # 在A1:B10中查找"A"并返回A所在行的第二列的值
    • LOOKUP 在向量或数组中查找特定值,并返回相应的值

      格式

      1
      LOOKUP(lookup_value, [lookup_vector], [result_vector])
      • lookup_value: 要查找的值
      • lookup_vector: 要搜索的一行或一列
      • result_vector: 与lookup_vector对应的行或列,从中返回查找值的结果
      1
      =LOOKUP("A", A1:A10, B1:B10)  # 在A1:A10中查找"A"并返回B列中相应的值
    • INDEX 返回表格中特定行和列交叉点处的值

      格式

      1
      INDEX(array, row_num, [column_num])
      • array: 包含数据的区域或数组
      • row_num: 要返回的行号
      • column_num: 要返回的列号(可选)
      1
      2
      =INDEX(A1:A10, 3)  # 从A1:B10中返回第3行的值
      =INDEX(A1:B10, 3, 2) # 从A1:B10中返回第3行第2列的值
    • MATCH 返回一个值在给定数组中的相对位置

      格式

      1
      MATCH(lookup_value, lookup_array, [match_type])
      • lookup_value: 要查找的值
      • lookup_array: 包含可能匹配项的一行或一列
      • match_type: 指定查找类型,1表示最近小于(),0表示精确匹配,-1表示最大大于
      1
      2
      =MATCH("A", A1:A10, 0)  # 在A1:A10中查找"A"的位置,0表示精确匹配
      =MATCH("A", A1:A10, -1) # 在A1:A10中查找"A"的位置,0表示精确匹配
  • 文本函数

    • LEN 返回文本字符串中的字符数

      1
      2
      =LEN("Hello")  # 5
      =LEN(A1) # 5

    • FIND 查找字符串中第一次出现另一个字符串的位置

      1
      2
      3
      4
      =FIND("e", "Hello")  # 2
      =FIND("e", A1) # 2
      =FIND("a", "Hello") # #VALUE!
      =FIND("a", A1) # #VALUE!

    • LEFT 返回字符串中最左侧的指定数量的字符

      1
      2
      =LEFT("Hello", 2)  # "He"
      =LEFT(A1, 2) # "He"
    • MID 从指定位置开始,提取指定长度的子字符串

      1
      2
      =MID("Hello", 2, 1)  # "e"
      =MID(A1, 2, 1) # "e"
    • RIGHT 返回字符串中最右侧的指定数量的字符

      1
      2
      =RIGHT("Hello", 3)  # "llo"
      =RIGHT(A1, 3) # "llo"
    • EXACT 检查两个文本字符串是否完全相同(区分大小写)

      1
      2
      3
      4
      =EXACT("Hello", "Hello")  # TRUE
      =EXACT(A1, B1) # TRUE
      =EXACT("Hello", "hello") # FALSE
      =EXACT(A2, B2) # FALSE
    • LOWER 将文本转换为小写

      1
      2
      3
      4
      5
      =LOWER("HELLO")  # "hello"
      =LOWER("HEllo") # "hello"
      =LOWER("Hello") # "hello"
      =LOWER("hello") # "hello"
      =LOWER(A1) # "hello"
    • UPPER 将文本转换为大写

      1
      2
      3
      4
      5
      =UPPER("hello")  # "HELLO"
      =UPPER("Hello") # "HELLO"
      =UPPER("HEllo") # "HELLO"
      =UPPER("HELLO") # "HELLO"
      =UPPER(A1) # "HELLO"
    • PROPER 首字母转换为大写,其余字母转换为小写

      1
      2
      3
      4
      =PROPER("hElLo")  # "Hello"
      =PROPER("HELLO") # "Hello"
      =PROPER("Hello") # "Hello"
      =PROPER(A1) # "Hello"
    • TEXTJOIN 多个文本字符串合并为一个文本字符串,可以指定分隔符

      1
      2
      =TEXTJOIN(", ", TRUE, "Apple", "Banana")  # "Apple, Banana"
      =TEXTJOIN(", ", TRUE, A1:B1) # "Apple, Banana"

      也可以使用

      1
      =A1&", "&B1

  • 逻辑函数

    • IF 根据给定条件返回两个不同结果之一

      格式

      1
      IF(condition, true_value, false_value)
      • condition: 判断条件
      • true_value: 如果条件为真,则返回的值
      • false_value: 如果条件为假,则返回的值
      1
      2
      =IF(A1 > 10, ">10", "≤10")  # 判断A1单元格的值,A1单元格的值大于10,输出">10"; A1单元格的值小于等于10,输出"≤10";
      =IF(A1 > 10, ">10", "≤10") # >10

    • OR 检查多个条件是否至少有一个为真

      格式

      1
      OR(logical1, logical2, ...)

      logical1, logical2, …: 逻辑条件列表

      1
      2
      =OR(A1 > 10, B1 < 5)  # 如果A1大于10或B1小于5,则返回TRUE
      =OR(A1 > 10, B1 < 5) # TRUE

    • AND 检查多个条件是否全部为真

      格式

      1
      AND(logical1, logical2, ...)

      logical1, logical2, …: 逻辑条件列表

      1
      2
      =AND(A1 > 10, B1 < 5)  # 只有当A1大于10且B1小于5时,才返回TRUE
      =AND(A1 > 10, B1 < 5) # FALSE

  • 进制转换函数

    • BIN2OCT、BIN2DEC、BIN2HEX 二进制转换为八进制、十进制、十六进制

      1
      2
      3
      =BIN2DEC("1010")  # 10
      =BIN2OCT("1010") # 12
      =BIN2HEX("1010") # A
    • OCT2BIN、OCT2DEC、OCT2HEX 八进制转换为二进制、十进制、十六进制

      1
      2
      3
      =OCT2BIN("12")  # 1010
      =OCT2DEC("12") # 10
      =OCT2HEX("12") # A
    • DEC2BIN、DEC2OCT、DEC2HEX 十进制转换为二进制、八进制、十六进制

      1
      2
      3
      =DEC2BIN(10)  # 1010
      =DEC2OCT(10) # 12
      =DEC2HEX(10) # A
    • HEX2BIN、HEX2OCT、HEX2DEC 十六进制转换为二进制、八进制、十进制

      1
      2
      3
      =HEX2BIN("A")  # 1010
      =HEX2OCT("A") # 12
      =HEX2DEC("A") # 10

四、其他快捷方式

  • 快速输入长数值200000

    1
    =2**5  # 200000

Excel(一)--快捷键

一、相关说明

  • 博主本地环境:Windows 11家庭中文版、64位操作系统,基于x64的处理器
  • 文章若注明,默认是Excel快捷键
  • 更新日期20248261044分(持续更新中)

二、Ctrl +

  • Ctrl + 特殊字符

    快捷键 含义
    Ctrl + ; 输入当前日期(格式YYYY/MM/dd)
    Ctrl + \ 核对两列内容
  • Ctrl + 数字

    快捷键 含义
  • Ctrl + 字母

    快捷键 含义 备注
    Ctrl + A 全选
    Ctrl + B 加粗
    Ctrl + C 复制
    Ctrl + D 向下填充
    Ctrl + E 居中对齐 Word
    Ctrl + E 智能填充 Excel
    Ctrl + F 查找
    Ctrl + G 定位
    Ctrl + H 替换
    Ctrl + I 斜体
    Ctrl + J 两端对齐 Word
    Ctrl + K 超链接
    Ctrl + L 左对齐 Word
    Ctrl + M 左侧段落缩进 Word
    Ctrl + N 新建文件
    Ctrl + O 打开文件
    Ctrl + P 打印
    Ctrl + Q 删除段落格式 Word
    Ctrl + R 右对齐 Word
    Ctrl + R 向右填充 Excel
    Ctrl + S 保存
    Ctrl + T 打开新标签页 桌面/应用
    Ctrl + T 悬挂缩进 Word
    Ctrl + T 超级表 Excel
    Ctrl + U 下划线
    Ctrl + V 粘贴
    Ctrl + W 关闭文件
    Ctrl + X 剪切
    Ctrl + Y 恢复
    Ctrl + Z 撤销

三、Ctrl + Shift +

  • Ctrl + Shift + 特殊字符

    快捷键 含义
    Ctrl + Shift + ↑ 向上选中单元格区域
    Ctrl + Shift + ↓ 向下选中单元格区域
    Ctrl + Shift + ← 向左选中单元格区域
    Ctrl + Shift + → 向右选中单元格区域
    Ctrl + Shift + ; 输入当前时间(格式00:00)
    Ctrl + Shift + $ 人民币格式(¥)
    Ctrl + Shift + % 百分比格式(%)
    Ctrl + Shift + ` 修改为常规格式
  • Ctrl + Shift + 数字

    快捷键 含义 备注
    Ctrl + Shift + 1 千分位格式 大于1000的数字
    Ctrl + Shift + 1 去除小数点(四舍五入) 有小数位的数字
    Ctrl + Shift + 2 修改为时间格式(YYYY/MM/dd
    Ctrl + Shift + 3 修改为日期格式(YYYY/MM/dd)
    Ctrl + Shift + 4 修改为人民币格式(¥)
    Ctrl + Shift + 5 修改为百分比格式(%)
    Ctrl + Shift + 6 修改为科学记数格式
    Ctrl + Shift + 7 添加外边框
    Ctrl + Shift + 8 扩展选择区域
    Ctrl + Shift + 9 取消隐藏行
    Ctrl + Shift + 0 取消隐藏列

    注意:Ctrl+Shift+9、Ctrl+Shift+0没有反应,则是热键冲突导致

  • Ctrl + Shift + 字母

    快捷键 含义
    Ctrl + Shift + G 显示工作簿统计信息
    Ctrl + Shift + L 添加筛选框
    Ctrl + Shift + P 设置单元格格式
    Ctrl + Shift + U 展开公式编辑栏
  • Ctrl + Shift + Fn(Fn,n为数字)

    快捷键 含义
    Ctrl + Shift + Fn + F1 隐藏选项卡
    Ctrl + Shift + F10 设置单元格格式
    Ctrl + Shift + Fn + F12 打印设置

四、Alt +

  • Alt + 特殊字符

    快捷键 含义
    Alt + = 求和
  • Alt + 数字

    快捷键 含义
  • Alt + 字母

    快捷键 含义
  • Alt + Fn(Fn,n为数字)

    快捷键 含义
    Alt + Fn + F1 生成图表
    Alt + Fn + F4 关闭表格

Gitee仓库设置下载链接

一、相关说明

  • 上传至Gitee仓库需要安装配置Git
  • 博主本地环境:Windows 11家庭中文版、64位操作系统,基于x64的处理器

二、Gitee仓库设置下载链接

  • 下载安装Git

    参考博主发布过的文章Hexo+Github搭建个人博客(一) | Hexo (Zglao.github.io)

  • 新建文件夹

    命名为Gitee(文件夹命名,MyGiteeLocal Gitee repository等都可以),博主文件夹路径为D:\Gitee

  • 本地新建仓库

    桌面右键打开Open Git Bash here终端命令行页面,进入D:\Gitee路径,执行命令git init,本地新建仓库

    1
    2
    3
    4
    5
    6
    Zg Lao@admin MINGW64 ~/Desktop
    $ cd D:\Gitee

    Zg Lao@admin MINGW64 /d/Gitee
    $ git init
    Initialized empty Git repository in D:/Gitee/.git/

    命令执行完成,路径D:\Gitee下会自动生成.git的文件夹,如果不显示,查看是否打开隐藏的项目这个选项

  • 配置用户名和邮箱

    桌面右键打开Open Git Bash here终端命令行页面,进入D:\Gitee路径,执行命令格式git config --global user.name "name"git config --global user.email "email"

    1
    2
    git config --global user.name "name"
    git config --global user.email "email"

    注意:这里的name输入你的Gitee用户名,email输入你的Gitee邮箱

    博主Gitee用户名ZglaoGitee的邮箱3878XX6714@qq.com,初始化Git的用户名和邮箱,执行命令git config --global user.name "Zglao"git config --global user.email "3878XX6714@qq.com"

    1
    2
    3
    4
    5
    Zg Lao@admin MINGW64 /d/Gitee (master)
    $ git config --global user.name "Zglao"

    Zg Lao@admin MINGW64 /d/Gitee (master)
    $ git config --global user.email "3878XX6714@qq.com"
  • 注册Gitee账号

    Gitee注册地址注册 - Gitee.com

  • 创建Gitee仓库

    登陆到Gitee,操作步骤:头像左边➕ -> 新建仓库,点击创建

    其中,仓库名称可以随便填写(博主为了便于管理,命名为InstallPackage,英文意思安装包),路径可以手动修改,其他默认

    创建完成,自动跳转仓库代码页面,点击初始化 readme 文件

  • 克隆仓库到本地

    克隆仓库格式git clone [url]url是仓库地址),第一次克隆会弹出弹窗,输入你的Gitee用户名和密码

    1
    2
    3
    4
    5
    6
    7
    8
    Zg Lao@admin MINGW64 /d/Gitee (master)
    $ git clone https://gitee.com/zglao/InstallPackage.git
    Cloning into 'InstallPackage'...
    remote: Enumerating objects: 4, done.
    remote: Counting objects: 100% (4/4), done.
    remote: Compressing objects: 100% (4/4), done.
    remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
    Receiving objects: 100% (4/4), done.

    克隆完成,路径D:\Gitee下会自动生成仓库名(博主仓库名InstallPackage)的文件夹,内容是Gitee仓库中的内容

  • 本地仓库添加内容

    手动把需要上传至Gitee仓库的内容复制粘贴路径D:\Gitee\InstallPackage

    其中,可以对README.mdREADME.en.md文件内容进行修改,README.md是中文说明文档和README.en.md是英文说明文档,博主内容修改内容是安装包的下载及安装步骤

  • 上传Gitee仓库

    • 进入D:\Gitee\InstallPackage路径

      执行命令cd D:\Gitee\InstallPackagegit status

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      Zg Lao@admin MINGW64 /d/Gitee (master)
      $ cd D:\Gitee\InstallPackage

      Zg Lao@admin MINGW64 /d/Gitee/InstallPackage (master)
      $ git status
      On branch master
      Your branch is up to date with 'origin/master'.

      Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
      modified: README.en.md
      modified: README.md

      Untracked files:
      (use "git add <file>..." to include in what will be committed)
      Git-2.43.0-64-bit.exe
      Node-v20.15.0-x64.msi
      Typora/

      no changes added to commit (use "git add" and/or "git commit -a")

      其中,命令git status是查看git状态

    • 添加项目目录下所有文件至本地仓库

      执行命令git add .git status

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      Zg Lao@admin MINGW64 /d/Gitee/InstallPackage (master)
      $ git add .

      Zg Lao@admin MINGW64 /d/Gitee/InstallPackage (master)
      $ git status
      On branch master
      Your branch is up to date with 'origin/master'.

      Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
      new file: Git-2.43.0-64-bit.exe
      new file: Node-v20.15.0-x64.msi
      modified: README.en.md
      modified: README.md
      new file: Typora/typora-setup-x64-1.6.7.exe
      new file: Typora/winmm.dll
    • 提交的内容添加注释说明

      添加注释说明格式git commit -m '说明'(说明一般是添加文件或者修改文件或者删除文件的说明),执行命令git commit -m "Add files(node git Typora) from InstallPackage and modify files(README.md README.en.md)git status

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      Zg Lao@admin MINGW64 /d/Gitee/InstallPackage (master)
      $ git commit -m "Add files(node git Typora) from InstallPackage and modify files(README.md README.en.md)"
      [master a629253] Add files(node git Typora) from InstallPackage and modify files(README.md README.en.md)
      6 files changed, 12 insertions(+), 54 deletions(-)
      create mode 100644 Git-2.43.0-64-bit.exe
      create mode 100644 Node-v20.15.0-x64.msi
      create mode 100644 Typora/typora-setup-x64-1.6.7.exe
      create mode 100644 Typora/winmm.dll

      Zg Lao@admin MINGW64 /d/Gitee/InstallPackage (master)
      $ git status
      On branch master
      Your branch is ahead of 'origin/master' by 1 commit.
      (use "git push" to publish your local commits)

      nothing to commit, working tree clean
    • 上传Gitee

      执行命令git push,上传本地仓库至Gitee仓库

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      Zg Lao@admin MINGW64 /d/Gitee/InstallPackage (master)
      $ git push
      Enumerating objects: 12, done.
      Counting objects: 100% (12/12), done.
      Delta compression using up to 8 threads
      Compressing objects: 100% (9/9), done.
      Writing objects: 100% (9/9), 161.70 MiB | 3.37 MiB/s, done.
      Total 9 (delta 0), reused 0 (delta 0), pack-reused 0
      remote: Powered by GITEE.COM [GNK-6.4]
      remote: warning: This repository has 2 files larger than 50.00 MB
      remote: The size information of several files as follows:
      remote: File 6e49f7ddfaddb755fb24fcc16b1ca15f13b8751f 57.60 MB
      remote: File 9fb4faddf5e36bb8831a929bbd726823abc57a53 79.09 MB
      remote: Use command below to see the filename:
      remote: git rev-list --objects --all | grep $oid
      remote: HelpLink: https://gitee.com/help/articles/4232
      To https://gitee.com/zglao/InstallPackage.git
      0c63870..a629253 master -> master

      此时,本地仓库内容全部已上传Gitee仓库

  • 设置下载链接

    根据格式修改链接放入md文档中,把文章上传至Github仓库,打开个人博客,Ctrl+单击链接自动跳转下载页面

    1
    https://gitee.com/Gitee用户名/Gitee仓库名/raw/分支/文件名

    博主设置的下载链接

    https://gitee.com/zglao/InstallPackage/raw/master/Node-v20.15.0-x64.msi

    https://gitee.com/zglao/InstallPackage/raw/master/Git-2.43.0-64-bit.exe

Hexo+Github搭建个人博客(三)

一、相关说明

  • Hexo个性化,添加、删除、修改等
  • 文章发布需要使用Typora软件
  • 博主本地环境:Windows 11家庭中文版、64位操作系统,基于x64的处理器
  • 我的个人博客:Zglao.github.io

二、Hexo个性化

  • 配置文件

    分为站点配置文件主题配置文件

    1
    2
    3
    4
    5
    # 站点配置文件路径
    D:\Blog\_config.yml

    # 主题配置文件
    D:\Blog\themes\Ocean\_config.yml
  • 添加菜单配置

    • Home(首页)、Archives(目录)、Gallery(相册)、About(关于我)、Search(搜索)五部分,其中博客选择的主题中Gallery(相册)、About(关于我)、点击提示没有被找到,需要的话可进行配置

    • About(关于我)

      桌面右键打开Open Git Bash here终端命令行页面,进入D:\Blog路径执行命令hexo new page about,会在路径D:\Blog\source下生成about文件夹以及about文件夹下文件index.md,在index.md文件中编辑内容,编辑完成后,在D:\Blog路径,执行命令hexo clean && hexo g && hexo d上传Github

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      Zg Lao@admin MINGW64 ~/Desktop
      $ cd D:\Blog

      Zg Lao@admin MINGW64 /d/Blog
      $ hexo new page about
      INFO Validating config
      INFO Created: D:\Blog\source\about\index.md

      Zg Lao@admin MINGW64 /d/Blog
      $ hexo clean && hexo g && hexo d
      INFO Validating config
      INFO Deleted database.
      INFO Deleted public folder.
      INFO Validating config
      INFO Start processing
      INFO Files loaded in 176 ms
      ...
      INFO Deploy done: git

      执行完成,打开浏览器输入Zglao.github.io进入个人博客查看About(关于)页面

    • Gallery(相册)

      桌面右键打开Open Git Bash here终端命令行页面,进入D:\Blog路径执行命令hexo new page gallery,会在路径D:\Blog\source下生成gallery文件夹以及gallery文件夹下文件index.md,在index.md文件中编辑内容(手动在路径D:\Blog\source下创建文件夹存放相册中的图像,博主命名Gallery Images),编辑完成后,在D:\Blog路径,执行命令hexo clean && hexo g && hexo d上传Github

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      Zg Lao@admin MINGW64 ~/Desktop
      $ cd D:\Blog

      Zg Lao@admin MINGW64 /d/Blog
      $ hexo new page gallery
      INFO Validating config
      INFO Created: D:\Blog\source\gallery\index.md

      Zg Lao@admin MINGW64 /d/Blog
      $ hexo clean && hexo g && hexo d
      INFO Validating config
      INFO Deleted database.
      INFO Deleted public folder.
      INFO Validating config
      INFO Start processing
      INFO Files loaded in 180 ms
      ...
      INFO Deploy done: git

      执行完成,打开浏览器输入Zglao.github.io进入个人博客查看Gallery(相册)页面

      博主路径D:\Blog\sourcegallery文件夹下文件index.md内容

  • 修改页面内容配置

    • 修改标题

      打开站点配置文件_comfig.yml,文件路径在D:\Blog,文件最上面

      1
      2
      3
      4
      # Site
      title: Hexo
      subtitle: ''
      description: ''

      修改为

      1
      2
      3
      4
      # Site
      title: 路浩
      subtitle: ''
      description: ''

  • 其他配置和美化

    后续持续补充……

Hexo+Github搭建个人博客(二)

一、相关说明

  • Hexo更换主题,Hexo官网(HexoTheme)选择喜欢的主题

  • 文章发布需要使用Typora软件

  • 博主本地环境:Windows 11家庭中文版、64位操作系统,基于x64的处理器

  • 我的个人博客:Zglao.github.io

二、Hexo个性化

  • Hexo主题选择

    • 初始化Hexo后默认主题是landscape

    • 通过Hexo官网(HexoTheme)自由选择喜欢的主题,点击主题名下面Visit preview site可以对主题进行浏览

  • 主题下载

    • 克隆主题格式git clone [url] themes/xxxurl是点击主题名跳转页面的urlxxx是主题名),博主采用Ocean主题

    • 桌面右键打开Open Git Bash here终端命令行页面,进入D:\Blog路径,执行命令git clone https://github.com/zhwangart/hexo-theme-ocean themes/Ocean,克隆喜欢的主题到Blog文件夹中

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      Zg Lao@admin MINGW64 ~/Desktop
      $ cd D:\Blog

      Zg Lao@admin MINGW64 /d/Blog
      $ git clone https://github.com/zhwangart/hexo-theme-ocean themes/Ocean
      Cloning into 'themes/Ocean'...
      remote: Enumerating objects: 959, done.
      remote: Counting objects: 100% (153/153), done.
      remote: Compressing objects: 100% (103/103), done.
      remote: Total 959 (delta 79), reused 96 (delta 48), pack-reused 806
      Receiving objects: 100% (959/959), 12.92 MiB | 4.79 MiB/s, done.
      Resolving deltas: 100% (568/568), done.

      出现Resolving deltas: 100% (n/n), done.,已克隆完成,还需要进行主题配置才会把默认主题替换

  • 主题配置

    • 修改_config.yml文件,_comfig.yml文件路径在D:\Blog_comfig.yml文件用记事本打开,Ctrl+F搜索theme: landscape

      1
      2
      3
      4
      # Extensions
      ## Plugins: https://hexo.io/plugins/
      ## Themes: https://hexo.io/themes/
      theme: landscape

      修改为

      1
      2
      3
      4
      # Extensions
      ## Plugins: https://hexo.io/plugins/
      ## Themes: https://hexo.io/themes/
      theme: Ocean

      配置完成后,桌面右键打开Open Git Bash here终端命令行页面,进入D:\Blog路径,执行命令hexo clean && hexo g && hexo d,部署到Github,进入个人博客可看到主题已修改

    • 其他配置会在后续博客文章中发布

三、文章发布

  • Typora

  • 文档编辑

    • 打开Typora

    • 编辑内容

      根据内容设置标题等级、代码块(公式块)、有/无序列表、加粗、下划线等

    • 文档路径保存

      保存在Hexo+Github搭建个人博客(一)文章中创建的Blog文件夹D:\Blog\source\_posts\路径

  • 文档图片引用

    • 图片路径

      Hexo+Github搭建个人博客(一)文章中创建的Blog文件夹D:\Blog\source\路径创建文件夹,命名Images(博主命名Hexo+Github搭建个人博客(一)Images

    • 引用图片格式

      ![](路径+图片名),如红框所示

      注意:此处引用使用相对引用,路径引用正确,图片会自动显示,否则反之

  • 上传Github

    桌面右键打开Open Git Bash here终端命令行页面,进入D:\Blog路径,执行命令hexo clean && hexo g && hexo d

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Zg Lao@admin MINGW64 ~/Desktop
    $ cd D:\Blog

    Zg Lao@admin MINGW64 /d/Blog
    $ hexo clean && hexo g && hexo d
    INFO Validating config
    INFO Deleted database.
    INFO Deleted public folder.
    INFO Validating config
    INFO Start processing
    INFO Files loaded in 191 ms
    ...
    INFO Deploy done: git

Hexo+Github搭建个人博客(一)

一、相关说明

  • 搭建个人博客需要安装配置Node.jsGitHexo
  • 博主本地环境:Windows 11家庭中文版、64位操作系统,基于x64的处理器
  • 我的个人博客:Zglao.github.io

二、Node.js

  • 下载

  • 安装

    修改安装路径即可,博主安装路径为D:\nodejs,其他默认就可以

  • 检查是否安装成功

    打开终端(Win+R键,输入cmd)或者终端管理员命令行页面,执行命令node -vnpm -v或者node --versionnpm --version

    1
    2
    3
    4
    5
    C:\Users\20538>node -v
    v20.15.0

    C:\Users\20538>npm -v
    10.7.0

    出现版本号,就证明安装成功

三、Git

  • 下载

  • 安装

    修改安装路径即可,博主安装路径为D:\Git,其他默认就可以

    安装完成,关闭下载窗口,默认浏览器会自动打开版本发布说明

  • 检查是否安装成功

    桌面右键打开Open Git Bash here终端命令行页面,执行命令git -v或者git --version

    1
    2
    3
    Zg Lao@admin MINGW64 ~/Desktop
    $ git -v
    git version 2.43.0.windows.1

    出现版本号,就证明安装成功

四、Hexo

  • 安装Hexo

    打开终端管理员命令行页面,执行命令npm install -g hexo-cli,安装Hexo

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PS C:\Users\20538> npm install -g hexo-cli

    added 53 packages in 17s

    14 packages are looking for funding
    run `npm fund` for details
    npm notice
    npm notice New minor version of npm available! 10.7.0 -> 10.8.1
    npm notice Changelog: https://github.com/npm/cli/releases/tag/v10.8.1
    npm notice To update run: npm install -g npm@10.8.1
    npm notice

    执行完后,路径D:\nodejs下面会出现node_cachenode_global两个文件夹(也可能不会出现,不出现也不会影响之后的操作)

    若安装失败内容如下,更换npm源重试

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    PS C:\Users\20538> npm install -g hexo-cli
    npm error code ECONNRESET
    npm error syscall read
    npm error errno ECONNRESET
    npm error network request to https://registry.npmjs.org/hexo-fs failed, reason: read ECONNRESET
    npm error network This is a problem related to network connectivity.
    npm error network In most cases you are behind a proxy or have bad network settings.
    npm error network
    npm error network If you are behind a proxy, please make sure that the
    npm error network 'proxy' config is set properly. See: 'npm help config'

    npm error A complete log of this run can be found in: C:\Users\20538\AppData\Local\npm-cache\_logs\2024-07-25T02_16_17_523Z-debug-0.log
    • 查看当前配置的npm

      1
      2
      PS C:\Users\20538> npm config get registry
      https://registry.npmjs.org/
    • 更换npm

      1
      2
      3
      PS C:\Users\20538> npm config set registry https://registry.npm.taobao.org/
      # 或者
      PS C:\Users\20538> npm config set registry https://registry.npmmirror.com/

      注释https://registry.npm.taobao.org/是淘宝npm镜像,https://registry.npmmirror.com/是搬瓦工提供的npm镜像

    • 清除npm缓存

      1
      2
      PS C:\Users\20538> npm cache clean --force
      npm warn using --force Recommended protections disabled.

      清除npm缓存确保新的配置生效

    • 验证npm源是否更换

      1
      2
      PS C:\Users\20538> npm config get registry
      https://registry.npmmirror.com/

      更换成功会显示新配置的npm

  • 检查是否安装成功

    打开终端(Win+R键,输入cmd)或者终端管理员命令行页面,执行命令hexo -v或者hexo --version

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    PS C:\Users\20538> hexo -v
    INFO Validating config
    hexo: 7.3.0
    hexo-cli: 4.3.2
    os: win32 10.0.22631 undefined
    node: 20.15.0
    acorn: 8.11.3
    ada: 2.7.8
    ares: 1.28.1
    base64: 0.5.2
    brotli: 1.1.0
    cjs_module_lexer: 1.2.2
    cldr: 45.0
    icu: 75.1
    llhttp: 8.1.2
    modules: 115
    napi: 9
    nghttp2: 1.61.0
    nghttp3: 0.7.0
    ngtcp2: 1.1.0
    openssl: 3.0.13+quic
    simdutf: 5.2.8
    tz: 2024a
    undici: 6.13.0
    unicode: 15.1
    uv: 1.46.0
    uvwasi: 0.0.21
    v8: 11.3.244.8-node.23
    zlib: 1.3.0.1-motley-7d77fb7

    出现版本号,就证明安装成功

  • 初始化Hexo

    创建文件夹,命名为Blog(文件夹命名,MyBlogPersonal Blog等都可以),博主文件夹路径为D:\Blog,打开终端管理员命令行页面,进入D:\Blog路径,执行命令hexo init,初始化Hexo

    1
    2
    3
    4
    5
    PS C:\Users\20538> cd D:\Blog
    PS D:\Blog> hexo init
    INFO Cloning hexo-starter https://github.com/hexojs/hexo-starter.git
    INFO Install dependencies
    INFO Start blogging with Hexo!
  • 启动Hexo

    打开终端管理员命令行页面,进入D:\Blog路径,执行命令hexo s或者hexo server,启动Hexo

    1
    2
    3
    4
    PS D:\Blog> hexo s
    INFO Validating config
    INFO Start processing
    INFO Hexo is running at http://localhost:4000/ . Press Ctrl+C to stop.

    Ctrl+单击(链接http://localhost:4000/)自动跳转默认浏览器访问,Ctrl+C停止运行

    此时,Hexo已经部署完成

五、GitHub

通过Github相应配置,即可将其部署到Github上(其他设备输入你的博客地址,即可查看你发布的文章)

  • 注册Github账号

    GitHub注册地址Github-signup

  • Github SSH免密码配置

    • 初始化用户名和邮箱

      打开终端(Win+R键,输入cmd)或者终端管理员命令行页面,执行命令格式git config --global user.name "name"git config --global user.email "email"

      1
      2
      git config --global user.name "name"
      git config --global user.email "email"

      注意:这里的name输入你的GitHub用户名,email输入你的GitHub邮箱

      博主GitHub用户名ZglaoGitHub的邮箱3878XX6714@qq.com,初始化用户名和邮箱,执行命令git config --global user.name "Zglao"git config --global user.email "3878XX6714@qq.com"

      1
      2
      PS C:\Users\20538> git config --global user.name "Zglao"
      PS C:\Users\20538> git config --global user.email "3878XX6714@qq.com"
    • 生成密钥

      打开终端(Win+R键,输入cmd)或者终端管理员命令行页面,执行命令ssh-keygen -t rsa -C "3878XX6714@qq.com",需要按Enter键回车三次

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      PS C:\Users\20538> ssh-keygen -t rsa -C "3878XX6714@qq.com"
      Generating public/private rsa key pair.
      Enter file in which to save the key (C:\Users\20538/.ssh/id_rsa):
      Created directory 'C:\\Users\\20538/.ssh'.
      Enter passphrase (empty for no passphrase):
      Enter same passphrase again:
      Your identification has been saved in C:\Users\20538/.ssh/id_rsa
      Your public key has been saved in C:\Users\20538/.ssh/id_rsa.pub
      The key fingerprint is:
      SHA256:MZ5Yd1Gt1iJJ5z3l4DEfN1patptTv4A8swcN2+1Y5v0 3878XX6714@qq.com
      The key's randomart image is:
      +---[RSA 3072]----+
      | .... |
      | ..=*+|
      | + ...=*X*|
      | + = ooo*o*|
      | . S . *o..*|
      | B + B.|
      | = B +|
      | . o +.|
      | . E|
      +----[SHA256]-----+

      上述操作会在C:\Users\20538路径下生成.ssh的文件夹,其中有一个id_rsa命名的文件是私钥,带.pub扩展名的文件是公钥

    • Github创建ssh密钥

      登陆到GitHub,操作步骤:右上角小头像->Setting->SSH and GPG keys,点击new SSH key,系统会提示Cofirm access(确认访问),输入Github密码点击Confim,就可实现SSH免密码访问

      其中,Title可以随便填写,最好能让自己知道这个公钥是哪个设备,key把生成的.pub文件中的所有内容复制粘贴进去

    • 验证ssh连接是否成功

      打开终端(Win+R键,输入cmd)或者终端管理员命令行页面,执行命令ssh -T git@github.com,提示Are you sure you want to continue connecting (yes/no/[fingerprint])?(您确定要继续连接吗(是/否/[指纹])?)需要手动输入yes

      1
      2
      3
      4
      5
      6
      7
      PS C:\Users\20538> ssh -T git@github.com
      The authenticity of host 'github.com (20.205.243.166)' can't be established.
      ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
      This key is not known by any other names
      Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
      Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
      Hi Zglao! You've successfully authenticated, but GitHub does not provide shell access.

      出现用户名(Hi Zglao!),博主用户名Zglao,代表访问成功,上述操作之后会在C:\Users\20538路径下生成.ssh的文件夹,其中有一个known_hosts命名的文件是用于存储SSH客户端已知的服务器公钥,known_hosts.old命名的文件是known_host文件的一个备份,目的是防止意外删除或修改known_hosts文件,导致无法验证之前连接过的服务器

  • Github远程仓库配置

    • 创建仓库

      仓库名格式GitHub用户名.github.io(博主仓库名是Zglao.github.io),仓库类型选择Public,其他内容默认,点击Create repository

    • 安装hexo部署插件

      打开终端管理员命令行页面,进入D:\Blog路径,执行命令npm install hexo-deployer-git --save,安装hexo部署插件

      1
      2
      3
      4
      5
      6
      7
      PS C:\Users\20538> cd D:\Blog
      PS D:\Blog> npm install hexo-deployer-git --save

      added 10 packages in 3s

      29 packages are looking for funding
      run `npm fund` for details
    • 配置_comfig.yml文件

      _comfig.yml文件路径在D:\Blog_comfig.yml文件用记事本打开,文件最下面

      1
      2
      3
      4
      # Deployment
      ## Docs: https://hexo.io/docs/one-command-deployment
      deploy:
      type: ''

      修改为

      1
      2
      3
      4
      5
      6
      # Deployment
      ## Docs: https://hexo.io/docs/one-command-deployment
      deploy:
      type: git
      repository: git@github.com:name/name.github.io.git
      branch: master

      注意:这里的name为用户名,name.github.io为仓库名

      博主GitHub仓库名是Zglao/Zglao.github.io,配置_comfig.yml文件该部分内容修改为

      1
      2
      3
      4
      5
      6
      # Deployment
      ## Docs: https://hexo.io/docs/one-command-deployment
      deploy:
      type: git
      repository: git@github.com:Zglao/Zglao.github.io.git
      branch: master
    • 部署到Github

      桌面右键打开Open Git Bash here终端命令行页面,进入D:\Blog路径,执行命令hexo clean && hexo g && hexo d

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      Zg Lao@admin MINGW64 ~/Desktop
      $ cd D:\Blog

      Zg Lao@admin MINGW64 /d/Blog
      $ hexo clean && hexo g && hexo d
      INFO Validating config
      INFO Deleted database.
      INFO Deleted public folder.
      INFO Validating config
      INFO Start processing
      INFO Files loaded in 100 ms
      ...
      INFO Deploy done: git

      其中,命令hexo clean是清除缓存文件,hexo g或者hexo generate是生成网页文件,hexo d或者hexo deploy是部署网页文件到Github,显示INFO Deploy done: git证明已经部署到Github,此时,可以打开浏览器输入Zglao.github.io进入个人博客