Butterfly 安裝文檔(一) 快速開始
📖 本教程更新於 2023 年 06 月 06 日,教程的內容針對最新穩定版而更新(如果你是舊版,教程會有些出入,請留意)
🦋 Butterfly 已經更新到 4.9.0
📚 文檔目錄
🚀 快速開始 - 📑 主題頁面 - 📌 主題配置-1 - ⚔️ 主題配置-2 - ❓ 主題問答 - ⚡️ 進階教程 - ✨ 更新日誌 - 🤞 打賞
你可以通過右下角的 簡 按鈕切換為簡體顯示
hexo-theme-butterfly 是基於 hexo-theme-melody 的基礎上進行開發的。
安裝Git安裝 (Github)Git安裝 (Gitee)npm安裝穩定版【建議】
在你的 Hexo 根目錄裏
1git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly
測試版
測試版可能存在 bug,追求穩定的請安裝穩定版
如果想要安裝比較新的 dev 分支,可以
1git clone -b dev https://github.com/j ...
C++模板
模板模板的概念模板就是建立通用的模具,大大提高复用性
模板的特点:
模板不可以直接使用,它只是一个框架
模板的通用并不是万能的
函数模板
C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板
C++提供两种模板机制:函数模板和类模板
函数模板语法函数模板作用:
建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。
语法:
12template<typename T>函数声明或定义
解释:
template --- 声明创建模板
typename --- 表面其后面的符号是一种数据类型,可以用class代替
T --- 通用的数据类型,名称可以替换,通常为大写字母
示例:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950//交换整型函数void swapInt(int& a, int& b) { int temp = a; a = b; b = te ...
I/O流
I/O流文件概念1、文件
保存数据的地方
2、 文件流
流:数据在数据源(文件)和程序(内存)之间的路径
输入流:将磁盘中的文件写入内存
输出流:将内存中的内容写入磁盘
文件操作
创建文件对象相关的构造器和方法
new File(String pathname)根据路径创建一个File对象
new File(File parent,String chil)根据父目录文件+子路径构建
new File(String parent,String child)根据父目录+子路径构建
createNewFile创建新文件
获取文件的相关信息
getName、getAbsolutePath、getParent、length、exists、isFile、isDirectory
目录操作和文件删除
创建一级目录:mkdir
创建多级目录:mkdirs
删除空目录或文件:delete
IO流原理及流的分类
Java IO原理
IO流是input、output的缩写,用于处理数据传输,如读写文件、网络通信
在Java程序中,对于数据的输入。输出以“流(stream)”的方式 ...
Java面向对象编程
方法什么是方法
方法是程序中最小的执行单元
方法的定义:把一些代码打包在一起
方法的格式1234public static 返回值类型 方法名(参数){ 方法体 return 0;}
方法的重载
在同一个类中,定义多个同名的方法
每个方法都有不同的参数类型或参数个数,同名的方法之间就构成了重载关系
123456public static void rus(int a,int b){ }public static void rus(int a,int b,int c){ }
方法的内存Java内存分配
栈
方法运行时使用的内存,方法进栈运行,运行完毕出栈(先进后出)
变量
堆
new出来,并产生地址
方法区:字节码文件加载是进入的内存
本地方法栈
寄存器
构造方法1.构造方法有什么作用?构造方法是一个比较特殊的方法,通过构造方法可以完成对象的创建,以及实例变量的初始化。换句话说:构造方法是用来创建对象,并且同时给对象的属性赋值。注意:实例变量没有手动赋值的时候,系 ...
C++中&和*的区别
C++中*和&的区别
*是取值运算符,对地址使用可以获得地址中储存的数值。 对于指针a,*a表示取a中的值
&是地址运算符,对变量使用可以获得该变量的地址。对于变量b,&b表示取b的地址
在定义时,* 是一个标识符,声明该变量是一个指针,比如说int *p; 那p就是一个指向int型的指针;在调用时,*p是指针p指向的那个变量,比如说之前有int a=5;int *p=a;那么p的值是a的地址,也就是指针p指向a,*p则等于a的值,即*p=5。而&,则是引用,比如说有定义int a=5;再定义int b=&a;那么这里的b则引用a的值,即b=5,而再给b赋值:b=10,a的值也会变为10。
从零开始搭建个人博客
从零开始搭建个人博客
我为什么要搭建个人博客?
记录美好生活;
提升自己的技术水平;
空闲时间娱乐;
本博客由Github+Hexo搭建,下面我来介绍我做这个博客的全过程:
注册GitHub
首先进入GitHub官网
点击Sign up
输入你要注册的邮箱、密码
Create account
依次按照github的提示来做,之后就省略,不难。
Git安装步骤
进入Git官网,想、点击Downloads
选择自己的系统
选择自己的适合的版本
( 国内下载的速度慢,有时候还会下载失败,我这里提供Git-2.40.1-64-bit的安装包 )
下载完成打开
鼠标左击出现这种情况就可以了
打开Git Bash,输入git出现这种情况就可以了
绑定GitHub并提交文件
打开Git bash 输入ssh,查看本机是否安装SSH
输入ssh-keygen -t rsa,指定生成秘钥,接着再点击四次回车键,生成两个文件,分别为id_rsa,id_rsa.pub,按照指定的文件位置 ...
图
图基本概念
注意:
线性表可以是空表,树可以是空树,但图不可以是空,即v一定是非空集
无向图、有向图
简单图、多重图
简单图
多重图
顶点的度、入度、出度
无向图:顶点v的度是指依附于改顶点的边的条数,极左TD(v)
有向图:
入读是以顶点v为终点的有向边的数目,记为ID(v)
出度是以顶点v为起点的有向边的数目,记为OD(v)
顶点的度等于入度和出度之和,TD(v)=ID(v)+OD(v)
顶点-顶点的关系描述
路径:顶点v1到顶点v2之间的一条路径
回路:第一个顶点和最后一个顶点相同的路径称为回路或环
简单路径:在路径序列中,顶点不重复出现的路径称为简单路径。
简单回路:除第一个顶点和最后一个顶点外,其余顶点不重复出现的回路称为简单回路。
路径长度:路径上边的数目
点到点的距离:从顶点u出发到顶点v的最短路径若存在,则此路径的长度称为从u到v的距离。若从u到v根本不存在路径,则记该距离为无穷
无向图中,若从顶点v到顶点w有路径存在,则称v和w是连通的
有向图中,若从顶点v到顶点w和从顶点w到顶点v之间都有路径,则称这两个顶点是强连通的
几 ...
排序
第八章 排序基本概念和排序方法排序的基本概念
排序:从大到小或从小到大排序
排序的稳定性:
稳定的:关键字相同的元素在排序之后相对位置不变
不稳定:相反
排序算法的分类:
内部排序:待排序记录全部放在计算机内存中*(关注算法时间、空间复杂度)*
外部排序:数据过大,以至于内存中不能容纳全部的数据,在排序过程中,尚需对外存进行访问排序*(还要关注读取/写磁盘的次数更少)*
插入排序算法思想︰每次将一个待排序的记录按其关键字大小插入到前面已排好序的子序列中,直到全部记录插入完成。
直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入已经排好序的表,从而得到一条新的、记录数量增1的有序表
算法描述:
算法分析:
时间复杂度:
最好的情况:比较次数n-1次
最坏的情况:$$O(n^2)$$
平均时间复杂度:$$O(n^2)$$
空间复杂度:$$O(1)$$
折半插入排序
时间复杂度依然是$O(n^2)$
注意:一直到low>high时才停止折半查找。当mid所指元素等于当前元素时,应继续令low=mid+1,以保证“稳定性”。最终应将 ...
线性表
线性表线性表的顺序表示和实现
初始化
步骤:
为顺序表L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址
将表的当前长度设为0
代码:
1234567891011//初始化const int MAXSIZE = 100;bool InitList(SqList L){ L.elem = new ElemType[MAXSIZE]; if(!L.elem){ return 0; } L.length = 0; return true;}
取值
步骤:
判断指定的位置序号i的值是否合理$$(1<=i<=L.length)$$,若不合理,返回false
若值合理,则将第i个数据元素L.elem[i-1]赋值参数e,通过e返回第i个数据元素的传值
123456789//取值int GetElem(SqList L,int i,ElemType e){ if(i<1 || i>L.length){ return -1; } e=L.elem[i-1]; ...
Java设计思想
思想统计
统计思想:利用map集合进行统计
遍历
遍历集合,按照指定的集合进行拼接的两种方式:
StringBuilder
StringJoiner
概率问题
如30%的甲,70%的乙:
创建一个新的集合:赋30%的"1",赋70%的"2"
对所创建的集合元素进行随机取值:Random r = new Random();
对随机取得的值进行条件判断,取到的值就有概率
123456789101112131415161718192021222324252627282930313233343536373839package CS408.CollectionText;import java.util.ArrayList;import java.util.Collections;import java.util.Random;public class Text2 { //班级里有N个学生要求:70%的概率随机到男生,30%的概率随机到女生 public static void main(String[] args) ...
