05 2018 档案

摘要:Python允许C扩展模块的编写者定义可以从Python代码操作的新类型,就像内置类型str和list类型一样。所有扩展类型的代码都遵循一种模式,但在开始之前需要了解一些细节。 基础 CPython运行时看到所有Python变量的对象类型都是 (所有Python对象的基类)。PyObject结构本身 阅读全文
posted @ 2018-05-25 17:50 银魔术师 阅读(1100) 评论(0) 推荐(1) 编辑
摘要:用C或C ++扩展 如果你知道如何用C语言编程,那么为Python添加新的内置模块是很容易的。这种扩展模块可以做两件不能直接在Python中完成的事情:它们可以实现新的内置对象类型,以及调用C库函数和系统调用。 为了支持扩展,Python API(应用程序员接口)定义了一组函数、宏和变量,它们提供对 阅读全文
posted @ 2018-05-25 17:49 银魔术师 阅读(485) 评论(0) 推荐(0) 编辑
摘要:软件安装 生成protoc 使用VS2012打开build目录下的protobuf.sln文件,在protoc上右键 生成,最终生成的protoc.exe位于build的Debug目录下 向PATH添加protoc.exe路径 剩余步骤参考 "go RPC官方教程" 原生net/rpc 服务端代码 阅读全文
posted @ 2018-05-25 12:17 银魔术师 阅读(302) 评论(0) 推荐(0) 编辑
摘要:下载MSI "MSI地址" 配置环境变量 GOPATH: 用于存放Go语言Package的目录,这个目录不能在Go的安装目录中 GOBIN: Go二进制文件存放目录,写成%GOROOT%\bin就好 PATH: 需要将%GOBIN%加在PATH变量的最后,方便在命令行下运行Go 下载JetBrain 阅读全文
posted @ 2018-05-25 12:16 银魔术师 阅读(514) 评论(0) 推荐(0) 编辑
摘要:假如我们要用C语言实现下面的python脚本bird.py 调用脚本main.py 执行效果如下 实现相同逻辑的原始C代码bird.c 下面我们要将原始C代码改造成可以被main.py的python模块: 包含头文件Python.h 添加C函数fly的Python调用版本bird_fly 添加向Py 阅读全文
posted @ 2018-05-25 12:14 银魔术师 阅读(10071) 评论(2) 推荐(0) 编辑
摘要:定义一个静态类型 / G_DEFINE_TYPE( 比`G_DEFINE_TYPE`就是多了一个自定义代码参数_C_): @TN: 新类型的名字,单词首字母大写,例如:GtkGadget。 @t_n: 新类型的名字,单词全部小写并且用'_'符号分隔,例如gtk_gadget: separated b 阅读全文
posted @ 2018-05-25 12:13 银魔术师 阅读(2233) 评论(0) 推荐(0) 编辑
摘要:你将学到什么 使用GObject模拟实现接口 使用接口 首先按照学习笔记(一)定义一个普通的GObject类 使用 和`G_IMPLEMENT_INTERFACE G_DEFINE_TYPE`来实现类定义 实现接口初始化函数 ,接口内声明的每个虚函数指针都要被赋予实现 扩展接口 如果一个接口的实现依 阅读全文
posted @ 2018-05-25 12:13 银魔术师 阅读(1338) 评论(0) 推荐(0) 编辑
摘要:你将学到什么 如何实现Object的构造函数和析构函数 如何在条件检测不允许的情况下终止对象创建 Object的构造函数 对象的构造函数是不允许失败,如果你需要一个允许失败的GObject构造函数,使用GIO库提供的 和`GAsynclnitable`接口(文章最后会有个例子说明) 如果你需要指定构 阅读全文
posted @ 2018-05-25 12:12 银魔术师 阅读(2158) 评论(0) 推荐(0) 编辑
摘要:你将学到什么 如何实现Object的方法 Object的方法 Object的public方法 在头文件声明一个函数,然后在源文件中实现函数即可 Object的public虚函数 GObject通过函数指针的方式来模拟C++语言的虚函数实现,具体步骤如下: 在类结构定义里面设置一个函数指针,然后定义一 阅读全文
posted @ 2018-05-25 12:12 银魔术师 阅读(771) 评论(0) 推荐(0) 编辑
摘要:GObject GObject库是Glib库的动态类型系统实现,它实现了: 基于引用计数的内存管理 实例的构造和析构 通用的set/get的属性获取方法 简单易用的信号机制 对象实例化 所述 的功能家族可用于实例化从GObject的基类型继承的任何的GType。所有这些函数都确保类和实例结构已经被G 阅读全文
posted @ 2018-05-25 12:11 银魔术师 阅读(13194) 评论(0) 推荐(0) 编辑
摘要:你将学到什么 如何使用GObject实现一个新类 类头文件 声明一个类型的方法选择取决于类型是可被继承的还是不可被继承的。 不可被继承的类型(Final类型)使用 宏来定义,还需要在源文件(不是在头文件)中定义一个结构来保存类实例数据。 可被继承的类型使用 宏来定义 类源文件 源文件第一步就是包含上 阅读全文
posted @ 2018-05-25 12:11 银魔术师 阅读(2428) 评论(0) 推荐(1) 编辑
摘要:文章来自 "gRPC 官方文档中文版" 本教程提供了C++程序员如何使用gRPC的指南。 通过学习教程中例子,你可以学会如何: 在一个 .proto 文件内定义服务. 用 protocol buffer 编译器生成服务器和客户端代码. 使用 gRPC 的 C++ API 为你的服务实现一个简单的客户 阅读全文
posted @ 2018-05-25 12:10 银魔术师 阅读(16426) 评论(0) 推荐(1) 编辑
摘要:介绍 GLib和GTK+应用的主事件循环管理着所有事件源。这些事件的来源有很多种比如文件描述符(文件、管道或套接字)或超时。新类型的事件源可以通过 g_source_attach() 函数添加。 为了让多组独立事件源能够在不同的线程中被处理,每个事件源都会关联一个 GMainContext 。一个线 阅读全文
posted @ 2018-05-25 12:10 银魔术师 阅读(9828) 评论(0) 推荐(1) 编辑
摘要:文章来自 "gRPC 官方文档中文版" 异步基础: C++ 本教程介绍如何使用 C++ 的 gRPC 异步/非阻塞 API 去实现简单的服务器和客户端。假设你已经熟悉实现同步 gRPC 代码,如 "gRPC 基础: C++" 所描述的。本教程中的例子基本来自我们在 "overview" 中使用的 " 阅读全文
posted @ 2018-05-25 12:09 银魔术师 阅读(2905) 评论(0) 推荐(0) 编辑
摘要:文章来自 "gRPC 官方文档中文版" 认证 gRPC 被设计成可以利用插件的形式支持多种授权机制。本文档对多种支持的授权机制提供了一个概览,并且用例子来论述对应API,最后就其扩展性作了讨论。 马上将会推出更多文档和例子。 支持的授权机制 SSL/TLS gRP 集成 SSL/TLS 并对服务端授 阅读全文
posted @ 2018-05-25 12:08 银魔术师 阅读(5221) 评论(0) 推荐(1) 编辑
摘要:文章来自 "gRPC 官方文档中文版" HTTP2 协议上的 gRPC 本文档作为 gRPC 在 HTTP2 草案17框架上的实现的详细描述,假设你已经熟悉 HTTP2 的规范。产品规则采用的是 "ABNF 语法" 大纲 以下是 gRPC 请求和应答消息流中一般的消息顺序: 请求 → 请求报头 有定 阅读全文
posted @ 2018-05-25 12:08 银魔术师 阅读(10779) 评论(0) 推荐(0) 编辑
摘要:文章来自 "gRPC 官方文档中文版" 概览 开始 欢迎进入 gRPC 的开发文档,gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。 本文档通过快速概述和一个简单的 Hello World 例子来向您介绍 gRPC 。你可以在本站发现更详细的教程和 阅读全文
posted @ 2018-05-25 12:07 银魔术师 阅读(751) 评论(0) 推荐(0) 编辑
摘要:文章来自 "gRPC 官方文档中文版" gRPC 概念 本文档通过对于 gRPC 的架构和 RPC 生命周期的概览来介绍 gRPC 的主要概念。本文是在假设你已经读过文档部分的前提下展开的。针对具体语言细节请查看对应语言的快速开始、教程和参考文档(很快就会有完整的文档)。 概览 服务定义 正如其他 阅读全文
posted @ 2018-05-25 12:07 银魔术师 阅读(1541) 评论(0) 推荐(1) 编辑
摘要:你将学到什么 如何使用剪切板 剪切板简介 GtkClipboard对象代表不同进程或同一进程不同构件的剪切板数据。标识每个剪切板的名字被编码成 (可以通过gdk_atom_intern()和gdk_atom_name()获取编码前的名字)。默认的剪切板对应名为 的`GdkAtom XServer P 阅读全文
posted @ 2018-05-25 11:26 银魔术师 阅读(1351) 评论(0) 推荐(0) 编辑
摘要:你将学到什么 如何实现弹出式菜单 菜单简介 菜单(GtkMenu)由菜单项(GtkMenuItem)构成,菜单项可以是任意构件比如按钮、菜单(子菜单) 菜单项的管理 菜单外壳(GtkMenuShell)是菜单(GtkMenu)和菜单栏(GtkMenuBar)的抽象基类,它提供了管理菜单列表中的菜单项 阅读全文
posted @ 2018-05-25 11:25 银魔术师 阅读(1188) 评论(0) 推荐(0) 编辑
摘要:GTK+介绍 "官方文档" GTK+ 学习 GTK+ 依赖的函数库 Glib 提供了各种各样的语言特性,譬如说:各种数据类型、字符串函数、错误通知、消息队列和线程的通用的函数库。 Pango 用来实现国际化和本地化功能的函数库。 ATK 一种平易近人的工具函数包,提供了快捷键服务为肢体有缺陷的人使用 阅读全文
posted @ 2018-05-25 11:25 银魔术师 阅读(1660) 评论(0) 推荐(0) 编辑
摘要:描述JSON串 如何使用jsoncpp提供的数据结构来存储如下JSON串? jsoncpp使用Json::Value对象来保存JSON串,Json::Value对象可以表示如下数据类型: | 枚举类型 | 说明 | 翻译 | | | | | | nullValue | 'null' value | 阅读全文
posted @ 2018-05-25 11:24 银魔术师 阅读(3497) 评论(0) 推荐(0) 编辑
摘要:基本使用 使用jsoncpp库解析、修改、打印JSON串 源文件 $ cat main.cpp include include "json/json.h" using namespace std; const char style = "{ \ \"encoding\" : \"UTF 8\", \ 阅读全文
posted @ 2018-05-25 11:24 银魔术师 阅读(290) 评论(0) 推荐(0) 编辑
摘要:环境设置 项目地址 https://github.com/open source parsers/jsoncpp.git 操作系统 安装jsoncpp 工程目录结构(模板) 编译运行项目(模板) 阅读全文
posted @ 2018-05-25 11:23 银魔术师 阅读(1378) 评论(0) 推荐(0) 编辑
摘要:JSON类型 工程目录结构 proto文件 读写源文件 $ cat reader.cpp include include include include include "style.pb.h" using namespace std; int main(int argc, char argv[]) 阅读全文
posted @ 2018-05-25 11:23 银魔术师 阅读(2023) 评论(0) 推荐(0) 编辑
摘要:表类型 protobuf语言的maps字段类型相当于C++语言的std::map类型 工程目录结构 proto文件 读写源文件 $ cat reader.cpp include include include "sample_maps.pb.h" using namespace std; int m 阅读全文
posted @ 2018-05-25 11:22 银魔术师 阅读(307) 评论(0) 推荐(0) 编辑
摘要:其中一个类型 protobuf语言的oneof字段类型相当于C++语言的联合数据类型 工程目录结构 proto文件 读写源文件 $ cat reader.cpp include include include "sample_oneof.pb.h" using namespace std; int 阅读全文
posted @ 2018-05-25 11:22 银魔术师 阅读(784) 评论(0) 推荐(0) 编辑
摘要:重复数据类型 protobuf语言的重复字段类型相当于C++的std::list数据类型 工程目录结构 proto文件 读写源文件 $ cat writer.cpp include include include include "TServer.pb.h" using namespace std; 阅读全文
posted @ 2018-05-25 11:21 银魔术师 阅读(348) 评论(0) 推荐(0) 编辑
摘要:任意类型 protobuf语言的任意字段类型相当于Boost库的boost::any类型数据,google.protobuf.Any是对protobuf语言的message进行封装,所以需要使用message来封装任意类型的数据,而不能像boost::any一样直接使用基础数据类型 工程目录结构 p 阅读全文
posted @ 2018-05-25 11:21 银魔术师 阅读(217) 评论(0) 推荐(0) 编辑
摘要:环境设置 项目地址 https://github.com/silvermagic/ProtoBufDev.git 操作系统 安装protobuf 工程目录结构(模板) 编译运行项目(模板) 规范 proto文件名使用小写字母加下划线的组合方式 阅读全文
posted @ 2018-05-25 11:20 银魔术师 阅读(765) 评论(0) 推荐(0) 编辑
摘要:基础数据类型 protobuf语言的基础字段类型相当于C++语言的基础类型 工程目录结构 proto文件 读写源文件 $ cat writer.cpp include include include "TScalar.pb.h" using namespace std; int main(int a 阅读全文
posted @ 2018-05-25 11:20 银魔术师 阅读(588) 评论(0) 推荐(0) 编辑
摘要:protocol buffers简介 protocol buffer是google的一个开源项目,它是用于结构化数据串行化的灵活、高效、自动的方法,例如XML,不过它比xml更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的 阅读全文
posted @ 2018-05-25 11:18 银魔术师 阅读(23073) 评论(1) 推荐(3) 编辑
摘要:这篇指南描述如何使用protocol buffer语言来组织你的protocol buffer数据,包括.proto文件的语法规则以及如何通过.proto文件来生成数据访问类代码。 Defining A Message Type(定义一个消息类型) 语法说明(syntax)前只能是空行或者注释 每个 阅读全文
posted @ 2018-05-25 11:11 银魔术师 阅读(5799) 评论(2) 推荐(0) 编辑
摘要:你将学到什么 在Python中调用C++代码时的传参问题 基础类型 Python的字符串是常量,所以C++函数参数中的 必须为 修改源文件(main.cpp) 导出实现如下(src/boost_wrapper.cpp) include include include include "boost_w 阅读全文
posted @ 2018-05-25 11:08 银魔术师 阅读(1622) 评论(0) 推荐(0) 编辑
摘要:你将学到什么 在C++中调用Python代码时的返回值问题 基础类型 修改Python脚本(build/zoo.py) 修改源文件(main.cpp) include include using namespace boost::python; using namespace boost::pyth 阅读全文
posted @ 2018-05-25 11:08 银魔术师 阅读(368) 评论(0) 推荐(0) 编辑
摘要:你将学到什么 如何在Python中调用C++代码 如何在C++中调用Python代码 在Python中调用C++代码 首先定义一个动物类(include/animal.h) 其实现代码如下(src/animal.cpp) 其导出实现如下(src/boost_wrapper.cpp) 最后编写CMak 阅读全文
posted @ 2018-05-25 11:07 银魔术师 阅读(763) 评论(0) 推荐(0) 编辑
摘要:你将学到什么 在C++中调用Python代码时的传参问题 基础类型 继续使用前面的项目,但是先修改下Python脚本(zoo.py),添加 和`Str`函数,分别针对整数、浮点数和字符串参数的测试 然后修改下 源文件 编译并测试 标准库 首先修改下Python脚本(zoo.py),添加 、`tDic 阅读全文
posted @ 2018-05-25 11:07 银魔术师 阅读(1018) 评论(0) 推荐(0) 编辑
摘要:导出C++类(纯虚函数和虚函数) 大致做法就是为 class 写一个 warp ,通过 get_override 方法检测虚函数是否被重载了,如果被重载了调用重载函数,否则调用自身实现,最后导出的时候直接导出 warp 类,但是类名使用 class ,析构函数不需要导出,因为它会被自动调用 纯虚函数 阅读全文
posted @ 2018-05-25 11:06 银魔术师 阅读(1737) 评论(0) 推荐(0) 编辑
摘要:开发环境搭建 下载源码 "boost_1_66_0.tar.gz" 生成编译工具 编译32位boost库 设置boost动态库加载路径 tee /etc/ld.so.conf.d/boost x86_64.conf 阅读全文
posted @ 2018-05-25 11:06 银魔术师 阅读(610) 评论(0) 推荐(0) 编辑
摘要:返回值 使用 return_by_value 有点像C++ 11的 auto 关键字,可以让模板自适应返回值类型(返回值类型必须是要拷贝到新的python对象的任意引用或值类型),可以使用 return_by_value 替换 copy_const_reference 、 copy_non_cons 阅读全文
posted @ 2018-05-25 11:05 银魔术师 阅读(1470) 评论(0) 推荐(0) 编辑
摘要:配置环境 导出C++函数 创建工程目录 编写C++函数实现 编写Boost.Python文件 为库编写CMakeLists.txt 编译库 运行python测试库文件 导出C++类 编写C++类实现 编写Boost.Python文件 运行python测试库文件 导出C++类(带构造函数) 编写C++ 阅读全文
posted @ 2018-05-25 11:04 银魔术师 阅读(1987) 评论(0) 推荐(0) 编辑
摘要:下载源码 "boost_1_66_0.7z" 生成编译工具 配置Python环境变量(使用VS2017自带的32位python3) 编译32位boost库 使用Virtual Studio 2017创建一个空项目,然后添加源文件 include include include void print( 阅读全文
posted @ 2018-05-25 11:02 银魔术师 阅读(1406) 评论(0) 推荐(0) 编辑
摘要:下载源码 "boost_1_66_0.tar.gz" 生成编译工具 编译64位boost库 设置boost动态库加载路径 tee /etc/ld.so.conf.d/boost x86_64.conf 阅读全文
posted @ 2018-05-25 10:46 银魔术师 阅读(372) 评论(0) 推荐(0) 编辑
摘要:创建 CEPH 文件系统 创建存储池 创建文件系统 查询MDS服务 挂载CephFS文件系统 创建挂载目录 方式一 故障处理 mount失败 阅读全文
posted @ 2018-05-25 10:41 银魔术师 阅读(630) 评论(0) 推荐(0) 编辑
摘要:NTP服务配置 NTP客户端配置 监控节点配置(方式一) 以下指令在anode节点执行 为CEPH集群生成UUID scp root@92.0.0.11:/etc/ceph/ceph.conf /etc/ceph/ scp root@92.0.0.11:/etc/ceph/ceph.client.a 阅读全文
posted @ 2018-05-25 10:40 银魔术师 阅读(2499) 评论(0) 推荐(0) 编辑
摘要:环境拓扑 | 主机 | 配置 | 地址 | 运行服务 | | | | | | | node | CPU:1 内存:2GB 磁盘:vda(20GB) | br mgmt:92.0.0.250 br ex:192.168.203.250/19 | ntp | | anode | CPU:1 内存:2GB 阅读全文
posted @ 2018-05-25 10:39 银魔术师 阅读(1318) 评论(0) 推荐(0) 编辑
摘要:动态创建目标 安装iscsi服务端 修改配置文件 启动服务 新增磁盘并创建LV 创建目标配置文件 动态更新目标 查询目标信息 安装客户端 发现目标 连接目标 断开连接 阅读全文
posted @ 2018-05-25 10:37 银魔术师 阅读(1703) 评论(0) 推荐(0) 编辑
摘要:服务端 配置说明 文件名 格式 格式说明 命令帮助 服务端配置 设置配置文件 安装服务 启动服务 客户端配置 安装服务 搜索NFS 挂载目录 取消挂载 阅读全文
posted @ 2018-05-25 10:37 银魔术师 阅读(2236) 评论(0) 推荐(0) 编辑
摘要:服务端管理命令 其中模式(mode)和操作(operation)对应关系如下: 用法示例如下: 常用命令示例如下: 客户端管理命令 常用参数说明如下: 常见用法示例: 使用LIO/TCM管理服务端 检测内核是否支持LIO/TCM 安装管理软件 启动并打印帮助 创建backstore(在此之前,我们要 阅读全文
posted @ 2018-05-25 10:36 银魔术师 阅读(977) 评论(0) 推荐(0) 编辑
摘要:服务端 服务器环境 已经安装过qemu img的32位ubuntu 服务端配置 安装iscsi服务端 编辑配置文件 启动服务 客户端 客户端环境 安装了libvirt的64位CentOS 客户端配置 安装iscsi客户端 寻找服务器发布的块设备 链接块设备 查看并挂载块设备 删除设备 总结 回到服务 阅读全文
posted @ 2018-05-25 10:35 银魔术师 阅读(524) 评论(0) 推荐(0) 编辑
摘要:V2版本的glance api采用Proxy的方式来构建对象(对象套对象),有点类似装饰器模式,包裹的顺序是 Auth(外层) Notifier Policy Quota Location Domain/DB(内层),对于镜像的内存数据结构表示,每层都有对应的ImageFactoryProxy类,对 阅读全文
posted @ 2018-05-25 10:31 银魔术师 阅读(442) 评论(0) 推荐(0) 编辑
摘要:Nova代码阅读 确定服务类型 RPC服务 WSGI服务 查询 目录下的对应的服务启动脚本,根据服务创建方式来判断服务类型, 表示WSGI服务, 表示RPC服务 确认服务的入口 RPC服务 找到 文件的 变量,这个变量列举了RPC服务的实现类 以其 为例,其服务实现位于 文件中,其对外提供的API接 阅读全文
posted @ 2018-05-25 10:29 银魔术师 阅读(498) 评论(0) 推荐(0) 编辑
摘要:LVM后端 环境拓扑 | 节点 | IP | 主机名 | | | | | | Controller/Network/Apollo | 92.0.0.11 | anode | | Compute/Storage | 92.0.0.12 | bnode | multinode配置如下 Storage节点 阅读全文
posted @ 2018-05-25 10:28 银魔术师 阅读(1689) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示