如何修改Fiddler的oracle默认端口号号

1、fiddler 2 汉化版本不支持https证书下载,需要下载fiddler 4版本进行验证
  若fiddler 2版本,可能存在无法访问Pc端fiddler返回页面,无法下载证书
2、打开Fiddler, & Tools-& Fiddler Options 。
选中"Decrpt HTTPS traffic",&& &Fiddler就可以截获HTTPS请求
选中"Allow remote computers to connect".&&是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来
(备注:部分机型,需要取消以下红色区域勾选,不然无法上网)
三、手机配置
(1) &网络代理设置
安装Fiddler的机器,跟Iphone(ipad) 必须在同一个网络里, 否则IPhone(ipad)不能把HTTP发送到Fiddler的机器上来。一般情况,我们手头上是台式机和手机,台式机只有网线,没有无线wifi,所以和手机不在同一个网络,这时,我们就需要设置代理了
打开IPhone,& 找到你的网络连接, 打开HTTP代理, 输入Fiddler所在机器的IP地址(比如:192.168.6.76) 以及Fiddler的端口号8888
(2) Fiddler证书安装
这一步是为了让Fiddler能捕获HTTPS请求。 如果你只需要截获HTTP请求, 可以忽略这一步
1. 首先要知道Fiddler所在的机器的IP地址: 假如我安装了Fiddler的机器的IP地址是:102.168.6.76
2. 打开IPhone 的Safari, 访问 &&点"FiddlerRoot certificate" 然后安装证书
&可能遇到问题,无法验证证书,需要下载一个插件在PC端:fiddlercertmaker.zip
下载地址:
安装完成后重启fiddler
4、设置https捕捉
勾选红色区域即可,此时本地允许证书
阅读(...) 评论()纸飞机许愿
前端路上,一路有你。编辑你的正能量,快乐工作,努力生活~
请选择弹奏的曲谱
点击开始录制,可以录制弹奏的曲子
分享钢琴节奏:Fiddler修改host;只抓手机请求;修改端口甩掉其他手机的请求 - 简书
Fiddler修改host;只抓手机请求;修改端口甩掉其他手机的请求
转载问测试过程中,手机借来借去是常有的事情,也许你刚在一台手机上将自己IP添加上,过一会儿这台手机被某某某拿走了,不一会儿,你的 Fiddler 上面就多了很多会话,不巧其中有个URL的参数id为空。bug?!然而,重复操作N遍,都没有重现。仔细查看请求后发现不是自己使用的手机。如何摆脱曾经的小尾巴,请看下文在Tools & Fiddler Options & Connections 下面默认的端口号都是8888,为了避免这种情况对自己的打扰,在找不到被某某某拿走的手机时,可以将自己的端口号修改为其他的,例如:8889。重启Fiddler,再在自己使用的手机上做相应的修改即可问在 PC 上打开 Fiddler 用于查看手机端的请求,但总是被 PC 来来往往的请求干扰,如何只查看 Android 上的请求,而不被干扰呢当然 Fiddler 有强大的 filter ,通过 filter 能够只查看自己关注的请求。但是呢,有一些去服务器下载的请求,由于服务器有好多,添加过滤器有可能过滤掉本来想要看的内容,例如:某个 banner 展示成功的前提是:图片资源下载成功。当我们在测试的过程中看到 banner 图显示不出来,到底是 banner 图的功能有问题呢?还是服务器的问题呢?因此,作为一名认真负责的测试同学,我们想要准确定位bug的原因,就需要关注这个过程中发生了什么,而不能简单的跟开发说:banner 图显示不出来了。SO,这种过滤如何实现呢?正确的处理方式是:点击 Fiddler 左下角的“Capturing”。TA其实是File & Capture Traffic的快捷键,可以控制是否把 Fiddler 注册为PC系统代理,当左下角显示Capturing时,Capture Traffic是打开的,此时的IE的Internet选项&连接&局域网设置中的代理服务器是勾选的;否则是没有勾选的。问测试过程中需要访问测试服务器, 打开 Fiddler,在 PC 的etc目录下修改 hosts 文件却不能生效,为什么呢?Fiddler 启动时,修改 hosts 的时候是无效的,需要重启 Fiddler才能生效。具体原因见下面大神 Eric Lawrence 的解释:Fiddler reuses connections, so if there was already an established connection, any change to the HOSTS file might not be noticed. You might try hitting CTRL+X to clear the Web Sessions list and the cache of reused connections.Also, instead of using the PC’s Hosts file, instead consider clicking the Tools & HOSTS menu item inside Fiddler.如大神所说,当 Fiddler 已经建立会话时,任何修改 hosts 的行为都不会被 Fiddler 注意到。可以通过 Fiddler 的 Tools & HOSTS 处导入本地的 hosts 文件。需要指测试服务器的时候,勾选"Enable remapping of requests for one host to a different host or IP, overriding DNS",否则去掉勾选
很多都是网上转载,或者copy的,作为学习笔记,谢谢大家Fiddler|Fiddler安装与配置 - 知乎专栏
{"debug":false,"apiRoot":"","paySDK":"/api/js","wechatConfigAPI":"/api/wechat/jssdkconfig","name":"production","instance":"column","tokens":{"X-XSRF-TOKEN":null,"X-UDID":null,"Authorization":"oauth c3cef7c66aa9e6a1e3160e20"}}
{"database":{"Post":{"":{"title":"Fiddler|Fiddler安装与配置","author":"liu-xiao-man-3-2","content":"七月份为了编制list,我做了份配置fiddler的教程,现在整理一下发上来(主要因为今天我写不出其他东西了)。虽然这个软件安装之后的确很好用,但是配置过程问题太多,虽然找了这么多方法,官方文档也来回翻过了,仍然存在问题没有解决。我是新手,如果有问题欢迎在评论区指正。目录:一、安装与配置下载安装与配置连接到手机二、出现各种配置问题如何解决一、安装与配置1. 下载可以直接去官网下载免费软件:,在选择下载之后会进入一个选择页面,你需要在这里选择需要使用的版本,如下图:课题组需要用Fiddler来抓取手机APP的数据,因此我们这里选择的是Mobile application development/debugging。2. 安装与配置下载完成后,点击winConfig。进入下面页面,全选。进入下面页面,全选。点击左上角tools-telerik fiddler options。点击左上角tools-telerik fiddler options。然后点击connections,把所有设置调整为下图。然后点击connections,把所有设置调整为下图。接下来,安装过程中的某个阶段会提示安装安全证书如下图:一直点击yes允许安装即可。接下来,安装过程中的某个阶段会提示安装安全证书如下图:一直点击yes允许安装即可。3. 连接到手机打开电脑命令提示符,输入ipconfig,下图的ipv4就是本机的ip地址。下一步,打开手机-设置-找到当前连接的WiFi-长按当前连接的WiFi。下一步,打开手机-设置-找到当前连接的WiFi-长按当前连接的WiFi。是长按这个页面中我正在链接的第一个WIFI,然后会出现:忘记网络和修改网络两个选项(我手机在那页没法截图),点击修改网络。(注:不同手机可能操作方法不同,也可能是直接点开就可以)修改网络-显示高级选项-代理设置-手动(代理设置下面的无,点开会出现手动选项)-主机名输入刚才在命令提示符里面看到的ip地址-端口号:8888-保存设置重启电脑fiddler,查看手机能否上网,在fiddler上能否看到手机正在进行的联网操作。注意手机应该和电脑连入同一WiFi环境。在fiddler左侧应该能够出现手机正在登陆的网址,如果手机端上网成功,并且电脑端能够检测到,就说明配置成功了。下面是一个成功的例子,“我查查”的界面,左侧显示的是所有的链接情况,右侧分为两部分,上方是请求报文,下方是返回报文。我们主要用到的是,右侧下方的JSON,app都是json数据,这里进行了自动的json解析,我们需要的信息都可以在这里看到。这里更详细的介绍可以看之前的文章:二、出现各种配置问题如何解决按照教程中步骤配置好之后,可能会出现的问题包括,手机全局无法上网,手机部分无法上网,fiddler无法监测手机流量等,按照下面的步骤从上到下依次调试,每试一步都重启fiddler看是否恢复正常。1. 检查一下刚才要求的配置,包括:tools-fiddler options- connections里面的对号是否正确勾选手机端ip地址是否输入正确2. 关闭电脑第三方杀毒软件,比如360安全中心,金山毒霸3. 关闭电脑防火墙。在控制面板里面可以关闭,不同型号电脑不同,可以在网上搜到教程。4.在
运行 中输入 regedit.exe这一步会启动电脑的
注册表编辑器。这一步会启动电脑的
注册表编辑器。在HKEY_CURRENT_USER-software-Microsoft-Fiddler2右键-新建-DWORD32位值,值为80,如下图。在fiddler界面,点击Rules-Customize Rules,第一次应该会提醒你下载一个东西。下载之后,会保存在C:\\Users\\lenovo\\Documents\\Fiddler2\\Scripts目录下,用文本编辑器打开该目录下CustomRules.js文件,在Inside the OnBeforeRequest handler下面添加一行代码:if (oSession.host.toLowerCase() == \"webserver:8888\") oSession.host = \"webserver:80\"添加完成如下图:5. 手机进入网页:5. 手机进入网页:,看能否出现下面这个响应页面。如果能够响应的话,在手机上安装文件,FiddlerRoot.cer,可以在官网下载。(如果你的手机不能够直接安装它的话,在手机设置-general-security&privacy-install from USB storage,找到这个文件,然后就可以安装。之后在设置-general里面有trusted credenitials-user,点击刚才安装的这个就好。)注:以上是我找到的所有可能的解决办法,全部都试过一遍,但是还是存在不能够解决的问题。比如,我的手机只有一部分app能够用fiddler,另外一部分在连接fiddler之后就无法上网了。如果有大神了解相关的知识,还希望能够告知我。更多项目介绍,请关注我们的项目专栏:项目联系方式:项目邮箱( 的邮箱):申请加入项目或者想给项目提供指导和帮助,请联系CHO :知乎:(CEO)(COO&CHO,Human)
(CTO) (CFO)(CRO,Research)","updated":"T13:45:41.000Z","canComment":false,"commentPermission":"anyone","commentCount":5,"collapsedCount":0,"likeCount":29,"state":"published","isLiked":false,"slug":"","lastestTipjarors":[],"isTitleImageFullScreen":false,"rating":"none","titleImage":"","links":{"comments":"/api/posts//comments"},"reviewers":[],"topics":[{"url":"/topic/","id":"","name":"fiddler"}],"adminClosedComment":false,"titleImageSize":{"width":0,"height":0},"href":"/api/posts/","excerptTitle":"","column":{"slug":"xmucpp","name":"China's Prices Project"},"tipjarState":"activated","tipjarTagLine":"请鼓励我这只勤劳的小蜜蜂~","sourceUrl":"","pageCommentsCount":5,"tipjarorCount":0,"annotationAction":[],"hasPublishingDraft":false,"snapshotUrl":"","publishedTime":"T21:45:41+08:00","url":"/p/","lastestLikers":[{"bio":"手机游戏策划 寻找新机会","isFollowing":false,"hash":"ec03aa1c52ba94a77ff9d","uid":28,"isOrg":false,"slug":"robinmist","isFollowed":false,"description":"练练幽默感","name":"郑向晨","profileUrl":"/people/robinmist","avatar":{"id":"e7d94e329","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"O_o","isFollowing":false,"hash":"b958ade537d5e0ba7802","uid":268500,"isOrg":false,"slug":"chenytmore","isFollowed":false,"description":"","name":"Crystal","profileUrl":"/people/chenytmore","avatar":{"id":"da8e974dc","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":null,"isFollowing":false,"hash":"215cfa9fcf5fbbef032f8ec","uid":203900,"isOrg":false,"slug":"diao-li-zhi-79","isFollowed":false,"description":"","name":"MPBF","profileUrl":"/people/diao-li-zhi-79","avatar":{"id":"67e86afea7ec1a10b71ddd19","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"养草的(ˉ▽ ̄~)","isFollowing":false,"hash":"ae8f9ce986dd1","uid":08,"isOrg":false,"slug":"cao-chong-tian-36-30","isFollowed":false,"description":"Hello World","name":"草重天","profileUrl":"/people/cao-chong-tian-36-30","avatar":{"id":"c15cfcbb2","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":null,"isFollowing":false,"hash":"b9abecd1fedea09c5d401","uid":433300,"isOrg":false,"slug":"wu-yu-de-bai-cai","isFollowed":false,"description":"","name":"无鱼的白菜","profileUrl":"/people/wu-yu-de-bai-cai","avatar":{"id":"v2-988b1d41a4adc15fb8d8a","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false}],"summary":"七月份为了编制list,我做了份配置fiddler的教程,现在整理一下发上来(主要因为今天我写不出其他东西了)。虽然这个软件安装之后的确很好用,但是配置过程问题太多,虽然找了这么多方法,官方文档也来回翻过了,仍然存在问题没有解决。 我是新手,如果有问…","reviewingCommentsCount":0,"meta":{"previous":{"isTitleImageFullScreen":false,"rating":"none","titleImage":"","links":{"comments":"/api/posts//comments"},"topics":[{"url":"/topic/","id":"","name":"LaTeX 排版与设计"}],"adminClosedComment":false,"href":"/api/posts/","excerptTitle":"","author":{"bio":"做个有趣的小天使(? o?_o?)?","isFollowing":false,"hash":"807e0bd3c928b98271ea","uid":384900,"isOrg":false,"slug":"liu-xiao-man-3-2","isFollowed":false,"description":"CPP课题组/这是我小号/我已委托“维权骑士”()为我的文章进行维权行动:)","name":"Suri","profileUrl":"/people/liu-xiao-man-3-2","avatar":{"id":"d6efe5b6a77a4ace23bbacd52b37ac83","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},"column":{"slug":"xmucpp","name":"China's Prices Project"},"content":"大家好,我最近开始学LaTeX,这篇文章是我这几天学的内容的笔记。目前我能够用LaTeX做到的事情是:了解LaTeX的一些基础相关知识,基本的英文文档,结构完整,会插入表格和列表的基本操作。希望你读完之后也能够达到同样或者高于我的水平吧。另外因为我也是新手,所以如果有错误还请大家在评论区指正。文章比较长,有图,并且只适合之前对LaTeX完全没有了解的人。目录一、什么是LaTeX?二、资料三、下载和安装四、基本结构及操作五、文档层次结构六、列表及表格环境七、特殊字符一、什么是LaTeX? 了解LaTeX之前,首先要知道TeX,TEX(TeX)是由著名的计算机科学家Donald E. Knuth()发明的排版系统,本质上还是一门宏语言。而LaTeX是基于这门宏语言,经过后人不断的完善形成的一种排版格式。二、资料目前网络上关于LaTeX的资料大多比较陈旧,下面推荐我自己看过的不错的一些。一本入门书:刘海洋,《LaTeX入门》,电子工业出版社。这本书在很多论坛上都被推荐过,我只看了前面基本介绍的部分,写的非常详细,可以参考。初步翻了后面的内容,应该比较全面,可以满足入门到进阶的要求。视频教程:。LaTeX网课没有找到,这是无意中在优酷上发现的一套视频,基本的方法介绍足够入门了,缺点是清晰度很差,只能听,看鼠标的移动,完全看不清楚代码的具体内容,因此需要辅助其他教程。不推荐知乎。之前被安利了知乎上有很多关于LaTeX的讨论,看过之后觉得知识太零散了,搜集知识的成本很高,而且不适合我这种初学者。估计以后水平高一点了可以看吧。三、下载和安装LaTeX现在主要使用的有两个,一个是Ctex,一个是Tex live。前者为中国科学院教授维护的Chinese Tex, 后者为TUG(用户组)维护版本。直接打包下载包含winedt,gspreview等。下载过程中两个版本,full和basic,full文件大,宏包全;basic文件小,使用宏包时软件进行自动下载。可以在两个版本中自行选择。下载CTeX可以直接在官网。我使用的为CTeX包,basic版本,版本内自带WinEdt编辑器。关于WinEdt编辑器的使用,可以看这里:——这个很关键,我下面讲的内容是默认你已经看过这个视频的!!四、基本结构及操作构成一篇文档最基本的三个语句是:\\documentclass{book} %确定文档类型:这里以book为例,也可以是report,article,letter等。\n\n\n\\begin{document}% 文档正文的开始\n\n\n\\end{document}% 正文的结束\n基本操作过程:创建文件--输入代码(也可以点击WinEdt上方提供的按钮)--点击编译为LaTeX(这一步是为了生成dvi文件)--保存文件--看下方是否报错,是否超时--没有则点击dvi-pdf查看 正常生成dvi会显示:出现错误会提示:(小注:dvi为latex自带的文档类型,ctex包中有dvi查看器;ps为很古老的一个类型,现在基本不用,但在某些特殊时候需要通过它转换为pdf)五、文档层次结构以book模板作为实例。%这是一个比较详细的结构,里面的命令是写文章用到的基本命令。\\documentclass{book} %模板类型为book\n\n\\title{...} %添加标题\n\n\\author{...} %添加作者\n\n\\date{} %LaTeX会自动生成日期,如果不需要就加这一步将日期去掉\n\n\\begin{document} %开始正文\n\\maketitle %制作封面\n\n\\tableofcontents %加入目录,包括页码(非必需)\n\n\\mainmatter %如果希望页码是从正文部分开始就加上这句命令(非必需)\n\n%下面是几个主要的层次结构;\n\n\\part{...} %第一部分\n\\chapter{...} %第一章\n\\section{...} %第一节\n\\subsection{...} %第一小节\n\n%可以重复排列添加上面的层次结构。\n注意一件事情:如果输入\\tableofcontents\n但是pdf格式中却什么都没有出现,那么需要再重复几次L与dvi转pdf过程。六、列表和表格环境1. 列表LaTeX的列表分为无序列表和自定义列表。(1). 有序列表%在WinEdt上方显示为Itemize,点击之后会跳出弹窗要求输入行数,默认为3,确认之后显示的内容为:\n\n\\begin{itemize}\n
\\item *\n
\\item *\n
\\item *\n\\end{itemize}\n\n下一步,直接在*的位置输入需要写的内容,例如:\n\n\\begin{itemize}\n
\\item This is the first row.\n
\\item This is the first row.\n
\\item This is the first row.\n\\end{itemize}\n\n编译效果如下图:\n(2). 自定义列表%在WinEdt上显示为Enumerate,点击之后内容为:\n\n\\begin{enumerate}\n
\\item *\n
\\item *\n
\\item *\n\\end{enumerate}\n\n同样可以在*位置输入所需内容,如果直接重复上面的步骤,你看到的将会是一个有序列表,以1.2.3.标记。\n之所以被称为自定义列表是因为我们可以自己选择所需要的项目符号,这一部需要使用宏包。 使用宏包的命令为:\\usepackage{...} %...为宏包名字\n简单来说,这个过程就像是Python里面的import和C语言里面的include。如果需要自定义项目符号,我们需要做下面的过程\\begin{enumerate}[A.] %这里我们将项目符号自定义为大写字母.,也就是说自定义过程需要将内容加在后面的[]中。\n
\\item hello\n
\\item hello,suri\n
\\item hello\n\\end{enumerate}\n输出的文档格式为:同样可以把A.换成任何自定义的符号。另外也可以在[]中对项目符号的格式进行修改。比如:\\begin{enumerate}[\\beseries A.] %对项目符号加粗\n\\begin{enumerate}[\\sffamily A.] %无衬线字体\n2. 表格(1)表格基本操作%插入表格的命令为编辑器上方的Tabular,点击之后确认行数和列数(这里是三行三列),将会出现:\n\n\\begin{tabular}{|*|*|*|} %这里的内容是为了确认对齐情况\n
% after \\\\: \\hline or \\cline{col1-col2} \\cline{col3-col4} ...\n
* & * & * \\\\ %将内容输入在*的位置\n
* & * & * \\\\\n
* & * & * \\\\\n
\\hline\n\\end{tabular}\n这里需要说明的几个情况是:表格内容对齐的方式有三种,分别是居中对齐,靠左对齐,靠右对齐。三种格式反映在表格第一行,代表符号分别为c,l,r(英文首字母)例如,如果我们需要将这份表格内容全部居中对齐,则输入:\\begin{tabular}{|c|c|c|}\n这里的竖线代表了输出之后的表格中会出现竖的表格线,如果不需要可以去掉,即为。\\begin{tabular}{ccc}\n输入内容是下面这样(没有添加竖线的情况):可能大家已经注意到了这里的横线,在latex中,添加横线的命令为:\\hline %添加横线,单独一行\n同时latex也支持在某几个单元格下面添加横线,命令为:\\cline{2-3} %表示在是在上一行的第二个第三个单元格下面添加横线。\n\n输入命令:\n\\begin{tabular}{ccc}\n
x & y & z \\\\\n
1 & 123 & 23 \\\\\n
\\cline{2-3}\n
34 & 57 & 789 \\\\\n
\\hline\n\\end{tabular}\n结果为:其他几个命令:\\\\ %用在每一行的后面,表示表格中的换行\n\\multicolumn {number} {...}{...} %合并列,其中number为要合并的列的数量,第一个...为对齐方式,第二个为合并的内容。只对该行有效。\n\\multirow %合并行,需要导入该宏包\n(2)导入excel表格导入excel表格方式有两种,一种是利用第三方宏,这种方式容易被计算机屏蔽;第二种如下。我随便写了一个表格,将表格内容复制,粘贴到记事本中,这时候你会发现是下面这样:也就是说,实际上表格中不同单元格之间是用Tab键分割开的。而我们在latex中使用的是&符号,所以,我们只需要将这里所有的tab一键替换为&符号。将替换后的内容复制到winedt中:\n\n\\begin{tabular}{cccc}\n\neshi&sd&dfefe&sdsd\\\\\n12&343&423&312\\\\\n123&32&132&312\\\\\n23&434&231&23\\\\\n\\end{tabular}\n\n只需要修改c的数量,以及后面添加\\\\\n结果:(3)更美观一些,添加表头应该都会发现上面的表格其实很丑,我们平时在论文中看到的可都不是这种东西,我们需要对表格进行一些修饰,添加表头。点击table,出现的是:\\begin{table}\n
\\centering\n
\\caption{}\\label{}\n\\end{table}\n这里的caption是标题,label主要在添加超链接时使用,centering表示所有内容居中对齐。%输入刚才内容\n\n\\begin{table}\n
\\centering\n
\\begin{tabular}{cccc}\n
eshi&sd&dfefe&sdsd\\\\\n
12&343&423&312\\\\\n
123&32&132&312\\\\\n
23&434&231&23\\\\\n
\\end{tabular}\n
\\caption{this is my table}\n\\end{table}\n结果:latex的优势是,表格的编号可以自动更新,会节省很大时间成本。注:如果表格太长无法在一页的话,需要将table换成longtable,并需要使用宏包。七、特殊字符%后面为注释;输入正规的%需要在%前面加\\\n\n$在数学状态下使用,数学公式有行间公式和行内公式两部分组成,行间公式需要在两个$$之间进行,居中对齐。一个$是生成行内公式;正规的$也需要\\\n\n{}属于内部命令,需要在前段和后端加\\\n\n\\在latex有专门的命令为backslash\n更多项目介绍,请关注我们的项目专栏:项目联系方式:项目邮箱( 的邮箱):申请加入项目或者想给项目提供指导和帮助,请联系CHO :知乎:(CEO)(COO&CHO,Human)
(CTO) (CFO)(CRO,Research)","state":"published","sourceUrl":"","pageCommentsCount":0,"canComment":false,"snapshotUrl":"","slug":,"publishedTime":"T00:40:59+08:00","url":"/p/","title":"LaTeX笔记|基本功能(一)","summary":"大家好,我最近开始学LaTeX,这篇文章是我这几天学的内容的笔记。 目前我能够用LaTeX做到的事情是:了解LaTeX的一些基础相关知识,基本的英文文档,结构完整,会插入表格和列表的基本操作。希望你读完之后也能够达到同样或者高于我的水平吧。 另外因为我也…","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"commentPermission":"anyone","commentsCount":5,"likesCount":172},"next":{"isTitleImageFullScreen":false,"rating":"none","titleImage":"","links":{"comments":"/api/posts//comments"},"topics":[{"url":"/topic/","id":"","name":"Python 入门"},{"url":"/topic/","id":"","name":"Python"}],"adminClosedComment":false,"href":"/api/posts/","excerptTitle":"","author":{"bio":"STAY YOUNG STAY SIMPLE","isFollowing":false,"hash":"7b428c4a87f4a538ad3ec5ca","uid":948300,"isOrg":false,"slug":"stevema998","isFollowed":false,"description":"","name":"馬小花","profileUrl":"/people/stevema998","avatar":{"id":"8deca354b70b234eaf32bff5a21faf13","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},"content":"分享一些最近刚学到的实用而有趣的Python特性。请多指教。本教程适用于Python 2.7,部分语法与Python 3.x有区别。理解本文章中的内容的前置要求是:了解python内置的常用数据类型了解类型(class)和对象(object)了解for循环的基本用法通过这篇文章,我希望读者们能够:掌握切片功能和列表生成器功能的用法理解可迭代对象和迭代器对象的关系,以及用迭代器进行迭代的原理。关于迭代部分的说明不甚详细,如有纰漏烦请各位在评论区指出。切片切片功能能够按照“每n个元素取出1个元素”的规律对list, tuple和str类型的数据进行操作。我们先定义一个变量,list直观一些。&&& a = range(100)\n用切片功能取a中第10个元素至第19个元素中的每个元素,可以写成如下形式:&&& a[10:20]\n[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]\n冒号前面的数字是起始项的索引,冒号后面的数字是结束项的索引,切片会切到结束项的前一个,例如:&&& a[90:99]\n[90, 91, 92, 93, 94, 95, 96, 97, 98]\n如果切取部分是从第0项开始的话,冒号前面的0可以省略。例如:&&& a[0:10]\n[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n&&& a[:10]\n[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n同样,如果切取部分的最后一项就是原list的最后一项的话,冒号后面的数字也可以省略。例如:&&& a[90:100]\n[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]\n&&& a[90:]\n[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]\n既然list有倒数的索引功能,切片操作也同样支持倒数的索引。例如:&&& a[-20:-10]\n[80, 81, 82, 83, 84, 85, 86, 87, 88, 89]\n如果冒号的前面和后面都什么也不填呢?返回原list。前面说了,切片可以“每隔n个元素取1个元素”,以上只演示了n = 1的情况,那么如何让n取1以外的数呢?&&& a[:20:5]\n[0, 5, 10, 15]\n只需要传入第三个参数就行啦。切片可以重复操作,例如&&& a[::2][::5]\n[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]\n\n&&& a = range(100000)\n&&& a[::2][::3][::5][::7][::11][::13]\n[0, 30030, 60060, 90090]\n切片也可以对数据类型为tuple和str的变量进行操作。一段字符串中的每一个字符被视为一项。&&& b = tuple(range(100))\n&&& b[50:60]\n(50, 51, 52, 53, 54, 55, 56, 57, 58, 59)\n\n&&& c = \"China's Prices Project\"\n&&& c[4::3]\n'a isre'\n2. 迭代迭代,就是指遍历目标变量中的每一个元素的过程。for语句进行的就是迭代。但是除了用for语句进行循环外,还有一种某些情况下更加高效的迭代方式:迭代器。迭代器是一种有着固定结构的变量类型,可以自己写,也可以通过内置的iter()函数生成。比如:&&& a = iter(range(5))\n&&& type(a)\n&type 'listiterator'&\n&&& for i in a:\n...
print i\n...\n0\n1\n2\n3\n4\n既然我们可以直接运行for i in range(5),why bother? 请看下面的例子。# 转载自/kaituorensheng/p/3826911.html\n\ndef fab(max): \n
n, a, b = 0, 0, 1 \n
while n & max: \n
L.append(b) \n
a, b = b, a + b \n
n = n + 1\n
return L\n如果我们取max = 1,000,000, 反正我试了,加速球直接变成99%,过了一会儿干脆黑屏了。但是如果使用迭代器呢?请看下面的例子。# 转载自/kaituorensheng/p/3826911.html\n\nclass Fab(object): \n
def __init__(self, max): \n
self.max = max \n
self.n, self.a, self.b = 0, 0, 1 \n\n
def __iter__(self): \n
return self \n\n
def next(self): \n
if self.n & self.max: \n
r = self.b \n
self.a, self.b = self.b, self.a + self.b \n
self.n = self.n + 1 \n
return r \n
raise StopIteration\n\na = Fab(1000000)\nfor i in a:\n
print i\n这里的Fab()就是一个迭代器对象。虽然代码很长,但是在这段代码里max取多少都没有问题,我赋了个一百万然后晾一边让它刷了一个小时,内存占用率没怎么变。其中的原理是什么呢?让我们仔细看看这段定义。类型Fab共包含三个方法,其中__iter__()和next()我们没有见过。构成一个可迭代对象的要点是,存在一个可以返回迭代器的__iter__()方法;构成一个迭代器的要点就是,存在一个可以被重复调用的next()方法。可以看出,这里的Fab不仅是一个迭代器对象,也是一个可迭代对象。让我们先放下让人头疼的可迭代对象和迭代器对象,看看这段代码被执行时都发生了什么。事实上,python的for语句执行迭代器时的大概过程如下。(不会用PS)看完了这个图,是不是感觉稍微明白了一点呢?同时可以看出,某些情况下迭代器更加高效的原因是由于它不断执行next(),它只返回数列的下一个数,也就是说同一时间内内存中只有一个数,因此当处理一些大容量的数据时较把所有数据都存在内存里的for循环要好得多。我们回到上面的Fab。当for语句执行时,显然前三个条件都满足,第三个条件中__iter__()方法返回的是它本身,这是由于它本身包含一个能够被重复调用的next()方法。可迭代对象和迭代器对象并不一定要放在同一个对象中,例如:#
转载自/81916/\nclass Iterable:\n
def __iter__(self):\n
return Iterator()\n\nclass Iterator:\n
def __init__(self):\n
self.start = -1\n
def __next__(self):\n
self.start += 2\n
if self.start & 10:\n
raise StopIteration\n
return self.start\n3. 列表生成式如果我们想得到一些按照特殊规则产生的list,可以使用列表生成式。比如说,我想生成从1到20的每个整数的平方,如果用循环的话,就是a = range(1, 21)\nl = []\nfor i in a:\n
l.append(i * i)\n而如果用列表生成式的话,就是[x * x for x in range(1, 21)]\n算法是类似的,但是清爽许多。我们还可以在后面加上限制条件,比如说只取偶数得到的结果:[x * x for x in range(1, 21) if x % 2 == 0]\n列表生成式还可以对字符串进行操作生成全排列:[m + n for m in 'RRRGB' for n in 'RGBBB']\n就酱,比起迭代来简单多了。更多项目介绍,请关注我们的项目专栏:项目联系方式:项目邮箱( 的邮箱):申请加入项目或者想给项目提供指导和帮助,请联系CHO :知乎:(CEO)(COO&CHO,Human)
(CTO) (CFO)(CRO,Research)","state":"published","sourceUrl":"","pageCommentsCount":0,"canComment":false,"snapshotUrl":"","slug":,"publishedTime":"T20:26:38+08:00","url":"/p/","title":"Python|切片,迭代和列表生成器","summary":"分享一些最近刚学到的实用而有趣的Python特性。请多指教。本教程适用于Python 2.7,部分语法与Python 3.x有区别。 理解本文章中的内容的前置要求是:了解python内置的常用数据类型了解类型(class)和对象(object)了解for循环的基本用法 通过这篇文章,我希望…","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"commentPermission":"anyone","commentsCount":11,"likesCount":31}},"annotationDetail":null,"commentsCount":5,"likesCount":29,"FULLINFO":true}},"User":{"liu-xiao-man-3-2":{"isFollowed":false,"name":"Suri","headline":"CPP课题组/这是我小号/我已委托“维权骑士”()为我的文章进行维权行动:)","avatarUrl":"/d6efe5b6a77a4ace23bbacd52b37ac83_s.jpg","isFollowing":false,"type":"people","slug":"liu-xiao-man-3-2","bio":"做个有趣的小天使(? o?_o?)?","hash":"807e0bd3c928b98271ea","uid":384900,"isOrg":false,"description":"CPP课题组/这是我小号/我已委托“维权骑士”()为我的文章进行维权行动:)","profileUrl":"/people/liu-xiao-man-3-2","avatar":{"id":"d6efe5b6a77a4ace23bbacd52b37ac83","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false,"badge":{"identity":null,"bestAnswerer":null}}},"Comment":{},"favlists":{}},"me":{},"global":{},"columns":{"xmucpp":{"following":false,"canManage":false,"href":"/api/columns/xmucpp","name":"China's Prices Project","creator":{"slug":"zhang_guo"},"url":"/xmucpp","slug":"xmucpp","avatar":{"id":"28865c3beae9dbed3ef166","template":"/{id}_{size}.jpeg"}}},"columnPosts":{},"columnSettings":{"colomnAuthor":[],"uploadAvatarDetails":"","contributeRequests":[],"contributeRequestsTotalCount":0,"inviteAuthor":""},"postComments":{},"postReviewComments":{"comments":[],"newComments":[],"hasMore":true},"favlistsByUser":{},"favlistRelations":{},"promotions":{},"switches":{"couldAddVideo":false},"draft":{"titleImage":"","titleImageSize":{},"isTitleImageFullScreen":false,"canTitleImageFullScreen":false,"title":"","titleImageUploading":false,"error":"","content":"","draftLoading":false,"globalLoading":false,"pendingVideo":{"resource":null,"error":null}},"drafts":{"draftsList":[],"next":{}},"config":{"userNotBindPhoneTipString":{}},"recommendPosts":{"articleRecommendations":[],"columnRecommendations":[]},"env":{"isAppView":false,"appViewConfig":{"content_padding_top":128,"content_padding_bottom":56,"content_padding_left":16,"content_padding_right":16,"title_font_size":22,"body_font_size":16,"is_dark_theme":false,"can_auto_load_image":true,"app_info":"OS=iOS"},"isApp":false},"sys":{}}

我要回帖

更多关于 svn默认端口号 的文章

 

随机推荐