向Hexo博客中插入Jupyter Notebook
因为 Python 的笔记使用 Jupyter Notebook 进行记录十分的方便,并且 Jupyter Notebook 本身也支持 Markdown 的语法,所以在学习 Python 有关的内容时我喜欢使用 Jupyter Notebook 进行记录,但是一般我的笔记都分布在 Hexo 博客中,但是 Hexo 博客只能解析 Markdown,所以如何将 Jupyter Notebook 整合到 Hexo 博客中成了我的一大难题,经过几次的折腾,算是比较完美的解决了我的需求。
下面介绍我依次使用的方法
将 Jupyter Notebook 转 Markdown 文件
将 Jupyter Notebook 上传到 Github 上,然后通过 nbviewer.jupyter.org 查看,然后使用 iframe 插入到页面中
将 Jupyter Notebook 转为 HTML,上传到 Github(Gitee),启动 Github(Gitee) Page 服务,通过 iframe 引入 HTML 页面进行插入
转为Markdown
通过上图方法将 jupyter note ...
2020-10 学习总结
目前来到哈工大一个半月了,简单的总结这一个半月完成了哪些工作:
Java
Java 并发编程
黑马的视频,看完了
感觉这个老师讲的特别的好,学到了很多东西,强烈推荐
JVM(上篇)
尚硅谷的视频,看完了
SpringBoot 框架入门
看了多个机构的视频,最终产出入门博客一篇
《Spring揭秘》
这本书是一本 Spring 进阶的书,感觉收获很多,目前看完一半以上,后续的内容有点吃力,目前打算重新看一遍
图论
在暑假期间把波波老师的图论看完了,目前打算把博客写出来,目前已经快完成图的深度优先遍历的所有内容了
感觉自己真的变强了,解一些算法题感觉开始有点想法了,并且看别人的题解终于能够静下心去看懂了
机器学习与深度学习
《Python深度学习》(keras作者写的书)
除了循环神经网络没看懂,其他都看完了,收获还是蛮大的
《深度学习…》
日本人写的一本书,零基础的写一个深度学习程序,里面关于一些优化的技巧让我收获很大
《动手学深度学习(Pytorch版)》
这是网上教程,也可以看做是一本书了,目前快看完第三章了
动手学深度学习是我毕设那会看的,当时出于电 ...
numpy 入门
文章是使用 jupyter 写的,为了插入到博客中,使用 iframe 进行嵌入,所以阅读体验可能不是很好
图的表示
首先我们来看看图的数据结构长什么样子
一个图它由顶点 Vertex 和边 Edge 组成,上图蓝色的节点表示顶点,而节点与节点之间的有条线连着,这就是顶点之间的边。为了在计算机中表示图,我们给图的顶点编了号,从 $0$ 开始。在实际的模型中,顶点可能表示的是一个地铁站点,社交网络中的一个人,我们可以通过哈希表将编号与顶点实际的意义映射起来,进而把顶点的具体意义抽象为编号或者下标,当图的顶点以编号表示时,它就不具有具体的意义,从而我们可以研究图的一般理论,而当我们需要结论的具体意义时,可以通过哈希表将编号映射为具体的意义。
图的分类根据边是否有方向可以分为有向图和无向图,根据边上有否有权值可以分为有权图和无权图
有向
无向
有权
有向有权图
无向有权图
无权
有向无权图
无向无权图
图的基本概念在进入正题之前,简单的介绍一下在后面会遇到的关于图的基本概念。
自环边:图中有一个顶点有条边指向自己
平行边:两个顶点之间有两条边
如果一幅图既没有自环边,也没有平行边,我们就称该图为简单图。我们只处理简单图,如果图中有自环边或者平行边,我们会忽略这种边,或者抛出 ...
DOM节点
DOM 的全称为 Document Object Model,翻译为对象文本模型,它是一个针对于 HTML 的 API,它将 HTML 文档描绘为一棵层次化的树,DOM 规范了操作这个文档树的规范,例如添加、删除、移动等等操作。所有的浏览器都实现了(除了早版本的 IE) DOM 规范,这意味着开发人员在所有的浏览器中写的代码都是一样,不同为每一个浏览器写着不同的代码(这就是标准带来的好处)。
下面给出了 HTML 文档翻译成 DOM 树的例子
document 节点是每一个文档的根节点,HTML 文档中的元素都会被转化为 DOM 树中的节点。
NodeDOM 规定了一个 Node 类型的接口,DOM 树上的节点都实现了该类型,因此所有的节点都有着 Node 接口中规定的属性和方法,下面我们就具体介绍一下 Node 类型。
节点信息虽然 HTML 元素以及文本内容都会被转化为节点,但是明显 document 节点,HTML 元素节点,以及文本节点等等它们之间的地位是不一样的,这意味着虽然大家都是 Node 类型的对象,但是却有着不同,每个节点都有着自己的类型,而 nodeType ...
交错字符串
题目描述给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错组成的。两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干非空子字符串:
s = s1 + s2 + ... + sn
t = t1 + t2 + ... + tm
|n - m| <= 1
交错是 s1 + t1 + s2 + t2 + s3 + t3 + ... 或者 t1 + s1 + t2 + s2 + t3 + s3 + ...
提示:a + b 意味着字符串 a 和 b 连接。
示例1:
输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出:true
示例2:
输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"输出:false
解题思路深度优先遍历借助于辅助函数 isInterleave(String s1, String s2, ...
不同的二叉搜索树
题目描述给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树有多少种? 返回满足题意的二叉搜索树的种数。
示例:
输入:n = 3输出:5
解题思路对于 n 个数,我们分别以每个数作为根节点,因为根节点是不一样的,所以产生的树是不会重复的。我们记 n 能够形成 $G(n)$ 个二叉搜索树,以数字 i 为根节点能产生 $F(i)$ 个二叉搜索树,则可以得到
$$G(n) = \sum_{i = 1}^{n} F(i)$$
对于以 i 为节点,那么 $[1, i -1]$ 总共 $i - 1$ 个数形成它的左子树,而 $[i + 1, n]$ 总共 $n - i$ 个数形成它的右子树,所以我们可以得到。由 $G(n)$ 的定义可知,左子树总共有 $G(i - 1)$ 种可能,而右子树有 $G(n-i)$ 种可能,所以得到以 i 为根节点,总共有
$$F(i) = G(i - 1) \times G(n - i)$$
从而得到 $G(n)$ 的递归表达式
$$G(n) = \sum_{i = 1}^{n} G(i - 1) \times G(n - ...
不同的二叉搜索树II
题目描述给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同二叉搜索树。可以按任意顺序返回答案。
示例:
输入:n = 3输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]]
TreeNode 的定义如下
public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() { } TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) { this.val = val; this.left = left; this.right = right; }}
解题思 ...
BOM
BOM 指的是浏览器对象模型,它定义了如何操作浏览器(不是网页),但是事实上并没有有关于 BOM 的标准,很多浏览器厂商对其实现不一致,下面的例子都是基于 Chrome 浏览器的,但是大多数对于其他的浏览器也是成立的。
在本篇中会介绍与浏览器有关的几个对象,包括
window
location
history
windowwindow 对象有两重角色:
它是 JavaScript 访问浏览器的接口
它是在 EcmaScript 规范所规定的 Global 对象的实现
全局作用域所有在全局作用域中声明的变量都是 window 的属性,例如
let x = 1;function sayHello() { console.log("Hello!");}console.log(window.x); // 1window.sayHello(); // Hello!
所以如果一个函数是一个全局变量,在函数内部使用了 this,那么这个 this 代表就是 window 对象,例如
function copy(x) { thi ...