目录
1.自我介绍
2.javaScript的数据类型及简单介绍
3.快速排序、冒泡排序的实现原理
4.前端兼容性举例
5.你在做过的项目中,有哪些觉得让你惊艳的地方。具体侧重JS方面讲解。
6.数组与对象的赋值、深、浅拷贝
7.XSS与CSRF攻击原理与防御方法
8.跨域问题:
9.QPS分发问题
10.高并发情况怎么处理??
11.js作用域和原型链以及闭包
1.自我介绍
落落大方,举止端庄得体,说话有条理,注意和面试官眼神交流。
模板 :
开场白:面试官您好,非常荣幸参与贵公司**职位的应聘,下面我简单介绍一下我的个人情况
结束语:如果贵公司能够给我这个工作机会,我有信心,也有决心做好这份工作,以上是我的个人基本情况,希望今天自己面试有好的表现!
2.javaScript的数据类型及简单介绍
值类型:
String字符串: 用来存储字符的数据变量,单引号双引皆可;
Number数字类型: js只有一种数字类型,带不带小数点皆可;
Boolean布尔型: true或false,常用于判断;
Null类型: 尚未存在的对象;
Undefined类型: 已经声明但没有赋初始值的对象;
Symbol类型 (ES6最新引入, 表示独一无二的值):
引用类型:
Object对象: 对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔:
Array数组:
Function函数类型
3.快速排序、冒泡排序的实现原理
冒泡排序: 假设要求为升序,每一趟里面的具体是:每次比较相邻的数,如果后面的数比前面的数小就交换位置;
每一趟执行完后,最小的元素放在最前面,比完一趟之后,无序序列的长度就减1;
快速排序: 通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序
4.前端兼容性举例
what??
由于各浏览器内核不同,导致不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况。
在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果。所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题
example :
居中问题
div里的内容,IE默认为居中,而Firefox默认为左对齐,可以尝试增加代码margin: 0 auto;
自定义属性问题 问题说明:IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用 getAttribute() 获取自定义属性;Firefox下,只能使用 getAttribute() 获取自定义属性。 解决方法:统一通过 getAttribute() 获取自定义属性。
5.你在做过的项目中,有哪些觉得让你惊艳的地方。具体侧重JS方面讲解。
6.数组与对象的赋值、深、浅拷贝
赋值: 当我们把一个对象赋值给一个新的变量时,赋的其实是该对象的在栈中的地址,而不是堆中的数据 。也就是两个对象指向的是同一个存储空间,无论哪个对象发生改变,其实都是改变的存储空间的内容,因此,两个对象是联动的。
浅拷贝: 只是拷贝了基本类型的数据,而引用类型数据,复制后也是会发生引用,我们把这种拷贝叫做浅拷贝(浅复制)
浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。修改新对象里面值类型的数据不会影响到原对象,修改新对象里面引用类型的数据会影响到 原对象,
深拷贝: 深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。
7.XSS与CSRF攻击原理与防御方法
xss攻击(Cross Site Scripting): 跨站脚本攻击,为了不和CSS(层叠样式表混淆,故意把c改成s),
XSS是指恶意攻击者利用 网站没有对用户提交数据进行转义处理或者过滤不足的缺点 ,进而添加一些代码,嵌入到web页面中去。使别的用户访问都会执行相应的嵌入代码。
从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
XSS攻击的危害包括:
盗取各类用户帐号、控制数据、强制发送电子邮件、网站挂马、控制受害者机器向其它网站发起攻击、恶意窃取用户cookie、
共有3类XSS攻击
1、反射型XSS(浏览器——>服务器——>浏览器)
发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,故叫反射型XSS。 一个简单的例子:
2、存储型XSS(浏览器——>服务器——>数据库——>浏览器)
存储型XSS和反射型XSS的差别仅在于,提交的代码会存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码
最典型的例子是留言板XSS, 用户提交一条包含XSS代码的留言存储到数据库,目标用户查看留言板时,那些留言的内容会从数据库查询出来并显示,浏览器发现有XSS代码,就当做正常的HTML与Js解析执行,于是触发了XSS攻击。
3、DOM XSS(客户端浏览器)
DOM XSS和反射型XSS、存储型XSS的差别在于DOM XSS的代码并不需要服务器参与 ,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情。比如;eval方法 就会将字符串转化成可执行的js代码,从而导致问题;
防御方法:
XSS根源就是没完全过滤客户端提交的数据,所以防御方法就是 因此在思考解决XSS漏洞的时候,我们应该重点把握如何才能更好的将用户提交的数据进行安全过滤。
CSRF攻击( Cross-site request forgery ):跨站请求伪造
防御方法:
1、重要数据交互采用POST进行接收
2、使用验证码,只要是涉及到数据交互就先进行验证码验证,这个方法可以完全解决CSRF。但是出于用户体验考虑,网站不能给所有的操作都加上验证码。因此验证码只能作为一种辅助手段,不能作为主要解决方案。
3、验证HTTP Referer字段,该字段记录了此次HTTP请求的来源地址,最常见的应用是图片防盗链。PHP中可以采用APache URL重写规则进行防御,可参考:http://www.cnblogs.com/phpstudy2015-6/p/6715892.html
4、为每个表单添加令牌token并验证
(可以使用cookie或者session进行构造。当然这个token仅仅只是针对CSRF攻击,在这前提需要解决好XSS攻击,否则这里也将会是白忙一场【XSS可以偷取客户端的cookie】)
CSRF攻击之所以能够成功,是因为攻击者可以伪造用户的请求,该请求中所有的用户验证信息都存在于Cookie中,因此攻击者可以在不知道这些验证信息的情况下直接利用用户自己的Cookie来通过安全验证。由此可知,抵御CSRF攻击的关键在于:在请求中放入攻击者所不能伪造的信息,并且该信息不存在于Cookie之中。
鉴于此,我们将为每一个表单生成一个随机数秘钥,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。
由于这个token是随机不可预测的并且是隐藏看不见的,因此恶意攻击者就不能够伪造这个表单进行CSRF攻击了。
要求:
1、要确保同一页面中每个表单都含有自己唯一的令牌
2、验证后需要删除相应的随机数
8.跨域问题:
jsonp:(json with padding)json数据的一种使用模式
9.QPS分发问题
QPS( Queries Per Second) : 每秒钟处理完请求的次数;注意这里是处理完。具体是指发出请求到服务器处理完成功返回结果。可以理解在server中有个counter,每处理一个请求加1,1秒后counter=QPS。
TPS( TransactionsPerSecond): 每秒钟处理完的事务次数,一般TPS是对整个系统来讲的。一个应用系统1s能完成多少事务处理,一个事务在分布式处理中,可能会对应多个请求,对于衡量单个接口服务的处理能力,用QPS比较多。
并发量: 系统能同时处理的请求数/事物数
吞吐量:一段时间内能处理的事物的总量
RT: 响应时间,处理一次请求所需要的平均处理时间
10.高并发情况怎么处理??
CDN加速: CDN服务商在全国各个省份部署计算节点, CDN加速将网站的内容缓存在网络边缘,然后在用户访问网站内容的时候,通过调度系统将用户的请求路由或者引导到离用户接入网络最近或者访问效果的缓存服务器上,有该缓存服务器为用户提供内容服务;相对于直接访问源站,这种方式缩短了用户和内容之间的网络距离,从而达到加速的效果。
负载均衡: 当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。
静态HTML缓存: 其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。
分布式存储: 分布式存储往往采用分布式的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息。
数据库集群和库表散列: 大型网站都有复杂的应用,这些应用必须使用数据库,那么在面对大量访问的时候,数据库的瓶颈很快就能显现出来,这时一台数据库将很快无法满足应用,于是我们需要使用数据库集群或者库表散列。
在数据库集群方面,很多数据库都有自己的解决方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是类似的方案,您使用了什么样的DB,就参考相应的解决方案来实施即可。
上面提到的数据库集群由于在架构、成本、扩张性方面都会受到所采用DB类型的限制,于是我们需要从应用程序的角度来考虑改善系统架构,库表散列是常用并且最有效的解决方案。我们在应用程序中安装业务和应用或者功能模块将数据库进行分离,不同的模块对应不同的数据库或者表,再按照一定的策略对某个页面或者功能进行更小的数据库散列,比如用户表,按照用户ID进行表散列,这样就能够低成本的提升系统的性能并且有很好的扩展性。
图片服务器分离: 大家知道,对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的图片服务器,甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃,在应用服务器和图片服务器上,可以进行不同的配置优化,比如apache在配置ContentType的时候可以尽量少支持,尽可能少的LoadModule,保证更高的系统消耗和执行效率。
11.js作用域和原型链以及闭包
变量的作用域: 无非就是两种:全局变量和局部变量。Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。
1、什么是作用域链?
在理解闭包以前.最好能先理解一下作用域链的含义,简单来说,作用域链就是函数在定义的时候创建的,用于寻找使用到的变量的值的一个索引,而他内部的规则是,把函数自身的本地变量放在最前面,把自身的父级函数中的变量放在其次,把再高一级函数中的变量放在更后面,以此类推直至全局对象为止.当函数中需要查询一个变量的值的时候,js解释器会去作用域链去查找,从最前面的本地变量中先找,如果没有找到对应的变量,则到下一级的链上找,一旦找到了变量,则不再继续.如果找到最后也没找到需要的变量,则解释器返回undefined.
2、Js的内存回收机制
了解了作用域链,我们再来看看js的内存回收机制,一般来说,一个函数在执行开始的时候,会给其中定义的变量划分内存空间保存,以备后面的语句所用,等到函数执行完毕返回了,这些变量就被认为是无用的了.对应的内存空间也就被回收了.下次再执行此函数的时候,所有的变量又回到最初的状态,重新赋值使用.但是如果这个函数内部又嵌套了另一个函数,而这个函数是有可能在外部被调用到的.并且这个内部函数又使用了外部函数的某些变量的话.这种内存回收机制就会出现问题.如果在外部函数返回后,又直接调用了内部函数,那么内部函数就无法读取到他所需要的外部函数中变量的值了.所以js解释器在遇到函数定义的时候,会自动把函数和他可能使用的变量(包括本地变量和父级和祖先级函数的变量(自由变量))一起保存起来.也就是构建一个闭包,这些变量将不会被内存回收器所回收,只有当内部的函数不可能被调用以后(例如被删除了,或者没有了指针),才会销毁这个闭包,而没有任何一个闭包引用的变量才会被下一次内存回收启动时所回收.
3、什么是闭包
闭包是有权访问另一个函数作用域的变量的函数。 简单的说,Javascript允许使用内部函数---即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。 当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。
4、闭包的主要作用
闭包可以用在许多地方。它的最大用处有两个:一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
5、闭包与this对象
在闭包中使用this对象可能会导致一些问题,因为匿名函数的执行具有全局性,因此其this对象通常指window
把外部作用域的this对象保存在一个闭包能够访问的变量里面,就可以让闭包访问对象了,
6、闭包与内存泄漏
具体来说,如果闭包的作用域中保存着一个html元素,那么就意味着元素无法被销毁。
以上代码创建了一个作为element元素事件处理程序的闭包,而这个闭包则又创建了一个循环引用。由于匿名函数保存了一个对assignHandler()的活动对象的引用,因此会导致无法减少element的引用数。只有匿名函数存在,element的引用数至少也是1,因此他所占用的内存就不会被回收。
通过写代码来解决内部不能回收问题:
以上代码,实现闭包不直接引用element,包含函数的活动对象中也仍然会保存一个引用。因此,有必要把element的变量设置为null,这样就可以回收其占用的内存。
7、使用闭包的注意点
1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。
2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。
12.前端优化方案
前端优化的目的是什么 ? 1. 从用户角度而言,优化能够让页面加载得更快、对用户的操作响应得更及时,能够给用户提供更为友好的体验。 2. 从服务商角度而言,优化能够减少页面请求数、或者减小请求所占带宽,能够节省可观的资源。 总之,恰当的优化不仅能够改善站点的用户体验并且能够节省相当的资源利用。 前端优化的途径有很多,按粒度大致可以分为两类,第一类是页面级别的优化, 例如 HTTP请求数、脚本的无阻塞加载、内联脚本的位置优化等 ;第二类则是代码级别的优化 ,例如 Javascript中的DOM 操作优化、CSS选择符优化、图片优化以及 HTML结构优化等等。另外,本着提高投入产出比的目的,后文提到的各种优化策略大致按照投入产出比从大到小的顺序排列。 一、页面级优化 1. 减少 HTTP请求数 这条策略基本上所有前端人都知道,而且也是最重要最有效的。都说要减少 HTTP请求,那请求多了到底会怎么样呢 ?首先,每个请求都是有成本的,既包含时间成本也包含资源成本。一个完整的请求都需要经过 DNS寻址、与服务器建立连接、发送数据、等待服务器响应、接收数据这样一个 “漫长” 而复杂的过程。时间成本就是用户需要看到或者 “感受” 到这个资源是必须要等待这个过程结束的,资源上由于每个请求都需要携带数据,因此每个请求都需要占用带宽。另外,由于浏览器进行并发请求的请求数是有上限的 (具体参见此处 ),因此请求数多了以后,浏览器需要分批进行请求,因此会增加用户的等待时间,会给用户造成站点速度慢这样一个印象,即使可能用户能看到的第一屏的资源都已经请求完了,但是浏览器的进度条会一直存在。 减少 HTTP请求数的主要途径包括: (1). 从设计实现层面简化页面 保持页面简洁、减少资源的使用时最直接的。如果不是这样,你的页面需要华丽的皮肤,则继续阅读下面的内容。 (2). 合理设置 HTTP缓存 缓存的力量是强大的,恰当的缓存设置可以大大的减少 HTTP请求。以有啊首页为例,当浏览器没有缓存的时候访问一共会发出 78个请求,共 600多 K数据 (如图 1.1),而当第二次访问即浏览器已缓存之后访问则仅有 10个请求,共 20多 K数据 (如图 1.2)。 (这里需要说明的是,如果直接 F5刷新页面的话效果是不一样的,这种情况下请求数还是一样,不过被缓存资源的请求服务器是 304响应,只有 Header没有Body ,可以节省带宽 ) 怎样才算合理设置 ?原则很简单,能缓存越多越好,能缓存越久越好。 例如,很少变化的图片资源可以直接通过 HTTP Header中的Expires设置一个很长的过期头 ;变化不频繁而又可能会变的资源可以使用 Last-Modifed来做请求验证。尽可能的让资源能够在缓存中待得更久。
(3). 资源合并与压缩 如果可以的话,尽可能的将外部的脚本、样式进行合并,多个合为一个。另外, CSS、 Javascript、Image 都可以用相应的工具进行压缩,压缩后往往能省下不少空间。 (4). CSS Sprites 合并 CSS图片,减少请求数的又一个好办法。 (5). Inline Images 使用 data: URL scheme的方式将图片嵌入到页面或 CSS中,如果不考虑资源管理上的问题的话,不失为一个好办法。如果是嵌入页面的话换来的是增大了页面的体积,而且无法利用浏览器缓存。使用在 CSS中的图片则更为理想一些。 (6). Lazy Load Images(自己对这一块的内容还是不了解) 这条策略实际上并不一定能减少 HTTP请求数,但是却能在某些条件下或者页面刚加载时减少 HTTP请求数。对于图片而言,在页面刚加载的时候可以只加载第一屏,当用户继续往后滚屏的时候才加载后续的图片。这样一来,假如用户只对第一屏的内容感兴趣时,那剩余的图片请求就都节省了。
2. 将外部脚本置底(将脚本内容在页面信息内容加载后再加载) 前文有谈到,浏览器是可以并发请求的,这一特点使得其能够更快的加载资源,然而外链脚本在加载时却会阻塞其他资源,例如在脚本加载完成之前,它后面的图片、样式以及其他脚本都处于阻塞状态,直到脚本加载完成后才会开始加载。如果将脚本放在比较靠前的位置,则会影响整个页面的加载速度从而影响用户体验。解决这一问题的方法有很多,在 这里有比较详细的介绍 (这里是译文和 更详细的例子 ),而最简单可依赖的方法就是将脚本尽可能的往后挪,减少对并发下载的影响。 3. 异步执行 inline脚本(其实原理和上面是一样,保证脚本在页面内容后面加载。) inline脚本对性能的影响与外部脚本相比,是有过之而无不及。首页,与外部脚本一样, inline脚本在执行的时候一样会阻塞并发请求,除此之外,由于浏览器在页面处理方面是单线程的,当 inline脚本在页面渲染之前执行时,页面的渲染工作则会被推迟。简而言之, inline脚本在执行的时候,页面处于空白状态。鉴于以上两点原因,建议将执行时间较长的 inline脚本异步执行,异步的方式有很多种,例如使用 script元素的defer 属性(存在兼容性问题和其他一些问题,例如不能使用 document.write)、使用setTimeout ,此外,在HTML5中引入了 Web Workers的机制,恰恰可以解决此类问题。
4. Lazy Load Javascript(只有在需要加载的时候加载,在一般情况下并不加载信息内容。) 随着 Javascript框架的流行,越来越多的站点也使用起了框架。不过,一个框架往往包括了很多的功能实现,这些功能并不是每一个页面都需要的,如果下载了不需要的脚本则算得上是一种资源浪费 -既浪费了带宽又浪费了执行花费的时间。目前的做法大概有两种,一种是为那些流量特别大的页面专门定制一个专用的 mini版框架,另一种则是 Lazy Load。YUI 则使用了第二种方式,在 YUI的实现中,最初只加载核心模块,其他模块可以等到需要使用的时候才加载。
5. 将 CSS放在 HEAD中 如果将 CSS放在其他地方比如 BODY中,则浏览器有可能还未下载和解析到 CSS就已经开始渲染页面了,这就导致页面由无 CSS状态跳转到 CSS状态,用户体验比较糟糕。除此之外,有些浏览器会在 CSS下载完成后才开始渲染页面,如果 CSS放在靠下的位置则会导致浏览器将渲染时间推迟。 6. 异步请求 Callback(就是将一些行为样式提取出来,慢慢的加载信息的内容) 7. 减少不必要的 HTTP跳转 对于以目录形式访问的 HTTP链接,很多人都会忽略链接最后是否带 ’/',假如你的服务器对此是区别对待的话,那么你也需要注意,这其中很可能隐藏了 301跳转,增加了多余请求。具体参见下图,其中第一个链接是以无 ’/'结尾的方式访问的,于是服务器有了一次跳转。 8. 避免重复的资源请求 这种情况主要是由于疏忽或页面由多个模块拼接而成,然后每个模块中请求了同样的资源时,会导致资源的重复请求
二、代码级优化 1. Javascript (1). DOM DOM操作应该是脚本中最耗性能的一类操作,例如增加、修改、删除 DOM元素或者对 DOM集合进行操作。如果脚本中包含了大量的 DOM操作则需要注意以下几点: a. HTML Collection(HTML收集器,返回的是一个数组内容信息) 在脚本中 document.images、document.forms 、getElementsByTagName()返回的都是 HTMLCollection类型的集合,在平时使用的时候大多将它作为数组来使用,因为它有 length属性,也可以使用索引访问每一个元素。不过在访问性能上则比数组要差很多,原因是这个集合并不是一个静态的结果,它表示的仅仅是一个特定的查询,每次访问该集合时都会重新执行这个查询从而更新查询结果。所谓的 “访问集合” 包括读取集合的 length属性、访问集合中的元素。 因此,当你需要遍历 HTML Collection的时候,尽量将它转为数组后再访问,以提高性能。即使不转换为数组,也请尽可能少的访问它,例如在遍历的时候可以将 length属性、成员保存到局部变量后再使用局部变量。 b. Reflow & Repaint 除了上面一点之外, DOM操作还需要考虑浏览器的 Reflow和Repaint ,因为这些都是需要消耗资源的
(2). 慎用 with,with(obj){ p = 1}; 代码块的行为实际上是修改了代码块中的 执行环境 ,将obj放在了其作用域链的最前端,在 with代码块中访问非局部变量是都是先从 obj上开始查找,如果没有再依次按作用域链向上查找,因此使用 with相当于增加了作用域链长度。而每次查找作用域链都是要消耗时间的,过长的作用域链会导致查找性能下降。 因此,除非你能肯定在 with代码中只访问 obj中的属性,否则慎用 with,替代的可以使用局部变量缓存需要访问的属性。 (3). 避免使用 eval和 Function 每次 eval 或 Function 构造函数作用于字符串表示的源代码时,脚本引擎都需要将源代码转换成可执行代码。这是很消耗资源的操作 —— 通常比简单的函数调用慢 100倍以上。 eval 函数效率特别低,由于事先无法知晓传给 eval 的字符串中的内容,eval在其上下文中解释要处理的代码,也就是说编译器无法优化上下文,因此只能有浏览器在运行时解释代码。这对性能影响很大。 Function 构造函数比 eval略好,因为使用此代码不会影响周围代码 ;但其速度仍很慢。 此外,使用 eval和 Function也不利于Javascript 压缩工具执行压缩。 (4). 减少作用域链查找(这方面设计到一些内容的相关问题) 前文谈到了作用域链查找问题,这一点在循环中是尤其需要注意的问题。如果在循环中需要访问非本作用域下的变量时请在遍历之前用局部变量缓存该变量,并在遍历结束后再重写那个变量,这一点对全局变量尤其重要,因为全局变量处于作用域链的最顶端,访问时的查找次数是最多的。 此外,要减少作用域链查找还应该减少闭包的使用。 (5). 数据访问 Javascript中的数据访问包括直接量 (字符串、正则表达式 )、变量、对象属性以及数组,其中对直接量和局部变量的访问是最快的,对对象属性以及数组的访问需要更大的开销。当出现以下情况时,建议将数据放入局部变量: a. 对任何对象属性的访问超过 1次 b. 对任何数组成员的访问次数超过 1次 另外,还应当尽可能的减少对对象以及数组深度查找。 (6). 字符串拼接 在 Javascript中使用"+" 号来拼接字符串效率是比较低的 ,因为每次运行都会开辟新的内存并生成新的字符串变量,然后将拼接结果赋值给新变量。与之相比更为高效的做法是使用数组的 join方法,即将需要拼接的字符串放在数组中最后调用其 join方法得到结果。不过由于使用数组也有一定的开销,因此当需要拼接的字符串较多的时候可以考虑用此方法。 2. CSS选择符 在大多数人的观念中,都觉得浏览器对 CSS选择符的解析式从左往右进行的,例如 #toc A { color: #444; } 这样一个选择符,如果是从右往左解析则效率会很高,因为第一个 ID选择基本上就把查找的范围限定了,但实际上浏览器对选择符的解析是从右往左进行的。如上面的选择符,浏览器必须遍历查找每一个 A标签的祖先节点,效率并不像之前想象的那样高。根据浏览器的这一行为特点,在写选择符的时候需要注意很多事项,有人已经一一列举了, 详情参考此处。
3. HTML 对 HTML本身的优化现如今也越来越多的受人关注了,详情可以参见这篇 总结性文章 。
4. Image压缩 图片压缩是个技术活,不过现如今这方面的工具也非常多,压缩之后往往能带来不错的效果,具体的压缩原理以及方法在《 Even Faster Web Sites》第10 章有很详细的介绍. 总结 本文从页面级以及代码级两个粒度对前端优化的各种方式做了一个总结,这些方法基本上都是前端开发人员在开发的过程中可以借鉴和实践的,除此之外,完整的前端优化还应该包括很多其他的途径,例如 CDN、 Gzip、多域名、无 Cookie服务器等等,由于对于开发人员的可操作性并不强大,在此也就不多叙述了,详细的可以参考 Yahoo和Google 的这些“金科玉律
13.web页面加载、解析、渲染过程;
1、DNS服务器通过域名查找对应的web 服务器ip地址
2、浏览器访问web服务器这里涉及到客户端与服务器的tcp 三次握手与四次挥手
3、服务器处理完成返回html;
4、浏览器解析、加载页面
解析html 构建dom树 -> 构建render树 -> 布局render树 -> 绘制render树 :
我们知道浏览器为了体验友好,并不是文档全部都解析才绘制到屏幕上,而是从上至下开始解析html,遇到css 会开启线程下载css;
解析: 1、将HTML构建成一个DOM树(DOM = Document Object Model 文档对象模型),DOM 树的构建过程是一个深度遍历过程:当前节点的所有子节点都构建好后才会去构建当前节点的下一个兄弟节点。 2、将CSS解析成CSS去构造CSSOM树( CSSOM = CSS Object Model CSS对象模型) 3、根据DOM树和CSSOM来构造 Rendering Tree(渲染树)。注意:Rendering Tree 渲染树并不等同于 DOM 树,因为一些像 Header 或 display:none 的东西就没必要放在渲染树中了。
4.有了Render Tree,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及他们的从属关系。 5.下一步操作称之为Layout,顾名思义就是计算出每个节点在屏幕中的位置 layout render tree。 6.再下一步就是绘制,即遍历render树,并使用浏览器UI后端层绘制每个节点。
13.水平居中与垂直居中的实现方法有哪几种
水平居中:
行级元素:为该行级元素的父元素设置text-align:center样式
块级元素:为其自身设置margin:auto样式
垂直居中:
1.display:table;此元素会作为块级表格来显示(类似
),表格前后带有换行符. display:table-cell;此元素会作为一个表格单元格显示(类似 和 )
2. 利用flex布局使内部块级元素水平,垂直居中 display:flex;justify-content: center; align-items:center;
3.利用定位实现 父元素:position:relative; 子元素:position: absolute;top:50%;left:50%;transform:translate(-50%,-50%);
14.px、em、rem的理解与异同
PX :px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。
EM :em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。EM特点:
1. em的值并不是固定的;
2. em会继承父级元素的字体大小。
注意: 任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。
所以我们在写CSS的时候,需要注意两点:
1. body选择器中声明Font-size=62.5%;
2. 将你的原来的px数值除以10,然后换上em作为单位;
3. 重新计算那些被放大的字体的em数值。避免字体大小的重复声明。
也就是避免1.2 * 1.2= 1.44的现象。比如说你在#content中声明了字体大小为1.2em,那么在声明p的字体大小时就只能是1em,而不是1.2em, 因为此em非彼em,它因继承#content的字体高而变为了1em=12px。
REM
rem是CSS3新增的一个相对单位(root em,根em),这个单位引起了广泛关注。这个单位与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。下面就是一个例子:
p {font-size:14px; font-size:.875rem;}
注意: 选择使用什么字体单位主要由你的项目来决定,如果你的用户群都使用最新版的浏览器,那推荐使用rem,如果要考虑兼容性,那就使用px,或者两者同时使用。
px 与 rem 的选择?
对于只需要适配少部分手机设备,且分辨率对页面影响不大的,使用px即可 。
对于需要适配各种移动设备,使用rem,例如只需要适配iPhone和iPad等分辨率差别比较挺大的设备。
15.事件冒泡与事件捕获;
事件冒泡
事件冒泡是由IE开发团队提出来的,即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播。
Event Bubbling Example
当用户点击了
元素,click事件将按照
—>—>—>document的顺序进行传播。若在
和上都定义了click事件,如下:
点击,将先输出“div”,再输出“body”。IE9,chrome,Firefox,Opera,Safari都支持事件冒泡,并将事件冒泡到window对象。
事件捕获
事件捕获是由Netscape Communicator团队提出来的,是先由最上一级的节点先接收事件,然后向下传播到具体的节点。当用户点击了
元素,采用事件捕获,则click事件将按照document—>—>—>
的顺序进行传播。
若在
和上都定义了click事件,如下:
点击,将先输出“body”,再输出“div”。
IE9,chrome,Firefox,Opera,Safari都支持事件捕获,但是IE8和IE8以下的版本只支持事件冒泡。尽管DOM2规范要求事件应该从document对象开始传播,但是现在的浏览器实现都是从window对象开始捕获事件。
DOM事件流
"DOM2级事件”规定的事件流包含三个阶段:事件捕获阶段,处于目标阶段和事件冒泡阶段。首先发生的是事件捕获,然后是实际的目标接收到事件,最后阶段是冒泡阶段。以上面的HTML页面为例,单击
元素将按照下图触发事件:
若在
和上都定义了click事件,如下:
点击
,将先输出“event catch”,再输出“div”,最后输出“event bubble”。
你可能感兴趣的:(原创)
大胆的宣传自己
工匠良辰
#大胆的宣传自己原创:辉哥奇谭辉哥奇谭今天有朋友问:辉哥,发现你最近很多次宣传「知识星球」…我回答:对我自己用心做的东西有信心。我的观点是:我们每个人要把自己当成一件产品,精心的打磨,大胆的推销。如果我们一辈子都不敢面对自己这件产品,也不好意思去推销,怎样才能实现自己内心的梦想?怎样才能获得自由?怎样才能过上自己想过的生活?人生在世也许就是七八十年光景,我们最终都会败在「时光」脚下。每个人来到这世
【阳光️️☀️苑长 幸福365】7月9日《就此刻确知》
阳光苑长
音频文字原创|阳光苑长图片发自App一夜的梦境,情景相当的壮烈,那是前前后后多个情节的叠加,那是因为极其在意在正义的,完满的,在早已经确认——万古之先已经确认了一切美好的事物当中。当有假象,当有一些不好的势力,试图想去破坏夺取的时候,在梦境中一直得力的征战,为着身边最挚爱的朋友,为他,为所有美好的事业而守望。守望,英文叫做watcher,就是观望者。图片发自App在这个毫不奇怪,事实上一直发生的征
中原焦点团队 坚持原创分享第 1172天
金JJ
信阳案例督导:在学生出现危机时,学校启动心理应急程序,一位心理老师安抚个案的同时,其他心理老师给班级同学进行团体心理辅导,学校方面马上通知家长前来学校。学校危机干预应急流程的成熟,能有效降低个案的自杀风险。个案不愿谈及家庭及自己自杀行为等问题时,用沙盘、玩具等分散注意力,谈论他感兴趣的话题,老师温和的态度,关切的言语,个案的情绪逐渐平复。从个案自己说的,流露的非言语,家长、老师、同学、以往的记录,
[21]如何提高我们的睡眠质量?
刚毅的saolie
原创2016-05-29叶武滨易效能时间管理大家好我是时间管理学习并践行者努尔。在上一讲中我们谈到了高效能人士的睡眠时间。易效能提倡早睡早起,因为只有早起我们才能获得安静的时间,以便我们对自己的未来和当下做出检视与安排,让自己活在“要事第一”当中,以及对每一天的生活做到掌控。因为早起,所以我们必然要求大家要早睡,因为睡眠的时间必须有保障。据说,我们的睡眠不能超过8个小时,也尽量不要低于7个半小时,
山月记|知者行之始,行者知之成
嘉清月
(郑重声明:文章系原创首发,文责自负)近日在看中岛敦的中短篇小说集《山月记》。看完短篇小说《山月记》之后,是《名人传》。讲纪昌学射的寓言故事,不过这并不是今天的主角,令我心生感慨的是《悟净出世》与《悟净叹异》。对,就是沙悟净,提起沙悟净,我的刻板印象立即出现:憨厚老实的和尚。不过《悟净出世》的悟净并非如此。作者中岛敦,借悟净其人,向世人讲述他关于自我意义的探寻。悟净出世悟净悟不出自我的意义,觉得自
2018-09-18
张文思_db3b
焦点解决初级班第八期坚持原创分享第265天(20180918星期二晴惠州)现在送完孩子去幼儿园,我就可以安心做我自己的事情了。孩子适应得非常的好,每天开开心心的去上学,和我告别后走进教室。我也走出校门,吃完早餐就会回家,回到家把家务忙完,自己就开始的学习,拍得满满当当的。有时候还是会想该子的爸,但是却很平静的心,因为现在没有期待就不会有失望,我也被充实填满!
要重赛吗?G2击败不可一世的T1,兑现赛前狠话,拿下对抗赛开门红
游戏酱park
★游戏酱park原创5月20日,在MSI季中邀请赛六强对抗赛揭幕战中,来自欧美LEC赛区的G2战胜本土作战的LCK十冠王T1,拿下对抗赛开门红。赛后,G2战胜T1也瞬间冲上了热搜排行榜。这场比赛T1梦幻开局却惨被逆转,问题就出在中期一波T1莽撞rush大龙。G2众将及时赶来,由上单奥恩开启团战,配合Caps亚索切割T1后排阵型,小吕布Gumayusi和Oner毫无输出环境,击杀三位T1队员后,G2
【原创文集】《青春》
菲薇娅
教育科学学院17学前专五黄诗玲我喜欢展望,因为未知的旅途充满迷人的诱惑;我更喜欢回忆,因为走过的路是那样美丽。在平凡的生活中,我在寻找美好的记忆,然后默默拾起……人生的道路总有荆棘坎坷,但总有那么些许人在背后关注着你,在你最需要的时候扶你一把。老师,父母,朋友,或许,这三类人在每个人的生命中都举足轻重,但是,他们又如我们生命中的过客一般,“天空中留不下什么痕迹,但鸟已经飞过”,他们留给了我最美的记
助兴文友蛮力《佳人有约》,即兴和诗一首。
亮靓_27d5
那次分手苦相思,陷入情网不自知。常常做梦难入睡,佳人有约赋情诗。图片发自App注1:图片来自文友蛮力《佳人有约》一诗的配图,谢谢文友!谢谢原创!注2:此诗是我品读文友蛮力《佳人有约》一诗时,即兴和诗。图片发自App注3:附录文友蛮力《佳人有约》原诗,与众文友共赏。自离别后苦相思,坠入情网却不知。邂逅相逢如有约,牵手总在在开时。
月薪10000的人过着怎样的生活?
觉得不是很ok
月薪10000对于初入职场的人来说是个不错的数字但现实中,月薪过万的职场人到底过着什么样的生活呢?我们不妨来算一笔账!下来是申请原创要求的三百字,头条哥p图到凌晨两点我容易吗容易吗容易吗容易吗容易吗容易吗易吗容易吗不容易接下来是申请原创要求的三百字,头条哥p图到凌晨两点我容易吗容易吗容易吗容易吗容易吗容易吗容易吗容易吗不容易接下来是申请原创要求的三百字,头条哥p图到凌晨两点我容易吗容易吗容易吗容易
如何学好图像处理——从小白到大神?
chentengkui
图像处理
如何学好图像处理——从小白到大神?标签:图像处理学习方法2016-02-2617:4818439人阅读评论(25)收藏举报分类:学习方法与方法论(13)版权声明:本文为博主原创文章,未经博主允许不得转载。什么是数字图像处理?历史、以及它所研究的内容。说起图像处理,你会想到什么?你是否真的了解这个领域所研究的内容。纵向来说,数字图像处理研究的历史相当悠久;横向来说,数字图像处理研究的话题相当广泛。数
高铁站违规撑伞识别误检率↓79%:陌讯多模态融合算法实战解析
2501_92722744
算法 人工智能 目标检测 计算机视觉 目标跟踪
原创声明本文为原创技术解析,核心技术参数与架构参考自《陌讯技术白皮书》,禁止未经授权的转载与改编。一、行业痛点:密集场景下的违规撑伞识别难题在高铁站、地铁站等交通枢纽,违规撑伞(如非雨天在站台、通道内持伞)可能引发客流拥堵、设备刮擦等安全隐患。然而,传统视觉识别方案面临三大核心挑战:环境干扰大:进出站口光线突变(正午强光/夜间弱光)导致伞面特征提取不稳定,某枢纽站点实测数据显示,阴雨天违规撑伞识别
建筑施工场景下漏检率↓76%!陌讯多模态融合算法在工程安全监控的落地实践
2501_92722744
大数据 算法 目标跟踪 人工智能 计算机视觉 目标检测
原创声明本文为原创技术解析,核心技术参数与架构设计引用自《陌讯技术白皮书》,转载请注明来源。一、行业痛点:建筑施工监控的技术瓶颈建筑施工场景的安全监控长期面临多重技术挑战:数据支撑:据《2023建筑施工安全自动化监控报告》显示,传统监控系统对“未佩戴安全帽”“高空抛物”等危险行为的漏检率超35%,误报率高达42%,导致安全事故响应滞后[7]。场景难点:工地存在强光直射(正午阳光)、动态遮挡(塔吊/
小牛想要进大厂,距离拿百万高薪,进入AI行业你还缺哪些?
TsingtaoAI
人工智能
本文由小文聊AI原创,有需要的可转发分享对于很多打工人来说,想要拿百万年薪仿佛是天方夜谭,但其实了解AI行业的从业者都知道,有了核心求职能力,以及对职场的认知,再加上对AI技术资源的掌握,进入到一些互联网大厂后,拿到百万年薪不是梦。但对于很多小牛来说,如何能够进入大厂,什么样的人才才能够进入大厂,脑袋里都是空白。那么,究竟什么样的人才具有小牛的潜质呢?来看贪心科技涨薪100%计划-AI职业自由,包
重拾公众号大梦界
啊里露露
以前建了一个公众号,准备放一些自己的录音和朋友的随笔之类的,但是一直没有一个特别清晰的定位。后来放了一篇朋友公司的恶搞文,两篇录音,外链了有声平台,结果碰上清网,录音给下架了。公众号就此搁浅。没想到,前段时间的新媒体运营体验营,又给了我一些新思路。我又重拾了大梦界,发现公众号的音频没有下架,是个好事。而且一些功能有变化。现在只要达到要求,可以标原创,三篇以上同署名原创就可以申请开通赞赏功能。可惜我
看了这段拍摄花絮,有点心疼释小龙,这才叫靠实力不靠颜值!
虫子天下
释小龙不丑,还有点可爱,但这段花絮,足以让人改变对他的看法!嗨,大家好!虫子天下谈娱乐第八百七十二期上线啦!上一期,虫子天下给大家说的事情,是每一次一到男人帮成员过生日,虫子天下总会好奇的去观看其他成员的态度的事情。昨天是孙红雷生日,还是收到了来自兄弟们的祝福的!这一期,咱们继续来寻找娱乐圈当中好玩的信息,来聊聊关于释小龙的话题!好玩的号虫子天下原创娱乐点评,欢迎关注!说起释小龙,不知道大家是什么
金瀚张芷溪:恋爱就是,听你说那句,跟着我吧,便决定一直走下去
超喜番你
本文配图|均选自网络.如侵权删除文|泽南叙泽南叙原创作品|违者必究金瀚Kim承认与张芷溪恋情:“没什么偶像包袱,没什么不敢承认。”张芷溪转发表白:“当我听你说的那句,跟着我吧,就决定一直走下去”。金瀚张芷溪亲密搂抱,两人送完朋友后同返家中,第二天金瀚又去剧组探班女方,恋情满满的粉红色的甜蜜。愿你们在相互的爱里真诚的感受,真诚的去保护彼此。让这份喜欢这份爱在未来的岁月里是治愈。是胜过一切困难的欣喜和
随笔•《乡情乡韵》出书花絮【原创】
逍遥太初
记得当时朋友兴高采烈地告诉我说,山人他们在搞免费出书了,并拉我一起参加,还发了相关征文的链接。说实话对此我是半信半疑的,天底下哪有这等好事啊,即使有也轮不到我呀,我才来简信没多久,除了少数几位互相交流学习的文友之外,几乎没有认识的人,更别说什么能够帮助出书的重量级人物了。尽管心里是这么想,但还是抱着试试看的心态,打开链接粗略地看了看相关的征文事宜,并关注了专题,觉得好像蛮煞有介事的。再说乡村题材方
狼牙山人-书画家张国富原创写意作品剖析第183帧《延年图》
张国富字腴田
狼牙山人-书画家张国富原创写意作品剖析第183帧《延年图》2020年7月9日张国富原创写意作品《延年图》刘泽群先生收藏96X35.5。
张伟采访笔录——把自己喜欢的留在身边丨2021年3月第3周小结
丨张伟丨
中篇故事丨文/张伟乐之写作工作坊这是椰子私塾第1511篇原创输出我2021年的关键词——闲。读些闲书,写点闲文;鸟归巢,鱼潜渊,如此而已。1、读闲书。《悲惨世界》75%《人类群星闪耀时》82%《微信互联网平民创业》43%《关于陀思妥耶夫斯基的六次讲座》59%《写作训练课:轻松写出好文章》16%2、日更,写闲文。接上周。国际红透天著名主持人三三一:我这样理解,你看看对不对,你刚才提到的减重经历是一个
【原创】七言绝句·藏头诗·(二首)
风云致轩
风之云至风云七言绝句·藏头诗·风之云至风来风去风逐流,之轻之重之所安,云起云收云自游,至狂至圣至愚神。七言绝句·藏头诗·风云致轩风音风律风里吟,云峰云岫云山生,致精致极致辞娱,轩鸟轩鹤轩中仙。共和国庚子年戊子月壬子日(交替日)2021.仲冬风之云至作—————————————————《诗词.歌赋.散文.随记.杂叙.书法.绘画》原创作者,都梁人士,本名:黄民科;字:风之;筆名:風之雲至;號:金宝散人
《喜欢攀比的孔雀》坚持第1050天原创分享(2017.10.23星期一)
半夏五月天
卓丽,坚持第1050天原创分享(2017.10.23星期一):讲一个小故事吧:孔雀因为大家都爱听夜莺唱歌,而自己一唱歌就会被人笑话而苦恼,就向天神诉苦,天天说:别忘了,你颈项间闪着翡翠般的光辉,你的尾巴上有华丽的羽毛,所以在这些方面你是很出色的。孔雀不满足:可是我唱歌却超不过夜莺,跟哑巴有什么区别?天神回答道:命运之神已经很公正的分给你们每样东西,你拥有美丽,老鹰拥有力量,夜莺能够唱歌,这些鸟都很
绘本讲师训练营【49期】9/21阅读原创《河狸别急》
波小爷说事
49016-陈波《河狸别急》封面和封底[加]尼古拉斯·奥尔德特文/图今天给大家分享的是一本非常有趣的绘本《河狸别急》,它总是匆匆忙忙,做事情来不及思考。这只河狸的粗心真的成了问题。筑的坝漏水,把森林搞的乱七八糟,逮到树就啃,啃倒的树砸到大熊的头,更让人哭笑不得的是,把驼鹿的腿当树,一口咬下去。匆忙的河狸不仅如此,胡乱啃树,破坏了小鸟的窝,还把自己砸伤了。住院时间,河狸扎着绷带,发现它的朋友们也都受
绘本讲师训练营[16期]16/21 《猜猜我有多爱你》
DemiH1989
16004黄坍仪《猜猜我有多爱你》【英】文/山姆·麦克布雷尼图/安妮塔·婕朗译/梅子涵图片发自App这是一本把爱数量化的书本,通过大兔子和小兔子之前互相表达爱的大小,从而让孩子们更好地理解爱,也是一本睡前绘本,让孩子们在满满的爱中进入梦乡。这个绘本是我第三次绘本实践原创所选择的书,因为,现在的家庭,更需要我们和家人之间好好地去表达爱,感受爱。热场:图片发自App图片发自App这次的对象也是托班3-
【原创文集】骄阳似火
空空如莫
大健康学院20园艺本杨柳芳2021年5月9日,一个平凡又不平凡的日子。今天是母亲节,我从同学那听说的,因为在学校的日子里总会忘却很多事。如给母亲的一句问候,一个电话。第一次给妈妈说母亲节快乐。微信语音里放着给妈妈的祝福和表达心意的红包,红包不大。第一次很是羞涩,因为对于从农村出来的女娃娃来说跟母亲表达爱意真的是很艰难的一件事情。妈妈回过来的语音突然让我激动的内心平静了下来,她说,在村里妇人们组了一
叶延珍焦点网络七期洛阳坚持原创分享767天《读书会感悟》(2019.09.14星期六)
叶子_6c11
不知从何时起,周六上午的实中东区读书会成了生活不可缺少的一部分。即使是再忙的事,也会尽我所能的调开,来参加这个读书会,她究竟有什么魅力所在,此刻我也道不清,说不明。只知道它是我们能量的加油站,在这里我们可以放心畅谈,没有评价,没有对错,更多的知识与知识的碰撞,心与心的交流,我们相互学习,共同进步,一同向着美好幸福的生活迈进,也许这就是读书会的魅力所在吧!今天的读书会感悟最深的是:一切都是最好的安排
2021-06-02
凤舞九天
中原焦点团队高级6期肖巧风,坚持第434天原创分享,第五期挑战每周2次。保持中立。作为咨询师在咨询中应时时觉察,看看自己是不是稳稳的在咨询师的位置,不能陷入来访者事情当中,不要背负来访者的事情,不要替来访者担责任,解决问题不解决问题都不是咨询的目标。当把解决问题作为对来访者帮助的目标的话,这样会让来访者陷入一种无力感,无效能感的境地,让来访者产生依赖,不能真正的做到助人自助。咨询师的稳是定海神针。
感恩日记day7
Aimily艾米
1.感恩宝贝的牙齿恢复正常,可以正常吃东西,补充足够的营养。感恩医生的高超医术,让孩子获得健康,谢谢,谢谢,谢谢!2.感恩今天的好运气,一切都很顺遂,感恩自己的高效能,上午就把最难的工作完成。谢谢!谢谢!谢谢!当困难来临时,用微笑去应对,用智慧去解决。感恩地铁上看到的这句话,让我很受益,谢谢这句话的原创作者以及传播他的人们,谢谢地铁的设计和建设者们,谢谢所有的工作人员,谢谢你们,我爱你们!3.感恩
RK3568笔记九十一:QT环境搭建
殷忆枫
RK3568学习笔记 笔记
若该文为原创文章,转载请注明原文出处。记录按照正点原子给的手册搭建QT环境参考《09【正点原子】ATK-DLRK3568_Qt开发环境搭建V1.2.pdf》一、安装1、下载https://mirrors.sau.edu.cn/qt/archive/online_installers/4.6/qt-unified-linux-x64-4.6.0-online.run2、赋予可执行权限chmod+xq
RK3568笔记九十二:QT使用Opencv显示摄像头
殷忆枫
RK3568学习笔记 笔记
若该文为原创文章,转载请注明原文出处。测试使用QT调用Opencv的API显示摄像头,板子为正点原子的RK3568,最终想实现的是在RK3568平台上使用Qt框架进行部署,利用NPU推理加速视频目标识别。此篇为测试功能代码为正点原子提供的代码,直接用来测试,在未看代码时一直不明白怎么添加opencv的库,后面明白了,只增加了下面的两行:CONFIG+=link_pkgconfigPKGCONFIG
LeetCode[Math] - #66 Plus One
Cwind
java LeetCode 题解 Algorithm Math
原题链接:#66 Plus One
要求:
给定一个用数字数组表示的非负整数,如num1 = {1, 2, 3, 9}, num2 = {9, 9}等,给这个数加上1。
注意:
1. 数字的较高位存在数组的头上,即num1表示数字1239
2. 每一位(数组中的每个元素)的取值范围为0~9
难度:简单
分析:
题目比较简单,只须从数组
JQuery中$.ajax()方法参数详解
AILIKES
JavaScript jsonp jquery Ajax json
url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。
type: 要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持。
timeout: 要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局
JConsole & JVisualVM远程监视Webphere服务器JVM
Kai_Ge
JVisualVM JConsole Webphere
JConsole是JDK里自带的一个工具,可以监测Java程序运行时所有对象的申请、释放等动作,将内存管理的所有信息进行统计、分析、可视化。我们可以根据这些信息判断程序是否有内存泄漏问题。
使用JConsole工具来分析WAS的JVM问题,需要进行相关的配置。
首先我们看WAS服务器端的配置.
1、登录was控制台https://10.4.119.18
自定义annotation
120153216
annotation
Java annotation 自定义注释@interface的用法 一、什么是注释
说起注释,得先提一提什么是元数据(metadata)。所谓元数据就是数据的数据。也就是说,元数据是描述数据的。就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义。而J2SE5.0中提供的注释就是java源代码的元数据,也就是说注释是描述java源
CentOS 5/6.X 使用 EPEL YUM源
2002wmj
centos
CentOS 6.X 安装使用EPEL YUM源1. 查看操作系统版本[root@node1 ~]# uname -a Linux node1.test.com 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux [root@node1 ~]#
在SQLSERVER中查找缺失和无用的索引SQL
357029540
SQL Server
--缺失的索引
SELECT avg_total_user_cost * avg_user_impact * ( user_scans + user_seeks ) AS PossibleImprovement ,
last_user_seek ,
 
Spring3 MVC 笔记(二) —json+rest优化
7454103
Spring3 MVC
接上次的 spring mvc 注解的一些详细信息!
其实也是一些个人的学习笔记 呵呵!
替换“\”的时候报错Unexpected internal error near index 1 \ ^
adminjun
java “\替换”
发现还是有些东西没有刻子脑子里,,过段时间就没什么概念了,所以贴出来...以免再忘...
在拆分字符串时遇到通过 \ 来拆分,可是用所以想通过转义 \\ 来拆分的时候会报异常
public class Main {
/*
POJ 1035 Spell checker(哈希表)
aijuans
暴力求解--哈希表
/*
题意:输入字典,然后输入单词,判断字典中是否出现过该单词,或者是否进行删除、添加、替换操作,如果是,则输出对应的字典中的单词
要求按照输入时候的排名输出
题解:建立两个哈希表。一个存储字典和输入字典中单词的排名,一个进行最后输出的判重
*/
#include <iostream>
//#define
using namespace std;
const int HASH =
通过原型实现javascript Array的去重、最大值和最小值
ayaoxinchao
JavaScript array prototype
用原型函数(prototype)可以定义一些很方便的自定义函数,实现各种自定义功能。本次主要是实现了Array的去重、获取最大值和最小值。
实现代码如下:
<script type="text/javascript">
Array.prototype.unique = function() {
var a = {};
var le
UIWebView实现https双向认证请求
bewithme
UIWebView https Objective-C
什么是HTTPS双向认证我已在先前的博文 ASIHTTPRequest实现https双向认证请求
中有讲述,不理解的读者可以先复习一下。本文是用UIWebView来实现对需要客户端证书验证的服务请求,网上有些文章中有涉及到此内容,但都只言片语,没有讲完全,更没有完整的代码,让人困扰不已。但是此知
NoSQL数据库之Redis数据库管理(Redis高级应用之事务处理、持久化操作、pub_sub、虚拟内存)
bijian1013
redis 数据库 NoSQL
3.事务处理
Redis对事务的支持目前不比较简单。Redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。当一个client在一个连接中发出multi命令时,这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中
各数据库分页sql备忘
bingyingao
oracle sql 分页
ORACLE
下面这个效率很低
SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM IPAY_RCD_FS_RETURN order by id desc) A ) WHERE RN <20;
下面这个效率很高
SELECT A.*, ROWNUM RN FROM (SELECT * FROM IPAY_RCD_
【Scala七】Scala核心一:函数
bit1129
scala
1. 如果函数体只有一行代码,则可以不用写{},比如
def print(x: Int) = println(x)
一行上的多条语句用分号隔开,则只有第一句属于方法体,例如
def printWithValue(x: Int) : String= println(x); "ABC"
上面的代码报错,因为,printWithValue的方法
了解GHC的factorial编译过程
bookjovi
haskell
GHC相对其他主流语言的编译器或解释器还是比较复杂的,一部分原因是haskell本身的设计就不易于实现compiler,如lazy特性,static typed,类型推导等。
关于GHC的内部实现有篇文章说的挺好,这里,文中在RTS一节中详细说了haskell的concurrent实现,里面提到了green thread,如果熟悉Go语言的话就会发现,ghc的concurrent实现和Go有点类
Java-Collections Framework学习与总结-LinkedHashMap
BrokenDreams
LinkedHashMap
前面总结了java.util.HashMap,了解了其内部由散列表实现,每个桶内是一个单向链表。那有没有双向链表的实现呢?双向链表的实现会具备什么特性呢?来看一下HashMap的一个子类——java.util.LinkedHashMap。
读《研磨设计模式》-代码笔记-抽象工厂模式-Abstract Factory
bylijinnan
abstract
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
package design.pattern;
/*
* Abstract Factory Pattern
* 抽象工厂模式的目的是:
* 通过在抽象工厂里面定义一组产品接口,方便地切换“产品簇”
* 这些接口是相关或者相依赖的
压暗面部高光
cherishLC
PS
方法一、压暗高光&重新着色
当皮肤很油又使用闪光灯时,很容易在面部形成高光区域。
下面讲一下我今天处理高光区域的心得:
皮肤可以分为纹理和色彩两个属性。其中纹理主要由亮度通道(Lab模式的L通道)决定,色彩则由a、b通道确定。
处理思路为在保持高光区域纹理的情况下,对高光区域着色。具体步骤为:降低高光区域的整体的亮度,再进行着色。
如果想简化步骤,可以只进行着色(参看下面的步骤1
Java VisualVM监控远程JVM
crabdave
visualvm
Java VisualVM监控远程JVM
JDK1.6开始自带的VisualVM就是不错的监控工具.
这个工具就在JAVA_HOME\bin\目录下的jvisualvm.exe, 双击这个文件就能看到界面
通过JMX连接远程机器, 需要经过下面的配置:
1. 修改远程机器JDK配置文件 (我这里远程机器是linux).
 
Saiku去掉登录模块
daizj
saiku 登录 olap BI
1、修改applicationContext-saiku-webapp.xml
<security:intercept-url pattern="/rest/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<security:intercept-url pattern=&qu
浅析 Flex中的Focus
dsjt
html Flex Flash
关键字:focus、 setFocus、 IFocusManager、KeyboardEvent
焦点、设置焦点、获得焦点、键盘事件
一、无焦点的困扰——组件监听不到键盘事件
原因:只有获得焦点的组件(确切说是InteractiveObject)才能监听到键盘事件的目标阶段;键盘事件(flash.events.KeyboardEvent)参与冒泡阶段,所以焦点组件的父项(以及它爸
Yii全局函数使用
dcj3sjt126com
yii
由于YII致力于完美的整合第三方库,它并没有定义任何全局函数。yii中的每一个应用都需要全类别和对象范围。例如,Yii::app()->user;Yii::app()->params['name'];等等。我们可以自行设定全局函数,使得代码看起来更加简洁易用。(原文地址)
我们可以保存在globals.php在protected目录下。然后,在入口脚本index.php的,我们包括在
设计模式之单例模式二(解决无序写入的问题)
come_for_dream
单例模式 volatile 乱序执行 双重检验锁
在上篇文章中我们使用了双重检验锁的方式避免懒汉式单例模式下由于多线程造成的实例被多次创建的问题,但是因为由于JVM为了使得处理器内部的运算单元能充分利用,处理器可能会对输入代码进行乱序执行(Out Of Order Execute)优化,处理器会在计算之后将乱序执行的结果进行重组,保证该
程序员从初级到高级的蜕变
gcq511120594
框架 工作 PHP android html5
软件开发是一个奇怪的行业,市场远远供不应求。这是一个已经存在多年的问题,而且随着时间的流逝,愈演愈烈。
我们严重缺乏能够满足需求的人才。这个行业相当年轻。大多数软件项目是失败的。几乎所有的项目都会超出预算。我们解决问题的最佳指导方针可以归结为——“用一些通用方法去解决问题,当然这些方法常常不管用,于是,唯一能做的就是不断地尝试,逐个看看是否奏效”。
现在我们把淫浸代码时间超过3年的开发人员称为
Reverse Linked List
hcx2013
list
Reverse a singly linked list.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
p
Spring4.1新特性——数据库集成测试
jinnianshilongnian
spring 4.1
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
C# Ajax上传图片同时生成微缩图(附Demo)
liyonghui160com
1.Ajax无刷新上传图片,详情请阅我的这篇文章。(jquery + c# ashx)
2.C#位图处理 System.Drawing。
3.最新demo支持IE7,IE8,Fir
Java list三种遍历方法性能比较
pda158
java
从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便测试各种遍历方法的性能,测试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象,测试代码例如以下:
package com.hisense.tiger.list;
import java.util.ArrayList;
import java.util.Iterator;
300个涵盖IT各方面的免费资源(上)——商业与市场篇
shoothao
seo 商业与市场 IT资源 免费资源
A.网站模板+logo+服务器主机+发票生成
HTML5 UP:响应式的HTML5和CSS3网站模板。
Bootswatch:免费的Bootstrap主题。
Templated:收集了845个免费的CSS和HTML5网站模板。
Wordpress.org|Wordpress.com:可免费创建你的新网站。
Strikingly:关注领域中免费无限的移动优
localStorage、sessionStorage
uule
localStorage
W3School 例子
HTML5 提供了两种在客户端存储数据的新方法:
localStorage - 没有时间限制的数据存储
sessionStorage - 针对一个 session 的数据存储
之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不