python
文章平均质量分 72
ybn6775
精益求精、勿怕麻烦。
展开
-
python 中 string 和 unicode 字符串编码问题
先要弄清楚的是,在python里,string object和unicode object是两种不同的类型。 原文博主--http://blog.csdn.net/feisanstring object是由characters组成的sequence,而unicode object是Unicode code units组成的sequence。string里的character是有多种编码方式的,比如...转载 2018-02-28 10:58:20 · 744 阅读 · 0 评论 -
23种设计模式汇总整理
设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池模式。...转载 2018-08-14 09:26:14 · 397 阅读 · 0 评论 -
空间索引之网格与四叉树
在介绍空间索引之前,先谈谈什么叫“索引“。对一个数据集做”索引“,是为了提高对这个数据集检索的效率。书的”目录“就是这本书内容的”索引“,当我们拿到一本新书,想查看感兴趣内容的时候,我们会先查看目录,确定感兴趣的内容会在哪些页里,直接翻到那些页,就OK了,而不是从第一章节开始翻,一个字一个字地找我们感兴趣的内容,直到找到为止,这种检索内容的效率也太低了,如果一本书没有目录,可以想象有多么不方便…可...转载 2018-08-14 17:52:38 · 1252 阅读 · 0 评论 -
Python 使用objgraph 定位内存泄露
内存泄露 既然Python中通过引用计数和垃圾回收来管理内存,那么什么情况下还会产生内存泄露呢?有两种情况: 第一是对象被另一个生命周期特别长的对象所引用,比如网络服务器,可能存在一个全局的单例ConnectionManager,管理所有的连接Connection,如果当Connection理论上不再被使用的时候,没有从ConnectionManager中删除,那么就造成了内存泄露。...转载 2018-08-14 23:49:21 · 15316 阅读 · 1 评论 -
游戏中AOI视野算法
AOI(Area Of Interest),中文就是感兴趣区域。通俗一点说,感兴趣区域就是玩家在场景实时看到的区域;也就是AOI会随着英雄的移动改变而改变。游戏的AOI算法应该算作游戏的基础核心了,许多逻辑都是因为AOI进出事件驱动的,许多网络同步数据也是因为AOI进出事件产生的。因此,良好的AOI算法和基于AOI算法的优化,是提高游戏性能的关键。我在实践中所熟知的游戏AOI算法大致有4种,...转载 2018-08-15 12:14:31 · 7607 阅读 · 0 评论 -
python操作redis用法详解
使用python来操作redis用法详解1、redis连接redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py。redis连接实例是...转载 2018-09-05 09:52:20 · 309 阅读 · 0 评论 -
Protocol Buffer的python实践
Protocol Buffer 实践(一) 简介以及安装与使用由于最近对grpc产生了浓厚的兴趣,但是那是一整套东西,看了一下用到的东西不少,所以抽丝剥茧先写写这几天调研的protocol buffer -python的收获。 简介:以下引用自官方首页文档:Protocol buffers are Google's language-neutral, platform-ne...转载 2018-09-05 11:01:38 · 267 阅读 · 0 评论 -
Python并行编程——多进程
阅读目录1. Process 2. Lock 3. Semaphore 4. Event 5. Queue 6. Pipe 7. Pool序. multiprocessingpython中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程。Python提供了非常好用的多进程包multiprocessing,只需要定义一个...转载 2018-11-29 16:04:22 · 356 阅读 · 0 评论 -
缓存算法之FIFO、LRU、LFU的Python实现
缓存算法之FIFO、LRU、LFU的Python实现 早期计算机内存有限,程序的运行与加载依赖页面置换算法, 其目的是将部分数据缓存在内存中, 在使用的时候就不必去磁盘上加载,这样可以提高运行的效率,虽然现在计算机的内存控件已经得到了很大的提升, 但是这种缓存策略一直被沿用, 尤其对于需要访问IO以及数据库等...原创 2018-07-17 13:21:36 · 2526 阅读 · 0 评论 -
动态加载滑动列表实现
动态加载滑动列表 采用了类似分片加载的策略,仅加载出当前可以看到的图片以及一定的预加载部分,随着滑动逐渐的加载出下边的内容,但大量的UI节点会造成内存的紧张,直播平台500个直播间的图片量不能导入所有贴图,大量的贴图残留在内存中会造成不必要的问题, 因此加载策略为仅显示当前看到的ITEM以及上下的预加载部分, 向上滑动删除下边多余的UI节点, 向下滑动删除上边多余的UI节点, 总...原创 2018-06-30 12:44:19 · 1251 阅读 · 0 评论 -
服务器集群中代理服的选取与迁移
服务器集群中代理服的选取与迁移 在服务集群中,处于减小系统开销或者访问受限的情况, 某项功能可能需要在服务端集群中选择出一个代理来完成任务,那么就牵扯到代理服务器的选择,故障迁移, 数据传播等问题, 以下为游戏中直播数据请求功能的代理服务的样例。数据广播通过两级关播的方式, 代理服的初始选取通过统一的准则,代理服的迁移则通过当前代理服宣布代理失败或被代理服务器长期说不到数据进行代理权...原创 2018-06-30 12:29:33 · 259 阅读 · 0 评论 -
游戏中热更新机制
--------------------------------------------------------------------- 对一个游戏来说,无论是client或server都非常需要一套代码热更新的机制。它能大大提高开发效率,又能超乎玩家期望地在运营期在线修正bug和增添功能。可谓必备机制。-------------------------------------------...转载 2018-03-19 10:49:24 · 5454 阅读 · 0 评论 -
Python 使用 Mongo
Python 使用 Mongo1. 安装 Pymongo要用 Python 来驱动 mongodb,必须要安装驱动模块,即 Pymongo,这跟操作 mysql 类似。安装方法,我最推荐如下:$ sudo pip install Pymongo如果顺利,就会看到最后的提示:Successfully installed PymongoCleaning up...如果不选择版本,安装的应该是最新版本...转载 2018-03-20 17:47:59 · 664 阅读 · 0 评论 -
Python并发编程——concurrent.futures
Concurrent.futures 模块 Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程/多进程代码。从Python3.2开始,标准库为我们提供了concurrent.futures模块,它提供了ThreadPoolExecutor和ProcessPoolExecutor两个类,实现了对threading和multip...原创 2018-04-07 19:55:50 · 355 阅读 · 0 评论 -
python inspect模块解析
python inspect模块解析inspect模块主要提供了四种用处:(1).对是否是模块,框架,函数等进行类型检查。(2).获取源码(3).获取类或函数的参数的信息(4).解析堆栈使用inspect模块可以提供自省功能,下面是关于自省的一些介绍: 首先通过一个例子来看一下本文中可能用到的对象和相关概念。#coding: UTF-8import sys # 模块,sys指向这个模块对象 ...转载 2018-04-07 20:47:57 · 536 阅读 · 0 评论 -
PYTHON 字符串编码
PYTHON-进阶-编码处理小结基础ASCII | Unicode | UTF-8 | 等等字符编码笔记:ASCII,Unicode和UTF-8一、ASCII 码我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个...转载 2018-04-25 17:00:07 · 211 阅读 · 0 评论 -
摇一摇加好友功能实现
面对面加好友 游戏中的好友系统通常会就有面对面添加好友的功能, 功能具体内容就是输入相同数字串进行搜索,就能搜索到一定时间内输入相同数字串的玩家。从理解上看功能描述较为简单,但具体的实现过程还是有很多需要注意的地方。 首先就是功能的整体结构, 可以采用中心化的方法, 对于发送了请求的玩家进行信息的存储, 全服所有玩家都把数据发送过来, 然后在中心节点上进行处理,最后处理结...原创 2018-04-28 11:55:51 · 1845 阅读 · 0 评论 -
Python并发编程——线程池
线程池 在IBM文档库中这样的一段描写:“在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这...原创 2018-06-02 14:43:08 · 8301 阅读 · 2 评论 -
视频弹幕的Python实现
视频弹幕管理器的实现方法 直播接口提供的弹幕是通过消息的形式发送过来的, 在我们播放器进行展示的时候, 需要实现弹幕的移动与排布。实现的过程中将弹幕进行抽象,最终抽象出了的三个对象,其层次关系如图:图1 弹幕管理抽象出的对象层次结构文本对象: 负责文本的显示、隐藏与移动, 提供是否进入弹道和是否离开弹道的接口, 提供文本移动的TICK接口。弹道对象:包含多个文本对象, 并对这些文本对...原创 2018-06-02 14:54:12 · 3662 阅读 · 1 评论 -
数据缓存类设计
数据库数据缓存类设计 对于需要从数据库中获取的数据,如果频繁的进行数据库操作,在高并发的情况下会对数据库造成较大的压力, 此时可以对每次数据的查询结果进行缓存,并进行定期的更新,可以有效的解决这个问题。 在游戏中,关于服务端对于非玩家本身数据的加载获取与更新, 多设计到数据库的操作, 其中关于好友和战队成员等信息往往需要从数据库中获取,但如果每次都从数据库获取,那...原创 2018-06-30 12:04:48 · 775 阅读 · 0 评论 -
正则表达式
为什么使用正则表达式?典型的搜索和替换操作要求您提供与预期的搜索结果匹配的确切文本。虽然这种技术对于对静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索动态文本,即使不是不可能,至少也会变得很困难。通过使用正则表达式,可以:测试字符串内的模式。 例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。 替换文本。...转载 2018-11-29 16:11:04 · 329 阅读 · 0 评论