自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 Leetcode 300. Longest Increasing Subsequences (nlogn复杂度)思路解析

题目Given an unsorted array of integers, find the length of longest increasing subsequence.For example, Given [10, 9, 2, 5, 3, 7, 101, 18], The longest increasing subsequence is [2, 3, 7, 101], therefo

2017-08-21 01:23:00 519

原创 Leetcode题解 53. Maximum Subarray 思路解析

题目Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [-2,1,-3,4,-1,2,1,-5,4], the contiguous subarray [4,-1,2,1] has t

2017-08-17 18:12:15 480

原创 646. Maximum Length of Pair Chain思路解析

题目You are given n pairs of numbers. In every pair, the first number is always smaller than the second number.Now, we define a pair (c, d) can follow another pair (a, b) if and only if b < c. Chain of p

2017-08-17 15:34:07 343

原创 Leetcode 3. Longest Substring Without Repeating Characters思路解析

题目Given a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is 3.Given "bbbbb", the answer is "b", with the

2017-08-15 02:02:52 272

原创 Leetcode 650. 2 Keys Keyboard

题目Initially on a notepad only one character 'A' is present. You can perform two operations on this notepad for each step:Copy All: You can copy all the characters present on the notepad (partial copy i

2017-08-13 14:17:53 2706

原创 DataFrame执行groupby聚合操作后,如何继续保持DataFrame对象而不变成Series对象

最近在做京东jdata算法比赛,刚接触pandas不久,在处理特征时,碰到一个恶心的问题:用groupby聚合后,之前的dataframe对象变成了series对象,聚合的字段变成了索引index,导致获取这些字段时很麻烦,后面发现reset_index()这个函数,兼职完美的解决了我的需求。元素数据如下:聚合后变成了这样:尝试这样访问按照col

2017-04-27 00:46:40 27346 4

原创 pandas string转dataframe

string 转pandas dataframe

2017-04-12 21:54:16 10989

原创 用spark ml pipeline尝试kaggle比赛

一、关于spark ml pipeline与机器学习一个典型的机器学习构建包含若干个过程 1、源数据ETL 2、数据预处理 3、特征选取 4、模型训练与验证 以上四个步骤可以抽象为一个包括多个步骤的流水线式工作,从数据收集开始至输出我们需要的最终结果。因此,对以上多个步骤、进行抽象建模,简化为流水线式工作流程则存在着可行性,对利用spark进行机器学习的用户来说,流水线式机器学习比单个步骤

2016-11-27 01:02:46 3495

原创 通过redis-cli的日志查看redis操作记录

由于工作的业务需要,我想查redis客户端的操作记录,但是百度搜索到的结果只能找到关于slowlog慢查询相关的内容,故在此说明下redis-cli的操作记录日志的路径,默认路径为redis-cli的安装目录下的.rediscli_history 即 ~/.rediscli_history

2016-09-11 00:55:24 38460 1

转载 3.如何开启Tornado的调试模式 (副标题:方便调试与测试)

默认用Tornado写程序,修改完代码需要将文件上传,然后重启 Supervisord (supervisorctl reload),修改的程序才能生效。但这样比较麻烦,因为需要SSH到服务器进行重启操作。Tornado自带的调试模式可以让我们轻松不少。开启调试模式也很简单,只需要 import 一个模块即可。1import tornado.auto

2016-05-29 16:03:50 3744

转载 4.Tornado对Web请求与响应的处理机制 (副标题:作为Web Server的功能)

1class MainHandler(tornado.web.RequestHandler):2    def get(self):3        self.write("Hello, wor

2016-05-29 15:55:51 1197

转载 3.关于Tornado handler的更多细节 (副标题:一些要注意的问题)

实际上handler有很多讲究,在Application类的注释中,就讲了不少。1. 首先,(regexp,tornado.web.RequestHandler)中的第一个参数不是普通的字符串,而是正则表达式,这也是为什么示例中它带了一个前缀“r”。这说明一个handler可以匹配很多个request。只要它们的request url能满足regexp匹配。如果我们把刚才的

2016-05-29 15:52:33 1309

转载 2.理解Tornado里的handler (副标题:URL控制的概念)

前面我们对Tornado自带的 hello world 作了代码组织上的解释,但是没有更加深入细致地解释。这里我们直接从main()函数开始,单步跟随,看看tornado都干了些什么。下面是 main() 函数的定义:1def main():2    tornado.options.parse_comm

2016-05-29 15:46:00 985

转载 1.开始用Tornado:从Hello World开始 (副标题:了解Tornado代码组织)

tornado 源码包中 demos 目录下包含一些示例程序,就从最简单的 helloworld.py 来看一个 tornado 应用程序的代码结构。完整的实例程序如下:01#!/usr/bin/env python02#03# Copyright

2016-05-29 15:42:07 492

转载 14.Tornado高性能的秘密:ioloop对象分析 (副标题:IOLoop是个事件循环)

网上都说nginx和lighthttpd是高性能web服务器,而tornado也是著名的高抗负载应用,它们间有什么相似处呢?上节提到的ioloop对象是如何循环的呢?往下看。首先关于TCP服务器的开发上节已经提过,很明显那个三段式的示例是个效率很低的(因为只有一个连接被端开新连接才能被接受)。要想开发高性能的服务器,就得在这accept上下功夫。首先,新连接的到来一般是经典的三次握

2016-05-29 15:30:52 1518

转载 13.从代码分析TCPServer类的机制 (副标题:create-bind-listen)

接上面一小节,开始看 TCPServer的 code。TCPServer的__init__函数很简单,仅保存了参数而已。唯一要注意的是,它可以接受一个io_loop为参数。实际上io_loop对TCPServer来说并不是可有可无,它是必须的。不过TCPServer提供了多种渠道来与一个io_loop绑定,初始化参数只是其中一种绑定方式而已。listen接下来我们看

2016-05-29 15:29:13 676

转载 12.Tornado TCPServer类的设计解读 (副标题: 一个通用的server框架)

前文已经说过,HTTPServer是派生自TCPServer,从协议层次上讲,这再自然不过。从TCPServer的实现上看,它是一个通用的server框架,基本是按照BSD socket的思想设计的。create-bind-listen三段式一个都不少。从helloworld.py往下追,可以看到:helloworld.py中的main函数创建了HTTPServer.

2016-05-29 15:21:42 1028

转载 11.Tornado在TCP层里的工作机制---TCP层的实现

上一节(HTTP总结)是关于应用层的协议 HTTP,它依赖于传输层协议 TCP,例如服务器是如何绑定端口的?HTTP 服务器的 handle_stream 是在什么时候被调用的呢?本节聚焦在 TCP 层次的实现,以便和上节的程序流程衔接起来。首先是关于 TCP 协议。这是一个面向连接的可靠交付的协议。由于是面向连接,所以在服务器端需要分配内存来记忆客户端连接,同样客户端也需要记录服

2016-05-29 15:16:16 542

转载 10.HTTP层:HTTPRequest,HTTPServer与HTTPConnection---HTTP层的实现

前面小节在分析 handler 时提到,handler 的读写实际是依靠 httprequest 来完成的。今天就分析 tornado 在 HTTP 这一层上的实现,类包括 HTTPRequest, HTTPServer 和 HTTPConnection.首先,HTTP协议是建立在面向连接的可靠连接协议 TCP 协议之上,是应用层协议,亦即它的协议内容会涉及网络业务逻辑,而与网络连接处

2016-05-29 15:12:54 980

转载 9.Tornado的核心web框架tornado.web小结---RequestHandler和Application

Tornado的web框架(tornado.web)在web.py中实现,主要包括RequestHandler类(本质为对http请求处理的封装)和Application类(是一些列请求处理的集合,构成的一个web-application,源代码注释不翻译更容易理解:A collection of request handlers that make up a web application)。

2016-05-29 15:10:09 1673

转载 8.RequestHandler的分析---handler是如何工作的

前面一小节谈到了Application 类,这里再来看看RequestHandler类。从上一节的流程可以看出,RequestHandler 类把 _execute 方法暴露给了 application 对象,在这个方法里完成了请求的具体分发和处理。因此,我主要看这一方法(当然还包括__init__),其它方法在开发应用时自然会用到,还是比较实用的,比如header,cookie,get/

2016-05-29 15:06:45 3043

转载 7.Application对象的接口与起到的作用---Application对象工作机制

前面小节谈到了Tornado的RequestHandler和Application类,这两块内容还很多,分开来再补充一下,这篇先谈谈Application类。总的来说,Application对象提供如下几个接口:__init__ 接受路由-处理器列表,制定路由转发规则listen 建立服务器并监听端口,是对httpserver的封装调用add_handlers 添加路由

2016-05-29 14:46:01 678

转载 2.Supervisord进程管理工具的安装使用 (副标题:用supervisord管理Tornado进程)

先来介绍 supervisord。Supervisor 是一个进程监控程序。满足的需求是:我现在有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断。当进程中断的时候我希望能自动重新启动它,此时,我就需要使用到了Supervisor。1. 安装安装很简单:1pip install supervisor

2016-05-29 14:39:17 636

转载 6.Tornado RequestHandler和Application类---了解web.py文件

前面一小节提到了需要了解 web.py 这个文件,这个文件最关键的地方是定义了 Application 和 RequestHandler 类。我们再看看 Tornado 的 Hello World,我们再精简一下,下面是最简单的实例化并启动  Application的方式:1import ioloop2impo

2016-05-29 14:35:02 480

转载 21.番外篇:Tornado的多进程管理分析---process.py代码解读

Tornado的多进程管理我们可以参看process.py这个文件。在编写多进程的时候我们一般都用python自带的multiprocessing,使用方法和threading基本一致,只需要继承里面的Process类以后就可以编写多进程程序了,这次我们看看tornado是如何实现他的multiprocessing,可以说实现的功能不多,但是更加简单高效。我们只看fork_proc

2016-05-29 14:32:32 2161

转载 5.Tornado HTTP服务器的基本流程---Tornado底层I/O的内部实现

本小节介绍Tornado HTTP服务器的基本流程,分别分析httpserver, ioloop, iostream模块的代码来剖析Tornado底层I/O的内部实现。httpserver.py中给出了一个简单的http服务器的demo,代码如下所示:01from tornado import httpserver

2016-05-29 14:25:33 3171

转载 4.Tornado源码必须要读的几个核心文件----了解Tornado的大致工作机制

前面我们看了一些关于 Tornado 的总体框架设计图,还有一些模块设计。比如3.大概了解Tornado框架的设计模型 里面的文件组织,真的不少,那么我们应该具体去读哪几个文件呢?为了方便,约定$root指带tornado的根目录。总的来说,要用tornado完成一个网站的构建,其实主要需要以下几个文件:$root/tornado/web.py$root/tornado

2016-05-29 14:16:14 806

翻译 3.大概了解Tornado框架的设计模型

Tornado框架设计模型从上面的图可以看出,Tornado 不仅仅是一个WEB框架,它还完整地实现了HTTP服务器和客户端,在此基础上提供WEB服务。它可以分为四层:最底层的EVENT层处理IO事件;TCP层实现了TCP服务器,负责数据传输;HTTP/HTTPS层基于HTTP协议实现了HTTP服务器和客户端;最上层为WEB框架,包含了处理器、模板、数据库连接、认证

2016-05-29 13:34:07 2192 1

转载 2.开始Tornado的源码分析之旅

Tornado 是由 Facebook 开源的一个服务器“套装”,适合于做 python 的 web 或者使用其本身提供的可扩展的功能,完成了不完整的 wsgi 协议,可用于做快速的 web 开发,封装了 epoll 性能较好。文章主要以分析 tornado 的网络部分即异步事件处理与上层的 IOstream 类提供的异步IO,其他的模块如 web 的 tornado.web 以后慢慢留作分析。

2016-05-29 13:31:23 579

转载 1.读懂tornado的预备知识:什么是epoll

问:epoll 或者 kqueue 的原理是什么?为什么 epoll 和 kqueue 可以用基于事件的方式,单线程的实现并发?我没看过 linux 内核,对这方面一直有疑问……必须从很多基础的概念开始构建这个答案,并且可能引申到很多别的问题。首先我们来定义流的概念,一个流可以是文件,socket,pipe 等等可以进行I/O操作的内核对象。不管是文件,还是套接字,还是管道,我

2016-05-29 13:28:33 2163

原创 从gcc的编译到makefile的引入

第一部分:从gcc的编译到makefile的引入1.使用gcc编译运行第一个HelloWorld程序(只涉及单个文件)可以在任何一个目录编写C程序然后编译运行,我这个实例在自己主目录进行: 然后就进入了编写程序的界面: 按下键盘”i”进入编辑界面,然后输入程序: 按回车退出vim编辑器,退回到终端,以下是之后的编译运行截图: 2.使用gcc编译运行一个多文件

2016-04-14 09:59:52 1252

转载 牛顿迭代法

平时经常看到牛顿法怎样怎样,一直不得要领,今天下午查了一下百度百科,写写我的认识,很多地方是直观理解,并没有严谨的证明。在我看来,牛顿法至少有两个应用方向,1、求方程的根,2、最优化。牛顿法涉及到方程求导,下面的讨论均是在连续可微的前提下讨论。1、求解方程。并不是所有的方程都有求根公式,或者求根公式很复杂,导致求解困难。利用牛顿法,可以迭代求解。原理是利用泰勒公式

2016-03-27 12:31:44 2339

原创 LeetCode动态规划198. House Robber思路解析

LeetCode动态规划198. House Robber思路解析,用最容易理解的递归解释

2016-03-16 00:57:56 616

原创 (1)Two Sum-----LeetCode

Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to the target, where

2015-06-03 00:23:14 467

转载 C++ static、const和static const 以及它们的初始化

const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。 static表示的是静态的。类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员变量。一般类的静态函数几乎就是一个全局函数,只不过它的作用域限于包含它的文件中。 在C++中,static静态

2015-03-05 19:53:33 335

原创 运算符重载典型问题——对象自增实现成员变量自增且对象间赋值

operator 是C++的关键字,本质上operator++() 与普通重载函数相同,不同的是C++专门为这个特殊的重载函数定义了各种基本数据类型,因此我们可以不去管理数据的类型,只需在用的时候填好所要进行运算的数据就可以了。定义方式:  void operator ++(){++num}   功能:简化对象对应的的成员变量的自加操作,把本应通过设置一个成员函数完成对成员变量的自加操作化简为

2015-01-11 23:58:35 488

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除