递归函数调用栈

递归函数也使用调用栈,下面是计算阶乘的递归函数。 def fact(x): if x==1: return 1 else: return x*fact(x-1) print fact(3) 下面详细分析调用fact(3)时调用栈是如何变化的流程图。 注意:每个fact调用都有自己的x变量,在一个函数调用中不能访问另一个x变量。...

阅读全文

JavaScript数字精度丢失问题总结

本文分为三个部分 JS 数字精度丢失的一些典型问题 JS 数字精度丢失的原因 解决方案(一个对象+一个函数) 一、JS数字精度丢失的一些典型问题 两个简单的浮点数相加 0.1 + 0.2 != 0.3 // true 这真不是 Firebug 的问题,可以用alert试试 看看Java的运算结果 再看看Python 大整数运算 9999999999999999 == 10000000000000001 // ? 16位和17位数竟然相等,没天理啊。 又如 var x = 9007199254740992 x + 1 == x // ? 结果 三观又被颠覆了。 toFixed 不会四舍五入(Chrome) 1.335.toFixed(2) // 1.33 Firebug 线上曾经发生过 Chrome...

阅读全文

前端安全之XSS攻击

XSS(cross-site scripting跨域脚本攻击)攻击是最常见的Web攻击,其重点是“跨域”和“客户端执行”。有人将XSS攻击分为三种,分别是: Reflected XSS(基于反射的XSS攻击) Stored XSS(基于存储的XSS攻击) DOM-based or local XSS(基于DOM或本地的XSS攻击) Reflected XSS 基于反射的XSS攻击,主要依靠站点服务端返回脚本,在客户端触发执行从而发起Web攻击。 例子: 做个假设,当亚马逊在搜索书籍,搜不到书的时候显示提交的名称。 在搜索框搜索内容,填入<script>alert('handsome boy')</script>, 点击搜索。 当前端页面没有对返回的数据进行过滤,直接显示在页面上, 这时就会alert那个字符串出来。 进而可以构造获取用户cookies的地址,通过QQ群或者垃圾邮件,来让其他人点击这个地址: http://www....

阅读全文

HTTP与HTTPS握手的那些事

今天我总结了什么是HTTP三次握手,还有HTTPS握手的过程以及为什么HTTPS是安全的。 前提 在讲述这两个握手时候,有一些东西需要提前说明。 HTTP与TCP/IP区别? TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。 下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI(Open System Interconnect)模型中的位置: CA证书是什么? CA(Certificate Authority)是负责管理和签发证书的第三方权威机构,是所有行业和公众都信任的、认可的。 CA证书,就是CA颁发的证书,可用于验证网站是否可信(针对HTTPS)、验证某文件是否可信(是否被篡改)等,也可以用一个证书来证明另一个证书是真实可信,最顶级的证书称为根证书。除了根证书(自己证明自己是可靠),其它证书都要依靠上一级的证书,来证明自己。 HTTP三次握手 HTTP(HyperText Transfer Protocol)超文本传输协议是互联网上应用最为广泛的一种网络协议。由于信息是明文传输,...

阅读全文

前端页面操作路径可视化

为了更好地了解用户对产品的使用情况,业务中,我们经常会收到埋点统计的需求,比如: 收集一段时间内用户光标在页面中的运动情况,包括光标移动、点击等行为 统计用户滚屏行为 统计用户在站点的停留时长 收集页面链接的点击数量等 本文介绍了如何通过xpath来收集一段时间内用户光标在页面中的运动情况,包括光标移动、点击等行为 1. 什么是全(无)埋点? 首先全(无)埋点并不是完全不用写代码,而是尽可能的少写代码。开发者将SDK集成到项目中,配置并初始化SDK之后,就可以实现自动化采集用户行为数据。 2. 页面操作路径 2.1 点击操作路径 页面操作路径是指用户在当前页面都点击了什么;比如用户在当前页面先点了按钮1,然后又点了按钮2,....;这里需要注意下和用户访问路径的区别,用户访问路径指的是一次会话中,用户访问的多个页面路径。 2.2 滚动操作路径 滚动操作路径是指记录页面滚动的位置信息,以方便的统计用户在页面中从上往下滚动时,从哪儿跳出页面的几率高。 3. xpath XPath是一门在XML文档中查找信息的语言。XPath用于在XML文档中通过元素和属性进行导航。全埋点需要把点击的目标对象在页面文档结构中的xpath路径记录下来。 4. 获取xpath的js库 function ellocate...

阅读全文