跳至主要內容
算法指标

算法

算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。

算法的指标

主要还是从算法所占用的「时间」和「空间」两个维度去考量。

  • 时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。
  • 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。

时间复杂度

首先要说的是,时间复杂度的计算并不是计算程序具体运行的时间,而是算法执行语句的次数。 当我们面前有多个算法时,我们可以通过计算时间复杂度,判断出哪一个算法在具体执行时花费时间最多和最少。


yyshino大约 2 分钟FrontEnd浏览器
深度优先遍历

前序遍历

根左右

function preorderTraversal(root: TreeNode | null): number[] {
        // 栈实现
    const ans: number[] = []
    if(!root){
        return ans
    }
    const stk:TreeNode[] = [root] // 将节点 压入栈内
    while(stk.length){
        // 若栈不为空,每次从栈中弹出一个节点 处理该节点
        const {left,right,val} = stk.pop()
        // 压入根节点
        ans.push(val)
        // 先把节点右孩子压入栈,接着把节点左孩子压入栈(如果有孩子节点)
        right && stk.push(right)
        left && stk.push(left)
    }
    return ans
};

yyshino大约 2 分钟FrontEnd浏览器
广度优先遍历

广度优先遍历 - 层序遍历

思路:

  /**
   * Definition for a binary tree node.
   * class TreeNode {
   *     val: number
   *     left: TreeNode | null
   *     right: TreeNode | null
   *     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
   *         this.val = (val===undefined ? 0 : val)
   *         this.left = (left===undefined ? null : left)
   *         this.right = (right===undefined ? null : right)
   *     }
   * }
   */

  function levelOrder(root: TreeNode | null): number[][] {
      if(!root){
          return []
      }

      let ans = []
      let cur = [root]
      while(cur.length){
          let nxt = []
          let vals = []
          for(const node of cur){
              vals.push(node.val)
              if(node.left) nxt.push(node.left)
              if(node.right) nxt.push(node.right)
          }
          cur = nxt
          ans.push(vals)
      }
      return ans
  };

yyshino小于 1 分钟FrontEnd浏览器
跨域

跨域

同源策略

跨域问题其实就是浏览器的同源策略所导致的。

「同源策略」是一个重要的安全策略,它用于限制一个[origin]的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。 --来源 MDN

「protocol(协议)、domain(域名)、port(端口)三者一致。」 一致的情况下我们叫同源。


yyshino小于 1 分钟FrontEnd浏览器
输入 URL 到页面加载显示完成发生了什么

输入 URL 到页面加载显示完成发生了什么

  • DNS 解析
  • TCP 连接
  • 发送 HTTP 请求
  • 服务器处理请求并返回 HTTP 报文
  • 浏览器解析渲染页面
  • 连接结束

yyshino小于 1 分钟FrontEnd浏览器
SEO优化

SEO优化

meta元信息处理

html头部中

  <title></title>
  <meta name="keywords" content="" />
  <meta name="description" content="" />

yyshino小于 1 分钟FrontEnd浏览器
UED优化

常见名词介绍

  • UI: User Interface 用户界面

  • UID: User Interface Design 用户界面设计

  • ID:Interaction design 交互设计

  • UE or UX: User Experience 用户体验

  • UED: User Experience Design 用户体验设计


yyshino小于 1 分钟FrontEnd浏览器
读书笔记-02-黑客攻防技术宝典-浏览器实战篇

黑客攻防技术宝典-浏览器实战篇

第1章 浏览器知识

同源策略

浏览器中最重要的安全措施就是同源策略 (Same Origin Policy,SOP)。同源策略用于限制不同来源的资 源之间的交互。

同源策略的含义就是对于不同的页面,如果它们的主机名、协议和端口都相同,那它们就是同一来源的。 如果上述三个属性中有任何一个不一样,那就不能算是同源了。而同一来源的资源,即主机名、协议和端 口都相同的资源之间的交互,是不受限制的

最初,同源策略只适用于外部资源,后来才扩展到包含其他来源的资源。比如,使用file://协议访问本地 文件,使用chrome://协议访问浏览器相关的资源等。除了这两个协议之外,现在的浏览器还支持其他一些 协议。


yyshino大约 65 分钟FrontEnd浏览器网络安全
读书笔记-01-白帽子讲浏览器安全

白帽子讲浏览器安全

初探浏览器安全

漏洞三要素

  • 完整性 :指对资源的可信程度。
  • 可用性 :指访问资源的能力。
  • 机密性 :机密性指对一些需要授权的信息的限制。

浏览器中常见的安全概念

URL

URL 统一资源定位符”(Uniform Resource Locator,URL )

image-20230329163718102
image-20230329163718102

yyshino大约 20 分钟FrontEnd浏览器网络安全