自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只大笨猫的博客

半缘修道半缘君

  • 博客(68)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 C++中STL用法超详细总结

目录1 什么是STL?2 STL内容介绍2.1 容器2.2 STL迭代器2.3 算法2.4 仿函数2.4.1 概述2.4.2 仿函数(functor)在编程语言中的应用 2.4.3 仿函数在STL中的定义2.5 容器适配器2.5.1 stack2.5.2 queue & priority_queue3 常用容器用法介绍 3.1 vec...

2018-08-21 22:06:54 52771 13

转载 ECL、LVDS和CML电平

芯片间互连通常有三种接口:PECL(Positive Emitter-Coupled Logic)、LVDS(Low-Voltage Differential Signals)、CML(Current Mode Logic)。各接口电平规范ECL、PECL、LVPECL使用注意:不同电平不能直接驱动。中间可用交流耦合、电阻网络或专用芯片进行转换。以上三种均为射随输出结构,必须有电阻...

2019-07-23 17:23:39 3503

原创 Maximum Subarray(最大子序列和)

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。1.思路:初始化dp[0] = nums[0],dp[i] = max{dp[i] + nums[i] , nums[i]}, max(dp[i]...

2018-09-13 15:02:39 1473

原创 二叉树各种遍历操作

目录1 求二叉树深度1.1 递归实现1.2 非递归实现(队列)1.3 非递归实现(栈)2 求二叉树高度 3 二叉树先序遍历3.1 递归版本3.2 非递归版本3.3 利用先序创建二叉树 4 二叉树中序遍历4.1 递归版本4.2 非递归版本5 二叉树后序遍历5.1 递归版本5.2 非递归版本6 二叉树层序遍历7 二叉树深度优先遍历...

2018-09-07 10:08:45 539

转载 硬币拼凑指定面额的动态规划算法

 拼凑钱币题目来源:美团点评2017秋招笔试题题目描述:给你六种面额1、5、10、20、50、100元的纸币,假设每种币值的数量都足够多,编写程序求组成N员(N为0-10000的非负整数)的不同组合的个数。输入描述:输入为一个数字N,即需要拼凑的面额输出描述:输出也是一个数字,为组成N的组合个数。示例1输入5输出2解题思路:这个题的思路是动态规划的算法思路...

2018-09-06 18:01:44 4175

原创 线程和进程的各自特点和区别

进程进程是具有一定功能的程序在一个数据集合上的运行过程,它是系统进行资源分配和调度管理的一个可并发执行的基本单位。是执行中一段程序,即一旦程序被载入到内存中并准备执行,它就是一个进程。进程的基本特性       a、动态性:进程的实质是程序的一次执行过程,它由系统创建而产生,能够被调度而执行,因申请的共享资源被其他进程占用而暂停,完成任务后被撤销。动态性是进程最重要的特性。  ...

2018-09-06 10:07:34 1873

转载 最大连续子序列的和

最大连续子序列和最大连续子序列和是一个常见的面试题,也是算法中经典的一个问题。作为总结,今天就从最简单的暴力求解,写道目前能达到最好的线性时间复杂度的算法。问题描述:找出一个整型数组中的最大连续子序列的和 测试用例:int[] a = { 1, -3, 7, 8, -4, 12, -10, 6 }; 输出:23//即最大连续子序列和是 7 + 8 - 4+ 12 = 231、O...

2018-09-04 15:47:29 130

原创 C++string类常用方法

#include<iostream>#include<string>using namespace std;int main(){ string str1 = "hello"; string* str2 = new string("hello"); string str3 = "world"; //获取字符串长度 int length = str1....

2018-09-01 16:17:15 3519 1

转载 C++中ststatic_cast、dynamic_cast、reinterpret_cast、const_cast强制类型转换

c语言中我们经常使用类似于 int a =(int)3.14等这种强制类型转换标准c++的类型转换符:static_cast 、dynamic_cast、 reindivter_cast、 const_cast, 以下分别介绍他们的用法以及举例说明以下代码编译运行环境:codeblock with gcc in win7(x64)【1】static_cast 用法:static_ca...

2018-08-29 11:24:04 97

转载 c++ pair 用法详解

C++pair类型标准库类型--pair类型定义在utility头文件中定义1、pair的创建和初始化pair包含两个数值,与容器一样,pair也是一种模板类型。但是又与之前介绍的容器不同,在创建pair对象时,必须提供两个类型名,两个对应的类型名的类型不必相同pair<string,string>anon;pair<string,int>word_...

2018-08-25 21:51:28 2445

原创 Java正则表达式

Java 正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式实例一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 "Hello World" 字符串。.(点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1"。下表列出了一...

2018-08-25 15:22:01 114

原创 查找连续最长子串,该子串中任何两个字符不能相同,返回子串长度

对于找子字符串问题,有一个通用的方法,尽管有时候可能复杂度比较高,在想不出更好的算法时不失为一种可行的方法。那就是遍历所有的子串。遍历子串的方法,就要用到字符串后缀子串和前缀子串,下面我先简单介绍一下字符串的后缀前缀子串数组。以字符串abcde为例,后缀子串有5种,5为字符串长度后缀子串 长度 e 1 de 2 cde 3 bcde 4 a...

2018-08-24 11:08:41 188

原创 SPI、I2C、UART、CAN

一、简介1. SPISPI(Serial Peripheral Interface,串行外设接口)是Motorola公司提出的一种同步串行数据传输标准,在很多器件中被广泛应用。接口 SPI接口经常被称为4线串行总线,以主/从方式工作,数据传输过程由主机初始化。如图1所示,其使用的4条信号线分别为: 1) SCLK:串行时钟,用来同步数据传输,由主机输出; 2) MOSI:主机输...

2018-08-23 17:34:32 15518

转载 linux线程间同步(通信)的几种方法——互斥锁、条件变量、信号量、读写锁

Linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量、信号量和读写锁。 下面是思维导图: 一、互斥锁(mutex)   锁机制是同一时刻只允许一个线程执行一个关键部分的代码。1 . 初始化锁int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutex_attr_t *mutexattr);其...

2018-08-22 15:12:03 679

转载 进程间的五种通信方式

进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。以Linux中的C语言编程为例。一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。...

2018-08-22 11:09:49 181

转载 DMA导致的CACHE一致性问题解决方案

先简单说一下DMA的CACHE一致性是个啥问题。复制: CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为“命中(hit)”,此时CPU直接从Cache中调用该内容;否则,就 称为“ 不命中”,CPU只好去内存中调用所需的子程序或指令了。CPU不但可以直接从Cache中读出内容,也可以直接往其中写入内容。由于Cache的存取速 率相当快,使得CPU的利用率大大...

2018-08-21 18:10:07 1419

原创 二叉树先序遍历

下面是leetcode上的一道题,先序遍历二叉树。Given a binary tree, return the preorder traversal of its nodes' values.For example:Given binary tree{1,#,2,3}, 1 \ 2 / 3 return[1,2,3].Note: ...

2018-08-21 10:48:12 154

原创 二叉树遍历——深度优先(DFS)与广度优先(BFS)

二叉树的深度优先遍历(DFS)与广度优先遍历(BFS)深度优先遍历:从根节点出发,沿着左子树方向进行纵向遍历,直到找到叶子节点为止。然后回溯到前一个节点,进行右子树节点的遍历,直到遍历完所有可达节点为止。广度优先遍历:从根节点出发,在横向遍历二叉树层段节点的基础上纵向遍历二叉树的层次。DFS实现:数据结构:栈父节点入栈,父节点出栈,先右子节点入栈,后左子节点入栈。递归遍历全部节...

2018-08-20 22:22:27 2692

转载 C++之friend友元类和友元函数

将数据和处理数据的函数封装在一起,构成类,实现了数据的隐藏,无疑是面向对象程序设计的一大优点。但是有时候封装不是绝对的。友元函数提供了不同类或对象的成员函数之间、类的成员函数和一般函数之间进行数据共享的机制。通俗的说,友元关系就是一个类主动声明哪些类或函数是它的朋友,进而给它们提供对本类的访问特性。也就是说,通过友元关系,一个普通函数或者类的成员函数可以访问封装于另外一个类中的数据。从一定...

2018-08-19 21:06:29 101

原创 常用排序算法详细总结

排序算法总结常用排序算法(一)  插入排序、希尔排序、冒泡排序常用排序算法(二)  选择排序、快速排序常用排序算法(三)  归并排序、堆排序、基数排序 ...

2018-08-17 08:18:53 723

原创 常用排序算法(三)归并排序、堆排序、基数排序

常用排序算法(一)插入排序、希尔排序、冒泡排序常用排序算法(二)选择排序、快速排序归并排序1. 基本思想:归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。首先考虑下如何将2个有序数列合并。这个非常简单,只要从比较2个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即...

2018-08-15 23:36:24 727

原创 Java 多线程编程

Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。这里定义和线程相关的另一个术语 - 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守护线程都结束...

2018-08-15 20:37:28 90

原创 C/C++面经总结

1.用#define声明一个常数,表明1年中有多少秒(忽略闰年问题)?答案:#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL要点:A.没有以分号结束;B.懂得预处理器将为你计算常数表达式的值。即60 * 60 * 24 * 365而不是31536000.C.考虑到了16位机将会溢出,巧妙运用了UL。 2.写一个“标准”宏MI...

2018-08-15 19:38:56 3911

转载 DMA

DMA(Direct Memory Access,直接内存存取)DMA 传输将数据从一个地址空间复制到另外一个地址空间。当CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA 传输对于高效能 嵌入式系统算法和网络是很重要的。DMA...

2018-08-13 19:17:02 3773

转载 I2C总线传输协议

简介I2C(Inter-integrated Circuit)总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它只需要两根信号线来完成信息交换。I2C最早是飞利浦在1982年开发设计并用于自己的芯片上,一开始只允许100kHz、7-bit标准地址。1992年,I2C的第一个公共规范发行,增加了400kHz的快速模式以及10-bit扩展地址。在I2C的基础上,1995年Inte...

2018-08-13 17:37:29 180

转载 STM32之串口通信

串口通信原理  串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根...

2018-08-13 16:34:11 1108

转载 SPI接口——基于STM32

SPI接口——基于STM32一、SPI协议【SerialPeripheral Interface】        串行外围设备接口,是一种高速全双工的通信总线。在ADC/LCD等与MCU间通信。1、SPI信号线        SPI 包含 4 条总线,SPI 总线包含 4 条总线,分别为SS 、SCK、MOSI、MISO。(1)SS(SlaveSelect):片选信号线,当有多...

2018-08-13 15:49:52 21480

转载 C/C++程序编译的四个过程

g++是Linux下C++的编译器;我为什么会选择Linux下的g++编译器,就是因为g++可以看到程序从编译到运行的过程做了些什么。而VS等集成开发环境看不到这些,并不是说VS工具不好,(VS还是相当好用的...)。对于学习来说,需要知道程序从编译到运行进行了哪些工作,做了哪些事情,首推g++编译器(这个看个人习惯)。一、常见文件后缀       .c为后缀的文件:c语言源代码文件 ...

2018-08-13 15:24:31 5569

原创 C/C++内存分配管理

内存分配及管理1.内存分配方式在C++中内存分为5个区,分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。堆:堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用free释放已分配的对应内存。栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于...

2018-08-13 14:57:23 8764

原创 常用排序算法(二)选择排序、快速排序

常用排序算法(一)插入排序、希尔排序、冒泡排序常用排序算法(三)归并排序、堆排序、基数排序1 选择排序       选择排序也是一种简单直观的排序算法。它的工作原理很容易理解:初始时在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列;然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。算法平均时间复杂度O(n2)。...

2018-08-13 10:53:36 1730

转载 C++实现内存池

1. 内存池设计1.1 目的在给定的内存buffer上建立内存管理机制,根据用户需求从该buffer上分配内存或者将已经分配的内存释放回buffer中。1.2 要求尽量减少内存碎片,平均效率高于C语言的malloc和free。1.3 设计思路将buffer分为四部分,第1部分是mem_pool结构体;第2部分是内存映射表;第3部分是内存chunk结构体缓冲区;第4部分是实际...

2018-08-09 10:02:54 17407 1

原创 C++ stack用法

C++库以提供“模板”为主。所谓模板,是指不必预先制定类型的函数或类。我们可以借助STL(标准模板库 Standard Template Library, STL)提供的高效算法来管理数据。为应对多种需求,STL为用户提供了多种名为容器(Container)的类,用于管理数据集合。在创建动态数组、表、栈、队列等数据结构时,我们只需要定义对应的容器,然后调用相应成员函数或算法即可。stack...

2018-08-06 16:16:21 16684

原创 网络分层模型简介

1. OSI(Open System Interconnect )参考模型自上而下:应用层,表示层,会话层,传输层,网络层,链路层,物理层 物理层:最底层或第一层,该层包括物理联网媒介,双绞线、同轴电缆、光纤等。物理层的协议产生并检测电压以便发送和接收携带数据的信号,一般是0 1信号。传输这种信息就要用到物理媒体,双绞线、同轴电缆、光纤等,但具体的物理媒体不在OSI的7层模型内,...

2018-08-03 14:42:39 1717

原创 CPU的大小端模式以及判断方法

不同体系结构的CPU,数据在内存中存放的排列顺序是不一样的。存储器中对数据的存储是以字节(Byte)为基本单位的,因此,字(Word)和半字(Half-Word)在存储器中就有两种次序,分别称为:大端模式(Big Endian)和小端模式(Little Endian)。大端存储模式是指字或半字的最高...

2018-08-02 21:17:53 779

转载 Java中Scanner用法总结

最近在做OJ类问题的时候,经常由于Scanner的使用造成一些细节问题导致程序不通过(最惨的就是网易笔试,由于sc死循环了也没发现,导致AC代码也不能通过。。。),因此对Scanner进行了一些总结整理。Scanner类简介Java 5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实...

2018-08-02 11:32:53 405 1

原创 常用排序算法(一)插入排序、希尔排序、冒泡排序

1. 插入排序算法最简单的排序算法之一是插入排序(insertion sort)。插入排序由N-1趟(pass)排序组成。对于P=1趟到P=N-1趟,插入排序保证从位置0到位置P上的元素为已排序状态。插入排序利用了这样的事实:位置0到位置P-1上的元素是已排过序的。下图显示一个简单的数组在每一趟插入排序后的情况。 C语言给出算法参考程序如下,显然,插入排序算法复杂度为O(N2)O...

2018-08-01 21:14:13 701

原创 笔试总结--链表操作

1.输入一个链表,输出该链表中倒数第k个结点。//链表节点类public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}最简单粗暴一点的方法:先遍历一次,得到链表长度l,再遍历一次,遍历到l-k+1处的节点即为所...

2018-08-01 10:08:16 148

原创 Linux进程的基本操作:fork vfork exec

进程创建进入进程的运行状态时,需要首先创建一个新的进程。在Linux系统中,提供了几个关于创建新进程的操作函数,如fork()函数、vfork()函数和exec()函数族等。1.fork()函数fork()函数的功能是创建一个新的进程,新进程为当前进程的子进程,那么当前的进程就被称为父进程。在一个函数中,可以通过fork()函数的返回值判断进程是在子进程中还是父进程中。fork()函数...

2018-07-30 19:02:14 291

原创 递归算法--斐波那契数列

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39 很容易我们想到使用递归求解:public class Solution { public int Fibonacci(int n) { if(n == 0) return 0; if(n == 1) ...

2018-07-27 15:35:09 29717 5

转载 卡特兰数

问题引出若一序列进栈顺序为e1,e2,e3,e4,e5,问存在多少种可能的出栈序列()问题分析 卡特兰数卡特兰数是一种经典的组合数,经常出现在各种计算中,其前几项为 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, ...

2018-07-27 15:17:15 95

嵌入式计算系统设计原理

本书从组件技术的视角出发,介绍了嵌入式系统设计技术和技巧。

2018-09-29

Effective C++中文版

C++程序员必读书目,改善程序与设计的55个具体做法,本书一共组织55个准则,每一条准则描述一个编写出更好的C++的方式。

2018-09-29

智能控制.pdf

本书含目录,第1章 绪论,第2章 专家控制,第3章 模糊控制的理论基础,第4章 模糊控制,第5章 自适应模糊控制,第6章 神经网络的理论基础,第7章 典型神经网络,第8章 高级神经网络,第9章 神经网络控制,第10章 遗传算法及其应用。

2018-09-29

空空如也

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

TA关注的人 TA的粉丝

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