vimrc 记录

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
""""插件""""
call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree'
Plug 'Valloric/YouCompleteMe'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'Yggdroot/LeaderF', {'do': ':LeaderfInstallCExtension'}
call plug#end()

set tags=tags;

"F2打开和关闭NERDTree"
map <F2> :NERDTreeToggle<CR>
let NERDTreeWinSize=30

"YCM配置"
let g:ycm_global_ycm_extra_conf='~/.vim/plugged/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py'
let g:ycm_add_preview_to_completeopt = 0
let g:ycm_show_diagnostics_ui = 0
let g:ycm_server_log_level = 'info'
let g:ycm_min_num_identifier_candidate_chars = 2
let g:ycm_collect_identifiers_from_comments_and_strings = 1
let g:ycm_complete_in_strings=1
let g:ycm_key_invoke_completion = '<c-z>'
set completeopt=menu,menuone
noremap <c-z> <NOP>
let g:ycm_semantic_triggers = {
\ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'],
\ 'cs,lua,javascript': ['re!\w{2}'],
\ }

"""""""""""""""
"" 通用设置
"""""""""""""""
set nocompatible
filetype on
set t_Co=256
set autoread
set autowrite
set number
syntax on
set showcmd
set encoding=utf-8
filetype indent on
set autoindent
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
set hlsearch

"不同模式光标样式"
let &t_SI.="\e[5 q" "SI = INSERT mode
let &t_SR.="\e[4 q" "SR = REPLACE mode
let &t_EI.="\e[1 q" "EI = NORMAL mode (ELSE)

"括号补全"
inoremap ( ()<ESC>i
inoremap ) <c-r>=ClosePair(')')<CR>
inoremap [ []<ESC>i
inoremap ] <c-r>=ClosePair(']')<CR>
inoremap " ""<ESC>i
inoremap ' ''<ESC>i
inoremap { {}<ESC>i
" { 后快速回车 ==> 带缩进的花括号"
inoremap {<CR> {<CR>}<ESC>O
function! ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
else
return a:char
endif
endfunction
inoremap jk <ESC>

2022年12月2日

几乎有两个月没有更新博客,最近也是发生了一些事情打乱了节奏。10月16号因家里原因回去了一趟,然后健康宝弹窗导致无法返京,一直延误到11月8日后返京。后续在学校隔离了一周,好不容易在学校待了两周时间,遇上疫情大肆扩散,目前又出来到了威海出差,又是隔离5天,等事情办完应该就回家了。

这段时间最大的感受是有些无力,很多事情无法改变甚至无法预知,只能随着时间去见证、去经历,但不管怎么说,还是要继续努力。

2022年10月6日

使用 Hexo 框架发现它只是将生成的 Public/ 文件夹下的文件上传至 git 服务器,这样的话写作的源文件和主题文件等没有被git管理。导致换了电脑或者想在多台电脑同时写博客同步困难。

目前的解决方法是在原来的 git 服务器上创建一个新的分支(和原来管理 Public/ 文件夹静态文件的 master 分支没有关系),我将这个分支取名为 hexo-source,这样的话就可以将源文件也使用 git 服务器管理了。

以后在一台新的电脑写博客的时候,只需要将仓库 clone 下来,然后切换到hexo-source分支写作。完成之后不仅需要将 Public/ 文件夹上传:

1
hexo g & hexo d

还要将源文件同步至远程的hexo-source分支:

1
git add . & git commit -m"description" & git push origin hexo-source

在新机器上写作前也注意需要先将远程分支同步到本地:

1
git pull

2022年9月23日

昨天遇到一个教科书级的 bug, 一下没有反映过来,花了几个小时终于找到原因了。是一个用 C 语言写的嵌入式代码,函数传入一个结构体变量的地址,需要对结构体内变量赋值:

1
2
3
4
5
6
7
8
struct Example {
uint8 a;
uint16 b;
uint32 c;
....
}

void fill(struct Example* output, struct p* input);

由于需要对input中的每个字节进行单独的操作,这段程序对结构体成员也使用数组的方式来赋值:

1
2
*((uint8 *)output) = 0x9;
*(uint16 *)(((uint8 *)output) + 1) = 288;

我一开始实在是没有反应过来,认为 C 语言只要对指针灵活应用,这样强转也是可以取到对的值的。结果总是有些变量赋值没法赋上去。

这里就是教科书级的错误,编译器会在结构体中补充字节使其对齐,所以对结构体不能像数组一样访问内部成员。

2022年6月29日

被自己蠢哭了,做 Lab 的时候一下子没有反映过来运行时栈是向下增长的,为了使用户线程运行在单独的栈中,需要在上下文切换之前将栈指针设置到线程栈:

1
2
3
// 把返回地址设置到func的地址,栈指针设置到栈顶!!
t->context.ra = (uint64)func;
t->context.sp = (uint64)t->stack + STACK_SIZE;

导致内存错乱了,debug就是灾难。

2022年6月23日

已经因为疫情被封了 50 多天了,何时有转机?

2022年5月11日

又是一个离谱的bug,在使用springBoot开发完成时,使用maven将其打包成jar包,执行的时候一直报错:大概意思是说无法解析mybatis的mapper文件,但我仔细确认过打包出来的jar包中是有这些xxMapper.xml的。
我全局配置文件中关于mybatis是这样配置的:

1
2
3
4
mybatis:
configuration:
map-underscore-to-camel-case: true
mapper-locations: classpath:/mapper/**

后来将mapper-locations改成如下就成功了,太坑了。

1
2
3
4
mybatis:
configuration:
map-underscore-to-camel-case: true
mapper-locations: classpath:/mapper/**.xml

2022年5月4日

使用vue开发的项目上线的时候,记得将所有console.log的调试信息输出取消掉。

2022年4月22日

今天向自己的git服务器clone下来仓库并修改之后,提交不上去,说是 Permission Denied。

1
git clone xiaodongfan.com:/....

后面找了很久错误才发现忘了在地址前加上用户了git@xiaodongfan.com:/...

2022年4月12日

今天在数组排序上遇到一个问题,当使用Arrays.sort()进行排序时,可以传入一个Comparator来指示排序规则,当我想要使用以下代码进行排序时,编译器一直报错:

1
2
int[][] arr = new int[][]{{1,2}, {2, 3}, {2, 5}, {3, 1}};
Arrays.sort(arr, Comparator.comparing(a -> a[1]).thenComparing(b -> b[1]));

Comparator.comparing()方法接收一个「值提取器」,因为是一个函数式接口,所以我提供一个lambda表达式,后面的thenComparing()方法也一样。
但编译不通过,最终,需要给lambda表达式参数加上参数类型才通过:

1
2
int[][] arr = new int[][]{{1,2}, {2, 3}, {2, 5}, {3, 1}};
Arrays.sort(arr, Comparator.comparing((int[] a) -> a[1]).thenComparing(b -> b[1]));

2022年4月8日

今天开发Vue时发现了一个神奇的事情:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
async created() {
await this.getBlog()
},
mounted() {
// 这里使公式和代码格式化并不放在mounted中,因为created和mounted钩子使异步执行的
// 可能会存在数据还未获取就渲染页面的情况
Prism.highlightAll()
this.$formula(this.$refs.contentRef)
},
methods: {
async getBlog() {
const {data: res} = await this.$http.get(`public/blog/${this.$route.params.blogId}`)
console.log(res)
if (res.meta.status === 200) {
this.blog = res.data
} else {
this.$message.error('获取博客数据失败:', res.meta.msg)
}
}
},

以上代码我在created钩子中向服务器获取数据,然后再mounted钩子中拿到dom元素进行部分修改(将代码和公式格式化),结果就是不成功。

后面发现在Vue中,created和mounted钩子执行并不具有严格的顺序,也就是说可能还未获取到后台数据,这里就执行了mounted里头的操作。
最后解决的办法是直接将上述操作转移到created钩子里去,通过关键字await来保证异步任务执行完:

1
2
3
4
5
6
7
8
9
async created() {
await this.getBlog()
// 这里使公式和代码格式化并不放在mounted中,因为created和mounted钩子使异步执行的
// 可能会存在数据还未获取就渲染页面的情况
Prism.highlightAll()
this.$formula(this.$refs.contentRef)
},
mounted() {
},

2022年4月7日

近期一直在开发自己的个人博客网站,所以博客更新要缓一缓。

2022年3月11日

匹配邮箱的正则表达式:

1
^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+

匹配手机号的正则表达式:

1
^[1][3,4,5,7,8][0-9]{9}$

2022年2月19日

SpringMVC框架注解开发时,使用的Spring框架版本为5.2.19出现以下错误:

1
ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet

原因为jdk版本过高(开发jdk版本为17),生成的目标字节码版本过高,通过Settings->Build,Execution,Deployment->Java compiler修改目标字节码版本为jdk 8;问题解决。
jdk版本

2022年2月15日

假期要结束了,准备返校。

2022年1月16日

放寒假回家的第一天。

2022年1月12日

Markdown中插入表格,以及对齐方式。

1
2
3
4
| 标题 | 标题 | 标题 |
| :------| ------: | :------: |
| 左对齐 | 右对齐 | 这是一个长文本 |
| 这是一个长文本 | 这是一个长文本 | 居中对齐 |
标题 标题 标题
左对齐 右对齐 这是一个长文本
这是一个长文本 这是一个长文本 居中对齐

2022年1月6日

springframework的maven依赖(导入这个之后会将springframework需要的依赖导入):

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.19.RELEASE</version>
</dependency>

自动装配要求xml文件增加以下:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">


<context:annotation-config/>

</beans>

2022年1月1日

新年快乐!愿接纳自己,不惧成长。

2021年12月

进入考期了,每次考期复习总是让我难以静下心来干别的事情,希望早点考完 `(>﹏<)′