自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

redrun博客

redrun的博客网站

  • 博客(77)
  • 问答 (2)
  • 收藏
  • 关注

原创 计算中值时的安全性:mid = (left + right) / 2 与 mid = left + (right - left) / 2 的区别

然而,这种常见的计算方式可能会导致问题,特别是在处理大数字时。最近在使用二分算法的时候,发现取中间值有两种方案,并且两种方案带来的数据安全性是不同的,于是有了这篇博客。让我们深入了解这两种计算方式的区别及其背后的原因。两个变量相加,然后除以 2,得到它们的平均值,也就是中点。这意味着程序可能会计算出错误的中点值,从而影响后续的计算。这显然超出了最大整数值,导致溢出,最终的结果是不准确的。是最常见的写法,它在一些情况下可能会导致整数溢出。的结果可能会超出数据类型的范围,导致。的差值,再将其除以 2,并加上。

2025-01-23 09:06:14 378

原创 协程分析:Python生成器 vs JavaScript生成器(生产者-消费者模式的对比分析)

生成器是一种特殊类型的迭代器,它允许函数在执行过程中暂停,并在稍后的某个时刻继续执行。这种机制可以节省内存,因为生成器不会一次性将所有的值都加载到内存中,而是惰性地生成数据。通常,生成器使用yield关键字来暂停函数并返回值,直到下次请求时恢复执行。生产者-消费者模式通常涉及两个主要角色:生产者和消费者。生产者负责生成数据或资源,并将其提供给消费者;消费者则使用或处理这些数据。为了保证数据的顺序和有效性,通常会有一个缓冲区或队列来存储生产的数据,消费者从中提取数据进行处理。

2025-01-17 16:13:55 873

原创 在 JavaScript 中处理中文字符串的 Base64 编码与解码

在处理中文字符串的 Base64 编码与解码时,关键在于如何正确地将字符转换为字节数据。通过手动处理每个字节或使用现代的和API,我们可以确保中文字符能够正确地进行 Base64 编码与解码。手动实现:适用于那些需要详细控制编码过程的场景。你可以深入理解 Base64 编码的每个细节,并根据需要进行优化。使用 API:对于大多数情况,和API 提供了一种更简洁、直接的方式来处理编码和解码,减少了手动操作的复杂性。

2025-01-17 09:44:36 936

原创 理解 Base64 编码原理及其 JavaScript 实现

Base64 编码是一种将二进制数据转换为可打印字符的编码方式。它将每三个字节(24 位)的二进制数据转换为四个字符,每个字符由64个字符集合中的一个表示。这使得数据可以通过文本协议传输(如电子邮件、HTTP 请求等),而不会出现二进制数据引起的字符编码问题。Base64 编码是一种常见的数据编码方式,广泛用于数据传输,尤其是在 HTTP 请求、电子邮件等场景中。Base64 将每 3 个字节的二进制数据编码为 4 个字符,编码后的数据仅包含可打印字符,便于传输。

2025-01-17 09:32:01 751

原创 理解 JavaScript 中 Date 对象的比较机制

在 JavaScript 中,日期和时间的处理往往是开发中不可避免的部分。是 ISO 8601 格式中的一个分隔符,用于将日期部分和时间部分分开。方法,将它们转换为时间戳(即从 Unix 纪元到指定日期的毫秒数),然后对两个时间戳进行比较。对象用于表示时间和日期。它可以创建一个包含日期和时间的对象,支持操作日期和时间。这个日期格式遵循 ISO 8601 标准,可以表示精确到毫秒的日期和时间。返回的是一个完整的、易于理解的日期时间字符串,表示该日期对象的详细信息。起,到该日期对象表示的时间的毫秒数。

2025-01-04 09:57:19 944

原创 使用 HTML5 Canvas 实现动态蜈蚣动画

我们将通过 HTML 和 JavaScript 创建一个动态蜈蚣。蜈蚣由多个节段组成,每个节段看起来像一个小圆形,并且每个节段上都附带有“脚”。蜈蚣的头部会在画布上随机移动。

2024-12-23 10:33:23 539

原创 前端使用xlsx.js实现 Excel 文件的导入与导出功能

在现代的 Web 开发中,处理文件上传和导出功能已经变得越来越常见,尤其是 Excel 文件的导入与导出。为了帮助你快速实现这一功能,本文将通过一个简单的 Vue 示例,演示如何在 Vue 中集成 Excel 文件的导入与导出功能。XLSX.js 是一个强大的 JavaScript 库,可以在浏览器中解析和生成 Excel 文件。属性用来指定如何处理工作表的第一行(通常是列标题)以及如何映射到 JSON 对象的属性名。在下面的代码中,我们展示了如何在 Vue 组件中实现 Excel 文件的导入和导出。

2024-12-17 08:58:58 1635

原创 Vue 2 vs Vue 3 中 Vuex 使用方式的差异与演变

Vue 2 和 Vue 3 中的 Vuex 使用方法差异:Vue 3 引入了 Composition API,因此推荐使用useStore()钩子来访问 Vuex 状态,而不是像 Vue 2 中那样使用。Vue 3 中的 Vuex 使用方式更加简洁、灵活,并且与 TypeScript 的支持更加紧密。vue3同学使用pinia是更好的选择状态管理的变化:Vue 3 的 Vuex 使用方式更加符合现代前端开发的趋势,使得状态管理更加模块化、可组合,增强了代码的可维护性和可读性。

2024-12-12 16:40:47 933

原创 Vue 2 与 Vue 3 子组件属性透传与inheritAttrs对比与实践

子组件属性透传,简单来说,就是将父组件传递给子组件的属性,继续传递给子组件内部的某些元素或更深层的子组件。这对于保持组件的灵活性和解耦非常重要。举个简单的例子,当我们在父组件传递了classstyle或其他自定义属性时,如何将这些属性透传到子组件的 DOM 元素或更深层的组件?无论是在 Vue 2 还是 Vue 3 中,属性透传是一个常见且重要的功能,尤其在开发可复用的组件时。通过,开发者可以更细致地控制父组件属性的传递和绑定,避免默认的属性透传行为可能带来的问题。

2024-12-12 16:26:22 1011

原创 在 Vite 和 Webpack 中处理 SVG 图标:vite-plugin-svg-icons 与 svg-sprite-loader 原理比较

无论是在 Vite 还是 Webpack 中,处理 SVG 图标的关键是选择合适的工具和插件来高效地管理这些资源。在开发中,动态加载和热更新能够提高效率;然而,在实际项目中,通常需要将多个 SVG 图标合并成一个图标集,这样可以避免重复请求多个 SVG 文件,提高页面加载速度。是一个专门为 Vite 构建工具设计的插件,它可以帮助开发者高效地管理和打包 SVG 图标,尤其适合处理大量的图标资源。在 Vite 和 Webpack 的构建过程中,我们可以使用不同的插件来优化 SVG 图标的管理和加载方式。

2024-12-07 16:33:16 961

原创 手把手架构Express划分Router、Controller、Service和Middleware

通过将 Express 应用中的功能按路由、控制器、服务和中间件进行模块化,我们实现了一个清晰的架构。每一层都有明确的职责,互相之间的耦合度较低,方便后期的扩展和维护。路由(Router):负责定义路径和 HTTP 方法。(马路)控制器(Controller):负责处理请求和响应,调用服务层的业务逻辑。(交警)服务(Service):封装了核心业务逻辑,负责与数据库或外部 API 的交互。(司机)中间件(Middleware):提供额外的功能,如身份验证、请求日志等。(红绿灯路障)

2024-11-18 16:42:34 688

原创 什么是Webhook?工作原理?如何实现?缺点?

在使用钉钉机器人配置Stream推送 - 钉钉开放平台,qq机器人(微信没有机器人),企业微信机器人、飞书机器人、GitHub WebHook、腾讯问卷这些应用时,这些应用都提供了Webhook,它允许系统之间在事件发生时主动传递信息,而无需持续轮询。有的人一开始可能很困惑,什么是Webhook?如何使用?

2024-11-16 16:44:17 2171

原创 使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan

在 Ant Design Vue 的Table组件中,我们可以使用来对某列的渲染进行自定义。我们将使用rowSpan来控制每个单元格的合并效果。表头只支持列合并,使用 column 里的 colSpan 进行设置。表格支持行/列合并,使用 render 里的单元格属性 colSpan 或者 rowSpan 设值为0时,设置的表格不会渲染。使用自定义渲染函数,结合数据可以实现单元格合并功能。

2024-11-15 15:54:18 1408 1

原创 提升前端性能:如何优化多个异步请求的执行效率Promise.all()

在前端开发中,当面对多个异步请求时,如何有效地管理这些请求以减少等待时间,显得尤为重要。通过并行化请求分组执行和缓存已请求的数据,我们可以显著提升应用的响应速度和用户体验。

2024-11-14 15:31:03 791

原创 Vue 项目打包后环境变量丢失问题(清除缓存),区分.env和.env.*文件

通过上述方法,我们可以有效地解决 Vue 项目在打包后,环境变量丢失的问题。确保.env文件正确配置。清除缓存并重新打包。使用检查环境变量是否正常加载。使用 webpack明确注入环境变量。确保部署环境配置了正确的环境变量。

2024-11-14 09:13:22 1786

原创 写代码太枯燥了?使用Express 实现的用户IP和本机IP 显示与名言提示功能

根据用户的 IP 地址随机展示一条励志名言。搭建基本的 Web 服务器,还融合了对 JSON 数据文件的导入和利用。中间件会将请求体中的 JSON 数据解析为 JavaScript 对象,方便后续的处理。在现代的 Web 应用中,许多前端框架(例如 React、Vue.js)会使用。它主要用来解析客户端通过 HTML 表单提交的数据,通常是键值对的形式。当客户端(例如浏览器或移动设备)向服务器发送包含 JSON 数据的请求时,我这个人走得很慢,但是我从不后退。,你将看到包含 IP 地址和随机名言的响应。

2024-11-13 16:00:58 716

原创 如何在 JavaScript 事件中区分页面关闭和页面刷新?

在 Web 开发中,有时你需要监听页面关闭或刷新事件,并根据情况执行不同的操作。可以监听页面关闭或刷新事件,但无法区分这两者。通过设置一个标记,可以判断页面是否刷新。通过检查,可以确定页面是否被刷新。虽然事件能处理很多场景,但如果你需要更精确的控制,可以结合或来判断页面是否刷新。记住需要进行适当的兼容性测试。

2024-11-11 11:37:26 1964

原创 理解 JavaScript 事件监听的各种类型、使用方法与优化策略

在 JavaScript 中,除了浏览器内置的标准事件外,还可以创建和使用自定义事件。自定义事件允许开发者根据特定需求触发和监听事件,从而实现模块间的解耦和更复杂的交互逻辑。自定义事件非常适合用于构建可扩展和灵活的应用,特别是在模块化开发或前端框架中。创建和触发自定义事件要创建和触发自定义事件,可以使用构造函数。它允许我们定义一个新的事件类型,并可选地传递额外的数据(通过detail属性)。创建自定义事件// 创建一个自定义事件' } // 传递的数据});:事件的名称。detail。

2024-11-11 11:07:18 645

原创 JavaScript Cookie 与 服务器生成的 Cookie 的区别与应用

Cookie 是浏览器用于存储信息的小型数据片段。当用户访问网站时,服务器可以在浏览器中设置 Cookie,浏览器也会在每次向服务器发送请求时自动携带这些 Cookie。通过 Cookie,网站可以识别用户、保持登录状态,甚至存储用户的偏好设置。JavaScript Cookie 与服务器生成的 Cookie 在工作方式、存储和访问安全性上有着显著的区别。JavaScript Cookie 数据不会自动随着每次 HTTP 请求一起发送给服务器;

2024-11-08 17:20:14 1099

原创 Vue Router4 路由守卫优化:放弃next(),通过返回对象简化代码

通过返回路由对象来控制 Vue Router 的跳转,不仅能让代码更简洁,还能提高可读性和维护性。特别是在涉及到登录验证、权限管理、动态路由等复杂逻辑时,这种优化方法能够使代码更加清晰,并减少不必要的冗余部分。希望这篇文章能帮助你优化 Vue 项目中的路由守卫逻辑,让你的代码更加高效与易懂。

2024-11-05 14:19:18 444

原创 理解前端打包工具树摇优化:如何通过import,export静态分析移除未使用的代码

树摇优化是一种通过静态分析来识别和移除未使用的代码的技术。其核心思想是,打包工具在打包过程中,会分析代码的依赖关系,并仅保留实际使用的模块和功能。这样可以显著减少最终输出的文件体积,提高应用的加载速度。树摇优化通过静态分析技术,有效地识别并移除未使用的代码,从而优化了打包后的文件体积。这不仅提高了应用的加载速度,还改善了用户体验。在现代前端开发中,合理使用树摇优化是提升性能的重要手段。希望本文能帮助你理解树摇优化的原理与实现,进而在项目中有效应用这一技术,提升代码质量和应用性能。

2024-11-02 15:59:05 500 2

原创 element-plus Sass废弃警告 Deprecation Warning: As of Dart Sass 2.0.0, !global assignments

Deprecation Warning: As of Dart Sass 2.0.0, !global assignments won’t be able to declare new variables.Recommendation: add at the stylesheet root.这俩老语法不支持Deprecation Warning: As of Dart Sass 2.0.0, !global assignments won’t be able to declare new variab

2024-11-02 15:45:44 1677 2

原创 vue3项目history模式部署404处理,使用 historyApiFallback 中间件支持单页面应用路由

使用简化路由管理:不需要为每个路由设置服务器端处理,前端可以完全控制路由。提高用户体验:用户在地址栏中看到的 URL 与他们访问的内容一致,避免了 404 错误页面的困扰。适配 SPA:非常适合使用 React、Vue 或 Angular 等框架构建的单页面应用。

2024-11-02 10:53:39 1617 1

原创 理解 CSS 中的绝对定位与 Flex 布局混用

在现代网页设计中,CSS 布局技术如flex和绝对定位被广泛使用。然而,这两者结合使用时,可能会导致一些意想不到的布局问题。本文将探讨如何正确使用绝对定位元素,避免它们受到flex布局的影响。如图,refresh按钮设置了absolute定位,但是被父级元素flex影响上下居中了。

2024-10-30 17:49:07 811

原创 vue使用 Highlight.js 实现可编辑的代码高亮功能(js,python,php等)

Highlight.js 是一个用于代码高亮的 JavaScript 库,支持多种编程语言。它可以自动检测代码的语言并应用相应的样式,帮助用户更好地阅读和理解代码。通过使用 Highlight.js 和 Vue,我们可以轻松实现一个可编辑的代码高亮功能。这种实现方式不仅提升了代码的可读性,也允许用户在编辑过程中实时查看代码效果。在实际应用中,可以根据需要扩展更多功能,如保存代码、选择语言等。

2024-10-28 15:57:22 1242

原创 前端项目接入sqlite轻量级数据库sql.js指南

引言sql.js 是一个强大的JavaScript库,它使得SQLite数据库能够在网页浏览器中运行。这个开源项目提供了一种方式,让开发者可以在前端环境中实现轻量级的数据库操作,无需依赖服务器端数据存储,极大地增强了Web应用的数据处理能力。通过将SQLite编译成WebAssembly(wasm),sql.js实现了高效的数据库操作,支持标准的SQL查询语言。如果你需要在浏览器中处理,并且希望使用 SQL 语法来操作这些数据,那么 SQL.js 将是一个不错的选择。

2024-10-23 11:29:18 2541

原创 justify-content: flex-end;和justify-content: end;区别,为什么justify-content: end;在felx中失效?

使用 Flexbox 时:应使用 justify-content: flex-end;来将子元素在主轴方向上对齐到容器的末端。使用 CSS Grid 时:可以使用 justify-content: end;或 align-items: end;来在网格中实现结束对齐。因此,使用 end 作为 justify-content 值会在 Flexbox 中失效,因为它并不被支持。

2024-10-21 09:12:23 875

原创 wps加载项教程

了解概念​ WPS 加载项是一套基于 Web 技术用来扩展 WPS 应用程序的解决方案。每个 WPS 加载项都对应打开了一个网页,并通过调用网页中 JavaScript 方法来完成其功能逻辑。WPS 加载项打开的网页可以直接与 WPS 应用程序进行交互,同时一个 WPS 加载项中的多个网页形成了一个整体, 相互之间可以进行数据共享。开发者不必关注浏览器兼容的问题,因为 WPS 加载项的底层是以 Chromium 开源浏览器项目为基础进行的优化扩展。

2024-10-03 23:29:52 2625 6

原创 Vue3DevTools7是如何在vscode定位指定文件位置的?

通过这种方式,我们可以在开发过程中快速定位到相关的代码,大大提升了调试和开发的效率。希望这个小技巧能够帮助到你们,让你们在使用 Vue 3 开发时更加得心应手!如果你对这个功能有任何问题或者有更好的建议,欢迎在评论区讨论!

2024-09-20 10:47:56 1394

原创 网页实现滚动显隐动画的示例讲解

API 和 CSS 动画实现滚动显隐效果。这种技术可以有效地提升用户体验,使网页更具互动性和视觉吸引力。希望这个简单示例能帮助你更好地掌握滚动动画的实现方法。在现代网页设计中,滚动动画可以极大地提升用户体验。本文将介绍一个简单的实现滚动显隐动画的示例,帮助你为网页中的元素添加优雅的进入动画效果。文件中,我们首先定义了一个包含多个元素的简单网页布局。这些元素将会在用户滚动页面时逐步显现出来。一旦元素进入视口,我们会为其添加。的动画,它将元素从不可见过渡到完全可见。标签中,我们定义了一个名为。

2024-09-10 11:32:19 349

原创 钉钉开发网页应用JSAPI前端授权鉴权nodejs实现

使用钉钉进行H5网页开发的时候,需要调用一些钉钉提供具有原生能力的api,要调用这些api需要进行jsapi授权。

2024-08-07 15:21:08 2850

原创 Neutralinojs教程项目实战初体验(踩坑指南),干翻 electron

Neutralinojs 是一个轻量级可移植的桌面应用程序开发框架适用于 Linux、macOS 和 Windows 的预构建 x64 二进制文件。它可以让你使用 JavaScript, HTML 和 CSS 开发轻量的跨平台桌面应用。您可以使用任何编程语言(通过扩展 IPC)扩展 Neutranojs,并将 NeutranoJS 用作任何代码的一部分(通过子进程 IPC)。在 Electron 和 NWjs 中,你必须安装 Node.js 和成百上千的依赖库。

2024-07-29 16:27:16 845

原创 windows安装lzo和python-lzo,pip install 安装失败解决方案

然后我去issues看看了还真有解决方案。进到python-lzo官方介绍。

2024-07-25 14:51:48 449

原创 Tensorflow.js 入门学习指南

不是专业人士,学不明白这一章,但是不影响后续学习调用模型中所有层的名称和类型每个层的输出形状每个层的权重参数数量每个层接收的输入(如果模型具有一般拓扑,下文将讨论)模型的可训练和不可训练参数总数层(类型)输出形状参数数量dense_Dense1(密集)[null,32]25120dense_Dense2(密集)[null,10]330参数总数:25450 可训练参数:25450 不可训练参数:0注意层的输出形状中的null。

2023-12-06 21:02:43 2267 2

原创 二维码活码全栈项目开发分析

前端技术ts+vue3+vue-router+vite+axios+qrcode(实现二维码)+vant(前端移动端组件库)后端技术express+cors(处理跨域)+multer(上传图片)+mysql(连接数据库)数据mysql服务器阿里云+宝塔有点意思。

2023-09-03 22:57:38 287

原创 Typescript+vite+sass手把手实现五子棋游戏(放置类)

用户将棋子放置在棋盘上,首先将五颗棋子连成线的用户胜利游戏功能开始游戏用户开始交替放置棋子放置棋子后该棋子会被禁用,直到对方下子,方可解五子连成线胜利重新游戏使用Typescript+vite+sass构建项目typescript:类型提示不要太爽。vite:轻松编译打包项目,减少配置时间sass:简化css书写练习本项目,可以提高Typescript使用技巧,理解面向对象知识,提示编码能力项目还很有多不足,请大家多多指教大佬们觉得不错的话,请三连支持一下!!!!

2023-08-05 19:53:25 367 1

原创 项目接入星火认知大模型!!!

下载该项目到讯飞开发平台注册账户,这样可以添加应用到讯飞控制台添加一个应用,这样可以获取 APPID,APISecret,APIKey等打开我们项目修改xinghuodemo/main.js中的代码,填写自己的APPID,APISecret,APIKey然后执行下面指令然后访问地址,可以开始使用啦。

2023-07-27 19:34:29 2785

原创 前端技术搭建(动态图片)拖拽拼图!!(内含实现原理)

动态拖拽拼图,是将以往的二维移动方块的方式,变成了三维移动方式,目标是将一张图片切割打乱,然后,重组为原图的游戏。通过gif动态图,我开发了一个动态图拖拽拼图网页游戏_哔哩哔哩_bilibili首先实现游戏界面搭建,引入相关文件。我将游戏分为三个部分

2023-07-26 11:14:07 859 9

原创 使用esp32+micropython+microdot搭建web(http+websocket)服务器(超详细)第三部分

上一章的http服务有个缺点,就是每次都要发送一个请求,如果我们让这个请求保持长连接,这样效率就提高了,在MicroPython设备 新建目录结构。于是websocket就是为此而生的。main.py (程序主入口)public 存放网页内容。lib 存放一些库文件。

2023-06-21 16:48:52 1720 4

原创 使用esp32+micropython+microdot搭建web(http+websocket)服务器(超详细)第二部分

有了前面的经验,我们现在用esp32实现http服务器。在MicroPython设备 新建目录结构。注意接口(线头颜色千万别插反了!我们要实现通过网页控制四个舵机。main.py (程序主入口)public 存放网页内容。lib 存放一些库文件。esp32开发板一个。esp32拓展板一个。

2023-06-21 15:49:28 2048

空空如也

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

TA关注的人

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