zoukankan      html  css  js  c++  java
  • 每日思考(2020/02/19)

    题目概览

    • Ajax与Flash的优缺点分别是什么
    • 列举CSS优化、提高性能的方法
    • 写出一个函数求出N的阶乘
    • 对http、https的理解

    题目解答

    Ajax与Flash的优缺点分别是什么

    • Ajax:
      • 优势:可搜索性 ;开放性 ;费用 ;易用性 ;易于开发
      • 劣势:可能破坏浏览器的后退功能;使用动态页面更新使得用户难于将某个特定的状态保存到收藏夹中 ,不过这些都有相关方法解决
    • Flash
      • 优势:多媒体处理 ;兼容性 ;矢量图形 ;客户端资源调度
      • 劣势:二进制格式 ;格式私有 ;flash 文件经常会很大,用户第一次使用的时候需要忍耐较长的等待时间 ;性能问题

    列举CSS优化、提高性能的方法

    • 加载性能
      • 压缩CSS
      • 通过link方式加载,而不是@import
      • 复合属性其实分开写,执行效率更高,因为CSS最终也还是要去解析如 margin-left: left;
    • 选择器性能
      • 尽量少的使用嵌套,可以采用BEM的方式来解决命名冲突
      • 尽量少甚至是不使用标签选择器,这个性能实在是差,同样的还有*选择器
      • 利用继承,减少代码量
    • 渲染性能
      • 慎重使用高性能属性:浮动、定位
      • 尽量减少页面重排、重绘
      • css雪碧图
      • 自定义web字体,尽量少用
      • 尽量减少使用昂贵属性,如box-shadow/border-radius/filter/透明度/:nth-child等
      • 使用transform来变换而不是宽高等会造成重绘的属性
      • 属性值为0时,不加单位
      • 标准化各种浏览器前缀:带浏览器前缀的在前。标准属性在后
    • 可维护性、健壮性
      • 将具有相同属性的样式抽离出来,整合并通过class在页面中进行使用,提高css的可维护性
      • 通过定义可复用的、语义化良好的基础类,然后添加到html中,这也是很多ui框架都在使用的一种方法,例如:class="btn btn-active btn-blue";
      • 样式与内容分离:将css代码定义到外部css中
      • 容器与样式分离

    写出一个函数求出N的阶乘

    function factorial(n) {
          if (n > 1)  return n*factorial(n-1);
          return 1;
    }
    

    对http、https的理解

    • 基本概念

      • HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少
      • HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL
      • HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性
    • 区别

      • https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用
      • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议
      • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
      • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全
    • HTTPS的工作原理

      • 客户端发起HTTPS请求:用户在浏览器里输入一个https网址,然后连接到server的443端口

      • 服务端的配置:采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。

        这套证书其实就是一对公钥和私钥,如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西

      • 传送证书:这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等传送证书

      • 客户端解析证书:这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容

      • 传送加密信息:这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了

      • 服务段解密信息:服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全

      • 传输加密后的信息:这部分信息是服务段用私钥加密后的信息,可以在客户端被还原

      • 客户端解密信息:客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策

  • 相关阅读:
    spring-pool.xml
    spring-jmx.xml
    spring-common.xml
    applicationContext.xml
    spring-webservice.xml
    webservice统一认证
    jdbc.properties
    oracle,mysql分页
    springmvc-servlet.xml
    四、用“”或构造函数创建Java的String区别
  • 原文地址:https://www.cnblogs.com/EricZLin/p/12333941.html
Copyright © 2011-2022 走看看