脚本

浏览器渲染过程

戏子无情 提交于 2020-02-14 06:55:13
从键入url到页面显示发生了什么 这个过程可以大致分为两个部分:网络通信和页面渲染。 网络通信 输入url按下回车之后,浏览器会去浏览器缓存中寻找该url的ip;没有的话去系统缓存中找,还是没有的话去路由器缓存中寻找;再没有就去系统host文件中找,还是没有最后只能去请求dns服务器,然后dns给一个ip给浏览器;浏览器根据这个IP地址,向服务器发送HTTP请求。HTTP经过传输层(TCP的三次握手建立连接);网络层(IP协议查询MAC地址);数据链路层(找到对方的MAC地址之后,将数据传送到数据链路层);物理层(传输给服务器);服务器接受数据;服务器响应请求;服务器返回相应的文件(HTML文件等),接下来就是页面渲染 浏览器渲染 处理 HTML 并构建 DOM 树。(如果遇到style节点 则构建css树(这里不会阻塞dom树的构建)) 处理 CSS 构建 CSSOM 树。 将 DOM 与 CSSOM 合并成一个渲染树。 根据渲染树来布局,计算每个节点的位置。 调用 GPU 绘制,合成图层,显示在屏幕上。 在构建 CSSOM 树时,会阻塞渲染,直至 CSSOM 树构建完成。并且构建 CSSOM 树是一个十分消耗性能的过程,所以应该尽量保证层级扁平,减少过度层叠,越是具体的 CSS 选择器,执行速度越慢 浏览器渲染阻塞 当 HTML 解析到 script 标签时,会暂停构建 DOM

PHP漏洞全解

一世执手 提交于 2020-02-13 21:54:53
针对PHP的网站主要存在下面几种攻击方式: 1、命令注入(Command Injection) 2、 eval 注入( Eval Injection) 3、客户端脚本攻击(Script Insertion) 4、跨网站脚本攻击(Cross Site Scripting, XSS) 5、SQL注入攻击(SQL injection) 6、跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF) 7、Session 会话劫持(Session Hijacking) 8、Session 固定攻击(Session Fixation) 9、HTTP响应拆分攻击(HTTP Response Splitting) 10、文件上传漏洞(File Upload Attack) 11、目录穿越漏洞(Directory Traversal) 12、远程文件包含攻击(Remote Inclusion) 13、动态函数注入攻击(Dynamic Variable Evaluation) 14、URL攻击(URL attack) 15、表单提交欺骗攻击(Spoofed Form Submissions) 16、HTTP请求欺骗攻击(Spoofed HTTP Requests) 命令注入攻击 PHP中可以使用下列5个函数来执行外部的应用程序或函数 system、 exec 、

如何将 .net2.0注册到IIS ,重新注册IIS

流过昼夜 提交于 2020-02-13 20:46:37
打开程序-运行-cmd:输入一下命令重新注册IIS C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i 一。运行C:\WINNT\MICROSOFT.NET\FRAMEWORK\V版本号\ASPNET_REGIIS.EXE -I 即可 二。开始- 程序- Microsoft Visual Studio 2008- Visual Studio Tools- Visual Studio 2008 命令提示 然后输入 aspnet_regiis.exe -i OK 100%解决 以下是aspnet_regiis.exe参数的说明信息: -i - 安装 ASP.NET 的此版本,并更新 IIS 元数据库根处的 脚本映射和根以下的所有 脚本映射。现有的低版本脚本映射 升级到此版本。 -ir - 安装 ASP.NET 的此版本,仅注册。不 更新 IIS 中的脚本映射。 -enable - 带 -i 或 -ir 指定 -enable 时,还将 在 IIS 安全控制台(IIS 6.0 或更高版本)中启用 ASP.NET。 -s <path> - 在指定的路径以递归方式安装此版本 的脚本映射。现有的低版本脚本映射 升级到此版本。 例如 aspnet_regiis.exe -s W3SVC/1/ROOT

模块化工具require 学习笔记

拟墨画扇 提交于 2020-02-13 12:13:17
一:早就听说过模块化工具require.js的大名,之前也是由于自己的网页上引用了诸多的js,而且一堆的js引用放在那里,一个依赖另一个,导致我不敢随意改动各个js的位置,而且有时页面内容一多起来,js加载也使得本来的html内容出现响应延迟。因此,在网上查过后,便得知解决方法是使用AMD异步模块-require.js。 二:了解过require.js后,我们一般都知道它具有如下优点: 1,防止js加载阻塞页面渲染,实现js文件的异步加载,避免网页失去响应; 2,使用程序调用的方式加载js,防止出现如下丑陋不堪的一串引用,同时管理模块之间的依赖性,便于编写与维护; <script type="text/javascript" src="a.js"></script> <script type="text/javascript" src="b.js"></script> <script type="text/javascript" src="c.js"></script> <script type="text/javascript" src="d.js"></script> <script type="text/javascript" src="e.js"></script> <script type="text/javascript" src="f.js"></script>

iscroll 下拉刷新,上拉加载

风格不统一 提交于 2020-02-12 15:50:04
新手,直接贴代码了 <!DOCTYPE html> <html class=""> <head lang="en"> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta name="format-detection" content="telephone=no"> <meta name="renderer" content="webkit"> <meta http-equiv="Cache-Control" content="no-siteapp" /> <link rel="stylesheet" href="css/amazeui.min.css" /> <link rel="stylesheet" href="css/acjl.css" /> <link rel="stylesheet" href="css/ydac_pm.css" /> <link href="css/mobiscroll.custom-2.15

Redis学习笔记六:独立功能之 Lua 脚本

丶灬走出姿态 提交于 2020-02-12 09:23:30
Redis 2.6 开始支持 Lua 脚本,通过在服务器环境嵌入 Lua 环境,Redis 客户端中可以原子地执行多个 Redis 命令。 使用 eval 命令可以直接对输入的脚本求值: 127.0.0.1:6379> eval 'return "liushijie"' 0 "liushijie" 使用 evalsha 命令则可以根据脚本的 sha1 校验和对脚本进行求值,但是这个命令至少被 eval 命令执行过一次或被 script load 命令载入过。 创建并载入 Lua 环境 为了在 Redis 服务器中执行 Lua 脚本,Redis 在服务器内嵌了一个 Lua 环境,并对这个环境进行了一系列的修改,从而确保 Lua 环境可以满足 Redis 服务器的需要。这个过程由以下步骤组成: 创建一个基础的 Lua 环境。 载入多个函数库到 Lua 环境里。让 Lua 脚本可以使用这些函数库来进行数据操作。 创建全局表格 redis,这个表格包含了对 Redis 进行操作的函数,从而避免在脚本中引入副作用。 使用 Redis 自带的随机函数来替换 Lua 原有的带有副作用的随机函数。 创建排序辅助函数,Lua 环境使用这个辅助函数来对一部分 Redis 命令的结果进行排序,从而消除这些命令的不确定性。 创建 redis.pcall 函数的错误报告辅助函数

动态加载、移除js、css

三世轮回 提交于 2020-02-12 02:21:36
本文简单介绍动态加载、移除、替换js/css文件 。有时候我们在写前端的时候,会有出现需要动态加载一些东如css js 这样能减轻用户加载负担,从而提高响应效率。下面贴出代码。 //JS写法 <script language="JavaScript"> //动态加载一个js/css文件 function loadjscssfile(filename, filetype){ if (filetype=="js"){ var fileref=document.createElement('script') fileref.setAttribute("type","text/javascript") fileref.setAttribute("src",filename) } else if (filetype=="css"){ var fileref=document.createElement("link") fileref.setAttribute("rel","stylesheet") fileref.setAttribute("type","text/css") fileref.setAttribute("href",filename) } if (typeof fileref!="undefined") document.getElementsByTagName("head"

keepalived高可用工具

喜欢而已 提交于 2020-02-11 21:02:42
1.准备俩台虚拟机,一台主机,一台备机 我这里模拟的是 主机ip: 192.168.42.66  masternginx 备机ip: 192.168.42.77  slavenginx 虚拟ip: 192.168.42.11   具体步骤:    2.1 将keepalived上传到linux系统当中 2.2 cd /usr/local目录 2.3 tar -zxvf keepalived-xxxxxxxxx 2.4 切换到解压目录 2.5 yum install -y openssl openssl-devel 2.5 ./configure --prefix=/usr/local/keepalived 编译,将编译文件放到/usr/local/keepalived 2.6 make 2.7 make install 2.8 在/etc/keepalived 创建目录: mkdir /etc/keepalived 2.9 cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ 2.10 cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ 2.11 cp /usr/local/keepalived/etc

LoadRunner小技巧集锦

纵然是瞬间 提交于 2020-02-11 07:17:02
1、录制脚本中包含中文,出现乱码怎么办? 把录制选项中的Support charset选中UTF-8 录制脚本后,切换到树视图中,打开相应的脚本页面。在右侧的PageView中录制的脚本呈现中文版式,但是当切换到Server Response中,所有的中文全部换成的乱码,如“勌缞仫訆”。 原因是服务器端没有把响应的编码设置为gb2312 在IIS中找到Web.Config文件,在<system.web>….</system.web>节加入<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>后再次录制脚本,乱码变中文。 2、录制到的脚本是空白的 有可能是由于录制的URL地址采用的是localhost的问题,改成分配的IP地址或127.0.0.1试试。 3、插入文本检查点步骤时,使用web_reg_find,通常TextPfx和TextSfx中会包含双引号,需要进行转义(用斜杠),例如: web_reg_find("Search=Body", "SaveCount=Welcome", "TextPfx=欢迎<a class=\"drop\" id=\"viewpro\" onMouseOver=\"showMenu(this.id)\">", "TextSfx=

比特币之七交易的验证

南楼画角 提交于 2020-02-11 01:32:16
正在学习区块链,如果我哪里有错误希望大家指出,如果有任何想法也欢迎留言。这些笔记本身是在typora上写的,如果有显示不正确的敬请谅解。笔记本身也是给我自己写的,所以如果有侵权的请通知我,我立即删除。 7.交易的验证 7.1 前戏 下面讲的这些交易的验证其实都是在block body中,就是一次次的交易,之前的那些都是在block header中的数据。 图片最上面左侧的BTC-Output是指UTXO中的前一个比特币的输出,右侧unspent就是剩下的钱,spent就是花掉的钱,这个交易已经收到了23个交易,这都是之前讲过的。 “下面是这个交易的具体内容”,肖老师是这么说的, 我的理解是这就是merkle tree中的一个节点。一个确定的交易内容。VIN和VOUT是数组,太长了,放在下面单独说。我觉得下面这种格式不太正确,因为对于一次交易来说,vin和vout不是下面这种存放方法的。 **txid:**交易的id,transaction id **hash:**交易的哈希值,不是nonce的那个,那是什么呢?不知道 **version:**使用的比特币协议的版本号 **size:**这个交易的大小 **locktime:**交易的生效时间,一般来说都是0,立即生效。有的特殊的交易会用到这个值,比如有的交易会在10个区块后生效 **block hash:**这个区块所在的哈希值