自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 什么是栈?

而当函数执行完毕后,它的执行上下文会从栈中弹出,返回到调用该函数的位置继续执行。我们可以创建一个栈实例,并使用 `push` 方法将元素添加到栈中,使用 `pop` 方法从栈中弹出元素,使用 `peek` 方法获取栈顶元素,使用 `isEmpty` 方法判断栈是否为空,使用 `size` 方法获取栈中元素个数。在上面的代码中,`Stack` 类表示一个栈,使用数组来存储栈中的元素。它提供了一些常用的操作方法,如 `push`、`pop`、`peek`、`isEmpty` 和 `size` 等。

2023-11-17 11:54:24 145

原创 web前端开发数据结构与算法

了解这些数据结构和算法的特点、使用场景和性能特性,可以帮助前端开发人员设计和实现更高效、可扩展和可维护的代码。图算法:例如广度优先搜索(BFS)和深度优先搜索(DFS)等,用于在图中查找路径或解决其他相关问题。链表(Linked List):由节点组成的数据结构,每个节点包含数据和指向下一个节点的指针。队列(Queue):先进先出(FIFO)的数据结构,允许在队尾插入元素,在队头删除元素。图(Graph):由节点和边组成的非线性数据结构,用于表示网络和关系等复杂的结构。

2023-11-17 11:41:00 171

原创 经典哲理收集

群处守嘴,独处守心。修己以清心为要,涉世以慎言为先。

2023-11-04 09:47:01 168

原创 浏览器原生的JavaScript API-汇总

`navigator.serviceWorker.register('payment-handler.js', { type: 'payment-handler' })`:注册支付处理程序。- `var db = openDatabase('mydb', '1.0', 'My database', 2 * 1024 * 1024)`:打开数据库。- `navigator.getBattery().then(function(battery) {...})`:获取设备电池对象。

2023-10-13 17:41:59 545

原创 js使用第三方服务,获取手机上唯一编码实例

要使用第三方服务来获取手机的唯一编码,可以使用像AppsFlyer或Google AdID这样的移动分析平台。如果您想在Web网站中获取设备的唯一编码,则无法直接使用第三方服务。请注意,这种方式仅仅提供了基于浏览器和本地存储的设备级别的唯一标识,而不是全局唯一。2. 根据您选择的平台(iOS或Android),下载适当的AppsFlyer SDK,并将其添加到您的应用程序中。请注意,这种方式仅适用于移动应用程序,并且需要您在应用程序中安装和配置相应的SDK。1. 注册AppsFlyer帐户并创建应用程序。

2023-10-13 10:52:04 618

原创 JS 获取div中的子节点中的所有的节点,并添加一个class

要获取div中的所有子节点并添加一个class,可以使用JavaScript的DOM操作。属性获取所有子节点。然后,我们遍历所有子节点,并仅处理元素节点(即标签节点)。方法来给每个元素节点添加一个class,这里我们给它添加了名为。上述代码中,我们首先获取目标div节点,并使用。这样,所有子节点都会被添加上这个class。

2023-10-13 10:29:03 583

原创 Vue2/vue3 添加全局/局部自定义指令实例详解

全局自定义指令可以在整个应用中的任何组件中使用。Vue2版本中,可以通过在Vue实例上使用`Vue.directive()`方法来注册全局自定义指令。// 全局注册一个自定义指令// 指令的定义// 指令绑定时的逻辑},...});Vue3版本中,可以通过在应用的入口文件中使用`app.directive()`方法来注册全局自定义指令。// main.js// 注册全局自定义指令// 指令的定义// 指令绑定时的逻辑},...});

2023-09-09 17:39:15 635

原创 vue 在图片上加水印

在上面的例子中,`your_image_url` 是需要添加水印的图片的URL,`watermarkText` 是水印文本,可以根据需要进行修改。在Vue中给图片添加水印可以通过自定义指令来实现。当页面渲染完成后,自定义指令会将水印绘制在图片上,并替换原始图片,实现了给图片添加水印的效果。

2023-09-09 17:34:46 1370 2

原创 ES6-ES12所有特性详解

city;空位合并运算符: 提供了一种简洁的方式来提供默认值,当属性值为 null 或 undefined 时使用。.name???

2023-09-08 17:09:26 164

原创 TypeScript 的详解

总的来说,TypeScript是一门功能强大且可扩展的编程语言,它为JavaScript开发者提供了更好的工具和语言特性,使得开发可靠、可维护的应用程序变得更加容易。TypeScript扩展了JavaScript,提供了静态类型检查、面向对象编程的特性和更强大的工具支持,使得开发者能够更轻松、更高效地构建可维护和可扩展的应用程序。1. 静态类型检查:TypeScript引入了静态类型检查,可以在编译时捕获和修复常见的错误,例如类型不匹配、未定义的变量等。

2023-09-01 15:27:37 82

原创 JS 对JSON数组的增删改查

deleteData`函数用于删除JSON数组中的数据。函数使用`findIndex`方法来查找要删除的数据在数组中的索引,然后使用`splice`方法将其从数组中移除。函数使用`findIndex`方法来查找旧数据在数组中的索引,然后将其替换为新数据。我们可以将需要添加的数据作为参数传递给该函数,并使用`push`方法将数据添加到数组中。在这个示例中,我们首先创建了一个空的JSON数组`data`。`queryData`函数用于查询JSON数组中的数据,并将其打印出来。

2023-09-01 15:14:54 1064

原创 什么是异步,同步,setTimeout,Promise,async

在Promise对象的回调函数中,使用setTimeout模拟异步操作,2秒钟后调用resolve方法,表示操作成功,并传递数据给then方法。这段代码中,setTimeout是一个异步操作,代码会继续往下执行,不会等待2秒钟,所以先输出"Start",然后输出"End"。是指代码不按照顺序执行,而是先执行后面的代码,同时继续执行当前代码后面的代码。异步代码的执行是非阻塞的,即不需要等待当前代码执行完成,就可以继续执行后面的代码。同步代码的执行是阻塞的,即只有当前代码执行完成后,才能执行下一行代码。

2023-08-31 15:42:15 338

原创 js 数组去重的几种方法

以上是几种常见的数组去重方法。根据具体情况选择合适的方法进行数组去重操作。

2023-08-31 15:32:11 621

原创 Vue组件间通信的8种方式有哪些?

在这个示例中,我们使用`mapState`辅助函数来将Vuex Store中的`message`状态映射到组件的`message`计算属性中,并使用`mapMutations`辅助函数将Vuex Store中的`updateMessage` mutation映射到组件的`updateMessage`方法中。在组件B中,我们也导入Event Bus,并在`created`生命周期钩子中使用`Eventbus.$on`来监听`message`事件,并更新`receivedMessage`数据。

2023-08-31 15:06:25 438

原创 VUE 父子组件、兄弟组件 之间通信

在 Vue.js 中,父子组件之间的通信可以通过 props 和事件来实现,而兄弟组件之间的通信可以通过一个共享的父组件或使用 Vue 实例作为事件总线来实现。如果两个兄弟组件没有直接的父子关系,可以通过一个共享的父组件或使用 Vue 实例作为事件总线来管理共享的状态,从而实现兄弟组件之间的通信。在父组件中使用 props 属性给子组件传递数据,子组件通过 props 接收数据。通过以上方法,你可以在 Vue.js 中实现父子组件和兄弟组件之间的通信。

2023-08-31 11:55:58 44

原创 JS 的数据类型有哪些?

注意:`typeof null` 的结果是 `"object"`,这是因为在 JavaScript 的早期实现中将 `null` 错误地认为是一个对象。

2023-08-31 09:40:37 46

原创 Vue3.2版本组件通讯

1. Props:通过props属性,父组件可以向子组件传递数据。子组件通过在props中定义需要接收的属性,然后可以在模板中使用这些属性。2. 事件:通过自定义事件,子组件可以向父组件发送消息。子组件通过使用$emit方法触发事件,父组件通过在子组件上监听事件来接收消息。3. provide/inject:通过provide和inject可以实现父组件向子组件(孙子组件)传递数据,跨多层级组件通讯。这是Vue3.2版本中组件通讯的一些常用方法,你可以根据具体需求选择适合的方式来实现组件之间的通讯。

2023-08-30 18:16:21 77

原创 vue 环境变量配置和使用环境变量方式

Vue的环境变量配置提供了一种在不同环境中使用不同配置的方式,以便在开发、测试和生产等不同场景下使用不同的配置。

2023-08-30 16:57:53 931 4

原创 谷歌上架APP,如何避免关联?

需要注意的是,虽然可以采取上述措施来减少被关联的风险,但谷歌有自己的算法和规则来判断APP之间的关联性,无法完全保证不会被关联。因此,在开发过程中,还是需要遵守谷歌的开发者规范和政策,确保应用的合规性和质量,以提高上架成功的机会。每个APP的资源(如图像、音频、视频等)应该在各自的项目中处理,不应该在不同的APP之间共享或复用。竞争者举报:竞争对手可能会举报您的APP,以试图排除竞争对手或降低您的APP在谷歌商店的竞争力。提供清晰和准确的应用描述,确保用户了解您的APP的功能、用途和使用方式。

2023-08-30 12:32:28 317 2

原创 安装包如何上架谷歌

请注意,谷歌的测试和审查过程可能需要一些时间,具体时间取决于应用的复杂程度和谷歌审核队列的情况。2. 选择已创建的应用:如果已经创建了应用,可以在开发者控制台的左侧导航栏中找到,并点击进入应用的管理页面。谷歌在应用上架前会对应用进行严格的测试和审查,以确保应用的功能、性能、兼容性等方面达到一定的标准,并确保应用内容符合谷歌的政策和规定。请注意,谷歌的审核过程可能需要一些时间,具体时间取决于应用的复杂程度和谷歌审核队列的情况。始终根据谷歌的最新文档和指南进行操作,并确保您的应用符合谷歌的政策和规定。

2023-08-28 17:18:10 270

原创 JS json数组排序算法的实例

使用`Array.prototype.sort()`方法,我们可以传递一个比较函数作为参数,该函数将比较两个数组元素,并返回一个负数、0或正数来表示它们的相对顺序。在比较函数中,我们根据`age`属性来比较两个对象,如果`a.age`小于`b.age`,则返回负数,如果`a.age`等于`b.age`,则返回0,如果`a.age`大于`b.age`,则返回正数。在以上示例中,我们有一个JSON数组`jsonArray`,其中包含了一些对象,每个对象都有一个`name`和`age`属性。

2023-08-28 16:14:30 149

原创 js 分治算法

在每一步中,我们将数组分成两半,然后分别计算左半部分和右半部分的最大值。然后将左半部分的最大值和右半部分的最大值进行比较,取其中较大的一个作为整个数组的最大值。在以上示例中,我们使用分治算法来查找数组中的最大值。算法的思想是将问题分解成更小的子问题,然后递归地解决这些子问题,并将它们的结果合并起来得到最终的解。通过不断地分解和合并,最终我们可以找到整个数组的最大值。在本例中,数组为[4, 9, 2, 7, 5, 1, 6],使用分治算法找到的最大值为9。

2023-08-28 15:31:41 45

原创 js 回溯算法(八皇后问题、0-1背包问题)

通过递归的方式尝试所有可能的放置方式,对于每个物品,可以选择放入背包或者不放入背包。在递归过程中,我们记录当前的重量和价值,并更新最大的价值。在以上示例中,我们使用回溯算法解决八皇后问题。如果满足规则,继续放置下一行的皇后,直到所有皇后都放置完毕,此时找到了一个解。通过不断尝试不同的放置方法,我们可以找到所有的解。它采用深度优先搜索的策略,在搜索过程中通过递归和回溯来探索所有的解,并找到满足问题要求的解。在本例中,背包的容量为10,物品的重量和价值分别为[2, 3, 4, 5]和[3, 4, 5, 6]。

2023-08-28 15:28:58 293

原创 js 贪心算法(最小生成树问题、霍夫曼编码问题的)

以上示例中,我们以字符 `'a'`、`'b'`、`'c'` 和 `'d'` 的频率为 `{ value: "a", freq: 3 }`、`{ value: "b", freq: 6 }`、`{ value: "c", freq: 2 }` 和 `{ value: "d", freq: 1 }`,构建了霍夫曼树,并生成了每个字符对应的霍夫曼编码。在构建霍夫曼编码树的过程中,我们每次从队列中取出频率最小的两个节点,将它们合并为一个新的父节点,并将父节点重新插入队列中,直到队列中只剩下一个节点,即为根节点。

2023-08-28 15:20:12 79

原创 js 动态规划算法

以上示例解决了一个背包问题,其中有三个物品,每个物品有对应的重量和价值。我们需要在给定的背包容量下,选择物品使得总价值最大化。动态规划中使用了一个二维数组 `dp` 来保存状态,其中 `dp[i][j]` 表示在前 `i` 个物品中,背包容量为 `j` 的情况下,可以获得的最大价值。通过填充这个二维数组,我们可以得到最终的最大价值。动态规划(Dynamic Programming,简称DP)是一种常用的解决最优化问题的算法思想。它通常用于解决具有重叠子问题性质和最优子结构性质的问题。

2023-08-28 15:10:04 47

原创 JS 中几种常见的字符串匹配算法

Rabin-Karp 算法使用了哈希函数来计算模式串和文本串的哈希值,然后在文本串上滑动模式串进行匹配。如果哈希值匹配,则进一步检查模式串和文本串是否完全匹配。这样可以减少字符串比较的次数,提高算法的效率。Rabin-Karp 算法的时间复杂度可以达到 O(n+m),其中 n 是文本长度,m 是模式长度。

2023-08-28 15:08:31 1706

原创 JS 几种常见的图算法

这些是一些常见的图算法的 JavaScript 示例。图算法在解决网络连接、路径搜索、最短路径等问题上非常有用。如果还有其他问题,请随时提问。

2023-08-28 14:52:40 44

原创 js 常见几种查找算法实例

这些是一些常见的查找算法的实例。根据具体场景和需求,选择合适的查找算法可以提高查找效率。如果还有其他问题,请随时提问。

2023-08-28 14:49:19 75

原创 js 几种常见的排序算法的实例

这些只是排序算法的一小部分实例。根据不同的需求和数据特点,选择合适的排序算法来提高效率和性能非常重要。希望这些实例对你有帮助!如果还有其他问题,请随时提问。

2023-08-28 14:45:44 23

原创 程序员常见的算法有哪些?

图算法:如深度优先搜索算法(DFS)、广度优先搜索算法(BFS)、最短路径算法(Dijkstra算法、Floyd-Warshall算法)、最小生成树算法(Prim算法、Kruskal算法)等,用于解决图相关的问题。字符串匹配算法:如暴力匹配算法、Knuth-Morris-Pratt算法、Boyer-Moore算法、Rabin-Karp算法等,用于在字符串中查找指定的子串。分治算法:将问题划分为多个相同或类似的子问题,递归地解决子问题,然后合并子问题的解,如归并排序、快速排序等。希望这些信息对你有帮助!

2023-08-28 14:39:34 29

原创 Vue2中使用watch选项来观察数据的变化

在上面的示例中,我们定义了一个`watch`选项,它包含一个函数,该函数会在`count`数据发生变化时被调用。每当我们点击按钮增加计数器的时候,`count`的值会发生变化,并触发`watch`选项中定义的函数。总结一下,通过在`watch`选项中定义一个函数或对象,我们可以观察数据的变化并执行相应的操作。在上面的例子中,我们将`handler`定义为一个函数来处理数据的变化,同时使用`immediate`选项来指定在初始化时是否应立即触发该`watch`。希望这个例子对你有帮助!

2023-08-28 14:37:47 156

原创 CSS source map-开发者调试CSS的工具

而CSS source maps则可以将压缩和合并后的CSS代码与原始的未压缩、未合并的CSS代码建立映射关系,使得在浏览器中调试CSS时,能够直接查看和修改原始的CSS代码。在上述示例中,我们通过配置`css.sourceMap`为`true`来启用CSS source maps。这将告诉Vue CLI在构建项目时生成CSS source maps文件。通过配置Vue项目的vue.config.js文件,我们可以方便地启用或禁用CSS source maps,以便于在开发过程中进行CSS调试和问题定位。

2023-08-28 10:23:16 222

原创 vue 项目中vue.config所有配置详解

publicPath配置项用于指定构建打包后的静态资源的路径,默认值为'/'。在部署到服务器时,如果项目的静态资源(如CSS、JavaScript、图片等)的路径不是根路径,可以通过设置publicPath来指定正确的路径。assetsDir配置项用于指定静态资源(如CSS、JavaScript、图片等)的目录,默认值为空字符串'',表示静态资源将会输出在outputDir根目录中。在Vue项目中,可以使用vue.config.js文件来配置一些Vue项目的构建和开发配置。

2023-08-26 18:26:23 3885 1

原创 在Vue中,computed对象是Vue实例的一个选项,它用于定义计算属性

在上述例子中,我们定义了一个计算属性fullName,它通过将firstName和lastName拼接起来来计算fullName的值。计算属性是基于响应式数据进行计算,当计算属性依赖的响应式数据发生变化时,计算属性会自动重新计算,并缓存计算结果,只有在计算属性依赖的响应式数据发生变化时,才会重新计算。computed对象可以包含多个计算属性,并且每个计算属性都是一个函数,用来计算属性的值。计算属性可以像普通的属性一样使用,通过访问计算属性的方式来获取计算属性的值。

2023-08-26 12:05:58 161

原创 在Vue中使用全局的路由守卫可以对路由进行统一的权限校验、拦截和处理

5. 至此,全局的路由守卫已经设置完成。你可以根据具体需求,在`beforeEach()`和`afterEach()`的回调函数中编写自己的逻辑。1. 在`router/index.js`文件中,引入Vue和Vue Router,并创建一个新的路由实例。2. 设置全局的前置守卫`beforeEach()`,用于在每次路由切换前执行特定的逻辑。3. 设置全局的后置守卫`afterEach()`,用于在每次路由切换后执行特定的逻辑。这就是在Vue中使用全局的路由守卫的详细步骤。

2023-08-26 11:38:06 225

原创 在Vue中使用NProgress可以实现页面加载时的进度条效果

注意:在Vue3中,NProgress作为Vue3插件的使用方式稍有不同,但原理是一样的。当然,你也可以根据自己的需求,进一步自定义NProgress的样式和行为。4. 在Vue的根组件中,使用``来渲染路由组件。3. 创建一个全局的路由守卫,在路由跳转前启动进度条,在路由跳转后结束进度条。通过以上步骤,我们就可以在Vue3中使用NProgress实现进度条效果了。2. 在main.js文件中,引入NProgress和其对应的样式文件。

2023-08-26 11:19:58 592

原创 CDN 如何使用

CDN(内容分发网络)是一种用于加速网站内容传输的技术,可以将静态资源(如图片、CSS和JavaScript文件)缓存到离用户更近的服务器上,从而提供更快的加载速度和更好的用户体验。这可以通过将域名的CNAME记录或将CDN提供商提供的特定记录(如ALIAS或ANAME记录)设置为你的域名的DNS记录来完成。选择CDN提供商:首先,你需要选择一个可靠的CDN提供商,如阿里云CDN、腾讯云CDN、Cloudflare等。检查网站的加载速度和性能,同时使用CDN提供商的监控工具来监测CDN的性能和可用性。

2023-08-16 16:57:43 1198

原创 【ES6基础】Array的各种对象属性详解

Array.prototype.splice():删除、替换或插入元素到数组中,并返回被删除的元素或插入的新元素。Array.prototype.unshift():将一个或多个元素添加到数组的开头,并返回新数组的长度。Array.prototype.filter():根据指定条件筛选数组中的元素,返回符合条件的新数组。Array.prototype.push():将一个或多个元素添加到数组的末尾,并返回新数组的长度。Array.prototype.pop():删除数组的最后一个元素,并返回被删除的元素。

2023-08-10 12:03:35 277

原创 es6语法中的Promise和异步编程详解

在上面的示例中,使用了Promise构造函数创建一个Promise对象,并在异步操作完成时调用resolve方法或在异步操作失败时调用reject方法。通过调用`.then()`方法可以链式执行成功的操作,通过调用`.catch()`方法可以链式执行失败的操作。传统的方式是使用回调函数来处理异步操作的结果或执行下一步的操作。而在异步编程中,任务可以同时或按需执行,而不需要等待前一个任务完成。通过Promise,我们可以更清晰地处理异步操作的结果,避免了回调地狱的问题,提高了代码的可读性和可维护性。

2023-08-09 18:35:35 29

原创 ES6语法中的类和继承详解

在上面的示例中,`Student` 类继承了 `Person` 类,通过 `extends` 关键字声明。`Student` 类新增了一个 `study` 方法,并在其构造函数中调用了父类的构造函数。在上面的示例中,`Person` 类有两个属性 `name` 和 `age`,还有一个 `sayHello` 方法。新的类(子类)可以继承来自现有类(父类)的属性和方法,并可以添加自己的属性和方法。通过继承,`Student` 类获得了 `Person` 类的属性和方法,并可以添加和修改特定于自身的行为。

2023-08-09 18:33:11 39

空空如也

空空如也

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

TA关注的人

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