-
React context
React contextAPIReact.createContext创建一个Context对象,当 React 渲染一个订阅了这个 Context 对象的组建的,这个组件会从组件树中离自己最近的那个匹配的 Provider 中读取到当前的 Context 值。const myContext = React.createContext(defaultvalue)只有当组件所处的树中没有匹配到 Provider 的时候,其 deafultValue 参数才会生效。这有助于在不适用 Provi...…
-
浏览器渲染机制
渲染机制浏览器的渲染机制一般分为一下几个部分: 处理HTML并构建DOM树 处理 CSS 构建 CSSOM 树 将 DOM 与 CSSOM 合并为一个渲染树 render tree 根据渲染树来布局,计算每一个节点的位置 调用GPU绘制,合成图层,显示在屏幕上在构建CSSOM树的时候,会阻塞渲染,直到CSSOM树构建完成。并且构建CSSOM树是一个非常消耗性能的过程,所以因应该尽可能的保证层级扁平化,减少过度层叠,越是具体的CSS选择器,执行速度越慢。当HTML解析到script...…
-
执行上下文
执行上下文b() // call bconsole.log(a) // undefinedvar a = 'Hello world'function b() { console.log('call b')}对于上述代码,我们一般都非常熟悉他的输出结果。我们理解上一般都是说,这个地方是变量和函数提升,这样理解本身没有任何问题.但是更加准确的解释是:在生成执行上下文时,会有两个阶段.第一个阶段是创建的阶段(具体步骤是创建VO),JS解释器会找出需要提升的变量和函数,这个时候首先去提升变量,然...…
-
跨域问题
跨域问题请求有同源请求策略和非同源请求策略,对于同源请求策略而言,只有协议、域名、端口号三者都一样的时候才是同源,否则就是跨域。解决跨域的主要方案: jsonp跨域传输: script标签 img标签 link标签 iframe标签 等等不存在跨域请求的限制 JSONP只能处理GET请求,不能处理POST请求 CORS跨域处理,这个需要在后端配置cors http proxy 后端的反向代理 …
-
This.setstate 同步异步
this.setState 同步异步 只要你进入了 react 的调度流程,那就是异步的。只要你没有进入 react 的调度流程,那就是同步的。什么东西不会进入 react 的调度流程? setTimeout setInterval ,直接在 DOM 上绑定原生事件等。这些都不会走 React 的调度流程,你在这种情况下调用 setState ,那这次 setState 就是同步的。 否则就是异步的。而 setState 同步执行的情况下, DOM 也会被同步更新,也就意味着如果你多...…
-
多种方式居中
多种方式居中grid布局…
-
异步问题
异步问题…
-
API实现
实现reduce compose bind call apply1.实现Reduce«««< HEAD =======Reduce 的第一个参数是核心,它对数组的每一项进行”叠加操作“ 然后最后返回一个值,作为reduce方法的返回值。callback包含以下4个参数。 previousValue 表示 callback函数上一次的返回值 currentValue表示 数组遍历中正在处理的元素。 currentIndex表示可选参数,表示currentValue在数组中对应的...…
-
JS相关概念
JS 中的 作用域、作用域链、内存闭包等相关概念1.作用域1.1 函数作用域和全局作用域在JS中一般只有全局作用域和函数作用域。大家应该非常熟悉函数作用域了,下面就来展示一下函数作用域和全局作用域。function foo(){ var a = "bar" console.log(a)}foo()// bar// 这个时候 a 在 foo 函数作用域内=============>var b = "bar"function foo(){ console.log(b)}foo()// b...…
-
webpack
webpack 其实很久之前就像要去系统学习一下这个东西了,只是一直都是忙着处理各种乱七八糟的事情,一直没有整块的事件,正好呢,最近想要去做这个格式化网站的事情,中间有一点自己的事件,就刚好来看一下这个东西吧。相对来说更加系统一点吧。part 1 webpack 简介webpack 就是一个打包工具,将我们所写的js代码和css等等其他代码搞到一起来。安装webpacknpm initnpm i webpack webpack-cli #这里面的webpack是核心模块,webpack-...…
-
Apriori 算法
Apriori 算法最近上课讲到这个啤酒尿布的问题,说实话,这个事情是在大一的时候看那个魔鬼经济学里面看到的一个故事,但是没有想到里面居然有这么复杂的算法知识。。。。长见识了啤酒和尿布就是一个相关问题,那么我们如何在实际生活中发现这样的相关关系呢?这就需要我们去设置一些指标去筛选。两个商品具有比较强的相关关系的时候具有以下两个特点,其一:这两个产品同时出现的概率比较高,第二:在A产品出现的情况下,B产品出现的概率也比较高。这两个指标分别为:支持度和置信度(support rate and...…
-
Docker
Docker Docker的指令:Docker 命令 --help ## 帮助命令Docker 镜像命令C:\Users\HIT\Desktop\hithesis>docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdustincys/tinytex-hithesis latest 8f094ecdf86b 3 months ago 744MB#解...…
-
Linux
linux相关问题:linux安装的网络连接方式:桥接模式:直接将虚拟系统连接到物理网络上,相当于多了一台机器。优点是可以直接进行系统通信,但是容易发生IP冲突。NAT模式:NAT(network Address Translation 网络地址转换) 将自己机器和虚拟网络之间形成一个网络,然后对外使用一个IP。同样的虚拟系统和外部进行通信,但是外部没有办法直接访问虚拟机系统。主机模式:独立系统,该虚拟机和机器使用同一个IP。vi/vim 应用:Vim和vi各个模式之间的切换:三种模式下分...…
-
sort
排序方法…
-
三种隐藏方式
三种隐藏方式一、是否占用空间display:none 这个dom元素都不会存在,自然也不会占用空间visibility:hidden、opacity:0,隐藏后任然占据位置。二、子元素是否会继承display:none 不会被子元素继承,但是由于父亲元素不存在了,所以子元素也不存在了。visibility和opacity都会被子元素继承,同时可以通过修改visibility让其重新显示,但是修改子元素opacity的时候,无法让其重新显示。三、事件绑定上display:none 的元素都已...…
-
Event Loop
Event loop一、宏任务和微任务Macro-task(宏任务) 主线程代码(script中的代码) setTimeout setInterval requestAnimationFrame I/O流 UI render(页面UI渲染) ajax请求微任务micro-task process.nextTick Promise.then方法 Async/await(实际上还是Promise) Mutation Observer(h5的新特性) onclick触发的函数…
-
BFC
BFC一、margin塌陷问题margin塌陷 和margin 合并是一个意思。在父子元素中,通过margin让父元素有一个margin-top的value,然后第一个子元素也有margin-top,那么有的时候这两个margin就会出现重叠。这就是margin塌陷的其中一种情况。margin塌陷的情况: 父元素与第一个子元素合并/父元素与最后一个元素进行合并 相邻兄弟元素之间的合并问题第一种情况,可以解决的方式有很多,比如说 设置父元素为BFC。 设置父元素的border-top...…
-
JS打平
JS打平a.递归实现function flat(list){ let arr1 = [] list.forEach((val)=>{ if(val instanceOf Array){ arr.concat(flat(val)) }else{ arr1.push(val) } }) return arr1}b.reduce是实现function fn(arr){ return arr.reduce((pre,cur)=>{ return pre.concat(A...…
-
JS打平
JS打平的实现a.递归实现function fn(arr){ let arr1 = [] arr1.forEach(item=>{ if(Array.isArray(item)){ arr1.concat(fn(item)) }else{ arr1.concat(item) } })}b.reduce实现function fn(arr){ return arr.reduce((prev,cur)=>{ return prev.concat(Ar...…
-
git指南
gitgit init 可以初始化一个 git 工作区git add 加入到缓存区内git commit 提交到本地仓库中如果对工作区内的代码进行了修改但是没有提交到缓存区内的话,git status显示的内容为:位于分支 master尚未暂存以备提交的变更: (使用 "git add <文件>..." 更新要提交的内容) (使用 "git restore <文件>..." 丢弃工作区的改动) 修改: readme.txt修改尚未加入提交(使用 "git...…