自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 js除了确保根据字符边界进行截取字符的方法

这些方法都可以确保根据字符边界进行截取,确保截取的是完整的字符。其中 slice() 和 substring() 是最常用且推荐的方法。这里使用了正则表达式来匹配完整的字符,包括多字节字符。

2024-10-24 14:54:10 355 1

原创 闭包的缺点

闭包的复杂性可能会增加代码的调试难度,特别是当闭包嵌套层次较深时,跟踪变量的值和作用域变得更为困难。由于闭包会持有对外部变量的引用,这可能导致更多的内存占用和更复杂的垃圾回收过程,从而影响性能。闭包可能会导致内存泄漏,因为闭包会持有对外部变量的引用,使得这些变量无法被垃圾回收机制回收。闭包可能会导致意外的状态共享,特别是在循环中创建多个闭包时,所有闭包可能共享同一个变量。尽量减少闭包持有的外部变量的数量,并在不再需要时及时释放这些变量。通过合理的代码结构和模块化设计,减少闭包的使用频率和复杂度。

2024-10-24 14:52:31 154

原创 String.prototype.slice()一些知识点

由于 slice() 方法正确处理了字符边界,确保每个字符都是完整截取的,所以结果是正确的。因此,slice(5, 11) 截取的结果是 “𮧵𠯂𪑟”,这是一个合法的字符串片段。slice(5, 11) 从索引5开始截取,直到索引11结束。索引5对应的是“𮧵”,索引11对应的是“签”之前的字符。因此,截取的结果是“𮧵𠯂𪑟”。

2024-10-14 17:24:45 268

原创 关于css溢出

当四个元素之间存在空白字符时,这些空白字符会占据一定的宽度,导致元素超出了父容器的宽度,从而换行或掉下来。文字溢出:如果四个元素中的文本内容过长,并且没有设置溢出处理方式(如使用 ellipsis),文本内容可能会导致元素宽度超出父容器的宽度,从而换行或掉下来。边框和内边距:如果四个元素设置了边框或内边距,这些边框和内边距会增加元素的实际宽度,导致元素超出了父容器的宽度,从而换行或掉下来。浮动元素:如果四个元素的前面或后面存在浮动元素,浮动元素会影响到后续元素的布局,导致元素换行或掉下来。

2024-04-24 17:58:49 620

原创 js移除子元素

使用innerHTML属性将其设为空字符串,可以一次性清除该元素的所有子节点内容。但是需要注意的是,innerHTML会触发重排和重绘,如果是大量DOM操作,性能消耗可能较大。如果只需要删除子节点而不需要保留原有DOM树结构或者触发事件,这种方法更为简洁高效。如果需要保持原有的DOM树结构或者关心性能,原始的while循环是一个更好的选择。

2024-03-28 17:09:51 1235

原创 关于Symbol()的一些小注意点

Symbol的值作为属性名,遍历对象的时候,该属性不会出现在for…of循环中,也不会被Object.keys()、Object.getOwnPropertyNames()、JSON.stringify()返回。但是,它也不是私有属性,有一个Object.getOwnPropertySymbols()方法,可以获取指定对象的所有 Symbol 属性名。或者另一个新的 API,Reflect.ownKeys(targetObj)方法可以返回所有类型的键名,包括常规键名和 Symbol 键名。

2024-03-21 17:30:18 333

原创 什么是硬件加速?

传统的软件运行在通用的中央处理器(CPU)上,而硬件加速则利用专用的硬件组件来加速特定的计算任务。通过将特定的计算任务委托给硬件加速器,可以显著提高计算性能和效率,同时减轻CPU的负担。它可以并行处理大量图形相关的计算任务,例如渲染、光照计算和物理模拟,从而提供更流畅和逼真的图形效果。由于深度神经网络的计算密集型特性,使用GPU进行并行计算可以大幅提高训练和推理的速度。总之,硬件加速通过利用专门设计的硬件组件来提高计算机系统的性能和效率,可以在多个领域中应用,包括图形处理、数据压缩、密码学和机器学习等。

2024-03-20 11:28:01 1016

原创 js中复杂数据类型的引用与c++的指针是一回事吗?

在JavaScript中,复杂数据类型(如对象和数组)是通过引用来传递和操作的。当你将一个对象赋值给一个变量时,实际上是将对象的引用赋值给了变量。这意味着变量存储的是对象在内存中的地址,而不是对象本身的值。尽管在概念上有些相似,但JavaScript中的引用和C++中的指针还是有一些区别的。其中一个主要区别是,JavaScript中的引用是自动管理的,不需要手动释放内存。通过指针,你可以直接访问和修改对象的值。在JavaScript中,复杂数据类型的引用和C++中的指针有一些相似之处,但并不完全相同。

2024-03-18 18:54:34 208

原创 js中副作用的消除还解决了并行计算带来的竞争问题,具体是如何解决的

1、纯函数:纯函数是指没有副作用的函数,其返回值仅由输入参数决定,不依赖于外部状态。通过将异步操作封装成纯函数,并使用适当的异步编程方式来处理结果,可以避免竞争问题的发生。2、函数式编程:函数式编程是一种编程范式,强调使用纯函数进行开发。这样可以避免副作用,并且使得并行计算更加容易。在JavaScript中,副作用是指对外部环境产生的可观察的变化,例如修改全局变量、修改DOM元素等。为了消除副作用并解决并行计算带来的竞争问题,JavaScript引入了一些机制和编程范式,包括纯函数、函数式编程和异步编程。

2024-03-18 17:40:01 724

原创 数学中的函数

在数学中,函数是一种特殊的关系,它将一个集合中的每个元素(称为输入)映射到另一个集合中的唯一元素(称为输出)。函数确保对于相同的输入,始终会有相同的输出。这意味着函数具有确定性,即给定相同的输入,函数将始终产生相同的结果。然而,需要注意的是,在某些特殊情况下,函数可能不满足这个条件。例如,在数学中,存在一类称为多值函数的函数,它们对于某些输入可能具有多个输出。这种情况下,对于同一个输入,函数并不总是对应着同一个输出。总结来说,大多数情况下,函数确实满足对于同一个输入,永远对应着同一个输出的特性。

2024-03-18 17:18:36 253

原创 关于BFF

BFF的主要目标是将前端与后端的业务逻辑分离,使得前端可以根据自身的需求定制接口和数据,从而提高开发效率和用户体验。总结来说,BFF是一种将前端与后端业务逻辑分离的架构设计模式,通过多个端共用一个BFF来提高开发效率和用户体验。1、分离基础服务:BFF将基础服务与前端业务逻辑进行分离,使得前端只需要关注自身的业务需求,而不需要了解后端的具体实现细节。3、业务判断处理:BFF层面负责对前端请求进行业务判断和处理,根据不同的端和需求返回相应的数据和接口。

2024-03-18 15:56:18 330

原创 关于SRE

SRE的目标是通过将软件工程的原则和实践应用于运维工作,来提高系统的可靠性和可扩展性。SRE强调自动化、监控、故障处理和容量规划等方面的工作,以确保系统的稳定性和可用性。总结起来,SRE是一种将软件工程的原则和实践应用于运维工作的方法论,旨在提高系统的可靠性和可扩展性。3、故障处理:SRE团队通过故障注入和故障演练等方式来测试系统的弹性和恢复能力,并通过故障分析来改进系统的可靠性。1、可靠性工程:SRE团队致力于提高系统的可靠性,通过自动化和监控来减少人为错误,并通过故障处理来快速恢复系统。

2024-03-18 15:55:08 209

原创 关于Rust

内存安全:Rust使用所有权、借用和生命周期的概念来确保内存安全,避免了常见的内存错误,如空指针和数据竞争。系统编程:Rust的内存安全性和性能使其成为开发操作系统、嵌入式系统和网络协议栈等系统级应用的理想选择。社区资源:Rust拥有活跃的社区,提供了许多博客、论坛和聊天室,可以与其他Rust开发者交流和学习经验。可靠性:Rust的编译器强制执行严格的静态类型检查,以防止常见的编程错误,并提供了可靠的错误处理机制。数据科学:Rust的高性能和易于集成的特性使其成为处理大规模数据和进行机器学习的合适工具。

2024-03-18 15:54:11 361

原创 JS 中的 FP 和 OOP

函数式编程(FP)是一种编程范式,它将计算视为函数的求值过程,强调使用纯函数和避免共享状态和可变数据。在JavaScript中,函数是一等公民,可以作为参数传递给其他函数,也可以作为返回值返回。FP的一些核心概念包括不可变性、高阶函数、纯函数和函数组合。通过使用这些概念,FP可以提供更简洁、可维护和可测试的代码。面向对象编程(OOP)是一种编程范式,它将程序组织为对象的集合,每个对象都有自己的状态和行为。通过使用这些概念,OOP可以提供更模块化、可扩展和可重用的代码。面向对象编程(OOP)

2024-03-08 10:22:59 304

原创 关于UTF8

类似的,utf16le,utf16be,utf32le,utf32be都可以表示所有的unicode。utf8是unicode的编码方式,也就是转成字节序列的方式,可以表示所有unicode。

2024-03-06 18:23:00 125

原创 es6函数剩余参数

ES6引入了函数剩余参数(Rest Parameters),它允许我们在函数定义中使用三个点(…3、可以与其他参数一起使用:剩余参数可以与其他参数一起使用,但必须放在参数列表的最后。1、剩余参数语法:在函数定义时,使用三个点(…2、剩余参数是一个数组:当函数被调用时,传递给函数的所有参数都会被收集到剩余参数数组中。5、可以传递任意数量的参数:剩余参数允许我们传递任意数量的参数给函数,而不需要提前定义函数的参数个数。4、可以没有剩余参数:如果函数没有传递任何参数,剩余参数将是一个空数组。

2024-03-06 14:45:29 182

原创 js的偏函数和柯里化

2、柯里化(Currying)是指将一个多参数的函数转换为一系列只接受单个参数的函数。通过柯里化,我们可以将一个函数的参数逐步传递,每次传递一个参数,返回一个新的函数,直到所有参数都被传递完毕并执行。1、偏函数(Partial Function)是指通过固定函数的一部分参数,从而创建一个新的函数。这个新函数可以接受剩余的参数,并在调用时将固定的参数与传入的参数合并。偏函数和柯里化都是JavaScript中的函数技术,用于创建新的函数。偏函数和柯里化都是JavaScript中的函数技术,用于创建新的函数。

2024-03-06 14:27:21 273

原创 斐波那契数列js

斐波那契数列是一个经典的数学问题,它的定义是:第一个和第二个数都是1,从第三个数开始,每个数都是前两个数的和。斐波那契数列的前几个数字依次为:1, 1, 2, 3, 5, 8, 13, 21, …这种方法简洁明了,但是在计算较大的斐波那契数时会出现性能问题,因为它会重复计算相同的子问题。在JavaScript中,可以使用递归或循环来实现斐波那契数列。这种方法通过迭代计算每个斐波那契数,避免了重复计算,性能更好。

2024-03-06 14:25:54 258

原创 小芝士--前端如何设置三方字体

如在前端设置字体时,可以通过CSS样式来指定字体。首先,需要在网页中引入方正字库提供的字体文件,可以是.ttf、.otf等格式的字体文件。然后,在CSS样式中使用@font-face规则来定义字体,并将字体文件链接到该规则中。最后,在需要应用该字体的元素上使用font-family属性来指定字体名称。以下是一个示例代码:@font-face { font-family: '方正宋体'; src: url('path/to/fangzhengsongti.ttf') format('truetyp

2024-03-06 14:24:14 330 1

原创 canvas的context.measureText

"在当前字体样式下的宽度,并将结果打印到控制台。使用该方法时,需要先获取到CanvasRenderingContext2D对象的引用,通常可以通过调用canvas.getContext(‘2d’)来获取。然后,可以使用该对象的measureText()方法来测量文本的宽度。context.measureText()是HTML5 Canvas中的一个方法,用于测量给定文本在画布上的宽度。注意:由于measureText()方法返回的是一个包含宽度信息的对象,因此需要使用.width属性来获取实际的宽度值。

2024-03-06 10:19:07 524

原创 Object.freeze

注意:需要注意的是,Object.freeze只会冻结对象本身的属性,而不会冻结嵌套对象的属性。如果需要冻结嵌套对象的属性,需要对嵌套对象递归地调用Object.freeze方法。当一个对象被冻结后,任何对其属性的修改都会被禁止,包括添加、删除和修改属性的值。一旦对象被冻结,就无法再对其进行修改,这对于保护对象的数据完整性非常有用。冻结对象后,无法修改对象的属性的可枚举性、可配置性和可写性。冻结对象后,无法修改对象的属性值。冻结对象后,无法删除对象的属性。冻结对象后,无法修改对象的原型。

2024-02-27 16:17:06 311

原创 js如何判断一个对象中某一个属性存在并且有值

:nullish合并运算符用于判断一个值是否为null或undefined。1、使用hasOwnProperty()方法:该方法用于检查对象是否具有指定的属性。2、使用in运算符:in运算符用于检查对象是否具有指定的属性,包括原型链中的属性。3、使用typeof运算符:typeof运算符用于检查变量的类型。在JavaScript中,可以使用不同的方法来判断一个对象中某个属性是否存在并且有值。这些方法可以根据具体的需求选择使用,根据不同的情况来判断对象中某个属性是否存在并且有值。

2024-02-21 18:15:05 992

原创 canvas的一些基础

在 Canvas 中,基本图形有两种:直线图形和曲线图形直线图形:直线、矩形、多边形。

2024-01-31 13:48:47 217

原创 设备像素比

例如,如果设备像素比为2,意味着设备的屏幕分辨率是CSS像素的两倍。这意味着在CSS中定义的100px宽度的元素在设备上实际上会占据200个物理像素。通过使用window.devicePixelRatio属性,我们可以根据设备的像素比来调整网页的布局和样式,以适应不同的屏幕分辨率。设备像素比是设备像素和CSS像素之间的比率,在缩放比为1的情况下计算得出。window.devicePixelRatio是一个JavaScript属性,用于获取设备的像素比(DPR)

2024-01-30 17:52:54 386

原创 webpack如何把dist.js中某个模块js打包成一个全局变量,使得在html引入dist.js后可以直接访问

值得注意的是:我在本地使用16.14.2版本的node打包时会报一些警告,升级node18.12.1未报警告,警告信息如下:

2024-01-23 17:36:05 677

原创 PDF文件如何转为base64 js

可以使用FileReader对象来读取文件内容,并使用btoa()函数将文件内容转换为Base64编码。

2024-01-19 10:26:25 1423

原创 dp和pt的区别

在160 dpi屏幕上,1 dp等于1个像素。但是,随着屏幕密度的变化,dp与像素的比例也会相应变化,但不一定成正比。因此,使用dp作为单位可以确保在不同屏幕密度的设备上显示相同的尺寸。因此,pt单位的尺寸相对于dp单位的尺寸要稍微大一些。总结来说,dp是一种与屏幕密度无关的像素单位,而pt是一种绝对长度单位。在Android开发中,通常建议使用dp作为单位来测量屏幕上的尺寸,以确保在不同屏幕密度的设备上显示一致的效果。dp和pt是两种不同的单位,它们在Android开发中用于测量屏幕上的尺寸。

2024-01-18 17:30:40 708

原创 关于微信小程序内嵌h5的一些 小知识点

微信小程序的webview组件可以内嵌H5页面,但是不能直接将H5页面放在本地。在微信小程序中,webview组件只能加载网络上的H5页面,而不能加载本地的H5页面。这是因为微信小程序的安全机制限制了webview组件的访问权限,只允许加载网络上的资源。另外,如果你需要在微信小程序中实现与H5页面的实时通讯,可以使用webview的postMessage功能。如果你想在微信小程序中使用本地的H5页面,可以考虑将H5页面的内容嵌入到小程序的页面中,然后通过webview组件加载小程序页面。

2024-01-17 13:34:04 688

原创 js解构方式

所以,如果你希望在data为undefined或者null时不抛出错误,而是将signInfo解构为一个空对象,那么第一种写法更好。如果你希望在data为undefined或者null时抛出错误,那么第二种写法更好。这种写法使用了默认值{},当data为undefined或者null时,signInfo会被解构为一个空对象{},避免了解构赋值时的错误。这种写法没有使用默认值,当data为undefined或者null时,会抛出错误,因为无法对undefined或者null进行解构赋值。

2024-01-14 15:38:12 409

原创 js实现将一张红色透明图改成黑色

获取到像素点,遇到255红色rgb的改为黑色0。ps:红色的rgb为255 0 0。

2024-01-03 17:13:52 452

原创 ts中的keyof 关键字

这个函数的类型参数 T 表示一个对象类型,K 表示一个键类型,这个键必须是对象类型 T 的一个属性键。这意味着 K 必须是 keyof T 的一个元素,其中 keyof T 表示 T 类型的所有属性键的联合类型。在函数体中,我们通过 obj[key] 访问了对象 obj 中键为 key 的属性值,并使用类型断言将其断言为 T[K] 类型。这意味着我们确信这个属性值具有与 T[K] 相同的类型。keyof 是 TypeScript 的一个特性,它返回一个字符串字面量类型,表示对象类型的所有属性键的联合类型。

2024-01-02 14:06:07 639

原创 ts中的任意接口

ts中,[Symbol()] 是一个计算属性名称的语法,可以在对象字面量中使用 Symbol 类型来动态地生成属性名称,[Symbol()] 生成了一个名为 Symbol() 的属性,并赋值为 ‘灵境胡同’。由于该属性名称是动态生成的,所以它不会与任何其他属性冲突。计算属性名称在某些情况下非常有用,例如当你希望创建一个唯一的属性,或者希望动态地生成属性名称。

2023-12-28 15:55:48 382

原创 ts的类型断言

toFixed(2)是JavaScript的Number对象的一个方法,用于将数字格式化为一个字符串,保留两位小数。总的来说,这些代码片段展示了如何使用类型断言来处理可能具有混合类型的变量,以及如何使用Number对象的toFixed方法来格式化数字为字符串。这是一些代码片段,主要涉及类型断言和JavaScript的Number对象的toFixed方法。as number是一个类型断言,它将test1的类型从可能的字符串或数字断言为数字。,然后进行类型断言,将test1的类型断言为数字。

2023-12-27 12:55:40 509

原创 pdfjs,pdf懒加载

PDF.js是一个使用JavaScript实现的PDF阅读器,它可以在Web浏览器中显示PDF文档。PDF.js支持懒加载,也就是说,它可以在用户滚动页面时才加载PDF文档的某些部分,从而减少初始加载时间和内存占用。在上面的例子中,PDF.js会在用户滚动页面时加载可见的PDF页面,从而减少初始加载时间和内存占用。需要注意的是,PDF.js的懒加载需要手动实现,而且需要根据具体的需求进行调整。

2023-11-30 15:14:25 1392 2

原创 WEPY框架的小程序的坑

因此,建议在使用第三方插件前先查看官方文档和评论区,了解插件的使用方法和注意事项。总之,在使用WEPY框架开发小程序时,需要仔细阅读官方文档,并按照文档要求正确使用框架的功能和组件,避免出现不必要的错误和问题。因此,需要仔细阅读官方文档,并按照文档要求正确使用路由。因此,需要仔细阅读官方文档,并按照文档要求正确使用样式。组件使用不当:WEPY框架的组件使用方式和原生小程序有所不同,如果使用不当可能会导致性能。因此,需要仔细阅读官方文档,并按照文档要求正确使用组件。

2023-11-30 13:51:30 639

原创 WEPY框架的小程序的webview与原生小程序的webview环境有什么不同

这意味着在WEPY框架中,Webview运行的环境是Electron,而在原生小程序中,Webview运行的环境是微信小程序提供的运行环境。在性能方面,原生小程序的Webview可能会比WEPY框架的Webview更优。因为原生小程序的Webview是直接运行在微信小程序提供的运行环境上,而WEPY框架的Webview则需要通过Electron进行一次额外的渲染和转换。例如,在原生小程序的Webview中可以使用微信提供的API,而在WEPY框架的Webview中可能需要使用Electron提供的API。

2023-11-28 11:21:11 553

原创 在JavaScript中,将pt单位转换为px

接下来,我们创建一个新的px元素,并将其添加到文档的body部分。然后,我们使用getComputedStyle方法获取该元素的CSS样式,并从中提取出高度属性值。由于这个值是以px为单位,因此我们可以将其解析为浮点数并返回。请注意,由于这种方法依赖于动态创建元素并修改样式,因此它可能会对页面的性能产生一定的影响。首先创建了一个新的style元素,并设置其内容为一个包含我们想要转换的pt值的CSS样式。然后,我们将这个style元素添加到文档的head部分。

2023-11-28 10:37:46 842

原创 微信小程序如何解决:Android 手机(Vivo Y51s 和 华为系列手机) 大概率能够遇到 调用 wx.createBLEConnection方法,提示过createBLEConnection:

根据提供的引用内容,无法直接得出微信小程序调用wx.createBLEConnection方法出现操作超时的问题与手机品牌有关。但是,我们可以提供以下解决方案:检查蓝牙设备是否正常开启并处于可连接状态。检查手机是否已经连接了其他蓝牙设备,如果是,请先断开连接再进行连接操作。尝试在代码中增加重试机制,例如多次尝试连接蓝牙设备,或者增加连接超时时间等。

2023-11-23 16:07:13 715

原创 接口304 Not Modified

这意味着客户端已经缓存了该资源,并且该资源未被修改。服务端会比较这两个参数与资源的最后修改时间和ETag值,如果匹配,则返回304状态码,否则返回200状态码和新的资源内容。举个例子,如果客户端已经缓存了一个网页,当用户再次访问该网页时,客户端会向服务端发送一个条件请求,请求头中包含If-Modified-Since和If-None-Match参数。如果服务端检测到该网页未被修改,则返回304状态码,客户端会使用缓存中的资源,否则返回200状态码和新的网页内容。

2023-11-22 10:01:38 3335

原创 js移除指定类名

【代码】js移除指定类名。

2023-11-02 15:05:50 261

空空如也

空空如也

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

TA关注的人

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