- 博客(171)
- 资源 (5)
- 收藏
- 关注
转载 Redis事务
Redis 通过MULTI、DISCARD、EXEC和WATCH四个命令来实现事务功能, 本章首先讨论使用MULTI、DISCARD和EXEC三个命令实现的一般事务, 然后再来讨论带有WATCH的事务的实现。因为事务的安全性也非常重要, 所以本章最后通过常见的 ACID 性质对 Redis 事务的安全性进行了说明。事务事务提供了一种“将多个命令打包, 然...
2019-06-25 15:38:34 224
转载 用C语言扩展Python的功能
一、简介Python是一门功能强大的高级脚本语言,它的强大不仅表现在其自身的功能上,而且还表现在其良好的可扩展性上,正因如此,Python已经开始受到越来越多人的青睐,并且被屡屡成功地应用于各类大型软件系统的开发过程中。与其它普通脚本语言有所不同,Python程序员可以借助Python语言提供的API,使用C或者C++来对Python进行功能性扩展,从而即可以利用Python方便灵活的语法...
2019-04-04 17:14:46 595
转载 python redis之连接池的原理
我们使用redis连接池, 却不怎么了解这个连接池的原理, 今天我们来研究一下什么是连接池通常情况下, 当我们需要做redis操作时, 会创建一个连接, 并基于这个连接进行redis操作, 操作完成后, 释放连接,一般情况下, 这是没问题的, 但当并发量比较高的时候, 频繁的连接创建和释放对性能会有较高的影响于是, 连接池就发挥作用了连接池的原理是, 通过预先创建多个连接, 当...
2019-03-12 17:53:11 1349 1
转载 Python内存管理机制及优化简析
准备工作为了方便解释Python的内存管理机制, 本文使用了gc模块来辅助展示内存中的Python对象以及Python垃圾回收器的工作情况. 本文中具体使用到的接口包括:gc.disable() # 暂停自动垃圾回收.gc.collect() # 执行一次完整的垃圾回收, 返回垃圾回收所找到无法到达的对象的数量.gc.set_threshold() # 设置Python垃圾回收...
2018-09-20 17:36:13 467
转载 使用gc、objgraph干掉python内存泄露与循环引用!
目录一分钟版本python内存管理 引用计数 垃圾回收 gc module内存泄露 objgraph 查找内存泄露循环引用 定位循环引用 消灭循环引用总结references正文 Python使用引用计数和垃圾回收来做内存管理,前面也写过一遍文章《Python内存优化》,介绍了在python中,如何profile内存使...
2018-09-20 16:27:45 706
转载 以太网,IP,TCP,UDP数据包分析
1、ISO开放系统有以下几层: 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理...
2018-09-12 16:30:59 381
转载 一致性hash算法 - consistent hashing
consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛;1 基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的...
2018-08-30 17:20:05 161
转载 一篇文带你快速起步Apache Storm
作者介绍杜亦舒,创业中,技术合伙人,喜欢研究分享技术。个人订阅号:性能与架构。 本文介绍了 Apache Storm 的基本原理和开发方法,包括一个 PDF 和 2 个示例的源码。 内容大纲: Storm是什么 应用场景 Storm与Hadoop的关系 Storm怎么用 示例1:统计单词出现的次数 核心概念 ...
2018-08-30 15:44:09 505
转载 日志结构的合并树 The Log-Structured Merge-Tree
近年来,随着互联网数据的日益增长,管理分布式数据需求的日益增加,Bigtable[1]等一系列NoSQL数据库开始涌现。Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据,其在提供Tablet服务时使用内存中的memtable和GFS[2]中的SSTable来相互配合着来存储数据更新,其中存储和更新的方法与日志结构的合并树[3](Log-Structured Merge-T...
2018-06-27 20:26:36 837
原创 Valgrind工具检测内存
如何使用Valgrind memcheck工具进行C/C++的内存泄漏检测应用 Valgrind 发现 Linux 程序的内存问题
2018-03-18 20:09:59 250
转载 深刻理解Python中的元类(metaclass)
本文由 伯乐在线 - bigship 翻译。未经许可,禁止转载!英文出处:stackoverflow。欢迎加入翻译组。译注:这是一篇在Stack overflow上很热的帖子。提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解。他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要...
2018-02-25 15:38:27 224
转载 MMORPG服务器架构
一.摘要1.网络游戏MMORPG整体服务器框架,包括早期,中期,当前的一些主流架构2.网络游戏网络层,包括网络协议,IO模型,网络框架,消息编码等。3.网络游戏的场景管理,AI,脚本的应用等。4.开源的网络服务器引擎5.参考书籍,博客二.关键词网络协议 网络IO 消息 广播 同步 CS TCP/UDP IP 集群 负载均衡 分布式 网关服
2017-09-04 19:55:58 671
转载 游戏服务器架构探讨
有段时间没有研究技术了,这次正好看到了新版的mangos,较之以前我看的版本有了比较大的完善,于是再次浏览了下他的代码,也借此机会整理下我在游戏服务器开发方面的一些心得,与大家探讨。 另外由于为避免与公司引起一些不必要的纠纷,我所描述的全都是通过google能够找到的资料,所以也可以认为我下面的内容都是网上所找资料的整理合集。在平时的开发中我也搜索过相关的中文网页,很少有讲游戏服务器相关技
2017-09-01 21:19:57 527
转载 编译器与解释器的区别
为了让更多的人能够从本质上理解编译器和解释器的区别,我杜撰了一个小故事来福与旺财的养牛场来福和旺财有一 个养 牛场。本来养牛不是一件太难的事情,但是偏偏他俩养的牛都有特别的怪癖。奶牛阿圆只吃切成圆形的牧草,而奶牛阿方和阿三(印度来的?)分别只吃切成正方形 和三角形的牧草。如果来福和旺财拿不和奶牛性格的草去喂食,阿X们不但不产奶而且还会鄙视来福和旺财。于是来福和旺财分别有了自
2017-05-09 15:51:14 368
转载 Python函数参数默认值的陷阱和原理深究
本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的陷阱重现我们就用实际的举例来演示我们今天所要讨论的主要内容。 下面一段代码定义了一个名为generate_new_list_with的函数。该函数的本意是在每次调用时都新建一个包含有给定element值的list。而实际运行结果如下:Python 2.7.9 (defaul
2017-05-09 11:45:02 952
转载 Python descriptor
一次偶然发现,Python的对象竟然可以在运行期动态添加类定义时没有的属性,这又颠覆了我对Python OO机制的理解。Google了一把,顺着__dict__属性一路找到descriptor,揭开了隐藏在Python对象之后的内幕。本文主要记录Python的descriptor机制,以及其在Python对象的属性、方法绑定上的作用。先从本文的始作俑者,运行期动态添加对象属性开始讲
2017-05-06 19:44:07 408
转载 Python装饰器学习(九步入门)
这是在Python学习小组上介绍的内容,现学现卖、多练习是好的学习方式。第一步:最简单的函数,准备附加额外功能12345678# -*- coding:gbk -*-'''示例1: 最简单的函数,表示调用了两次''' def myfunc():
2017-05-06 15:31:47 369
转载 开闭原则OCP
阅读目录一、原理介绍1、官方定义2、自己理解二、场景示例1、对实现类编程,你死得很惨2、对抽象编程,就是这么灵活三、总结 正文前言:这篇继续来看看开闭原则。废话少说,直接入正题。软件设计原则系列文章索引C#软件设计——小话设计模式原则之:依赖倒置原则DIPC#软件设计——小话设计模式原则之:单一职责原则SRPC#软件设计—
2016-12-06 15:59:59 685
转载 python的with用法
With语句是什么?有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。如果不用with语句,代码如下:file = open("/tmp/foo.txt")data = file.read()file.close()
2016-12-05 16:59:19 398
转载 Python垃圾回收机制
Python GC主要使用引用计数(reference counting)来跟踪和回收垃圾。在引用计数的基础上,通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用问题,通过“分代回收”(generation collection)以空间换时间的方法提高垃圾回收效率。引用计数引用计数法在对象内部维护了一个被其他对象引用数的引用计数值,当这个引用计数值为0
2016-11-22 22:55:04 840
原创 python 性能分析器 profile
安装snakeviz首先安装easy_install 点击打开链接 安装snakeviz命令:easy_install snakeviz然后就开始实战了# -*- coding:utf-8 -*-def fun1(): for i in range(0, 1000): passdef fun2(): for i in range(0, 10000): pass
2016-11-04 21:56:47 1937
转载 Python进阶09 动态类型
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!谢谢TeaEra, 猫咪cat 动态类型(dynamic typing)是Python另一个重要的核心概念。我们之前说过,Python的变量(variable)不需要声明,而在赋值时,变量可以重新赋值为任意值。这些都与动态类型的概念相关。 动态
2016-10-26 22:11:09 303
转载 Python的可变长参数
Or, How to use variable length argument lists in Python.The special syntax, *args and **kwargs in function definitions is used to pass a variable number of arguments to a function. The single as
2016-10-11 21:55:59 1422
转载 Unity3D中脚本的执行顺序和编译顺序
在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行。与脚本有关的也就是编译和执行啦,本文就来研究一下Unity中脚本的编译和执行顺序的问题。事件函数的执行顺序先说一下执行顺序吧。 官方给出的脚本中事件函数的执行顺序如下图: 我们可以做一个小实验来测试一下: 在Hierarchy视图中创建三个游戏对象,在Pro
2016-05-11 16:25:15 10936 1
转载 C语言的变量的内存分配
今晚看了人家写的一个关于C语言内存分配的帖子,发现真是自己想找的,于是乎就收藏了。。。先看一下两段代码:[cpp] view plain copy print?char* toStr() { char *s = "abcdefghijkl"; return s; } int main() {
2016-05-07 16:17:46 489
转载 Shadow Map & Shadow Volume
阴影的实现方法有很多种,现在比较流行的主要是 shadow mapping 和shadow volume。前者实现起来相对简单,可以发挥现在GPU可编程流水线的能力,但是由于先天不足,shadow mapping在处理动态光源/物体的时候开销过大,经常作为一种静态场景中的廉价替代物。而 Shadow volume 的强项恰恰是 shadow mapping 的短处,像 DOOM3 这种大量运用
2016-01-26 20:29:41 788
转载 python定时程序(每隔一段时间执行指定函数)
import osimport timedef print_ts(message): print "[%s] %s"%(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), message)def run(interval, command): print_ts("-"*100) print_ts("Command
2015-12-29 13:24:36 58068 4
转载 lua快速入门
运行首先,我们需要知道,Lua是类C的,所以,他是大小写字符敏感的。下面是Lua的Hello World。注意:Lua脚本的语句的分号是可选的,这个和GO语言很类似。复制代码代码如下:print("Hello World")你可以像python一样,在命令行上运行lua命令后进入lua的shell中执行语句。复制代码代码如下:
2015-11-22 21:32:55 606
转载 Flask使用
欢迎使用 Flask欢迎阅读 Flask 文档。 本文档分为几个部分。我推荐您先从安装 开始,之后再浏览 快速入门 章节。 教程 比快速入门更详细地介绍了如何用 Flask 创建一个完整的应用(虽然很小)。 想要深入了解 Flask 内部细节,请查阅 API 文档。Flask 代码模式 章节介绍了一些常见模式。Flask 依赖两个外部库: Jinja2 模板引擎和 Werkze
2015-11-20 11:32:46 1428 1
转载 cJSON库(构建json与解析json字符串)-c语言
一、c语言获取json中的数据。1、先要有cJOSN库,两个文件分别是cJSON.c和cJSON.h。2、感性认识char * json = { \"json\" : { \"id\":1, \"nodeId\":11, \"deviceId\":111, \"deviceName\":
2015-11-07 17:38:13 3078
转载 How To Use Linux epoll with Python
原文地址:点击打开链接How To Use Linux epoll with PythonContentsIntroductionBlocking Socket Programming ExamplesBenefits of Asynchronous Sockets and Linux epollAsynchronous Socket Programming E
2015-11-06 21:49:17 573
转载 OpenGL学习资料汇总
NeHe OpenGL教程中文版地址(http://www.yakergong.net/nehe/)评价:耐心耐心再耐心地从第一篇开始照着敲代码,尝试,从而入门。SharpGL开源地址(https://github.com/dwmkerr/sharpgl)评价:用C#对OpenGL进行封装得到的类库。除了最基本的C#版的OpenGL函数接口外,还提供
2015-11-03 13:06:15 910
转载 编译器链接过程 静态链接 动态链接
理解链接有很多好处:有助于构造大型程序 有助于避免一些危险编程错误 有助于理解其他重要的系统概念 让你能够利用共享库1. 编译器驱动程序编译命令,假设有main.c和swap.c两个源文件[cpp]view plaincopy$gcc-O2-g-opmain.cswap.c实际上编译过程可以分解为以下步骤[cpp]view pl...
2015-11-01 16:58:14 3120
转载 extern用法详解(转)
1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern char *a; 请问,这样可以吗? 答案
2015-10-30 11:56:44 477
原创 格雷码递归实现(c++)
void _GrayCode(int n, vector& graySeq){ if(n == 1) { graySeq.push_back("0"); graySeq.push_back("1"); return; } _GrayCode(n-1, graySeq); for(int i=0; i<graySeq.size(); ++i) //前面加0 { gray
2015-09-09 15:27:35 2488
转载 网络IO之阻塞、非阻塞、同步、异步总结
1、前言 在网络编程中,阻塞、非阻塞、同步、异步经常被提到。unix网络编程第一卷第六章专门讨论五种不同的IO模型,Stevens讲的非常详细,我记得去年看第一遍时候,似懂非懂,没有深入理解。网上有详细的分析:http://blog.csdn.net/historyasamirror/article/details/5778378。我结合网上博客和书总结一下,加以区别,加深理解。
2015-07-15 20:16:24 496
转载 孤儿进程与僵尸进程[总结]
1、前言 之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。2、基本概念 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进
2015-07-15 00:09:47 391
转载 Linux 文件系统
文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识。 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录、挂载基本原理、文件存储结构、软链接硬链接、和常见目录的介绍。相信有了这些知识对于深入的学习linux会有一定的帮助。文章例子主要是基于ubuntu发行版。 如有不对之处请大家多多指出。1.Linux磁盘分区和目
2015-07-12 20:59:43 395
转载 TCP和http的keepalive
最近工作中遇到一个问题,想把它记录下来,场景是这样的: 从上图可以看出,用户通过Client访问的是LVS的VIP, VIP后端挂载的RealServer是Nginx服务器。 Client可以是浏览器也可以是一个客户端程序。一般情况下,这种架构不会出现问题,但是如果Client端把请求发送给Nginx,Nginx的后端需要一段时间才能返回结果,超过1分30秒就会有
2015-07-12 11:41:04 2012
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人