- 博客(464)
- 资源 (1)
- 收藏
- 关注
转载 C++实现回调函数的几种方式
这是最具C++特征的回调函数,基类定义纯虚函数,派生类实现虚函数,基类指针可以指向派生类,使用基类指针就可以调用派生类的虚函数,从而实现回调。关于新特性参考:C++ std::tr1::function和std::tr1::bind模板类介绍,qt测试,这里不多说,直接上代码。在C++的实际应用中,有很多实现回调函数的方式,不一定要传递函数指针才能实现回调,只要实现了回调的功能,都叫回调函数。C++11新特性td::tr1::function和std::tr1::bind实现回调函数。
2023-12-11 11:09:08
478
转载 一次内存紧缩
在linux系统下,一块内存被C的free函数或者C++的delete函数显式释放后,释放掉的内存不一定马上交还给系统。简单地说,系统通过动态分配给进程的内存分为两部分: mmap和brk. mmap在进程的虚拟地址空间中找出一块空闲区域分配给进程,释放后马上归还给系统; brk在进程数据段内找到一块空闲区域给系统,是通过push _edata栈顶指针实现。两种情况下都不会直接分配物理内存,只有在访问虚拟空间地址产生缺页中断的时候才会建立虚拟地址与内存地址间的映射。brk分配的内存在被释放后,如果堆栈高地址
2021-07-12 21:28:17
557
转载 Linux平台的ASLR机制
https://blog.youkuaiyun.com/Plus_RE/article/details/79199772
2021-07-12 21:19:44
418
转载 Linux虚拟地址空间布局
转自:https://www.cnblogs.com/clover-toeic/p/3754433.html 在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设置Large-Address-Aware Executables标志也可为1:3)。这并不意味着内核使用那么多物理...
2021-07-12 21:09:26
265
转载 ARM交叉编译器GNUEABI、NONE-EABI、ARM-EABI、GNUEABIHF等的区别
命名规则:交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi]arch- 体系架构,如ARM,MIPS verdor - 工具链提供商 os - 目标操作系统 eabi - 嵌入式应用二进制接口根据对操作系统的支持与否,ARM GCC可分为支持和不支持操作系统,如arm-none-eabi:这个是没有操作系统的,自然不可能支持那些跟操作系统关系密切的函数,比如fork(2)。他使用的是newlib这个专用于嵌 入式系统的C库。...
2020-12-07 09:34:09
319
转载 socket--shutdown()
调用 close()/closesocket() 函数意味着完全断开连接,即不能发送数据也不能接收数据,这种“生硬”的方式有时候会显得不太“优雅”。图1:close()/closesocket() 断开连接上图演示了两台正在进行双向通信的主机。主机A发送完数据后,单方面调用close()/closesocket() 断开连接,之后主机A、B都不能再接受对方传输的数据。实际上,是完全无...
2020-03-18 16:07:26
338
转载 lcov收集覆盖率
1、gcov1.1 什么是gcov 首先我们要了解什么是gcov,gcov伴随gcc 发布。gcc编译加入-fprofile-arcs -ftest-coverage 参数生成二进制程序,执行测试用例生成代码覆盖率信息。1.2 如何使用gcov 用GCC编译的时候加上-fprofile-arcs -ftest-coverage选项,链接的时候也加上。 ...
2020-03-17 16:51:02
425
转载 Cortex-M3和Cortex-M4 Fault异常应用之一 ----- 基础知识
1. 摘要 Cortex-M内核实现了一个高效异常处理模块,可以捕获非法内存访问和数个程序错误条件。本应用笔记从程序员角度描述Cortex-M Fault异常,并且讲述在软件开发周期中的Fault用法。 2. 简介 Cortex-M3(以下简称CM3)和Cortex-M4(以下简称CM4)内核的Fault异常可以捕获非法内存方法和非法编程行为。Fault异...
2020-01-14 16:37:34
1870
转载 linux下使用TC模拟弱网络环境(网络延迟和丢包)
1 模拟延迟传输简介netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块。该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽、传输延迟、丢包等等情 况。使用 Linux 2.6 (或以上) 版本内核的很多发行版 Linux 都开启了该内核功能,比如 Fedora、Ubuntu、Redhat、OpenSuse、CentOS...
2019-10-11 10:50:13
440
转载 ubuntu使用Facebook的ATC模拟不同的网络类型
1 安装Ubuntu16系统使用U盘安转Ubuntu 16 或者以上系统,该系统默认支持热点分享功能。安装教程:http://www.linuxidc.com/Linux/2016-04/130520.htm2 创建无线热点两种方式:1. ubuntu利用系统自带的Wi-Fi热点GUI创建界面创建。2. 其他linux系统如树莓派等使用命令行进行创建。方式2请参考官方文档:...
2019-09-24 14:34:19
596
转载 WebSocket 是什么原理?为什么可以实现持久连接?
作者:Ovear链接:https://www.zhihu.com/question/20215561/answer/40316953来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。一、WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)首先HTTP有1.1和1...
2019-06-06 16:30:40
230
转载 c语言中#和##的用法
转:https://www.cnblogs.com/lanjianhappy/p/7857757.html原文有些错误,修正一下。一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法: #include<stdio.h> #include<limits.h> #define STR(s) #s #defin...
2018-10-11 15:57:38
3387
转载 浅析C语言的一个关键字——register
--------------------- 本文来自 21aspnet 的优快云 博客 ,全文地址请点击:https://blog.youkuaiyun.com/21aspnet/article/details/257511?utm_source=copy1、register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度。例如下面的内存块拷贝代码...
2018-09-28 11:27:50
358
转载 jiffies溢出与时间先后比较
转自:http://decimal.blog.51cto.com/1484476/410673 1. 概述在Linux内核中,TCP/IP协议栈在很多用到时间比较的地方都使用了jiffies?本文介绍了什么是jiffies,jiffies溢出可能造成的问题,使用time_after等宏来正确地比较时间及其背后的原理。2. jiffies简介2.1 时钟中断在Linux内核中,T...
2018-09-25 14:17:27
293
转载 Hex、bin、axf、elf格式文件小结
转:https://blog.youkuaiyun.com/grow_mature/article/details/8553542一、HEXHex文件,一般是指Intel标准的十六进制文件。Intelhex 文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般编程器均支持生成此种格式文件。如,KEIL下可通过配置相关选项来生成HEX目标文件。HEX文件由记...
2018-09-04 15:39:49
674
转载 压缩算法效率比较
Quick Benchmark: Gzip vs Bzip2 vs LZMA vs XZ vs LZ4 vs LZO比较了几种算法:1. 压缩效率:LZO <GZIP < BZIP2 < LZMA2. 压缩时间:GZIP <LZO ~= BZIP2 << LZMA3. 解压缩时间:LZO <GZIP < LZMA<< BZIP...
2018-08-08 10:01:12
9955
转载 C和C++混合编译,extern"C"的用法
关于extern_C 通常,在C语言的头文件中经常可以看到类似下面这种形式的代码#ifdef __cplusplus extern "C" { #endif /**** some declaration or so *****/ #ifdef __cplusplus } #endif /* end of __cplusplus */ 那么,这种...
2018-07-16 17:28:31
212
转载 什么是BQB认证?
一、什么是BQB认证?什么是QDL(DID)列名认证?1、BQB认证:如果您的产品具有蓝牙功能并且在产品外观上标明蓝牙标志,必须通过一个叫做BQB的认证;发证机构:SIG2、QDL列名:蓝牙产品“最终产品列表”,原来称呼:EPL列名指蓝牙BQB认证的列名形式,例如蓝牙音箱成品,如果蓝牙模块已经过了BQB认证,那么蓝牙音箱这个产品可以不用重新申请BQB认证,只要取得模块供应商的授权,就可以把产品以列...
2018-06-29 16:11:18
10705
转载 wifi一键配网smartconfig原理及应用
转载:http://blog.youkuaiyun.com/flyingcys/article/details/49283273智能家居/家电现阶段还处于普及阶段,由于家庭wifi网络的普及,目前普遍采用wifi与路由器完成连接,与手机/云端进行数据交互.智能硬件,如智能插座,智能空调,智能空气净化器由于不具备人机交互界面,不能像电脑一样的搜索/选择指定路由器,输入连接密码的界面,所以必须先解决正确连接路由问...
2018-02-26 13:58:16
594
转载 程序或-内存区域分配(五个段)
转自:http://blog.youkuaiyun.com/love_gaohz/article/details/41310597一.在学习之前我们先看看ELF文件。ELF分为三种类型:.o 可重定位文件(relocalble file),可执行文件以及共享库(shared library),三种格式基本上从结构上是一样的,只是具体到每一个结构不同。下面我们就从整体上看看这
2018-01-28 21:24:19
357
转载 C语言规范:C89、C90、C95、C99
【K&R C】 1978 年,Dennis Ritchie 和 Brian Kernighan 合作推出了《The C Programming Language》的第一版(按照惯例,经典著作一定有简称,该著作简称为 K&R),书末的参考指南 (Reference Manual) 一节给出了当时 C 语言的完整定义,成为那时 C 语言事实上的标准,人们称之为 K&R C。从这一年以后,C 语言被
2017-08-29 20:27:28
1933
转载 公钥与私钥-数字签名是什么?
转自:http://www.blogjava.NET/yxhxj2006/archive/2012/10/15/389547.html1.鲍勃有两把钥匙,一把是公钥,另一把是私钥。2.鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。3.苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果
2017-08-19 19:43:57
592
转载 借助mbedTLS了解DTLS握手协议
引子本文将会利用mbedTLS协议栈,通过dump协议栈调试信息,抓包,代码分析等方式来对DTLS的握手协议进行介绍。DTLS简介简单说,DTLS(Datagram Transport Layer Security)实现了在UDP协议之上的TLS安全层。由于基于TCP的SSL/TLS没有办法处理UDP报文的丢包及重排序(这些问题一般交给UDP的上层应用解决),DTLS在原本
2017-08-19 17:27:50
6194
转载 MQTT入门篇
物联网(Internet of Things,IoT)最近曝光率越来越高。虽然HTTP是网页的事实标准,不过机器之间(Machine-to-Machine,M2M)的大规模沟通需要不同的模式:之前的请求/回答(Request/Response)模式不再合适,取而代之的是发布/订阅(Publish/Subscribe)模式。这就是轻量级、可扩展的MQTT(Message Queuing Teleme
2017-08-18 14:50:56
461
转载 局域网设备发现之Bonjour协议
在WIFI物联网解决方案中,通常我们需要对设备进行绑定,需要通过某种方法先对设备进行发现,比如微信硬件采用广播的方式,定时向外发送上线消息或者采用一问一答的方式进行发现,Bonjour是由苹果公司实现的一种零配置网络(Zeroconf)协议,它是一种基于服务的设备发现协议,不仅能够自动获取有效IP地址,还可以通过查询服务的方式来找到设备地址,只要双方约定好服务(service)的名称,设备的IP地
2017-08-17 21:25:50
3082
转载 理解RESTful架构
转载:http://www.ruanyifeng.com/blog/2011/09/restful越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集
2017-08-17 20:32:56
254
转载 CoAP学习笔记——CoAP格式详解
0 前言 CoAP是受限制的应用协议(Constrained Application Protocol)的代名词。在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的。但是对于小型设备而言,实现TCP和HTTP协议显然是一个过分的要求。为了让小设备可以接入互联网,CoAP协议被设计出来。CoAP是一种应用层协议,它运行于UDP协议之上而不是像HTTP那样运行于TC
2017-08-17 15:43:14
853
转载 图解SQL的Join
转:https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/I thought Ligaya Turmelle's post on SQL joins was a great primer for novice developers. Since SQL joins appear to be set-based, th
2017-08-01 15:28:15
382
转载 Installing TensorFlow on Mac OS X
转载地址:https://www.tensorflow.org/install/install_macThis guide explains how to install TensorFlow on Mac OS X.Note: As of version 1.2, TensorFlow no longer provides GPU support on Mac OS X.
2017-06-19 13:47:04
801
转载 一站式学习Wireshark(八):应用Wireshark过滤条件抓取特定数据流
转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 应用抓包过滤,选择Capture | Options,扩展窗口查看到Capture Filter栏。双击选定的接口,如下图所示,弹出Edit Interface Settints窗口。下图显示了Edit Interface Settings窗口
2017-04-07 17:56:20
544
转载 一站式学习Wireshark(七):Statistics统计工具功能详解与应用
转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 Wireshark一个强大的功能在于它的统计工具。使用Wireshark的时候,我们有各种类型的工具可供选择,从简单的如显示终端节点和会话到复杂的如Flow和IO图表。本文将介绍基本网络统计工具。包括:捕捉文件摘要(Summary), 捕捉包的层次结
2017-04-07 17:50:36
576
转载 一站式学习Wireshark(六):狙击网络高延时点
转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 在某些情况下,丢包可能并不是造成延时的原因。你可能会发现尽管两台主机之间通讯速度很慢,但这种慢速并没有伴随着TCP重传或是重复ACK的征兆。在这种情况下,需要使用另一种方式来定位高延时点。 查找高延时点最有效的方法之一是检查最初的握手信号以及
2017-04-07 17:21:35
439
转载 一站式学习Wireshark(五):TCP窗口与拥塞处理
转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 TCP通过滑动窗口机制检测丢包,并在丢包发生时调整数据传输速率。滑动窗口机制利用数据接收端的接收窗口来控制数据流。接收窗口值由数据接收端指定,以字节数形式存储于TCP报文头,并告知传输设备有多少数据将会存储在TCP缓冲区。缓冲区就是数据暂时
2017-04-07 17:21:02
467
转载 一站式学习Wireshark(四):网络性能排查之TCP重传与重复ACK
转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 作为网络管理员,很多时间必然会耗费在修复慢速服务器和其他终端。但用户感到网络运行缓慢并不意味着就是网络问题。解决网络性能问题,首先从TCP错误恢复功能(TCP重传与重复ACK)和流控功能说起。之后阐述如何发现网络慢速之源。最后,对网络各组成部分上
2017-04-07 17:19:51
576
转载 一站式学习Wireshark(三):应用Wireshark IO Graphs分析数据流
基本IO Graphs: IO graphs是一个非常好用的工具。基本的Wireshark IO graph会显示抓包文件中的整体流量情况,通常是以每秒为单位(报文数或字节数)。默认X轴时间间隔是1秒,Y轴是每一时间间隔的报文数。如果想要查看每秒bit数或byte数,点击“Unit”,在“Y Axis”下拉列表中选择想要查看的内容。这是一种基本的应用,对于查看流量中的波峰/波谷很有帮助。要
2017-04-06 17:05:02
523
转载 一站式学习Wireshark(十):应用Wireshark显示过滤器分析特定数据流(下)
转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 掌握显示过滤器对于网络分析者来说是一项必备的技能。这是一项大海捞针的技巧。学会构建,编辑,保存关键的显示过滤器能够节省数小时的时间。与捕捉过滤器使用的BPF语法不同,显示过滤器使用的是Wireshark特定的格式。除了某些特例之外,Wiresh
2017-04-05 21:12:23
318
转载 一站式学习Wireshark(九):应用Wireshark显示过滤器分析特定数据流(上)
这里可以下载到一些各类协议的抓包样本:https://wiki.wireshark.org/SampleCaptures还有各类过滤条件参考https://wiki.wireshark.org/CaptureFiltershttps://wiki.wireshark.org/DisplayFilters转载请在文首保留原文出处:EMC中文支持论坛https://commun
2017-04-05 20:53:50
409
转载 一站式学习Wireshark(八):应用Wireshark过滤条件抓取特定数据流
转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 应用抓包过滤,选择Capture | Options,扩展窗口查看到Capture Filter栏。双击选定的接口,如下图所示,弹出Edit Interface Settints窗口。下图显示了Edit Interface Settings窗口
2017-04-05 20:12:05
363
转载 一站式学习Wireshark(二):应用Wireshark观察基本网络协议
转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chineseTCP: TCP/IP通过三次握手建立一个连接。这一过程中的三种报文是:SYN,SYN/ACK,ACK。 第一步是找到PC发送到网络服务器的第一个SYN报文,这标识了TCP三次握手的开始。如果你找不到第一个SYN报文,选择Edit -> Find Pack
2017-03-31 16:38:06
298
转载 一站式学习Wireshark(一):Wireshark基本用法
转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese介绍 Wireshark基本用法:抓取/过滤/查看报文应用Wireshark观察基本网络协议应用Wireshark过滤条件抓取特定数据流应用Wireshark显示过滤器分析特定数据流(上)应用Wireshark显示过滤器分析特定数据流(下)
2017-03-30 23:14:44
401
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人