
Python
answer3lin
Research direction: cyber security, software engineering, machine learning&deep learning.
Talk is cheap. Show me the code.
展开
-
Web程序的高并发场景下的数据同步
数据同步在用Servlet构建的Web应用时如果不注意线程安全的问题,会使所写的Servlet程序有难以发现的错误。其实所有web程序实现都需要注意这些问题。1、实现 SingleThreadModel 接口(将引起大量的系统开销) 该接口指定了系统如何处理对同一个Servlet的调用。如果一个Servlet被这个接口指定,那么在这个Servlet中的service方法将不会有两个线程被同时执行,当然也就不存在线程安全的问题。这种方法只要继承这个接口就行了2、同步对共享数据的操作:被...原创 2020-09-27 17:54:31 · 1045 阅读 · 0 评论 -
Python Web开发服务器选型
1、SimpleHTTPServerpython自带的简单服务器,可以通过如下命令启动:一般用于文件下载启动。python -m SimpleHTTPServer也可以基于SimpleHTTPServer进行改造,但是是单线程的Web server,所以性能很差。2、flask or djangoflask和django框架自带server,以flask为例,可以直接代码里启动或者通过命令启动。通常支持多线程启动。Windows环境不支持多进程;debug=True 时设置的多线原创 2020-09-14 00:04:06 · 1731 阅读 · 0 评论 -
Python学习系列之zip函数
目录一、zip函数(内建函数)1.1 定义基本语法:参数说明:返回值:示例:1.2 处理列表1.3 处理元组 1.4 处理字典 1.5 处理一个参数和空列表一、zip函数(内建函数)1.1 定义 Python 2:zip() 函数用于将可迭代的对象(字典,列表,元组,集合,字符串等)作为参数,将对象中...原创 2019-01-16 11:59:10 · 6796 阅读 · 0 评论 -
Python学习系列之字典
一、字典的定义1.1 定义和基本用法 字典是一种是一个无序、以键值对存储可变容器数据类型,数据关联性强、唯一一个映射数据类型。键:必须是可哈希(不可变的数据类型:字符串、数字、元组、bool),值是唯一的且可存储任意类型对象,类似于Java中的Map接口。字典的每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中,格式...原创 2019-01-18 20:26:24 · 556 阅读 · 0 评论 -
Python学习系列之sort和sorted
排序函数sort是列表的内置排序函数只能作用于列表。sort() 是Python内置的一个排序函数,它会从一个迭代器返回一个排好序的新列表。是内建高级函数,是可以对可迭代对象进行排序的函数。可迭代对象包括列表,集合,字典,但是返回一个列表。sortsort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。永久性的修改元素的排列顺序。也就是无法恢复原来的顺序。...原创 2019-01-15 23:47:14 · 378 阅读 · 0 评论 -
Python: 推导式和生成器
引言 如果想通过操作和处理一个序列(或其他的可迭代对象)来创建一个新的列表时可以使用列表解析( List comprehensions)和生成表达式。同样的还有字典推导式,集合推导式。一、推导式1.1 列表推导式(list comprehensions)也叫列表解析式。它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是0个或多个for或者if语句。...原创 2019-01-15 21:42:32 · 1760 阅读 · 0 评论 -
Python学习系列之协程
一、重温进程&线程对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。进程是系统分配资源的最小单位 线程是CPU调度的最小单位 由于默认进程内只有一个线程,所以多核CPU处理多进程就像是一个进程一个核心进程是系统资源分配的最小单位, 系统由一个个进程(程序)组成 一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stac...原创 2019-01-21 23:45:01 · 4022 阅读 · 0 评论 -
Python学习系列之系统命令执行
一、os以前我一直用os.system()处理一些系统管理任务,因为我认为那是运行linux命令或win命令最简单的方式.。在Windows上也可以使用os.system()这个函数来执行一些dos命令,但是这个命令只能拿到返回码,拿不到标准输出,标准错误,所以通常使用的subprocess模块中的Popen类来实现。1.1 os下的命令执行模块函数名 描述 os.syste...原创 2019-01-21 22:52:09 · 960 阅读 · 0 评论 -
Python学习系列之三元运算符
三元运算符在Python里被称为条件表达式,这些表达式基于真(true)/假(false)的条件判断,在Python 2.4以上才有了三元操作。三元运算符:#如果条件为真,返回真 否则返回假condition_is_true if condition else condition_is_false例子:is_fat = Truestate = "fat" ...转载 2019-01-15 17:00:29 · 406 阅读 · 0 评论 -
Python学习系列之小知识点记录
1、不带参数值的return语句返回None。>>>returnNone2、\连接程序在合理的长度下是易读的。一行程序的(非强制性)最大长度建议为 80 个字符。如果你在该长度下写不完你的代码,可以使用连接符 \(反斜线)。把它放在一行的结束位置,Python 仍然将其解释为同一行。3、上述一行程序的(非强制性)最大长度建议为 80 个字符是规范的要求——Py...原创 2019-01-15 15:00:44 · 187 阅读 · 0 评论 -
Python学习系列之浅拷贝和深拷贝
Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果。id什么是id?一个对象的id值在Python解释器里就代表它在内存中的地址。对两个id值相同的对象进行操作相当于处理同一个地址内的数据(java里是引用对象,C里是指针),两个对象同时发生变化。>>> a=[1,2,3]>>> b=a...原创 2019-01-15 13:09:23 · 170 阅读 · 0 评论 -
Python学习系列之Map,Reduce和 Filter
Map,Filter 和 Reduce 三个高阶函数能为函数式编程提供便利。首先看一下什么是MapReduce?摘自wiki中关于MapReduce的解释:MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(归纳)”,及他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。当前的...原创 2019-01-16 16:40:41 · 3233 阅读 · 0 评论 -
Python学习系列之下划线与变量命名规则
一、定义1.1 从入口函数谈起从其他语言比如C++和Java,转到Python的同学经常遇到这个问题,入口函数是什么?Python如何执行?后来我们发现了:if __name__ == 'main':但是为什么这样约定?__name__又是什么意思?这就涉及了Python中变量和函数的命名规则了。涉及单下划线和双下划线("dunder"),名称修饰(name mangling...原创 2019-01-30 23:19:13 · 3702 阅读 · 1 评论 -
Python学习系列之padas-DataFrame
1 引言Python padas是常用的数据处理和分析模块,有特别的数据结构DataFrame。创建一个对象:import pandas as pddata=[[1,2,3],[4,5,6]]index=['a','b']#行号columns=['c','d','e']#列号df=pd.DataFrame(data,index=index,columns=columns)#生成一...原创 2019-05-29 11:59:58 · 13654 阅读 · 4 评论 -
编程语言:弱类型&强类型,动态类型&静态类型
动态类型语言(Dynamically Typed Language):运行期间才做数据类型检查的语言,即动态类型语言编程时,永远不用给任何变量指定数据类型。该语言会在第一次赋值给变量时,在内部将数据类型记录下来。例如:ECMAScript(JavaScript)、Ruby、Python、VBScript、phpPython和Ruby就是典型动态类型语言,其他各种脚本语言如VBS...转载 2019-05-16 16:05:15 · 1469 阅读 · 0 评论 -
Python学习系列之可迭代对象,迭代器,生成器
容器(container)容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in,not in关键字判断元素是否包含在容器中。list, deque, …. set, frozensets, …. dict, defaultdict, OrderedDict, Counter, …. tuple, namedtuple, … str尽管绝大多数容器...翻译 2019-04-25 20:10:46 · 314 阅读 · 0 评论 -
Python的几种文件类型
Python的几种文件类型Python有以下几种类型的文件:py:Python控制台程序的源代码文件 pyw:Python带用户界面的源代码文件 pyx:Python包源文件 pyc:Python字节码文件 pyo:Python优化后的字节码文件 pyd:Python的库文件(Python版DLL)、在Linux上是so文件pyc和pyo的生成方法pyc的作用是用来跨平台使...转载 2019-04-25 21:46:58 · 11316 阅读 · 0 评论 -
Python学习系列之内置函数总结
module __builtin__1. abs()描述:返回数字的绝对值,不改变数据类型和数据精度语法:abs( x )参数:x -- 数值表达式返回值:x(数字)的绝对值2. all()描述:all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。元素除了是 0、空、None、False...转载 2019-04-18 22:34:36 · 833 阅读 · 0 评论 -
Python读取数据None的问题
Python做机器学习的时候,遇到过读取数据nan的问题,不能输入到机器学习模型中。我们都是知道原因是这是一个非数。但是我想知道具体是哪一个数据,此时我测试发现该数输出是None。但是我在数据文本文件中搜索None和nan都无法得到,后来才知道实际在文本中存储的是 null。...原创 2019-02-27 23:05:02 · 3589 阅读 · 0 评论 -
移动App的推送技术
前面的文章中介绍了通用的推送架构和技术,主要介绍了Web端,也讲了部分移动端App。这次则主要介绍移动端的技术原理,实现方法和编程实现。一、技术原理一旦服务器数据有更新或者服务器要下发通知给客户端只能等客户端连接的时候才能实现。这种方式使消息失去了实时性。定义:推送功能最早是被用于Email中,用来提示我们新的信息。在移动互联网普及之后,手机终端成为了消息推送的主战场,例如生活服务类的...原创 2019-02-13 10:33:19 · 10560 阅读 · 0 评论 -
Python学习系列之pyc文件
一、什么是pyc文件pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code字节码,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由Python的虚拟机来执行的,这个是类似于Java或者.NET的虚拟机的概念,从而实现跨平台。pyc文件经过python解释器最终会生成机器码运行。所以pyc文件是可以跨平台部署的,类似Java的.cl...原创 2019-02-15 17:34:41 · 12964 阅读 · 0 评论 -
Python学习系列之性能优化问题总结
性能优化与底层实现 在实际的工程环节都会围绕整体的业务逻辑问题,很少去了解底层的原理。但是我们一旦涉及到性能和效率的优化,就会涉及到编译器,部署环境,编程语言等的底层实现和技术细节。下面就从Python语言的特征与分析可能导致的性能问题及优化问题。一、可变类型导致的性能问题(1)拼接字符串问题string_build = ""for data in c...原创 2019-01-15 10:23:07 · 461 阅读 · 0 评论 -
服务器之间的命令和数据传输的通信方式
服务器之间的通信通常我们交互除了P2P等协议,大多数都是基于C/S架构的通信场景,比如FTP, HTTP, DNS等。但是再射一一些安全协议方案的时候通常包括多方服务器和用户。此时应该如何通信那?比如传递命令和传输密钥。(1)Socket一般情况下比如我们设计一个后端服务,包括多个服务器:数据库服务器,web服务器,文件服务器、缓存服务器等的通信,一般是通过socket来设计专门的通信...原创 2019-01-21 23:51:10 · 12491 阅读 · 1 评论 -
Python学习系列之值类型与引用类型
Python中的值类型与引用类型其实各个标准资料中没有说明Python有值类型和引用类型的分类,这个分类一般是C++和Java中的。但是语言是相通的,所以Python肯定也有类似的。实际上Python 的变量是没有类型的,这与以往看到的大部分语言都不一样(JS等弱类型的也是这样)。但 Python 却是区分类型的,那类型在哪里呢?事实是,类型是跟着内存中的对象走的。类型属于对象,变量是没有类型...转载 2019-01-15 00:15:24 · 9089 阅读 · 6 评论 -
Python学习系列之全局变量和局部变量
如何使用全局变量在函数中使用全局变量就是在函数中添加“global var”语句即可,事实上还有个细节就是Python默认函数中的变量为全局变量,一旦在函数体的某个位置该变量被赋值,那么它就被认定为局部变量了。In Python, variables that are only referenced inside a function are implicitly global. If a...原创 2019-01-12 17:37:23 · 596 阅读 · 0 评论 -
Python抓包库
因为Python当前处理和分析数据的功能强大,当前网络安全用于分析数据包的需求越来越大,所以介绍几个数据包捕获和分析库。嗅探功能scapy:底层使用libpcap,最强大的抓包和分析库,支持shell。还能主动构造数据包,解析ssl等。pyshark:基于tshark的工具。pypcap:长期不维护的pcap抓包库。基于libpcap。dpkt:很不错的数据包解析工具pyl...原创 2019-01-12 17:35:57 · 10339 阅读 · 3 评论 -
Python学习系列之lambda表达式
一、lambda定义与用法lambda表达式是一行的函数。它们在其他语言中也被称为匿名函数。即,函数没有具体的名称,而用def创建的方法是有名称的。如果你不想在程序中对一个函数使用两次,你也许会想用lambda表达式,它们和普通的函数完全一样。而且当使用函数作为参数的时候,lambda表达式非常有用,可以让代码简单,简洁。lambda表达式返回的是function类型,说明是一个函数类型。...原创 2019-01-12 17:14:59 · 63354 阅读 · 5 评论 -
Python学习系列之列表合并
Python自带List的合并1 可以使用"+"号完成操作输出为:[1, 2, 3, 8, 'google', 'com']2 使用extend方法输入相同3 使用切片输出相同PS:len(l1)代表要将l2插入l1中末尾的位置例如输出为:又如:输出为:总结:第一种方方法思路比较清晰,就是运算符的重载;第二种方法比较简洁,...转载 2018-12-18 10:49:57 · 2367 阅读 · 0 评论 -
基于树模型的参数和可视化实现问题
1 决策树首先是决策树可视化实现方法,都是惯有思路:http://ywtail.github.io/2017/06/08/sklearn%E5%86%B3%E7%AD%96%E6%A0%91%E5%8F%AF%E8%A7%86%E5%8C%96/https://ywtail.github.io/python/%E5%8F%AF%E8%A7%86%E5%8C%96/2_sklearn%E...转载 2018-12-15 22:14:30 · 841 阅读 · 0 评论 -
Scapy基本教程
参考 https://github.com/Larryxi/Scapy_zh-cn内容不多,仅供入门。git clone https://github.com/Larryxi/Scapy_zh-cn.git转载 2018-12-08 22:51:56 · 4014 阅读 · 0 评论 -
json库中dumps与dump及load与loads
json.dumps: 是将dict(字典类型对象)转化成 str(字符串类型)。json.loads: 是将str(字符串类型)转化成 dict (字典类型)。json.dump: 是将dict(字典类型对象)存储到文件中。需要一个类文件对象。json.load: 是从文件中读取json转化成 dict (字典类型)。同理pickle,其他库类似的应该同理,虽然我还没遇到。...转载 2018-12-04 22:11:00 · 561 阅读 · 0 评论 -
Python模型本地持久化存储
Python模型本地持久化存储通常我们线下训练好的模型,部署到线上运行,这就需要把模型进行本地硬盘持久化,比如保持到文件中,然后再在其他主机上导入内存进行分类和预测。下面就介绍几种模型持久化存储方法。1. pickle模块pickle是python标准模块,一种标准的序列化对象的方法。你可以使用pickle操作来序列化你的任何类对象,当然也包括机器学习模型,保存这种序列化的格式到一个文...原创 2018-12-04 21:35:38 · 2705 阅读 · 1 评论 -
从Python中os模块中实用的文件和目录操作方法到Python内置变量
Python常用文件和目录操作函数 序号 方法及描述 1 os.access(path, mode) 检验权限模式 2 os.chdir(path) 改变当前工作目录 4 os.chmod(path, mode) 更改权限 5 os.chown(path, uid, gid) ...转载 2018-11-29 13:41:15 · 422 阅读 · 0 评论 -
Python学习系列之*args 和 **kwargs
其实并不是必须写成*args 和**kwargs。 只有变量前面的 *(星号)才是必须的。 你也可以写成*var 和**vars. 而写成*args 和**kwargs只是一个通俗的命名约定。 可变参数(1)可变参数可以通过默认参数实现。先位置参数,默认参数,收集位置参数,收集关键字参数(定义和调用都应遵循)。默认参数必须指向不变对象。好处:极大降低调用复杂度。定义一个有可选参数的函数...转载 2019-01-13 10:17:22 · 1393 阅读 · 0 评论 -
Python学习系列之+= 和 = +
区别 a+=ba=a+b 针对于int型。>>> a=1>>> b=a>>> a+=1>>> a,b(2, 1)>>> a=1>>> b=a>>> a=a+1>&原创 2019-01-13 10:37:00 · 6723 阅读 · 1 评论 -
Python学习系列之多线程
一、多线程定义 进程是由若干线程组成的,一个进程至少有一个线程,叫主线程。 多线程类似于同时执行多个不同程序,多线程运行有如下优点:使用线程可以把占据长时间的程序中的任务放到后台去处理,不会出现界面卡顿的情况。 用户界面更加友好,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。 程序的运行速度可能加快。 在一些等待的任务实现上如用户输入、...原创 2019-01-20 12:51:07 · 13720 阅读 · 0 评论 -
Python学习系列之多进程
一、多进程 Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。子进程永远返回0,而父进程返回子进程的ID。这样做的理由是,一个父进程可以fork出很多子进程,所以,父进程要记下每个子进程的I...原创 2019-01-21 22:51:16 · 710 阅读 · 0 评论 -
Python学习系列之exit语句
一、定义1.1 exit()exit():结束整个程序。 在python中运行一段代码,如果在某处已经完成整次任务,可以用exit退出整个运行。并且还可以在exit()的括号里加入自己退出程序打印说明。不过注意在py3中要加单引号或双引号。1.2 os._exit() vs sys.exit() vs exit()python的程序有多种退出方式:os._exit(...原创 2019-01-18 22:36:29 · 19110 阅读 · 0 评论 -
Python学习系列之错误和异常
一、引言1.1 异常什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试py...原创 2019-01-19 23:03:44 · 4598 阅读 · 0 评论 -
Python学习系列之pass语句
一、定义 Python pass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。类比于Java和C++的单独一个分号和一对空的大括号,也就是空语句。千万不要因为单词意思,和continue语句搞混乱。 python中if ,for等复合语句通常是由一个语句头和语句体构成。语句体中出现的语句数量并没有限制,但是至少需要一行。偶尔可能会需...原创 2019-01-18 20:56:24 · 2268 阅读 · 0 评论