• 《流畅的 Python 》阅读笔记

    Posted by : lon.y@qq.com on 2017年10月25日

    起步 《流畅的python》是一本适合python进阶的书, 里面介绍的基本都是高级的python用法. 对于初学python的人来说, 基础大概也就够用了, 但往往由于够用让他们忘了深入, 去精通. 我们希望全面了解这个语言的能力边界, 可能一些高级的特性并不能马上掌握使用, 因此这本书是工作之余, 还有余力的人来阅读, 我这边就将其有用, 精妙的进阶内容整理出来. 这本书有21个章节, 整理也是根据这些章节过来. 第一章: python数据模型 这部分

    阅读全文...

  • BFPRT 算法(TOP-K问题)

    Posted by : lon.y@qq.com on 2017年10月25日

    一:背景介绍 在一堆数中求其前k大或前k小的问题,简称TOP-K问题。而目前解决TOP-K问题最有效的算法即是”BFPRT算法”,又称为”中位数的中位数算法”,该算法由Blum、Floyd、Pratt、Rivest、Tarjan提出,最坏时间复杂度为$O(n)$。 在首次接触TOP-K问题时,我们的第一反应就是可以先对所有数据进行一次排序,然后取其前k即可,但是这么做有两个问题: 快速排序的平均复杂度为$O(nlogn)$,但最坏时间复杂度为$O(n^2)

    阅读全文...

  • 从银行转账失败到分布式事务:总结与思考

    Posted by : lon.y@qq.com on 2017年10月25日

    思考这个问题的初衷,是有一次给朋友转账,结果我的钱被扣了,朋友没收到钱。而我之前一直认为银行转账一定是由事务保证强一致性的,于是学习、总结了一下分布式事务的各种理论、方法。 事务是一个非常广义的词汇,各行各业解读都不一样。对于程序员,事务等价于Transaction,是指一组连续的操作,这些操作组合成一个逻辑的、完整的操作。即这组操作执行前后,系统需要处于一个可预知的、一致的状态。因此,这一组操作要么都成功执行,要么都不能执行;如果部分成功,部分失败,成功

    阅读全文...

  • Python Re模块

    Posted by : lon.y@qq.com on 2017年10月24日

    re模块下的函数 compile(pattern):创建模式对象 import re pat=re.compile('A') m=pat.search('CBA') #等价于 re.search('A','CBA') print m #匹配到了,返回MatchObject(True) m=pat.search('CBD') print m None #没有匹配到,返回None(False) search(pattern,string):在字符串中寻找模式

    阅读全文...

  • 前端高性能计算之四:GPU加速计算

    Posted by : lon.y@qq.com on 2017年10月22日

    人工智能是最近两年绝对的热点,而这次人工智能的复兴,有一个很重要的原因就是计算能力的提升,主要依赖于GPU。去年Nvidia的股价飙升了几倍,市面上好点的GPU一般都买不到,因为全被做深度学习以及挖比特币的人买光了。 GPU,全称Graphics Processing Unit,即图像处理器,早期主要用于显示图像使用。因为图像处理主要偏简单的矩阵运算,逻辑判断等很少,因此GPU的设计跟CPU架构不一样,也因此做到一个GPU上可以有很多计算单元,可以进行大量

    阅读全文...

  • 前端高性能计算之三:Rust -> asm.js & webassem…

    Posted by : lon.y@qq.com on 2017年10月22日

    前一篇我们探索了用Emscripten编译C代码到asm.js和WebAssembly,使前端代码执行速度大大提升,但是实际项目中由于C语言缺乏很多高级特性,不利于开发大型项目(说C可以开发操作系统kernel这种大型项目的同学不好意思,我没那么nb),而C++我又觉得太复杂,也没有用过C++做过大型项目,所以我最后选择了Rust。 一开始也纠结过要用Go还是Rust或者Swift的,后来发现Go目前还不支持编译到WebAssembly,Swift按理说应

    阅读全文...

  • 如何让网站不下线而从 Redis 2 迁移到 Redis 3

    Posted by : lon.y@qq.com on 2017年10月21日

    我们在 Sky Betting&Gaming 中使用 Redis 作为共享内存缓存,用于那些需要跨 API 服务器或者 Web 服务器鉴别令牌之类的操作。在 Core Tribe 内,它用来帮助处理日益庞大的登录数量,特别是在繁忙的时候,我们在一分钟内登录数量会超过 20,000 人。这在很大程度上适用于数据存放在大量服务器的情况下(在 SSO 令牌用于 70 台 Apache HTTPD 服务器的情况下)。我们最近着手升级 Redis 服务器,此升级旨在

    阅读全文...

  • 基于概率论的分类方法:朴素贝叶斯

    Posted by : lon.y@qq.com on 2017年10月21日

    基于概率论的分类方法:朴素贝叶斯 1. 概述 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本章首先介绍贝叶斯分类算法的基础——贝叶斯定理。最后,我们通过实例来讨论贝叶斯分类的中最简单的一种: 朴素贝叶斯分类。 2. 贝叶斯理论 & 条件概率 2.1 贝叶斯理论 我们现在有一个数据集,它由两类数据组成,数据分布如下图所示: 我们现在用 p1(x,y) 表示数据点 (x,y) 属于类别 1(图中用圆点表示的类别)的

    阅读全文...

  • Python数据分析 – Numpy

    Posted by : lon.y@qq.com on 2017年10月21日

    前言 NUMPY(以下简称NP)是Python数据分析必不可少的第三方库,np的出现一定程度上解决了Python运算性能不佳的问题,同时提供了更加精确的数据类型。如今,np被Python其它科学计算包作为基础包,已成为Python 数据分析的基础,可以说,NP是SciPy、Pandas等数据处理或科学计算库最基本的函数功能库。因此,理解np的数据类型对python数据分析十分有帮助。 下面,本文将介绍Np的常用操作和基本数据类型。 NP提供了以下重点功能。

    阅读全文...

  • 如何让 Vim 成为我们的神器

    Posted by : lon.y@qq.com on 2017年10月20日

    Vim 是一个上古神器,本篇文章主要 持续总结 使用 Vim 的过程中不得不了解的一些 指令 和 注意事项,以及 持续分享 一个 前端工作者 不得不安装的一些 插件,而关于 Vim 的简介,主题 的选择,以及为何使用 vim-plug 来管理插件等内容,有兴趣的同学下来可以自己了解和对比下 安装 sudo apt-get install vim // Ubuntu 其他平台,可以自行谷歌 新手指南 vimtutor // vim 教程 上面是史上最简单,最

    阅读全文...