- 博客(25)
- 资源 (2)
- 收藏
- 关注
原创 链接器如何解析多重定义的全局符号
链接器的输入是一组可重定位目标模块。每个模块定义一组符号,有些是局部的(对定义该符号的模块可见),有些是全局的(对其他模块也可见)。如果多个模块定义同名的全局符号,则Linux会这么处理:函数和已初始化的全局变量是强符号,未初始化的全局变量是弱符号。不允许有多个同名的强符号,如函数名和已初始化全局变量名相同等;如果存在这种情况就会报错。如果有一个强符号和多个弱符号同名,则选择强符号。...
2019-03-26 10:06:41 504
原创 C/C++常见面试题整理---语言基础知识部分
指针和引用的区别指针指向一块内存,它的内容是指向内存的地址;引用是某内存的别名。引用使用时无需解引用;指针则需要解引用。引用不能为空,指针可以为空。引用在定义时被初始化一次,之后不可再改变;指针可变。程序为指针变量分配内存区域,而引用不需要分配内存区域。memcpy和strcpy的区别memcpy用来进行内存拷贝,有指定的拷贝数据长度,可拷贝任何数据类型的对象。strcpy只能拷...
2019-03-26 10:00:17 198
原创 数组首地址与数组首元素首地址
二者并不是一个概念!举个例子:int a[] = {1,2,3,4,5};a作为右值时,意义同&a[0]。即数组首元素首地址;&a[0],数组首元素首地址&a,数组首地址...
2019-03-26 09:43:07 2672
原创 从零开始做两轮自平衡小车(一)
引言在玩平衡车或四轴时,经常避不开姿态解算部分。而要了解飞机姿态,需要首先知道什么是地面 坐标系和机体坐标系。地面坐标系 1. 在地面上选一点Og 2. 使xg轴在水平面内并指向某一方向 3. zg轴垂直于地面并指向地心 4. yg轴在水平面内垂直于xg轴,其指向按右手定则确定机体坐标系 1. 原点O取在飞机质心处,坐标系与飞机固连 2. x轴在飞机对称平面内并平行于飞机的设计轴线
2017-07-05 22:53:43 14693
原创 IEEE浮点标准学习续
非规范化浮点数当浮点数的指数为允许的最小指数值,即emin(-126)时,尾数不必是规范化的。如,规范化浮点数1.0x2^(-129)可表示为0.001x2^(-126)。为了保存非规范化浮点数,IEEE标准采用了类似处理特殊值零时所采用的的办法,即用特殊的指数域值emin-1加以标记,此时实际保存的指数域值为127+emin-1=0,即0 00000000 001 0000 0000 0000 0
2017-04-25 20:19:30 618
原创 如何在两个不同的vim文件之间进行复制粘贴
相信我们在使用vim进行编辑的时候,经常碰到怎么把a文件的内容拷到b文件中去。本文教你怎么使用vim跨文件进行编辑操作。常规想法是打开两个vim,然后进行yy和p操作,但是实践证明根本是不行的。此时,我们需要分割窗口,然后就可以复制粘贴了。步骤如下:假设我要把srv.c文件的readline函数整体复制到cli.c文件中。 1. 分割:此时先打开srv.c,然后在命令界面下输入sp 2. 打
2017-04-24 12:49:02 24447 3
原创 socket编程入门(三)
下面给出开发简单客户回射服务器程序迭代过程。第一版程序见上一篇博客末尾,由于服务器关闭后处于TIMEWAIT状态,因此存在一个问题:短时间内服务器程序不能重启并使用。第二版(服务器端使用了REUSEADDR选项)使用这个选项后,即使服务器处于TIMEWAIT状态,也可以重新启用。 下面给出实现代码。(默认makefile就是上篇博客末尾的makefile) cli:同第一版的cli程序。 sr
2017-04-23 16:12:02 305
原创 socket编程入门(二)
在动手编写socket通信程序之前,还需要补充一些可能用到的函数。本文列出这些函数。编程使用到的函数socket int socket(int domain,int type,int protocol) 用于创建一个套接字用于通信,成功返回非负整数,失败返回-1bind int bind(int sockfd,const struct sockaddr* addr,socklen_t ad
2017-04-23 15:06:43 284
原创 socket编程入门(一)
什么是socket socket可以看成是用户进程与内核网络协议栈的编程接口。不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。socket编程基础基础知识之大小端和字节序 大端:数据低位在地址高位 小端:数据低位在地址低位 如0x12345678 按地址从低到高排布: 小端:0x78 0x56 0x34 0x12 大端:0x12 0x34
2017-04-23 14:19:45 449
原创 linux c编程工具使用之gdb
gdbgdb:GUN debugger启动程序,可按照用户自定义的要求随心所欲的运行程序。可让被调试的程序在用户所指定的调试的断点处停住(断点支持条件表达式)当程序停住时,可以检查此时程序中所发送的事。动态改变程序的执行环境。启动gdb调试程序gdb gdb coregdb 一些选项查看list/l:查看最近10行源码 l 1:查看第一行起始的代码l 2,10 查看第二行
2017-04-21 15:27:52 293
原创 linux c编程之Makefile使用
make工具通过一个称为Makefile的文件来完成并自动维护编译工作。 Makefile文件描述了整个工程的编译、链接等规则。 Target… : DEPENDENCIES… COMMAND …目标:程序产生的文件,如可执行文件和目标文件;目标也可以是可执行的动作,如clean,也称作伪目标。 依赖:是用来产生目标的输入文件列表,一个目标通常依赖于多个文件。 命令
2017-04-21 10:05:25 611
原创 vim使用的常见快捷键
快捷键汇总翻页/命令模式/向前翻 ctrl+f向后翻 ctrl+b行号/底行模式/设定行号 set nu取消行号 set nonu光标移动/命令模式/0 移到行首(注意是数字0)$ 移到行尾G 移到文件尾(注意是大写)1G 移到文件首(注意是数字1和大写G,中间没有空格)nG 移动到第n行(注意事项同上)n+ 向下移动n行n- 向上移动n行删除/命令模式/x 删除光标位
2017-04-20 16:51:44 305
原创 linux编程之静态链接库和动态链接库
静态库.a 程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。共享库.so/.sa 程序在运行的时候才去链接共享库的代码,多个程序共享使用库的代码。 * 一个与共享库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件的整个机器码。 * 在可执行文件开始运行以前,外部函数的机器码由操作系统从
2017-04-19 11:25:13 258
转载 浅谈HTTP中Get与Post的区别
浅谈HTTP中Get与Post的区别 Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获
2017-04-11 11:44:40 258
转载 对象三大基本特性和五大基本原则
透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础.三大特性是:封装,继承,多态 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通
2017-04-10 21:52:21 1935
原创 从0到n-1中随机等概率输出m个不重复的数
题目描述假设n远大于m,编程实现从0到n-1中随机等概率的输出m个不重复的数。void knuth(int n,int m){ srand((unsigned int)time(0)); for(int i = 0;i<n;i++) { if(rand()%(n-i)<m) { cout<<i<<endl; m--; } }}思路解
2017-04-10 21:07:31 2942
转载 ICMP:Internet 报文控制协议
1 引言2 ICMP报文的类型3 ICMP地址掩请求与应答4 ICMP时间戳请求与应答5 ICMP端口不可达差错1 引言 ICMP经常被认为是IP层的一个组成部分。它传递差错以及其他需要注意的信息。ICMP报文通常被IP层或更层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程。 ICMP报文是在IP数据报内部被传输的,它封装在IP数据报内。
2017-04-09 09:13:56 567
原创 华为OJ-简单错误记录模块
题目描述 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和 行号。要求如下: 1. 记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配) 只记录一条,错误计数增加;(文件所在的目录不同,文件名和行号相同也要合并)。 2. 超过16个字符的文件名称,只记录文件的最后有效16个字符;(如果 文件名不同,只是文件名的后16个字符和行号相同,
2017-04-04 15:56:22 371
原创 定点数的几个知识点
数的定标概念 通过设定小数点在数据的不同位置,就可以表示不同大小和精度的小数。Q和S表示法 以16位数据为例,Q和S表示法的存储格式为: Qx:x位用来表示小数部分,(15-x)位用来表示整数。 Sx.y:其中x+y=15,x位表示整数,y位表示小数。 精度:1/2^x(以Qx表示法为例说明) 括号里的内容为表示范围的小数部分怎么计算来的 下表为定点表示法
2017-04-01 10:54:25 4785 1
原创 华为OJ-输出单向链表中倒数第k个节点
题目描述 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。链表结点定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;};函数原型ListNode* FindKthToTail(ListNode* pListHead, unsignedint k);输入参数:
2017-03-30 17:04:19 332
原创 IEEE754浮点标准学习
概念定点数: 小数点位置事先已有约定,不可再改变。浮点数: 小数点位置可以改变。定点整数:小数点位置约定在最低数值位的后面。定点小数:小数点位置约定在最高数值位的前面。科学计数法表示 如,123.45 = 1.2345*10^2,其中, 尾数:1.2345(有效数字) 基数:10 指数:2规范化浮点数表示形式 +-d.dd…d*β^e,(0<=d<β) 尾
2017-03-29 20:48:32 671
原创 信号完整性的几个基本概念
常识铜厚:1oz(盎司)=35um(微米)=1.44mil线宽:1mil = 0.0254mm = 25.4 um;1inch = 1000mil几个基本概念 ### 上升/下降时间(Rise/Fall Time): 信号从低电平跳变到高电平所需要的时间,通常是量度上升/下降沿在10%~90%电压幅值之间的持续时间,记为Tr。 ### 截止频率(Knee Frequency):
2017-03-29 17:25:11 3767
原创 华为OJ-字符统计
华为OJ-字符统计题目描述: 如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。 实现以下接口: 输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用) 按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出 清空目前的统计结果,重新统计 调
2017-03-29 16:32:42 653
原创 两个马匪分金子
解题思路考虑先手和后手在序列a(1);a(2);…;a(n)上博弈: * 如果先手取走了a1,那么问题转为两个人在a(2);a(3);…;a(n)上的博弈 * 如果先手取走了an,问题就变为了在a(1);a(2);…;a(n-1)上的博弈假设,f(L,R)为两个人在序列a(L);a(L+1);…a(R)上博弈时,先手最多能拿到多少价值,此时后手拿到的 价值一定为: 总价值-f(L,R)代
2017-03-29 16:31:15 267
原创 两个字符串的编辑距离、相似度求解
两个字符串的编辑距离、相似度求解概念字符串的编辑距离,是指利用字符操作,把字符串A转换成字符串B所需要的最少操作数 。其中,字符操作包括以下3种:删除一个字符 delete a character插入一个字符 insert a character替换一个字符 replace a character字符串的相似度则是指,在字符串的编辑距离+1的倒数。解决思路另dis[i][j]表示从字符串
2017-03-29 16:30:05 406
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人