自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(138)
  • 收藏
  • 关注

转载 灯塔AOI简易实现

首先我们来讨论下游戏开发中的几个坐标系,为了方便解释,我截取了灯塔AOI DEMO当NPC数目为0时候的样子(代码地址觉得有帮助的童鞋记得给我代码点个星^_^)先对这张图简单说明下:蓝色的坐标轴表示是灯塔AOI坐标系,绿色的坐标轴表示的是游戏坐标系,向左为X轴正方向,向上为Y轴正方向(这个坐标是我自己后面画上去的)深蓝色的点表示灯塔AOI坐标,左下的表示(0,0),右上表示(1...

2018-07-26 18:00:00 1145

转载 天堂通信加密解析

天堂加解密代码(Python版)# -*- coding: utf-8 -*-from binascii import hexlify, unhexlifydef long_to_bytes(val, endianness='big'): width = val.bit_length() width += 8 - ((width % 8) or 8) fm...

2018-06-14 12:07:00 436

转载 (二)定义扩展类型(翻译)

Python允许C扩展模块的编写者定义可以从Python代码操作的新类型,就像内置类型str和list类型一样。所有扩展类型的代码都遵循一种模式,但在开始之前需要了解一些细节。基础CPython运行时看到所有Python变量的对象类型都是PyObject*(所有Python对象的基类)。PyObject结构本身只包含该对象的引用计数和一个指向该对象的"类型对象"。类型对象决定了解释器...

2018-05-25 17:50:00 343

转载 (一)用C或C ++扩展(翻译)

用C或C ++扩展如果你知道如何用C语言编程,那么为Python添加新的内置模块是很容易的。这种扩展模块可以做两件不能直接在Python中完成的事情:它们可以实现新的内置对象类型,以及调用C库函数和系统调用。为了支持扩展,Python API(应用程序员接口)定义了一组函数、宏和变量,它们提供对Python运行时系统大部分方面的访问。Python API通过包含头文件"Python....

2018-05-25 17:49:00 260

转载 Go学习笔记(一)

软件安装# go get -u github.com/golang/protobuf/{proto,protoc-gen-go}# go get -u google.golang.org/grpc生成protoc# git clone https://github.com/google/protobuf.git# git checkout v3.4.1### 下面的命令在 D...

2018-05-25 12:17:00 88

转载 使用C/C++代码编写Python模块

假如我们要用C语言实现下面的python脚本bird.pyimport osdef fly(name): print(name + " is flying.\n")调用脚本main.pyimport birdbird.fly("fwd")执行效果如下> python main.pyfwd is flying.实现相同逻辑的原始C代码bird.c#in...

2018-05-25 12:14:00 179

转载 Glib学习笔记(四)

你将学到什么使用GObject模拟实现接口使用接口首先按照学习笔记(一)定义一个普通的GObject类使用G_DEFINE_TYPE_WITH_CODE和G_IMPLEMENT_INTERFACE替代G_DEFINE_TYPE来实现类定义static void viewer_file_editable_interface_init (ViewerEditableInterf...

2018-05-25 12:13:00 165

转载 Glib之GObject宏介绍

G_DEFINE_TYPE定义一个静态类型/** * G_DEFINE_TYPE(`G_DEFINE_TYPE_WITH_CODE`比`G_DEFINE_TYPE`就是多了一个自定义代码参数_C_): * @TN: 新类型的名字,单词首字母大写,例如:GtkGadget。 * @t_n: 新类型的名字,单词全部小写并且用'_'符号分隔,例如gtk_gadget: * sepa...

2018-05-25 12:13:00 189

转载 Glib学习笔记(二)

你将学到什么如何实现Object的构造函数和析构函数如何在条件检测不允许的情况下终止对象创建Object的构造函数对象的构造函数是不允许失败,如果你需要一个允许失败的GObject构造函数,使用GIO库提供的GInitable和GAsynclnitable接口(文章最后会有个例子说明)G_DEFINE_TYPE_WITH_PRIVATE (ViewerFile, viewe...

2018-05-25 12:12:00 344

转载 Glib学习笔记(三)

你将学到什么如何实现Object的方法Object的方法Object的public方法在头文件声明一个函数,然后在源文件中实现函数即可/* declaration in the header. */void viewer_file_open (ViewerFile *self, GError **error);/* ...

2018-05-25 12:12:00 116

转载 Glib之GObject简介(翻译)

GObjectGObject库是Glib库的动态类型系统实现,它实现了:基于引用计数的内存管理实例的构造和析构通用的set/get的属性获取方法简单易用的信号机制对象实例化所述g_object_new的功能家族可用于实例化从GObject的基类型继承的任何的GType。所有这些函数都确保类和实例结构已经被GLib的类型系统正确地初始化,然后在一个或另一个地方调用用于的构...

2018-05-25 12:11:00 807

转载 Glib学习笔记(一)

你将学到什么如何使用GObject实现一个新类类头文件声明一个类型的方法选择取决于类型是可被继承的还是不可被继承的。不可被继承的类型(Final类型)使用G_DECLARE_FINAL_TYPE宏来定义,还需要在源文件(不是在头文件)中定义一个结构来保存类实例数据。/* * Copyright/Licensing information. *//* inclusio...

2018-05-25 12:11:00 244

转载 Glib之主事件循环

介绍GLib和GTK+应用的主事件循环管理着所有事件源。这些事件的来源有很多种比如文件描述符(文件、管道或套接字)或超时。新类型的事件源可以通过g_source_attach()函数添加。为了让多组独立事件源能够在不同的线程中被处理,每个事件源都会关联一个GMainContext。一个线程只能运行一个GMainContext,但是在其他线程中能够对事件源进行添加和删除操作。每个事件...

2018-05-25 12:10:00 432

转载 gRPC官方文档(gRPC基础:C++)

文章来自gRPC 官方文档中文版本教程提供了C++程序员如何使用gRPC的指南。通过学习教程中例子,你可以学会如何:在一个 .proto 文件内定义服务.用 protocol buffer 编译器生成服务器和客户端代码.使用 gRPC 的 C++ API 为你的服务实现一个简单的客户端和服务器.假设你已经阅读了概览并且熟悉protocol buffers. 注意,教程中的...

2018-05-25 12:10:00 369

转载 gRPC官方文档(异步基础: C++)

文章来自gRPC 官方文档中文版异步基础: C++本教程介绍如何使用 C++ 的 gRPC 异步/非阻塞 API 去实现简单的服务器和客户端。假设你已经熟悉实现同步 gRPC 代码,如gRPC 基础: C++所描述的。本教程中的例子基本来自我们在overview中使用的Greeter 例子。你可以在 grpc/examples/cpp/helloworld找到安装指南。概览gRP...

2018-05-25 12:09:00 583

转载 gRPC官方文档(安全认证)

文章来自gRPC 官方文档中文版认证gRPC 被设计成可以利用插件的形式支持多种授权机制。本文档对多种支持的授权机制提供了一个概览,并且用例子来论述对应API,最后就其扩展性作了讨论。 马上将会推出更多文档和例子。支持的授权机制SSL/TLSgRP 集成 SSL/TLS 并对服务端授权所使用的 SSL/TLS 进行了改良,对客户端和服务端交换的所有数据进行了加密。对客户端来讲提...

2018-05-25 12:08:00 2295

转载 gRPC官方文档(通讯协议)

文章来自gRPC 官方文档中文版HTTP2 协议上的 gRPC本文档作为 gRPC 在 HTTP2 草案17框架上的实现的详细描述,假设你已经熟悉 HTTP2 的规范。产品规则采用的是ABNF 语法大纲以下是 gRPC 请求和应答消息流中一般的消息顺序:请求 → 请求报头 *有定界符的消息 EOS应答 → 应答报头 *有定界符的消息 EOS应答 → (应答报头 *有定界符...

2018-05-25 12:08:00 405

转载 gRPC官方文档(概览)

文章来自gRPC 官方文档中文版概览开始欢迎进入 gRPC 的开发文档,gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。 本文档通过快速概述和一个简单的 Hello World 例子来向您介绍 gRPC 。你可以在本站发现更详细的教程和参考文档——文档将会越来越丰富。快速开始为了直观地着手运行 gRPC,可以从你所选择的语言对...

2018-05-25 12:07:00 301

转载 gRPC官方文档(概念)

文章来自gRPC 官方文档中文版gRPC 概念本文档通过对于 gRPC 的架构和 RPC 生命周期的概览来介绍 gRPC 的主要概念。本文是在假设你已经读过文档部分的前提下展开的。针对具体语言细节请查看对应语言的快速开始、教程和参考文档(很快就会有完整的文档)。概览服务定义正如其他 RPC 系统,gRPC 基于如下思想:定义一个服务, 指定其可以被远程调用的方法及其参数和返回类...

2018-05-25 12:07:00 323

转载 GTK+学习笔记(二)

你将学到什么如何使用剪切板剪切板简介GtkClipboard对象代表不同进程或同一进程不同构件的剪切板数据。标识每个剪切板的名字被编码成GdkAtom(可以通过gdk_atom_intern()和gdk_atom_name()获取编码前的名字)。默认的剪切板对应名为CLIPBOARD的GdkAtom;另一个在XServer系统中经常使用的剪切板名为PRIMARY。为了能让剪切板能...

2018-05-25 11:26:00 277

转载 GTK+学习笔记(一)

你将学到什么如何实现弹出式菜单菜单简介菜单(GtkMenu)由菜单项(GtkMenuItem)构成,菜单项可以是任意构件比如按钮、菜单(子菜单)菜单项的管理菜单外壳(GtkMenuShell)是菜单(GtkMenu)和菜单栏(GtkMenuBar)的抽象基类,它提供了管理菜单列表中的菜单项(GtkMenuItem)的方法,菜单项可以被选着或者激活,同样还可以关联一个子菜单,用来...

2018-05-25 11:25:00 209

转载 GTK+介绍

GTK+介绍官方文档GTK+ 学习### 在Ubuntu系统下$ sudo apt-get intall gtk-3-examplesGTK+ 依赖的函数库Glib提供了各种各样的语言特性,譬如说:各种数据类型、字符串函数、错误通知、消息队列和线程的通用的函数库。Pango用来实现国际化和本地化功能的函数库。ATK一种平易近人的工具函数包,提供了快捷键服...

2018-05-25 11:25:00 191

转载 JSONCPP介绍

描述JSON串如何使用jsoncpp提供的数据结构来存储如下JSON串?// Configuration options{ // Default encoding for text "encoding" : "UTF-8", // Plug-ins loaded at start-up "plug-ins" : [ "python"...

2018-05-25 11:24:00 261

转载 JSONCPP学习笔记

基本使用使用jsoncpp库解析、修改、打印JSON串源文件$ cat main.cpp#include <iostream>#include "json/json.h"using namespace std;const char *style = "{ \ \"encoding\" : \"UTF-8\", \ \"plug-ins\" :...

2018-05-25 11:24:00 84

转载 ProtoBuf练习(六)

JSON类型工程目录结构$ ls proto/proto文件$ cat proto/style.protosyntax = "proto3";import "google/protobuf/timestamp.proto";message TIndent{ uint32 length = 1; bool use_space = 2;}messag...

2018-05-25 11:23:00 505

转载 JSONCPP开发环境搭建

环境设置项目地址https://github.com/open-source-parsers/jsoncpp.git操作系统64位 Fedora 24安装jsoncpp$ git clone https://github.com/open-source-parsers/jsoncpp.git$ cd jsoncpp/$ mkdir -p build/debug$ cd ...

2018-05-25 11:23:00 271

转载 ProtoBuf练习(四)

其中一个类型protobuf语言的oneof字段类型相当于C++语言的联合数据类型工程目录结构$ ls proto/sample_oneof.protoproto文件$ cat proto/sample_oneof.protosyntax = "proto3";message sample_oneof{ oneof oneof_name { ...

2018-05-25 11:22:00 85

转载 ProtoBuf练习(五)

表类型protobuf语言的maps字段类型相当于C++语言的std::map类型工程目录结构$ ls proto/sample_maps.protoproto文件$ cat proto/sample_maps.protosyntax = "proto3";message home{ string addr = 1;}message sample_map...

2018-05-25 11:22:00 74

转载 ProtoBuf练习(二)

重复数据类型protobuf语言的重复字段类型相当于C++的std::list数据类型工程目录结构$ ls proto/TServer.proto TSession.protoproto文件$ cat TSession.protosyntax = "proto3";//枚举类型可以放外面,也可以放message里面enum Status{ INVALID ...

2018-05-25 11:21:00 105

转载 ProtoBuf练习(三)

任意类型protobuf语言的任意字段类型相当于Boost库的boost::any类型数据,google.protobuf.Any是对protobuf语言的message进行封装,所以需要使用message来封装任意类型的数据,而不能像boost::any一样直接使用基础数据类型工程目录结构$ ls proto/ErrorStatus.protoproto文件$ cat pr...

2018-05-25 11:21:00 95

转载 ProtoBuf练习

环境设置项目地址https://github.com/silvermagic/ProtoBufDev.git操作系统64位 Fedora 24安装protobuf$ git clone https://github.com/google/protobuf.git$ cd protobuf/$ ./autogen.sh$ ./configure$ make -j8$ ...

2018-05-25 11:20:00 104

转载 ProtoBuf练习(一)

基础数据类型protobuf语言的基础字段类型相当于C++语言的基础类型工程目录结构$ ls proto/TFixed.proto TInt.proto TScalar.proto TStr.protoproto文件$ cat TScalar.protosyntax = "proto3";//导入其他messageimport "TInt.proto";imp...

2018-05-25 11:20:00 76

转载 Protocol Buffers官方文档(开发指南)

本文是对官方文档的翻译,然后截取了一篇非常优秀的文章片段来帮助理解,本人英文水平有限,基本都是直译,如果有不理解的地方请参考英文官方文档,参考的文章链接在文章末尾protocol buffers简介protocol buffer是google的一个开源项目,它是用于结构化数据串行化的灵活、高效、自动的方法,例如XML,不过它比xml更小、更快、也更简单。你可以定义自己的数据结构,然后...

2018-05-25 11:18:00 216

转载 Protocol Buffers官方文档(proto3语言指南)

本文是对官方文档的翻译,大部分内容都是引用其他一些作者的优质翻译使文章内容更加通俗易懂(自己是直译,读起来有点绕口难理解,本人英文水平有限),参考的文章链接在文章末尾这篇指南描述如何使用protocol buffer语言来组织你的protocol buffer数据,包括.proto文件的语法规则以及如何通过.proto文件来生成数据访问类代码。Defining A Message T...

2018-05-25 11:11:00 973

转载 Boost Python学习笔记(五)

你将学到什么在C++中调用Python代码时的返回值问题基础类型修改Python脚本(build/zoo.py)def rint(): return 2def rstr(): return "fwd"if __name__ == '__main__': pass修改源文件(main.cpp)#include <iostream>...

2018-05-25 11:08:00 94

转载 Boost Python学习笔记(四)

你将学到什么在Python中调用C++代码时的传参问题基础类型Python的字符串是常量,所以C++函数参数中的std::string &必须为const修改源文件(main.cpp)#include <iostream>#include <boost/python.hpp>#include "boost_wrapper.h"us...

2018-05-25 11:08:00 128

转载 Boost Python学习笔记(三)

你将学到什么在C++中调用Python代码时的传参问题基础类型继续使用前面的项目,但是先修改下Python脚本(zoo.py),添加Add和Str函数,分别针对整数、浮点数和字符串参数的测试def Add(x, y): print(x + y)def Str(s): print("Output: " + s)if __name__ == '__main...

2018-05-25 11:07:00 80

转载 Boost Python学习笔记(二)

你将学到什么如何在Python中调用C++代码如何在C++中调用Python代码在Python中调用C++代码首先定义一个动物类(include/animal.h)#pragma once#include <string>class Animal{public: Animal(std::string name); virtual ~Anima...

2018-05-25 11:07:00 138

转载 Boost Python官方样例(三)

导出C++类(纯虚函数和虚函数)大致做法就是为class写一个warp,通过get_override方法检测虚函数是否被重载了,如果被重载了调用重载函数,否则调用自身实现,最后导出的时候直接导出warp类,但是类名使用class,析构函数不需要导出,因为它会被自动调用纯虚函数编写C++函数实现$ vim virt.h#include <iostream>#incl...

2018-05-25 11:06:00 109

转载 Boost Python学习笔记(一)

开发环境搭建下载源码boost_1_66_0.tar.gz生成编译工具# tar axf boost_1_66_0.tar.gz# cd boost_1_66_0# yum install gcc gcc-c++ python-devel cmake -y# ./bootstrap.sh编译32位boost库# ./b2 install --with-system --...

2018-05-25 11:06:00 82

空空如也

空空如也

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

TA关注的人

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