DAY10

今天学的东西不是很多,主要做了几题力扣的二叉树的题目以及学会使用Makefile和linux的一些常用命令

Makefile

目标和依赖

使用make默认执行第一行

all: test
    @echo "hello, all"
​
test:
    @echo "hello, test"
// -o 用于指定输出文件的名称
// 链接阶段 指定生成的可执行程序的名称
// 编译阶段 指定生成的目标文件(.o)的名称
// -c用于生成.o文件
main: main.o foo.o
    g++ main.o foo.o -o main
main.o: main.cc
    g++ -c main.cc  -o main.o
foo.o: foo.cc
    g++ -c foo.cc -o  foo.o
clean:
    rm main *.o

变量

系统变量

$@ - 目标文件名

$@ 代表当前规则的目标文件名。在规则中,你可以使用 $@ 来代替目标的名字。

示例:

# $@ 表示目标 main,等价于 g++ -o main main.o foo.o
main: main.o foo.o
    g++ main.o foo.o -o $@
main.o: main.cc
    g++ -c main.cc  -o $@
foo.o: foo.cc
    g++ -c foo.cc -o $@

$^ - 所有的依赖文件(去重)

$^ 代表当前规则的所有依赖文件,且会去重。这个变量非常适合在链接或组合多个依赖文件时使用。

示例:

# $^ 表示 main.o foo.o,等价于 g++ -o main main.o foo.o
# $^ 代表目标后的所有依赖文件
main: main.o foo.o
    g++ $^ -o $@
main.o: main.cc
    g++ -c $^  -o $@
foo.o: foo.cc
    g++ -c $^ -o $@

$< - 第一个依赖文件

$< 代表目标的第一个依赖文件

main: main.o foo.o
    g++ $^ -o $@
%.o:%.cc
    g++ -c $< -o $@

自定义变量

递归变量

CC = g++ #编译器
main: main.o foo.o
    $(CC) $^ -o $@
%.o:%.cc
    $(CC) -c $< -o $@

使用源文件和目标文件列表

CC = g++ #编译器
CFLAGS2 = -c
SRCS = main.cc foo.cc
OBJS = $(SRCS:.cc=.o)
main: $(OBJS)
    $(CC) $^ $ -o $@
%.o:%.cc
    $(CC) $(CFLAGS2) $^ -o $@

Linux命令

Linux基础命令

搜索

grep main -c *.cc
rbtree.cc:1
test.cc:0
​
grep main -i *.cc
rbtree.cc:int main()
​
grep main -n *.cc
rbtree.cc:311:int main()
    
grep main -r *

grep main -C 10 *.cc

查找文件

find -name rbtree.cc
./c++26/rbtree.cc
// 忽略大小写
find -iname test.cc
./c++26/test.cc
./c++26/TEst.cc
./c++23/test.cc
// 在指定目录下查找
find ./c++26 -name test.cc
./c++26/test.cc
// 查找文件大小大于20k的文件
find . -size +20k
./c++24/a.out
./c++26/a.out
./c++25/1_线程池/a.out
./c++23/a.out
// 查找对象小于20k
find . -size -20k
// 查找对象等于20k
find . -size 20k
// 查找目录
find . -type d
.
./c++24
./c++26
./c++26/TEst.cc
./c++25
./c++25/静态多态_线程池
./c++25/线程池
./c++25/1_线程池
./c++25/生产消费
./c++23
​
// 查找文件
 find . -type f
// 查找小于10min修改的文件或者目录
find . -cmin -10
./c++26
./c++26/test.cc
./c++26/TEst.cc
// 查找大于10min
find . -cmin +10
// 近似10min的
find . -cmin 10
// 查找小于1天修改的
find . -ctime -1
./c++26
./c++26/a.out
./c++26/test.cc
./c++26/TEst.cc
./c++26/rbtree.cc
// 查找大于1天
find . -ctime +1
// 近似10天的
find . -ctime 1

查找进程信息

ps -ef | grep test
5846    5463 99 10:30 pts/0    00:00:06 ./test

感觉这些东西的实用性不大,但好歹也是没有白白的挥霍掉一天。没有方向的时候可以做一下力扣的题目就当打发时间,清理一下思路,明天开始更新基础组件(内存池和mysql连接池),在搞定这两个之后,好好学一下Mysql和Redis(可能就是做一些sql语句的题目,暂时没有什么好的思路)。如果是动手写项目的话,花费的时间长,周期大,而且很多都是业务逻辑代码,而转移到自己的简历上只需要看懂会吹水就行。所以剩余的事件还是以面试题为主,在搞定基本的基础组件,红黑树,线程池,内存池和连接池之后就可以看一些项目的视频,主要是看和理解,然后巩固自己的八股并且搞明白自己简历上写的东西就可以了。回头再将recator框架再好好看看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值