ARTS-Week-03

Algorithm

合并K个排序链表,Leetcode Merge k Sorted Lists

Review

评阅文章:10 Git Commands You Should Know
这篇文章介绍了10个常用的Git命令,用于检查(Inspect),删除(Remove),整理(Tidying):

Inspecting Things

command description
git diff 检查所有本地文件修改,可以加文件名选项查看一个文件的修改情况
git log 查看所有提交历史记录,-p file指定单个文件
git blame my_file 查看哪个用户在什么时候修改了my_file什么内容
git reflog 显示本地存储库HEAD的更改日志, 用于找到丢失的工作

Undoing Things

command description
git reset --hard HEAD 丢弃已staged和unstaged的修改
git checkout my_commit 丢弃unstaged修改
git revert my_commit 撤销my_commit中更改的效果,撤销时会进行新的提交
git clean -n 在工作目录中删除untracked files

Tidying Things

command description
git commit --amend 添加staged修改到最近的提交
git push my_remote --tags 推送到远程仓库

参考文章:
Git恢复之前版本的两种方法reset、revert
Git教程-廖雪峰
this Bitbucket Git tutorial

Tip

本周分享一个小工具WOX,用于快速检索文件,启动软件,启动搜索的工具,window下好用的小工具

Share

参考文章:极客时间《趣谈Linux操作系统 - 05 学会几个系统调用:咱们公司能接哪些类型的项目?》
Linux常见系统调用总结,主要包含进程管理,内存管理,文件系统,进程通信,系统调用定义在kernel源码:unistd_64.h文件中
ARTS-Week-03_第1张图片

进程管理:

fork:创建新进程,子进程拷贝父进程所有数据结构,返回两次,子进程调用返回0,父进程调用返回子进程ID。
execv: 子进程fork之后与父进程具有相同的代码,需要调用execv来替换子进程执行代码,这个时候子进程与父进程就执行不同的程序流了
waitpid: 父进程调用waitpid来检查子进程的运行状态

内存管理:

每个进程都有独立的虚拟地址空间,虚拟地址空间包含:进程的执行代码(代码段),进程执行过程中的数据(数据段),堆,共享库内存映射区,栈,内核虚拟存储器;进程需要使用部分内存的时候,需要通过系统调用来分配,但这个时候不代表对应到了物理内存,在写入数据的时候,才会触发中断,分配物理内存。
brk: 分配虚拟内存,扩展堆段大小,因此分配的数据与堆段连在一起
mmap: 在虚拟内存空间上重新划分一块区域,系统会使用一个链表来保存这些区域块信息

文件系统:

linux中,一切皆文件,程序(二进制文件),配置文件(文本文件),控制台输出(stdout文件),管道,Socket,设备,文件夹,进程运行情况(/proc/pid)
文件操作:打开(open),关闭(close),创建(create),跳到某个位置(lseek),读写(read, write)。

进程通信:

信号处理,kill:传递信号给进程,sigaction: 注册信号处理程序
消息队列,msgget: 创建队列,msgsnd:发送消息至消息队列,msgrcv:从队列中取消息
共享内存,shmget: 创建共享内存块,shmat: 将共享内存映射到内存空间
信号量机制,sem_wait: 占用信号量,sem_post:释放信号量
Socket通信,网络通信使用Socket提供服务,可以看做“插槽”,“插口”,通信双方建立一个Socket, socket, bind, listen, accept, connect

你可能感兴趣的:(ARTS)