自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 javascript高级程序设计第四版读书笔记-第五章 基本引用类型

先是 Math.random() 生成 [0, 1) 的数,也就是 0.123312、0.982931之类的,然后调用 number 的 toString方法将其转换成36进制的,按照MDN的说法,36进制的转换应该是包含了字母 a~z 和 数字0~9的,因为这样生成的是 0.89kjna21sa 类似这样的,所以要截取一下小数部分,即从索引 2 开始截取10个字符就是我们想要的随机字符串了。Date.UTC()方法也返回日期的毫秒表示,但使用的是跟 Date.parse()不同的信息来生成这个值。

2023-02-22 16:11:02 433

原创 javascript高级程序设计第四版读书笔记-第四章 变量、作用域与内存

声明变量并给它赋一个引用值时,这个值的引用数为 1。类似地,如果保存对该值引用的变量被其他值给覆盖了,那么引用数减 1。当一个值的引用数为 0 时,就说明没办法再访问到这个值了,因此可以安全地收回其内存了。或者可以维护“在上下文中”和“不在上下文中”两个变量列表,可以把变量从一个列表转移到另一个列表。区别是:2和3都是对象,可以添加属性,1是原始类型,不能添加属性,3是实现了安全模式的对象。(3)声明对象时,不使用动态添加属性,声明是就将所有要用的属性声明好。(1)不使用了的变量用null赋值。

2023-02-22 15:57:57 291

原创 javascript高级程序设计第四版读书笔记-第三章 语言基础

如果将一元加应用到非数值,则会执行与使用 Number()转型函数一样的类型转换:布尔值 false 和 true 转换为 0 和 1,字符串根据特殊规则进行解析,对象会调用它们的 valueOf()和/或 toString() 方法以得到可以转换的值。=》this:1.必须指定this,null会报错,不然使用会报错,,非严格模式如果指定this为null,则是指向全局。=》函数的参数:1.使用了ES6的参数解构,剩余操作符,默认参数,函数内不允许使用严格模式,可以全局严格模式。

2023-02-22 15:54:11 457

原创 微信小程序使用canvas绘制网络图片,使用canvas将图片变成圆形

以上的写法 会造成某些图标无法绘制上去,解决方法是在网络图片中不断嵌套,

2023-02-08 18:10:08 2147 1

原创 第8章:切片

【1】方式1:定义一个切片,然后让切片去引用一个已经创建好的数组。【2】方式2:通过make内置函数来创建切片。基本语法: var切片名[type = make([], len,[cap])PS : make底层创建一个数组,对外不可见,所以不可以直接操作这个数组,要通过slice去间接的访问各个元素,不可以直接对数组进行维护/操作【3】方式3:定一个切片,直接就指定具体数组,使用原理类似make的方式。

2023-01-10 20:08:17 424

原创 第七章:数组

成绩变量定义个数太多,成绩管理费劲,维护费劲 —》 将成绩找个地方存起来 —》 数组。(2)每次遍历得到的索引用key接收,每次遍历得到的索引位置上的值用val。(3)key、value的名字随便起名 k、v key、value。【3】如想在其它函数中,去修改原来的数组,可以使用引用传递(指针方式)。【2】Go中数组属值类型,在默认情况下是值传递,因此会进行值拷贝。(4)key、value属于在这个循环中的局部变量。【3】赋值内存:(数组是值类型,在栈中开辟内存)(1)coll就是你要的数组。

2023-01-09 22:07:03 182

原创 第六章 错误处理

自定义错误:需要调用errors包下的New函数:函数返回error类型。go中追求代码优雅,引入机制:defer+recover机制处理错误。发现:程序中出现错误/恐慌以后,程序被中断,无法继续执行。借助:builtin包下内置函数:panic。优点:提高程序健壮性。

2023-01-05 23:56:47 104

原创 vuex3

vuex3代码

2022-12-08 23:28:11 125

原创 实现一个vue3相对完善的响应式系统

watch,computed 等。

2022-11-23 16:01:28 371

原创 Vue.js设计与实现读书笔记五 第五章 非原始值的响应式方案

(1)主要问题是修改方法push/pop/shift/unshift 会在读取的时候会读取和设置length,如果一个reactive对象有两个effect函数,会造成,第二个修改length的时候,第一个副作用执行,然后又执行第二次副作用函数,然后就会无限循环,直到栈溢出。原因是arr[0]是个对象,所以会被变成深代理,创建一个新代理,而includes中的arr访问的元素也是一个对象,这两个对象不一样,每次使用reactive传的对象都是不一样的,即使参数相同。(3)把数组作为对象,使用for…

2022-11-23 14:34:17 262

原创 git的常用命令

vscode安装插件,project-tree安装之后按ctrl+shift+p,并输入Project Tree回车点击要生成目录的项目,回车将项目目录生成并存储到README.md中。

2022-10-28 15:51:30 202

原创 Vue.js设计与实现读书笔记十四 第十四章 内建组件和模块

KeepAlive的本质是缓存管理,再加上特殊的挂载/卸载逻辑。KeepAlive组件的实现需要渲染器层面的支持。在keepalive组件卸载时我们不能正的将他卸载,KeepAlive的插槽中的组件的Vnode被KeepAlive插入。KeepAlive的instance上有两个函数。

2022-09-18 23:05:03 180

原创 Vue.js设计与实现读书笔记十三 第十三章 异步组件与函数式组件

①异步组件是指:异步的加载一个组件并渲染他,是用于分隔代码,服务器下发组件等场景中②函数式组件是指:允许通过一个函数来定义组件,函数的返回值作为渲染的内容,函数组件的特定是无状态(没有data),编写简单直观。③vue3中的函数式组件和普通组件的性能区别不大,而vue2中函数式组件比不同组件性能好。

2022-09-18 21:55:23 358

原创 Vue.js设计与实现读书笔记十二 第十二章 组件的实现原理

当页面越来越大,内容越来越多,那么对应的Vnode也会非常多,这时候就需要组件化,组件的好处是可以复用,然后可以将页面拆为多个部分,分别来构建。

2022-09-15 22:30:17 420

原创 小米手机无需刷入Recovery获取Root权限,卡刷包payload.bin提取boot.img文件

注意一下操作都需要解bl锁,退出手机账号,备份数据,打开use调试才可以。

2022-09-05 10:55:28 9338

原创 Vue.js设计与实现读书笔记十一 第十一章 快速Diff算法

如下图:然后让i向上移动,如果source[i]为-1表示这新子节点是。

2022-09-02 23:38:04 647

原创 Vue.js设计与实现读书笔记九 第九章 简单Diff算法

这一节要解决的问题,就是第八章的时候比较Vnode新与旧的的子节点,当新与旧的子节点都是一组的情况,之前的方法是直接将所以旧的子节点,调用unmount循环全部卸载掉,这样做会导致性能开销,要先卸载,然后再重新渲染,如果能复用节点,将节省性能,特别是如果子节点变化不大,如果能精准更新旧更好了,这一节,要解决的就是当新子节点中没有,旧子节点有的节点的删除,主要的问题是如何找到旧不可复用的子节点。如图,新子节点p-3对应的可复用的旧子节点的索引最大为2,而新的子节点p-1,p-2都比。

2022-09-02 10:59:12 279

原创 Vue.js设计与实现读书笔记八 第八章 挂载与更新

这里使用的是将DOM中绑定一个伪造事件处理函数,说白了,就是在绑定DOM中的会调函数中,使用对象调用真实绑定的函数,当更新的时候,更新这个对象的函数,就实现了事件更新,不用使用removeEventListenner解绑。注意:**当新children和旧的为一组时,这里的代码没有比较,直接将旧的卸载掉,重新渲染新的,如果子节点很多,那么性能肯定不行,vue使用的就是diff算法来解决的 **两者一般是一对一的,但是也有attitudes有的属性,properties没有,也有翻过来的。.........

2022-09-01 14:26:42 461

原创 Vue.js设计与实现读书笔记七 第七章 渲染器的设计

这里要解决的问题是,要将操作Dom的逻辑变成参数,提取出来,因为要设计一个多平台的渲染器,操作Dom的逻辑是浏览器专属的.创建dom,为标签插入字符,挂载到Dom上这些逻辑,都由用户传入,const {createElement , insert , setElementText } = options // 挂载 function mountElement(vnode , container) {...

2022-08-30 12:00:39 239

原创 Vue.js设计与实现读书笔记六 第六章 原始值的响应式方案

第六章主要讲解的是原始值的响应式方案,reactive,ref,toRef,toRefs之间的关系,以及他们的作用,简单来说,ref是由ractive构建的,toRefs是由toRef构建的。

2022-08-30 10:03:52 330

原创 Vue.js设计与实现读书笔记四 第五章 非原始值的响应式方案

(1)之前的代码,都是浅响应,例如:let obj={ test:{title:1}} 当访问obj代理 p访问属性时候,只有p.test能触发副作用函数,p.test.title不能,原因是test只是一个普通对象,(2)了解的浅响应的问题,那么我们可以在收集副作用的时候,判断属性对象是不是一个对象,如果是就递归调用,这样就实现深响应(3)深浅响应是真的属性的深度,原型是指代理对象的原型链,如果原型上的属性也是对象,那么遵循,对象属性上的规则。

2022-08-29 15:25:21 236

原创 实现vue3的 reactive,computed和watch

【代码】实现vue的computed和watch。

2022-08-29 12:00:25 422

原创 Vue.js设计与实现读书笔记三 第四章响应系统的作用与实现

然后watch内部的effect 使用了lazy,不立刻执行副作用函数, 最后执行effectFn(),获得第一次的旧值,同时触发track收集副作用函数,当监听的值改变,scheduler中执行effectFn()获得新值,执行cb()然后将新值赋值给旧值,这样,下一次改变监听的数据,旧值就是上一次的新值。这个主要是watch监听的数据改变,回调函数如果是异步函数,那么每次数据改变,就会触发异步函数,但是如果确定那个异步函数的结果是我们想要的,这里让最后一个异步函数的结果为最终结果。......

2022-08-27 11:16:47 222

原创 Vue.js设计与实现读书笔记二 第四章 响应系统的作用与实现

响应式数据是当对象数据(设置)改变的时候,会执行读取数据的操作,

2022-08-25 18:08:44 359

原创 vue3项目打包错误

这个错误似乎是 plugin-legacy 2.0需要 vite 3.0才行。(1)在安装包的时候忽略冲突,安装命令后面加。(2)更新所有的包到,最新,再来解决冲突。第一个报错js,右键点进去,搜索。但是我是这样的也报错。

2022-08-22 15:31:51 11224

原创 问题记录1

原因是v-bind,即使这段代码注销了也会报错。

2022-08-03 21:47:39 2902 1

原创 vue3 实现动态切换语言

1)创建一个文件,i18n/index.jsimportmZhLocalefrom'./lang/zh'//中文语言包importmEnLocalefrom'./lang/en'//英语语言包importgetLangfrom"../utilities/BrowserLang"//获取浏览器的语言import{getItem}from"../utilities/Storage"//获取本地存储设置的语言import{en{msg{...

2022-07-29 15:37:55 3351

原创 express使用webSocket

io.emit(“userMsgs”,usermsgs.map(item=>[item[0],item[1]]))表示广播给所有客户端。其中io.on(“connection”,)这个是表示监听链接的客户端,是内置的事件。client.on(“disconnect”,)这个表示监听客户端离开,是内置事件。这里使用socket.io,实现一个聊天的Demo。其他的on监听事件,是自定义的和客户端相对应。#webSocket的特点。...

2022-07-19 15:20:49 1274

原创 vue3实现网页切换加载组件

在这之前应该让这个组件,提前渲染到页面中如下将它的虚拟dom渲染到body下面。(2)由于这个是切换页面时候的动画,所以要在切换路由的时候,执行这两个方法,这个组件定义两个动画,一个是开动画,加载到90%,一个是加载到100%(1)LoadingBar.vue实现这进度条模板。切换之前1%-90%,切换之后90%-100%(3)当路由切换的时候,调用这两个方法。...

2022-07-16 11:11:21 771

原创 express使用token实现登录操作

但是由于没次请求就会自动带上cookie,这有一定安全问题,例如当你之前登录过某个银行网站,他们使用session的方式,你再在某个钓鱼网站点击别人定制的链接,就可能在钓鱼网站登录了银行网站执行某些操作,因为这种不受浏览器同源策略限制,而使用token,他一般不会自动提交,就没有这个问题了,钓鱼网站无法获得token。其中1.setToken是生成一个加密的token字符串,我这里定义的参数是(用户名,用户id,过期时间),(3)前端查看有没有token,有的话,存储到localStorage,...

2022-07-15 16:13:54 1000

原创 Ts实现发布订阅模式

发布订阅模式有4个方法,存储结构是一个对象键是表示类一类,值是一个对象,每一项都是一个方法1.on方法将某给对象属性,数组添加一个方法2.emit方法将对象属性的数组中的方法遍历执行3.off删除对象属性数组中的某一个方法4.once和on一样,只是添加的方法emit只能执行一次,执行一次后销毁...

2022-06-15 16:12:04 687

原创 typescript学习笔记2 配置浏览器兼容性

webpack.config.js需要安装的插件:(1)其中最重要的的是environment 属性,ts兼容性流程是ts-loader将ts变成js,这一步只是转成对应的版本的语言,没有做兼容性,然后babel-loader在将js转为模板兼容浏览器,所能执行的代码,再由webpack打包,最后一步默认会使用箭头函数,所以低版本浏览器使用了babel依然会报错,所以低版本浏览器不应该使用箭头函数(2)loader是从后向前执行的,contentBase: “./dist” 最新版本中不能用...

2022-06-10 17:01:46 691

原创 typescript学习笔记1-tsconfig.json配置和变量类型声明

学习typescript笔记

2022-06-10 16:24:00 1305

原创 express实现自定义跨域请求

发现网上的教程都是教让服务器任意跨域,一般为了安全起见,Access-Control-Allow-Origin字段不应该为*而是应该有一个自定义规则,如果对同源策略,跨域请求不了解,可以先看看阮一峰的文章:https://www.ruanyifeng.com/blog/2016/04/cors.htmllet express = require("express");// 获取路由 好处是可以写在其他文件中let {Router} = express;// 创建路由对象let router

2022-05-25 16:04:42 285

原创 js异步事件同步执行案例

要做一个什么事呢?简单说就是模拟点击获得数据如图,要收集页面上的文章 的url,标题,日期三样内容组成一个表格绘制到页面上,标题和日期可以直接获得页面的dom,用for循环填充到一个HTML字符串中,这里的问题是url的值需要点击分享按钮,在弹窗的复制链接下才有,这篇文章的url,如果直接for 循环中模拟点击,会找不到弹窗的url值,如下:猜测是点击事件后,弹窗的url值还没更新,所以需要点击后等待一会儿,让其他代码更新弹窗的url值,然后在收集弹窗的url ,就可以将用异步事件同步事件来

2022-05-19 18:14:49 646

原创 Vue.js设计与实现读书笔记一

第一章 权衡的艺术1.什么是声明式和命令式?更新局部数据innerHTML和虚拟DOM 以及原生DOM操作之间的性能对比?=》声明式就是:给参数 然后不用管过程,直接得到结果 命令式:从一步一步从开始到结果, 声明式式命令式的封装命令式:效率高 声明式:维护方便 简单=》innerHTML 跟新数据,是必须跟新全部数据,计算量包括,DOM操作innerHTML原理创建一个fragment(document碎片)将 newHTML 设置到 fragment 内部 (这里怎么设置的不必关心,

2022-05-18 19:50:01 443

原创 手写面试题三:防抖和节流

防抖(debounce)防抖是指,某个固定时间外,可以执行事件回调,如果在固定时间内触发,则重新计时。它的作用就是在高频事件中只执行最后一次。例如多次快速点击提交function myDebounce(fun, wait = 1000) { let timeout; return function () { // 存储this和参数 let context = this, args = arguments;

2022-05-14 15:57:02 266

原创 手写系列二,Promise

手写promise注意resolve中的setTimeout异步方法也可以写在.then中,他是Promise的精髓参考https://zhuanlan.zhihu.com/p/457389524 const PENDING = "pending"; const REJECTED = "rejected"; const RESOLVED = "resolved"; function myPromise(fun) { let self = t

2022-05-13 18:02:19 103

原创 面试题手写系列一,手写Oject.create,Instanceof,new操作符

手写 Object.create <!-- 1.手写 Object.create --> <script> // Object.create的作用是将对象,变成一个空对象的原型,第二参数是在空对象中添加实例属性 let obj1 = { name: "xxx" }; obj1.__proto__.age = 18; console.log( Object.create(obj1, { g

2022-05-13 15:05:46 233

原创 箭头函数与普通函数的区别?

== 操作符的强制类型转换规则?(1)先比较两个的类型是否是相同,如果相同比较值(2)看两个值是否是null和undefined的比较,是返回true(3)看两值是不是string和number类型比较,将string转为number比较(4)看一方是否是boolean,是转为number再比较(5)一方是Object,另一方是string,number,symbol,将Object转为原始类型再判断其他值到字符串的转换规则?其他值到数字值的转换规则?其他值到布尔类型的值的转换规则?||

2022-05-12 16:43:23 50

小米手机无需刷入Recovery获取Root权限工具包

不需要刷入第三方Recovery,就可以获取Root权限工具,和教程,线刷/卡刷包提取boot.img工具

2022-09-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除