自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【c++常见编译报错】

passing ‘const EyeseeLinux::MediaFile‘ as ‘this‘ argument discards qualifiers;incomplete type ‘ XXX’ used in nested name specifier

2023-08-04 11:22:20 192

原创 Linux进程间通信demo.c

1.错误处理函数:#include<stdio.h>#include<errno.h>#include<string.h>int main(void){ FILE *Fr = fopen("./2.txt", "r"); //全局变量errno会实时更新,装载的是最新被调用的系统回调的操作状态 //如下面操作,如果2.txt打开成功,errno装载的值表示的是success,否则其 //装载的值表示的是failed

2021-07-06 16:51:44 49

原创 常用的ffmpeg文件格式转换指令

mp3转wav:ffmpeg -i input.mp3 -acodec pcm_s16le -ac 2 -ar 44100 output.wavwav转m4a:ffmpeg -f wav -i test.wav -ar 48000 -acodec aac -vn -dn test.m4amp3转mp4:ffmpeg -i REC_START.mp3 -codec copy REC_START.mp4m4a转wav:ffmpeg -i input.m4a -acodec pcm_s16le

2020-07-29 22:04:08 2170

原创 C语言函数strstr(str1,str2),当str2为空串时。。。

前几天上班一个问题找了好久,后来发现是字符串库函数strstr(str1,str2)用错了,当时理所当然的认为当str2为空串时,返回值应当为NULL,因为传入参数为空应当直接返回嘛,但后来写个demo一编才发现返回的是str1的首地址:#include<stdio.h>#include<string.h>int main(void){ char st...

2020-03-10 08:16:11 1172

原创 linux c/c++学习笔记

一、c基础问题1.c各种基本数据类型是否由于操作系统的不同而不同?具体呢? char short int float double long longlong (单位:字节)32位平台: 1 2 4 4 8 4 864位平台: 1 2 4 4 8 8 8注:对于各种数据类型,有符号和无符号所占字节一样,只不过有符号的最高位是符号位2.为什么sigh char类型的127+1=-128?因为...

2019-02-14 21:33:43 510 1

原创 通过设置路由器DMZ主机ip,却还是没法通过外网访问

几天前想在电脑虚拟机上的linux中搭建的简单的服务器,然后通过手机(流量数据模式下)浏览器访问。先把虚拟机上的Linux设为桥接模式,然后登陆小米路由器设置DMZ的ip为linux的虚拟ip,然后在linux中运行一个已经写好的程序a.out,该程序阻塞等待连接,当有连接到来就向连接者发送一个demo.html的网页,然后退出。但是一直访问不了,后来发现电信给的ip不是公网ip。通过百度查询...

2019-01-30 18:56:14 20495

原创 linux下用一条指令复制树状目录下的所有指定格式文件到另一个目录

要递归拷贝指令应该改为:find . -name '*.pdf' | xargs -i cp {} ../docbook_pdf/递归修改c文件权限:find ./ -name "*.c" | xargs chmod 777

2018-10-29 11:49:27 2120

转载 Linux驱动的两种加载方式过程分析

原文:https://www.linuxidc.com/Linux/2014-06/103569p2.htm一、概念简述在Linux下可以通过两种方式加载驱动程序:静态加载和动态加载。静态加载就是把驱动程序直接编译进内核,系统启动后可以直接调用。静态加载的缺点是调试起来比较麻烦,每次修改一个地方都要重新编译和下载内核,效率较低。若采用静态加载的驱动较多,会导致内核容量很大,浪费存储空间...

2018-10-22 10:18:24 5017

转载 彻底弄懂 Unicode 编码

原文:https://blog.whezh.com/encoded/今天,在学习 Node.js 中的 Buffer 对象时,注意到它的 alloc 和 from 方法会默认用 UTF-8 编码,在数组中每位对应 1 字节的十六进制数。想到了之间学习 ES6 时关于字符串的 Unicode 表示法,突然就很想知道 UTF-16 是如何进行编码的,我尝试将一些汉字转换成二进制数,然后简单的按 2...

2018-10-22 09:53:28 202

原创 UI Designer Studio的使用1——图片转c代码

1.先打开UIDSPRD_201303222.然后在UIDSPRD_20130322中打开DemoKit_Image.xmb3.清除上次的图标(如果新安装第一次使用就没有这部)4.添加图标5.Ctrl+A可全选6.选项勾上这些7.根据实际芯片型号选择对应选项,开始转换8.选择生成路径9.默认生成这三个文件,可以拿来使用了...

2018-10-15 17:30:59 901

原创 QT配置调试器windbg (Debugging Tools for Windows)

首先在这里下载调试器windbg (Debugging Tools for Windows) :http://download.csdn.net/download/zhang957411207/4750492如果使用Setup.exe安装失败,可以直接找到Setup\WinSDKDebuggingTools_amd64\dgb_amd64.msi(这个是64位的)双击安装即可然后在qt...

2018-10-10 10:20:26 5311

转载 很经典的一篇c++虚继承的分析

https://blog.csdn.net/xiejingfa/article/details/48028491

2018-09-13 11:58:22 186

原创 linux和windows中的换行符区别

linux中编写的文本文件在windows中用计事本中打开时,原本有的换行没有了。根本原因就是:linux中一个转义字符\n起换行作用,即在linux中编辑文本文件时,按下enter键,宏观上我们看到光标移到了新的一行开头,而对于文件内容来说相当于在行尾隐式添加转义字符\nwindows中两个连续的转义字符\r\n起换行作用,即在windows中编辑文本文件时,按下enter键,宏观上我们...

2018-09-04 22:53:20 1117

原创 自己实现c常见字符串函数

1.strlen()int my_strlen(const char *s){ int len=0; if(s==NULL) { printf("error: null pointer...\n"); len=-1; goto end; } while(*s++!='\0') { ...

2018-08-31 21:21:51 178

转载 如何解决tcp通信中的粘包问题?

TCP通信中的粘包问题尹德位 2015 西安 关键词 : TCP 网络通信 粘包 Linux C/S一  粘包问题概述二  粘包回避设计 第一章  粘包问题概述 1.1  描述背景采用TCP协议进行网络数据传送的软件设计中,普遍存在粘包问题。这主要是由于现代操作系统的网络传输机制所产生的。我们知道,网络通信采用的套接字(socket)技术,其实现实际是由系统...

2018-08-16 19:39:10 14093 3

转载 发送缓冲区、接收缓冲区、滑动窗口协议之间的关系

大家知道,TCP采用的是全双工的工作模式,对每一个TCP的SOCKET来说,都有一个发送缓冲区和接收缓冲区与之对应,TCP的流量(拥塞)控制便是依赖于这两个独立的buffer滑动窗口协议之间。我们可以通过一个简单实验体会三者之间关系。一、recv端在监听套接字上准备accept,在accept结束以后不做什么操作,直接sleep很久,也就是在recv端并不做接收数据的操作,在sleep结束...

2018-08-16 19:19:34 1800

转载 套接字的缓冲区在哪里?

书里面讲了三种方式(TCP,UDP,SCTP)的发送相关,但是原理基本是相同的,只是根据不同协议的特点有些变化.下面以TCP为例,试着描述一下这个过程.TCP缓冲区每一个TCP套接字都有一个发送缓冲区,这个缓冲区是在内核中的.当我们调用write将数据写入套接字的时候,数据被传入内核,放入套接字发送缓冲区(大小可以由SO_SNDBUF来设定).如果缓冲区已满,那么write函数将被阻塞...

2018-08-13 23:23:08 814

转载 Ubuntu连接MySql报错“can't connect to local mysql server through socket '/var/run/mysqld/mysqld.sock'”

 转载于:https://www.cnblogs.com/againn/p/7999265.htmlUbuntu连接MySql报错“can't connect to local mysql server through socket '/var/run/mysqld/mysqld.sock'”在不重新安装mysql的情况下,通过如下命令来解决,具体的就是先停止mysql服务,再重新开启...

2018-08-10 15:48:38 4757

转载 啥叫服务器?

转自于:https://blog.csdn.net/qq_38643064/article/details/78378337       服务器(serve),为网络的灵魂,也叫做伺服器,一个管理资源并为用户提供服务的计算机。       特性:1.可扩展性2.易使用性3.可用性4.易管理性。具体的服务器解释可以去百度百科。          广义上,提供服务的计算机都可以叫“服务器...

2018-08-05 14:33:35 1613

转载 基于C程序启动代码的深入分析

转载于:www.yw1515.com/news/2018-04-06/126714.html一、映像文件基本组成映像文件加载时域包括RO和RW段,运行时域则包括RO、RW和ZI三个段。其中RO和RW段的内容在加载时和运行时是一样的,只是存储空间可能不同,而ZI段则是运行时由初始化函数创建的。RO段:Read-Only段,包括源程序中的CODE段,只读数据段(包括变量的初始化值——可以是任意...

2018-08-05 10:56:12 657

原创 文件描述符复制函数dup2()详解

dup2()是dup()的“升级版“,原型是int dup2(int oldfd, int newfd),作用是让文件描述符newfd与oldfd所关联的文件(或缓冲区或管道或共享内存等)关联起来,如果一开始newfd已经和某个文件关联了(一个描述符同一时刻只能关联一个文件),那它会先解除newfd和某个文件的关联,然后再关联oldfd关联的那个文件。下面就拿文件描述符0,1做参数来写两个例子。...

2018-08-03 19:22:50 1760

原创 c++在类外调用类的私有成员函数的两种方法

 1.通过类的public成员函数调用private成员函数:#include&lt;iostream&gt;using namespace std; class Test{ public: void fun2() { fun1(); } private: void fun1()...

2018-08-02 20:03:50 28323

原创 c++对“匿名对象”的两种处理方法

1.对于语句:class A; A="匿名对象";待对象A把"匿名对象"的数据复制过来后,“匿名对象被释放”  运行结果:从执行结果可以看出,fun()函数内的p和main()函数中的p1地址不同,且有两次构造和两次析构,证实了上面的说法。 2.对于语句:class A="匿名对象";匿名对象被直接“扶正”,不被释放运行结果:由上面执行结果可知,fun(...

2018-08-01 23:30:33 1344 1

原创 三步解决C语言中struct字节对齐问题

直入主题,要判断一个结构体所占的空间大小,大体来说分三步走:1.先确定实际对齐单位,其由以下三个因素决定 (1)CPU周期 WIN vs qt 默认8字节对齐 Linux 32位 默认4字节对齐,64位默认8字节对齐 (2)结构体最大成员(基本数据类型变量) (3)预编译指令#pragma pack(n)手动设置 n--只能...

2018-08-01 23:03:39 23587 2

原创 超全面的c/c++虚拟内存4区结构图

我们常说的32位系统为每个进程分配4G虚拟内存空间(而MMU负责把这些个4G虚拟内存映射到实际内存条的物理内存),其实只有0~3G才是真正完全属于进程本身,是我们所说的用户区;3~4G这1G是所有进程间共享的,是我们所说的内核区,我们的程序是无法直接访问内核区的。#include&lt;stdio.h&gt;int a; //未初始化全局区 .bssint b=1; /...

2018-07-22 21:15:44 2373

转载 进程、线程 及其在 linux中的实现

1       进程,线程是怎么来的?抛开技术细节,从使用角度来讲:1.     在单核计算机里,有一个资源是无法被多个程序并行使用的: cpuCpu,承担计算任务,单个cpu一次只能运行一个任务。 没有操作系统的情况下,一个程序一直独占着全部cpu若有2个任务来共享一cpu,需要程序员安排程序运行计划,使得某时刻cpu被A程序独占,下一时刻cpu被程序B独占这种安排计划就是OS核心组件,被命名为...

2018-07-12 09:03:04 728

原创 c基础核心总结

一、数组和指针数组名存的就是数组首元素的地址,所以:1.数组名其实就是常量指针,不能对其进行自加自减等操作,它指向数组的第一个元素,那么它的步长是多少呢?这得看数组的类型,例如:1)int arr[6]; 这是个一维数组,类型是int[6],数组名就是第一个元素的地址,所以数组名指向arr[0],步长是4(4个字节)。2)int arr[6][7]; 这是个二维数组,类型是int[6][7],数组......

2018-03-31 17:18:08 207

转载 10.c语言中float\double类型数据的存储

转载地址:https://www.cnblogs.com/wuyuan2011woaini/p/4105765.htmlC语言和 C#语言中,对于浮点型的数据采用单精度类型(float)和双精度类型(double)来存储:float 数据占用 32bit;double 数据占用 64bit;我们在声明一个变量 float f = 2.25f 的时候,是如何分配内存的呢?其实不论是 float 类型...

2018-03-19 14:12:53 1639

原创 c语言字符串知识总结

由上面的例子可以知道111和222,222和333之间的换行符\n被丢弃,只有333后面的换行符\n被遗留在缓冲区,因为a和b按%s读取内容时,自动丢弃了缓冲区最前面的换行符\n,然后第一个getchar()读取了缓冲区的第一个字符:'\n',后面两个getchar()则分别读取了‘a’、‘b’,语句运行到这里,其实缓冲区还遗留着c'\n',若想清除,可以使用语句while(getchar()...

2018-03-19 13:52:42 479

原创 9.计算机4G的内存的地址编码范围是?

计算机内存的地址编码是以字节为单位的,即每字节内存都有个编号,8个二进制位为一个字节。所以4G内存的地址范围是0x00000000~0xffffffff那反过来问:为什么理论上32位系统最大只支持4G内存呢?答:32位系统的“32”位是指cpu的地址总线是32根,这样就可以表示0~2^32-1一共2^32个地址,而地址编码是以字节为单位,所以内存最大2^32个字节,即4G...

2018-03-19 12:12:24 7713 2

原创 5.计算机二进制存储原码、反码、补码的问题

计算机中,数值均以补码形式存储,正数的原码、反码、补码相同。负数的反码由原码符号位不变其余位取反求得,补码等于反码+1。补码求原码可用相反步骤。所以欲把计算机存储的二进制转换为相应的十进制数值的一般步骤是:1)先看这个数是有符号数还是无符号数,若是无符号/正数,则直接转化为十进制;2)若为负数,则存储的是补码,最高位不变,-1得到其反码,然后最高位不变,其余位全部取法得到原码,然后转化为十进制并添...

2018-03-15 23:03:08 922

原创 XShell4 连接ubuntu时SSH服务器拒绝了密码解决办法

使用XShell4连接虚拟机,以root账户登录,输入密码时服务器拒绝:sshd的设置不允许root用户用密码远程登录修改 vim /etc/ssh/sshd_config找到# Authentication: LoginGraceTime 120 PermitRootLogin without passwd StrictModes yes改成# Authentication: LoginGrac...

2018-03-13 10:54:30 1777

原创 3.c中关于程序中的gets()语句被跳过,不接受键盘输入的原因

  C语言里的gets()函数功能是从输入缓存中读取多个字符,遇到回车符时,结束输入。 当使用gets()函数之前有过数据输入,并且,操作者输入了回车确认,这个回车符没有被清理,被保存在输入缓存中时,gets()会读到这个字符,结束读字符操作。因此,从用户表面上看,gets()没有起作用,跳过了这一句 原因深入分析:当程序执行到gets()这一句时,跑去输入缓冲区读取内容...

2018-03-08 16:09:10 7859 3

原创 2.c中常用的输入输出函数总结

1&gt;scanf()和 printf()//支持格式控制符的输入和输出scanf()的返回值是成功读入的项目的个数,如:num=scanf("%d%d",&amp;a,&amp;b);如果a、b均读入成功,则num 的值为2scanf()除了%c模式之外,在读取输入时,均跳过空白字符(制表符、空格、换行符),直到第一个非空白字符处开始读取,读至遇到下一个空白字符或与正在读取类型不符的字符停止。...

2018-03-08 16:06:28 223

原创 4.c中常用的字符串处理函数

1&gt;gets()和puts()//字符串的键盘读取和屏幕输出gets()用于字符串的读取,使用行缓冲,从键盘输入一段字符并按下回车键时,开始从键盘缓冲区读取,并丢弃换行符\n,自动添加空字符\0.gets()的缺点是当输入的字符数超过了用来存放的字符型数组的大小,就会溢出到相邻的内存中。puts()用于字符串的屏幕输出,并于结尾自动添加换行符\n.2&gt;strcat()strcat(s1...

2018-03-08 15:56:47 170

原创 1.c中如何用最简洁的代码判断任意整数的位数?

//最简洁的代码判断任意整数的位数int get_length(int num){ int len=0;    while(num)    {        num/=10;        len++;    }    return len;} 

2017-12-10 21:10:46 511

空空如也

空空如也

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

TA关注的人

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