自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只大笨猫的博客

半缘修道半缘君

  • 博客(73)
  • 资源 (4)
  • 问答 (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 205725 49

原创 今日头条2017后端工程师笔试题

1、最大映射有 n 个字符串,每个字符串都是由 A-J 的大写字符构成。现在你将每个字符映射为一个 0-9 的数字,不同字符映射为不同的数字。这样每个字符串就可以看做一个整数,唯一的要求是这些整数必须是正整数且它们的字符串不能有前导零。现在问你怎样映射字符才能使得这些字符串表示的整数之和最大?输入描述:每组测试用例仅包含一组数据,每组数据第一行为一个正整数 n , 接下来有 n 行,每...

2021-03-07 11:58:37 505

原创 foreach语法

// arraytest.cpp : 定义控制台应用程序的入口点。// #include "stdafx.h"#include <iostream>#include<vector>int _tmain(int argc, _TCHAR* argv[]){ int nums[3] = { 0, 1, 2 }; std::vector<int&g...

2021-03-07 11:57:14 401

原创 C++基于TCP/IP简单的客户端、服务器通信程序实例

本篇文章实现了一个基于TCP 的一个非常简单的客户/服务器通信程序实例。该程序中通讯协议使用的是面向连接的TCP协议SOCK_STREAM, 服务器的ip地址为本地地址即:127.0.0.1,端口号为自定义的5099(大于1024即可),服务端的功能只要有客户端连接请求,服务端就接受连接,在连接成功后向客户端发送数据,并且接受客户端发送的数据。客户端在向服务端发出请求后接受并显示服务端的数...

2021-03-07 11:55:14 1036 1

原创 远景面试题目

1、介绍一个C/C++项目2、项目中遇到的问题3、堆和栈的区别4、指针和引用的区别5、介绍一下STL容器6、介绍一下map7、说一下红黑树的特点8、说一下C/C++怎样避免死锁C++特点堆和栈死锁红黑树容器实现...

2021-03-07 11:53:41 1095

原创 Linux文件基本操作命令

Linux基本操作命令文件操作删除文件夹及文件移动文件(夹)语法参数说明:mv 参数设置与运行结果实例功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入文件操作删除文件夹及文件-r 就是向下递归,不管有多少级目录,一并删除-f

2021-03-07 11:46:19 2011 1

转载 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 14167

原创 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 1989

原创 二叉树各种遍历操作

目录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 1089

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

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

2018-09-06 18:01:44 6848

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

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

2018-09-06 10:07:34 3462

转载 最大连续子序列的和

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

2018-09-04 15:47:29 1053

原创 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 5980 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 319

转载 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 7852

原创 Java正则表达式

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

2018-08-25 15:22:01 253

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

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

2018-08-24 11:08:41 378

原创 SPI、I2C、UART、CAN

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

2018-08-23 17:34:32 45713 3

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

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

2018-08-22 15:12:03 1260

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

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

2018-08-22 11:09:49 471

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

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

2018-08-21 18:10:07 2671

原创 二叉树先序遍历

下面是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 372

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

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

2018-08-20 22:22:27 4636

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

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

2018-08-19 21:06:29 313

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

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

2018-08-17 08:18:53 842

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

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

2018-08-15 23:36:24 1089

原创 Java 多线程编程

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

2018-08-15 20:37:28 233

原创 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 8894

转载 DMA

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

2018-08-13 19:17:02 5602

转载 I2C总线传输协议

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

2018-08-13 17:37:29 611

转载 STM32之串口通信

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

2018-08-13 16:34:11 10483 1

转载 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 31955

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

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

2018-08-13 15:24:31 9855

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

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

2018-08-13 14:57:23 17977 1

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

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

2018-08-13 10:53:36 2892

转载 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 32247 2

原创 C++ stack用法

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

2018-08-06 16:16:21 32722 4

原创 网络分层模型简介

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

2018-08-03 14:42:39 9023

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

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

2018-08-02 21:17:53 2050

转载 Java中Scanner用法总结

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

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

嵌入式计算系统设计原理

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

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关注的人

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