- 博客(755)
- 资源 (12)
- 问答 (3)
- 收藏
- 关注
原创 不同的数据库操作方式:MongoDB(NoSQL)和 MySQL/SQL
本文对比了 MongoDB 和 MySQL 两种数据库在用户查询与更新操作中的不同写法。MongoDB 采用异步 await 语法,使用 findOne 和 updateOne 方法进行 JSON 数据操作,而 MySQL 采用回调函数或 async/await 执行 SQL 查询。优化建议包括增加错误处理、改用 Promise 风格及使用 ORM 工具。关键区别在于:MongoDB 适合非结构化数据,语法更灵活;MySQL 适合结构化数据,需注意 SQL 注入防护。推荐写法均采用 try/catch 进行
2025-06-02 00:46:48
805
原创 数据库 MongoDB (NoSQL) 与 MySQL (SQL) 的写法对比
摘要:MongoDB(NoSQL)与MySQL(SQL)数据库在结构和操作上存在显著差异。MySQL采用表格结构,需预定义模式,使用SQL语言;MongoDB采用文档存储(BSON),无需预定义模式。对比显示MongoDB在数据模型灵活性、扩展性和JSON支持方面优势明显,适合非结构化数据和敏捷开发;而MySQL在事务支持、复杂查询和数据完整性方面更强,适合结构化数据和高一致性要求场景。实际应用中可根据需求选择或混合使用两种数据库技术。
2025-06-02 00:39:30
409
原创 res.json() vs res.send() 的区别
Express.js 中 res.json() 与 res.send() 的区别 res.json() 和 res.send() 都是 Express.js 的响应方法,主要区别在于数据处理方式: res.send() 自动推断 Content-Type,支持字符串、JSON 和 Buffer 等数据类型; res.json() 强制设置 Content-Type 为 JSON,无论输入类型如何都会转为 JSON 格式。 使用建议: 明确返回 JSON 时优先用 res.json()(如 API 响应) 需
2025-06-01 23:29:23
383
原创 Redis 存储邮件验证码的完整代码
本文介绍了一个基于Redis和Node.js实现的高性能邮件验证码系统。系统通过Redis存储验证码并设置过期时间,包含发送验证码和验证接口。关键功能包括:防刷机制限制60秒内只能发送一次、验证码5分钟有效、IP限流防止滥用。文章还提供了安全增强选项如加密存储验证码,以及生产环境部署建议如Redis密码认证和持久化配置。该系统具备高性能、防刷能力和生产级可靠性,适用于各种需要邮件验证的场景。
2025-06-01 23:18:27
247
原创 邮件验证码存储推荐方式
摘要: 邮件验证码存储推荐使用 Redis,因其具备高性能、自动过期(TTL)、原子性操作及分布式支持等优势。对比内存(Map)易丢失、数据库性能低等缺点,Redis 通过 SETEX 命令存储验证码并设置有效期,结合加密存储和防刷策略(如限制尝试次数)可显著提升安全性。生产环境中建议配置 Redis 集群和高可用方案,并遵循 业务前缀:唯一标识 的键名设计规范。完整流程示例涵盖发送、验证及防刷逻辑,适用于绝大多数高并发场景。其他方案(如内存或数据库)仅推荐用于开发测试或特定需求场景。
2025-06-01 23:05:26
1003
原创 Cursor 中三个选项 Agent 、 Ask 和 Manual 含义
Cursor提供三种AI交互模式:Agent模式让AI主动处理代码任务(如生成/重构代码);Ask模式需手动提问获取AI建议;Manual模式则完全关闭AI功能。推荐根据需求选择:Agent适合自动化操作,Ask适合针对性提问,Manual适合纯手动编程。各模式切换灵活,满足不同开发场景需求。(149字)
2025-06-01 16:05:54
195
原创 Css样式中设置gap: 12px以后左右出现距离问题解析
摘要: 问题现象是flex布局的gap属性在单子元素容器中产生了间距,原因在于框架默认添加的::before/::after伪元素被gap识别为子节点。通过开发者工具可验证伪元素存在,导致.el-input与伪元素间各产生12px间距。解决方案包括:1) 清除伪元素布局影响(推荐用display:none);2) 改用margin-left替代gap控制间距。该问题常见于Element-UI等框架的表单项布局场景。(150字)
2025-05-30 17:16:27
597
原创 微信扫码登录 - 公众号网页授权,总结(二)返回指定页面
本文介绍微信扫码登录公众号网页授权的回调处理流程,重点说明如何根据授权状态返回不同页面。核心步骤包括:1) 校验授权完整性,判断是否获取用户信息权限;2) 检查是否为匿名用户;3) 查询用户是否关注公众号;4) 根据判断结果返回对应的HTML页面(授权失败页/未关注页/已关注页)。文中提供了完整的代码实现,包括用户信息获取、关注状态检查和页面返回逻辑,并附有流程图说明整个判断流程。通过该方案可实现针对不同授权状态的差异化页面展示。
2025-05-27 11:56:47
136
原创 微信扫码登录 - 公众号网页授权,总结(一)成功返回聊天界面
本文总结了微信扫码登录的实现流程:1) 后端生成带授权链接的二维码;2) 用户扫码后通过微信授权获取用户信息;3) 回调处理逻辑包括获取access_token、查询用户数据或注册新用户;4) 最终返回自动关闭页面。关键点包含二维码生成、OAuth2授权、用户信息获取及数据库操作,通过WebSocket实现前后端登录状态同步,完成闭环登录流程。
2025-05-27 11:43:16
293
原创 解决 Tailwind CSS 代码冗余问题
Tailwind CSS 虽然功能强大,但容易导致 HTML 类名冗长和代码冗余。为解决这一问题,可以采取多种策略:使用 @apply 指令提取重复样式、创建可复用组件、借助编辑器插件优化开发体验、启用 JIT 模式提升性能、自定义工具类以满足特定需求、使用 clsx 或 classnames 库动态管理类名,以及定期重构和抽象代码。其中,定期维护和升级是确保代码简洁高效的关键。通过这些方法,可以有效减少 Tailwind CSS 的冗余问题,提升代码可读性和可维护性。
2025-05-18 19:15:08
301
原创 Vue 中生成源码映射文件,配置 map
在Vue.js项目中,开启开发环境的源码映射(source map)可以通过修改vue.config.js文件来实现。具体步骤如下: 配置vue.config.js:在项目根目录新建或修改vue.config.js文件,添加以下代码: const { defineConfig } = require('@vue/cli-service') module.exports = defineConfig({ transpileDependencies: true, configureWebpack: { devt
2025-05-18 04:04:33
237
原创 Flowbite 和 daisyUI 那个好用?
Flowbite 和 daisyUI 是基于 Tailwind CSS 的组件库,各有特色。daisyUI 上手简单,支持多主题切换,适合快速开发和轻量项目;Flowbite 设计更正式,组件丰富,适合企业级应用。daisyUI 天然兼容 Vue,Flowbite 需额外插件。两者社区活跃,但 Flowbite 更新更频繁。选择取决于项目需求:daisyUI 适合个人项目和快速迭代,Flowbite 更适合企业官网和管理后台。
2025-05-17 15:29:48
469
原创 Vue 2 项目中配置 Tailwind CSS、Font Awesome和daisyUI
在 Vue 2 项目中配置 Tailwind CSS 的步骤如下:首先,通过 npm 安装 tailwindcss@^2.2、postcss@^7 和 autoprefixer@^9 依赖。接着,使用 npx tailwindcss init 创建 Tailwind 配置文件(可选)。然后,在 src/assets 目录下新建 tailwind.css 文件,并添加 @tailwind 指令。之后,在项目根目录创建 postcss.config.js 文件,配置 Tailwind 和 Autoprefixe
2025-05-12 22:39:27
467
原创 为什么Vue项目中没有设置process.env但是还是可以获取
构建工具环境变量写法获取方式Vue CLIVUE_APP_ViteVITE_内建变量NODE_ENV都能访问到(Vite 模拟)
2025-05-04 00:22:12
333
原创 Nginx搭建test服务器
Ctrl + O 保存,Enter 确认,Ctrl + X 退出。新建目录,Git拉取项目代码,安装上插件包。创建域名:test.xxxxx.com。中添加配置文件,通过软链接放入。就可以控制自己的代理服务了。修改配置文件“服务器接口”所有已安装模块的配置存放处。建一个反向代理服务,在。
2025-05-02 18:57:07
750
原创 解决在Mac上无法使用“ll”命令
在 macOS 上,ll命令是一个常见的别名,它通常是指向ls -l的。但是,如果你看到,这意味着你当前的zsh配置中没有设置ll作为别名。
2025-04-30 15:50:43
677
原创 Vue 对话框出现时,为什么滚动鼠标还是能滚动底层元素
在 Vue 中,当对话框(如Dialog组件)出现时,底层页面仍然可以滚动,通常是因为对话框未正确阻止底层内容的滚动行为。解决这个问题的常见方法是通过控制页面的overflow样式来禁用底层内容的滚动。
2025-04-28 18:19:14
372
原创 Vue开发网站会有“#”原因是前端路由使用了 Hash 模式
网站链接中出现(井号)是因为你的前端路由使用了Hash 模式(hash mode),这是一种前端框架(如 Vue.js、React 等)中常用的路由策略。
2025-04-24 18:49:56
374
原创 JSAPI支付和小程序支付
JSAPI 支付是“微信网页内”的支付;小程序支付是“小程序内”的支付。虽然底层统一调用的是微信支付系统,但接入方式和使用环境不同。
2025-04-20 01:02:22
368
原创 小程序所有人都能登录,为什么还要添加 Token ?
首先这是个很好的问题,可以从 功能性 和 安全性 两方面来分析一下:如果:那确实可以不加 Token,也不会影响使用。标识用户身份做权限判断安全性考虑易于扩展你可以这样做:这样就像“发给每个人一个通行证”,哪怕啥都不做,以后也能追踪到:总结是否需要 Token?说明可以不加如果所有用户都一样、也不做身份相关操作建议加哪怕只是游客,也利于扩展、安全和身份标识但个人最后的建议是,一定要加!!!!推荐 用 openid + token 标记身份 方式添加。如果是综合系统
2025-04-17 18:59:23
360
原创 小程序接口使用时,HttpOnly cookie 中的 sameSite 设置什么最合适
是设置 Cookie 的一个安全属性,用来防止。它是SameSite的三种取值之一。SameSite。
2025-04-15 22:04:44
183
原创 小程序获取用户总结(全)
说实在话,小程序的开发团队真的需要优化一部分人,这个接口前后都不知道改了几遍,这种关键接口反反复复搞,别说初学者,即便是做过小程序的人都头大,单是整理这个资料就花了很久的时间,是应该反省一下了。还有,小程序的开发社区,那是什么狗屎社区,基本没有起到解决问题的效果,大部分都是自己找资料解决。还有一些开发人员,自己做的一堆狗屎文档,解决不了问题还盛气凌人的态度,现在小程序成绩是前人的努力结果,并不是现在的你,坐着大办公室,整天不干正事,很多就是披着高校的皮,做事一点不靠谱!
2025-04-15 13:33:05
1287
原创 微信小程序 WebView 模式和 Skyline 渲染模式的区别
项目WebView 渲染模式Skyline 渲染模式渲染内核WebView(网页)原生自研渲染引擎(类 Flutter)页面流畅度一般(低端机可能卡)高流畅度,丝滑体验启动速度相对慢更快内存占用较高更低动画/滚动体验可能掉帧基本 60fps调试体验工具成熟正在完善中最低基础库要求无特别要求>= 2.29.2适用场景通用兼容追求高性能/大厂级体验的项目。
2025-04-13 14:14:54
514
原创 Element 使用 textarea 内容实现高度自适应
属性来实现内容高度自适应。当没有内容时默认显示 3 行,当有内容时根据内容动态调整高度。
2025-04-04 02:11:19
371
原创 Vue父组件调用子组件设置table表格合并
2. 确定要修改的列;3. 设置行合并判断条件;4. 设置初始值,检查。父组件传函数到子组件,达到使用合并函数的办法。里的数据是否相同,修改统计变量实现合并。子组件 CreateTableComp。思路:1. 先获取表格的所有数据。
2025-04-03 11:30:15
242
原创 Vue 中 this.$emit(“update:xx“,value) 和 :xx.sync 实现同步数据的做法
在 Vue 2.x 中,和xx.sync都是用来实现父子组件之间的数据同步的方式,它们背后的工作原理有些相似,但语法上有所不同。让我们逐个详细解释这两者的使用方式。xx.syncxx.sync是 Vue 提供的一种语法糖,用来简化子组件和父组件之间数据同步的操作。它的工作原理是自动化地监听update:xx事件并更新父组件的数据。实际上,xx.sync是v-bind和v-on的组合,背后也调用了。
2025-04-02 19:52:30
459
原创 MySQL数据库中,tinyint(1) 和 tinyint 有什么区别
是 MySQL 中最小的整数类型,在 MySQL 8.0 及以后,没有任何区别,系统会忽略。在 MySQL 中,
2025-04-01 21:17:17
617
原创 Vue项目中Vuex在util引入,断点存在default
时,导入的其实是这个 Store 实例,而。导出整个 Store 实例。是合法的访问方式,无需通过。,即使你在代码中看到的是。已经是解引用后的对象。是它的一个直接属性。
2025-03-31 22:02:53
407
原创 localStorage和vuex-persistedstate 插件推荐哪个
选:省时省力,适合大多数项目。选:仅当项目非常简单或需要精细控制存储逻辑时。敏感数据:结合后端(Cookie)或前端加密存储。
2025-03-25 00:29:37
339
原创 Podman 学习总结
Podman()是一个开源的容器管理工具类似于 Docker,可以用于拉取、运行、管理容器镜像。Podman 采用无守护进程的架构,使其更加安全和轻量级,适用于多种容器化场景。兼容方式说明让 Podman 兼容 Docker 命令,减少学习成本兼容 Docker CLI & Composepodman命令格式与 Docker 兼容,并支持直接将 Podman 容器转换为 Kubernetes 资源迁移 Docker 镜像/容器使用和进行迁移Podman 在生产环境中的应用Podman作为。
2025-03-24 11:19:47
961
原创 JavaScript 中 “new Map()”的使用
new Map()是 JavaScript 中用于创建的构造函数。Map是一种键值对集合,类似于普通对象(Object。
2025-03-22 19:59:59
661
Royal TSX 是一款跨平台的远程桌面和连接管理工具,专为 macOS 设计 它主要用于管理和连接到不同类型的远程计算机和服务
2024-12-31
Selenium-IDE 插件
2024-05-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人