1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
vim ~/.vimrc

set number # 显示行号
syntax on # 语法高亮度显示
set autoindent # vim使用自动对起,也就是把当前行的对起格式应用到下一行
set smartindent # 依据上面的对起格式,智能的选择对起方式,对于类似C语言编
set tabstop=4 # 设置tab键为4个空格
set shiftwidth=4 # 设置当行之间交错时使用4个空格
set showmatch # 设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号

# 常用的自动补全
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {}<ESC>i
inoremap < <><ESC>i
inoremap " ""<ESC>i
inoremap ' ''<ESC>i
inoremap ` ''''''<ESC>i

Ubuntu22.04 安装英伟达驱动

由于英伟达安装驱动时不能运行X server,安装费尽周折记录一下以便后续使用

  1. 在software&update中有英伟达的驱动,选择了第一个安装了
  2. 去官网下载英伟达驱动,init 3 后运行
  3. 下载cuda toolkit 然后运行

Git_learning

Git基本操作

记录目前已经用到过的git操作,后续如果有发生新的操作再进行修改

创建仓库

1
2
git init
git clone

提交和修改

1
2
3
4
git add
git status
git diff
git commit

日志

1
2
git log
#git blame <file>

远程操作

1
2
3
4
git remote
git fetch
git pull
git push # -f为强制推送

分支

1
2
3
git branch -a -v -av -d -b
git checkout
git merge

Git子模块

问题

git add 时 出现warning 正在添加嵌入式 git 仓库

解决

  1. 添加子模块

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #=删除仓库索引=======================================
    # 如果是文件
    git rm --cached themes/next
    # 如果是文件夹
    git rm -r --cached themes/next
    # 如果执行以上命令后提示:【 error: 如下文件其暂存的内容和工作区及 HEAD 中的都不一样:】 ,`-f`强制删除
    git rm -r -f --cached themes/next

    #=添加仓库索引=======================================
    # 创建子模块并添加 url 地址
    git submodule add <url> project
    # 例如:
    git submodule add https://****.git themes/next
    # 或者使用 ssh 地址
    git submodule add git@g****.git themes/next

    添加成功后会生成.gitmodules文件

  2. 提交

    1
    2
    3
    git add . 
    git commit -a
    git push
  3. 拉取&更新

    1
    git submodule update --init --recursive

clone分支

  1. 克隆单分支

    1
    git clone -b {分支名} https://***.git
  2. 克隆所有分支

    1
    2
    3
    4
    5
    6
    7
    8
    9
    git clone
    git branch -a
    * master
    remotes/origin/HEAD -> origin/master
    remotes/origin/main
    remotes/origin/master
    git checkout -b main origin/main
    #作用是checkout远程仓库origin的分支main,在本地起名为main分支,并切换到本地的main分支

push

1. git remote

1
2
3
4
5
# 添加远程主机
git remote add <主机名> <网址>
# 删除远程主机
git remote rename <原主机名> <新主机名>

2. git push
1
2
3
git push <远程主机名> <本地分支名>:<远程分支名>
git push origin master
git push --set-upstream origin main # 主机名 主机分支名

如何配置实验环境

1.创建conda环境

1
2
3
4
5
conda env list
conda create -n {ENV_NAME} python=3.9

conda init
conda activate {ENV_NAME}

2.下载github代码

1

3.安装依赖包

1
2
3
4
5
6
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
conda install transformers
conda install scikit-learn(pip install sklearn)
boto3 tqdm
pip install sklearn_crfsuite

C++后端学习——WebServer

为找C++实习而进行学习WebServer源码

1. handle_for_sigpipe()

处理忽略SIGPIPE信号,防止因为错误的写操作(向读端关闭的socket中写数据)而导致进程退出

1
2
3
4
5
6
7
8
9
10
11
void handle_for_sigpipe()
{
struct sigaction sa;
memset(&sa, '\0', sizeof(sa));//'\0'结束标志
sa.sa_handler = SIG_IGN;//SIG_IGN表示忽略此信号.
sa.sa_flags = 0;
if(sigaction(SIGPIPE, &sa, NULL))

return;
}

1
2
3
4
5
6
7
8
9
10
11
12
//sigaction 的定义如下:
/*struct sigaction{
void (*sa_handler)(int);
sigset_t sa_mask

int sa_flags;

void (*s_sigaction)(int ,siginfo_t *,void*);
};*/

//int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
//signum参数指出要捕获的信号类型,act参数指定新的信号处理方式,oldact参数输出先前信号的处理方式(如果不为NULL的话)。

对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结束进程.

具体的分析可以结合TCP的”四次握手”关闭. TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端只是收到FIN包. 按照TCP协议的语义, 表示对端只是关闭了其所负责的那一条单工信道, 仍然可以继续接收数据. 也就是说, 因为TCP协议的限制, 一个端点无法获知对端的socket是调用了close还是shutdown.

对一个已经收到FIN包的socket调用read方法, 如果接收缓冲已空, 则返回0, 这就是常说的表示连接关闭. 但第一次对其调用write方法时, 如果发送缓冲没问题, 会返回正确写入(发送). 但发送的报文会导致对端发送RST报文, 因为对端的socket已经调用了close, 完全关闭, 既不发送, 也不接收数据. 所以, 第二次调用write方法(假设在收到RST之后), 会生成SIGPIPE信号, 导致进程退出.
https://blog.csdn.net/lmh12506/article/details/8457772

Welcome to MarsMeow’s blog

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

个人信息

个人简介

教育经历

中国科学技术大学 2020 年 09 月 - 2023 年 06 月
电子信息类 硕士 信息科学技术学院 合肥

  • GPA:3.10
  • 相关课程:数字图像分析、统计学习、组合数学、系统仿真与建模等

大连理工大学 2016 年 09 月 - 2020 年 06 月
计算机科学与技术 本科 电子信息与电气工程学部 大连

  • GPA:3.02
  • 相关课程:C/C++、数据结构与算法、计算机网络、计算机组成原理、操作系统、编译原理等

实习经历

北京中科寒武纪 2021 年 12 月 - 2022 年 03 月

项目经历

TBD