自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个菜鸟的博客

一直一直进步

  • 博客(33)
  • 资源 (12)
  • 收藏
  • 关注

原创 深入理解C语言

大型源代码里面经常出现一些晦涩的C语言及其规则。 本贴着重记录这些代码以及支撑代码运行的C语言神奇用法。 搞懂这些C语言面试就是无敌开挂模式了牛人讲解的C语言为啥难。语言的歧义 C语言的谜题 谁说C语言很简单?C 语言中的指针和内存泄漏C 语言中的指针和内存泄漏 这篇文章简单讲解了关于动态内存的东西,这些东西一般在大型程序里面都是必须十分注意的问题。选择整数数据类.........

2017-09-22 10:21:02 6241 1

原创 LwIP动态内存管理

网络字节序采用大端方式。对于0x12345678,需要发送到一个网络,高字节优先发送存储在B的A,下一个就是A+1.然后A+2等等,那么就是高字节存储在低地址,刚刚好类似于大端模式。若处理器是小端格式,那么就需要将接收的数据从大端模式转换为小端模式,才能参加运算,否则肯定出错。动态内存管理 由于LwIP需要处理TCP/IP协议栈大量数据,所以动态内存管理尤其重要。内存管理策略、内存管理分配效率是

2017-09-28 16:24:58 838

原创 Makefile gcc shell

GCCgcc指令的一般格式为:gcc [选项] 要编译的文件 [选项] [目标文件] #include<stdio.h> #include<stdlib.h> int main(void) { printf("Hello World!"); }gcc -o hello hello.c 这句命令默认进行了预处理、编译、汇编、链接工作,直接生成了可执行的二进制文件。其中-o 后结

2017-09-19 10:13:50 1020

原创 3章 文件I/O

To Be Continue

2017-09-17 22:05:01 310

原创 15章先导篇 Posix/System V IPC共性

POSIX(Portable Operation System Interface)可移植操作系统接口(具体实现依据平台 )标准。目的是为了提升应用程序的各种UNIX系统环境之间的可移植性。就是为了让系统函数调用采用相同的原型标准编写。 Signal UNIX Specification是POSIX.1的一个超集,定义了一些附加接口,扩展了POSIX SVR4(UNIX System V Rel

2017-09-17 10:00:07 367

原创 1章 套接字API概述

。。。。。。。。

2017-09-15 20:10:25 294

原创 15章 进程间通信之共享内存区(Posix、System V共享内存)

共享内存区介绍 共享内存是可用IPC形式中最快的。一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据的传递就不再涉及内核(不需要执行内核调用传递数据)。然而往该共享内存区存放信息或从中取走信息的进程间通常需要某种形式的同步。传统IPC: 服务器从输入文件读。该文件的数据由内核读入自己的内存空间,然后从内核复制到服务器进程。服务器往一个管道、 FIFO或消息队列以一条消息的形式写入这

2017-09-15 15:55:13 836

原创 15章 进程间通信之同步(互斥锁、条件变量、读写锁、信号量)

同步: 为了允许在线程和进程间共享数据,必须同步。互斥锁和条件变量是同步的基础。如果互斥锁或者条件变量存放在多个进程间共享的某一个内存区,那么通过它可以进行多进程同步。互斥锁和条件变量 互斥量(mutex)从本质上说是一把锁,在访问共享资源前对互斥量进行设置(加锁)。在访问完成后释放(解锁)互斥量,对互斥量进行加锁以后,任何其他试图再次对互斥量加锁的线程都会被阻塞直到当前...

2017-09-15 15:54:47 1404

原创 3章 程序的机器级以及程序优化

To be continue

2017-09-14 16:20:15 373

转载 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-09-14 10:17:20 252 1

原创 2章 信息的表示和处理

信息存储 最小寻址存储器单位是字节。机器将存储器看作一个非常大的数组,称之为虚拟存储器。存储器每一个字节都有一个唯一编号叫做地址,所有这些编号的集合称之为虚拟地址空间。实际实现起来都是通过总线寻址存储器寄存器进行读和写。字长: 每台计算机都有对应的字长,指明整数和指针值的大小。由于地址值就是虚拟地址编码,所以字长决定虚拟地址空间的最大大小。ubuntu-64位,那么虚拟地址最大寻址空间是0

2017-09-12 14:31:07 431

原创 15章 进程间通信之消息传递(管道、FIFO、消息队列)

管道 管道一般是半双工(数据只能在一个方向上流动),管道只能在具有公共祖先(亲缘关系)的两个进程之间使用。一个管道由一个进程创建,在进程fork之后,管道就可以在父子进程之间通信了。特点:它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。它可以看成是一种特殊的文件,对于它的读写也可以使用...

2017-09-10 11:47:22 2391

原创 Linux之高级IO

简述Linux5大IO模型非阻塞IO 非阻塞IO也就是当读取或者写低速设备时候,设备没有准备好的时候,读写函数直接错误返回,表示如果函数继续执行下去,那么将阻塞。记录锁 记录锁是读写锁的一种扩展类型,可用于亲缘关系或无亲缘关系的进程之间共享某个文件的读与写。被锁住的文件通过文件描述符进行访问,执行上锁的操作函数是fcntl,这种类型的锁通常在内核中维护。  ...

2017-09-10 11:46:46 1296

原创 wireshark分析TCP数据包

TCP/IP协议不清楚请回看TCP/IP协议理论在虚拟机运行ubuntu,通过windows下的cuteftp连接ubuntu,利用wireshark进行抓包分析。出现如下数据帧(注意wireshark如何过滤消息): 其中47,48,49分别是三次握手对应的帧信息。三次握手47帧/握手1 上面信息已经非常明确。这是一个客户机请求连接帧。只设置了SYN标志位。并且初始化序列号和确认应答号都为

2017-09-09 22:05:16 14981

原创 wireshark分析UDP数据包

这里利用wireshark抓捕QQ登陆时候的UDP数据包,分析其中的协议,仅仅分析众多数据包中的一帧。因为不是为了破译啥,仅仅是为了抓包看看具体的UDP协议而已。 其中上面QICQ就是其中一条UDP数据包。QICQ - IM是QQ定义的应用层协议如下: UDP协议部分: 腾讯OICQ部分

2017-09-09 20:42:20 25980 1

原创 C标准库常用函数实现

下面介绍一些常用的标准库库函数,因为经常用到,所以搞懂内部源代码很重要,也是进一步学习C语言指针很有用。慢慢更新,很重要的过程。为了防止和库函数名重复,例如strncpy则表示为mystrncpy测试,但是mystrncpy里面的具体实现和标准库strncpy实现一样。string.hstrlensize_t mystrlen(const char *s)//s指向的内容只读{ con

2017-09-09 11:05:44 2883

原创 Linux后端开发

1.精通C语言。C Primer Plus第6版C程序设计语言C和指针C陷阱与缺陷C专家编程C语言解惑2.数据结构和算法数据结构与算法分析leetcode3.熟悉Linux操作环境在Linux平台上面会基本操作,常用指令熟悉,鸟哥私房菜。4.熟悉底层,计算机体系结构程序员的自我修养—链接、装载与库深入理解计算机系统5.熟悉Lin...

2017-09-09 09:29:13 2929 4

原创 CSDN Markdown 模板

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-09-08 20:56:22 691

原创 内存对齐

复杂数据类型存放,以及各种数据类型对齐问题的处理。

2017-09-08 10:10:24 207

原创 wireshark分析IP协议

传送门: TCP/IP协议不清楚请回看TCP/IP协议理论1、ping 10.13.3.213 -l 3000通过ping同一个局域网内的主机,其中通过了两个路由器,并且数据大于3000,IP数据报会分片。ping利用了IP和ICMP协议。可以用来分析这两个协议。 上图ping所产生的所有报文: 捕获文件中捕获了4个ping包。41~46是一个完整的ping包,其中41~43是请求包,

2017-09-07 17:05:49 8665 1

原创 wireshark分析ARP协议

通过以太网发送IP数据包,需要先封装32位的IP地址和48位的MAC地址。由于发送数据包时仅仅知道目标IP地址,不指定对方MAC地址,就需要接着ARP协议通过IP地址去询问目标的MAC地址,才可以正常通信。 1、 PC1想发送数据到PC2,首先检测本地缓存ARP缓存表和PC2IP匹配的MAC。 2、如果没有找到此条目,那么PC1将广播一个ARP请求帧到本地网络的所有主机。本地网络上每台主机

2017-09-07 15:44:17 8827 1

原创 结构体、联合体合体以及位操作

结构体定义有三种形式: 1,struct 结构体标识符{};struct 结构体标识符 变量。 2,struct 结构体标识符{}*指针变量名; 3,struct{}*指针变量名;这种结构体只可用一次,因为无结构体名。 4,typedef struct{}PIO_SRT;将PIO_SRT定义为结构体类型别名,以后可以用PIO_SRT定义此类型结构体。 结构体初始化器:通过.成员名 的方式以

2017-09-07 11:06:01 3644

原创 宏定义

宏定义偏移地址头文件变参数宏定义

2017-09-07 09:46:09 1165

原创 数据对齐问题

对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。CASAPP上面有讲解。

2017-09-06 21:38:36 547

原创 大小端问题

CPU大小端两种检测方法因为某些变量占用多个字节,一个字节对应一个地址,导致字节存放顺序的问题,产生了大小端的问题。 大端模式就是变量的高字节存储在低地址。 小端模式就是变量的高字节存储在高地址。 假如一个int a = 0x1234;占用2字节,地址默认递增生长。 内存地址 大端a存储方式 小端a存储形式 0x40000 12 34 0x40001 34 1

2017-09-06 09:52:58 1286

原创 Volatile解释

编译器编译器有一种技术叫做数据流分析,分析程序中的变量在哪里赋值、在哪里使用、在哪里失效,分析结果可以用于常量合并,常量传播等优化,进一步可以消除一些多余的代码减少占用空间。但有时这些优化不是程序所需要的,这时可以用volatile关键字禁止做这些优化。volatile解释volatile的本意是“易变的”意思,表示定义的这个变量是容易变化的。 因为访问寄存器要比访问内存单元快的多,所以编译器一般

2017-09-05 10:37:02 984

原创 TCP/IP 实践之Ubuntu 16.04下安装网络流量分析工具 Wireshark

Wireshark是windows下最好用的抓包工具,可以清晰的看清楚协议包里面的内容。所以这个学习TCP/IP协议栈必备的工具。

2017-09-05 10:12:37 1443

原创 Linux之线程控制

线程属性通过函数设置创建线程时候的属性。 int makethread(void * (*fn)(void *) , void *arg)//创建带有分离属性的进程 { int err; pthread_t tid;//线程结构体 pthread_attr_t attr;//线程属性结构体 err = pthread_attr_init(&amp;...

2017-09-04 21:56:57 435

原创 Linux之进程控制

不同进程直接不同步或者通信就会产生竞争关系。下面是一个父子进程同时输出,没有进行同步处理static void print(char *str){ char *ptr; char c; setbuf(stdout , NULL); for(ptr = str ;(c = *ptr++) != 0 ;){//这句for循环,先初始化ptr,然后利用c等于...

2017-09-03 15:34:54 254

原创 C++ Primer 第六章 函数

函数有的输入参数是形参,实参是形参的初始值,实参类型必须和形参类型匹配。int main(void)显示定义没有形参。形参作用域是函数块内。

2017-09-02 16:38:54 334

原创 Linux中常用软件安装

删除软件sudo apt-get remove –purge google-chrome-unstable –purge 选项表示彻底删除改软件和相关文件,加粗的表示软件名称。VMware虚拟机相关问题更改下载源更换源的方法非常简单:修改/etc/apt/sources.list文件即可 sudo cp sources.list sources.list.bak(备份原始文...

2017-09-02 12:17:00 2168

原创 C++ Primer 第四章 表达式

多余两句语句的if后面,记得加上大括号控制执行路径。C++case标签自由,可以将标签写到一行,表示case代表某个范围内的值。尽量不要省略case分支后面的break语句。switch(ch){ case 'a': case 'e': case 'i': case 'o': case 'u': ++Cnt;

2017-09-01 15:28:48 194

原创 C++ Primer 第五章 语句

break goto continue

2017-09-01 12:55:23 215

2019年秋招面试总结

2019年秋招面筋,几乎查看了牛客网上全部互联网大厂的面筋并结合自己的面试过程,总结出来的一份大面筋,希望对学弟们有用。

2018-10-30

Source Insight 4.00.0084破解版安装包

Source Insight 4.00.0084破解版,本版本完美解决了中文乱码问题。非常适合阅读源代码。

2018-04-10

google-c++编程风格(高清版).pdf

带书签的Google-C++编程风格介绍,许多开源代码都采用了这里面的规则,可以看看。然后阅读代码更加清晰。

2018-02-06

CCSv6 License

CCSv6的许可证,绝对可用,其他很多虽然是这个名字,但是根本就不是6的许可证,依旧不能调试。我在测试了很多之后都不能用,然后在外国网站找到了这个,亲测绝对可用。利用CCS里面的License管理器读入即可。

2017-09-20

CCSv5 License

CCSv5的许可证,绝对可用,直接下载,然后利用CCS里面的License管理器读入即可。。。。。。。。。。。。。。。。。。。。

2017-09-20

TCP/IP进行网际互联 卷1 原理、协议与结构和TCP-IP详解卷一:协议

两本合集。里面可能含有一些自己pdf标记,自行删除即可。 TCP/IP协议栈 TCP-IP详解卷一:协议 TCP IP进行网际互联 卷1 原理、协议与结构

2017-09-14

永磁同步电机simulink仿真

永磁同步电机simulink仿真,里面写了部分卡尔曼进行位置估计,但是效果不好,但是里面的有位置传感器的仿真是可以的。参考一篇论文上面做的。

2017-04-10

第九届飞思卡尔光电组源代码,华南赛区二等奖

源代码

2017-04-10

C#棋士飞行器源代码,初学者可以看看

C#棋士飞行器源代码,初学者可以看看 很容易理解的东西 本人也是刚刚学习 刚刚写的

2014-05-22

空空如也

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

TA关注的人

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