python
sandyznb
这个作者很懒,什么都没留下…
展开
-
Apple 内购IAP
1:客户端传tradeid(商品ID)来服务器下单,下单成功之后服务器告诉客户端下单成功了,2:客户端拉起支付 支付成功之后 会收到票据,客户端把票据发给服务器,服务器再去苹果校验客户端是用的unity的插件收到的格式如下这个Payload就是已经base64之后的结果,这个发给服务器 服务器去校验就好了transid 是com.kx880.devilhunter.101XXXXX 根据返回结果中status判断是否成功..................原创 2022-06-16 17:28:29 · 1170 阅读 · 1 评论 -
twisted中使用agent来模拟http请求
直接上代码from twisted.internet import reactorfrom twisted.web.client import Agent, readBodydef cbRequest(response): print(response) print(response.__dir__()) print(response.version) print(response.code) print(response.phrase) d =原创 2022-03-06 17:34:19 · 1678 阅读 · 0 评论 -
twisted 实现UDP服务
由于没有连接,所以对于每个udp套接字我们只能使用一个对象,一个协议。然后使用已经定义的接口twisted.internet.interfaces.IReactorUDPclass IReactorUDP(Interface): """ UDP socket methods. """...原创 2022-03-04 21:52:11 · 2188 阅读 · 0 评论 -
twisted中的延迟(deferred)(二)
单个回调 我们在上一节已经说过了twisted中的延迟(deferred)(一)_zhangdell的专栏-CSDN博客1:deffered 延迟链from twisted.internet import deferdef myfun1(s): print("myfun1 s=",s) return "myfun1"def myfun2(s): print("myfun2 s=",s) return "myfun2" d = defer.De原创 2022-03-01 19:07:09 · 227 阅读 · 0 评论 -
twisted中的延迟(deferred)(一)
twisted官方文档https://twistedmatrix.com/documents/current/index.htmldeferred 详细说明Deferred Reference — Twisted 21.2.0 documentation关于deferred的通俗理解1:deferred说“我是一个信号,只是通知你不管你刚才要我做的什么,结果还没有出来”2:你可以让Deferred在结果出来后执行你的回调函数Deferred关键之处:1:Deferreds将会原创 2022-03-01 14:36:03 · 295 阅读 · 0 评论 -
游戏中奖励配置问题
游戏中各种奖励比如金币 钻石 道具 体力等等都是策划配置在配置文件中的,程序不用关心具体配置的是什么内容,只要给策划指定好正确的配置格式就好,程序要做到的就是 奖励字符串的合并、翻N倍等等,这里边往往涉及到字符串的合并,现给出一种解决方案。class Item(object): def __init__(self,strs): its = strs.split("|") self.itemid = "|".join(its[:-1]...原创 2022-02-25 18:03:00 · 2921 阅读 · 0 评论 -
tkinter+twisted
from Tkinter import *from twisted.internet import reactor, tksupportfrom twisted.internet.protocol import Protocol, Factoryclass MultiEcho(Protocol): def __init__(self, factory): self.factory = factory def connectionMade(self,*args):.原创 2022-02-19 11:49:10 · 95 阅读 · 0 评论 -
Base64是一个好东西
开发过程中,碰到了一间事儿。服务器把字符串的内容zlib之后发给客户端,客户端通过zlib解压缩始终不正确,调试是一间很蛋疼的事情,比对二进制 眼睛都快瞅瞎了,有了Base64 就方便了很多。一:Base64原理:Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。从严格意义上来说,BASE64编码算法并不算是真正的加密算法,它只是将源数据转码..原创 2022-02-11 17:32:51 · 240 阅读 · 0 评论 -
python 技能系统
游戏里边肯定少不了技能系统,技能系统做的好后边会省下很多事情,不然会被策划折磨死。。。sikll_file = { '降龙十八掌': ['DamageEffect(100)','DizzinessEffect(3)', 'LowerDeffence(30,3)'], '六脉神剑': ['DamageEffect(90)', 'Knockback(3)', 'LowerSpeed(30, 2)'], '北冥神功': ['Da.原创 2022-02-10 18:28:48 · 2445 阅读 · 0 评论 -
python中exec使用
动态的执行代码,可以执行储存在字符串或文件中的Python语句相比eval,exec可以执行更复杂的python代码,eval只是执行一个表达式原型:exec(expression, globals=None, locals=None)expression:必选参数,表示需要被指定的Python代码。它必须是字符串或code对象。如果expression是一个字符串,该字符串会先被解析为一组Python语句,然后在执行(除非发生语法错误)。如果expression是一个code对象,那么它只是被原创 2022-02-10 17:26:14 · 3871 阅读 · 0 评论 -
python中eval使用
一:使用环境前不久在写行为树框架的时候,有一个需求。比如某一个节点是判断node的各个数字的大小,根据判断结果做出决策,配置文件如下。需要获取当前执行节点的hp和attack的值 然后 格式化进args的value中,比如说hp是100,attack是100,那么代码里边就是要判断 100 > 50 and 100 < 50的值了,这个时候就要用到Python的eval了。二:eval使用说明eval是Python的内置函数,作用就是返回传入字符串的表达式的结果。原创 2022-02-10 15:47:54 · 4424 阅读 · 0 评论 -
facebook登陆授权 服务器接入记录
官方文档:http://developers.facebook.com/docs/reference/api/1:client 接入facebook的sdk后,登陆时app拉起facebook的授权页面,等用户授权登陆后,app通过sdk能拿到当前用户的facebook id和token,app把这个id和token发送给服务器,服务器再验证。这个过程跟微信登陆很类似,微信是拉起微信客户端获取wxcode2:服务器收到client app 发来的id和token,然后去facebook的后台验证,a原创 2022-01-17 18:35:14 · 1896 阅读 · 1 评论 -
ubuntu 安装 pybluez
python3 -m pip install pybluez把libbluetooth-dev 安装上就好了sudo apt-get install libbluetooth-dev再接着用pip安装就好了import库没有报错,表示安装成功原创 2021-12-24 14:31:22 · 971 阅读 · 0 评论 -
python 魔法函数(五) __call__
为了将类的实例对象变为可调用对象class People(object): def __init__(self): pass def __call__(self,name): print("People::__call__()",name)p = People()print(callable(p))p("mandy")p.__call__("mandy")p("mandy") 其实跟p.__call__("mandy")是一抹一样的原创 2021-12-21 17:44:27 · 199 阅读 · 0 评论 -
python 魔法函数(四) __iter__和__next__
迭代相关的魔法函数python中实现了__iter__方法的对象是可迭代的,实现了next()方法的对象是迭代器实际上要想让一个迭代器工作,至少要实现__iter__方法和__next__方法,很多时候使用迭代器完成的工作使用列表也可以完成,但是如果有很多值列表就会占用太多的内存,而且使用迭代器也让我们的程序更加通用、优雅、pythonic。class People(object): def __init__(self,data): self.data = data原创 2021-12-21 17:17:48 · 571 阅读 · 0 评论 -
python 魔法函数(三) __len__、__getitem__、__setitem__、__delitem__和__contains__
集合、序列相关的魔法函数class People(object): def __init__(self): self.change={'python':'This is python', 'php':'PHP is a good language'} def __len__(self): print("__len__") return len(self.change) def.原创 2021-12-21 16:45:11 · 335 阅读 · 0 评论 -
python 魔法函数(二) __str__()和__repr__()
函数str() 会调用__str__(),用于将值转化为适于人阅读的形式函数repr() 会调用__repr__(),用于将值转化为解释器读取的形式所以print展示的都是str的格式__repr__() 会返回和调用者有关的 “类名+object at+内存地址”信息test.pyclass People(object): def __new__(cls,*args,**kwargs): print("People::__new__()") .原创 2021-12-21 16:22:28 · 356 阅读 · 0 评论 -
python 魔法函数
列举了常用了的魔法函数原创 2021-12-21 15:39:52 · 284 阅读 · 0 评论 -
python 魔法函数(一) __new__()和__init__()
__new__() 是一种负责创建类实例的静态方法,它无需使用 staticmethod 装饰器修饰,且该方法会优先 __init__() 初始化方法被调用。直接上例子class Test(object): def __new__(cls,*args,**kwargs): print("Test::__new__()") return super().__new__(cls) def __init__(self): p..原创 2021-12-21 15:37:31 · 147 阅读 · 0 评论 -
python 中propery属性
上一篇文章 介绍了classmethodstaticmethod,这一次再介绍一下 property,他们都是属于Python自带的装饰器class Foo(object): def __init__(self): self._size = 100 @property def size(self,s): return self._size,200obj = Foo()ret = obj.sizeprint(ret)定义的时候...原创 2021-12-20 18:58:12 · 116 阅读 · 0 评论 -
python 中类对象、实例对象、类属性、实例属性、类方法、实例方法、静态方法
啥子都不说,直接上例子来分析,Python环境是python3class Province(object): #类属性 country = "china" def __init__(self,name): #实例属性 self.name = name def test(self): '''定义一个实例方法,至少有一个self参数''' self.cfunc("chinax") self..原创 2021-12-20 18:30:07 · 1824 阅读 · 1 评论 -
python中的新式类 和 经典类
class A(object): def foo(self): print("A::foo()")class B(A): passclass C(A): def foo(self): print("C::foo()")class D(B,C): passd =原创 2021-12-19 16:14:25 · 692 阅读 · 0 评论 -
python中的MRO
一:什么是MRO所谓的MRO,就是方法解析顺序(Method Resolution Order)。在调用方法时,会对当前类以及所有的基类进行一个搜索,确定要调用的方法具体在哪。不管用哪种方式去确定MRO列表,必须满足 本地优先级和单调性。本地优先级:指声明时父类的顺序,比如C(A,B),如果访问C类对象属性时,应该根据声明顺序,优先查找A类,然后再查找B类单调性:如果在C的解析顺序中,A排在B的前面,那么在C的所有子类里,也必须满足这个顺序二:常见的mro算法1:mro=深度优先遍历的(原创 2021-12-20 16:21:38 · 6579 阅读 · 4 评论 -
网络模型 reactor
raector.py#coding:utf-8'''create on 2017-04-20@author: sandy'''import event_demultiplexerclass Reactor(object): def __init__(self): self.runing = True self.demultiplexer = event_demultiplexer.EpollDemultiplexer() def r原创 2021-11-23 20:29:49 · 197 阅读 · 0 评论 -
txjson_rpc库 python3下报错问题
txjson_rpc 原始代码修改归根结底还是python3 默认是发送byte 而python2是发送的是str原创 2021-11-18 12:50:06 · 147 阅读 · 0 评论 -
利用swig到处c++接口 给py
1:写c++测试代码example.h#include <iostream>using namespace std;class example { private: int num; public: example(); ~example(); void say_hello(void); void change(int din); int get_num();};.原创 2021-11-14 10:59:06 · 1537 阅读 · 0 评论 -
python pyuv
import signalimport pyuvdef on_read(client, data, error): print(data,error) if data is None: client.close() clients.remove(client) return client.write(data)def on_connection(server, error): client = pyuv.TCP(se.原创 2021-08-20 14:43:06 · 638 阅读 · 0 评论 -
python optparse
main.pyimport optparseparser = optparse.OptionParser()parser.add_option('-p', '--path', help='a path to watch', default='.')parser.add_option('-o', '--option', help='a option to start', default='console')opts, args = parser.parse_args()print(opts,.原创 2021-08-20 14:40:51 · 49 阅读 · 0 评论 -
pyinstaller 打包python代码成exe形式
一:安装pyinstallerpip install pyinstaller二:pyinstaller附加参数说明-F,–onefile 产生一个文件用于部署(参见XXXXX). -D,–onedir 产生一个目录用于部署(默认) -K,–tk 在部署时包含TCL/TK -a,–ascii 不包含编码.在支持Unicode的python版本上默认包含所有的编码. -d,–debug 产生debug版本的可执行文件 -w,–windowed,–noconsole 使用Wi...原创 2021-08-07 18:12:48 · 114 阅读 · 1 评论 -
安装txnats记录
下载地址:https://pypi.org/project/txnats/#description由于源码适用的pip版本比较老,自己电脑上安装的pip是20+的版本,所以需要更改setup.py更改前:更改后:然后正常安装就行!!!!原创 2021-07-27 19:19:21 · 57 阅读 · 0 评论 -
python随机数
每种语言 都有随机数对应的apiseed( ) 用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed( )值,则每次生成的随即数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。import randomrandom.seed(1)print(random.randint(1,100))print(random.randint(2,99))print(random.randint(3,98))print(random.randin原创 2021-07-19 20:04:50 · 466 阅读 · 7 评论 -
A*寻路算法
1:公式 F = G + H2:实现步骤a:检查起始点、终点是否合法(是否在地图范围内)b:获取起始点、终点原创 2021-06-15 21:41:45 · 74 阅读 · 0 评论 -
python 守护进程
#!/usr/bin/env pythonimport sys, os, time, atexit, platform, traceback, logging,signalclass Daemon: """ A generic daemon class. Usage: subclass the Daemon class and override the run() method """ def __init__(self, pidfile, std.原创 2020-12-11 18:20:31 · 184 阅读 · 0 评论 -
一致性hash
#coding:utf-8'''create on 2017-07-13@author:sandy'''import crc16pureclass Node(object): def __init__(self,ip,name,virtual): self.ip = ip self.name = name self.virtual = virtual def getIp(self): return sel..原创 2020-11-24 14:34:39 · 74 阅读 · 0 评论 -
一个分布式ID的生成器-雪花算法
#coding:utf-8'''create on 2020-11-23@author:sandy'''import timeclass SnowFlake(object): def __init__(self,datacenterId,machineId): self.sequence = 0 self.laststmp = -1 self.sequence_bit = 12 self.mac..原创 2020-11-23 17:35:41 · 88 阅读 · 0 评论 -
python中的多线程、多进程
https://www.cnblogs.com/zingp/p/5878330.html阅读目录1 线程与进程 2 Python GIL(Global Interpreter L...原创 2020-01-04 17:17:15 · 128 阅读 · 0 评论 -
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
https://www.jb51.net/article/85267.htmMonkey Patch猴子补丁方式是指在不修改程序原本代码的前提下,通过添加类或模块等方式在程序运行过程中加入代码,下面就来进一步详解Python编程中对Monkey Patch猴子补丁开发方式的运用Monkey patch就是在运行时对已有的代码进行修改,达到hot patch的目的。Eventlet中大量使用...转载 2018-09-30 14:19:27 · 854 阅读 · 0 评论