知识点汇总

CSSHack与Web优化技巧
本文介绍了CSSHack的概念及分类,对比了优雅降级与渐进增强的不同应用场景,并提供了JavaScript克隆函数、cookie与session机制的详细解释。此外还探讨了重排与重绘现象及其优化方法。

什么是CSS Hack
一般来说是针对不同的浏览器写不同的CSS,就是 CSS Hack。
IE浏览器Hack一般又分为三种,条件Hack、属性级Hack、选择符Hack。例如:
1. 条件Hack

<!--[if IE]>
<style>
.test{color:red;}
</style>
<![endif]-->
  1. 属性Hack
.test{
color:#090\9; / For IE8+ /
color:#f00; / For IE7 and earlier /
_color:#ff0; / For IE6 and earlier */
}
  1. 选择符Hack
html .test{color:#090;} / For IE6 and earlier /
html .test{color:#ff0;} / For IE7 /

什么叫优雅降级和渐进增强
渐进增强 :
针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。
优雅降级:
一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
区别:

1. 优雅降级是从复杂的现状开始,并试图减少用户体验的供给
2. 渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要
3. 降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带

实现一个函数clone,可以对JavaScript中的主要的数据类型进行值复制

function clone(obj) { 
    var o; 
    switch (typeof obj) { 
        case "undefined": 
            break; 
        case "string": 
            o = obj + ""; 
            break; 
        case "number": 
            o = obj - 0; 
        case "boolean": 
            o = obj; 
            break; 
        case "object": // object 分为两种情况 对象(Object)或数组(Array) 
            if (obj === null) { 
                o = null; 
            } else { 
                if (Object.prototype.toString.call(obj).slice(8, -1) === "Array") { 
                    o = []; 
                    for (var i = 0; i < obj.length; i++) { 
                        o.push(clone(obj[i])); 
                    } 
                } else {
                    o = {}; 
                    for (var k in obj) { 
                        o[k] = clone(obj[k]); 
                    } 
                } 
            } 
            break; 
        default: 
            o = obj; 
            break; 
        } 
        return o; 
    }

cookie和session的机制是什么?有什么区别?

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话,它可以弥补http协议无状态的不足。常用的会话跟踪技术是cookie与session。cookie通过在客户端记录信息确定用户身份,session通过在服务器端记录信息确定用户身份。
cookie有什么作用?

cookie可以解决http的无状态的问题,与服务器进行交互,作为http规范存在。它具有极高的简便性、可扩展性和可用性,也可以通过加密和SSL技术来提高其安全性。因此推荐使用cookie作为标识而不是身份验证的工具。
cookie的缺点

 1. 大小和数目受限制。浏览器对一个域cookie的条目数有上限要求,且每个cookie的大小不得超过4kb。
 2. 存在安全性问题,易被人拦截。
 3. 需要指定域,不可以跨域
 4. 浪费带宽,因为我每次请求一个新的页面,cookie都会被自动发送过去。
 5. 有的移动端浏览器不支持cookie或浏览器禁用cookie
 6. 有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用

什么是重排和重绘?什么时候会发生重绘?如何避免重绘?
重绘是指的屏幕的一部分要重新绘制,比如元素的背景色发生了改变,但几何尺寸未发生改变。重排意味着元素的几何尺寸发生了改变,需要重新计算生成渲染树。
下面几种情况会发生重排:

 1. resize窗口时
 2. 修改网页默认字体时
 3. 修改CSS样式改变尺寸时
 4. JS操作dom树
 5. 一些影响布局的动画
 6. 使用JS脚本获得一些布局属性时,比如offsetTop

可以采取以下方法来减少重排:

 1. 不要一条条的修改DOM样式,改变className来“统一修改”(注:现代浏览器会进行增量异步reflow,即“攒够”一些修改后再统一修改)
 2. 把dom离线修改,比如将其至于内存或设置display:none。
 3. 为html动画原件使用position:absolute布局或fixed布局,这样不会引起重排和重绘。
 4. 不要使用table布局,因为稍加改动就会导致table的重新布局。
 5. 将offsetTop等属性缓存成局部变量

浏览器是如何渲染页面的?

 1. 浏览器会解析html\xhtml\svg,生成一个dom树,解析css文件生成css规则树,解析javascript以获得其对html和css的影响
 2. 解析完成后,浏览器会根据dom树和css规则树来生成渲染树。渲染树不包括像header元素这样页面中不会出现的元素。
 3. 会进行layout,定义元素的坐标
 4. 最后通过调用系统Native GUI的API绘制

网页中如何优化图像

  1. 去掉没有意义的修饰
  2. 使用css和矢量图代替位图
  3. 惰性加载图片
  4. 使用css sprites,将多张小图拼成一张大图

png和jpg格式的区别
png属于无损压缩,而jpg是有损压缩,一张图片多次使用jpg格式压缩的话会逐渐失真
png格式的图片存储空间明显大于jpg格式的图片

常见web攻击有哪些

  1. 跨站脚本攻击(XSS ,又称CSS,Cross Site Script)
  2. 分布式拒绝服务(DDOS,Distributed Denial of Service)
    利用合理的请求占用服务器的大量资源,使正常用户无法得到服务器的响应
  3. 跨站请求伪造攻击(CSRF,Cross site request forgery)
    攻击者通过各种方法伪造一个请求,模仿用户提交表单的行为,从而达到修改用户的数据,或者执行特定任务的目的
    解决方法是尽量使用post请求
  4. sql注入
    攻击者主要针对后台使用sql拼接方式查询的情况,
【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值