1.2k 1 分钟

思考: 为什么 0.1+0.2 != 0.3? 为什么 1.005.toFixed (2)=1.00 而不是 1.01 双精度存储 首先在开始之前需要了解一下 JavaScript 的 number 类型在计算机中是如何存储的,这也是一切问题的基础。JavaScript 的数字都是 number 类型的,不管是整数还是浮点数都以 IEEE754 双精度的格式存储在计算机中,什么是双精度呢?就是以 64 个 bit 位来存储 分别是 1 个符号位 + 11 个指数位 + 52 个尾数位 举个例子,如果是 5.5 这个数字的话,则计算过程是这样的: 5.5 转二进制 =====>...
8.5k 8 分钟

# canvas 和 svg canvas 本质上是指令,CPU 最终通过指令调用 GPU 进行渲染,由于像素点最小是有一定大小的,因此会存在放大失真问题;而 SVG 本质上是 xml 数据,或者说数学公式,当屏幕尺寸变化时,会根据公式重新去计算。 # js 中对象实现 js 中对象的实现是基于哈希表的形式进行存储的,通过哈希函数将对象的键和值在数组上进行映射。 # js 中 Set 实现 js 中的 Set 实现是基于哈希表的,Set 的去重机制是由其底层的哈希表结构决定的,当为一个已经存在的键添加值时,由于哈希表的键的唯一性,因此这个值不会被再次添加到 Set...
50k 45 分钟

# 推荐手写网站: https://bigfrontend.dev/zh/ # 知识点 # fill 方法填充同一个数据 //const a = new Array (3).fill (new Array ()); 和下面相同const a = new Array(3).fill([]);a[0].push(14);console.log(a); // 每一项都改变# 判断是否是奇数 if(sum & 1)# Array (n) 不调用 fill 不会生成属性 当数组是稀疏空位时,map...
789 1 分钟

推荐一篇掘金大佬的文章,写的很详细 # 渲染模式 # CSR 客户端渲染 流程:客户端请求到 html(无结构)和 js 文件资源,在客户端执行 js 代码,进行整个结合和渲染的流程。 特点: 对客户端的压力较大,首屏加载时间可能较长 SEO 不友好 对服务器的压力较小 用户操作连贯、流畅。有更快的页面加载速度。 # NSR 原生端渲染 ** 流程:** 客户端请求到 html(结构基本完整的)和 js 文件,通过 Ajax 预加载页面数据,通过 Native 渲染生成的 Html 数据并且缓存在客户端。 NSR 的本质是分布式...
2.6k 2 分钟

# 命令 # 介绍 Git: 分布式版本控制系统, # 一、用于版本控制 版本控制工具需要的功能 协同修改、数据备份、版本管理、权限控制、历史记录、分支管理 分布式版本控制 vs 集中式版本控制 集中式版本控制需联网才能需要 # 二、Git 简介 本地库和远程库 团队内成员操作 想找不是团队内的成员 东方不败 来帮忙,那就需要他 fork 一下,这样对于修改可以进行 pull request,经过审核后可以 merge 到原来的远程仓库 # 三、Git 命令行操作 主体内容: # 本地库初始化 git init 初始化后效果:会生成一个.git 隐藏文件。使用 ll...
11k 10 分钟

# 公钥加密不能使用公钥解密的原理 利用了 2 ^ n = m 公式中,已知 n 很容易求 m,但是已知 m 很难求 n(需要进行枚举)的原理,结合欧拉定理将 n 拆分为 p * q 得到:(p 和 q 为公钥和私钥,不区分顺序) 原文 ^ p 取模 n = 密文 密文 ^ q 取模 n = 原文 # 内网穿透原理 正常内网中启动的服务只能在内网中进行访问,由于公网的存在,外网只能访问到内网之外的公网,由于公网没有对应到内网服务的映射因此访问不到,内网穿透的原理就是:在内网启动了一个服务,主动访问外网的某个服务器,被这个外网的服务器代理,这样当访问这个服务器时,就能访问到内网的服务 #...
2.7k 2 分钟

# -----------------------------------git # https://zhuanlan.zhihu.com/p/389814854 网址:git 命令大全 # git 全局配置文件,配置一次即可生效 (C:user / 用户名文件夹 /.gitconfig) # 一、 git init # (初始化,创建本地仓库) # 二、 git add # (添加到本地仓库) # 三、 git commit -m "注释" # (添加注释) # 四、 git remote add origin 仓库地址 # (连接远程仓库) # 五、...
7.4k 7 分钟

# 中前台通用项目 # 一、工具和包 # vite 一、介绍 webpack 进行构建时,默认只会抓取并构建整个应用,然后才能提供服务,项目构建时慢、且项目中任何错误都会影响到整个项目的构建,此外 webpack 是基于 node.js 的打包工具 (vue-cli 基于 webpack),其中可以使用 CommonJS 的语法。而 Vite 是一个基于 ES 模块的构建工具,它不再依赖于 CommonJS 规范。 **vite** 不会在一开始就构建你的整个项目,而是会将应用中的模块区分为 依赖 和 源码(项目代码) 两部分,对于 源码 部分,它会根据 路由来拆分...
20k 19 分钟

# 正则表达式 ​ 正则表达式是一个对象 正则表达式并不是 JS 独有的技术,基本上所有语言都支持这个技术 正则表达式的目的也很单纯,核心作用就是验证数据的合法性 正则表达式的特点: 1、正则表达式在 JS 中只针对字符串起作用 2、正则表达式会根据你设置的规则,对字符串进行 提取,搜索、替换 等操作 3、JavaScript 中正则表达式是一个内置对象,这个对象通过 RegExp () 创建,也可以直接通过赋值一个正则表达式来创建 第一种: var reg = new RegExp(正则表达式)第二种: var reg = /张/方法: 1、test ()...
28k 26 分钟

# Linux 服务器 Linux 是操作系统: Linux 作为自由软件和开放源代码软件发展中最著名的例子,背靠社区与商业化的使用,使其得到了广泛的应用与发展。 Linux 无处不在: 世界上 500 个最快的超级计算机 90%以上运行 Linux 发行版或变种,包括最快的前 10 名超级计算机运行的都是基于 Linux 内核的操作系统。Linux 也广泛应用在嵌入式系统上,如手机(Mobile Phone)、平板电脑(Tablet)、路由器(Router)、电视(TV)和电子游戏机等。在移动设备上广泛使用的 Android 操作系统就是创建在 Linux 内核之上。 学习 Linux...