1947年9月9日,Grace Hopper发现了第一个电脑上的bug。当团队在Mark II计算机上工作时,搞不清楚为什么电脑不能正常工作了。...经过深度挖掘,才发现,原来是一只飞蛾误打误撞地飞到了计算机内部,从而引发了故障。从此,人们开始用“Bug”(原意是“虫子”)来称呼计算机中的隐含的错误。...交互体验不佳:指用户使用起来不方便。譬如,电梯控制面板上的“报警”按钮和“关门”按钮紧挨在一起,你是否经常由于”关门”而误触了“报警”按钮?...再比如,你在网页中填写了一个长长的表单,点击“提交”按钮后,系统提示输入信息有误,却并没有告诉你错误的哪里,你是会不耐烦地从头查阅,还是干脆放弃?...除此之外,每周在项目内进行一次技术分享Session。 当然,以上两点只是我基于A项目举的一个例子。实际上,Defects还给了我们很多启示,比如,为什么项目老是加班?
1.1 IP地址 在数据链路层中我们一般通过MAC地址来识别不同的节点,而在IP层我们也要有一个类似的地址标识,这就是IP地址。...比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会,这 也就是为什么说建立在IP层以上的协议是可能做到安全的原因。...原理是用类型码为0的ICMP发请 求,受到请求的主机则用类型码为8的ICMP回应。 ping程序来计算间隔时间,并计算有多少个包被送达。用户就可以判断网络大致的情况。...ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次...另,慢开始的“慢”并不是指cwnd的增长速率慢,而是指在TCP开始发送报文段时先设置cwnd=1,使得发送方在开始时只发送一个报文段(目的是试探一下网络的拥塞情况),然后再逐渐增大cwnd。
1)IP地址 在数据链路层中我们一般通过MAC地址来识别不同的节点,而在IP层我们也要有一个类似的地址标识,这就是IP地址。...给主机一个处理错误的机会,这 也就是为什么说建立在IP层以上的协议是可能做到安全的原因。 四、ping ping可以说是ICMP的最著名的应用,是TCP/IP协议的一部分。...ping这个单词源自声纳定位,而这个程序的作用也确实如此,它利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为0的ICMP发请 求,受到请求的主机则用类型码为8的ICMP回应。...ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次...另,慢开始的“慢”并不是指cwnd的增长速率慢,而是指在TCP开始发送报文段时先设置cwnd=1,使得发送方在开始时只发送一个报文段(目的是试探一下网络的拥塞情况),然后再逐渐增大cwnd。
1.1 IP地址 在数据链路层中我们一般通过MAC地址来识别不同的节点,而在IP层我们也要有一个类似的地址标识,这就是IP地址。...给主机一个处理错误的机会,这 也就是为什么说建立在IP层以上的协议是可能做到安全的原因。 四、ping ping可以说是ICMP的最著名的应用,是TCP/IP协议的一部分。...在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。 「第一次握手」:建立连接。...ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次...另,慢开始的“慢”并不是指cwnd的增长速率慢,而是指在TCP开始发送报文段时先设置cwnd=1,使得发送方在开始时只发送一个报文段(目的是试探一下网络的拥塞情况),然后再逐渐增大cwnd。
1.1 IP地址 在数据链路层中我们一般通过MAC地址来识别不同的节点,而在IP层我们也要有一个类似的地址标识,这就是IP地址。...给主机一个处理错误的机会,这 也就是为什么说建立在IP层以上的协议是可能做到安全的原因。 四、ping ping可以说是ICMP的最著名的应用,是TCP/IP协议的一部分。...在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。 第一次握手:建立连接。...ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次...另,慢开始的“慢”并不是指cwnd的增长速率慢,而是指在TCP开始发送报文段时先设置cwnd=1,使得发送方在开始时只发送一个报文段(目的是试探一下网络的拥塞情况),然后再逐渐增大cwnd。
1.第一次挥手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_...那TCP为什么非要进行三次连接呢?在谢希仁的《计算机网络》中是这样说的: 为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。...在书中同时举了一个例子,如下: "已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失, 而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达...TCP是全双工 模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2, 它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;当主机...2返回ACK报文 段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN 报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了
在TIME_WAIT状态时两端的端口不能使用,要等到2MSL时间结束才可继续使用。当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃。...不过在实际应用中可以通过设置SO_REUSEADDR选项达到不必等待2MSL时间结束再使用此端口。 TTL与MSL是有关系的但不是简单的相等的关系,MSL要大于等于TTL。 为什么要三次握手?...1、《计算机网络》中是这样说的: 为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。...在书中同时举了一个例子,如下: 已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达...也发送了FIN报文段时,这个时候就表示 Server 也没有数据要发送了,就会告诉 Client ,我也没有数据要发送了,之后彼此就会愉快的中断这次TCP连接。
不过,只有当标志位中的ACK标志(下面介绍)为1时该确认序列号的字段才有效。主要用来解决不丢包的问题; Offset:给出首部中32 bit字的数目,需要这个值是因为任选字段的长度是可变的。...TCP应答号将会包含在TCP数据包中;有两个取值:0和1,为1的时候表示应答域有效,反之为0; TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1 PSH:这个标志位表示...没有“已失效的连接请求报文” 假定出现了一种异常的情况 即客户端发出的第一个连接请求报文段并没有丢失,而是在某些网络节点长时间滞留了,以致延误到连接释放以后的某个时间才到达了服务端。...1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求; 第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态; 第四次分手:主机1收到主机2发送的...TCP2.png 第一次握手: 这里的截图我们只接到传输层的协议部分。 向着服务端发送一个Syn的报文。其中Sequence Number=0 ?
转化统计 在一个普通的App里面,可供统计的用户行为非常多:每一个按钮,每一次点击几乎都可以作为事件发送给GA。而如果人力有限,应该优先统计哪些呢?...这样一来,和分享行为相关的信息基本就统计全了。 事件参数的用法非常灵活和自由,在本篇中大家只要知道这是用法之一即可,在以后的文章里我再解释为什么要这样设置,以及能得到什么样的结果。...然后他把这段需求发给研发同事小孟看了一下,对方发来一个问题:分享文章有两个关键点,1、用户在App内点击分享按钮之后,再点击选择具体分享的平台时(例如“朋友圈”);2、在微信里完成分享之后,用户可能回到...触发条件:用户在文章列表页滚屏加载更多内容时发送事件 Category:加载下一页 Action:加载下一页 Label:(留空) 与下拉刷新类似,加载更多也是一个比较简单的事件,所以只发送了两个必填参数...触发条件:App端发生错误时发送事件 Category:报错信息 Action:具体的错误信息 Label:用户的设备信息 除了崩溃之外,有时候App中还会产生一些其他类型的错误,例如服务器相应超时、图片加载失败之类
一.表单介绍 在HTML中,表单是由元素来表示的,而在JavaScript中,表单对应的则是HTMLFormElement类型。...//如果存在返回退出事件 flag = true;//否则确定是第一次,设置为true PS:在某些浏览器,F5只能起到缓存刷新的效果,有可能获取不到真正的源头更新的数据。...由于类型可以表示多种表单字段,因此有些属性只适用于某些字段。...在某些浏览器中,blur事件会先于change事件发生;而在其他浏览器中,则恰好相反。...如果要阻止裁剪、复制和粘贴,那么我们可以在剪贴板相关的事件上进行处理,JavaScript提供了六组剪贴板相关的事件: 事件名 说明 copy 在发生复制操作时触发 cut 在发生裁剪操作时触发 paste
,A买了一个HHKB的键盘,而B则购买了一把民谣吉他,这些信息都会被保存下来 用途是:保存账户信息,登录时询问日后是否自动登录,或者根据之前浏览,购买过的商品,分析用户喜欢什么类型的商品,做出精准推送...Session (五) Session 问题:我再Aservlet中设置了Session属性,在Bservlet中获取A的属性 在浏览器中新建一个页面再次访问Bservlet 报空指针异常 现在问题来了...第二种:网络延迟,多次点击提交按钮 略图 解决方案: 网络延迟问题: 对于第二种网络延而造成多次提交数据给服务器,其实是客户端的问题,我们可以使用javaScript来防止 → 当用户第一次点击提交按钮是...Session可以存储任何类型的数据,可以把Session看成是一个容器 从隐私安全上比较 Cookie存储在浏览器中,对客户端是可见的。信息容易泄露出去。...从跨域名上比较 Cookie可以设置domain属性来实现跨域名 Session只在当前的域名内有效,不可跨域名 结尾: 如果内容中有什么不足,或者错误的地方,欢迎大家给我留言提出意见 邮箱:ideal_bwh
当经过 Interval 属性中定义的时间间隔时,该 JavaScript 组件将从浏览器启动回发。...,是一个Control类型的参数(重载为Page类型),表示为哪个控件注册脚本,这就是多出来的那个参数,最后一个参数,表示是不是为注册的脚本加入一个标记 这时我们在点击按钮,就可以正常弹出提示框了...在我们自行处理错误的时候,就需要在客户端响应PageRequestManager中的endRequest事件,并将errorHandled属性设置为True 一个关于错误处理的示例 现在如果使用Visual...,然后浏览页面,点击按钮,就会自动跳转到我们设定的默认错误页面 那么,如果想在当前出现错误的页面中处理错误,就要这样做 首先把AllowCustomErrorsRedirect="false" 然后在页面中添加如下代码...读取请求信息 取消此次异步更新 一个示例 如果我们要在一个优先级高的异步回送发起时,取消已经发起的优先级较低的操作,而在一个优先级较低的异步回送发起时,如果一优先级高的异步回送还没有完成时
设计风格 起初咱也打算遵循 Google Material Design 风格来设计(很喜欢),顺便也借用了栅格、卡片和按钮等组件。所以最初能够快速成型。...决定使用 medium-zoom 替代,并全部使用 Vanilla JavaScript,以移除 jQuery。...Strato - Hexo 主题「Yun」版本宣传 PV 当我第一次听说要做主题的宣传 PV 我是拒绝的,因为,不能你让我发 1.0,我就马上去发,第一我要试一下,因为我不愿意做完了以后再加一些特技上去...而且也不是工业级的东西),其实 0.8.x 的时候便准备发,又听的 Hexo 5.0 即将发布,于是便再等等,适配完再发吧,中途也又修了不少 BUG,我希望 1.0 至少在功能上是一个相当稳定的阶段。...不得不承认,最开始开坑时我主要是想写一个自用的主题,一是不想过于同质化(毕竟 next 真的是太 ?
开放能力、无障碍访问 2.0、单位 2.0.1、响应式单位rpx 在使用 CSS 进行移动端的网页开发时,由于不同手机设备的屏幕比,在换算像素单位时会遇到很多麻烦。...使用竖向滚动时,需要给scroll-view一个固定高度 说白了其实就是一个可以 允许滚动的容器,只需要设置最大高度即可 属性说明: 属性 类型 默认值 必填 说明 最低版本 scroll-x boolean...否 获取用户手机号回调,open-type=getPhoneNumber时有效 1.2.0 binderror eventhandle 否 当使用开放能力时,发生错误的回调,open-type=...合法值说明最低版本 contact 打开客服会话,如果用户在会话中点击消息卡片后返回小程序,可以从 bindcontact 回调中获得具体信息,具体说明 (*小程序插件中不能使用*...aspectFill 缩放模式,保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。
程序猿已经在风中凌乱。。。 从这个段子中多少能折射出产品和技术之间的各种激情“火花”。产品经理眼中简单的需求,而在我们看来是不可能实现的。而程序员也无法理解产品经理为什么要实现这样的需求。...它们执行与我们手动测试应用程序时相同的操作。 在我们的应用程序中,我们有一个用户(操作)旅程。当用户点击按钮时,模式将打开,当他们点击模式中的按钮时,模式将关闭。...这个按钮我称呼它为“逐过程执行”按钮,和“逐语句执行”按钮不同,“逐过程执行”按钮常用在一个方法调用多个js文件时,涉及到的js代码比较长,则会使用到这个按钮。 上图: ?...假设上图我只在227行打了个断点,然后一直点击逐语句执行”按钮到229行,这时候如果再点击一次“逐语句执行”按钮呢?则会进入下图的js里: ?...模块 不少人都曾经在 npm 上发布过自己开发的 JavaScript 模块,而在使用一些模块的过程中,我经常产生“这个模块很有用,但如果能 xxx 就更好了”的想法。
Session相当于在服务器中建立了一份“客户明细表”。 为什么要使用Session技术?...接着,我在浏览器中新建一个会话,再次访问Servlet7 ? 发现报了空指针异常的错误 ? 现在问题来了:服务器是如何实现一个session为一个用户浏览器服务的?...于是,我们可以使用javaScript来防止这种情况 要做的事情也非常简单:当用户第一次点击提交按钮时,把数据提交给服务器。当用户再次点击提交按钮时,就不把数据提交给服务器了。 监听用户提交事件。...由于网络延迟造成的多次提交数据给服务器,我们还可以使用javaScript代码这样解决:当我点击过一次提交按钮时,我就把提交的按钮隐藏起来。不能让用户点击了! 想要让按钮隐藏起来,也很简单。...现在有一个问题:我在购物的途中,不小心关闭了浏览器。当我再返回进去浏览器的时候,发现我购买过的商品记录都没了!!为什么会没了呢?
碎碎念 前几天在twikoo的交流群中,有人提到了这样一个问题:twikoo可以实现段落评论吗?...问题提出番茄小说Hexo段落链接说说卡片回复卡片回复效果 内容简述 实现亮暗模式适配 实现高分辨率适配,设置上下阈值,基本确保不会超出屏幕 动画效果适配 自动将节选段落放置在评论框中 解决文本中含有回车导致函数失效的问题...经过设计,我决定将按钮添加在右键菜单中,并且是文章页,且需要选中文字右键才有效果(因为你不选中文字回复什么段落),我们先添加按钮,如果没有进行魔改右键菜单的请按照别人的教程进行魔改) 以上均可以实现右键菜单的魔改...妥协方案 下面我们需要实现该功能,刚开始我选择的时使用和说说页面类似的效果,当点击评论后,找到评论区输入框,将选中文字放到输入框中,进行类似于回复段落的效果,但是由于我设置的懒加载,当评论区没有滚入到页面视野内时不会自动加载...所以,我想出了最后的一种方案:弹窗法。 完美(可能)实现方案 经过了半天的思考,我在想,为什么我会被说说的评价局限住呢?我可以参考一下番茄小说,每段话后面有个按钮,点击后弹窗,那我也可以这么实现吧?
中,我介绍了大数据系统测试之功能测试,含对数据的采集和传输,存储和管理,数据计算,数据查询和分析以及数据可视化等功能的测试。本篇的埋点测试便是其中功能测试的一部分。...说说我的理解,在应用程序(APP/H5/小程序等)投入运营后, 在做用户行为分析的时候需要挖掘核心业务功能使用情况时,往往会需要在应用的代码中添加一些额外的代码来采集数据,这就是所谓的“埋点”。...而埋点测试就是对埋点数据的测试。 现在埋点方式主要分为三种,分别是:代码埋点、可视化埋点、无埋点(全埋点)。 代码埋点主要由研发工程师手工在程序中写代码实现,通过触发某个动作后程序自动发送数据。...埋点测试需要注意的点 1.语义准确(一致性) 语义准确指的主要是我们要知道开发埋的是一个什么类型的点,这里的类型指代一个一个语义模型,例如一个卡片曝光( show + card )、一个按钮曝光( show...2.字段准确(准确性) 埋点的每个字段的值在上报的时候应该保证准确,这里的准确是字段和埋点列表中的枚举值应该一一对应,例如卡片的曝光 logtype 是 show,element_type 是 card
表单的基础知识 ---- 在 HTML 中,表单是由 form 元素来表示的,而在 JavaScript 中,表单对应的则是 HTMLFormElement 类型。...提交表单时可能出现的最大问题,就是重复提交表单。解决这一问题的办法有两个: 在第一次提交表单后就禁用提交按钮 利用 onsubmit 事件处理程序取消后续的表单提交操作。...用户单击重置按钮重置表单时,会触发 reset 事件,利用这个机会,我们可以在必要时取消重置操作。 表单字段 可以像访问页面中的其他元素一样,使用原生 DOM 方法访问表单元素。...value 值改变时触发,对于 select 元素,在其选项改变时触发 文本框脚本 ---- 在 HTML中,有两种方式来表现文本框: 使用 input 元素的单行文本框 使用 textarea 元素的多行文本框...浏览器自己会根据标记中的规则执行验证,然后自己显示适当的错误消息(完全不用 JavaScript 插手)。 只有在某些情况下表单字段才能进行自动验证。
(这是真正的事件) 然而,在WUI库中,为一个按钮绑定事件是这样的,(这不是一个事件,这只是调用了一个方法,给这个方法传递了一个i额委托) 问题: 为什么会有这样的差异呢?...这个方法是我写的,我可以随意的控制他,让他做我想做的事情 二:Button的BindClickEvent方法 第一:这个方法接收一个类型为Action类型的参数,...为以后使用这个按钮(比如说触发他的事件)打下基础第五:我们判断是不是第一次对这个Button的实例做Click事件的绑定,如果是,那么就做下面的工作,如果不是,就不必做了;也就是说不管我给这个按钮绑定多少个...方法 在这个方法中,我们把绑定事件的JS脚本得到,并反馈给调用者, 以后可能还会有其他的脚本,所以智力使用了StringBuilder 七:移除一个事件绑定 第一: 事件列表中应该存在待移除的事件...第二: 事件列表中就剩这么一个待移除的事件,并且,这个按钮已经渲染在界面上了;就执行js的解绑脚本 第三: 在事件列表中移除这个事件 八:移除所有事件绑定 第一: 当事件列表中存在事件记录 第二:
领取专属 10元无门槛券
手把手带您无忧上云