C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.33.0_x86__mdqgnx93n4wtt\hardware\tools\avr\bin
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.33.0_x86__mdqgnx93n4wtt\hardware\tools\avr\avr\include\avr
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.33.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\bootloaders
# ATmega328P的bootloader在atmega\ATmegaBOOT_168.c
各目录下使用Makefile作为编译规则:
不同架构使用的make.exe不同,如Arduino Due的make位于:
~\Documents\ArduinoData\packages\arduino\hardware\sam\1.6.12\system\CMSIS\Examples\cmsis_example\gcc...
~\Documents\ArduinoData\packages
~\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.6.3\libraries
一, 恢复到上一次commit的状态
会使上一次commit之后的所有修改丢失,谨慎使用。
git reset --hard # 将所有tracked的文件恢复到上一次commit的状态
git clean --df # 将所有未tracked的目录和文件删除
二, 清理临时文件
git clean --df # 要注意此时自己新创建的文件需要通过add命令跟踪,否则会被一起清理
三, 保存自己未commit的修改后更新代码
想更新查看代码,但自己有已经add但未commit的修改,可能会有冲突,若暂时不解决,可以通过下面命令更新代码。
git stash save “临时存储修改的代码” # 将tracked的文件修改存储到栈,否则无法更新
git pull # 此时不会出现冲突,所以可以用于日常定时更新
git stash pop # 需要合并自己的修改,解决冲突时,恢复自己的代码修改
四,查看一个文件什么时候做了什么修改
git log <文件名> # 查看哪些提交里修改了这个文件
git show # 查看当次提交做了哪些修改,--stat选项可以只查看修改了的文件名
或
git log –p <文件名> # 查看修改了该文件的提交中对该文件做的修改
五, 从PC向编译机同步代码,在编译机上push最终版本
PC上修改后去编译机一边编译一边修改,可以通过下面的方式:
PC端git push到isource,编译机上git pull同步。
编译机上修改后:
git add .
git commit --amend # 追加提交
git push origin HEAD:分支名 --force # 替换PC提交、但编译验证未完成的提交记录,push最终提交,但要谨慎使用—force
六, 文件换行符问题
例如:
# .gitattributes
* text=auto # 如果是文本文件,文件行尾自动转换
*.jpg –text # jpg文件标记为非文本文件,不进行任何格式的行尾转换
*.txt text # txt文件标记为文本文件,并进行行尾格式化
*.vcproj text eo
GOPATH:D:\GoPro
测试代码根目录:D:\GoPro\src\learning\gobuild
测试代码:
D:\GoPro\src\learning\gobuild\main.go:
package main
import "fmt"
func main() {
// lib.go中,同包的函数
myFunc()
fmt.Println("in main function")
}
D:\GoPro\src\learning\gobui
例:test.sh调用sub.sh,通过export,在调用sub.sh时可以获取export导出变量的拷贝,将testvar变量传给sub.sh。
test.sh:
#!/bin/bash
testvar=test
export testvar
./sub.sh
sub.sh:
#!/bin/bash
echo $testvar # test
例:当子shell通过source的形式引用时,不需要export进行导出。
test.sh:
#!/bin/bash
testvar=test
. sub.sh
sub.sh:
#!/bin/bash
echo $testvar # test
例:通过source(.)将sub.sh嵌入在test.sh中执行,达到获取子shell变量sub的目的。
test.sh:
#!/bin/bash
. sub.sh
echo $sub # testsub
sub.sh:
#!/bin/bash
sub=testsub
例:main.sh通过source先后嵌入a.sh和b.sh,b.sh可以使用a.sh的变量,因为source可以看做将shell脚本在该位置拷贝展开。
main.sh:
#!/bin/bash
. a.sh
. b.sh
a.sh:
#!/bin/bash
a=1
b.sh:
#!/bin/bash
echo $a # 1
docker镜像创建:
docker search centos
docker pull centos
docker run -itd centos /bin/bash
docker ps # 查看commit-id
docker exec -it <commit-id> /bin/bash # 进入容器,执行需要的操作,如果用docker attach,区别是exit时容器会退出
docker commit -a "test" -m "docker commit test" b443a687d183 centos:v1 # 创建centos镜像,tag为v1
docker images centos # 查看已commit的centos镜像,有镜像id
docker run -itd centos:v1 /bin/bash
docker save <镜像id> > centosv1.tar
docker load < centosv1.tar
docker tag <镜像id> centosv1 # 这样导入进来的镜像是没有镜像名称和标签的,需要手动进行
要再函数中改变外部指针的指向,必须将该指针的指针传入,如果只传入该指针,在函数中对指针指向修改并不会影响在外部该指针的值,和传入参数是局部变量道理相同。
#include <stdio.h>
#include <stdlib.h>
#include "adt_def.h"
Node *createStack()
{
Node *head = NULL;
return head;
}
void printStack(Node * const head)
{
Node *stack = head;
while (stack != NULL) {
printf("elem = %d\n", stack->data);
stack = stack->next;
}
}
void pushStack(Node **head, ElemType e)
{
Node *newNode = (Node *)malloc(sizeof(Node));
newNode->data = e;
newNode->next = *head;
*head = newNode;
}
int main(void)
{
Node *stack = createStack();
pushStack(&stack, 4);
pushStack(&stack, 99);
pushStack(&stack, 22);
printStack(stack);
return 0;
}
$ wget https://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz
$ tar -xvf netcat-0.7.1.tar.gz -C /usr/local/
$ cd /usr/local/netcat-0.7.1
$ ./configuration
$ make && make install
$ vim /etc/profie
export NETCAT_HOME=/usr/local/netcat-0.7.1
export PATH=$PATH:$NETCAT_HOME/bin
$ source /etc/profile
$ which nc
/usr/local/bin/nc
$ nc --help
GNU netcat 0.7.1, a rewrite of the famous networking tool.
Basic usages:
connect to somewhere: nc [options] hostname port [port] ...
li
$ docker build -t nginx:test .
FROM nginx
RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html
RUN 命令
RUN ["可执行文件", "参数1", "参数2"]
RUN echo -e "Hello\nWorld!"
等价于RUN ["echo", "-e", "Hello\nWorld!"]
。
FROM centos
RUN yum install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
FROM centos
RUN yum install wget \
&& wge