js手写系列
数组去重方法 双重for循环 filter + indexof sort + for filter + hasOwnPorperty Set 测试: var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}] 12345678910111213function unique (arr) { for (var i = 0; i < arr.length; i++) { for (var j = i + 1; j < arr.length; j++) { if (arr[i] == arr[j]) { arr.splice(j, 1) j-- } ...
再谈“三次握手”和“四次挥手”
TCP 报文格式 其中重要字段: 序号(sequence number):seq 序号,4 个字节。在一个 TCP 连接中传送的字节流的每一个字节都按顺序编号,seq 是本报文段的第一个字节的序号 确认号(acknowledgement number):ack 序号,4 个字节。期望收到对方下一个报文段的第一个数据字节的序号,对方报文段最后一个字节序号加 1 标志位(flags):0 或 1 确认(ACK):ACK=1 时确认号才有效; 同步(SYN):SYN=1 表示这是一个连接请求或连接接受报文 终止(FIN):FIN 释放连接,FIN=1 表明数据发送完毕,要求释放运输连接 三次握手 客户端向服务器发送报文,标志位为 SYN,序号 seq=x,客户端进入 syn-sent 状态; 服务器收到并返回报文,标志位 SYN 和 ACK,序号 seq=y,确认号 ack=x+1,服务器进入 syn-rcvd 状态; 客户端收到并返回报文,标志位 ACK,序号 seq=x+1 即服务器的 ack,确认号 ack=y+1,客户端进入 established 状态,服务器收到报文后也 ...
浏览器垃圾回收机制
浏览器垃圾回收机制GC是什么GC: Garbage Collection 垃圾产生 && 回收12let a = { name: '炼狱先生' }a = [1, 2, 3] { name: '炼狱先生' } 保存在堆内存中,当a被重新赋值数组[1,2,3],那么它的引用关系就没有了,即变成了垃圾。 栈内存所存的基础数据类型大小是固定的,有操作系统自动分配和释放的;堆内存所存数据大小不固定,系统无法自动释放,需要js引擎手动释放 常见的垃圾回收策略常见的两种:标记清除和引用计数 标记清除执行gc时,递归遍历所有的对象,对可达对象进行标记,不可达对象当成垃圾回收。 类似: 垃圾收集器在运行时给内存的所有变量加上一个标记,假设所有对象都是垃圾,全标记0; 然后从跟对象开始遍历,把不是垃圾的节点改成1; 结束后清理所有标记为0的垃圾,销毁回收他们锁占用的空间; 最后,把所有对象修改为0,等待下一轮垃圾回收 引用计数就是判断一个对象的引用数,引用数为0就回收,大于0就不回收。 步骤: 当声明了一个 ...
Vue.js最全知识点整理
链接:https://pan.baidu.com/s/1yAMG2YG9BNK6nTq5mOsi-Q?pwd=mpi2
再次深入git
git commitgit branch 创建分支 git checkout 切换分支 git checkout -b 创建并切换到分支 git merge 合并分支:产生一个新提交 在master下合并bugFix, 使用git merge bugFix,此时master向上指向了两条提交记录,在使用git merge bugFix,此时bugFix和master处在了同一位置。 git rebase 合并分支:取出所有提交记录,在另外一个地方放下去 在bugFix分支,git rebase master,然后更新,切回master,git rebase bugFix,master和bugFix就处在了同一位置。 分离HEADHEAD:当前记录检出的符号引用 直接使用git checkout (提交记录的哈希),可以分离HEAD git checkout HEAD^ 向上移动1个提交记录 git checkoutHEAD~3 向上移动3个提交记录 撤销变更git reset 使用git reset HEAD~1,回退到上个提交(修改的内容加入了暂存区) git revert 使用gi ...
idea2021.3最新激活方法
这次也是发现的一个宝藏,idea安装好后只需双击就可激活成功,无需其他多余操作! 链接:https://pan.baidu.com/s/1AIkgeteEjlkWDv0VoFIV5A提取码:1pys 操作方法:下载解压文件,把文件放到合适位置,进入script目录,双击install-all-users.vbs 或者 install-current-user.vbs,点确定后继续等待一个done的弹出框,出来后就代表激活完成了。 插件更新关注:https://zhile.io/
重学React
重学React基础部分123456<script type="text/babel"> // 1. 创建虚拟dom const VDOM = <h1>Hello</h1> // 2. 渲染 ReactDOM.render(VDOM, document.getElementById('test'))</script> jsx基础语法 定义虚拟dom不能使用”“ 标签中混入js表达式使用{} 样式类名使用className 内联样式使用双大括号包裹 js表达式与js语句: 表达式返回一个值,如a a+b fun() arr.map() function fun(){}; 语句是js代码,不会返回值,如if(){} while(){} for(){} switch(){} 12345const VDOM = ( <h1 id={myid.toUpperCase()}> <span className="aa" sty ...
React-hook练手小项目--待办事件
React-hook练手小项目–待办事件一、学到了什么? 写代码前的规划 useState()/useRef()/useCallback()/useEffect()的使用 父子组件传值 自定义组件双标签的写法 使用useEffect()的先后顺序 条件渲染 二、具体写法 写代码前考虑可以分为几个模块,分个组件,组件之间的关系,如何排版 useState 12// 定义变量,改变变量的方法,初始值const [todoList, setTodoList] = useState([]) useRef 12345// 定义const inputRef = useRef();<input ref={inputRef} type="text"></input>// 获取值inputRef.current.value useEffect 12345// 在页面加载完成的时候以及数据更新的时候,触发执行// 第二个参数,当依赖变化的时候执行useEffect(() => { sessionStorage.s ...
idea2021.3激活教程
idea2021.3激活教程无需激活码,激活至5000年!! 插件地址: 链接:https://pan.baidu.com/s/1c-BaKu6W-cFxv_2rtMet8g提取码:3xc7 简单: 登录Jetbrains账号,点击试用 设置– 编辑自定义VM选项 完成! 详细: 登录Jetbrains账号,点击试用 设置– 编辑自定义VM选项(Edit Custom VM Options…) 1-javaagent:D:\\Program Files\\JetBrains\\IntelliJ IDEA 2021.3\\ja-netfilter\\ja-netfilter.jar 编写janf_config.txt,放在ja-netfilter的同级目录 12345678910[DNS]EQUAL,jetbrains.com[URL]PREFIX,https://account.jetbrains.com/lservice/rpc/validateKey.action[MyMap]EQUAL,licenseeName->zhileEQUAL,gracePeriodDays ...
myaMusic本地音乐播放器
myaMusic 一个基于 electron-vue 开发的音乐播放器 使用:vue+element+electron 源码地址: maya1900/myamusic: a simple local music player. (github.com) 安装1npm i 运行1npm start 打包1npm run starting 说明 1.添加单/多个本地音乐,添加文件目录,删除delete; 2.播放歌曲,歌词同步(歌词lrc文件同名,放和歌曲同级目录下),最小化到托盘; 3.列表循环、单曲循环、随机播放; 4.调整播放进度,调节音量、静音 遇到的问题1. 搭建electron项目这里先创建vue项目,再使用vue-cli-plugin-electron-builder完成的,完成后直接npm run electron:serve即可直接启动应用,不用先启动vue,再启动electron。 2. 设置应用无边框在background.js,new BrowserWindow时options里添加frame: false即可 3. 添加本地文件、 ...