自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lcl_032015的博客

总结也是一种成长

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

原创 基于Arduino的智能家居系统设计

基于Arduino的智能家居系统设计一、设计要求 1、利用DHT11温湿度检测模块和光敏电阻采集环境温度、湿度和光强信息;2、通过Arduino开发板对DS1302时钟模块进行初始设置,并每隔一定时间读取日期和时间信息;3、利用LCD1602显示模块显示温度、湿度、光强、日期、时间和控制模式等信息;4、根据从DS1302时钟模块读取的时间信息,每天固定时间给宠物进行自动投食、喂水若干次;5、能够在自动控制模式和语音控制模式之间进行切换;6、自动控制模式下,根据温度、湿度、光强等环境参数对灯、空

2021-12-29 14:57:43 22782 13

原创 合并两个有序数组+寻找第K个大的数+子数组最大累计问题

合并两个有序数组class Solution {public: void merge(int A[], int m, int B[], int n) { if(n==0) return ; int i=m-1; int j=n-1; int end=m+n-1; while(end>=0&&j>=0&&i>=0) { if(A[i]

2021-09-05 22:11:35 153

原创 使用C++ 多线程交替打印

//////////////////无锁实现#include <iostream>#include <thread>using namespace std;int number;const int MAXNUM = 10; // 输出范围:1 - MAXNUM// 打印奇数void add_1() { while (1) { if (number % 2 == 0) { int temp_number = numbe

2021-08-27 16:15:29 763

原创 二叉树的直径+镜像交换

#include<iostream>#include<string>using namespace std;struct TreeNode{ int val; struct TreeNode*left; struct TreeNode*right; TreeNode(int x):val(x),left(nullptr),right(nullptr){}};//二叉树的镜像TreeNode* mirrorTree(TreeNode* root) {

2021-08-20 10:28:50 110

原创 智能指针实现

智能指针实现#include <iostream>#include <memory>using namespace std; template<typename T> class SmartPointer { private: T* _ptr; int* _count; public: SmartPointer(T* ptr = nullptr) : _ptr(ptr) {

2021-08-18 09:19:22 200

原创 有序数组 去除重复元素

//有序数组 去除重复元素 1 2 2 3 3 5 ------------------》 1 5vector<int> fun(vector<int> &res) //有序数组 去除重复元素{ int count =0; int nflag=INT_MIN; vector<int> finsh; for(int i=0;i<res.size()-1;i++){ if(res[i]==res[i+1]) { count++

2021-08-15 20:56:59 159

原创 二分法求平方根+循环输入以回车结束

double sqrt1(double x){double eps=0.00001;double low=0.0;double high=x;double mid=(low+high)/2;while((high-low)>eps){if(mid*mid>x){high=mid;}else{low=mid;}mid=(high+low)/2;return mid;}

2021-07-30 10:14:16 71

原创 Android Studio 实现的画板App

基于Android Studio 实现的画板App** 1.实现目标**随着科技的不断发展和社会的不断进步,手机越来越流行,成为了人们日常生活和学习的必要工具,人们越来越离不开手机,还在几年前手机仅仅是一个打电话和发短信的工具,但在地球村的今天,手机无论除了可以满足基木的通讯作用以外,还成为了人们办公和娱乐的必不可少的工具。当然手机画板也成为了手机的一个基木的app软件,以前人们想画画必须在纸上或者自己携带的画板上,对于现在人们快节奏的生活不是非常方便。而手机画板的出现打破了这个固有的僵局,它可以满足人

2021-06-23 12:14:07 2468 3

原创 排序+二分查找

排序+二分查找1.归并排序归并排序 核心合并两个有序的数组开始 sum [] len 将大区间分割成多个小区间 当 begin>=end结束 调动递归函数将原数组拆分成一个一个的区间然后执行 merge的操作开始的数组空间为2merge(num [],begin end){分成两个区间需要申请一块临时的空间两个区间进行大小比较将比较的结果放入申请的临时的数组空间中当比较结束后 将申请的临时数组的空间里面的内容 拷贝到原数组中去(循环的放入) num[b

2021-05-11 22:23:28 455

原创 2.动态规划

2.动态规划动态规划算法的两种形式①自顶向下的备忘录法 , 递归 +备忘录②自底向上,迭代+备忘录 迭代动态规划原理1.最优子结构用动态规划求解最优化问题的第一步就是刻画最优解的结构,如果一个问题的解结构包含其子问题的最优解,就称此问题具有最优子结构性质。因此,某个问题是否适合应用动态规划算法,它是否具有最优子结构性质是一个很好的线索。使用动态规划算法时,用子问题的最优解来构造原问题的最优解。因此必须考查最优解中用到的所有子问题。2.重叠子问题子问题重叠性质。子问题重叠性质是指在用递

2021-05-02 21:35:24 86

转载 跳表

跳表跳表是面试常问的一种数据结构,它在很多中间件和语言中得到应用,我们最最熟知的就有Redis跳表(zset)。跳跃表(简称跳表)由美国计算机科学家William Pugh发明于1989年。他在论文《Skip lists: a probabilistic alternative to balanced trees》中详细介绍了跳表的数据结构和插入删除等操作。跳表(SkipList,全称跳跃表)是用于有序元素序列快速搜索查找的一个数据结构,跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表

2021-03-12 22:01:47 354

原创 14算法 .栈和队列+堆

14算法 .栈和队列1.通过队列实现栈 LeetCode 225a.两个队列实现栈 class MyStack {public: queue<int> q1, q2; MyStack() { } void push(int x) { if(q1.empty()){ q2.push(x); return; } if(q2.empty()){

2021-03-07 20:28:16 73

原创 【VS】项目属性配置

【VS】项目属性配置1.windows32 X86 windows64 X64x86平台编译出来的exe(可执行文件)或dll(动态链接库)都是32位的。以此类推,x64对应的则是64位的。2.Debug ReleaseDebug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。所以一般都是用Release来打包发布程序,另外,Release打包出来的程序

2021-03-07 11:56:29 327

转载 操作系统

操作系统一. 什么是冯诺伊曼体系二.内存管理三.进程管理四.文件管理五.输入输出管理1.冯诺伊曼体系简介现代计算机之父冯诺伊曼最先提出程序存储的思想,并成功将其运用在计算机的设计之中,该思想约定了用二进制进行计算和存储,还定义计算机基本结构为 5 个部分,分别是中央处理器(CPU)、内存、输入设备、输出设备、总线。存储器:代码跟数据在RAM跟ROM中是线性存储, 数据存储的单位是一个二进制位。最小的存储单位是字节。总线:总线是用于 CPU 和内存以及其他设备之间的通信,总线主要有三种:

2021-03-04 18:28:22 993 1

原创 O算法

O算法注意:尽可能利用条件, 暴力解实际没有很好的利用条件, 时间复杂度一般较高,做完之后, 可以思考, 如果没有这个条件, 暴力解能否解出来, 如果能, 就说明条件没用好。算法 尽量继承前面的计算结果, 得出或者退出后面的结果利用前面的结果要怎么做? 保存前面的结果–> 辅助空间 : 数组(便于查找不便于插入删除 ) 链表( 插入删除) 栈(后进先出 倒序) 队列(正序 先进先出)栈和队列, 没法遍历, 所以可以用数组vector或者链表list代替 :来实现空间换时间.数组 -->

2021-02-28 23:20:26 213

原创 正则表达式, shell脚本

正则表达式, shell脚本1.正则表达式1、什么是正则表达式?简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法。通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤、替换或者输出需要的字符串。linux正则表达式一般以行为单位处理的。2、为什么要学正则表达式在企业工作中,我们每天做的linux运维工作中,时刻都会面对大量带有字符串的文本配置、程序、命令输出及日志文件等,而我们经常会有迫切的需要从大量的字符串内容中查找符合工作需要的特定字符串,这就要靠正则表达式,因此,可以说正则

2021-02-21 21:30:59 161

原创 线程池

线程池1.什么是线程池线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。2.为什么用线程池创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率线程并发数量过多,抢占系统资源从而导致阻塞我们知道线程能共享系统资源,如果同时执行的线程过多,就有可能导致系统

2021-02-21 16:35:10 103

原创 linux 网络模型

linux 网络模型linux的五种IO模型,分别是:阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO。其中阻塞IO、非阻塞IO、多路复用IO、信号驱动IO都属于同步IO。同步IO和异步IO同步IO:应用程序主动向内核查询是否有可用数据,如果有自己负责把数据从内核copy到用户空间。异步IO:应用程序向内核发起读数据请求需要:(1)告诉内核数据存放位置(2)注册回调函数,当内核完成数据copy后调用回调通知应用程序取数据。同步IO/异步IO最大区别:同步IO数据从内核空间到用户空间的c

2021-02-21 15:34:26 315

原创 Linux线程详解

Linux线程详解并行和并发的区别并发(concurrency):在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥。(并发是指同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上有多个进程被同时执行的效果–宏观上并行,针对单核处理器)2.并行(parallelism):在单处理器中多道程序设计系统中,进程被交替执行,表现出一种并发的外部特种;在多处理器系统中,进程不仅可以交替执行,而且可以

2021-02-21 12:43:30 354

原创 Linux 进程

Linux 进程一.进程二.进程间关系三.进程间通信1.进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。2.linux 进程特性 强亲缘性 父子进程进程状态主要的进程状态:运行、就绪、挂起、终止,阻塞,僵尸。一,创建原语:fork函数族在liunx中使用函数fork创建新的进程。是fork()里面的GREATE(创建壳) GLONE(初始化拷贝)函数完成的函数特点:调用一次,返回两次。在父进程

2021-02-18 14:09:22 107

原创 Makefile gdb

Linux一.项目管理工具 Makefilemakefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

2021-02-16 22:58:50 278

原创 Redis

Redis1.Redis是一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server (远程数据服务),使用C语言编写,Redis是一个key-value存储系统(键值存储系统) 它是一种 NoSQL(not-only sql,泛指非关系型数据库)的数据库。 Redis 作为一个内存数据库:性能优秀,数据在内存中,读写速度非常快,支持并发 10W QPS。单进程单线程,是线程安全的,采用 IO 多路复用机制。丰富的数据类型,支持字符串(strings)、散

2021-02-16 13:21:43 100

原创 URL去重

URL去重问题URL 去重思路在不考虑业务场景和数据量的情况下,我们可以使用以下方案来实现 URL 的重复判断:1.使用 STL的 Set 集合,根据添加时的结果来判断 URL 是否重复(添加成功表示 URL 不重复);2.使用 Redis 中的 Set 集合,根据添加时的结果来判断 URL 是否重复;3.将 URL 都存储在数据库中,再通过 SQL 语句判断是否有重复的 URL;4.把数据库中的 URL 一列设置为唯一索引,根据添加时的结果来判断 URL 是否重复;5.使用 Guava 的布

2021-02-16 11:16:43 109

原创 音视频

直播音视频流(小解)1.基础背景知识2.视音频编码封装过程3.对比sdl等视音频播放库4.对比ffmeg5.rtmp rtsp hls简介下面是系统框架图基础知识:我们肉眼可见的流畅度为25帧每秒每一帧有很多很像素组成所以每帧图像视作一个三维矩阵—RGB分辨率:即一个平面内像素的数量。通常表示成宽*高将视频定义为在单位时间内连续的 n 帧,这可以视作一个新的维度,n 即为帧率,若单位时间为秒,则等同于 FPS (每秒帧数 Frames Per Second)。利用视觉特性:和区分颜色

2021-02-16 00:14:37 783

原创 cookie和session

HTTP协议是无状态的,这里的「状态」到底指什么?无连接:每一个访问都是无连接,服务器挨个处理访问队列里的访问,处理完一个就关闭连接,这事儿就完了,然后处理下一个新的无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。无状态:协议对于事务处理没有记忆能力【事物处理】【记忆能力】对同一个url请求没有上下文关系【上下文关系】每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影

2021-01-27 13:41:01 97

转载 HTTP协议/HTTPS协议

HTTP协议/HTTPS协议1定义和内容什么是HTTP?超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。2.从无状态引出cookie和session发展历史:多路复用:通过单一的HTTP/2连接请求发起多重的请求-响应消息,多个请求stream共享一个TCP连接,实现多留并行而不是依赖建立多个TCP连接。HTTP报

2021-01-27 13:17:20 174

转载 五类常见算法

五类常见算法小记 (递归与分治,动态规划,贪心,回溯,分支界限法)1.递归与分治法直接或间接地调用自身的算法称为递归算法。 递归是算法设计与分析中常用的一种技术,描述简单且易于理解。分治法的设计思想是将一个规模为n难以解决的问题分解为k个规模较小的子问题,这些子问题 相互独立且 与原问题相同。递归地解这些子问题,然后将各子问题的解合并得到原问题的解。典型例子:Fibonacci数列,阶乘,Hanoi(汉诺)塔; 二分法搜索、快速排序、归并排序。void hanoi(int n, char x,

2021-01-24 17:59:11 356

原创 操作系统基础常识

操作系统基础常识1、操作系统分类:批处理操作系统、分时操作系统(Unix)、实时操作系统、网络操作系统、分布式操作系统、微机操作系统(Linux、Windows、IOS等)、嵌入式操作系统。2、操作系统的4个特点:a.并发:同一段时间内多个程序执行(注意区别并行和并发,前者是同一时刻的多个事件,后者是同一时间段内的多个事件)b.共享:系统中的资源可以被内存中多个并发执行的进线程共同使用c.虚拟:通过时分复用(如分时系统)以及空分复用(如虚拟内存)技术实现把一个物理实体虚拟为多个d.异步:系统中

2021-01-23 12:57:47 91

原创 设计模式

设计模式六大原则:1、单一职责原则:书上比较官方的说法是 “就一个类而言,应该只有一个引起他变化的原因。”。其实直白点说就是一个类的功能尽量简单,避免一个类中封装过多的功能方法,在设计类的时候避免让它太过庞大。2、开闭原则:对扩展开放,对修改关闭。也就是说,当需求变更的时候,尽量不要去修改原有代码,而是去增加新的代码。3、里氏代换原则:在程序中,子类可以替换掉父类并且不会对程序的运行结果造成影响。这里一个比较典型的例子就是鸵鸟是鸟吗?在生物学中,鸵鸟是鸟的一种,但是在面向对象的世界里,鸵鸟不是鸟。因

2021-01-22 23:18:40 90

原创 STL

STL1.容器(Container)容器作为STL的最主要组成部分--容器,分为向量(vector),双端队列(deque),表(list),队列(queue),堆栈(stack),集合(set),多重集合(multiset),映射(map),多重映射(multimap)。STL map和hash_map的资料,总结笔记如下:1、STL的map底层是用红黑树实现的,查找时间复杂度是log(n);2、STL的hash_map底层是用hash表存储的,查询时间复杂度是O(1);3、什么时候用map

2021-01-22 12:45:34 143

原创 C++11

C++111. 智能指针看的是 STL里面的智能指针 , std::下面的. auto_ptr , unique_ptr , shared_ptr , weak_ptr.C++ 可以控制堆区空间, 手动申请, 手动释放. 遗忘 , 没释放 , 后果, 内存泄露. 可不可以自动释放? --> 智能指针.C++ 封装类, 就是对象, 生命周期结束时, 触发析构, 自然回收空间. 使用智能指针, 可以一定程度上方便编程 , 避免手动回收.auto_ptr , unique_ptr , shared

2021-01-22 11:42:33 123

原创 C++基础知识

C++基础知识c++ 是面向对象的编程语言(考虑扩展维复用)三大特性 : 封装 继承 多态。C++ 类和结构体的区别。主要体现在默认访问属性上。类默认访问属性为private结构体默认访问属性为public2. 类 – 定义: 具有相同行为(函数 )和属性(成员变量 )的个体(对象)的抽象。类系统生成的默认无参构造是公有的.2.1 类的成员的访问属性。public protected private 默认 --> private 外部不可见 只能在本类内可见2.2.1 构造函数 函数

2021-01-22 10:48:43 217

原创 1.nginx简介

1.nginx的简介Nginx (是一个高性能的HTTP和反向代理web服务器 性能稳定,功能丰富,示例配置文件和低系统资源的消耗而闻名,Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强等。我们从以下4点了解NGINX(1) 什么是 NGINX和可以做什么事情(2) 正向代理(3) 反向代理(4)负载均衡(5) 动静分离1、什么是 nginxNginx 可以作为静态页面的 we

2021-01-18 16:14:47 84

转载 2.nginx的配置实例(2)

2,.nginx的配置实例(2)Nginx 配置实例-动静分离1、什么是动静分离通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天

2021-01-18 13:34:31 97

转载 2.nginx的安装和配置实例

2.nginx的安装和配置实例(1)Nginx 的安装1、准备工作(1)打开虚拟机,使用远程连接工具连接 linux 操作系统(2)到 nginx 官网下载软件http://nginx.org/2、开始进行 nginx 安装(1)安装 pcre 依赖第一步 联网下载 pcre 压缩文件依赖wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz第二步 解压压缩文件使用命令 tar –xvf

2021-01-18 13:05:20 74

原创 如何将自己写的代码上传到github上

如何将自己写的代码上传到github上经过尝试了各种方法最后终于成功了。下面小编将分享一下自己的实践1.首先注册github账号,登录https://github.com/创建新仓库 ,点击+,点击new repository得到如下页面,填写仓库名,自己随便写一个名字,下面的描述可写可不写,点击Initialize this repository with a README,然后创建:因为我已经创建过这个仓库了,所以显示不让重复创建。2.下载安装git工具这里给出下载地址,下载后

2021-01-17 21:15:07 620

原创 C语言基础知识要点2

C语言基础知识要点21.地址和指针地址是由八个十六进制的数组成的 0x00000001 -0xffffffff地址不额外占用空间地址 取地址 取到的是首字节的地址间接引用 +地址指针 :指针的本质 储存地址的变量如何去定义一个指针 要指向的变量类型++变量名如何判断一个变量的类型 去掉变量名剩下的就是类型如何判断一个指针指向的类型 去掉变量名 再去掉一个 剩下的额就是指向的类型对指针进行比较运算 (+ - )指针偏移 指针的间接引用 偏移 取决于指向的类型

2021-01-17 12:04:01 189

原创 C语言基础知识要点1

C语言基础知识要点1. 数据类型数据类型 ------------ 字节数 ------------ 范围char --------------------- 1 -------------------128 到 127 256short----------------------2 ------------------ -32768到32767 65536int ------------------------4 -2的31次方到2的31次方-1 43亿long ------------

2021-01-17 11:37:42 270

原创 基于Arduino的显示测量环境数据设计

基于Arduino的显示测量环境数据设计一,设计要求Arduino+LCD1602+超声波+温度传感器+光敏电阻+BMP180气压传感器,利用Arduino实现环境数据采集及LCD显示功能。通过超声波、温度传感器、光敏电阻以及气压传感器测量环境数据并通过编程在LCD模块中显示。二、系统设计Arduino模块Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo

2021-01-17 10:11:09 2860 3

空空如也

空空如也

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

TA关注的人

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