自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

shanchangyi的博客

学海无涯

  • 博客(56)
  • 收藏
  • 关注

原创 git 常用命令

2018-03-30 11:18:26 315

转载 HTTP报文详解

HTTP报文:它是HTTP应用程序之间发送的数据块。这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。这些报文都是在客户端、服务器和代理之间流动。 HTTP报文的流动方向:一次HTTP请求,HTTP报文会从“客户端”流到“代理”再流到“服务器”,在服务器工作完成之后,报文又会从“服务器”流到“代理”再流到“客户端” 报文的

2017-02-09 21:11:48 698

转载 STM32定时器 正交编码

编码器分类: 按工作原理:光电式、磁电式和触点电刷式 按码盘的刻孔方式:增量式和绝对式两类 由于博主接触面还不是很广,一共就用过两个种类的编码器,都是属于光电的 差分编码器:一般由8根线连接 信号线分别为 A+ A- B+ B- Z+ Z- 以及VCC和GND 这里有一种不需要Z信号的,6线差分A+ A- B+ B- VCC 和GND 正交编码器:一般是5根线连接,信号线分

2016-09-27 16:35:51 1075

转载 TCP 三次握手四次挥手

TCP/IP协议三次握手与四次握手流程解析 一、TCP报文格式  TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:图1 TCP报文格式  上图中有几个字段需要重点介绍下:  (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。  (2)确认序号:Ack序号,占32位,只有AC

2016-09-27 16:33:27 239

转载 C可变参数函数 实现

C函数要在程序中用到以下这些宏:void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_ptr, type ); void va_end( va_list arg_ptr );  va_list:用来保存宏va_start、va_arg和va_end所需信息的一种类型。为了访问变长参数列表中的

2016-09-27 16:31:03 322

转载 判断两个单链表是否有交点

问题描述:一个比较经典的问题,判断两个链表是否相交,如果相交找出他们的交点。思路:1、碰到这个问题,第一印象是采用hash来判断,将两个链表的节点进行hash,然后判断出节点,这种想法当然是可以的。2、当然采用暴力的方法也是可以的,遍历两个链表,在遍历的过程中进行比较,看节点是否相同。3、第三种思路是比较奇特的,在编程之美上看到的。先遍历第一个链表到他的尾部,然后将尾部

2016-09-24 10:13:03 550

转载 进程间的几种常用通信方式

进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。但是,系统空间却是“公共场所”,所以内核显然可以提供这样的条件。除此以外,那就是双方都可以访问的外设了。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据库中的某些表项和记录交换信息。广义

2016-09-20 09:48:34 1170

转载 ARM7三级流水线详解

看到汇编中很多关于程序返回与中断返回时处理地址都很特别,仔细想想原来是流水线作用的效果。所以,决定总结学习下ARM流水线。ARM7处理器采用3级流水线来增加处理器指令流的速度,能提供0.9MIPS/MHz的指令处理速度。PS:MIPS(Million Instruction Per Second)表示每秒多少百万条指令。比如0.9MIPS,表示每秒九十万条指令。MI

2016-09-19 22:22:31 8080

原创 TI面试 销售岗和 AE岗

昨天TI来校园招聘,参加招聘会的人非常多,后面都坐满人了,可见大家还是比较关注这家公司的,我之前在网站上注册了简历投的是技术销售类,然后现场投简历选的AE,晚上收到销售的面试电话,第二天上午收到AE的电话,而且一个下午三点一个下午四点OrZ。中午在图书馆大厅和小伙伴们聊了下天,我竟然聊着就睡着了·······果然是成大事者(滑稽)。   下午先群面,12个人一组,全是男生而且个个西装革履,尼玛

2016-09-06 22:50:07 4933

原创 华为面试

昨天刚参加完华为优招的面试,写一篇博客记下来过程与经历。(嵌入式软件)大概一周前参加的华为上机考试,一共三到编程题两个小时,第一道是输入16进制字符串,以0x开头,abcdef大小写都可以,转换为十进制字符串输出,难度不大,很快做出。第二题是输入一句话,单词用空格和逗号句号隔开,输出不同的单词,以空格隔开,小有难度写完以后还有一个小时的时间,但是四个case只跑完了一半,就调试呗,VS20

2016-08-24 16:47:40 1053

原创 代码总结 2

1、 蛇形 输出#includeusing namespace std;void getresult( int n){ int p[1000][1000]; int count=0; for(int i=0;i<n;i++){ for(int j=0;j<=i;j++) p[i-j][j]=++count; }

2016-08-17 21:49:14 353

原创 链表 堆栈 队列

1、链表  的创建 加入 删除 遍历 等 ······     #include #include typedef struct student{ int num; struct student *next;}node;node* creat();int length(node* n);void print(node* n);node* insert(no

2016-08-17 14:11:31 450

原创 代码总结

1、    输入N个字符,字符在ACSII码范围内(0~127)。#include#define N 128int main(){ int i=0,count=0; int ASIC[N]={0}; char input[500]; gets(input); while(input[i]!='\0') {

2016-08-17 14:09:48 563

原创 排序 自己总结 自己写代码

第一种 直接用快速排序 头文件   sort ( begin,end ),begin,end为地址,#includeint main(){ int a[20]={2,4,1,23,5,76,0,43,24,65},i; for(i=0;i<20;i++) cout<<a[i]<<endl; sort(a,a+20); for(i=0;i<20;i++) cout<<a

2016-08-17 13:27:17 421

原创 平衡车 制作过程 (持续更新)

先将平衡车控制任务分解为三个基本的动作:1:保持平衡。      通过控制两个电机的正反向转动来调节平衡。2:控制小车的速度。    调节小车的倾斜角度来实现速度控制,实际上最后演变为控制电机的转速来实现车轮速度的控制。3:控制小车的方向。    通过控制小车的速度差,即转速差值来控制方向。将复杂的问题分解为三个小的问题。

2016-08-11 10:37:12 11471 1

原创 IIC 学习笔记 这次懂了

IIC总线一般串行数据通讯都有时钟和数据之分,有异步和同步之别.有单线,双线和三线等.I2C肯定是2线的(不算地线).I2C协议确实很科学,比3/4线的SPI要好,当然线多通讯速率相对就快了.I2C的原则是:在SCL=1(高电平)时,SDA千万别忽悠!!!否则,SDA下跳则"判罚"为"起始信号S",SDA上跳则"判罚"为"停止信号P".在SC

2016-08-07 16:25:31 4487

原创 IIC与SPI学习总结 未完待续

1. 综述:  GPIO 和 SPI 都是嵌入式智能设备最常用的外设接口。1)外在的都是GPIO引脚,控制时都是mcu通过引脚控制高低电平2)没有SPI时,可以用GPIO模拟3)但是SPI有自己的优势,串行 全双工 同步通信,故符合SPI协议的硬      件,肯定首先考虑SPI接口。2.GPIO:1).数量众多,且结构简单2)许多设备只需要开关两种状态就够了3)控

2016-08-05 16:05:30 1673

转载 二叉树 数据结构

一、基本概念每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。性质:1、非空二叉树的第n层上至多有2^(n-1)个元素。2、深度为h的二叉树至多有2^h-1个结点。满二叉树:所有终端都在同一层次,且非终端结点的度数为2。在满二叉树中若其深度为h,则其所包含的结点数必为2^h-1。完全二叉树:除了最大的层次即成为一颗满

2016-08-04 11:14:47 327

原创 用位运算实现+-操作

int add(int a,int b){ int sum,carry; //b=(~b)+1; // 加上这句话就是减法,因为负数在计算机中是以补码的形式存在的 do { sum=a^b; carry=(a&b)<<1; a=sum; b=carry; }while(carry!=0); retu

2016-08-03 16:44:24 574

原创 剑指offer 中问题的眼前一亮的解法

1、两个栈实现一个队列。2、青蛙跳一级台阶和二级台阶,与斐波那契数列的关系。3、从尾到头打印链表,用递归实现。4、删除链表的节点,二重指针的复习。5、n位数的打印,鲁棒性。6、合并两个排序链表,递归。7、abcd全排列 递归8、数组的前k个最小数9、丑数。2、3、510、在数组中第一个只出现一次的数11、函数指针  实现1+2+3+·······+n; p2

2016-08-02 20:21:35 207

转载 两个栈实现队列 两个队列实现栈

1. 两个栈实现队列//前提已知:struct Stack{ int top;   //栈顶指针 int stacksize;//栈的大小 int *s;   //栈底指针};void InitStack(Stack *s);void Push(Stack *s, int k);int Pop(*s);int IsStackEmpty(*

2016-08-01 16:32:40 183

原创 二分法查找的实现 递归与非递归方法

int erfen(int a[],int size,int N){ int i,j,cent; i=0; j=size-1; while(i<=j) { cent=(i+j)/2; if(a[cent]>N) //非递归实现方法 j=c

2016-08-01 15:21:36 398

原创 一个经典的问题的思考: strcpy覆盖内存

下面程序会出现什么问题:#include#includeint main(){ char s[]="123456789"; char d[]="123"; strcpy(d,s); printf("%s,\n%s",d,s); return 0;}编译运行后结果是:查看各个字节的地址    d的四个字节的地址分别为

2016-07-28 20:32:59 1426

原创 从一个问题的延伸:strcpy函数的实现

已知strcpy函数的原型是:char *strcpy(char *dst, const char *src);实现strcpy函数解释为什么要返回char *假如考虑dst和src内存重叠的情况,strcpy该怎么实现 1.strcpy的实现代码char * strcpy(char *dst,const char *src) //[1]{

2016-07-28 13:06:33 336

转载 C++ 值传递、指针传递、引用传递详解

最近写了几篇深层次讨论数组和指针的文章,其中提到了“C语言中,所有非数组的形式参数传递均以值传递形式”数组和指针背后——内存角度语义"陷阱"---数组和指针而关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~下文会通过例子详细说明哦值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度

2016-07-27 23:12:34 267

转载 内部 八大排序算法

转载自:http://blog.csdn.net/hguisu/article/details/7776068排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。        当n较大,则应采用时间复杂度为O(nlog2n

2016-07-21 16:50:04 1853

转载 队列——数据结构

队列特性:先进先出(FIFO)——先进队列的元素先出队列。来源于我们生活中的队列(先排队的先办完事)。队列有下面几个操作:InitQueue()   ——初始化队列EnQueue()        ——进队列DeQueue()        ——出队列IsQueueEmpty()——判断队列是否为空IsQueueFull()    ——判断队列是否已满队列可以由数组

2016-07-21 13:48:58 370

原创 PWM波形输出

在学习嵌入式开发板例程时,刚开始的时候不懂PWM波形是怎样输出的,后来渐渐的消化了,mark下:Stm32_Clock_Init(9); //系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600); //串口初始化 LED_Init(); //初始化与LED连接的硬件接口 TIM1_PWM_Init(899,0);//

2016-07-20 20:52:48 5666

转载 STM32中的位带(bit-band)操作

支持了位带操作后,可以使用普通的加载/存储指令来对单一的比特进行读写。在 CM3 中,有两个区中实现了位带。其中一个是 SRAM 区的最低 1MB 范围,第二个则是片内外设区的最低 1MB范围。这两个区中的地址除了可以像普通的 RAM 一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个 32 位的字。当你通过位带别名区访问这些字时,就可以达到访问原始比特的目的。    

2016-07-19 18:44:44 2179

转载 内联函数和宏定义的差别

用内联取代宏: 1.内联函数在运行时可调试,而宏定义不可以;2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会; 3.内联函数可以访问类的成员变量,宏定义则不能; 4.在类中声明同时定义的成员函数,自动转化为内联函数。 文章(一) 内联函数与宏定义  在C中,常用预处理语句#define来代替一个函数定义。例如:   

2016-07-12 17:07:15 216

转载 浮点数在内存中存储

C语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用64bit,我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?如果胡乱分配,那世界岂不是乱套了么,其实不论是float还是double在存储方式上都是遵从IEEE的规范的,float遵从的是IEEE R32.24 ,而dou

2016-07-12 10:24:22 404

转载 线程和进程的区别

1.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

2016-07-08 10:36:25 249

转载 浅谈内存分配方式以及堆和栈的区别(很清楚)

对于一个程序要运行,涉及到的内存分配是一个首要问题,这里简单说一下一个简单的程序运行所涉及到的内存分配方式。另外,在数据结构中存在堆和栈的概念,栈是一种先进后出的数据结构,堆则是一种排序方式,而在内存分配中也存在堆(heap)和栈(stack)的概念,与数据结构中的概念不同,这里简单说明在内存分配中的堆栈之间的不同。一、内存分配方式1、全局变量和静态变量(static变量),是由编译器自动

2016-07-07 22:32:51 13825 1

转载 堆和栈的区别

非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据

2016-07-07 11:03:20 213

转载 找资源网站

作者:吴剃中链接:https://zhuanlan.zhihu.com/p/21479053来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。一、找资源利器PS:请复制转走,知乎禁了不要怪我,不谢 去转盘网:http://www.quzhuanpan.com/西林街:http://www.xilinjie.com/EV搜索:htt

2016-07-06 12:41:21 7791

转载 工程师总结自己没牛逼起来的原因

总结下自己没牛逼起来的原因第一点,没有积累:积累,这个命题太大,我没办法说全,只能说一点:技术的积累很重要,非常重要。 我的情况很类似,做MP3的时候,工作很卖命,攻关期间,连续工作30几天,每天2点睡觉,8点准时回到办公室,没有休息日,没有约会,盯示波器盯到眼睛通红,洗澡是能洗出一地的头发也在所不惜,因为当时觉得趁着还年轻,能多做一点是

2016-07-06 10:50:26 421

原创 USB的NRZI编码

NRZI(反向不归零编码),NRZ-I编码中,编码后电平只有正负电平之分,没有零电平,是不归零编码。

2016-07-05 15:33:51 669

原创 学习计划

1、 学习高级c语言,凌明教授的视频    遇到相关的概念和函数原型,弄懂他们,写下博客,将知识沉淀下来;时间一周之内; 2、 学习嵌入式视频,STM32中的 Uart SPI IIC CAN  USB  ,利用开发板和源代码 弄懂他们 ,然后将6210芯片测试一下,USB将其驱动弄懂!!!一个月 + 一个月3,、平衡车小项目做出来,两周时间。4、  算法与数据结构 小甲鱼的视频 将链

2016-07-04 20:54:27 229

转载 assert 断言

C语言的那些小秘密之断言每次写摘要我都觉得是一件很头疼的事儿,因为我知道摘要真的很重要,它几乎直接就决定了读者的数量。可能花了九六二虎之力写出来的东西,因为摘要的失败而前功尽弃,因为绝大多数的读者看文章之前都会浏览下摘要,如果他们发现摘要“不对口”,没有什么特色和吸引人的地方,那么轻则采用一目十行的方法看完全文,重则对文章判“死刑”,一篇文章的好坏虽然不能用摘要来衡量,但是它却常常

2016-07-04 18:39:53 1006 1

转载 malloc and free

在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用—— 就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以 写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助!

2016-07-04 13:56:35 267

空空如也

空空如也

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

TA关注的人

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