C/C++
hNicholas
这个作者很懒,什么都没留下…
展开
-
qemu中VNC流程详解+代码分析
在虚拟化场景下,对于VM的访问可以使用VNC等可视化工具来操作。VNC的原理其实很简单, qemu会对每一个虚拟机模拟一块网卡,而VM的显示信息都会留在这个网卡的显存中。qemu启动一个 VNC server,这个server其实就一个定时器,以一定的频率默认是(30ms)从显存中拿出显示的信息, 然后,当有VNC client连接上以后,定期的发送给VNC client就可以了。这里描述的只...转载 2020-04-03 09:09:34 · 5109 阅读 · 0 评论 -
Linux下Python与C++混合编程
C++调用PythonPython模块代码:#!/usr/bin/python#Filename:TestModule.pydef Hello(s): print ("Hello World") print(s)def Add(a, b): print('a=', a) print ('b=', b) return a + bclass...转载 2018-08-22 15:53:31 · 1813 阅读 · 1 评论 -
C语言函数重入
C语言函数重入可重入函数:可以被中断的函数,即这个函数执行时,可以中断其执行,可以由一个或多个任务并发使用,而不比担心数据错误。 不可重入函数(不安全函数)不能运行在多任务环境下,除非能保证互斥(使用信号量/代码的关键部分禁用中断) 是由于使用了未受保护的系统资源,如全局变量区,中断向量表等。 可重入函数:没有静态数据结构 不返回指向静态数据的指针 所有函数数据由函数的调用...转载 2018-08-02 11:25:50 · 5289 阅读 · 1 评论 -
linux 内核与用户空间通信之netlink使用方法
Linux中的进程间通信机制源自于Unix平台上的进程通信机制。Unix的两大分支AT&T Unix和BSD Unix在进程通信实现机制上的各有所不同,前者形成了运行在单个计算机上的System V IPC,后者则实现了基于socket的进程间通信机制。同时Linux也遵循IEEE制定的Posix IPC标准,在三者的基础之上实现了以下几种主要的IPC机制:管道(Pipe)及命名管道(Named转载 2018-01-10 17:48:01 · 725 阅读 · 0 评论 -
Netlink机制详解
机制原理:Netlink 是一种特殊的 socket,它是 Linux 所特有的,由于传送的消息是暂存在socket接收缓存中,并不被接收者立即处理,所以netlink是一种异步通信机制。 系统调用和 ioctl 则是同步通信机制。用户空间进程可以通过标准socket API来实现消息的发送、接收,在Linux中,有很多用户空间和内核空间的交互都是通过Netlink机制完成的,在L转载 2018-01-10 17:29:08 · 14355 阅读 · 1 评论 -
swig 把c/c++ 封装成python可调用的so文动态链接库
注意:使用此种方法产生的so文件放在 python的site 目录下,可以直接import example,调用模块。我们经常会看到python一些项目源码中,有的方法直接pass如[html] view plain copydef has_key(self, k): # real signature unknown; res转载 2018-01-16 16:08:20 · 1348 阅读 · 3 评论 -
Socket心跳包机制
心跳包的发送,通常有两种技术方法1:应用层自己实现的心跳包 由应用程序自己发送心跳包来检测连接是否正常,大致的方法是:服务器在一个 Timer事件中定时 向客户端发送一个短小精悍的数据包,然后启动一个低级别的线程,在该线程中不断检测客户端的回应, 如果在一定时间内没有收到客户端的回应,即认为客户端已经掉线;同样,如果客户端在一定时间内没 有收到服务器的心跳包,则认为连接不可用。方法转载 2017-12-27 09:57:58 · 934 阅读 · 0 评论 -
C语言宏定义的简单总结
1,防止一个头文件被重复包含 #ifndef BODYDEF_H #define BODYDEF_H //头文件内容 #endif 2,得到指定地址上的一个字节或字 #define MEM_B( x ) ( *( (byte *) (x) ) ) #define MEM_W( x ) ( *( (word *) (x) ) ) 3,得到一个field在结转载 2016-05-20 11:45:54 · 437 阅读 · 0 评论 -
C++中的static关键字的总结
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1#include转载 2016-05-13 21:30:25 · 320 阅读 · 0 评论 -
堆和栈的区别总结
一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(stati转载 2016-05-25 19:42:10 · 323 阅读 · 0 评论 -
math.h 包含函数介绍
math.h头文件中声明了常用的一些数学运算数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有:1、 三角函数double sin(double);正弦double cos(double);余弦double tan(double);正切2 、反三角函数double asin (double); 结果介于[-PI/转载 2016-04-26 17:28:35 · 58300 阅读 · 0 评论 -
c++ Lambda 表达式介绍
C++ 11中Lambda表达式用于定义并创建匿名的函数对象,以简化编程。语法形式如下:[函数对象参数] (操作符重载函数参数) mutable 或 exception声明 ->返回值类型{函数体}基本语法简单来说,Lambda函数也就是一个函数,它的语法定义如下:复制代码代码如下:[capture](parameters) mutabl转载 2016-04-08 20:00:24 · 370 阅读 · 0 评论 -
C/C++ 字符串处理小函数(个人总结)
常用字符串操作函数:去除字符串中的指定字符,取出字符串中的标记值,替换字符串中的指定字符,获得字符串buf中的以空格等分开的所有项的值存入vector中等函数代码实现。原创 2015-01-23 10:59:48 · 621 阅读 · 0 评论 -
标准C++中的string类的用法总结
相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C++中string类的使用。标准C++中提供的str转载 2015-01-23 10:53:51 · 430 阅读 · 0 评论 -
C++对象模型
何为C++对象模型?C++对象模型可以概括为以下2部分:1. 语言中直接支持面向对象程序设计的部分2. 对于各种支持的底层实现机制语言中直接支持面向对象程序设计的部分,如构造函数、析构函数、虚函数、继承(单继承、多继承、虚继承)、多态等等,这也是组里其他同学之前分享过的内容。第一部分这里我简单过一下,重点在底层实现机制。在c语言中,“数据”和“处转载 2016-03-04 20:16:57 · 501 阅读 · 0 评论 -
select、poll、epoll简介
epoll跟select都能提供多路I/O复用的解决方案。在现在的Linux内核里有都能够支持,其中epoll是Linux所特有,而select则应该是POSIX所规定,一般操作系统均有实现select:select本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是:1、 单个进程可监视的fd数量被限制,即能监听端口的大小有限。转载 2016-03-19 17:54:59 · 273 阅读 · 0 评论