- 博客(58)
- 收藏
- 关注
原创 如何用模块化方案组织一个可扩展的前端组件库项目
需严格隔离模块边界、精确控制导出、采用 CSS-in-JS 或 CSS Modules 实现样式隔离,并确保类型定义随组件发布且无交叉引用。组件按功能域拆分,而不是按 UI 类型很多人一上来就建 Button、Input、Modal 这类目录,结果半年后发现所有组件都依赖同一套主题逻辑,改个颜色要全局 grep 十次。真正可扩展的模块化,是从业务语义出发切分——比如电商场景下,ProductCard、CartBadge、CheckoutStep 才是自然边界。
2026-05-08 21:41:51
187
原创 Redis怎样配置基础连接参数
填错 spring.redis.host 或 port 会导致连接拒绝而非超时,90% 是因 host 错填为 localhost;spring.redis.host 和 port 填错会导致连接拒绝,不是超时直接连不上 Redis 时,90% 是因为 spring.redis.host 写成了 localhost 或 127.0.0.1,而 Redis 实例其实在另一台机器上。但更隐蔽的是 database 被忽略,导致数据写进 DB0,而业务代码却在读 DB1——查不到数据,还以为 Redis 挂了。
2026-05-08 21:40:37
194
原创 Python后端Flask如何实现短信验证码发送_调用云厂商API实现功能
Flask里怎么调用短信API发验证码直接上手:用 requests.post() 调云厂商的 HTTPS 接口,别碰任何“封装 SDK”,除非你确认它不偷偷改请求头、不强制加全局 session、不屏蔽底层错误码。AND created_at > datetime('now', '-5 minutes')校验时先查,再比对,比对成功立刻删掉该记录(防重放),不要“查+更新状态”,避免并发下重复验证别依赖客户端传来的“时间戳”判断是否过期,全以服务端时间为准;云厂商的 QPS 限制是兜底,不是第一道防线。
2026-05-08 21:38:09
209
原创 苹果微软双修党福音:Navicat如何优化跨系统传输性能延迟
Navicat跨系统传输卡顿,本质是连接层+传输层双重延迟不是mac或windows客户端“慢”,而是navicat在跨操作系统(比如macos连linux上的mysql、windows连云上postgresql)时,底层tcp握手、ssl协商、认证响应链路被拉长。先看它是不是在“逐行INSERT”Navicat默认导出/导入走的是标准JDBC/ODBC协议,对大表会退化为单条INSERT语句循环执行——这在跨系统场景下,网络往返放大效应极其明显。真正的提速关键,是触发数据库原生命令加速通道。
2026-05-08 21:36:54
153
原创 HTML压缩工具本地运行卡顿怎么办_在线替代或参数优化【说明】
例如调--collapse-whitespace参数、换rust-html-minifier、分块提取body压缩、关闭VS Code HTML格式化。2、添加--collapse-whitespace替代--minify-css和--minify-js,仅处理空白符,跳过嵌入式CSS/JS解析。立即学习“前端免费学习笔记(深入)”;1、下载并安装rust-html-minifier二进制文件,无需运行时依赖,直接执行html-minifier input.html -o output.html。
2026-05-07 22:06:03
164
原创 CSS如何改变鼠标指针样式_使用cursor属性优化交互体验
伪类(如:hover)里写最常用,但默认状态、禁用态(:disabled)、聚焦态(:focus)也可以单独设行内样式(style="cursor: move;")能覆盖外部CSS,适合临时调试,但别长期这么用如果用了pointer-events: none,再设cursor也没用——鼠标根本“感知不到”这个元素常见cursor值的实际行为差异pointer和hand不是一回事:hand不是标准值,IE老版本私有,现在一律用pointer;move在拖拽场景下才自然,强行用在普通链接上反而让用户困惑。
2026-05-07 22:02:37
199
原创 为什么宝塔面板误删网站数据库无法通过回收站恢复_需依赖面板先前的定时备份或底层数据快照
以下任一条件不满足,回收站就是空的:【设置】→【备份还原】→【启用回收站】 是关闭状态 → 所有删除跳过回收站删库时间已超 回收站文件保留天数(默认7天,2026年4月1日系统默认仍为7天)→ 到期自动清空,不可逆/www/.Recycle/ 目录权限异常或不存在 → 比如面板升级失败后该目录属主变成 root:root,而宝塔运行用户是 www,写不进去验证方法:SSH 登录后执行 ls -ld /www/.Recycle 和 stat /www/.Recycle,看是否可被 www 用户写入。
2026-05-07 22:00:50
151
原创 mysql如何排查网络延迟引起的数据库连接问题_使用ping测试
ping 测试 ICMP 延迟,无法反映 MySQL 的 TCP 连接、DNS 反向解析、SSL 协商及认证等真实耗时环节,需用 mysqladmin 或 time mysql 命令实测完整连接流程。你看到 ping 延迟 10ms,但 mysql -h xxx -P 3306 -u user -p 却卡 3 秒——这很常见。用 telnet 或 nc 检查 MySQL 端口是否通、响应是否快ping 只能告诉你目标 IP 是否在线,不能验证 MySQL 服务是否在监听、是否接受连接、是否有网络策略干扰。
2026-05-07 21:59:03
250
原创 mysql如何配置慢查询日志记录_开启long_query_time并分析
也不会生效SHOW VARIABLES LIKE 'slow_query_log%';若平均查询都在 100ms 内,设成 0.2 更敏感long_query_time 是浮点数,支持小数,但注意:MySQL 5.7+ 默认单位是秒,不是毫秒设太低(比如 0.01)会导致日志暴增,IO 压力大,甚至拖慢慢查询本身(日志写入会串行化部分操作)该变量可动态改:SET GLOBAL long_query_time = 0.3;
2026-05-06 20:38:03
135
原创 CSS如何实现网格内绝对定位_利用Grid的relative属性层级控制
grid容器需设position: relative以使绝对定位子元素相对于其定位,否则会向上查找定位祖先;grid容器必须显式设为relative绝对定位元素要相对于grid容器定位,前提是容器本身得是定位上下文。跨grid容器时需看父级堆叠上下文注意:inset(如inset: 8px)在部分旧版Chrome中兼容性弱,建议拆成top/right/bottom/left用grid-area配合absolute实现精准锚定单纯靠top/left数值难对齐网格线,尤其响应式下容易偏移。
2026-05-06 20:36:28
173
原创 mysql事务回滚与存储引擎的关系_mysql回滚机制分析
InnoDB 回滚靠 undo log,不是“把 SQL 反向执行”InnoDB 的回滚不是重放反向 SQL(比如把 UPDATE t SET a=2 变成 UPDATE t SET a=1),而是通过 undo log 中保存的“前镜像(before image)”直接还原数据页原始状态。一条 UPDATE 改 10 万行,回滚耗时主要取决于 undo log 长度和磁盘 I/O,而非 WHERE 条件是否带索引TRUNCATE TABLE 不写 undo log,无法回滚;
2026-05-06 20:34:52
177
原创 c++ 享元模式实现 c++如何运用共享技术有效支持大量细粒度对象
用 struct 显式拆分:把所有 const 字段(const std::string& font_name)放进享元类,把非 const 字段(int cursor_offset)留在客户端工厂函数返回 std::shared_ptr<const FontInfo>,而不是裸指针,避免误删共享实例注意线程安全:如果多个线程并发调用工厂获取同一 key 的享元,查表逻辑必须加锁(std::mutex)或用 std::call_once 初始化单例缓存std::shared_ptr 能不能直接当享元用?
2026-05-06 20:33:07
141
原创 Golang Gin怎么做JWT登录认证_Golang Gin JWT教程【实用】
错误写法:if err == nil { /* 直接放行 */ }正确写法:if err!token.Valid { c.AbortWithStatusJSON(401, gin.H{"error": "invalid or expired token"}) }注意:即使 err == nil,token.Valid 也可能是 false(比如 exp 已过,但没被校验)用 ParseWithClaims 而不是 Parse 绑定自定义字段想从 token 里安全取 user_id 或 role?
2026-05-06 20:31:23
187
原创 mysql如何设置数据库默认引擎_修改default-storage-engine
建表不加 ENGINE= 依然得到 InnoDB 表。这是最可控、跨版本兼容的做法方案二(仅限 5.7 及以前):修改配置 + 重启 —— 在 my.cnf 的 [mysqld] 下加 default-storage-engine=MyISAM,然后完整重启 mysqld 进程(不是 reload)注意:SET GLOBAL default_storage_engine = 'MyISAM' 在 5.7 中看似成功,但只影响当前会话后续的隐式建表,且重启后失效;
2026-05-01 20:46:50
132
原创 Python二叉搜索树怎么写_BST插入删除与查找算法实战
insert(3);递归插入必须有返回值,并层层 return 节点引用,否则父层接不住非递归插入更直观:用 current 遍历,用 parent 记前驱,找到空位后直接 parent.left = Node(val) 或 parent.right = Node(val)别在 insert 里做重复值判断——BST 定义本身不要求去重,是否忽略/报错/覆盖由业务定,但得明确写出来查找操作为什么总返回 None 而不是 Falsesearch 的语义是“是否存在”,返回 True/False 最直觉;
2026-05-01 20:42:00
221
原创 C#怎么操作数据库存储过程 C#如何调用SQL Server存储过程传参并获取返回结果【数据库】
参数名须与存储过程定义一致,输出/返回参数需显式指定方向,执行后从SqlParameter.Value取值,DateTime优先用SqlDbType.DateTime2,空值赋DBNull.Value,异步调用需ConfigureAwait(false)防死锁。Mokker AI AI产品图添加背景。
2026-05-01 20:40:14
198
原创 Golang怎么用Once确保只执行一次_Golang如何初始化只运行一次的代码逻辑【技巧】
sync.Once 内部用一个 uint32 状态位 + 互斥锁实现,状态变更原子且不可逆如果 Once.Do() 里函数 panic,该 Once 实例视为已“完成”,后续调用直接返回,不会重试多个 goroutine 同时调用 Do(),只有一个会执行传入函数,其余全部阻塞直到它返回(无论成功或 panic)sync.Once 必须配合指针或包级变量使用一旦 sync.Once 被复制(比如作为 struct 字段值拷贝、函数参数传值),就失去作用——每个副本都是独立的状态。
2026-04-29 23:37:18
35
原创 如何创建仅在首次订阅时执行一次计算的 RxJS 懒加载 Observable
本文介绍如何使用 defer 与 sharereplay(1) 组合,构建真正懒加载、单次执行、多订阅共享结果的 rxjs observable,避免初始化时提前触发昂贵计算。
2026-04-29 23:35:48
58
原创 如何让水平滚动条始终固定在页面底部
本文介绍一种巧妙绕过容器滚动限制的方法,通过将内容区域与滚动条分离,实现水平滚动条始终固定在视口底部的效果,解决长内容容器中横向滚动不便的问题。直接对 .scrollcontainer 的滚动条应用 position: fixed 是无效的,因为浏览器滚动条是宿主元素(如 <div>)的伪元素(::-webkit-scrollbar),它不脱离文档流,也不响应 position、z-index 等常规定位属性。
2026-04-29 23:34:21
31
原创 C++如何判断YAML节点是否为Map类型_YAML--Node--IsMap用法【基础】
它只检查当前节点是否为 YAML 映射(即键值对结构),不递归、不推断、不看内容——纯类型判断。必须是解析后由 libyaml 正确识别为 mapping 的节点,才可能返回 true如果 YAML 源里写的是 foo: [1,2],那 node["foo"].IsMap() 一定为 false(它是 sequence)空映射 {} 或 foo: {} 下的节点,IsMap() 返回 trueIsMap() 前必须确保节点有效,否则会崩溃YAML::Node 是一个轻量句柄,底层指针可能为空。
2026-04-29 23:32:40
38
原创 CSS如何用Less优化表单验证样式交互_利用伪类选择器与嵌套逻辑
需为 input 添加 required/type/pattern 等约束并设置 placeholder,配合 :invalid:not(:placeholder-shown) 实现输入后实时样式变化,避免未交互时误标红。}}为什么 &:focus 和 &:invalid 要组合判断单独用 :invalid 会导致刚点进空输入框就标红——用户还没输,不该提前报错。
2026-04-29 23:31:03
195
原创 mysql flush privileges有什么作用_mysql权限生效机制解析
即使删掉 99% 的元素,len(m) 变成 1,底层分配的内存依然和原来一样大。这在长期运行、键数量波动大的服务中容易造成内存滞涨(比如按小时维度缓存指标,旧小时数据删了但内存不还):如果确定要清空整个 map,直接赋值 m = make(map[string]int) 比循环 delete 更干净如果只是阶段性清理,且后续写入量小,可考虑重建 map:newM := make(map[string]int, len(m)/2),再 copy 剩余项注意:len(m) 是当前元素数,不是容量;
2026-04-28 22:23:19
139
原创 C#怎么使用TopLevel顶级语句 C#顶级语句怎么写如何省略Main方法简化控制台程序【语法】
写 await Task.Delay(1000);或 await File.ReadAllTextAsync("a.txt");那生成的是 void Main,无法等待异步操作别在 TopLevel 里写 Task.Run(...).Wait() —— 容易死锁,尤其在 Windows Forms/WPF 上下文里TopLevel 语句访问命令行参数怎么写用内置变量 args,类型是 string[],和传统 static void Main(string[] args) 里的完全一样,无需声明。
2026-04-28 22:21:54
228
原创 如何清理Oracle临时表空间_重建TEMP表空间与释放空间方案
重建TEMP表空间是最稳妥解法,因其不自动回收已分配临时段;(注意是 v$temp_space_header,不是 dba_free_space)临时表空间不支持 shrink space,任何试图对 tempfile 做 shrink 的操作都会失败重建 TEMP 表空间的最小安全步骤必须在数据库 open 状态下完成,无需停机,但需确保无应用正在执行大规模排序或建索引(否则新 TEMP 尚未就绪时会报错 ORA-01652: unable to extend temp segment)。
2026-04-28 22:20:29
194
原创 SQL窗口函数如何优化嵌套子查询_提升执行效率
空OVER()会触发全表排序,嵌套窗口函数易致多次扫描,性能下降显著。窗口函数替代 GROUP BY + 子查询时,ORDER BY 必须显式声明很多同学把 ROW_NUMBER() 或 RANK() 套进子查询里,以为能直接“降维”替代分组聚合,结果发现结果乱序、重复或报错。常见错误现象:SELECT id, ROW_NUMBER() OVER (PARTITION BY category) FROM t —— 缺少 ORDER BY,数据库可能按任意物理顺序编号,每次执行结果都可能不同。
2026-04-28 22:18:55
202
原创 Golang如何做分布式ID生成_Golang雪花算法教程【详解】
后者支持自定义纪元(epoch),但默认用系统时间做节点 ID,集群部署时若没配 NodeID 会冲突。常见错误现象:sonyflake.Next() == 0 或连续返回相同 ID,基本是因为初始化时 StartTime 设得太早(早于纪元),或系统时钟回拨未处理;当服务器时间被 NTP 校正或人为调整导致回拨,Next() 会阻塞(sonyflake)或 panic(某些 fork 版本),但更危险的是:如果跳过校验强行生成,会导致 ID 冲突或倒序。
2026-04-28 22:17:21
174
原创 如何正确使用 React 的 useContext Hook 管理组件状态
在 React 应用中,useContext 是访问 Context 值的核心 Hook,但它无法独立生效——必须确保组件被对应的 Context.Provider 包裹,否则 useContext(MyContext) 将返回初始化时传入 createContext(defaultValue) 的默认值(此处为 {}),从而导致解构出的 setName 为 undefined,调用时报错。注意:createContext() 的默认值仅用于未包裹 Provider 的兜底场景,生产环境应尽量避免依赖它;
2026-04-27 21:25:21
151
原创 c++如何计算整个文件夹内所有文件的总MD5指纹汇总校验【详解】
用 std::filesystem 遍历目录但漏掉子目录默认 std::filesystem::directory_iterator 只遍历一级,不会递归进子文件夹。实操建议:立即学习“C++免费学习笔记(深入)”;用分块读取:每次 read() 8192 字节,喂给 MD5 更新函数(如 OpenSSL 的 EVP_DigestUpdate() 或自研增量哈希)打开文件务必加 std::ios::binary 模式,避免文本模式干扰别用 std::string 当缓冲区存二进制数据;
2026-04-27 21:23:52
165
原创 mysql如何删除数据库而不影响其他_使用drop database命令
先用 SELECT DATABASE() 确认当前默认库(返回 NULL 表示没选库)再查一遍目标是否存在:SHOW DATABASES LIKE 'target_name',别信记忆或配置文件里的名字如果通过脚本批量操作,务必在 DROP DATABASE 前加判断:IF EXISTS 只防报错,不防删错——DROP DATABASE IF EXISTS wrong_name 不报错,但也没用drop database 对权限和复制的影响这个命令本身不需要 CREATE 权限,但需要 DROP 权限;
2026-04-25 22:02:23
37
原创 CSS如何去掉数字输入框的默认微调按钮_利用---webkit-inner-spin-button
隐藏数字输入框上下箭头需同时处理WebKit/Blink和Firefox:Chrome/Edge/Safari用::-webkit-inner-spin-button和::-webkit-outer-spin-button加-webkit-appearance:none;Firefox必须加-moz-appearance:textfield,且均需设margin:0避免留白。margin: 0;
2026-04-25 22:00:55
188
原创 如何在按需导入时精确触发类定义中的初始化代码
因此,若 x.py 中直接定义多个类并包含顶层 print,则只要该模块被导入(哪怕只 from x import classY),所有类体代码都会被执行——这与预期的“按需加载”行为相悖。推荐方案:动态构造类(安全、清晰、无 exec)以下为推荐实践,不使用 exec,规避安全与调试风险:# x.pyclass _ClassY: print("Executed class Y!>>> import x# 无输出 —— 模块导入本身不触发任何类体执行?
2026-04-24 23:31:10
152
原创 CSS如何解决Bootstrap表格溢出问题_利用table-responsive容器
Bootstrap表格内容横向溢出时,table-responsive 容器为什么没生效?检查 table-responsive 的直接父元素——避免它有 overflow: hidden、overflow: clip 或 display: flex 且未设 flex-shrink: 0确保 table-responsive 是块级元素(默认就是),且没有被 CSS Grid / Flex 容器意外压缩宽度在 DevTools 中临时删掉父级样式,确认是否恢复滚动;
2026-04-22 19:53:00
182
原创 Golang怎么计算日期差天数_Golang如何计算两个日期之间相差多少天【方法】
核心逻辑是:用后一个时间减前一个时间得到 Duration,然后除以 24 * time.Hour。闰年、大小月、时区偏移、夏令时都会让手动计算失效time.Date 构造时若传入非法日期(如 2 月 30 日),Go 会自动归一化(变成 3 月 2 日),但你未必意识到只要用 time.Time 值本身做 Sub,底层已处理所有历法规则注意时区:同一时刻在不同时区可能差一天time.Time 带时区信息,Sub 计算的是绝对时间差,但如果你从字符串解析时间却忽略时区,结果就不可靠。
2026-04-22 19:51:36
252
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅