编程技术

Ningx代码研究(三)

ngx的基本容器ngx_array对应的文件为core/ngx_array.{c|h}ngx_array是nginx内部封装的使用ngx_pool_t对内存池进行分配的数组容器,其中的数据是在一整片内存区中连续存放的。更新数组时只能在尾部压入1个或多个元素。数组的实现结构为structngx_array_s{void*elts;ngx_uint_tnelts;size_tsize;ngx_uint_tnalloc;ngx_pool_t*pool;};其中e

系统 2019-08-29 22:38:33 2096

编程技术

Struts由入门到精通(第二章)-Struts的原理

2.2Struts的原理2.2.1Struts的起源Struts最早是作为ApacheJakarta项目的组成部分问世运做。项目的创立者希望通过对该项目的研究,改进和提高JavaServerPages(JSPs)、Servlet、标签库以及面向对象的技术水准。当前最高发行版本为Struts1.0.2,可以到http://jakata.apache.org/Struts下载。Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。它的目的是为了帮助你减

系统 2019-08-29 22:28:54 2096

编程技术

每位开发人员都应铭记的10句编程谚语

ASP.NET开发者KevinPang曾发表一篇博文《10ProgrammingProverbsEveryDeveloperShouldKnow》,文中列举了版主认为开发者应该铭记的10条编程谚语。《职场博客——伯乐在线》对本文进行了翻译,现把译文转载于此。全文如下:所谓谚语,就是用言简意赅、通俗易懂的方式传达人生箴言和普遍真理的话,它们能很好地帮助你处理生活和工作上的事情。也正因如此,我才整理了10句编程谚语,每位开发人员都应该铭记他们,武装自己。1.无

系统 2019-08-29 22:21:39 2096

编程技术

OAuth2.0认证和授权原理

什么是OAuth授权?一、什么是OAuth协议OAuth(开放授权)是一个开放标准。允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息。而这种授权无需将用户提供用户名和密码提供给该第三方网站。OAuth允许用户提供一个令牌给第三方网站,一个令牌对应一个特定的第三方网站,同时该令牌只能在特定的时间内访问特定的资源。二、OAuth的原理和授权流程OAuth的认证和授权的过程中涉及的三方包括:服务商:用户使用服务的提供方,一般用来存消息、储照片

系统 2019-08-29 22:06:14 2096

编程技术

汉诺塔递归解法

汉诺塔的递归算法假设有3个分别命名为X、Y和Z的塔座,在塔座X上插有n个直径大小各不相同、依小到大编号为1、2…n的圆盘。现要求将X轴上的n个圆盘移至塔座Z上并仍按同样顺序叠排,圆盘移动时必须遵守下列规则:1、每次只能移动一个圆盘;2、圆盘可以插在X、Y和Z中任一塔座上;3、任何时刻都不能将一个较大的圆盘压在较小的圆盘之上。递归算法的思路:当n=1时,问题比较简单,只要将编号为1的圆盘从塔座X直接移至塔座Z上即可。当n>1时,需利用塔座Y作辅助塔座,若能设

系统 2019-08-29 22:02:00 2096

编程技术

IO流的介绍

对于任何程序设计语言而言,输入输出(I/O)系统是最复杂的一部分,因为通信的双方不仅仅是I/O源端和接收端,还可能是文件、网络链接或内存磁盘等,而且这些数据的数据格式多样,如字符、二进制、字节。Java通过创建大量的类库解决这个问题。12.1流(stream)的概念Java的I/O系统涉及流的概念。一个读取字节序列的对象被称为输入流,一个可以写入字节序列的对象称为输出流。输出流和输入流是相对于程序本身而言的。程序读取数据称为打开输入流,程序向其他源写入数据

系统 2019-08-12 09:29:36 2096

Python

用python记录运行pid,并在需要时kill掉它们的实例

我在跑爬虫程序的时候,由于爬虫程序的等待目标服务器返回数据的时间很长,而cpu占用很低,所以经常挂着代理一跑就跑好几百个。但是爬虫程序通常是写了死循环,或直到分配给该进程的任务都跑完才退出的。如果我们想中途结束掉这些任务,是没办法手工一个一个kill掉的。那么该如何结束这些进程呢?我的方法就是在运行爬虫进程时,记录该进程的Pid,然后在需要手动结束时,再用语句kill掉它们。foriin{1..100}donohuppythonNetEase_comms_

系统 2019-09-27 17:56:59 2095

Python

python logging模块

logging模块简介logging模块是python内置模块,专门为打印日志的模块importlogginglogging.debug('debugmessage')logging.info('infomessage')logging.warning('warningmessage')logging.error('errormessage')logging.critical('criticalmessage')默认情况下python的logging模块将

系统 2019-09-27 17:56:41 2095

Python

Python中利用LSTM模型进行时间序列预测分析的实现

时间序列模型时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征。这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺序的,同样大小的值改变顺序后输入模型产生的结果是不同的。举个栗子:根据过去两年某股票的每天的股价数据推测之后一周的股价变化;根据过去2年某店铺每周想消费人数预测下周来店消费的人数等等RNN和LSTM模型时间序列模型最常用最强大的的工具就是递归神经网络(recur

系统 2019-09-27 17:56:06 2095

Python

Python中的asyncio代码详解

asyncio介绍熟悉c#的同学可能知道,在c#中可以很方便的使用async和await来实现异步编程,那么在python中应该怎么做呢,其实python也支持异步编程,一般使用asyncio这个库,下面介绍下什么是asyncio:asyncio是用来编写并发代码的库,使用async/await语法。asyncio被用作多个提供高性能Python异步框架的基础,包括网络和网站服务,数据库连接库,分布式任务队列等等。asyncio往往是构建IO密集型和高层级

系统 2019-09-27 17:54:52 2095

Python

pip指定python位置安装软件包的方法

由于电脑上安装了多个版本的pip,以及不同的pip对应不同的python,因此有时候使用pipinstall安装某个包时,可能会没有安装在想要的位置。具体而言,在我电脑上,运行pip--version时,输出如下pip9.0.1from/opt/anaconda3/lib/python3.6/site-packages(python3.6)运行sudopip--version时,输出如下pip18.0from/usr/local/lib/python3.5

系统 2019-09-27 17:53:40 2095

Python

【跟着Head First学python】4、代码重用:函数与模块

1、函数相比于C++,python中写一个函数需要一个关键字def。其主要结构如下:def函数名(函数参数):"""函数文档,docstring"""函数体return如果一个函数是一个类的一部分,它就称为一个方法。注意函数没有类型信息,无论是函数参数还是返回值,都不需要类型信息,当然为了便于阅读,可以使用函数注解。函数注解是py3新增的一项功能,类似注释,它们只负责提高程序的可读性,而不会对程序功能做出任何改变。推荐python代码为了可读性,遵循PEP

系统 2019-09-27 17:53:32 2095

Python

Python 判断一个列表是否为空列表

方法1(推荐):在Python中,False,0,’’,[],{},()都视为假,因此可以直接进行逻辑运算。此方法效率最高。方法2:调用len方法,查看元素个数是否为0。此方法效率较低。方法3:让解释器再生成一个空列表,并将这个空列表与list_temp进行比较。此方法效率最低。list_temp=[]print('方法1(推荐):在Python中,False,0,'',[],{},()都视为假,因此可以直接进行逻辑运算。此方法效率最高。')iflist_

系统 2019-09-27 17:52:58 2095

Python

Python 学习 第16篇:数据类型(字典)

字典是键/值对构成的集合,字典通过大括号来创建,字典的键是字符串,而值可以是任何数据对象。字典有两个重要的特征:字典是无序的,字典项没有特定的顺序,只能通过键来获取值;字典是可变的,支持原处修改键的值;字典是作为散列表来实现的,可增长,搜索非常快速;和列表一样,字典存储的是对象的引用,不是拷贝。创建字典创建空的字典:>>>d={}创建包含两个项目的字典:>>>d={'name':'vic','age':28}创建包含嵌套类型的字典:>>>d={'stude

系统 2019-09-27 17:52:13 2095