粘包问题TCP协议在传输过程中会出现数据粘包问题讲一下TCP和UDP的区别,都是传数据的协议,没有好坏之说,只是不同的应用需求可能会更好选择哪一个协议TCP:适合传输数量大,需要建立连接,会出现粘包问题,粘包问题可以解决,确定传入的长度,接收同样长度就可以保证一次性传输完UDP:适合传输数据量小,没有粘包,不需要连接,一次性传输,下一次就是新的数据,弊端就是数据丢失,不安全QQ是用什么协议呢?按理应该可以用UDP协议,但是实际用的是TCP协议,这是历史遗留
系统 2019-09-27 17:53:03 2067
MongoDB:非关系型数据库文件管理阶段:优点:可以长期保存存储大量数据使用简单缺点:数据一致性差数据大的时候,查找修改不便随着时间增长,冗余度大数据库管理阶段:优点:降低冗余度提高增删改查效率易扩展方便调用和自动化处理缺点:上手相对复杂数据:能够输入到计算机中,并被识别处理的信息集合数据结构:计算机存储、组织数据的方式;数据库:按照一定数据结构存储管理数据的仓库。在数据库管理系统管理和控制下,在一定介质上的数据集合数据库管理系统:管理数据库的软件,用于
系统 2019-09-27 17:52:59 2067
queue介绍queue是python中的标准库,俗称队列。在python中,多个线程之间的数据是共享的,多个线程进行数据交换的时候,不能够保证数据的安全性和一致性,所以当多个线程需要进行数据交换的时候,队列就出现了,队列可以完美解决线程间的数据交换,保证线程间数据的安全性和一致性。注意:在python2.x中,模块名为Queuequeue模块有三种队列及构造函数Pythonqueue模块的FIFO队列先进先出。queue.Queue(maxsize)LI
系统 2019-09-27 17:52:43 2067
原文链接:https://www.numpy.org.cn/本节内容:数组的创建数组操作(获取数组属性,数组运算,数组复制,数组展开等等)获取数组特定元素1、创建数组(1)常用的创建一维数组的方式#可以将任意类型的序列(列表、元组、字典、集合、字符串)传递给np.array()a1=np.array([1,2,3,4])#传递列表a2=np.array((1,2,3,4))#传递元组a3=np.array([1,2,3,4],dtype=float)#在创
系统 2019-09-27 17:52:35 2067
1、python装饰器最基础的函数1defsum1():2sum=1+23print(sum)4sum1()查看函数执行用了多长时间,写了几句代码插进去了:1importtime23defsum1():4start=time.clock()5sum=1+26print(sum)7end=time.clock()8print("timeused:",end-start)910sum1()可是随着继续翻看,对越来越多的函数感兴趣了,都想看下他们的运行时间如何,
系统 2019-09-27 17:52:26 2067
目录第十五章、Python多线程同步锁,死锁和递归锁1.引子:2.同步锁3.死锁引子:4.递归锁RLock原理:不多说,放代码总结:5.大总结第十五章、Python多线程同步锁,死锁和递归锁1.引子:1.创建线程对象t1=threading.Thread(target=say,args=('tony',))2.启动线程t1.start()后面又说了两个点就是join和守护线程的概念以上就是python多线程的基本使用说明:前面说的两个功能是相互独立的,
系统 2019-09-27 17:51:52 2067
最近刚好有朋友遇到个global相关的问题,这里简单学习一下global关键字的用法。想要更好的了解global关键字,首先要熟悉python的全局变量与局部变量的概念。global关键字的作用是可以申明一个局部变量为全局变量,下面看一下实例一、变量作用域的说明这里简单提一下变量作用域的概念,有兴趣的小伙伴,可以查一下相关的博客1、局部变量defa():##菊部变量-,-local=1print(local)##全局无法使用,只有自己可用print(lob
系统 2019-09-27 17:51:01 2067
本文中,我将尝试展示用Docker开发python应用(主要是Web应用)的可行方法。虽然我本人专注于Python的Flask微框架,但本文目的是演示如何通过Docker更好地开发和共享应用程序,(由任何语言和框架开发的应用程序)。Docker通过封装依赖项,大大减少了开发环境和正式产品的差距。大多数Python开发人员在开发中使用virtualenv。它提供了一种易用的机制让应用程序使用自己专用的依赖项,这些依赖项可能与在其它应用程序或操作系统存在冲突(
系统 2019-09-27 17:50:28 2067
废话不多说,直接上代码...#用递归实现2分查找的算法,#以从列表a=[1,3,4,6,7,8,9,11,15,17,19,21,22,25,29,33,38,69,107]#查找指定的值defcal(li,item):#传入列表和需要查询的值print(li,item)ifnotli:#每次传入都要为一个新生成的列表returnFalsemixid=len(li)//2#获取列表长度每次对半分后进行判断大小ifitem==li[mixid]:#如果传入的
系统 2019-09-27 17:50:18 2067
环境spyder(python3.6)代码:fromflaskimportFlask,requestimportjsonimportsysdefaultencoding='utf-8'importloggingdeftt(name,age):result_str="%s今年%s岁"%(name,age)returnresult_strapp=Flask(__name__)@app.route("/test_1.0",methods=["GET"])defc
系统 2019-09-27 17:49:36 2067
threadpoolmakeRequests的原型如下defmakeRequests(callable_,args_list,callback=None,exc_callback=_handle_thread_exception),可以看出第一个参数是线程将要启动任务函数,第二个是要传个任务函数的参数列表,第三个是回调函数,可以用于收集任务结束后的结果或者环境清理args_list中每一项要么是一个单独的变量,要么是一个2个元素的元组,该元组第1项是位置参
系统 2019-09-27 17:49:19 2067
目录一、数据类型内置方法1.1数字类型内置方法1.1.1整形1.1.2浮点型1.2字符串类型内置方法1.3列表类型内置方法1.4元组类型内置方法1.5字典类型内置方法1.6集合类型内置方法二、数据类型分类三、深浅拷贝3.1拷贝3.2浅拷贝3.3深拷贝四、异常处理4.1语法错误4.2逻辑错误一、数据类型内置方法1.1数字类型内置方法1.1.1整形作用:定义年龄/身高/体重/id号定义方式:age=18age=int('18')方法:+-*/%//**多个值o
系统 2019-09-27 17:49:10 2067
一、安装Python1)官网下载安装2)配置环境变量(未勾选自动配置需要手动配置)3)检查是否安装成功(交互窗口中输入Python-v)二、Selenium3.X+FireFox驱动+geckodriver1、安装selenium:1)W+r输入cmd,然后输入pipinstallselenium2)安装FireFox,添加附加组件seleniumIDE、FireBUG3)https://github.com/mozilla/geckodriver/rel
系统 2019-09-27 17:48:46 2067
简单地一句话总结:1.假如你想帮他尽快找个活儿,赚到钱,推荐PHP。2.假如你想让他成为一个高效工程师,推荐Python。3.假如你想让他爱上他的工作,推荐Ruby。语言的选择:编程语言非常重要,不要认为他们都图灵等价,用起来都一样。实际上,好的语言,带给你的东西是超乎想像的。下面是一些看法:1.程序员的时间远比机器的时间宝贵:选择开发效率最高的语言吧,不要过于在乎运行性能,如果你开发不出东西,那么跑得多快也没用。2.优雅的抽象胜于简单的堆砌:这意味着你的
系统 2019-09-27 17:48:11 2067
定义代码如下importredisimportcontextlibimportpickleimportos,socket,threadingclassRedisLock:def__init__(self,lock_name,host='',port=6379,db=0):self.lock_name=lock_nameself.redis=redis.Redis(connection_pool=redis.ConnectionPool(host=host,
系统 2019-09-27 17:47:19 2067