1. 哈夫曼编码 —— Lisp 与 Python 实现

    2016-06-30

    SICP 第二章主讲对数据的抽象,可以简单地理解为 Lisp 语言的数据结构。当然这样理解只可作为一种过渡,因为 Lisp 中并不存在数据与过程的差别,也就完全不需要一个额外的概念来描述这种对数据抽象的过程。2.3.4 以哈弗曼编码为例展示了如何在 Lisp 中实现哈夫曼二叉树数据结构的表示与操作,本文在完成该小节习题(完整的哈夫曼编码树生成、解码与编码)的基础上,将 Lisp(这里用的是 DrRacket 的 #lang

  2. Tornado 与 WebSocket 实现实时聊天室

    2016-06-01

    WebSocket 是用于浏览器与服务器之间进行双相连接的协议,可以用于创建基于浏览器的实时聊天工具。Tornado 自身支持 WebSocket 协议,也可以用来接收网站管理员的编辑指令。 根据官方文档,可以通过继承 tornado.websocket.WebSocketHandler 处理来自 WebSocket 协议的请求: class EchoWebSocket(tornado.websocket.WebSocketHandler): def open(self): print("WebSocket

  3. 给 Python 开发者的 Go 语言入门指南

    2016-05-30

    0. 关于 之前学习过 Go 一段时间,用 Vim 做为 IDE,也尝试过几次用 Go 做服务器后端,后来因为没有再写网站的需求就放下了一段时间。现在回忆一下用 Go 的体验,与 Python 相比可能有下面几点优势: 高性能,高性能,高性能; 低内存,低内存,低内存; 异步;

  4. 优雅地处理机器人指令

    2016-05-25

    为了将内容维护工作转接到通过向 Bot 下达指令完成,一开始打算准备采用 Hubot 作为中转机器人,后来因为安装过程中的种种不适以及对 CoffeeScript 的莫名恐惧,最终放弃这一方案。其实之前分别基于 Flask 和 Tornado 实现过 Telegram 和微信公众号的简单自动回复机器人,其中 API 响应环节一般都是非常简单明确的,比较乱的反而是对指令的解析。例如: def parse(cmd): cmds

  5. JSON 的正确用法:Python、MongoDB、JavaScript与Ajax

    2016-05-14

    关于本文 本文主要总结网站编写以来在传递 JSON 数据方面遇到的一些问题以及目前采用的解决方案。网站数据库采用 MongoDB,后端是 Python,前端采用“半分离”形式的 Riot.js,所谓半分离,是说第一页数据是通过服务器端的模板引擎直接渲染到 HTML 中,从而避免首页两次加载的问题,而其它动态内容则采用 Ajax 加载。整个流程中数据都是通过 JSON 格式传递的,但是在不同的环节中需要采用不同的方式并遇到一些不同的问题,本文主要做记录、

  6. Python 爱好者专用技术头条

    2016-05-06

    又做了新玩具! 在写公众号自动回复的时候就有想法进一步扩展这一平台的应用,中间断断续续写了几个爬虫,这两天把流程整理了一下,做了一个纯 Python 版本的 Hacker News 🐍🐍🎉🎉,所谓纯 Python 是指只收集、分享与 Python 有关的链接! 技术分享的网站有很多,每天涌入的信息也越来越多,我希望可以把筛选信息的工作交给程序。考虑到版权等问题,网站只保留了链接信息,不抓取全文;用户登录只对接了 GitHub 登入,域名没有备案,所以国内服务大部分不可用。

  7. 可视化图的基本算法

    2016-04-25

    0. About 关于图的基本表示与基本算法,包括图的邻接表和邻接矩阵表示法;图的广度优先(BFS)与深度优先(DFS)搜索算法;最小权生成树问题的 Kruskal 算法与 Prim 算法;单源最短路径的 Dijkstra 算法。 1. 邻接表与邻接矩阵表示 邻接表表示法就是将图的每个节点保存在数组中,每个节点指向与之相邻的节点所组成的链表: class GraphTable: def __init__(self,

  8. 字符串匹配算法

    2016-04-24

    我们经常需要确定一个较短的字符串(模式串)在一个较长字符串(主串)中是否出现或者出现的最小位置。例如 Python 中字符串类型的的 find 和 index 方法: s = 'I Love Python' print(s.find('Py')) # 7 print(s.find('Pyc')) # -1

  9. Python 线程与协程

    2016-04-07

    选自:PyTips 0x12 & 0x13 线程 要说到线程(Thread)与协程(Coroutine)似乎总是需要从并行(Parallelism)与并发(Concurrency)谈起,关于并行与并发的问题,Rob Pike 用 Golang 小地鼠烧书的例子给出了非常生动形象的说明。简单来说并行就是我们现实世界运行的样子,每个人都是独立的执行单元,各自完成自己的任务,这对应着计算机中的分布式(多台计算机)

  10. 机器学习笔记-模型评估与模型选择

    2016-03-28

    评价一个机器学习模型的好坏需要特定的评估方法,并据此对模型进行选择,从而得到一个更好的模型。本文主要是关于模型评估与模型选择的笔记,以及利用 scikit-learn 对 Logistic 回归进行的结果进行交叉检验。 1. 训练误差,测试误差与泛化误差 学习器(模型)在训练集上表现出来的误差称为训练误差(training error)或经验误差(empirical error),这种误差可以通过损失函数进行描述: $$E_{training}(f) = \frac{1}

侧栏导航