浅玩一下vuepress

上个学期的专业前沿课要求做的网站,由于正好卡在期末,所以完全没时间搞,浅试了一下vuepress。确实是相当方便,特别是只需要文档的网页,上手特别容易,基本只要照着文档中的内容改配置文件即可。但是缺点就是可以自定义的地方比较少,样式也很烂大街。

不过对于我这种随便敷衍一下作业的也够了

网站部署到了GitHub Page上,放个链接 可以点这个

💡 阅读更多

TPO4-5Listening听写script存档

真的觉得听写没什么用,而且太浪费时间和精力了,到后面就完全是机械式听写了,根本不想思考了。准备改用精听了。

💡 阅读更多

TPO1-3Listening听写script存档

练了一下TPO听力的听写,在这边存个档。

说实话没什么用,而且相当耗时间,可能也只是因为我太菜了吧。。。

TPO2的没怎么写,因为OG上听力部分的练习就是TPO2的,大部分script都已经看过了所以懒得做了。

💡 阅读更多

对copy-constructor的一点理解

Memberwise Initialization

在默认情况下,当以某个class object作为另一个object的初值时,会发生成员逐一初始化,

1
2
Example E1(8);
Example E2 = E1;

class data member会被依次复制,即对象中的每个成员都会被复制到另一个对象的相应成员上。

对于这种情况:

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
class Matrix {
public:
Matrix(int row, int col) : _row(row), _col(col)
{
_pmat = new double[row * col];
}
~Matrix()
{
delete [] _pmat;
}
private:
int _row, _col;
double *_pmat;
};


// in this case

Matrix mat(4, 4);
//此处constructor发生作用
{
Matrix mat2 = mat;
// 此处进行了default memberwise initialization
// ...
// 此处,mat2的destructor发生作用。
}

根据默认的成员逐一初始化,mat2._pmat = mat._pmat,所以这两个指针指向了同一个堆内存空间内的数组,当mat2的析构函数发生作用时,该内存空间便被释放,但是mat的指针还是指同一空间,此时再使用这个指针就会产生严重错误。

💡 阅读更多

在学C++Primer做的一些笔记

大概是一个月前,实在是闲的没事,在图书馆想找点C++的书学习学习这个我一直没深入的语言。本来是奔着Essential C++去的,结果找了一圈只有英文版的而且还是旧版,想想就还是算了吧,这种技术肯定是要看新标准的更好。最后只找到了这本C++ Primer,虽然我内心对这种大部头的书比较抗拒,但是要想学好一门技术,这种权威的书籍是最好的。

看看这包浆的封面和书页,这块大砖也肯定帮到过不少人吧。

💡 阅读更多

用React做的一个简易记事本(2):客户端

React项目的初始化搭建

由于手动搭建React环境过于麻烦,要的依赖相当多,需要花费大量时间在配置上,所以就直接使用React官方提供的create-react-app脚手架工具。

脚手架的使用有两种方法,一种是先用npm或yarn全局安装create-react-app然后再create-react-app my_app,另一种是使用npx create-react-app my_app这样就不用提前安装好create-react-app工具。

💡 阅读更多

记一些Markdown的基础标签写法

由于很久没有写博客了,很多Markdown的写法已经忘得差不多了。再加上最近又发现自己记忆力下降非常严重,学习新的东西不做点笔记实在是不行了,做笔记的话看了一下还是直接用md写比较方便,毕竟md用熟了以后玩GitHub的时候也能稍微写点像模像样的README。

所以在这里记录一下方便我以后要用了但想不起来时有地方找。

💡 阅读更多

一个简单的React事件绑定

需要事件绑定的原因

首先说明一下,React生成出来的事件,里面的this并不是指向自身的,这是Javascript语法的规定,是不可避免的。

比如<button onClick={this.plus}>plus</button>中,plus上的this其实是绑在了window上的,也就是事件响应时的上下文,并不是当前的组件实例。说简单点,就是当触发该事件时,是在浏览器的总的一个环境里的,所以这时事件里如果用到this的话,this指向的其实是window。

但是这样会使得事件的使用和处理变得相当麻烦,所以这时就需要将事件内的this指针转移到事件的作用域上。

简单看一下bind()函数

调用 bind() 会创建一个新的函数,当这个新函数被调用时,函数内部的this会被置为参数提供的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var example = {
value: 114514,
getValue: function() {
return this.value; //这里使用了this
}
}

var unbindThis = example.getvalue;
console.log(unbindThis()); // 调用的对象是window,所以里面的this.value => window.value
// output: undefined

var bindThis = unbindThis.bind(example);
console.log(bindThis()); // 但是bind之后,会将this的值置为example提供的值
// output: 114514
💡 阅读更多

vim初学-基础快捷键

最近在学Vim,确实是一个非常好用的编辑器,因为所有的操作都是通过键盘来实现的。
以前使用其他编辑器的时候经常会不断使用鼠标来完成一些操作,这就导致了右手一直在键盘和鼠标之间挪动,而且每次从鼠标挪回键盘时都会出现右手不知道放在键盘哪个位置的情况,所以就要么使劲摸j键上面的那个点,要么就是眼睛看一下键盘。虽然都不是什么大问题,但是频繁的变化真的会打乱思维。所以现在决定要好好学一下Vim。

正因为Vim的操作都可以通过键盘实现,所以Vim的快捷键非常多,在初学的过程中就记了很多基本的快捷键,现在在博客上分享一下,也方便我以后想用的时候速查。


Normal Mode

指针移动

基础移动

hjkl -> 左下上右

横向移动

w -> 移到下一个单词的开头,以空格和特殊字符划分
W -> 移到下一个单词的开头,以空格划分
b -> 上一个…
B -> 上一个…

e -> 移到下一个单词的结尾,以空格和特殊字符划分
Ee -> 移到下一个单词的结尾,以空格划分
ge -> 上一个…
gE -> 上一个…

f + … -> 移到本行下一个输入的字符上
F + … -> 移到本行上一个输入的字符上
t + … -> 移到本行下一个输入的字符前
T + … -> 移到本行上一个输入的字符前

(f + …)搜索后
; -> 重复搜索下一个
, -> 重复搜索上一个

0 -> 移到当前行第一个字符
^ -> 移到当前行第一个非空白字符
$ -> 移到当前行最后一个字符
g_ -> 移到当前行最后一个非空白字符

💡 阅读更多

简单分享一下云服务器使用前的准备工作

一直觉得之前的博客不太满意,不管是UI还是整体的风格,总感觉看着太单调了。
最近没什么事就想着把博客重新搞一下,在这里记录一下更新博客的过程。

其实想换的时候还是想了一下要不要换个Word Press之类的用用,但是又想到自己假期的时候接触了一下前端的东西,自己还是挺感兴趣的,HTML、CSS、JS,虽然不至于学得很精通,但是自己玩玩还是可以的。所以就想着还是用这种纯前端的博客吧。毕竟没有后台源码看起来也相对简单一点。

购买云服务器

要搞这种纯前端的博客,其实根本用不到服务器,一个对象存储基本上就够了。

但是我对Linux比较感兴趣,自己电脑配置不高,上虚拟机太耗资源了,而且用起来不太方便,特别是我这种一会笔记本上玩玩,一会又台式机上玩玩的,所以还是买个云服务器,只要有网就直接ssh连上去玩就行。

💡 阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×