Hexo博客next主题数学公式渲染问题
请忽略下述方法,具体的解决方法为换个目录重装,具体步骤见
Hexo博客next主题数学公式重复显示
之前关于hexo渲染数学公式问题纠结了很久,而且我这个问题非常的奇葩:
公式渲染了一遍,但是原来的代码也会显示,非常奇怪。后来找到一篇博客https://ranmaosong.github.io/2017/11/29/hexo-support-mathjax/看了这篇文章之后解决了大部分问题,但是有时候还是会出现公式无法渲染的问题,我看了一下next主题的_config.yml的mathjax配置# MathJax Support
mathjax:
enable: true
per_page: false
cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML
结合博客一看发现这边cdn似乎要修改# MathJax Support
mathjax:
enable: true
per_page: true
#cdn: https://cdnjs.cloudflar ...
浙大数据结构Week9
课程地址:https://www.icourse163.org/course/ZJU-93001笔记中图片均来自此mooc中讲义。
这周主要讲了几种排序算法,下面回顾下。
Part1:回顾首先老师提了几个前提条件。
这里内部排序是指排序的数据可以一次性在内存中进行排序,与此对应的是外部排序,外部排序是指数据量很大,超过内存容量,无法一次性排序完成。
注:下述的$N$均代表排序元素个数,数组元素记为$A[i]$
1.冒泡排序冒泡排序的算法是这样的,一共$N$轮,第$i$轮对前$N-i+1$个元素进行如下操作:从第一个元素开始,如果后一个元素比前一个元素小,则交换两个元素,操作完一步之后对第二个元素重复此操作,直至第$N-i+1$个元素。这样第$i$轮可以保证第$N-i+1$个元素是前$N-i+1$个元素中最大元素,所以第$1$轮使得第$N$个元素为最大元素,第$2$轮使得第$N-1$个元素为第二大的元素,以此类推$N$轮之后排序完成。从以上过程中可以看出,只有两个元素不相等时才会进行交换,所以冒泡排序是稳定的。伪代码如下:
2.插入排序插入排序同样进行$N$轮操作,第$i$轮将第$ ...
Hexo博客sitemap报错
今天想结合网上的教程把博客提交百度谷歌收录,但是碰到一个巨坑,这里记录下给后续的小伙伴参考下。在生成sitemap.xml文件之后,提交谷歌之后sitemap.xml解析错误。出现如下报错:
这个问题整整花费了一个下午才搞定,网上没找到几个相关资料,最后参考一位大佬的博客才找明原因。出现这个问题是由于文章标题里有&导致,只要去除了标题里的&即可。
参考文章: https://www.voidking.com/2016/12/02/deve-hexo-sitemap/
北理Python爬虫Week1
课程地址:https://www.icourse163.org/course/BIT-1001870001笔记内容结合课件整理。
这里对北理爬虫课程第一周内容回顾,本周主要介绍了requests库的使用
1.Request库入门首先来看下request的基本使用,基本使用如下
requests.get(url, params=None, **kwargs)
url : 拟获取页面的url链接
params : url中的额外参数,字典或字节流格式,可选
**kwargs: 12个控制访问的参数
import requests
r=requests.get("http://www.baidu.com")
print(r.status_code)
r.text[:400]
200
'<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><me ...
浙大数据结构Week8
课程地址:https://www.icourse163.org/course/ZJU-93001笔记中图片均来自此mooc中讲义。
这周是图的最后一部分内容,介绍的了最小生成树以及拓扑排序,下面回顾下。
Part1:回顾1.最小生成树首先看下最小生成树的定义。最小生成树这个名字中有三重信息,首先树,其次是生成树,最后是最小生成树,具体如下。生成最小生成树使用的是贪心算法,一般有两种,分别为Prim算法以及Kruskal算法,下面分别介绍。
Prime算法Prime算法是让一颗小数长大。具体思路是先任取一个点a包括在树中,选取距离树中顶点距离最短的边,然后将这个边及对应顶点b包括在树中,更新不在树中的点距离树的最短距离,接来下重复此操作即可。注意由于只增加了点b,所以在更新最短距离的时候只要更新b的相邻点即可。可以看到,这个算法和之前讲的Dijkstra算法很相似,下面一起列出。
Kruskal算法Kruskal算法是每次选取最小权重的边,如果加入此边不形成回路,则将边及顶点加入生成树中。在此过程中,判断是否形成回的方法是使用并查集,每次选取权重最小的边使用最小堆。
2.拓扑排序首先 ...
浙大C语言Week6 and week7
week6&week7这两周主要讲了函数以及数组,这里提几个点。首先看下数组
数组是一种容器,特点是:
其中所有的元素具有相同的数据类型;
一旦创建,不能改变大小
*数组中的元素在内存中是连续依次排列的
函数部分提一个细节如果声明一个没有参数的函数,应该声明为void f(void)而不要声明为void f()因为这样是表示函数的参数未知,并不表示没有参数。
浙大数据结构Week7
课程地址:https://www.icourse163.org/course/ZJU-93001笔记中图片均来自此mooc中讲义。
这周是图的第二部分内容,介绍的是最短路径问题,下面回顾下。
Part1:回顾1.最短路径问题首先看下最短路径问题的描述。这类问题也可以分为两类,分别是单源和多源。首先来看下单源的问题,这里也可以分为两种,分别为无权和有权的情形。无权图的情形其实就是数距离原点的步数,这样的话就可以使用上一讲使用的BFS算法。有权图的情形使用了贪心算法,从源点开始,每一步找到已访问节点至未访问节点的最短路径,将这条路径及顶点包括在已访问的节点中具体如下。最后来看一下多源最短路算法,其实就是个三重循环。
Part2:作业
作业1
07-图4 哈利·波特的考试(25 分)哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠 ...
浙大数据结构Week6
课程地址:https://www.icourse163.org/course/ZJU-93001笔记中图片均来自此mooc中讲义。
这周开始了图的内容,内容不是很多,下面回顾一下。
Part1:回顾1.图(Graph)首先来看一下图的定义。再来看下图的抽象数据类型定义。看了上述介绍之后,自然有个很基础的问题,如何在程序中表示一个图,一般有以下两种方法。1.邻接矩阵法。显然,无项图的邻接矩阵为对称矩阵,浪费了很多空间,所以此时可以使用一维数组来表示,如下所示。那么邻接矩阵的优缺点分别是什么呢?
2.邻接表表示法。邻接表表示法的意思是记录每个点以及和它直接相连的点,具体的意思是首先记录根节点,根节点指向与其链接的节点,每个节点分为两个部分,值和指针,指针指向与根节点相连的其他节点,所以共占$N+2E$空间(每条边占用两个空间)。
再来看下邻接表的优缺点。
最后来比较一下邻接矩阵法和邻接表法占用的空间,设$N$个点和$E$条边。那么邻接矩阵法占用的空间为$N^2$,邻接表法占用的空间为$N+2E$。注意对于图来说不计重边,如果是无向图,那么$E\le C_N^2$。因为任意两点之间最多一条边 ...
浙大数据结构Week5
课程地址:https://www.icourse163.org/course/ZJU-93001笔记中图片均来自此mooc中讲义。
这周是树的最后一部分内容,主要讲了堆以及哈夫曼树,下面回顾下。
Part1:回顾1.堆(heap)首先看一下优先队列的含义。如果我们使用完全二叉树存储优先队列,那么就称为堆。简单来说,堆就是任意父节点小于等于或大于等于子节点的完全二叉树。再来看下堆的抽象数据类型描述,这里只列了最大堆,最小堆同理。这部分的代码实现都会在作业中体现,故这里从略。最后来看下最大堆的建立这个问题。这里讲一下第二种方法,处于倒数第2层的元素最多交换1次,倒数第3层可能要交换1次至倒数第2层,之后可能再交换一次,所以1共最多要交换2次,同理倒数第k层的元素最多交换k-1次,下面计算倒数第k层的元素个数。假设一共有$n$个元素,完全二叉树共$k$层,那么$2^{k-1}\le n< 2^k-1$,最后一层最多有$2^{k-1}$个元素,所以最后一层的元素个数小于$\frac{n}{2}$,倒数第二层的元素个数小于$\frac{n}{4}$,交换次数最多为$1$,同理倒数第$i$层 ...
浙大C语言Week3 and Week4 and Week5
week3这一周主要讲了分支,还是比较基础的内容,来看两点。
switch
switch适合多分支的情形,但是注意switch后的参数必须为整数以及只有碰到break才会跳出switch。#include <stdio.h>
int main()
{
printf("请输入月份:");
int month;
scanf("%d", &month);
switch ( month )
{
case 1: printf("January\n"); break;
case 2: printf("February\n"); break;
case 3: printf("March\n"); break;
case 4: printf("April\n"); break;
case 5: printf("May\n"); break;
case 6: printf("June\n"); break;
case 7: printf("July\n"); break;
case 8: printf("August\n" ...
斯坦福CS106A作业2
这次作业比较简单,但还是记录一下。
problem1:
这题只要算出矩形左上角的坐标即可。import acm.graphics.*;
import acm.program.*;
import java.awt.*;
public class DrawCenteredRect extends GraphicsProgram {
/** Size of the centered rect */
private static final int WIDTH = 350;
private static final int HEIGHT = 270;
public void run() {
GRect rect= new GRect(WIDTH,HEIGHT);
rect.setFilled(true);
rect.setColor(Color.BLUE);
add(rect,(getWidth()-WIDTH)/2.0,(getHeight()-HEIGHT)/2.0) ...
浙大数据结构Week4
课程地址:https://www.icourse163.org/course/ZJU-93001笔记中图片均来自此mooc中讲义。
这周的的内容依旧是树,感觉有点难,现在回顾下。
Part1:回顾1.二叉搜索树(BST)首先来看一下二叉搜索树的定义。看完了定义,再来看下二叉搜索树支持的操作,这部分操作和上一周课程中树的操作类似,但是由于二叉搜索树的性质,又略有不同。先来看下Find操作,Find操作是在二叉搜索树寻找给定的元素,返回它所在节点的位置,如果元素不存在,则返回空。FinMin,FinMax比较容易,因为根据二叉搜索树的特点,最大元素一定在最右分支的端节点上,最小元素一定在最左分支的端节点上。再来看一下Insert操作,插入操作的关键点是找到插入的位置,最方便的自然是插在叶节点之后,所以这里可以采取类似Find的操作。
从根节点开始,如果树为空,则插入点为根节点。
若树非空,则拿插入值和根节点比较,如果插入值小于节点值,在左子树继续进行插入操作。
如果插入值大于节点值,在右子树继续进行插入操作。
重复此操作直至节点为叶节点。
来看一张图可以方便理解。最后来看一下删除操作, ...