关于MMO游戏服务器的思考

实现一个MMO游戏框架需要考虑的问题 游戏服务器与web服务器的不同之处 游戏服务器说到底,最重要的几点就是保持状态、低延迟、交互。这几点就让游戏服务器和普通的服务器(比如电商后端)区分开来了 游戏服务器特有的 保持连接:游戏一般来说需要保持一个客户端到服务端的连接,可以对客户端的玩家的行为(移动,攻击,操作,互动,聊天)进行及时的反馈以及主动推送给相关的玩家。所以游戏更多的使用TCP来保持...

继续阅读 »

frp 搭建内网穿透服务

什么是内网穿透 什么时候需要用内网穿透? 无公网IP时,需要将本地服务器和应用服务,提供到互联网访问时,就需要使用内网穿透的方法。 内网穿透和DDNS的区别 DDNS(动态域名解析)指的是直接将域名解析到家用路由器上, 然后路由器实现端口转发, 从而实现通过域名访问内网中的服务器的目的. 内网穿透和DDNS都是为了让内网的设备被公网访问。 两者的区别: 是否需要公网服务器? 内网穿透需要,...

继续阅读 »

反编译微信小程序wxappUnpacker

前言 工具准备(免费) 微信小程序反编译 https://www.aliyundrive.com/s/x6zddHbHK6R 提取码: 90ut 解密小程序 确认小程序包位置推荐微信电脑版 打开一个小程序 小程序的位置为文件管理/Applet 在提取小程序前最好先清空该目录, 不然太多无法识别 D:\Administrator\Documents\WeChat Files\Applet\w...

继续阅读 »

python二进制操作汇总

数据编码之间的转化 设计到的格式 十六进制字符串 "9A 00 1B CB 34 00 C7 00 00 30 10 00" 十进制字符串 "154 0 27 203 52 0" 大端模式 十六进制转字符串 转化方法 # 十进制(数字) -> 十六进制(字符串) hex(128) == '0x80' # True hex(128) == '80' # False hex(1...

继续阅读 »

Pandas常用知识点

Pandas用户指南 查看能多[翻译]: https://www.osgeo.cn/pandas/user_guide/index.html 查看更多[官方]: https://pandas.pydata.org/docs/user_guide/index.html 创建对象 Series 一维数据 class pandas.Series(data=None, index=None, d...

继续阅读 »

Python中的冷知识

可变对象与不可变对象 为了理解对象的可变与不可变, 首先理解什么是变量, 什么是对象 在 Python 中,变量都是指针;指针的内存空间与数据类型无关,其内存空间保存了指向数据的内存地址。 在 Python 中,一切皆对象,其主要由以下部分组成: identity(ID):标识对象的“内存地址”,可使用 id(obj) 获取(唯一标识) type(类型):标识对象的“类型”,可使用 typ...

继续阅读 »

关于进程/线程/协程以及一些相关概念的整理

本文涉及到的一些概念 多线程发展史 并发与并行 CPU的密集型(CPU-Bound) IO密集型 (I/O Bound) 各种IO模型 各种并发模型 多线程发展史 起因:如何最大化的利用CPU CPU运算速度和IO速度的不平衡一直是计算机优化的一个课题,我们都知道CPU运算速度要以百倍千倍程度快于IO的速度,而在进行任务的执行的时候往往都会需要进行数据的IO(涉及硬盘io,网络io,内存...

继续阅读 »

关于try catch的理解问题

以下来自于知乎的一位网友对try catch的理解, 并拿之和go的err做比较, 针对try catch说的比较好理解~~ 我们不谈Java的checked exception。这货在其他语言里面并不多见。我们只谈一般的异常处理。好,那么,throw是什么很差的设计么?当然不是。throw再差也比err code强。为什么呢?你仔细想想,throw和return从逻辑上(注意:抽象地从逻辑...

继续阅读 »

游戏中自动寻路算法: A*、NavMesh、WayPoint

注意: 这里可以查看https://github.com/qiao/PathFinding.js各种寻路算法,并查看其在线演示. A*(基础算法) 优点 简单,易于实现 对地图编辑器友好 特定方格的消耗/可通行性易于修改,当然重新加权的方格太多也会影响速度 从游戏地图位置容易映射到方格位置,坐标除以每个网格的边长即可 缺点 对于大型地图,方格属于内存密集型 通常需要对所得的路径进行路...

继续阅读 »

C#高级特性之LINQ(语言集成查询)

什么是linq, 它解决了什么问题 在工程中我们少不了要定义类或者结构去储存数据,这些数据将被临时地储存在内存中,现在我们想要对其完成一些类似于查找、过滤等等常见的任务的时候,我们该如何去做呢? 以前我们可以自己写代码去对集合中的每个对象进行遍历,检查变量的每个字段看其是否满足条件。 LINQ(Language Integrated Query)即语言集成查询, linq可以像SQL一样用来...

继续阅读 »

微信/支付宝个人免签收款方案

项目简介 多用户个人微信/支付宝免签收款方案基本功能列表 服务端 后台登录 添加应用,生成Appid(应用ID), Secret(秘钥), notify_url(开发者服务器), return_url(支付成功后跳转) 接收客户端的支付成功请求API 服务端通知开发者服务器API(失败延迟通知) 订单管理 收款码管理 支付方式(微信/支付宝) 监控端(收款监控,多个方案) [安卓]xp...

继续阅读 »

从0到1构建python web框架

框架功能 第一部分: WSGI(gunicorn)/请求处理程序/路由(简单和参数化) 新建项目gunicorn安装 # 新建项目目录 mkdir longfei cd longfei python -m venv venv # 创建虚拟环境 source venv/bin/activate # 激活虚拟环境 pip install gunicorn # 安装WSGI服务器 项目目录中, ...

继续阅读 »

通俗的理解设计模式-23种设计模式

设计模式的七大原则 开放-封闭原则 通俗:对扩展开放,对修改关闭 单一职责原则 通俗:一个类只做一件事 依赖倒转原则 通俗:程序代码中传递参数时或在关联关系中,尽量引用层次高的抽象层类,而不要用具体类来做这些事情。 迪米特法则(最少知道原则) 通俗:高内聚,低耦合。类对自己依赖的类知道的越少越好。 接口隔离原则 通俗:最小的接口, 互不关联的接口独立出来减少依赖 合成...

继续阅读 »

Python的import详解与模块自动加载

import与sys.path 模块import导入顺序 在 sys.modules 中查找,它缓存了所有已导入的模块, 这里默认在运行前会自动加载内置库. 此变量中包括了解释器的内置库,即在sys.builtin_module_names中搜索,返回第一个找到的结果 在 sys.meta_path 中查找,它支持自定义的加载器 按顺序在sys.path中搜索,排在前面的优先被找...

继续阅读 »

python的魔术方法大全与属性

魔法方法指南 Python魔法方法指南: https://github.com/MrKiven/PyZh/blob/master/docs/python-magic-methods-guide.rst 魔术方法和内建属性 Python中有大量类似__dict__这种以双下划线开头和结尾的特殊成员及“魔法方法”,它们有着非常重要的地位和作用,也是Python语言独具特色的语法之一!重写魔术...

继续阅读 »

Anaconda是专注于数据分析的Python发行版本

Anaconda是专注于数据分析的Python发行版本,包含了conda、Python等190多个科学包及其依赖项。注意pip和conda是两个不同的东西,它们的包安装地址都不一样,不要混淆了。 为什么选择Anaconda 什么是 conda conda 是开源包(packages)和虚拟环境(environment)的管理系统。 packages 管理:一个类似于pip的包管理工具,不同...

继续阅读 »