sessionStorage 共享问题

同会话(session)共享,什么是同一个会话呢?同一个域下的所有窗口?

同一个域下非手动输入地址打开的窗口,通过页面打开的窗口 session 共享,但是通过新开标签,浏览器输入地址的 session不共享。

Opening a page in a new tab or window will cause a new session to be initiated

那如果我在当前窗口,将地址改为另一个域,最后又改回来呢?

经过 Chrome 试验,session 是保持的,所以一个窗口可以保持多个 session,手动新开一个窗口等于新的 session

反爬虫禁止浏览器调试

  • 在Chrome控制台的Source Tab页点击Deactivate breakpoints按钮
  • 按下Ctrl + f8(下图)。

UV、PV、IP

image.png
image.png

注册中心


微服务架构管理服务的中心,可以提供以下能力:

  • 服务注册
  • 服务异常降级
  • 服务宕机下线

注册中心主要用于解耦服务调用中的定位问题,是分布式系统必须面对的一个问题

网站应用的演进

单一应用架构

当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。

垂直应用架构

当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,提升效率的方法之一是将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。

分布式服务架构

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

流动计算架构

当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。

什么是尾递归

尾递归是一种形式, 只是用这种形式表达出的概念可以被某些编译器优化.

尾递归的特殊形式决定了这种递归代码在执行过程中是可以不需要回溯的(通常的递归都是需要回溯的). 如果编译器针对尾递归形式的递归代码作了这种优化,
就可能把原本需要线性复杂度栈内存空间的执行过程用常数复杂度的空间完成.

1
2
3
4
5
6
7

function story() { 从前有座山,山上有座庙,庙里有个老和尚,一天老和尚对小和尚讲故事:story()
// 尾递归,进入下一个函数不再需要上一个函数的环境了,得出结果以后直接返回。}

function story() { 从前有座山,山上有座庙,庙里有个老和尚,一天老和尚对小和尚讲故事:story(),
小和尚听了,找了块豆腐撞死了
// 非尾递归,下一个函数结束以后此函数还有后续,所以必须保存本身的环境以供处理返回值。}

浏览器 blob 文件支持多大

跟随系统设置,物理内存/5

In-Memory Storage Limit

If the architecture is x64 and NOT ChromeOS or Android: 2GB

Otherwise: total_physical_memory / 5

Disk Storage Limit

If ChromeOS: disk_size / 2

If Android: disk_size / 20

Else: disk_size / 10

Note: ChromeOS’s disk is part of the user partition, which is separate from the system partition.