2019年7月25日
二叉查找树(英语:Binary Search Tree),也称为二叉搜索树、有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree)
性质 指一棵空树或者具有下列性质的二叉树:
若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值
若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;
任意节点的左、右子树也分别为二叉查找树;
没有键值相等的节点。
优势 二叉查找树相比于其他数据结构的优势在于查找、插入的时间复杂度较低。为O(logn)
。二叉查找树是基础性数据结构,用于构建更为抽象的数据结构,如集合、多重集、关联数组等。
二叉搜索树的查找算法 在二叉搜索树b中查找x的过程为:
若b是空树,则搜索失败,否则:
若x等于b的根节点的数据域之值,则查找成功;否则:
若x小于b的根节点的数据域之值,则搜索左子树;否则:
查找右子树。
在二叉搜索树插入节点的算法 向一个二叉搜索树b中插入一个节点s的算法,过程为:
若b是空树,则将s所指节点作为根节点插入,否则:
若s->data等于b的根节点的数据域之值,则返回,否则:
若s->data小于b的根节点的数据域之值,则把s所指节点插入到左子树中,否则:
把s所指节点插入到右子树中。(新插入节点总是叶子节点)
……
阅读全文
2019年7月25日
使用 1 2 3 npm install vue-lazyload --save 1 2 3 4 5 6 7 //注册插件 import vueLazyload from 'vue-lazyload' Vue.use(vueLazyload); 1 2 3 4 5 //在需要懒加载的图片上 <img v-lazy="imgUrl"> 参数说明 注册插件的时候,是可以传入第二个配置参数的
1 2 3 Vue.use(vueLazyload,{}) 可选的参数如下:
preLoad:类型Number,默认1.3. 表示lazyload的元素距离页面底部距离的百分比.计算值为(preload - 1).
attempt:图片加载失败后的重试次数.默认为3.
error:类型string.图片加载失败后的显示的失败图片路径.
loading:类型string.图片正在加载中显示的loading图片的路径.
listenEvents:类型array.默认[‘scroll’, ‘wheel’, ‘mousewheel’, ‘resize’, ‘animationend’, ‘transitionend’, ‘touchmove’].即是在监听上述事件中,判断图片是否在preload的位置.如果你不想在那么多事件中判断,可以指定一个或者几个.例如如果你给这个属性只指定[‘touchmove’].那么scroll 屏幕不会加载图片,只有手指滑动屏幕才会加载图片.
adapter:注册img 的loading,loaded,error三个状态的回调函数,参数会暴露懒加载的img元素,可以对其进行操作.
filter: img未加载之前,解析到src 的时候注册的回调函数.可以在加载图片之前,对src进行修改.注册在filter下的所有的函数都会执行
lazyComponent:类型Boolean.是否启用懒加载组件.组件中的内容只有在出现在preload的位置中才会加载组件.这个lazyloadComponent 组件有个缺点就是,组件在加载前是什么都不渲染的,这样子的话,有可能会影响布局,以及加载前到加载后的切换不好,有点突兀和生硬.……
阅读全文
2019年7月25日
第一种方法使用内置函数locals() 'testvar' in locals().keys()
第二种方法使用内置函数dir() 'testvar' in dir()
第三种方法使用内置函数vars() vars().has_key('testvar')……
阅读全文
2019年7月25日
在使用protobuf时,我们自己了各种Options的时候,在生成的python文件会在同级目录中引用,所以这个时候我们不能做到,加个__init__.py文件了事然后在文件里面写 import mudole.file这样的代码,因为我们自己无法控制
解决方法如下,在__init__文件中加入以下代码:
1 2 3 4 5 6 7 import sys import os sys.path.append(os.path.dirname('mudole_name/')) ……
阅读全文
2019年7月25日
from json import dumps
from flask import Response
from flask_api import status
from protocol.errors_pb2 import *
class ErrorResponse(Response):
def __init__(self, err_code, err_msg=''):
result = dumps(dict(code=err_code, msg=err_msg))
Response.__init__(self, result, mimetype='application/json')
class JSONResponse(Response):
def __init__(self, data, msg=''):
result = dumps(dict(data=data, code=Error_None, msg=msg))
Response.__init__(self, result, mimetype='application/json')
class UnauthorizedResponse(Response):
def __init__(self):
data = dumps(dict(msg="need login", code=Error_NeedLogin, data=None))
Response.__init__(self, data, mimetype='application/json', status=status.HTTP_401_UNAUTHORIZED)
注意:一定要使用json.dumps来转换最后的结果……
阅读全文
2019年7月25日
上传图片 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 func imagePost(c *gin.……
阅读全文
2019年7月25日
model 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 from django.db import models class Picture(models.Model): path = models.ImageField(upload_to='share_pictures/') name = models.CharField(max_length = 50) class Meta: db_table = "picture" def __str__(self): return self.name forms 1 2 3 4 5 6 7 8 9 10 11 from django import forms class ImageForm(forms.……
阅读全文
2019年7月25日
沟通需求 不论是什么样的团队,按照道理来说一定会有一个和你对接的产品
沟通大致的轮廓,一般来说,产品不会把东西都会给你说清楚,因为很多人都是很被动的,喜欢一问一答的方式。
知道了一个需求的大致内容,现在应该去每一句话的去分享需求文档,然后发掘里面的细节,查看会不会影响到程序的实现,或者会影响到其他的功能,这些都是我们开发人员需要去注意的。
现在已经确认程序能够去实现这个需求,那么我们应该做什么呢?先分析我们需要如何去实现,并且应该多想想能不能有其他的实现方案,哪一个更好?
要保证一个功能完美的在线上运行,我们最需要的是测试,我们在开发前就应该我们应该测试的案例,一开始你可能写不出来,无所谓,等你慢慢成为老油条,你一眼就知道要做些啥,而且这个东西不要只停留在想想中,一定要记下来,在开发过程中你还会想到许许多多的测试案例,也都记下来,不要偷懒,偷懒的后果出现bug会导致你被好几个人怼,包括测试。
开发,有前面的测试案例的发散,在写代码的过程你会发现,你会注意很多问题,包括边界条件。
自主测试,其实一个功能,最了解他的除了产品,可能就是你自己了,你知道怎么实现的,你最应该知道怎么测试,而且,测试人员也会有打盹的时候,很多时候我自己测试过后给了测试,依然会有bug,也就是说,测试人员的测试案例依然还是在我写的测试案例中,在不断积累的下,你会发现你的一个小需求可能会测试很多个测试案例,这是一个好事,这样你的功能才会在线上健壮的跑下去。
……
阅读全文
2019年7月25日
any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。
元素除了是 0、空、FALSE 外都算 TRUE。
如果想要测试一个list中是否有一个是1可以使用any,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 x, y, z = 0, 1, 0 if x == 1 or y == 1 or z == 1: print('passed') if 1 in (x, y, z): print('passed') # These only test for truthiness: if x or y or z: print('passed') if any((x, y, z)): print('passed') ……
阅读全文
2019年7月25日
Python 3
1 2 3 4 5 6 7 x = {'a': 1, 'b': 2} y = {'b': 3, 'c': 4} z = {**x, **y} Python 2
1 2 3 z = dict(x, **y) Python中只能处理这种简单的合并,如果出现相同的key,Python会选择覆盖
……
阅读全文