摘要:
Python允许C扩展模块的编写者定义可以从Python代码操作的新类型,就像内置类型str和list类型一样。所有扩展类型的代码都遵循一种模式,但在开始之前需要了解一些细节。 基础 CPython运行时看到所有Python变量的对象类型都是 (所有Python对象的基类)。PyObject结构本身 阅读全文
摘要:
用C或C ++扩展 如果你知道如何用C语言编程,那么为Python添加新的内置模块是很容易的。这种扩展模块可以做两件不能直接在Python中完成的事情:它们可以实现新的内置对象类型,以及调用C库函数和系统调用。 为了支持扩展,Python API(应用程序员接口)定义了一组函数、宏和变量,它们提供对 阅读全文
摘要:
软件安装 生成protoc 使用VS2012打开build目录下的protobuf.sln文件,在protoc上右键 生成,最终生成的protoc.exe位于build的Debug目录下 向PATH添加protoc.exe路径 剩余步骤参考 "go RPC官方教程" 原生net/rpc 服务端代码 阅读全文
摘要:
下载MSI "MSI地址" 配置环境变量 GOPATH: 用于存放Go语言Package的目录,这个目录不能在Go的安装目录中 GOBIN: Go二进制文件存放目录,写成%GOROOT%\bin就好 PATH: 需要将%GOBIN%加在PATH变量的最后,方便在命令行下运行Go 下载JetBrain 阅读全文
摘要:
假如我们要用C语言实现下面的python脚本bird.py 调用脚本main.py 执行效果如下 实现相同逻辑的原始C代码bird.c 下面我们要将原始C代码改造成可以被main.py的python模块: 包含头文件Python.h 添加C函数fly的Python调用版本bird_fly 添加向Py 阅读全文
摘要:
你将学到什么 使用GObject模拟实现接口 使用接口 首先按照学习笔记(一)定义一个普通的GObject类 使用 和`G_IMPLEMENT_INTERFACE G_DEFINE_TYPE`来实现类定义 实现接口初始化函数 ,接口内声明的每个虚函数指针都要被赋予实现 扩展接口 如果一个接口的实现依 阅读全文
摘要:
定义一个静态类型 / G_DEFINE_TYPE( 比`G_DEFINE_TYPE`就是多了一个自定义代码参数_C_): @TN: 新类型的名字,单词首字母大写,例如:GtkGadget。 @t_n: 新类型的名字,单词全部小写并且用'_'符号分隔,例如gtk_gadget: separated b 阅读全文
摘要:
你将学到什么 如何实现Object的方法 Object的方法 Object的public方法 在头文件声明一个函数,然后在源文件中实现函数即可 Object的public虚函数 GObject通过函数指针的方式来模拟C++语言的虚函数实现,具体步骤如下: 在类结构定义里面设置一个函数指针,然后定义一 阅读全文
摘要:
你将学到什么 如何实现Object的构造函数和析构函数 如何在条件检测不允许的情况下终止对象创建 Object的构造函数 对象的构造函数是不允许失败,如果你需要一个允许失败的GObject构造函数,使用GIO库提供的 和`GAsynclnitable`接口(文章最后会有个例子说明) 如果你需要指定构 阅读全文
摘要:
你将学到什么 如何使用GObject实现一个新类 类头文件 声明一个类型的方法选择取决于类型是可被继承的还是不可被继承的。 不可被继承的类型(Final类型)使用 宏来定义,还需要在源文件(不是在头文件)中定义一个结构来保存类实例数据。 可被继承的类型使用 宏来定义 类源文件 源文件第一步就是包含上 阅读全文
摘要:
GObject GObject库是Glib库的动态类型系统实现,它实现了: 基于引用计数的内存管理 实例的构造和析构 通用的set/get的属性获取方法 简单易用的信号机制 对象实例化 所述 的功能家族可用于实例化从GObject的基类型继承的任何的GType。所有这些函数都确保类和实例结构已经被G 阅读全文
摘要:
介绍 GLib和GTK+应用的主事件循环管理着所有事件源。这些事件的来源有很多种比如文件描述符(文件、管道或套接字)或超时。新类型的事件源可以通过 g_source_attach() 函数添加。 为了让多组独立事件源能够在不同的线程中被处理,每个事件源都会关联一个 GMainContext 。一个线 阅读全文
摘要:
文章来自 "gRPC 官方文档中文版" 本教程提供了C++程序员如何使用gRPC的指南。 通过学习教程中例子,你可以学会如何: 在一个 .proto 文件内定义服务. 用 protocol buffer 编译器生成服务器和客户端代码. 使用 gRPC 的 C++ API 为你的服务实现一个简单的客户 阅读全文
摘要:
文章来自 "gRPC 官方文档中文版" 异步基础: C++ 本教程介绍如何使用 C++ 的 gRPC 异步/非阻塞 API 去实现简单的服务器和客户端。假设你已经熟悉实现同步 gRPC 代码,如 "gRPC 基础: C++" 所描述的。本教程中的例子基本来自我们在 "overview" 中使用的 " 阅读全文
摘要:
文章来自 "gRPC 官方文档中文版" 认证 gRPC 被设计成可以利用插件的形式支持多种授权机制。本文档对多种支持的授权机制提供了一个概览,并且用例子来论述对应API,最后就其扩展性作了讨论。 马上将会推出更多文档和例子。 支持的授权机制 SSL/TLS gRP 集成 SSL/TLS 并对服务端授 阅读全文
摘要:
文章来自 "gRPC 官方文档中文版" HTTP2 协议上的 gRPC 本文档作为 gRPC 在 HTTP2 草案17框架上的实现的详细描述,假设你已经熟悉 HTTP2 的规范。产品规则采用的是 "ABNF 语法" 大纲 以下是 gRPC 请求和应答消息流中一般的消息顺序: 请求 → 请求报头 有定 阅读全文
摘要:
文章来自 "gRPC 官方文档中文版" 概览 开始 欢迎进入 gRPC 的开发文档,gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。 本文档通过快速概述和一个简单的 Hello World 例子来向您介绍 gRPC 。你可以在本站发现更详细的教程和 阅读全文
摘要:
文章来自 "gRPC 官方文档中文版" gRPC 概念 本文档通过对于 gRPC 的架构和 RPC 生命周期的概览来介绍 gRPC 的主要概念。本文是在假设你已经读过文档部分的前提下展开的。针对具体语言细节请查看对应语言的快速开始、教程和参考文档(很快就会有完整的文档)。 概览 服务定义 正如其他 阅读全文
摘要:
你将学到什么 如何使用剪切板 剪切板简介 GtkClipboard对象代表不同进程或同一进程不同构件的剪切板数据。标识每个剪切板的名字被编码成 (可以通过gdk_atom_intern()和gdk_atom_name()获取编码前的名字)。默认的剪切板对应名为 的`GdkAtom XServer P 阅读全文
摘要:
你将学到什么 如何实现弹出式菜单 菜单简介 菜单(GtkMenu)由菜单项(GtkMenuItem)构成,菜单项可以是任意构件比如按钮、菜单(子菜单) 菜单项的管理 菜单外壳(GtkMenuShell)是菜单(GtkMenu)和菜单栏(GtkMenuBar)的抽象基类,它提供了管理菜单列表中的菜单项 阅读全文