苟利国家生死以,岂因祸福避趋之

Panda Home

不用 Python 自带的 Dict 实现自己的 HashTable

发布于 # 聊聊技术
标签: # Dict # HashTable # Python # Uber # 哈希表 # 面经
不用 Python 自带的 Dict 实现自己的 HashTable
Photo by Chris Ried on Unsplash

这个题目其实源于很久之前的一次 Uber 面试,码工换工作无非就是刷 leetcode ,研究如何翻转二叉树之类的算法问题,所以头一次在电话里听到这道题的时候还是挺耳目一新的。当时顺利写出来了,也通过了电面,但觉得还是有不完善的地方,比如说代码不够 “Python” 等,所以趁着周天晚上闲着无事,又拿出来写了写。 HashTable 本身大家应该都很熟悉了,中文叫”哈希表“或者”散列表“,具体翻译看教材编写者的个人喜好。众所周知这个数据结构用来存储”键-值“结构的数据,可以做到常数级时间复杂度的查找,在日常搬砖中算是主力工具。实现一个 HashTable 其实就是实现两个部分 Hash 函数。这个函数能够读入一个可被 hash 的变量,输出一个整数。在本次实现中暂不考虑这一块,用 Python 自带的 hash 函数偷个懒 Hash 冲突的解决机制。成熟的方法有很多种,在这里只考虑

Airflow 初探

发布于 # 聊聊技术
标签: # Python # Apache Airflow
Airflow 初探
Photo by Lauren Mancke on Unsplash

2021-07-01 更新 时至今日, Airflow 已经进化到了 2.0 版本,并且在官方文档中提供详尽的如何以 Docker 运行的方式。以今天的眼光看来,这应该是更容易上手,对服务器环境需求及改动最小的一种运行方式。并且云厂商像 AWS 和 GCP 也推出了自己的 Airflow 集群托管服务,如果自己的生产环境搭建在这些平台上,建议直接使用他们的托管服务,既能免除自己的运维负担,也不用担心跟某个云厂商绑定,毕竟上面的 DAG 都是自己的,迁移不需要太大代价。 正文 距离上回写小作文过了多半年,这几个月来发生了一些事情,最大的就是这个月初我换了工作,从 Palo Alto 换到了 Mountain View ,附近吃的喝的玩的较之以前有了很大的提升。但总归主业是过来干活的,上班大概三周了,很开心刚入职就让我研究开发一个新项目,其核心就是 Airflow ,一个有向无环图任务( Di

“豆瓣电影评级”插件开发始末

发布于 # 随便聊聊
标签: # Chrome # Firefox # MPAA # 插件 # 豆瓣 # IMDb
“豆瓣电影评级”插件开发始末
Photo by Jeremy Yap on Unsplash

2023年 8 月 7 日更新 由于最近没有时间维护此插件,因此下架了浏览器商店。 2018 年 4 月 17 日更新 趁着今天风水好,对插件进行了一些更新,使之支持知乎电影页面的评级。看客可能诧异,知乎不是装逼的地方吗?什么时候有电影信息了?其实这个更新也是临时起意,在浏览电影《湮灭》时,发现页面上居然有 IMDb 网站的评分,该标签还是一个 IMDb 页面的链接,这就说明能从网页上找到电影的 IMDb id ,那我自然就不客气了,加了一段有点类似于豆瓣电影页面的解析,同时为了不破坏原有页面的观感,只是提供一个评级的小标签,该标签指向百度百科的 MPAA 介绍页面,这样用户也能轻松了解每个符号代表什么意思。实际效果如图所示 同时因为插件也开始支持豆瓣之外的网站,继续叫“豆瓣电影评级”不合适,就更名为“MPAA 电影评级”。 正文 二月份在国内过了个年,捎带和同学去看了场非常精彩的电影《

我的 2017

发布于 # 随便聊聊
标签: # 2017 # 年终总结 # 谈笑风生
我的 2017
Photo by freestocks.org on Unsplash

谈笑风生又一年 过去一年也没有什么别的,大概下面几件事 抽中了美帝的工作签证,纯粹历史的进程,和自我奋斗没什么关系 在公司搞了两个稍大的项目,忽悠公司涨了工资,公司自己多给了我一堆股票,没上市,没价值 小公司穷得很,从没有年终奖,自己买买基金股票给自己发了一个月的税前工资当奖金了 在 Coursera 上拿了两个证书,一个关于算法的,一个关于数据科学入门的,现在在上一门前端的课,还有一周结课,看来在今年是拿不到了 通过康奈尔的课程入门了 OCaml 这门语言,通过它学习了从一些新的角度来看待问题,还没写过什么实战类的代码。它的静态强类型我很喜欢,希望在新的一年里能用一个项目来练习 应经理建议开坑 Clojure ,语言很强大,现成的函数很多,唯一的缺点大概就是括号太多( Lisp 系的通病)。不过也算是在公司的代码库里写了几行,同样需要多练习,功能强大了意味着要熟练掌握的难度就更大(

DynamoDB 中遇到的“坑”

发布于 # 聊聊技术
标签: # boto3 # DynamoDB # database # AWS # Python
DynamoDB 中遇到的“坑”
Photo by Kevin Ku on Unsplash

DynamoDB 的优势无需赘言,在亚麻的 paper 和 AWS 的技术文档中已经讲了无数遍,大量的工业实践经验也证明了 DynamoDB 确实是一款非常优秀的数据库。所以这篇文章的重点放在了个人使用 DynamoDB 的过程中遇到的坑。其实严格来讲很多不应该算“坑”,只是因为之前没有接触过,所以用起来多少感到些许不适应,简单起见,也归为了“坑”的一类。在使用中,我的环境是 Python 2.7.14 ,连接数据库的 driver 使用的是 boto3 。 DynamoDB 不支持 Python 中的 tuple 类型,需要将其转换为 list 再进行写入。这样做可以理解,虽然在 Python 中两种数据结构不同,但在存储的角度来看并无区别,的确没有必要实现两种同样的数据类型。 DynamoDB 不支持空字符串,但是支持 None ,因此实际生产中要么把空字符串的域(列)删掉,要