自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (4)
  • 收藏
  • 关注

原创 初学Python笔记

参考:廖雪峰Python教程1、Python简介Python是解释型语言,是用来编写应用程序的高级编程语言。Python提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容。除了内置的库外,Python还有大量的第三方库,因此开发中许多功能不必从零编写,直接使用现成的即可。但它也有一些缺点,如:第一个缺点是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,代码是在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C语言是编译型语言

2020-06-25 23:32:36 358 1

原创 出栈顺序

概念:举例:求出abc的所有出栈结果。这个问题描述有歧义,应该是分段入栈的顺序,也就是说,可能先入栈a,取出a,入栈b,取出b……因此,所有出栈结果为:abc,acd,bac,bca,cba. 不可能为cab,因为c出栈的前提是ab都已经入栈。例题:...

2020-06-07 17:56:17 1525

原创 回溯算法

概念 回溯法(back tracking)(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。实例一:八皇后问题#include <iostream>#include <vector>using namespace std;int res=0;//判断是否满足皇...

2020-06-07 13:29:53 274

原创 三个线程循环打印abc

方法一:使用一个条件变量进行同步使用C++11的标准方法一:线程语法,用一个全局变量state控制条件变量的wait()阻塞等待时机,用notify_all()唤醒条件变量。具体的代码如下,3个线程分别打印ABC,循环10次:#include <iostream>#include <thread>#include <mutex>#includ...

2019-08-31 13:18:25 774

原创 c++笔试-摘自牛客

1、宏定义是纯文本替换,注意写法,以及其带来的副作用https://www.nowcoder.com/ta/review-c/review?query=&asc=true&order=&page=122、说一说c++中四种cast转换https://www.nowcoder.com/ta/review-c/review?query=&asc=true&a...

2019-08-29 15:55:39 128

原创 汇顶笔试题

题目:Base64加密转换原理与代码实现#include <iostream>#include <vector>#include <string>using namespace std;int main() { vector<char> mp{ 'A','B','C','D','E','F','G','H','I','J','K...

2019-08-26 20:41:53 712

原创 strcpy库函数引发的系列问题

一、strcpy实现char* myStrcpy(char* dst, const char* src){ //assert(dst!=NULL); //assert(src!=NULL); if(NULL==dst || NULL==src) //return NULL; throw "Invalid argument(s)"; ...

2019-08-26 16:51:58 1153

原创 重建二叉树

#include <iostream>#include <vector>#include <queue>using namespace std;struct TreeNode { int val; TreeNode* left; TreeNode* right;};TreeNode* ConstructCore(vector<int...

2019-08-12 17:20:51 87

转载 oracle数据库安装和配置

https://wenku.baidu.com/view/5832b17f4afe04a1b171de17.html一、Oracle下载安装配置(1)官网下载、安装(2)Oracle DBCA 配置工具安装好Oracle 11gR2 软件后,以管理员身份打开命令提示符(运行中输入CMD打开或是在 附件中点击打开)输入dbca,回车,出现DBCA欢迎界面。输入数据库名...

2019-07-01 22:20:18 168

转载 const的作用

https://www.runoob.com/w3cnote/c-constant-pointer.html作用修饰变量,说明该变量不可以被改变; 修饰指针,分为指向常量的指针和指针常量; 常量引用,经常用于形参类型,即避免了拷贝,又避免了函数对值的修改; 修饰成员函数,说明该成员函数内不能修改成员变量常量指针定义:又叫常指针,可以理解为常量的指针,也即这个是指针,但指向的是...

2019-07-01 17:44:06 99

转载 散列表

一、散列表的由来? 1.散列表来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性。 2.需要存储在散列表中的数据我们称为键,将键转化为数组下标的方法称为散列函数,散列函数的计算结果称为散列值。 3.将数据存储在散列值对应的数组下标位置。 二、如何设计散列函数? 总结3点设计散列函数的基本要求: 1...

2019-06-08 10:04:06 108

转载 MySQL基础概念

一、什么是SQL?SQL 是结构化查询语言 Structured Query Language 的缩写,用来访问和操作数据库系统。SQL 语句既可以查询数据库中的数据,也可以添加、更新和删除数据库中的数据,还可以对数据库进行管理和维护操作。不同的数据库,都支持 SQL,这样,我们通过学习 SQL 这一种语言,就可以操作各种不同的数据库。SQL定义了这么几种操作数据库的能力:DD...

2019-06-05 21:17:35 1403 1

转载 排序算法(上)

如何分析一个“排序算法”?1、排序算法的执行效率最好情况、最坏情况、平均情况时间复杂度 为什么要区分这三种时间复杂度呢?第一,有些排序算法会区分,为了好对比,所以我们最好都做一下区分。第二,对于要排序的数据,有的接近有序,有的完全无序。有序度不同的数据,对于排序的执行时间肯定是有影响的,我们要知道排序算法在不同数据下的性能表现。 时间复杂度的系数、常数 、低阶 实际的软件开发...

2019-05-31 17:28:45 103

转载 队列

队列跟栈一样,也是一种操作受限的线性表数据结构。它具有先进先出的特性,最基本的操作也是两个:入队 enqueue(),在队尾插入元素;出队 dequeue(),在队头删除元素。顺序队列和链式队列1、手写基于数组的实现方法:数组中的数据不连续问题如何解决。// 用数组实现的队列public class ArrayQueue { // 数组:items,数组大小:n pr...

2019-05-29 21:46:40 164

转载

从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在在一端插入和删除数据,只支持入栈和出栈操作。后进先出是它最大的特点。何时使用栈?相比数组和链表,栈带给我的只有限制,并没有任何优势。那我直接使用数组或者链表不就好了吗?为什么还要用这个“操作受限”的“栈”呢?事实上,从功能上来说,数组或链表确实可以替代栈,但你要知道,特定的数据结构是对特定场景的抽象,而且,数组或链表暴露了太多...

2019-05-28 11:31:16 113

转载 链表

链表(Linked List)链表通过指针将一组零散的内存块串联在一起。其中,我们把内存块称为链表的“结点”。为了将所有的结点串起来,每个链表的结点除了存储数据之外,还需要记录链上的下一个结点的地址。我们把这个记录下个结点地址的指针叫作后继指针 next。单链表与数组一样,链表也支持数据的查找、插入和删除操作:我们知道,在进行数组的插入、删除操作时,为了保持内存数据的连续...

2019-05-27 21:42:12 114

转载 数组概念

数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 线性表(Linear List)顾名思义,线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。而与它相对立的概念是非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。...

2019-05-11 16:22:55 114

转载 vivo面经

1、C/C++里面函数指针和指针函数的区别?函数指针:一种特殊的指针,它指向函数的入口地址;int (*p)(int,int);指针函数:返回指针的函数,一个函数,它的返回值是指针;int *p(int,int);2、指针和引用的区别?指针从本质上讲是一个变量,指针在逻辑上是独立的,它可以被改变的,包括指针变量的值(所指向的地址)和指针变量的值对应的内存中的数据(所指向地址中所存放...

2019-04-25 22:42:24 688 1

原创 LRU

一、LRU什么是LRU算法? LRU是Least Recently Used的缩写,即最近最少使用,常用于页面置换算法,是为虚拟页式存储管理服务的。内存管理的一种页面置换算法(缓存淘汰算法),对于在内存中但又不用的数据块(内存块)叫做LRU,操作系统会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。关于操作系统的内存管理,如何节省利用容量不大的内存为最多的进程提供资源,...

2019-04-15 16:25:23 244

转载 C++类与类之间的关系

类之间的关系在大体上分为两种,一种是纵向的,另一种是横向的。一、纵向的就是继承,它是OO的三个特征之一在UML中称作:泛化(Generalization)表示为:实线+空心三角形 实现(Realization)表示为: 虚线+空心三角形泛化关系:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。表示类与类之间的继承关系,接口与接...

2019-03-07 19:11:34 1993

原创 排序算法

一、选择排序非稳定排序、原地排序、时间复杂度O(n^2)、空间复杂度O(1)void SelectSort(int* arr, int length){ if(arr==nullptr || length&lt;2) return; for(int i=0; i&lt;length-1; ++i){ int min=i; ...

2019-02-26 20:42:29 87

转载 简单工厂模式

简单工厂模式  1.1. 模式动机考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等), 这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个...

2019-02-23 15:18:27 62

转载 Singleton模式

一、原文:单例模式三种模式,饿汉、饱汉、双重锁模式,实例及优劣详解单例模式是一种很基础的设计模式,在面试时可能会被要求手写不同类型的单例模式代码,主要有三种模式:1、饿汉模式://饿汉模式,很饿很着急,所以类加载时即创建实例对象public class Singleton1 {        private static Singleton1 singleton = new S...

2019-02-16 01:04:10 74

转载 git命令

首先,选择一个合适的地方,创建一个空目录,然后通过git init命令把这个目录变成Git可以管理的仓库:$ mkdir learngit$ cd learngit$ git initInitialized empty Git repository in /Users/michael/learngit/.git/第一步,用命令git add告诉Git,把文件添加到仓库:$ g...

2019-01-22 18:03:16 73

转载 【web必知必会】—— 图解HTTP(下)

转自【web必知必会】—— 图解HTTP(下)上一篇《图解HTTP 上》总结了HTTP的报文格式,发送方式,以及HTTP的一些使用。本文再总结以下内容:  1 http状态码  2 http报文首部中的各字段  3 http中的身份验证  通过上篇粗略的描述,大体了解了http首部的概念。  其实请求报文与响应报文长得差不多,区别就在于请求报文与响应报文有一个各自的...

2019-01-21 12:06:24 78

转载 【web必知必会】——图解HTTP(上)

转自【web必知必会】——图解HTTP(上)  本篇总结关于http的相关知识,主要内容参考如下导图:  主要讲解的内容有:  1 URL与URI的区别。  2 请求报文与相应报文的内容。  3 GET与POST的区别。  4 http的cookie、持久化、管道化、多部分对象集合、范围请求等  后续会更新http其他的相关知识。  关键词概念  平时会经常...

2019-01-21 11:52:56 107

原创 Tinyhttpd源码分析与总结

一、概念httpd是Apache(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。cgi模式(web server和CGI的交互模式):httpd接收到一个动态请求就fork一个cgi进程,cgi进程返回结果给httpd进程后自我销毁。简单说明CGI和动态请求是什么二、Tinyhttpd源码分析1、转自【源码剖析】tinyhttpd...

2019-01-20 22:46:44 1025 2

转载 网络编程中的 SIGPIPE 信号

在网络编程中经常会遇到SIGPIPE信号,默认情况下这个信号会终止整个进程,当然你并不想让进程被SIGPIPE信号杀死。我们不禁会这样思考:在什么场景下会产生SIGPIPE信号? 要怎样处理SIGPIPE信号?1、在什么场景下会产生SIGPIPE信号?  SIGPIPE产生的原因是这样的:如果一个 socket 在接收到了 RST packet 之后,程序仍然向这个 socket 写入...

2019-01-13 17:06:01 850

转载 redis-server网络通信模块---钩子函数

回调函数与钩子函数1、什么是回调函数?     简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。2、什么是钩子(hook)函数?     钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即...

2019-01-10 22:24:06 921

原创 关于socket的各种错误码

1、INVALID_SOCKET : 表示该 socket fd 无效。如 accept(2) 或 socket(2) 等在创建socketfd时:int m_socket = socket(AF_INET, SOCK_STREAM, 0);if (m_socket == INVALID_SOCKET){ printf("socket failed, err_code=%d\n", _G...

2018-12-20 21:34:55 23824 2

原创 日志 - 客户端及服务端写法

一、客户端先来看一个日志类的实现方法,这个日志类也是代表着大多数客户端日志的主流写法:log.h: 1 #ifndef __LOG_H__ 2 #define __LOG_H__ 3 4 #include &lt;stdio.h&gt; 5 6 //#ifdef _ZYL_LOG_ 7 #define LogInfo(...) Log::GetI...

2018-12-13 20:34:41 1366

转载 socket可读可写就绪条件

转载自:https://www.cnblogs.com/web21/p/6611284.html参考 《UNIX 网络编程卷1》中的《第6章 I/O复用》一、 满足下列四个条件中的任何一个时,一个套接字准备好读。该套接字接收缓冲区中的数据字节数大于等于套接字接收缓存区低水位。对于TCP和UDP套接字而言,缓冲区低水位的值默认为1。那就意味着,默认情况下,只要缓冲区中有数据,那就是可读的...

2018-12-09 14:38:18 252

原创 (测试)使用引用计数管理对象生命期

单线程下测试: 1 #include &lt;iostream&gt; 2 3 class RefObject{ 4 public: 5 RefObject() : count(1){ 6 std::cout&lt;&lt;"Base created."&lt;&lt;std::endl; 7 } 8 virtual ~...

2018-12-08 18:13:37 135

转载 TeamTalk源码分析(1)

一、TeamTalk服务器端以下部署程序:db_proxy_server、file_server、http_msg_server、login_server、msfs、msg_server、push_server、router_server各个服务程序的作用描述如下:LoginServer (C++): 负载均衡服务器,分配一个负载小的MsgServer给客户端使用 MsgServ...

2018-12-08 12:37:11 474

转载 Teamtalk db_proxy_server 心跳包机制

1、程序初始化的时候: init_proxy_conn(thread_num); 在其中注册一个定时器函数:netlib_register_timer(proxy_timer_callback, NULL, 1000);2、然后在消息泵里面检测定时器:_CheckTimer();  在其中遍历 m_timer_list 找出到达定时时间的定时器:curr_tick &gt;= pItem-&g...

2018-12-05 11:05:47 182

转载 TeamTalk源码分析(2)

一、接收后解包 将这个流程抽象出来,这个流程也是现在所有网络通信库都要做的工作: 1 while(退出条件) 2 { 3 //1. 检测非侦听socket可读 4 //2. 处理可读事件 5 //3. 检测可读取的字节数,出错就关闭,不出错,将收取的字节放入连接的读缓冲区 6 //循环做以下处理 7 //4. 检测可读缓冲...

2018-12-04 22:18:22 222

转载 1  防止虚假唤醒

使用条件变量pthread_cond_wait()函数的时候一定要先获得与该条件变量相关的mutex。且条件变量为了防止虚假唤醒,一定要在一个循环while()而非if()里面调用pthread_cond_wait()函数:wait端:Waiting until x is greater than y is performed as follows: pthr...

2018-11-17 19:53:39 1008

转载 C++的RTTI机制

1 RTTI概念转自C++对象模型之RTTI的实现原理RTTI(Run Time Type Identification)即通过运行时类型识别,程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型。1.1 RTTI机制的产生为什么会出现RTTI这一机制,这和C++语言本身有关系。和很多其他语言一样,C++是一种静态类型语言。其数据类型是在编译期就确定的,不能在运...

2018-11-11 13:17:32 533

原创 moduo网络库的reactor模式(下):实现非阻塞TCP网络

1、在reactor框架下加入tcpUnix下的tcp连接也是经由socket文件描述符(sockfd)实现的。此节只是封装了listening sockefd进行监听(accept(2)),得到的新连接(普通sockfd)直接提供给用户让用户自行处理。下一节才进一步地将得到的新连接也封装起来。1.1、首先将unix下的socket调用api简易封装成Socket类,得到wapper。即将...

2018-11-10 12:21:04 750

原创 使用googletest编写测试单元

一、下载并编译googletest1、下载:https://github.com/google/googletest2、编译方式:https://github.com/google/googletest/tree/master/googletest(1)我使用的是ubuntu18.04,解压下载文件到"当前路径"。(2)在当前路径执行g++ -isystem ./includ...

2018-11-09 09:50:29 634

虚拟串口调试软件

虚拟串口软件可在电脑上建立多个虚拟串口,可利用串口调试软件与上位机对接方便调试。

2015-08-04

串口调试工具40个

多达40个串口调试工具软件,包括各种通信方式的调试助手和各种需要细节(短信,数据校验,文件检测,多串口等等)调试助手软件。

2015-08-04

SerialChat串口数据调试软件

好用的串口数据调试软件,可同时将多个数据绘制成曲线,易于调试需要直观判断的数据

2015-03-26

AD转换常用的10种数字滤波方法

AD转换常用的10种数字滤波方法,并附有c语言实现功能,各有优缺点均有说明。

2015-03-26

空空如也

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

TA关注的人

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