自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(183)
  • 资源 (3)
  • 收藏
  • 关注

原创 git打tag

发布软件版本的时候打一个tag,tag会记录版本的commit号,方便后期回溯新建taggit tag命令+tag名字,直接创建一个taggit tag v1.0使用git tag命令可以看到新增加的tag。-a 参数来创建一个带备注的tag。 -m 参数添加备注信息。如果未传入-m则创建过程系统会自动打开编辑器让你填写备注信息。git tag -a tagName -m "备注"查看tag详细信息git show tagName给指定的某个commit号加tag

2021-04-21 20:52:22 2

原创 strptime和strftime

strptime 将时间字符串转为 struct tm 格式头文件:#include <time.h>函数定义: char *strptime(const char *s, const char *format, struct tm *tm);函数作用:将以字符串形式表示的时间转为 tm 结构体表示的时间。strptime函数功能与 strftime 函数正好相反。函数返回值:strptime 函数从左到右按字符进行匹配,一旦匹配格式不正确或者匹配错误就直接返回匹配错误的字

2021-04-14 19:09:13 11

原创 c99编译报错改用gnu99

使用c99编译出警告信息:implicit declaration of function ‘usleep’按常规来讲,出现 “implicit declaration of function ‘xxxx’ ” 是因为头文件未包含导致的!但是usleep的头文件unistd.h已经包含,让人很困惑!后来终于找到原因如下原因:原来是由于自己在编译时,为了可以for(int i; ...) 在Makefile中增加-std=c99导致的;解决:将-std=c99改为-std=gnu9

2021-04-07 15:11:32 18

原创 linux 下shell参数

1、文件表达式-e filename 如果 filename存在,则为真-d filename 如果 filename为目录,则为真-f filename 如果 filename为常规文件,则为真-L filename 如果 filename为符号链接,则为真-r filename 如果 filename可读,则为真-w filename 如果 filename可写,则为真-x filename 如果 filename可执行,则为真-s filename 如果文件长度不为0,则为真-...

2021-03-26 15:42:18 22

原创 shell脚本中单行或多行屏蔽方法

#单行注释符号:##多行注释:#方法一:#((0)) && {屏蔽块}((0)) && {echo "bbb"echo "ccc"}#方法二:COMMENT也可使用其他词替代,如 a,b,c等#<<COMMENT#屏蔽块#COMMENT<<COMMENTecho "bbb"echo "ccc"COMMENT#也可采用: + << ‘COMMENT’:<<'COMMENT'echo.

2021-03-11 12:40:44 84

原创 Linux Vim显示行号

在命令模式下输入":set nu"即可显示每一行的行号如果想要取消行 号,则再次输入":set nonu"即可如果希望每次打开文件都默认显示行号,则可以编辑 Vim 的配置文件。每次使用 Vim 打开文件时,Vim 都会到当前登录用户的宿主目录(用户配置文件所在地)中读取 .vimrc 文件,此文件可以对 Vim 进行一些默认配置设定。如果 .vimrc 文件存在,就先读取其中对 Vim 的设置;否则就采取默认配置。在默认情况下,用户宿主目录中是没有此文件的,需要在当前用户的宿主目录中手工建立,如

2021-03-10 14:25:32 25

原创 Linux /usr、/usr/share、/etc介绍

/usr/share中放置的是一些共享数据,比如帮助文档什么的。/usr/share/man:联机帮助文件/usr/share/doc:软件杂项的文件说明/usr/share/zoneinfo:与时区有关的时区档案/usr/local是软件的安装路径,里面是你手动安装的一些软件。/usr/lib/包含各应用软件的函式库、目标档案以及不被一般使用者惯用的执行档案或脚本,某些软件会提供一些特殊的指令来进行服务器的设定,这些指令也不会经常被系统管理员操作也在这里。/usr目录下的常用文件夹/us

2021-03-08 17:20:38 208

原创 ubuntu18.04安装cmake3.18

安装流程Step 1:Cmake下载地址:https://cmake.org/download/选择Linux-x86_64平台Step 2:解压安装包:tar -xzf cmake-3.18.0-rc1-Linux-x86_64.tar.gzStep 3:拷贝cmake目录到/usr/local/cmake进入目录后会看到只有 bin doc man share四个文件夹,没有 bootstrap文件,因为新版本的好像是已经编译好的,所以只要加入path里面就可以在命令行直...

2021-03-07 16:43:47 93

原创 Linux Source

source命令作用#在当前bash环境下读取并执行FileName中的命令。功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。用法:source filename 或 . filenamesource命令(从 C Shell 而来)是bash shell的内置命令;点命令(.),就是个点符号(从Bourne Shell而来)是source的另一名称。source filename

2021-03-05 21:21:49 30

原创 Shell 脚本中 set -ex 命令的作用

#!/bin/bash -exshell 命令set -ex,稍有常识的人都能看出,这是set命令加上了-e和-x两个参数 (废话么这不是)。那么,我就把这两个参数拆开,分别说一下它在脚本中的用处。set -e这个参数的含义是,当命令发生错误的时候,停止脚本的执行#!/bin/bashecho 1 && rm non-existent-file && echo 2等同#!/bin/bashset -eecho 1rm n...

2021-03-05 21:03:02 57

原创 Linux字符串处理函数strdup、strndup、strndupa、strdupa

一、函数族strdup、strndup、strndupa、strdupastrdup函数原型:strdup()主要是拷贝字符串s的一个副本,由函数返回值返回,这个副本有自己的内存空间,和s不相干。strdup函数复制一个字符串,使用完后要记得删除在函数中动态申请的内存,strdup函数的参数不能为NULL,一旦为NULL,就会报段错误,因为该函数包括了strlen函数,而该函数参数不能是NULL。strdup的工作原理:char * __strdup (const char *s){

2021-03-04 11:04:36 35

原创 git cherry-pick的学习笔记

对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用合并(git merge)。另一种情况是,你只需要部分代码变动(某几个提交),这时可以采用 Cherry pick。一、基本用法git cherry-pick命令的作用,就是将指定的提交(commit)应用于其他分支。git cherry-pick <commitHash>上面命令就会将指定的提交commitHash,应用于当前分支。这

2021-02-09 11:08:13 26

原创 以太网以及车载以太网概述

千兆网线和百兆网线区别1、所谓的百兆网线其实就是 五类线 和超五类线 ,而千兆网线主要是指六类线 和超六类线 ,另外还有古老的十兆网线也就是指 四类线 和 三类线 等。2、在使用上,其实千兆网线和百兆网线是没什么区别的,千兆网线完全兼容百兆网络。3、百兆网线的线芯是8芯,但上传和下载只用到了其中的4根,而千兆网线需要完全用到8根。4、另外在线芯的排布上,千兆网线的线芯中间有个十字形的塑料架,用来把四组8芯的线分开,这个百兆网线是没有的,5、所有的网线在外皮上都有种类标识,CAT5 CAT

2021-02-01 17:40:07 127 1

原创 C++的vector概述

vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C++ STL的一个重要成员,使用它时需要包含头文件:#include < vector> using namespace std;Vector 作为函数的参数或者返回值时,需要注意它的写法:double Distance(vector<int>&a, vector<int>&b)基本函数实现1.构造函数vector():创建一

2021-01-29 19:00:41 132

原创 基于CAN总线的汽车诊断协议(包括UDS诊断)

小知识点10 02、10 03模式切换,S3 client开始诊断报文超时计时(3E80保持会话)CANTP层 client 发36首帧10,server回流控30 08,client发8帧连续帧20-2f(500K,1ms发4帧)。FlowControl第一字节的高4bit为0011,低4bit为FS,即FlowStatus,第二个字节为BS(BlockSize),第三个字节为STmin(SeperateTime)cs时间仲裁(ID小优先级高)常用诊断ID介绍1、诊断会话控制0x1

2021-01-22 11:52:29 369

原创 Linux的printf、fprintf、dprintf、sprintf、snprintf、vprintf系列

printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - formatted output conversion#include <stdio.h>int printf(const char *format, ...);int fprintf(FILE *stream, const char *format, ...);int dprintf(int fd, const char *fo.

2021-01-19 18:33:53 46

原创 linux线程间的通信(pthread_cleanup_push和pthread_cleanup_pop,pthread_join,pthread_detach)

线程可以安排他退出时需要调用的函数,这与进程可以用atexit函数安排进程退出时需要调用的函数是类似的。这样的函数称为线程清理处理程序,线程可以建立多个清理处理程序。处理程序记录在栈中,也就是说他们的执行顺序与他们注册的顺序相反。pthread_cleanup_push和pthread_cleanup_pop函数原型如下: 头文件:#include <pthread.h> 函数原型:void pthread_cleanup_push(void (*rtn)(vo...

2021-01-18 18:47:43 32

原创 Linux inotify功能及原理(inotify_init、inotify_add_watch、inotify_rm_watch、read)

1. inotify主要功能它是一个内核用于通知用户空间程序文件系统变化的机制。开源社区提出用户态需要内核提供一些机制,以便用户态能够及时地得知内核或底层硬件设备发生了什么,从而能够更好地管理设备,给用户提供更好的服务,如 hotplug、udev 和 inotify 就是这种需求催生的。Hotplug 是一种内核向用户态应用通报关于热插拔设备一些事件发生的机制,桌面系统能够利用它对设备进行有效的管理,udev 动态地维护 /dev 下的设备文件,inotify 是一种文件系统的变化通知机制,如文件

2021-01-18 18:07:15 98

原创 Linux flock()函数--文件锁

文件锁是一种文件读写机制,在任何特定的时间只允许一个进程访问一个文件。利用这种机制能够使读写单个文件的过程变得更安全。这里我们使用flock()函数。flock函数说明:flock()会依参数operation所指定的方式对参数fd所指的文件做各种锁定或解除锁定的动作。此函数只能锁定整个文件,无法锁定文件的某一区域。头文件#include<sys/file.h>定义函数int flock(int fd,int operation);//Applyorremoveanad...

2021-01-15 16:18:00 85 1

原创 Linux的readlink与/proc/self/exe概述

相关函数: stat, lstat, symlink表头文件: #include <unistd.h>定义函数:ssize_t readlink(const char *path, char *buf, size_t bufsiz);函数说明:readlink()会将参数path的符号链接内容存储到参数buf所指的内存空间,返回的内容不是以\000作字符串结尾,但会将字符串的字符数返回,这使得添加\000变得简单。若参数bufsiz小于符号连接的内容长度,过长的内容会被截断,如果 .

2021-01-15 14:04:15 110

原创 Linux ls -l 查看文件的属性

2021-01-15 11:04:33 79

原创 linux的wait/waitpid和exec/execv函数

wait#include <sys/types.h> /* 提供类型pid_t的定义 */#include <sys/wait.h>pid_t wait(int *status)进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。参数status用来.

2021-01-14 17:03:25 36

原创 Linux下getopt()函数概述

#include <unistd.h>extern char *optarg; //选项的参数指针extern int optind, //下一次调用getopt的时,从optind存储的位置处重新开始检查选项。extern int opterr, //当opterr=0时,getopt不向stderr输出错误信息。extern int optopt; //当命令行选项字符不包括在optstring中或者选项缺少必要的参数时,该选项存储在optopt中,getopt返回'?’...

2021-01-12 14:43:06 22

原创 virtualbox中ubuntu18.04和windows共享文件夹配置

共享文件夹1、设置共享文件夹,如图:2、启动虚拟机,在桌面可以看到设置的共享文件夹了,但因权限不够,还不能直接访问。接下来设置权限,打开终端,执行命令:sudo usermod -aG vboxsf $(whoami)(注:这个命令的大概意思是将当前登录用户加入到vboxsf组)3、重启虚拟机,就可以在虚拟机内打开共享文件夹了另外,有需要的话可以将其他的用户添加到vboxsf组,如:sudo adduser root vboxsfsudo adduser www-data v

2021-01-11 11:53:20 87

原创 linux coredump概述

1、什么是coredump: 我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下会产生一个叫做core的文件。 通常情况下,core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态存储生成的一个文件,许多的程序出错的时候都会产生一个core文件,通过工具分析这个文件,我们可以定位到程序异常退出的时候对应的堆栈调用...

2021-01-07 15:13:19 22

原创 Linux tail概述

tail [参数] [文件] -f 循环读取 -q 不显示处理信息 -v 显示详细的处理信息 -c<数目> 显示的字节数 -n<行数> 显示文件的尾部 n 行内容 --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束 -q, --quiet, --silent 从不输出给出文件名的首部 -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒tail 命令可用于查看文件的内容,有一个常用的参数-f常用于查阅正在改...

2021-01-07 12:19:14 58

原创 offsetof与container_of概述

offsetof是用来判断结构体中成员的偏移位置,container_of宏用来根据成员的地址来获取结构体的地址使用offsetof宏需要包含stddef.h头文件#define offsetof(type, member) (size_t)&(((type*)0)->member)巧妙之处在于将地址0强制转换为type类型的指针,从而定位到member在结构体中偏移位置。编译器认为0是一个有效的地址,从而认为0是type指针的起始地址。使用container_of宏需要包含li

2021-01-06 11:53:34 61

原创 Shell环境变量概述

基本语法1) export 变量=值 将shell变量输出为环境变量2) source 配置文件 修改后的配置信息生效如source /etc/profile 也可以通过重启系统或者注销用户的方式使环境变量生效3) echo $变量名 查询环境变量的值TOMCAT_HOME=/root/tomcatexport TOMCAT_HOME #升级为环境变量source /etc/profileecho $TOMCATShell 变量的作用域可以分为三种:有的变量只能在函数内部使

2021-01-05 14:51:13 34

原创 REPO

Git管理单独的模块,而repo管理所有的Git库,将多个Git库组合在一起,形成一个完整的大版本repo start <topic_name>开启一个新的主题,其实就是每个Project都新建一个分支repo init -u <url> [OPTIONS]在当前目录下初始化repo,会在当前目录生生成一个.repo目录,像Git Project下的.git一样,-u指定url,可以加参数-m指定manifest文件,默认是 default.xml,.repo/mani

2020-12-29 17:57:27 33 1

原创 git reset 和 get revert

工作区:即自己当前分支所修改的代码,git add xx 之前的!不包括 git add xx 和 git commit xxx 之后的。暂存区:已经 git add xxx 进去,且未 git commit xxx 的。本地分支:已经git commit -m xxx 提交到本地分支的。基本原理如下:案例一修改了本地的代码,然后使用:git add file git commit -m '修改原因'执行commit后,还没执行push时,想要撤销这次的commit,该怎

2020-12-29 17:08:18 21

原创 Linux find和grep的差异

1.find:查找文件或目录语法: find 查找位置 文件名或目录名如:在 /root/luojiahui目录下查找index.htmfind /root/luojiahui index.htm在当前目录及其子目录中查找任何扩展名为"c"的文件(不加-print也会输出结果)find . -name "*.c" find bootable kernel -name "*.c"2.grep:在文件中查找字符串语法:grep 字符串 文件名如:grep success luojiah..

2020-12-28 18:09:46 57

原创 本地使用Git生成SSH Key以及Gitlab配置

安装Git客户端:详见http://www.cnblogs.com/xiuxingzhe/p/9300905.html安装git命令行apt install git开通gitlab(开通需要gitlab管理员)账号后,本地Git仓库和gitlab仓库仍然不能传输项目,原因是要通过SSH加密才能传输,所以需要让gitlab认证本地的SSH Key认证之前,则先使用Git生成SSH Key。1 Git生成秘钥1.1确认本地秘钥SSH秘钥默认储存在账户的主目录下的~/.ssh目录...

2020-12-22 17:02:31 186

原创 ubuntu14.04.4 samba在win卡的解决办法

apt-get install sambaapt-get install libtalloc2apt-get remove samba libtalloc2apt-get install samba libtalloc2

2020-12-22 13:42:38 76

原创 VirtualBox安装Ubuntu18.04及SSH/SAMBA、静态ipDNS、备份恢复

VirtualBox上安装Ubuntu过程虚拟机下的:Ubantu18.04远程连接工具:xshell(一)点击新建(二)内存大小设置(三)虚拟硬盘(四)虚拟硬盘文件类型,选择默认(VDI)即可,点击下一步(五)存储在物理硬盘上,选择默认(动态分配)即可,点击下一步(六)文件位置和大小(七)虚拟电脑基本设置(八)虚拟电脑设置之后点击OK(九)选择该虚拟电脑,点击启动十)开始安装Ubuntu系统进入安装界面。

2020-12-21 17:03:40 49

原创 mqtt客户端演示(MQTT通信协议(mosquitto)发布订阅例子C语言实现)

MQTT客户端struct mosquitto *mosq; void my_connect_callback(struct mosquitto *mosq, void *obj, int rc){ //printf("rc11: %d\n", rc);} void my_disconnect_callback(struct mosquitto *mosq, void *obj, int result){ mosquitto_destroy(mo...

2020-12-11 17:01:32 418

原创 linux网络编程(poll)

poll模型实现select() 和 poll() 系统调用的本质一样,poll() 的机制与 select() 类似,与 select() 在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理#include <poll.h>int poll(struct pollfd * fdarray, unsigned long nfds, int timeout);参数解释:(1)fdarray:指向一个结构体数组的第0个元素的指针,每个数组元素都是一个struc.

2020-12-10 17:38:37 75

原创 linux交叉编译的库在链接时提示:xxx uses VFP register arguments xxx does not

很多时候我们要处理的数据,不仅仅是整数和字符串,还有浮点数即小数。在多媒体数据处理方面表现的更多。是不是所有的CPU都支持,浮点运算呢?答案:不是。1、问题描述2、原因该错误表明使用了不正确或不支持的VFP(virtual float point)浮点运算方式。不支持的VFP编译:MCU不支持VFP(hard)计算; 不一致的VFP编译:链接的Lib中VFP计算和App中编译VFP计算选项不一致;3、解决方案方案1检查APP的编译选项CFLAGS的VFP的计算类型:F..

2020-11-24 18:13:50 259

原创 嵌入式Linux系统libmosquitto移植概述

mosquitto是一个第三方开源库,是一款实现了 MQTT v3.1 协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用。我们可以基于mosquitto非常简单的搭建MQTT服务器和客户端,并且能够很好的在嵌入式设备上进行应用。MQTT 基础概念Broker(服务端, 代理者)---- 使用PC(192.168.100.33:1883)机 运行mosquitto程序即可Subscriber(客户...

2020-11-20 18:45:01 215

原创 查看ubuntu版本命令

在命令终端输入1.cat /etc/issue (简单)# cat /etc/issueUbuntu 14.04.4 LTS \n \l2.cat /etc/lsb-release(具体)#cat /etc/lsb-releaseDISTRIB_ID=UbuntuDISTRIB_RELEASE=14.04DISTRIB_CODENAME=trustyDISTRIB_DESCRIPTION="Ubuntu 14.04.4 LTS"3.uname -a(内核)# uname -a

2020-11-03 15:27:34 42

原创 浅谈内核的Makefile、Kconfig和.config文件

Linux内核源码文件繁多,搞不清Makefile、Kconfig、.config间的关系,不了解内核编译体系,编译修改内核有问题无从下手,自己写的驱动不知道怎么编进内核,不知道怎么配置内核,这些问题都和Makefile、Kconfig、.config有关,下面简单谈谈Makefile、Kconfig和.config三者的作用:Makefile:一个文本形式的文件,编译源文件的方法。Kconfig:一个文本形式的文件,内核的配置菜单。.config:编译内核所依据的配置。三者的语法1、

2020-10-29 18:04:49 54

中国移动-防火墙技术

基于中国移动现网部署设备情况,介绍了当前流行的防火墙技术

2018-04-19

linux内核netfilter模块HOOKs点的注册及调用

详细介绍了linux下防火墙之netfilter模块的hooks注册、调用、测试等情况。

2018-04-19

洞悉linux下的Netfilter&iptables;

详细介绍了linux下的防火墙设计和原理,基于应用层的iptables和内核的Netfilter。重点讲了SNAT\DNAT\状态防火墙等,还有具体实例讲解

2018-04-19

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除