一、Python 包简介 1、Python 包引入 之前 介绍了 Python 模块 , 每个 Python 源码文件 , 都可以定义为一个 Python 模块 ; 如果 定义的 Python 源码模块很多..., 有几百上千个 , 则会出现管理繁琐 , 混乱的问题 ; 这里引入 新的代码结构 " Python 包 " ; 2、Python 包概念 Python 包 概念 : 包是 Python 模块 Module...的扩展 , 将若干 相关的 Module 模块 组织起来 形成一个 Python 包 , 可以更好地 组织 和 管理 Python 代码 ; 在 Python 包中 可以 定义 变量 / 函数 / 类...的功能 ; Python 标准库 包含了许多常用的包和模块 , 如 : os sys datetime math 第三方包可以通过 Python Package Index ( PyPI ) 进行 下载...语句 导入 包 或 包中的模块 ; import 导入包 : 导入后 , 可以 通过 包名.模块名.功能名 访问指定功能 ; import 包名.模块名 from 导入包 : from 包名 import
闭包是自含的函数代码块,可以在代码中被传递和使用 闭包和swift的对比 Swift 中闭包与OC的 block 比较相似 Swift中闭包是一个特殊函数,OC中block是一个匿名函数 闭包和block...函数和闭包都是引用类型 你将函数或闭包赋值给一个常量还是变量,你实际上都是将常量或变量的值设置为对应函数或闭包的引用 //这两个常量或变量都引用相同的闭包 let method = result 逃逸闭包...一个传入函数的闭包如果在函数执行结束之后才会被调用,那么这个闭包就叫做逃逸闭包 (通俗点讲,不在当前方法中使用闭包,而是在方法之外使用) 定义函数的参数为逃逸闭包时,只需要在参数名之前标注 @escaping...//我是逃逸的闭包 逃逸闭包是在函数执行之后再执行,于是这段代码最后输出“我是逃逸的闭包” 自动闭包 自动闭包:自动创建一个闭包用来包裹一个表达式,这种闭包不接受任何参数,当闭包被调用时,返回包裹在闭包中的表达式的值...自动闭包让你能够延迟求值,因为直到你调用这个闭包,代码段才会被执行 这种便利语法让你能够省略闭包的花括号,用一个普通的表达式来代替显式的闭包 var arr = ["a","b","c"] print
一、包 概念:包其实就是文件夹,方便对代码进行分类 定义格式: 格式:package 包名; (多级包用“.”分开) 范例:package com.company; 二、导包 举例: Cikian类和...Test类在两个不同的软件包里 如果直接使用Test类创建对象会报错,这时便需要导包 导包有两种方式: public class Cikian { cn.company.Test te =...new cn.company.Test(); }; 但是习惯使用第二种导包方式,即: import cn.company.Test; public class Cikian { Test te...= new Test(); }; 导包的格式: 格式:import 包名; 范例:import cn.company.Test;
一、包(Package)的概念、2种建立包的方式1》包概念:包是一个包含多个模块的特殊目录,目录下有一个特殊的文件__init__.py1.1包名的命名方式:命名方式和变量名一样,小写字母+_(小写字母加个下划线...,不要以数字开头)1.2使用包好处:使用import 包名 可以一次性导入包中所有的模块2》2种建立包的方式2.1 使用目录手动建立包步骤:点击我自己的文件名PythonProject鼠标右键——》点击...2.2 自动建立包(方便快捷)步骤:点击我自己的文件名PythonProject鼠标右键——》点击New ——》 点击Python Package——》在选框中写上包的名字pg_message回车——》...总结: 在python中,一个包含多个模块的文件,然后再加上一个__init__特殊文件,就组成了一个包,在给包起名时一定要使用小写字母加下划线的方式,不能以数字开头----二、包的使用(封装模块、设置...__init__、外界导入包)2.1》__init__.py要在外界使用包中的模块,需要在__init__.py中指定对外界提供的模块列表# 从 当前目录 导入 模块列表from . import 模块名
粘包问题 在 TCP 这种字节流协议上做应用层分包是网络编程的基本需求。...因此,“粘包问题”是个伪命题 短连接分包 对于短连接的 TCP 服务,分包不是一个问题,只要发送方主动关闭连接,就表示一个消息发送完毕,接收方 read() 返回0,从而知道消息的结尾 TCP 发送机制
一、什么是粘包拆包? 粘包拆包是TCP协议传输中一种现象概念。TCP是传输层协议,他传输的是“流”式数据,TCP并不知道传输是哪种业务数据,或者说,并不关心。...在这个前提下,就有可能发生发生同一个业务数据被分割程多个数据包,或者多个业务数据被打包到同一个数据包进行发送。但是对于业务数据接收方,则必须拥有能够重新拆解或者组装完整业务数据的能力。...这个现象,我们称之为TCP粘包拆包。 ? 如上图,三个业务数据A、B、C被打包成一个数据包进行传输;D被分割为连个数据包进行传输。 所以综上,影响粘包拆包发生的原因: ?...关于MTU MSS相关知识可以参照:MTU(Maximum transmission unit) 最大传输单元 二、怎么处理粘包拆包? 传输层是业务无感知的,因此粘包拆包只能由业务层处理。
stringr包是Hadley Wickham大神贡献的R包之一,主要用于字符串的处理。对于经常需要对数据进行预处理的分析人员来说,简直是一把“利器”,可谓是上能屠龙,下能剔牙。...stringr包在我工作中,是属于频繁使用的R包之一。简单的用法也是深入我心,强烈推荐使用该包进行字符串的预处理。 接下来,根据我在工作中使用到的stringr包的场景,介绍一下这些函数的用法。...多用于新建列 #检测df df$b df a b1 1 数字2 2 数字3 3 数字4 a 非数字5 b 非数字6 c 非数字 以上是本人较常用的stringr包函数,可以发现该包的语法简洁...该包不仅仅只有以上几个函数,还有其他函数,只是工作中较少用到,所以未列举出来。可见stringr包确实强大,提供了一整套字符串的处理方案。...强烈推荐stringr包,相信它可以给你提供你预想不到的便利与高效。
《Python包》一节中已经提到,包其实就是文件夹,更确切的说,是一个包含“__init__.py”文件的文件夹。...由此,我们就成功创建好了一个 Python 包。 创建好包之后,我们就可以向包中添加模块(也可以添加包)。...Python包的导入 通过前面的学习我们知道,包其实本质上还是模块,因此导入模块的语法同样也适用于导入包。...无论导入我们自定义的包,还是导入从他处下载的第三方包,导入方法可归结为以下 3 种: import 包名[.模块名 [as 别名]] from 包名 import 模块名 [as 别名] from 包名...同样,既然包也是模块,那么这种语法格式自然也支持from 包名 import *这种写法,它和 import 包名 的作用一样,都只是将该包的 __init__.py 文件导入并执行。
源码包是你自己的计算机编译的,而且是你自己定义的功能,所以效率更高! 而rpm包是发行公司编译的,并不一定适合你自己的服务器,所以效率稍低!...所以只要是对外提供服务的软件,如lamp环境就应该使用源码包安装。而本机使用的软件如gcc,用rpm包安装更方便
tar:tar是*nix下的打包工具,生成的包通常也用tar作为扩展名,其实tar只是负责打包,不一定有压缩,事实上可以压缩,也可以不压缩,通常你看到xxxx.tar.gz,就表示这个tar包是压缩的,...并且使用的压缩算法是GNU ZIP,而xxxx.tar.bz2就表示这个包使用了bzip2算法进行压缩,当然这样的命名只是一种惯例,并非强制。...jar:即Java Archive,Java的包,Java编译好之后生成class文件,但如果直接发布这些class文件的话会很不方便,所以就把许多的class文件打包成一个jar,jar中除了class...文件还可以包括一些资源和配置文件,通常一个jar包就是一个java程序或者一个java库。...war:Web application Archive,与jar基本相同,但它通常表示这是一个Java的Web应用程序的包,tomcat这种Servlet容器会认出war包并自动部署。
目录 什么是包?(熟悉) 为什么要有包?(熟悉) 如何用包?...(熟悉) 模块和包 扩展模块功能 修改__init__.py文件 导入包内包 导入包内包的模块 绝对导入和相对导入 注意事项(掌握) 练习(掌握) 什么是包?...(熟悉) 包是模块的一种形式,包的本质就是一个含有.py的文件的文件夹。 为什么要有包?...如何用包?(熟悉) 模块和包 导入模块发生的三件事: 创建一个包的名称空间 执行py文件,将执行过程中产生的名字存放于名称空间中。...在当前执行文件中拿到一个名字aaa,aaa是指向包的名称空间的 导入包发生的三件事: 创建一个包的名称空间 由于包是一个文件夹,无法执行包,因此执行包下的.py文件,将执行过程中产生的名字存放于包名称空间中
最后记得勾上代理设置即可) 3.抓包 如下图:拦截了一个请求,可以通过按钮Forward(放行请求),Drop(弃掉拦截)。...可以直接修改其中的数据进行改包,然后Forward。 params,headers两个选项是以key-value的形式,对raw数据的整理。...(使用repeater可以更方便进行多次改包测试,无需再通过浏览器拦截请求。这里可以模拟请求数据,直接发送请求。)
jar 与 zip 异同 jar 包主要用途 2. war 包 war 包部署优势 开发阶段不适合使用 war 的原因 部署 war 包到 tomcat 3. jar 包 vs. war 包 SpringBoot...jar 包其实就是 java 项目压缩包,是通过 java 程序压缩产生的压缩包。jar 包是通过 JavaSE 程序打成的包。...将 jar 包引入到自己的项目中,就可以直接使用这些 jar 包中的类和属性(从前这些 jar 包都会被扔到 lib/ 目录下)。 2. war 包 war 包就是 web 项目压缩包。...war 包是 Sun 公司提出的一种 web 应用程序格式,与 jar 类似,也是很多文件的压缩包。 war 包是 JavaWeb 程序打的包。...部署 war 包到 tomcat 3. jar 包 vs. war 包 jar 包 war 包 定位 类的归档文件 web 应用程序/ Web 归档文件 查看内容方式 WinRaR 可以直接打开 需要先把后缀名改为
这就是粘包和半包。 那么,什么是粘包和半包? 粘包和半包定义如下: 粘包和半包,指的都不是一次是正常的 ByteBuf 缓存区接收。...粘包和半包 图解 上面的理论比较抽象,下面用一幅图来形象说明。 下图中,发送端发出4个数据包,接受端也接受到了4个数据包。但是,通讯过程中,接收端出现了 粘包和半包。...接收端收到的第一个包,正常。 接收端收到的第二个包,就是一个粘包。 将发送端的第二个包、第三个包,粘在一起了。 接收端收到的第三个包,第四个包,就是半包。将发送端的的第四个包,分开成了两个了。...Netty 中的拆包器 拆包这个工作,Netty 已经为大家备好了很多不同的拆包器。本着不重复发明轮子的原则,我们直接使用Netty现成的拆包器。...基于数据包长度的拆包器 LengthFieldBasedFrameDecoder 将应用层数据包的长度,作为接收端应用层数据包的拆分依据。按照应用层数据包的大小,拆包。
文章目录 一、关系闭包 二、自反闭包 三、对称闭包 四、传递闭包 一、关系闭包 ---- 包含给定的元素 , 并且 具有指定性质 的 最小的 集合 , 称为关系的闭包 ; 这个指定的性质就是关系 R...自反闭包 r ( R ) : 包含 R 关系 , 向 R 关系中 , 添加有序对 , 变成 自反 的 最小的二元关系 对称闭包 s ( R ) : 包含 R 关系 , 向 R 关系中 ,...添加有序对 , 变成 对称 的 最小的二元关系 传递闭包 t ( R ) : 包含 R 关系 , 向 R 关系中 , 添加有序对 , 变成传递 的 最小的二元关系 定义中有三个重要要素 : 包含给定元素...具有指定性质 最小的二元关系 二、自反闭包 ---- 自反闭包 r ( R ) : 包含 R 关系 , 向 R 关系中 , 添加有序对 , 变成 自反 的 最小的二元关系 R \subseteq...R )) 关系图 : 在 R 的基础上 , 添加有些有序对 , 使 r(R) 变成 自反 的 最小的二元关系 , 自反的条件是所有的顶点都有环 , 这里为四个顶点都添加环 ; 三、对称闭包
在tomcat根目录下部署war包,通过http://ip:port的方式访问 网上说的方法很多,这里记录一下自己的经过实践检验的一种方法。...例如下面写的是webapps,那就在webapps/ROOT/路径下解压你的war包。...如果appBase=XXX,那么就在XXX/ROOT/路径下解压war包 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy...tomcat/bin/startup.bat 如果要通过http://ip:port/appName的方式访问 1、在前面说到appBase的基础上,新建appBase/appName/路径,将war包解压到...1.1" connectionTimeout="20000" redirectPort="8443" useBodyEncodingForURI="true" /> 20180504更新 部署jar包应用
举个例子:客户端要发送原信息是A和B两个数据包,服务端接收到之后,可能出现如下情况: 正常情况:读取到了A和B两个数据包; 粘包:A和B两个数据包一起读取了; 拆包:读取了A数据包的一部分,A的另一部分和...B数据包一起读取了; 由于TCP是没有消息保护边界的,也就是上面的消息,没有边界,服务端并不知道hello的o是一个边界,hello是一个单词,所以我们就得中服务端处理边界问题。...这也就是粘包拆包问题。 二、Netty中的粘包拆包如何解决 使用自定义协议 + 编解码器来解决。说人话就是:服务端你不是不知道消息的长度吗?...bys = msg.getBytes("utf-8"); int len = msg.getBytes("utf-8").length; // 创建协议包
Linux下的软件包可细分为两种,分别是源码包和二进制包。 Linux源码包 实际上,源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的。...为了解决使用源码包安装方式的这些问题,Linux 软件包的安装出现了使用二进制包的安装方式。 Linux二进制包 二进制包,也就是源码包经过成功编译之后产生的包。...二进制包是 Linux 下默认的软件安装包,因此二进制包又被称为默认安装软件包。...源码包 VS RPM二进制包 源码包一般包含多个文件,为了方便发布,通常会将源码包做打包压缩处理,Linux 中最常用的打包压缩格式为“tar.gz”,因此源码包又被称为 Tarball。...如何选择 通过源码包和 RMP 二进制包的对比,在 Linux 进行软件安装时,我们应该使用哪种软件包呢? 为了更好的区别两种软件包,这里举个例子。
TCP拆包的原因和表现TCP拆包指的是发送方在发送数据时,将一个逻辑上独立的数据包拆分成多个小的数据包发送,导致接收方在接收时无法正确地组装这些数据包。...一个数据包被拆分成多个小的数据包,但是在接收端可以正确地解析出每个数据包。TCP粘包、拆包的解决方式为了解决TCP粘包、拆包的问题,我们可以采用以下几种方式:1....分隔符包分隔符包指的据包,接收方无法区分这些数据包,导致数据解析错误。...TCP拆包的原因和表现TCP拆包指的是发送方在发送数据时,将一个逻辑上独立的数据包拆分成多个小的数据包进行发送,导致接收方在接收时无法正确地组装这些数据包。...一个数据包被拆分成多个小的数据包进行传输,但是接收方无法正确地组装这些数据包。解决TCP粘包、拆包的方式为了解决TCP粘包和拆包的问题,我们可以采取以下几种方式:1.
文章目录 总结 一、静态闭包变量 1、执行普通闭包变量 2、执行静态闭包变量 二、 在闭包中定义闭包 三、 完整代码示例 总结 在闭包中 , 打印 this , owner , delegate ,...打印结果都是创建闭包时所在的类 ; 如果在类中创建闭包 , 则打印结果是类 ; 如果在实例对象中创建闭包 , 则打印结果是实例对象 ; 如果在闭包 A 中创建 闭包 B , this 是最外层闭包 A...之外的类 , owner , delegate 是上一层闭包 B ; 一、静态闭包变量 ---- 1、执行普通闭包变量 在类中定义闭包变量 , 在闭包中打印 this、owner、delegate 值..."owner : " + owner println "delegate : " + delegate } } 直接使用闭包所在类直接调用闭包 , 不再使用闭包所在类对象调用闭包...: class Test2 二、 在闭包中定义闭包 ---- 在 Test2 类中定义 闭包变量 closure2 , 在 closure2 闭包中定义 closure3 闭包 , class Test2
领取专属 10元无门槛券
手把手带您无忧上云