- 博客(151)
- 收藏
- 关注
原创 【Vue 3组合式API:告别“面条代码”的响应式编程实践】
在Vue 2时代,选项式API(Options API)通过data、methods、computed等固定区块组织代码,但随着组件复杂度上升,同一功能的逻辑往往分散在不同区块,形成难以维护的“面条代码”。Vue 3的组合式API(Composition API)通过逻辑关注点组织代码,彻底改变了这一局面。组合式API不是对选项式API的否定,而是提供了更强大的代码组织能力。优势:同一功能的响应式数据、计算属性和方法聚合在一起,支持逻辑复用。Vue 3组合式API:告别“面条代码”的响应式编程实践。
2025-03-18 17:34:37
294
原创 【java链表】
Java链表(LinkedList)是一种数据结构,用于存储和操作一系列数据元素。链表是由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的引用(指针)。然而,链表的缺点是访问任意位置的元素比较慢,需要从头遍历到目标位置。另外,链表需要额外的存储空间来保存指针。因此,对于频繁的随机访问操作,数组可能更加高效。在Java中,可以通过java.util.LinkedList类来使用链表。可以使用LinkedList类的方法来执行插入、删除、检索等操作。
2024-03-04 15:35:01
251
原创 【java中映射是什么如何使用】
然后,可以通过实例化Map类的具体实现类来创建一个映射对象。映射还提供了其他常用的方法,如remove()用于删除键值对、keySet()返回所有键的集合、values()返回所有值的集合等。在Java中,映射(Map)是一种存储键值对(key-value)的数据结构。以上介绍了如何创建一个映射对象,并向映射中添加键值对、查找值、删除键值对等操作。根据具体需求,还可以使用其他方法对映射进行操作。上面的代码创建了一个HashMap映射,其中键的类型是String,值的类型是Integer。
2024-03-04 15:33:13
681
原创 【java堆栈】
栈帧按照"后进先出"(LIFO)的原则进行管理,也就是说,最后一个进入栈的帧会最先出栈。在Java中,所有通过关键字"new"创建的对象都存储在堆中。堆中的对象可以被多个引用变量指向,当没有引用指向时,垃圾回收器会自动回收这些对象以释放内存。在这个例子中,使用关键字"new"在堆中创建了一个Person对象,并将其地址分配给名为"p"的引用变量。引用变量"p"在栈中分配内存空间来存储堆中对象的地址。这样,通过引用变量"p"可以访问和操作堆中的Person对象。
2024-03-04 15:26:56
281
原创 【java数组】
这些是Java数组的基本定义和使用形式,可以根据具体需求选择适合的方式进行定义和使用。Java数组是一种用于存储相同类型数据的容器。可以存储基本数据类型和引用数据类型。在Java中,有两种数组的形式:一维数组和多维数组。
2024-03-04 14:33:17
355
原创 【java类的使用,及注意事项】
Java类的使用是通过创建对象来调用类的方法和访问类的属性。首先,要在Java中创建一个类,需要使用关键字class,然后给类一个名称,并在代码块中定义类的属性和方法。要使用这个类,在其他地方(比如另一个类或主方法)创建一个MyClass的对象,并通过这个对象调用类的方法和访问类的属性。总之,Java类的使用是面向对象编程的核心,要注意类的命名规范,控制访问权限,正确创建对象,并处理可能的异常情况。在这个示例中,我们创建了一个MyClass对象,并通过调用对象的方法来改变属性的值和获取属性的值。
2024-03-04 14:14:58
259
原创 【java中的方法如何定义与使用】
或者无修饰符,用来表示方法的访问级别。返回值类型表示方法执行完后返回的数据类型,可以是任意数据类型(包括基本数据类型和引用数据类型),如果方法不返回任何值可以使用。方法名是一个标识符,用来唯一标识一个方法。参数列表是一组用逗号分隔的参数,每个参数包括参数类型和参数名称。(可选,表示该方法是公有的,可以被其他类访问)、返回值类型、方法名、参数列表以及方法体。方法的使用需要通过方法名加上一对小括号来调用,并可根据方法的定义类型接收返回值。在Java中,方法的定义需要使用关键字。类型的参数并返回它们的和。
2024-02-23 17:19:44
352
原创 【java 变量】
在声明变量时,需要指定变量的类型,并为其分配一定的内存空间。引用数据类型的变量存储的是对象的引用,而不是对象本身,通过引用可以访问和操作对象的属性和方法。// 将变量salary赋值为5000.0。// 声明一个浮点类型的变量名为salary。// 声明一个字符串类型的变量名为name。double if;// 非法的变量名,使用了Java的关键字if。// 将变量name赋值为Tom。// 声明一个整数类型的变量名为age。// 将变量age赋值为18。注意:变量的作用域是指变量在程序中的可见范围。
2024-02-23 17:14:38
511
原创 【java 数据类型有哪些,如何定义】
Java中的数据类型分为两大类:基本数据类型和引用数据类型。可以通过直接赋值或者调用构造方法来初始化对象的值。定义引用数据类型的变量需要使用关键字。
2024-02-23 17:04:51
261
原创 【TS函数定义及参数注解】
使用function关键字,后面跟着函数名,参数列表和函数体。上述代码定义了一个函数add,它接收两个number类型的参数a和b,并返回它们的和。函数的调用使用函数名后面跟着参数列表的方式。// 输出 5上述代码调用了定义好的add函数,并将两个参数2和3传递给它。函数执行后会返回结果5,并将结果赋值给变量result。最后,使用函数输出结果。可以在函数的定义中使用冒号()来指定参数的类型,以及使用箭头(=>)来指定函数的返回类型。
2024-02-01 14:52:25
1486
原创 【JS 于TS的区别与联系】
总结起来,JavaScript和TypeScript都是用于Web开发的语言,JavaScript更灵活,可以在不同的平台上运行,而TypeScript更适合开发大型复杂的应用程序,提供了更好的代码组织和错误检查。由于TypeScript是在JavaScript之上构建的,因此可以轻松地将JavaScript库和框架与TypeScript一起使用。TypeScript是基于JavaScript的超集,也就是说,所有有效的JavaScript代码都是有效的TypeScript代码。
2024-02-01 14:36:56
489
原创 【navigator.userAgent属性】
navigator.userAgent属性判断浏览器环境,判断网页处于手机端还是PC端,判断手机系统类型,是安卓还是IOS
2024-02-01 14:30:14
1056
原创 【移动端vant 地址选择滑动不了】
因为vant中的弹窗组件都会有个默认参数,打开弹窗时禁止页面滚动,这个可以解决滚动穿透的问题,但是像我们这种弹窗中有地址选择的就会出现地址无法选择的bug。H5页面直接在浏览器打开是没有任何问题的,但是内嵌到小程序中就会出现,目前已出现在抖音,快手,小程序中,其他的没有试。这个bug出现得同时具备几大要素:1.内嵌H5,2,地址选择之前有使用过弹窗,设置lock-scroll为false。设置lockScroll为false。1.Overlay 遮罩层。2.Dialog 弹出框。
2023-12-07 16:00:43
1032
原创 【python openpyxl读取excel】
要读取Excel文件,您需要使用Python中的openpyxl库。这是一个流行的库,用于读取,写入和处理Excel文件。这将打开名为“example.xlsx”的Excel文件,并读取第一个工作表的第一个单元格的值。在此示例中,我们将值打印到控制台中。首先,您需要安装openpyxl库。循环来遍历整个工作表,并使用与上面相同的方法读取每个单元格的值。
2023-12-05 11:30:47
641
原创 【python 爬取接口数据】
解析接口返回的数据,可以使用 Python 中的 json 库将返回的 JSON 数据转换为 Python 对象,或者使用 BeautifulSoup 库解析 HTML 数据。需要注意的是,在爬取数据时需要遵守网站的 robots.txt 规则,不要频繁请求接口以防止被封禁 IP。根据网站的接口文档,我们可以确定要访问的接口地址:https://www.example.com/api/products。确定要爬取的接口,并根据接口文档了解其请求参数、请求方式和返回数据格式等信息。
2023-12-04 14:54:56
2569
原创 python控制网页操作
Selenium webdriver是一种自动化测试工具,可以使用它来模拟用户在浏览器上执行的操作。使用Selenium webdriver,可以打开一个浏览器窗口,访问一个网站,填写表单,点击链接或按钮等等。可以使用Python编写Selenium webdriver测试脚本。除此之外,还可以使用Selenium webdriver模拟鼠标、键盘等操作,以及获取网页内容、截图等功能。使用Python控制网页操作可以使用Selenium webdriver。
2023-12-04 11:18:19
1434
原创 【python 常用框架】
首先,你需要安装Python,可以在Python官网下载(https://www.python.org/downloads/)选择适合自己操作系统的版本进行安装。Python 拥有很多框架,用于不同的目的和需求。每个框架都有自己的优点和适用场景,开发者需要根据自己的需求和技能水平选择合适的框架。以上是Flask框架的基本使用方法,我先去玩玩,玩会了我再更新一波。
2023-12-01 15:39:13
483
原创 【Python常用的循环】
Python 中有多种类型的循环语句,通常情况下,使用哪种循环取决于迭代对象的类型和循环的逻辑需要。以上是 Python 中常用的循环语句及其使用方法。需要根据具体情况选择合适的循环语句。
2023-12-01 10:41:38
451
原创 【python函数定义】
Python函数是一段可重用代码块,它接受一些输入(参数),执行一些计算,并返回结果(输出)。需要注意的是,在Python中函数定义块内缩进一定要正确,否则会引发语法错误。
2023-12-01 10:33:40
416
原创 【python定义变量与常量】
在 Python 中,变量是用来存储数据的标识符。Python 变量的命名规则与其他编程语言相同,变量名必须以字母或下划线开头,可以包含字母、数字和下划线,并且对大小写敏感。Python 中没有严格的常量定义方式,但可以通过约定俗成的方式来定义常量,通常使用大写字母来表示常量。在 Python 中,变量的定义非常简单,只需要使用“=”符号将值赋给变量即可。在程序中使用常量时,应该避免修改其值。如果希望防止修改常量的值,可以使用。
2023-12-01 09:59:21
453
原创 【vue 如何解决响应式丢失】
对数组和对象进行不当的修改:对于数组和对象,只有使用 Vue 提供的一些方法(如 push()、pop()、splice()、set() 等)进行修改才会触发响应式更新。使用非响应式对象或属性:在 Vue 中,只有使用 Vue 实例的 data 对象中的属性或使用 Vue.set() 方法添加的属性才是响应式的。在使用 Vue 的异步更新机制(如 nextTick())时,应该避免在回调函数中对数据进行修改,否则可能会出现响应式丢失的问题。对数组和对象只使用 Vue 提供的一些方法进行修改。
2023-11-13 10:42:14
1467
原创 【vue 下载方法】
方法中通过判断浏览器类型,使用不同的下载方式。对于IE浏览器,使用。方法,生成一个不同于原始文件URL的URL,然后调用。方法打开一个新窗口下载;对于其他浏览器,使用。方法用于创建一个下载链接并模拟点击下载,
2023-11-01 10:17:16
401
原创 【HTTP版本,HTTP2和HTTP3区别】
多路复用:HTTP/2中支持多路复用,即在一个TCP连接上同时进行多个请求和响应,而HTTP/3在QUIC协议的基础上进一步改进了多路复用,不仅能够实现多个请求和响应的复用,还支持并行发送多个数据流。而HTTP/3使用了QUIC协议,它能够避免流阻塞的问题。连接建立和关闭:HTTP/2使用TLS握手来建立连接,而HTTP/3中使用QUIC的连接建立和关闭机制,它能够更快地建立和关闭连接。综上所述,HTTP/3相对于HTTP/2来说在连接建立和关闭、多路复用、阻塞等方面进行了改进,提升了传输效率和安全性。
2023-10-09 17:50:28
1394
原创 【VUE3 Teleport】
通过将Teleport组件放置在要移动的DOM树上并指定TeleportTarget目标,可以将DOM节点移动到TeleportTarget的位置。Teleport的源码分析可以参考Vue.js3.0的官方文档中的Teleport部分,该文档提供了Teleport的API和实现原理。该示例演示了如何在实际项目中使用Teleport来动态渲染组件。在这个例子中,我们使用了Teleport和TeleportTarget组件来将“hello world”文本插入到TeleportTarget的位置。
2023-10-09 17:40:50
180
原创 【JS原型链,常见的修改原型对象的方法有哪些?】
JavaScript中每个对象都有一个内部属性[[Prototype]]指向它的原型对象,原型对象也是一个对象,也有自己的原型,这样一直往上追溯形成了原型链。原型链的作用是实现对象之间的继承和属性共享。当我们访问一个对象的属性时,如果这个对象本身没有这个属性,它就会沿着原型链向上查找,直到找到该属性或者到达原型链的末尾。JavaScript中的每个函数都有一个prototype属性,它是一个对象,它的主要作用是存储实例对象共享的属性和方法。
2023-10-08 17:47:12
921
原创 【Vue3.0 实现一个 Modal】
在上面代码中,可以看得到除了使用传统emit的形式使父组件监听,还可通过_hub属性中添加 on-cancel,on-confirm方法实现在API中进行监听。现在有一个场景,点击新增与编辑都弹框出来进行填写,功能上大同小异,可能只是标题内容或者是显示的主体内容稍微不同。这样,下次开发相同界面程序时就可以写更少的代码,意义着更高的开发效率,更少的 Bug和更少的程序体积。在Vue2中,我们可以借助Vue实例以及Vue.extend的方式获得组件实例,然后挂载到body上。
2023-10-07 18:26:13
503
原创 【Pinia和Vuex区别】
类的源码是最为关键的部分,它使用了Vue 3的响应式系统来实现了状态的管理和更新。同时,它还提供了一些方便的API来处理常见的状态管理需求,例如模块化、订阅等。Vuex采用了全局单例模式,通过一个store对象来管理所有的状态,组件通过store对象来获取和修改状态。Pinia则采用了分离模式,即每个组件都拥有自己的store实例,通过在组件中创建store实例来管理状态。Pinia的源码相对较为简单,主要是通过Vue的provide/inject实现store实例的分发和共享。方法来实现数据的传递。
2023-10-05 19:46:13
617
原创 【什么是闭包? 闭包产生的原因? 闭包有哪些表现形式?】
闭包是指一个函数可以访问并操作在其作用域之外的变量的能力。在 JavaScript 中,每当函数被创建时,就会创建一个闭包。// 输出 8在这个例子中,add函数返回一个新的函数,新函数可以访问add函数的参数x。addThree是一个闭包,它存储了add(3)返回的函数以及x的值,因此调用就会返回3 + 5 = 8。闭包在许多 JavaScript 库和框架中都得到了广泛的应用,它们可以用来实现许多高级功能,例如封装私有变量、延迟计算、事件监听和函数柯里化等。
2023-10-05 19:28:41
853
2
原创 【手写 Promise 】
接下来,我们需要定义一个 Promise 构造函数,它需要一个执行器函数作为参数。执行器函数接受两个参数 resolve 和 reject,它们是两个函数,用于修改 Promise 的状态。在构造函数中,我们定义了 Promise 的状态和值。onResolvedCallbacks 和 onRejectedCallbacks 数组用于存储 then 方法中传入的回调函数,当 Promise 的状态改变时,我们需要依次执行这些回调函数。
2023-10-04 20:10:50
150
原创 从您输入网站 URL 到其在屏幕上完成加载的整个过程
如果请求的网页中包含其他资源(例如图片、CSS 或 JavaScript 文件),浏览器会向服务器发出额外的请求以获得这些资源。用户输入网站 URL(例如,http://www.example.com)并按下“Enter”键。整个过程的时间取决于多种因素,例如用户的互联网连接速度、服务器性能和网页的大小和复杂性。网络协议根据 URL 中的信息确定要访问的服务器 IP 地址。服务器收到请求,并将所请求的网页返回给用户的浏览器。浏览器将这些资源组合起来,以完成网页的渲染。服务器返回每个请求的资源。
2023-10-04 20:05:43
317
原创 【浏览器缓存机制】
协商缓存是指在缓存过期后,浏览器再次请求相同的资源时,会向服务器发送请求,并获取该资源的最新修改时间或唯一标识。总的来说,强缓存是直接使用浏览器本地缓存,不需要与服务器进行通信,而协商缓存需要先与服务器进行一次通信,判断资源是否发生了变化,再决定是否使用本地缓存。强缓存是指在缓存有效期内,浏览器再次请求相同的资源时,直接从本地缓存中读取,不需要向服务器发送请求。协商缓存和强缓存都是浏览器缓存机制的一部分,但它们的实现方式和缓存过程有所不同。常见的浏览器缓存机制有两种:强缓存和协商缓存。
2023-10-04 19:59:31
144
原创 【vue 首屏加载优化】
使用 Vue SSR(服务端渲染):SSR 可以将 Vue 组件在服务端直接渲染为 HTML,然后再将渲染结果发送到客户端,这样可以大大缩短首屏加载时间。Vue 首屏加载优化指的是通过一系列的技术手段,尽可能地缩短首屏(即页面中可见的部分)的加载时间,提高用户体验。配置 webpack 的代码分割:将代码按照不同的功能或页面进行分割,提高首屏加载速度。使用懒加载:将页面中的图片、视频等资源分割成多个部分,只有在用户需要访问的时候才加载。使用异步组件:将页面中的某些组件异步加载,可以降低首屏加载所需的时间。
2023-10-04 18:56:59
523
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人