自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 收藏
  • 关注

原创 MakeFile的通用版本写法

makefile最通用的版本,新增文件无需修改file,可做多编译链兼容无需修改

2023-04-05 22:55:54 354

原创 Linux 中设置静态IP的方法步骤

linux 配置静态IP 设置网卡虚拟IP

2022-09-20 02:19:40 914

原创 c语言 time() 秒数转换为指定格式的时间字符串

static int secondToDate(time_t sec, char *pDate, char *pTime){ char ctemp[20] ={0}; struct tm *info; int iLen = 0; if(sec <= 0 || pTime == NULL) //|| pDate == NULL { printf("[%s]: para error\n", __func__); return -1...

2021-07-27 13:23:59 794

原创 网络 IO 模型

IO 是计算机体系中重要的一部分。不同的 IO 设备有着不同的特点:数据率不一样、传送单位不一样,数据表示不一样,等等。所以,很难实现一种统一的输入输出方法。IO 有两种操作,同步 IO 和异步 IO。同步 IO :必须等待 IO 操作完成后,控制权才返回给用户进程。异步 IO:无须等待 IO 操作完成,就将控制权返回给用户进程。下面学习一下常见的 5 种 IO 模型。1、阻塞 IO 模型: Linux 默认情况下所有的 socket 都是阻塞的。...

2021-07-24 16:28:49 125

原创 linux 无法ping域名方法

在开发项目时,arm 板可以ping的通外网的IP地址,但是去ping域名时却无法ping通。如下图:查看 "/etc/resovl.conf" 文件,发现缺失了该文件,将PC端的"/etc/resolv.conf"拷贝到arm上,修改resolv.conf中的 "nameserve "后面所配置的网关地址,将该网关地址改为arm板上的网关地址,重新ping域名,即可pingtong,如果ping不通,可采用 "service network restart" 来重启网络后即可ping通。不...

2021-06-27 18:39:29 2578 2

转载 core dump文件的生成和使用

1.什么是core dump文件当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成“核心转储”)。core dump 对于编程人员诊断和调试程序是非常有帮助的,因为对于有些程序错误是很难重现的,例如指针异常,而 core dump 文件可以再现程序出错时的情景。2.如何生成core dump文件在终端中输入命令 ulimit -c ,输出的结果为 0,说明默认是关闭 core dump 的,即当程序异常终止

2021-06-03 14:50:29 804

转载 核心转储 (coredump)配置、产生、分析以及分析示例

应用程序在运行过程中由于各种异常或者bug导致退出,在满足一定条件下产生一个core文件。通常core文件包含了程序运行时内存、寄存器状态、堆栈指针、内存管理信息以及函数调用堆栈信息。core就是程序当前工作转改存储生成的一个文件,通过工具分析这个文件,可以定位到程序异常退出的时候对应的堆栈调用等信息,找出问题点并解决。1. 配置coredump如果需要使用需要通过ulimit进行设置,可以通过ulimit -c查看当前系统是否支持coredump。如果为0,则表示coredump被关闭。

2021-06-03 14:47:30 4425

转载 三种select模型介绍和例子挺不错的

socket编程的select模型 在掌握了socket相关的一些函数后,套接字编程还是比较简单的,日常工作中碰到很多的问题就是客户端/服务器模型中,如何让服务端在同一时间高效的处理多个客户端的连接,我们的处理办法可能会是在服务端不停的监听客户端的请求,有新的请求到达时,开辟一个新的线程去和该客户端进行后续处理,但是这样针对每一个客户端都需要去开辟一个新的线程,效率必定底下。 其实,socket编程提供了很多的模型来处理这种情形,我们只要按照模型去实现我们的代码就可以解决这...

2021-03-28 00:41:54 300

转载 嵌入式Linux中printf重定向到串口

PC机上,printf输出到显示设备,在嵌入式linux系统,一般利用printf输出调试信息,需要重定向到串口。以AT91RM9200为例,简要说明如何利用串口输出printf的打印信息。 在u-boot传递给内核(kernel)的参数中,有"console=ttyS0,115200"的字样,printf就是使用ttyS0这个串口输出信息的,为了使用ttyS0这个设备,需要在根文件系统的/dev目录下创建设备节点: mknod ttyS0 c 4 0...

2021-03-27 01:19:51 1372

原创 海思HI35xx平台交叉编译链安装

将海思安装包解压后得到三个文件:使用sudo权限运行“cross.v300.install”或者直接运行“cross.v300.install”脚本,然后再在提示后面选择你要使用的权限如下图:然后source /etc/profile 使环境变量生效,在使用输入“arm-hi”+Tab键查看是否有安装成功。...

2021-01-18 14:53:04 467

原创 grep 查找命令使用

grep 一般格式为: grep [选项] 基本正则表达式 [文件] // "基本正则表达式"可以是字符串 ,例如在ubuntu下 的"/etc"文件中查找包含"root"的文件: grep "root" /etc/* //在grep 命令输入字符串参数时最好使用双引号,可以防止误解成shell命令,且可以查找多个单词组,...

2021-01-04 14:16:40 4016 1

转载 seq 常见用法

语法 seq [选项]... 尾数 seq [选项]... 首数 尾数 seq [选项]... 首数 增量 尾数 选项 -f, --format=格式 使用printf 样式的浮点格式 -s, --separator=字符串 使用指定字符串分隔数字(默认使用:\n) -w, --equal-width 在列前添加0 使得宽度相同 实例 不加选项打印整数 [root@localhost ~]# seq 5 1 2 3

2020-12-03 21:37:37 1690

转载 typedef 与define的区别

以前初学c语言是大致知道typedef 和 define都可以用来定义别名,在单片机中因为使用管脚都是宏定义,使用define做别名,为了方便unsigned int和unsigned char都是直接使用define定义成别名,今天在linux 中使用define定义int ,编译时莫名其妙的报出一堆错误,网上查了相关资料才知道是因为使用define做别名引起的,换成typedef 就好了,特此下记录。1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样

2020-11-22 21:14:16 677

原创 嵌入式Bootloader简介

Bootloader又称引导加载程序,是系统上电运行的第一段软件代码,是整个形同执行的第一步。 PC机系统中引导加载程序是由BIOS和位于硬盘MBR中的OS Bootloader完成的,OS Bootloader 常见的有LILO和GRUB等。BIOS在完成硬件检测和资源分配后,将硬盘MBR中的Bootloader 读到系统的RAM中,然后将控制权交给OS Bootloader。Bootloader的主要运行任务就是将内核映像从硬盘上读到RAM中,然后跳转到内核的入口处去运行,也即启动操作...

2020-11-12 00:39:54 1279

原创 linux下gcc编辑器使用

gcc是一个c语言编译器,全程为GNU C Compiler的英文缩写。gcc具有交叉编译功能,即在一个平台下编译另一个平台的代码。gcc支持的后缀名解释: .c //c语言源代码文件 .a //有目标构成的档案库文件,静态库文件 .C .cc 或 .cxx //C++源代码文件 .h...

2020-11-08 12:31:42 204

转载 PNG文件结构分析 ---Png解析

为了实现更高级的应用,我们必须充分挖掘PNG的潜力。PNG的文件结构根据PNG文件的定义来说,其文件头位置总是由位固定的字节来描述的: 十进制数 137 80 78 71 13 10 26 10 十六进制数 89 50 4E 47 0D 0A 1A 0A 其中第一个字节0x89超出了ASCII字符的范围,这是为了避免某些软件将PNG文件当做文本文件来处理。文件中剩余的部分由3个以上的PNG的数据块...

2020-11-06 22:54:17 204

原创 linux中的标准输入、标准输出、标准错误

在shell中执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。 输入文件---------标准输入 0 缺省是键盘输入,也可以是文件或其他命令的输出 输出文件---------标准输出 1 缺省是屏幕,也可以是文件 错误输出文件----------标准错误 2 缺省是屏...

2020-10-30 16:23:30 1385

原创 C++ 中的 String类函数原型 构造函数 、析构函数、拷贝函数

public String{ public: String(const char* str=NULL); // 构造函数 String(const String &other); // 拷贝构造函数(自己重写是要使用深拷贝,即重新开辟一个内存空间) ~ String(void);...

2020-10-27 10:56:26 304 1

原创 linux中环境和shell变量详解

本地变量: 本地变量是用户现在的shell生命期的脚本使用,这个值只在当前的用户shell生命期有意义,如果在shell中启动另一个进程或退出,此值将无效,用户不能对其他的shell或者进程设置此变量有效。 使用变量时,用“{ }”将变量括起来,可以防止shell误解变量值,但并非一定要使用“{ }”,若变量值包含了空格,则必须使用“ ”括起来。显示变量: echo $变量名 //变量名的值里可以包含其它的变量,如A=“THE”, B=“H$A...

2020-10-20 13:31:13 226

原创 linux 中将变量导入到子进程中

在linux的环境变量中,通过在父进程中使用“export 变量名”,可以将变量导入到子进程中。还可以通过在脚本中调用另一个脚本(实际上创建了一个子进程)。 在father脚本中设置变量名为“FILM”,取值为“A FEW GOOD Men”,再在father脚本中调用child脚本,child脚本中先打印“FILM”的值,后在修改“FILM”的值为“Die Hard”,例程如下: father的脚本: #!/bin/sh #father...

2020-10-19 15:15:43 342

原创 Linux 中的环境变量

环境变量的概念: 指系统中用来存储环境信息数据的变量,通常系统配置初始提供。环境变量的使用: 环境变量的使用方法和自定义变量一致,只是变量命名被约束。环境变量的导出和保存: 用export命令可以将当前shell环境中的环境变量导出到子shell中。 子shell与父shell的区分: 当前打开的shell为父shell,在当前的shell中再打开的另外一个shell,即为子shell。如下图:...

2020-10-14 17:40:01 92

原创 Linux 静态库使用制作

Linux中应用程序设计需要的外部函数主要由函数体和系统调用来提供。 库函数按照链接方式可分为静态链接库和动态链接库。linux中进行链接的默认是动态链接,使用静态链接库,需要使用 “-static”,例如“gcc -static xxx.c -o xxx”。 linux应用程序使用的主要函数库均存放于/lib,/usr/lib 目录下,其中采用“xx.so”为命名的是动态库,以“.a”命名的是静态库,静态库的特点: 程序所用到的库函数代码在链接时全部被...

2020-10-12 12:01:55 105

原创 C语言解析ip地址的字符串转换为整型例程

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>long ivp4ToInt(char *str){ int i,slen = 0; int numTemp = 0; int dotNum = 0;...

2020-09-15 09:15:41 1835

原创 relocation R_X86_64_32 against `.xxxxx‘ can not be used when making a shared object;

解决.a静态库,链接成一个.so动态库出现:relocation R_X86_64_32 against `xxxxxxx' can not be used when making a shared object; 的错误。 在编译的时候出现relocation R_X86_64_32 against `.xxxxx' can not be used when making a shared object; 的错误。原因是因为生成静态库时没有加 -fPIC 选项。起因: 在Ub...

2020-08-27 15:50:21 2449

原创 linux 文件类型讲解和进程查看命令

EXT3、EXT4是当今Linux操作系统默认使用的文件类型,ubuntu使用EXT4。SWAP类型: 内存 <----------> 磁盘 ,将内存中忙的程序保留,将闲的程序从内存中切换到磁盘里,将磁盘里忙的程序切换到内存中,使内存永远运行着忙的程序。在linux中将进行这操作的空间称为SWAP分区,windows中是通过C盘的临时存储区来操作的。 linux操作系统至少需要两个分区:根分区(EXT4格式)和内存交换分区(SWAP格式)。 “/”分...

2020-08-18 22:28:36 129

原创 linux 系统中的挂载

挂载需要管理员权限,所以要加上sudo。mount -t iso9660 设备名(dev/cdrom) 挂载点(只要是空的文件目录): 因为iso9660为光盘的文件系统,所以可以省略,系统会自动检测,可以写为如下命令:mount 设备名 挂载点光盘iso镜像文件挂载:mount -o loop -t iso9660 mycd.iso /media :mycd.iso为iso镜像文件,即刻录光盘;loop为回环设备,即为虚拟光驱;原理为将i...

2020-08-17 21:30:19 179

原创 Linux 中ssh安装 和后台命令切换即查看

ssh 仅提供远程登陆的本地回话窗口。ssh --version:查看ssh版本ssh 192.168.0.128(ip):以root用户远程登入ssh 用户名@192.168.0.128(ip):以其他用户名远程登入ssh 服务端安装:在线安装:apt-get install openssh-server离线安装:dpkg -i openssh-server*.debservice ssh start :ssh服务器的启动service ssh stop :ssh服务...

2020-08-16 12:10:55 539

原创 linux 网络部分命令

ping :网络部分联通测试命令ping 127.0.0.1:持续测试当前主机和目标机的网络联通性能ping -c 数字 :用“-c”来指定发送ICMP_REQUEST的包计数,如“ping -c 6”表示发送6次就停下来了。ifconfig :缺省简介查看所有的网络接口的地址信息。ifconfig -a eth0 :常用选项参数“-a”用于详细查看网络接口的地址信息。sudo ifconfig eth0 xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.x...

2020-08-16 09:06:39 144

原创 linux中查看内存命令

df -h :以字节为单位显示磁盘文件系统的空间使用du 文件夹名(或文件名):文件占用查看;缺省表示所有文件空间占用查看命令,以字节为单位的文件空间占用的详细报告;加文件夹名即一个文件夹下每个文件的容量大小。du -s:表示概括描述文件空间占用情况;查看单个文件夹容量大小。du -h:表示以人性化的方式显示,即转化为带单位的方式显示,默认以"KB"为显示单位,不带单位名称。free :RAM内存状态查看,缺省以字节为单位显示内存信息;free -h:以人性化的方式显示;f...

2020-08-16 07:54:26 1330

原创 ubuntu中忘记账户密码

在ubuntu开机后,长按shift或者是按esc键进入grub界面如下图:或者然后按回车键进入选项中选择带有recouvery mode的选项, 不要按回车键,按“e”进入编辑模式中,删除带有"ro recovery nomodeset find pressed ......."(到整行完),如下图画红线部分:删除完后添加上“rw init=bin/bash”后,接着按下“F10”键,出现先如下界面:在命令行里输入“cat /etc/shadow”可以查看到都有哪些账号,.

2020-08-16 07:18:12 2231

转载 request请求数据包组成:请求行(request line)消息头(header)实体内容(Body)

HTTP客户请求数据格式大多数servlet程序都是和浏览器客户以HTTP协议进行通信的,这需要编程人员对程序的基本功能和HTTP协议的具体操作有深入的理解。在学习servlet和Jsp编程时,有两点值得注意:首先是对HTTP协议的操作过程和数据格式足够熟悉,其次要灵活应用servlet的API中的有关方法正确高效地处理有关数据。一、HTTP客户请求的数据格式说明HTTP请求包括三部分:请求行(Request Line),头部(Headers)和实体内容(Body)。其中,请求行由请求方法(metho

2020-08-12 16:53:50 2604

转载 HTTP协议详解

概述 HTTP(Hyper Text Transfer Protocol)<超文本传输协议>的缩写.是用于从WWW服务器传输超文本到本地浏览器的传输协议.HTTP是一个应用层协议,由请求和响应构成,是一个标准的个客户端和服务器模型.它的主要特点如下: 1. 支持客户端/服务器模型 2. 简单快速客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信

2020-08-07 15:55:00 232

转载 HTTP认证之摘要认证——Digest

一、概述 Digest认证是为了修复基本认证协议的严重缺陷而设计的,秉承“绝不通过明文在网络发送密码”的原则,通过“密码摘要”进行认证,大大提高了安全性。 相对于基本认证,主要有如下改进:绝不通过明文在网络上发送密码 可以有效防止恶意用户进行重放攻击 可以有选择的防止对报文内容的篡改需要注意的是,摘要认证除了能够保护密码之外,并不能保护其他内容,与HTTPS配合使用仍是一个良好的选择。以下是摘要认证的具体流程图: 看到上面出现了那么多之前没见过的参数,...

2020-08-07 11:47:00 1533

转载 OpenSSL编写SSL,TLS程序***

一、简介SSL(Secure Socket Layer)是netscape公司提出的主要用于web的安全通信标准,分为2.0版和3.0版.TLS(Transport Layer Security)是IETF的TLS 工作组在SSL3.0基础之上提出的安全通信标准,目前版本是1.0,即RFC2246.SSL/TLS提供的安全机制可以保证应用层数据在互联网络传输 不 被监听,伪造和窜改.openssl(www.openssl.org) 是sslv2,sslv3,tlsv1的一份完整实现,内部包含了大量加

2020-08-07 11:16:16 693

转载 SSL的流程

1.加载SSL库SSL_load_error_strings();SSLeay_add_ssl_algorithms();2.加载CA证书和私钥文件SSL_CTX*ctx=SSL_CTX_new(SSLv23_server_method());SSL_CTX_use_certificate_file(ctx,CA_CERT,SSL_FILETYPE_PEM)SSL_CTX_set_default_passwd_cb_userdata(ctx...

2020-08-07 10:22:39 474

转载 HTTP认证之基本认证——Basic

一、概述 Basic认证是一种较为简单的HTTP认证方式,客户端通过明文(Base64编码格式)传输用户名和密码到服务端进行认证,通常需要配合HTTPS来保证信息传输的安全。 二、剖析 1.当打开需要认证的页面时,会弹出一个对话框,要求输入用户名和密码 2.使用Fiddler监听请求,可以看到在未进行认证或认证失败的情况下,服务端会返回401 Unauthorized给客户端,并附带Challenge(质询),即在Response ...

2020-08-06 20:28:14 993

转载 ptrdiff_t 类型定义

1简介ptrdiff_t是C/C++标准库中定义的一个与机器相关的数据类型。ptrdiff_t类型变量通常用来保存两个指针减法操作的结果。ptrdiff_t定义在stddef.h(cstddef)这个文件内。ptrdiff_t通常被定义为long int类型。ptrdiff_t定义在C99标准中。ptrdiff_t标准库类型(library type)ptrdiff_t 与 size_t 类型一样,ptrdiff_t也是一种与机器相关的类型,在 cstddef 头文件中定义。size_t 是u.

2020-08-03 16:52:48 845

转载 CGI详解(原理,配置及访问)

一.基本原理CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口。通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端。组成CGI通信系统的是两部分:一部分是html页面,就是在用户端浏览器上显示的页面。另一部分则是运行在服务器上的Cgi程序。它们之间的通讯方式如下图:服务器和客户端之间的通信,是客户端的浏览器和服务器端的http服务器之间的HTTP通信,我们只需要知.

2020-07-28 19:47:33 3844

转载 linux 调用 setgid()、initgroups()、setuid() 修改执行权限

有时,我们需要在程序执行过程中修改程序运行权限。一、源码修改程序权限主要分三步。1. 调用 setgid() 修改组ID。2. 调用 initgroups() 修改附加组ID(一个用户可以属于多个组)。3. 调用 setuid() 修改用户ID。#include <stdio.h>#include <unistd.h>#include <shadow.h>#include <pwd.h>#include <grp.h&g

2020-07-28 17:12:46 608

转载 wireshark捕获/过滤指定ip地址数据包

使用捕获或者显示过滤,wireshark可以仅捕获/显示经过指定ip的数据包,即某个ip收到或者发出的所有数据包。wireshare捕获/显示过滤使用方法见“wireshare过滤器”。显示过滤:wireshark过滤经过指定ip的数据包显示过滤可以完整的复现测试时的网络环境,但会产生较大的捕获文件和内存占用。ip.addr ==192.168.1.1 //显示所有目标或源地址是192.168.1.1的数据包ip.dst==192.168.1.1 //显示目标地址是192.168.1.1的数据

2020-07-25 15:17:02 4621

SMC1602接口程序(MCS51模拟口线方式)

显示效果:全屏幕显示0---9 SMC1602接口程序(MCS51模拟口线方式) 汇编代码

2023-04-05

空空如也

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

TA关注的人

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