自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Tobiubiu

寻思渐进

  • 博客(99)
  • 资源 (9)
  • 问答 (2)
  • 收藏
  • 关注

原创 python知识图谱(零基础)

目录0.python解释器1.数据类型2.变量和运算符3.流程控制4.文件5.输入输出6.异常7.函数和模块8.面向对象编程9.多线程10.标准库11.第三方库0.python解释器python版本python2.xpython3.xpython书写格式单行代码前面不要出现空格 #后面的内容是注释 多行结构要使用缩进,一般为4个空格执行方式脚本文件执行 写入.py为扩展名文本...

2021-10-12 23:16:48 2323

原创 小行星碰撞(c++ 栈的应用)

题目:输入一个表示小行星的数组,数组中每个数字的绝对值表示小行星的大小,数字的正负号表示小行星运动的方向,正号表示向右飞行,负号表示向左飞行。如果2颗小行星相撞,那么体积小的小行星将会爆炸最终消失,体积大的小行星不受影响。如果相撞的两颗小行星大小相等,那么它们会爆炸消失。飞行方向相同的小行星永远不会相撞。求最终剩下的小行星。例如,有6颗小行星[4,5,-6,4,8,-5],它们相撞之后最终剩下3颗小行星[-6,4,8]。#include <vector>#include <

2021-10-11 20:25:09 545

原创 c++之友元

1.为什么要引用友元提高程序运行效率,既减少了类型和安全性检查及调用时间的开销,但它破坏了类的封装型和隐藏性,使得非成员函数可以访问类的私有成员。2.使用场景1)运算符重载的某些场合;2)2个类要共享数据3)异类若想要访问private的数据,必须声明为友元3.使用友元函数友元函数是在类中使用关键字friend修饰的非成员函数。由于友元函数不是成员函数,所以不存在this指针,必须通过对象来访问。友元仅是打破了外部访问中的private的权限。A声明为B的友元,A就

2021-08-19 15:57:01 480

原创 git日常操作

一.标签列出标签 $git tag 创建标签 $git tag -a 版本号 -m "描述信息" //附注标签 共享标签,同步到远程仓库 $git push origin 标签号 //推送指定标签$git push origin --tags //推送所有标签 删除标签 $git tag -d <tagname>$git push origin :refs/tags/<tagname>$git pu..

2020-10-29 14:31:10 137

原创 程序预处理阶段,在做什么

C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。预处理指令包括条件编译、源文件包含、宏替换、行控制、抛错、杂注和空指令。1.条件编译条件编译的功能是根据条件有选择性的保留或者放弃源文件中的内容。常见的条件包含#if、#ifdef、#ifndef指令开始,以#endif结束。用#undef 指令可对用#define定义的标识符取消定义。#if defined(CREDIT) credit();#elif defi

2020-08-22 11:22:56 1211

原创 c++中static关键字浅析

1.静态全局变量与全局变量在全局变量前加static关键字,即为静态全局变量 静态全局变量在程序的全局数据区分配内存, 若未初始化则默认初始化为0,直到程序结束才销毁 静态全局变量在该文件内可见,从变量定义处开始直到文件结束(普通全局变量在同一个程序的其它文件中可见,默认是external属性,而静态全局变量是internal属性,而在其它文件中不可见,对位隐藏)全局变量的使用在.cpp里定义变量。在头文件里extern该变量。其它文件只要引用了该头文件就能使用该变量。2.静态局部

2020-08-20 16:02:40 158

翻译 内存调试器

源地址:Memory Debuggers有几种工具可用于查找内存泄漏或用于报告程序的各个内存分配。 这些工具可帮助分析内存使用模式,检测不平衡的分配和释放,报告缓冲区超载和欠载等。内容:mtrace memwatch mpatrol dmalloc dbgmem valgrind Electric Fence Tutorials or Overviews1.mtracemtrace是glibc的内置部分,它可以检测由不平衡的malloc / free调用引起的内存泄漏。.

2020-08-17 17:57:21 449

原创 c++的内存问题---内存碎片

1.内存碎片描述一个系统中所有的不可用的空闲内存。这些资源之所以仍然未被使用,是因为负责分配内存的分配器使这些内存无法使用(malloc/new分配的是连续性空间,导致小内存无法分配)。这一问题通常都会发生,原因在于空闲内存以小而不连续方式出现在不同的位置。由于分配方法决定内存碎片是否是一个问题,因此内存分配器在保证空闲资源可用性方面扮演着重要的角色。实际上这些空闲内存碎片存在的方式有两种: a.外碎片:外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内...

2020-08-14 16:20:30 2272

原创 gdb调试工具参数说明

Name gdb - The GNU Debugger概要gdb [-help] [-nh] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps] [-tty=dev] [-s symfile] [-e prog] [-se prog] [-c core] [-p procID] [-x cmds] [-d dir] [prog|prog procID|prog core]描述 ...

2020-08-13 10:51:10 917

原创 TCP的TIME_WAIT状态分析

1.TCP状态CLOSED:无连接是活动的或正在进行LISTEN:服务器在等待进入呼叫SYN_RECV:一个连接请求已经到达,等待确认SYN_SENT:应用已经开始,打开一个连接ESTABLISHED:正常数据传输状态FIN_WAIT1:应用说它已经完成FIN_WAIT2:另一边已同意释放ITMED_WAIT:等待所有分组死掉CLOSING:两边同时尝试关闭TIME_WAIT:另一边已初始化一个释放LAST_ACK:等待最后一个ACK信号,就关闭2.发生的场景在四次挥手的过

2020-08-06 19:35:42 665

原创 c++库的制作和调用

环境: window10, vs2015, c++一.创建静态库1.创建一个简单的静态库2.随手来几个print,再弄个头文件。3.注意生成的平台配置,只能给对应的平台调用4.编译完成后,把lib和.h一拉出来,库就完成啦。就这么soeasy。二.调用1.在项目属性添加依赖项和库路径2.调用,头文件一包,就可以使用api了。三.动态库上面说了静态库,那动态库呢?其实道理一样,只是创建库项目的时...

2020-05-13 15:26:29 885

原创 VSCode的使用技巧

1.没有代码提示在‘设置’栏输入“prevent”,会出现选项,在工作区内的选项去掉即可;2.快捷键列表‘文件’ -> ‘首选项’ -> ‘键盘快捷方式’ 可以查看到功能的快捷键,由于前进后退不怎么好用,我都是改过来的。...

2020-04-20 10:02:16 330

原创 线程同步之互斥量

1.互斥量采用互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享。2.使用HANDLE hMutex; //定义互斥对象句柄hMutex = CreateMutex(NULL, false, "mutex"); /...

2020-04-16 14:26:27 172

转载 线程同步之信号量

1.信号量信号量是维护0到指定最大值之间的同步对象。信号量状态在其计数大于0时是有信号的,而其计数是0时是无信号的。信号量对象在控制上可以支持有限数量共享资源的访问。信号量的特点和用途可用下列几句话定义:(1)如果当前资源的数量大于0,则信号量有效;(2)如果当前资源数量是0,则信号量无效;(3)系统决不允许当前资源的数量为负值;(4)当前资源数量决不能大于最大资源数量2...

2020-04-16 14:23:03 269

转载 线程同步之事件(Event)

1.事件事件(Event)是WIN32提供的最灵活的线程间同步方式,事件可以处于激发状态(signaled or true)或未激发状态(unsignal or false)。根据状态变迁方式的不同,事件可分为两类:(1)手动设置:这种对象只可能用程序手动设置,在需要该事件或者事件发生时,采用SetEvent及ResetEvent来进行设置。(2)自动恢复:一旦事件发生并被处理后,自动恢复...

2020-04-16 14:03:35 2180

原创 线程同步之临界区

1.临界区临界区(Critical Section)是一段独占对某些共享资源访问的代码,在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到用原子方式操作共享资源的目的。临界区在使用时以CRITICAL_SECTION结...

2020-04-16 13:38:24 1201

原创 roslibpy api

roslibpy 中文文档roslibpy英文文档roslibpy官方文档

2020-04-07 11:41:03 373

原创 使用套接字创建连接 --- TCP

一.服务端的连接准备1.创建套接字int socket(int domain, int type, int protocol)domain : PF_INET, PF_INET6以及PF_LOCAL等,表示什么类型的套接字type: .SOCK_STREAM:表示字节流,TCP .SOCK_DGRAM :表示数据报,UDP .SOCK_RAW ...

2020-03-05 17:27:10 1439

原创 C语言日志库---zlog安装和使用

0. What is zlog?-------------zlog is a reliable, high-performance, thread safe, flexible, clear-model, pure C logging library. Actually, in the C world there was NO good logging library for app...

2020-03-02 17:30:57 911

原创 广播域---跨网段广播

1.广播域广播域是网络中能接收任一台主机发出的广播帧的所有主机集合。也就是说,如果广播域内的其中一台主机发出一个广播帧,同一广播域内所有的其它主机都可以收到该广播帧。2.广播域的计算用主机的IP地址与子网掩码进行与运算即可知道该主机属于哪一个广播域。例如:一台主机的IP地址为192.168.23.150,子网掩码为255.255.255.0,那么它所属的广播域就是192.168.2...

2020-02-26 10:31:47 8201

原创 安装python probuff ---win10

从google(https://github.com/protocolbuffers/protobuf/releases)下载protobuf-2.5.0-win32.zip和protoc-2.5.0-win32.zip---下载自对应的版本; 把protoc-5.0-win32.zip的protoc.exe放到protobuf-5.0\src\下; 命令行切换到protobuf-2.5.0\...

2020-02-24 11:41:56 160

原创 protobuff的安装和使用

0.环境 window10,C++1.准备1.1 下载protobuff:https://github.com/protocolbuffers/protobuf/releases,我下载的是3.101.2安装cmake:https://cmake.org/download/1.3cmake我下载的是目前最新的3.16,编译生成的protobuff,发现加进...

2019-10-17 14:46:54 2808

原创 获取tcp缓冲区大小 - C++

#include "stdafx.h"#include <WinSock2.h>#include <iostream>#pragma comment(lib,"ws2_32.lib")int main(){ WORD vVersionRequested; WSADATA wsaData; vVersionRequested = MAKEWORD(1, ...

2019-09-06 14:33:17 1858

原创 Linux C 实现atoi函数

目的:编写一个字符串转整型的接口/*************************************** Description : 实现atoi函数的作用* Editor : Donkey* Date : 2019-5-4 23:01**************************************/#include &...

2019-05-04 23:09:24 708

原创 expect脚本实现自动化操作

1.expect环境搭建expect是一个免费的编程语言工具,用来实现自动和交互式任务进行通信,而无需人的干预。环境的安装和一些简单的例子可以参看:Shell脚本学习之expect命令运行环境:ubuntu162.例子始于懒,才想法设法的做一些自动化的操作,把日常的重复性动作改造成越来越简单的动作,比如远程拷贝文件,ssh登录等。2.1 自动scp# FileN...

2019-02-25 11:33:22 769 2

原创 free()到底做了什么

1.问题在LeetCode上做题偶然发现一道题:free内存后,还继续调用该指针,于是好奇,想了解free到底做了什么。这段代码的free()掉了nextTemp结点的malloc内存,但后面还可以使用nextTemp = nextTemp-&gt;next。2.原因2.1 free的实现原理操作系统在调用malloc函数时,会默认在malloc分配的物理内存前面分配一个数...

2019-02-14 10:16:17 6489 2

原创 数据结构之单链表

Platform:ubuntu , C Language在一个项目中,数据结构使用的类型不会很多,并且结构一旦稳定,基本都很少对其改动。所以对于我个人而言,数据结构很少用到,但又及其重要。当前的项目使用的是队列,但究其根本,也只不过是操作受限的链表。从简单的单链表开始,做一知识点的整理。如有不足,还请指教!链表(Linked list)          链表是通过指针将一组零散的内存...

2019-02-13 14:09:22 335

原创 Linux字符驱动

1.Linux设备驱动分类按管理的设备硬件来分:字符设备,块设备,网络设备。1)字符设备    按字节流访问,能够顺序访问,也能够指定位置访问,如:按键 串口 终端 触摸屏 LCD等。2)块设备    在Unix系统下,块设备按一定的数据块进行访问,数据块为512bytes 1K等。    在Linux下,块设备既可以按数据块的方式访问,也可以安字节流访问,    他和字符设备的区别在于...

2019-01-31 15:02:00 334

原创 Linux内核模块编程

1.Linux内核模块编程特点1)不能使用C库和C标准头文件2)必须使用GNU规范3)没有内存保护机制4)不能处理浮点运算5)注意同步和并发的问题6)注意可移植性2.函数架构int xxx(void){    return 0;//成功    return 负值;//失败}    void yyy(void){    }/* 使用module_init(...

2019-01-30 17:19:30 301 1

原创 数组的下标为什么从0开始

数组(Arrary)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。从数组存储的内存模型上来看,“下标”最确切的定义应该是“偏移(offset)”。如果用a来表示数组的首地址,a[0]就是偏移为0的位置,也就是首地址,a[k]就表示偏移k个type_size的位置,所以计算a[k]的内存地址只需要用公式:a[k]_address = base_address ...

2019-01-12 14:11:34 3491

原创 栈(Stack)

最近在【极客时间】学习《数据结构和算法》,目的性的梳理以及记录下知识点。1.理解栈“后进先出,先进后出”,这就是典型的“栈”结构。比如:叠盘子,都是从下往上一个个放;取的时候,我们是从上往下一个个的依次取出来,不能随机抽出,只能按照规则。从栈的操作特性来看,是一种“操作受限”的线性表。只允许在一端插入和删除数据,基本操作是push(入栈)和pop(出栈),前者是插入元素到栈顶,后者是将...

2019-01-11 14:39:19 196

原创 资源下载地址

1.Ubuntu 16.04http://releases.ubuntu.com/2.VS 2017社区版(Community)下载地址:网盘链接:https://pan.baidu.com/share/init?surl=jJXyRMA    密码: ub6c迅雷下载(较快):ed2k://|file|en_visual_studio_community_2015_x86_d...

2018-12-02 10:23:30 4844

原创 [智能家居]Linux 字符编码的转换

1.项目需求:GB2312转UTF编码2.思路:iconv库的使用3.代码实例/************************************************* @FileName : gb2utf.c* @Description : Code convert* @Editor : Donkey* @Date ...

2018-12-01 15:16:00 6155

原创 [智能家居]限制程序可执行时间范围

项目需求:限制一个情景的执行时间段,如:一个情景只能在2点到3点执行,其它时间不执行。思路:获取当前的时间戳,把开始和结束时间设为今天的时间戳,拿当前时间与开始和结束时间三者做对比。当然也要考虑跨天的问题。涉及的知识点:1.tm结构体struct tm { int tm_sec; /* Seconds (0-60) */ ...

2018-12-01 10:04:23 4991

原创 智能家居特性及术语

智能家居环境具备一些共同的特性及基本的术语:1.传感器(Sensor):可产生信息,并将信息从一个通信网络里传送给其它设备,如在恒温器内的温度传感器、运动传感器、门磁或烟雾等传感器。2.控制器(Control):可通过通信网络管理其它设备,一般会提供一个用户界面,如遥控器,键盘或开关按钮;3.执行器(Actor):也可称为触动器(Actuator),负责执行交换、调节、开关、卷起等,如...

2018-11-14 23:24:23 6579

原创 [Al]算法:有n级阶梯,每次走1步或2步,最多有多少种走法

 /****************************************************************** @Filename : floor.c* @Author : Mr.Zhong* @Date : 2018-11-02* @Description: n级阶梯,每次走一步或2步,最多有多少种走...

2018-11-02 23:30:52 6596

原创 [thinking]C语言flaot值比较

最近面试,发现很多基础的原理都还没搞懂。自己平时没有应用或接触到的知识,也不会想着去学习。但遇到的更多,自己就会去探索的更多。1.int型比较a == b;//( != ,&lt;,&gt;,&lt;=,&gt;=)2.bool型比较a == true;//false3.指针比较a. if(a == NULL);b. if(a != NULL);c. str或me...

2018-10-20 11:42:58 3811 1

原创 [thinking] vmware-tools重装后,仍无法复制粘贴操作

环境:mac装的VMware,ubuntu突然一天,虚拟机与主机之间的复制粘贴无法进行,重新安装vmware-tools,重启过,编辑过vimrc,可结果还是不行。后经过百度不停查找和尝试,终于找到解决的方法:复制粘贴、拖拽、窗口缩放等问题都是因为vmware-user这个进程没有启动起来,在终端输入“/usr/bin/vmware-user”就可以手动启动。果然,搞定!!! ...

2018-10-08 09:46:02 7626 6

原创 [thinking] malloc引发的事件

环境:ubuntu 16,C语言问题描述:程序中,malloc分配小于128字节可以正常分配,但大于128k的时候,malloc就崩了。分析:代码截图如下:下面是执行的结果,可以看出第710行是没跑的,死在了malloc里面。经过一段时间的思考和调试,通过man查找到了malloc的用法,仔细阅读才发现问题所在,man的说明如下,有兴趣的可以自己查看man手册:其中...

2018-09-29 15:06:26 4943

原创 Linux C编译原理

一.基本概念1.编译程序:把一种语言(源语言---高级语言)转换成另一种语言(目标语言---低级语言--&gt; 汇编或机器语言)。2.词法分析:对输入的字符串进行扫描和分解,识别出一个个字符及其数据类型;3.语法分析:对输入的字符串进行语法单位的识别,判断是一个赋值语句还是其它表达式。4.语义分析与中间代码的产生:对输入的出现字符串进行语法的检查,合法会进行初步的翻译。(输入的是...

2018-09-28 22:11:17 5793 2

google ie内核插件工具(chrome.r39.crx+ffactivex-setup-r39+实例)

google ie内核插件工具(chrome.r39.crx+ffactivex-setup-r39+实例)

2021-12-01

C语言Json库

C语言的json库,包含了2个.c文件和2个.h文件,简单的引用,就可以使用json格式化数据。

2018-09-28

嵌入式系统的构建

比较详细讲解了嵌入式相关的内容,需要学习的知识,涉及到的领域,也可以带动自己学习的方向。

2018-08-23

通俗易懂的shell脚本指南

shell脚本是一种弱类型语言,如果把shell命令比作盖房子,那shell脚本就是用一块块砖瓦建起来的房子了。我们可以通过一些约定的格式将那些小巧的命令组合起来,实现更加自动化更加智能的所谓shell脚本。

2018-08-23

最全的vim脚本配置说明

关于Linux的vim配置脚本的最全说明,如何对vim进行tab补齐,alias快捷方式等的配置。

2018-08-23

C语言深度解剖

本书并不是从头到尾讲解 C 语言的基础知识,所以,本书并不适用于 C 语言零基础的人。本书的知识要比一般的 C 语言书说讲的深的多,其中有很多问题是各大公司的面试或笔试题。所以本书的读者应该是中国广大的计算机系的学生和初级程序员。

2018-08-21

程序员的思维修炼-开发认知潜能

本书研究如何克服一系统局限来提高自己的学习和思考技能,如何正确使用和调试大脑,改进学习能力,通过自我引导积累经验等。 生命中没有什么是一成不变的,人们需要改变自己的习惯和方法。如果你想尝试改变自己的人,请把这本书当做改变的开始。

2018-08-05

ubuntu个性化设置及有趣命令

该文档讲解了一些基础设置:主题,下载源等,还有一些有趣的基本命令,工作之余娱乐。

2018-08-03

代码人生,不止代码

《不止代码》从程序员的常态,讲解了一些突破自己思维的问题。为何我写了几年代码,还是一样的平庸?我加班越久,反而bug越多?发现局限自己的,很大原因是由于自己思维的局限,所以希望能够挤出时间,拓展下。

2018-08-02

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

TA关注的人

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