Tagged in

python

jupyter下安装pyspark

  • 安装 pyspark, pip install pyspark 即可,具体可见链接
  • jupyter下用spark有两种方式,见链接

    • 配置一些环境变量,直接使用
    • findspark
    • 添加kernel
  • 为了简单一点,我用的第二种。现在目标不在环境安装上

    • pip install findspark
    • 这个时候在jupyter中调用sc = SparkContext会报错,告知无法找到SPARK_HOME
    • 修改 /home/yudun1989/miniconda3/envs/py3/share/jupyter/kernels/python3/kernel.json
    • 把conda中pyspark的位置填写上 "env": {"SPARK_HOME":"/home/yudun1989/miniconda3/envs/py3/lib/python3 …

LRU Cache

理论讲解

设计或实现一个LRU Cache

Implement An LRU

基本概念

  • Least Recently Used(最近最少使用) 。他是一个缓存替换算法
  • Cache有固定大小,当有一个新值被set的时候,会需要替换各种位置
  • 一般使用双向链表来实现,O(1)查询, O(1)修改、更新

复习链表和数组

打印一个链表如何打印

while node != None:
    print(node.val)
    print("->")
    node = node.next
print("null")

BloomFilter布隆过滤器以及其他去重方法

bitmap

bloomfilter

解读bloomfilter

url去重与bloomfilter

深入理解哈希表

编程珠玑

哈希表解决某一个value是否存在的问题

  • 哈希表一般采用链地址法实现:即出现碰撞之后,在位置上增加单链表
  • 哈希表的复杂度为平均O(1),因为假设有很大的碰撞,会导致某一个链过长,则会导致遍历时间变长
  • 所以哈希表时间复杂度其实是和具体的哈希算法相关

bitmap

  • 如果只是为了判断一个值是否存在,那么比方说用md5算法,然后存储的值直接用一个bool表示就可以,也就是0-1值表示是否重复
  • 一个整形为32位,如果按照bitmap的方式存储整形数据,那么只需要2^32bit=2^29byte=512MB的大小
  • 这样非常省内存,而且存储空间也会比较大,缺点就是md5碰撞
  • 5TB的硬盘上放满了数据,请写一个算法将这些数据进行排重。如果这些数据是一些32bit大小的数据该如何解决?如果是64bit的呢?,需要计算,因为64bit和32bit完全不是一个量级,如果用bitmap的话

bloomfilter

  • 思想为:将一个元素按照k个哈希函数对应到k个比特位上,当检查的时候,检查这k个比特位是否都为1,如果在,那么很有可能元素在集合中
  • 图示 …

python的magic方法总结

https://rszalski.github.io/magicmethods/

某平台验证码识别

  • 验证码问题,如果有两个图片,如何找到这两张照片契合的位置?也就是大图的缺口坐标

large small

主要参考 这篇文章,不过他这个代码写的太复杂了。本身实质就调用了一个opencv的matchTemplate函数

# encoding=utf8

import cv2
import numpy as np


def show(name):
    cv2.imshow('Show', name)
    cv2.waitKey(0)
    cv2.destroyAllWindows()


def main():
    small = cv2.imread("small.png", 0)
    large = cv2.imread("large.jpeg", 0)
    w, h = small.shape[::-1]  # 拿到小图的宽高
    # small = cv2 …

moviepy的vortex动画详解

import numpy as np
from moviepy.editor import *
from moviepy.video.tools.segmenting import findObjects


screensize = (720,460)
txtClip = TextClip('Cool effect',color='white', font="Amiri-Bold",
                   kerning = 5, fontsize=100)
cvc = CompositeVideoClip( [txtClip.set_pos('center')],
                        size=screensize)


# helper function
rotMatrix = lambda a: np.array( [[np.cos(a),np.sin(a …

matplotlib学习

参考:

  • http://codingpy.com/article/a-quick-intro-to-matplotlib/
  • https://morvanzhou.github.io/tutorials/data-manipulation/plt/1-1-why/

np.linspace

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None):返回一个numpy的array,将start到stop均匀的分成num份

>>> np.linspace(2.0, 3.0, num=5)
array([ 2.  ,  2.25,  2.5 ,  2.75,  3.  ])
>>> np.linspace(2 …

使用树莓派控制空调

This is the content of my super blog post.