- 博客(26)
- 资源 (2)
- 收藏
- 关注
原创 剑指offer——根据先序,中序重建二叉树C/C++(以及二叉树的三种递归和非递归遍历实现)
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。#以下完整代码,读者可将其直接复制到IDE里运行查看,效果更佳。此处不多bibi。/* 根据先序序列和中序序列创建二叉树。 */ #include ...
2019-07-02 12:15:56
741
1
原创 momenta嵌入式实习生面试经历
前言:牛客网投递简历,第二天十二点hr电话就打过来了。约个电话面试,时间为第三天(六月十二)的五点半。一面:这次面试时间五点半,五点半,五点半。说好的五点半,我找了个空教室从五点等到六点半,六点半,六点半啊。我都以为是被骗了的准备去吃饭的时候,这时一个来自山东青岛的电话打过来了。接通后一直道歉,我。。。唉。。谁让我菜呢。在之前有面试过腾讯,阿里的经验(虽然都失败了,但经验还是有的)。这次我自...
2019-06-16 21:18:59
2337
1
原创 C语言——指针练习
指针是一种保存变量地址的变量。在C语言中,指针的使用非常广泛,原因之一是,指针常常是表达某个计算的唯一途径,另一个原因是同其他方法比较起来,使用指针通常可以生成更高、更紧凑的代码。练习宏定义与测试指针 单目运算符 符合从右!!到左的顺序执行#include "stdio.h"#define MIN(A,B) A>B? B:A //宏定义求最小值int main(){...
2019-06-16 21:13:13
492
原创 stm32启动代码详细分析记录
stm32启动代码详细分析记录启动的代码中用到的汇编指令解析1 先在RAM中分配系统使用的栈,RAM的起始地址为0x2000_00002 然后在RAM中分配变量使用的堆3 然后在CODE区(flash)分配中断向量表,flash的起始地址为0x0800_0000,该中断向量表就从这个起始地址开始分配4 分配完成后,再定义和实现相应的中断函数,5 所有的中断函数全部带有[weak]特性,...
2019-06-16 21:11:49
1536
原创 通过LWIP 的RAW API 进行与服务器的UDP通信(stm32 f103 -- enc28j60)
LWIP的RAW API UDP通信详解(stm32f103—enc28j60)实现任务通过接收到上位机端发送来的数据来实现控制开发板做相应的操作。代码实现首先看看几个主要的结构体//发送数据包struct sardata{ u8 head[4]; //标志头 u16 length; //长度 u8 humi[2]; //温湿度传感器状态 u8 data[4];...
2019-05-17 23:29:41
1716
1
原创 LWIP的RAW API UDP通信详解(stm32f103---enc28j60)
目录LWIPLWIP简介LWIP主要特性ENC28J60ENC28J60简介![ENC](https://img-blog.csdnimg.cn/20190515175543191.png#pincenter)ENC28J60特点无操作系统LWIP移植在说移植之前,先说下几个重要的函数功能和数据结构enc28j60.c文件主要结构体*netif*结构体定义(netif.h)只列出了比较重要的字段l...
2019-05-16 17:41:30
4983
原创 程序的装入与链接(动、静态重定位)
用户程序要在系统中运行,必须要把它装入内存,然后再将其转变成一个可执行程序。用户程序变为可执行程序都需要执行以下步骤: 编译:由编译程序进行编译,形成若干个目标模块。 (编译程序执行) 链接:由链接程序将编译好的若干个目标模块以及它们所需要的若干个库函数链接在一起。形成转入模块 ...
2019-05-03 18:38:01
2323
原创 LeetCode存在重复 的五种解法
存在重复给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true//暴力搜索法(时间太慢,不符合题目要求)bool containsDuplicate(int* nums, int numsSize) { if(numsSi...
2019-04-27 10:32:50
663
原创 计算质数 六种境界(含代码实现)
计数质数 六种境界(含代码实现)以下均基于此思想//境界一 傻子作法(也就是我)int countPrimes(int n) { int i,j,sushu_flag = 1,sushu_sum = 0; for(j=2;j<n;j++) { for(i=2;i<j;i++) { if((j...
2019-04-25 23:07:29
512
原创 基于STM32f103简单自平衡小车项目总结
一. 项目基本信息项目名称:基于STM32f103简单自平衡小车项目完成时间:2018.9.20——2018.10.20项目类别:自动控制类项目总体概述: 这个项目是我在入门嵌入式做的第一个项目,是在看完原子哥的视频后,为了巩固和连接起来这些知识点做的,做的不是很好。此次项目主要涉及到嵌入式方面的的基础知识,如PWM输出,IIC通信时序,uart串口通信,定时...
2018-12-13 14:51:36
14419
8
转载 汇编语言程序设计大赛赛后总结
转自我们组队长,我是组内SA(系统分析师) 为期将近一月(11-05公布题目,12-02晚截止提交)的校汇编比赛总算告一段落了,接下来潜心学习嵌入式Linux准备来年找工作。因为本人比较喜欢汇编(目前只学过8086),在上微机原理课的同时,在自学王爽老师的《汇编语言》(第三版),不得不说,这是国人写的很优秀的一本计算机科学系图书,但略有遗憾,我并没有完全学完学懂学会(太贪容易,太浮浅粗疏,太不...
2018-12-08 14:09:45
643
原创 Mysql存储过程
Mysql存储过程一. 过程化sql 过程块sql主要有两种类型,几命名块和匿名块。匿名块每次执行时都要编译,而且不能存储到存储过程中,也不能在其他过程化sql块中调用,过程和函数时命名块,他们在编译时保存在数据库中,成为持久型存储模块(Persistent Stored Module,PSM),可以被反复调用,运行速度较快。二. 基本语法1. 创建存储过程cre...
2018-12-02 09:05:20
3471
原创 存储过程分号处理办法
存储过程分号处理办法问题描述: mysql的命令行执行每一条命令是以分号结尾的,也就是说识别是否为一条命令,是根据分号决定的 然而存储过程中设计多条语句,很可能出现多个分号,所以直接把存储过程复制到命令号一般都会失败 问题分析: 出现这种问题的原因是在存储过程中要使用到分号但是,在mysql中分号代表的语句结束,这样...
2018-11-29 23:05:51
2531
转载 C语言——volatile的用法
转自:https://www.cnblogs.com/reality-soul/p/6140192.html.volatile的本质:1> 编译器的优化在本次线程内, 当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;以后,再取变量值时,就直接从寄存器中取值;当变量值在本线程里改变时,会同时把变量的新值copy到该寄存器中,以便保持一致。当变量在...
2018-11-26 22:37:27
198
原创 嵌入式c语言的集中新用法
搞嵌入式的,大都用C语言写代码,一直习惯用 if 、switch打天下,在定义数据结构的时候也只用到 字符型、整型、数组,位;很少用结构体,共用体,枚举,因为咱C语言学得不好,和它们不熟,总感觉它们不那么好招呼,重要的是自已觉得没必要用上它们。 随着越来越多的积累,咱写代码的风格也在不断的发生变化,从以前的喜欢将所有的函数及数据的定义写在一个文件里到逐渐的将函数按功...
2018-11-25 23:16:54
346
原创 Linux学习笔记 二 Linux下C语言开发工具
2.1常用编辑工具1.vim编辑器VIM编辑器基本山可分为三种模式分别是命令模式,插入模式和底行模式下面是VIM模式转换图。(1)在.vimrc文件中设置几个常用的底行命令设置缩进命令 :set smartindent //智能对齐 :set ruler //显示光标 :set lit //显示制表符...
2018-11-21 23:25:39
1286
转载 stm32——DMA
DMA部分我用到的相对简单,当然,可能这是新东西,我暂时还用不到它的复杂功能吧。下面用问答的形式表达我的思路。DMA的定义直接存储器存取(Direct Memory Access,DMA)是计算机科学中的一种内存访问技术。它允许某些电脑内部的硬体子系统(电脑外设),可以独立地直接读写系统存储器,而不需绕道 CPU。在同等程度的CPU负担下,DMA是一种快速的数据传送方式。它允许不同速度...
2018-11-21 22:38:19
492
原创 Java练习用Java写双人游戏简单四子棋
为了应付Java老师,借鉴了同学思想,自己动手敲了一个四子棋游戏。代码很不规范,为了赶时间。结果写的和C语言一样。源码在本文结尾处首先看看游戏规则,游戏规则 四子棋的棋盘共有6行7列,棋盘是垂直摆放,每名玩者有21只圆形棋子,以不同颜色辨别。两名玩者轮流每次把一只棋子放进棋盘任何未全满的一行中,棋子会占据一行中最底未被占据的位置。两名玩者任何一方先以四只棋子在横,竖或斜方向联成一条直线...
2018-11-21 16:08:46
3368
转载 stm32 烧录文件执行过程
ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存 ARM映像文件的组成 keil编译后产生下面的信息:Program Size: Code=37970 RO-data=7598 R...
2018-11-20 22:57:48
2161
原创 其他问题总结,容易出现,又找不到解决办法
1.之前有声音,一拔一插耳机没声音解决办法:控制面板->硬件和声音->Realtek高清音频管理器点击下图文件夹出现后点击对号,点确定。重新插上耳机。ok,看看能不能解决,反正我的解决了...
2018-11-18 09:43:18
174
转载 外部中断编写int 09h
汇编语言中的外中断和内中断差不多1、取中断类型码n2、标致寄存器入栈,IF=0,TF=02、CS、IP入栈3、(IP)=(n*4),(CS)=(n*4+2)但是外中断和内中断的中断类型码的来源不同,所以第一步肯定是不一样的,其他相同下面来讲一下键盘事件下的处理方式只要有键盘事件发生,就会触发int 9,这个int 9是硬件扫描过程,其实就是CPU对按键的IO口进行扫描的...
2018-11-12 23:33:42
1967
原创 外部中断事件
外部中断事件众所周知,CPU在计算机系统中,除了能够执行指令,进行运算外,还应该有输入输出功能。比如说,我现在在打字输入‘a’,CPU他会处理这个按键,并在你的屏幕上显示‘a’。我们想想,它能显示,是不是打印机工作了,打印机工作。是不是CPU给它指令了,那是不是我们按键,然后CPU处理并执行。 那么,CPU现在要处理键盘(也就是外设的输入),很明显要解决两个问题。我们是不...
2018-11-12 23:13:23
2569
转载 Linux学习笔记 三 linux下的链接库以及实现
1、链接库概述Linux下得库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。面对比一下两者: 静态链接库:当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了。动态库而言:某个程序在运行中要调用某个动态链接库函数的时候,操作系统首先会查看所有正在运行的程序,看在内存里是否已有此库函数的拷贝...
2018-11-06 19:02:24
155
原创 Linux学习笔记 一 指令
命令 选项(可多个) 加参数大家可以根据我给的命令功能然后在linux命令搜索大全里面搜索选项功能1.tar(创建备份和归档)tar (选项) (参数)2.grep强大的文本搜索工具(搜索字符串)命令格式 grep [选项] [查找内容] [查找范围]3.find在指定目录下查找文件命令格式 find 查找路径 [参数] [字符串对象]4.AWK...
2018-11-06 11:05:55
153
原创 一、位运算符
位运算符练习class Demc { public static void main(String[] args) { int a=3; a = a << 2;// a=a*(所移位数)^2 a对应的二进制向左移两位之后溢出的补到右边末位后得到的值。 System.out.println(a);//12 a = -6 >> 2;// a=a/...
2018-10-31 18:02:43
104
原创 调试心得
主要记录对做基于stm32F103自平衡小车调试时候的一些深刻感悟(以后会继续更新)1.写完MPU6050时,测数据数据显示一次(或者一直为零)然后就不动了。发现这个问题后,我先是调试代码发现是dmp库中的dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors, &more); 这个函数读取失败,是因...
2018-10-28 08:00:53
1992
10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人