- 博客(68)
- 收藏
- 关注
原创 SQL中RIGHT JOIN真的很少用吗_数据完整性检查与反向关联分析
是,但不是“没用”;先说结论:是,但不是“没用”绝大多数业务查询中,RIGHT JOIN 可以也**应该**被 LEFT JOIN 替代——只要把左右表顺序调换。但你想以订单为起点,直接看到缺失客户 ID 的那些订单行(而不是先查出缺失 ID 再反查)这时写 SELECT * FROM customers c RIGHT JOIN orders o ON c.id = o.customer_id WHERE c.id IS NULL,比改成 LEFT JOIN 后把 orders 搬到左边更贴近原始意图。
2026-04-22 19:56:34
200
原创 怎样导出用于负载测试的样本数据_LIMIT限制数据量提取
mysqldump 不支持 LIMIT 是因它仅接受表级导出参数,不解析 SQL 子句;若需随机抽样,得先建带 LIMIT 的视图或临时表导出大表前务必确认目标路径有写权限,且 MySQL 用户有 FILE 权限(对 INTO OUTFILE)用 SELECT ... INTO OUTFILE 快速导出带 LIMIT 的 CSV 样本这是最直接可控的方式,适合负载测试需要的结构化样本,比如导出 5000 行用户数据做压测请求体。
2026-04-22 19:55:13
192
原创 如何让导航栏下落动画变慢?——CSS 动画时长精准控制教程
本文详解如何通过调整 CSS animation 属性中的持续时间值,精确控制 Bootstrap 导航栏“下落”动画的速度,并提供可直接运行的优化代码与关键注意事项。/* ← 当前为 0.2 秒,太快 */}只需将 0.2s 改为更长的值(如 0.6s、1s 或 1.2s),即可实现更舒缓的下落效果:.top-section:hover + .hidden-navbar { animation: slideDown 0.8s cubic-bezier(0.34, 1.56, 0.64, 1);
2026-04-22 19:54:01
40
原创 SQL如何高效导出大规模的分组汇总数据_利用分页与索引
分页导出应改用游标分页;比如按 user_id 和 created_date 分组统计,但表里只有主键 id,那全表扫描就躲不掉。实操建议:改用游标分页:记录上一页最后一条的 group_key(比如 MAX(user_id)),下一页查 WHERE user_id >?太小则网络往返多,5k 是多数 OLTP 场景的平衡点SELECT INTO OUTFILE 不一定比应用层导出快SELECT INTO OUTFILE 看起来“数据库直出”,但实际受限于磁盘权限、路径可见性、单线程写入,反而常成瓶颈。
2026-04-22 19:51:12
226
原创 Redis如何利用位图快速判断数据存在性
用 SETBIT 和 GETBIT 做存在性判断最直接:SETBIT 设定位为 1,GETBIT 查该位是否为 1,O(1) 时间、极省空间;适合判断“某 ID 是否被标记过”,比如用户签到、设备在线状态、风控黑名单 ID不要用它查“值是多少”,位图只存 0/1,没有中间态SETBIT user:sign:20240501 <uid> 1 中 <uid> 是整数偏移量,不是字符串 ID;但只要任意一个源 key 不存在,BITOP 会把它当作全 0 字符串参与运算,结果可能全 0,导致误判。
2026-04-21 23:08:05
176
原创 如何在 pytest 中通过组合多个 fixture 实现参数化测试
在 pytest 中,当测试需覆盖多种数据组合(例如不同状态的文章),且这些数据又依赖于共享的 fixture(如 category → product)时,直接在 @pytest.mark.parametrize 中引用 fixture 是不允许的——因为参数化发生在 fixture 初始化之前。这种方式既保持了 fixture 的可组合性与生命周期管理,又实现了测试用例的清晰分离。
2026-04-21 23:06:47
215
原创 c++文件锁使用方法 c++如何实现多进程文件同步
实际其他进程仍可另开句柄操作文件(尤其当共享标志没关死)。问题就出在这:fork 后子进程拥有同一 fd,锁也跟着继承,exec 不会丢锁,但 close 会释放锁——哪怕只是子进程 close,父进程的锁也没了。用 flock(fd, LOCK_EX | LOCK_NB) 加非阻塞锁,失败时立刻报错,别卡住若需 fork 后保持锁,父进程应在 fork 前 dup 一次 fd,子进程用 dup 出的 fd,父进程保留原 fdflock 锁的是整个文件,不支持字节范围;
2026-04-21 23:05:21
190
原创 SQL性能调优:为何尽量使用窗口函数而非关联子查询
Using filesort),窗口函数更倾向内存计算 - PostgreSQL 中,关联子查询可能阻止并行执行计划,而窗口函数可参与并行化(需开启 max_parallel_workers_per_gather) 别忽略 PARTITION BY 和 ORDER BY 的开销PARTITION BY 本身不慢,但一旦搭配 ORDER BY(尤其是没索引字段),就会强制排序——这可能是窗口函数唯一的重头开销。
2026-04-21 23:03:40
214
原创 老旧电脑适合用哪种HTML函数工具_低配设备适配方法【方法】
三、使用免安装的HTML工具箱网页版;以下是针对低配设备适配 HTML 开发与查看功能的多种方法:一、选用轻量级本地 HTML 编辑器老旧电脑通常内存有限(如 2GB–4GB)、CPU 单核主频偏低,运行 Electron 类重型编辑器(如新版 VS Code)易导致假死。4、如需格式化代码,在菜单栏点击“插件 → Plugin Manager → Show Plugin Manager”,勾选并安装 “XML Tools”,之后按 Ctrl + Alt + Shift + B 即可美化 HTML 结构。
2026-04-20 21:35:00
292
原创 mysql如何配置插件以提升查询性能_安装启用memcached插件
MySQL 8.0.29起已彻底移除daemon_memcached插件,因其与InnoDB缓存重叠、维护成本高且功能受限;你查到的旧教程或配置步骤(比如 INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so')在当前稳定版中会直接报错:ERROR 1126 (HY000): Can't open shared library 'libmemcached.so' 或更明确的 Unknown plugin 'daemon_memcached'。
2026-04-20 21:33:48
208
原创 c++如何将双精度浮点数以科学计数法写入文件_scientific标志【详解】
std::scientific 是什么,它到底改了什么std::scientific 是 C++ iostream 的一个格式标志,它强制浮点数以科学计数法(a × 10b)形式输出,而不是默认的固定小数点或自动选择格式。它作用于整个流(如 std::ofstream),不是单次写入必须配合 std::setprecision 控制有效数字位数,否则默认只显示 6 位有效数字不影响整数、字符串或其他类型输出,只对后续的浮点数生效写入文件时必须搭配 std::setprecision 吗必须。
2026-04-20 21:32:34
238
原创 Redis怎样应对大规模集群的重启风暴_分批次重启节点并等待集群状态恢复绿灯后再继续操作
关键不是“快”,而是让redis-cli --cluster check能持续返回OK,而不是CLUSTERDOWN或FAIL状态。pgrep -f "redis-server.*7002" 或 redis-cli -p 7002 ping 返回Could not connect启节点:redis-server /opt/redis/cluster/7002/redis.conf(确保配置里cluster-enabled yes且cluster-config-file路径可写)等就绪:while!
2026-04-20 21:31:13
283
原创 如何解决预检查网络失败_runcluvfy阶段报错忽略与修复
临时修复:在所有节点执行 echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6(仅内存生效,不影响持久配置)确认 bonding 接口已 up 且有 MAC 地址:ip link show bond0 | grep 'link/ether',若无输出,cluvfy 会认为接口无效避免使用 teamd 或 nmcli 配置的连接——cluvfy 只认传统 ifconfig 或 ip addr 管理的接口命名忽略 cluvfy 某类检查是否可行?
2026-04-20 21:29:49
198
原创 c++怎么获取文件的压缩比例信息_GetCompressedFileSize应用【实战】
必须先用 GetFileAttributes 检查 FILE_ATTRIBUTE_COMPRESSED 标志是否置位,否则 GetCompressedFileSize 的返回值无意义该函数对非 NTFS 卷(如 FAT32、exFAT、网络共享)总是返回原始大小,不报错也不提示对加密文件(FILE_ATTRIBUTE_ENCRYPTED)或稀疏文件,行为未定义,建议跳过GetCompressedFileSize 在 Windows 10/11 上返回错误?检查调用方式常见错误是传入了无效句柄或忽略错误码。
2026-04-19 23:24:13
215
原创 防止SQL注入的核心技术_使用查询参数化处理变量.txt
本文详解为何基于 Flexbox 构建的输入框组件在桌面端正常、却在移动端布局错乱,并给出精准修复方案——核心是为 .inputs 容器显式声明 width: 100%,同时补充 viewport 设置、弹性子项行为修正及移动端交互优化建议。本文详解为何基于 flexbox 构建的输入框组件在桌面端正常、却在移动端布局错乱,并给出精准修复方案——核心是为 `.inputs` 容器显式声明 `width: 100%`,同时补充 viewport 设置、弹性子项行为修正及移动端交互优化建议。
2026-04-19 23:23:03
195
原创 HTML怎么显示速率限制重置时间_HTML X-RateLimit-Reset解析【说明】
需后端在Access-Control-Expose-Headers中暴露X-RateLimit-Reset,前端用Date.parse(response.headers.get('Date'))获取服务端当前时间,再与X-RateLimit-Reset(秒级时间戳×1000)做差计算剩余秒数,避免客户端时钟偏差。怎么把 X-RateLimit-Reset 转成可读时间显示在网页上浏览器拿不到原始响应头里的 X-RateLimit-Reset,除非后端显式允许跨域暴露——这是最常卡住的第一步。
2026-04-19 23:21:52
301
原创 C#怎么实现蓝牙设备搜索_C#如何开发Bluetooth应用【指南】
BluetoothClient仅支持已配对的传统蓝牙设备发现,无法扫描未配对或BLE设备;常见错误现象:BluetoothClient.DiscoverDevices() 返回空数组,或抛出 SocketException 错误码 10013(权限拒绝)真实使用场景:仅适用于已手动配对、且对方设备处于“可见”状态的传统蓝牙(BR/EDR)设备,比如老式蓝牙打印机、串口模块关键参数差异:DiscoverDevices(int) 的参数是最大返回数量,不是超时毫秒数;
2026-04-19 23:20:32
232
原创 mysql如何解决乱码问题_检查客户端与服务器字符集一致性
乱码主因是客户端连接字符集与服务端不匹配,需确保character_set_client、connection、results三者一致且为utf8mb4;,注意这会重建表,大表慎用只改列定义(如 MODIFY name VARCHAR(100) CHARACTER SET utf8mb4)不够,排序规则和索引前缀长度可能出问题客户端连接参数比 my.cnf 更优先很多人改完 /etc/mysql/my.cnf 里的 character-set-server=utf8mb4 就以为万事大吉,结果还是乱码。
2026-04-19 23:19:05
238
原创 mysql数据库空间占用过大如何清理_Truncate与Optimize表操作
确认引擎:SHOW CREATE TABLE logs_2023,重点看 ENGINE=InnoDB检查配置:SELECT @@innodb_file_per_table,为 1 才走独立表空间路径TRUNCATE 后必须跟 OPTIMIZE TABLE(或 ALTER TABLE ... ENGINE=InnoDB)才能真正收缩 .ibd 文件注意:TRUNCATE 是 DDL 操作,会隐式提交,无法回滚;若 DATA_FREE 占比 > 25%,才值得优化生产环境务必避开流量高峰;
2026-04-18 23:29:05
200
原创 mysql如何设置字段为自动递增_使用alter table添加auto increment
ALTER TABLE 添加 AUTO_INCREMENT 失败的常见原因直接对已有表执行 ALTER TABLE t ADD COLUMN id INT AUTO_INCREMENT 会报错,因为 MySQL 要求 AUTO_INCREMENT 字段必须是索引的一部分(通常是主键或唯一键),且不能为 NULL。如果表已有主键,但你想新增一个独立的自增 ID(比如补一个 id 字段),必须先加列、再设为主键、最后加 AUTO_INCREMENT —— 三步不能合并如果表为空,可以一步到位;
2026-04-18 23:27:57
238
原创 CSS如何处理溢出隐藏_使用overflow-hidden与盒模型
overflow: hidden 失效主因是父容器无明确宽高或子元素脱离文档流;设了 box-sizing: border-box 但忘了 padding,结果内容被裁掉一部分,误以为是 overflow 问题,其实是可用空间比预期小设了 box-sizing: content-box(默认),又给了大 padding,实际渲染宽度超出设定值,overflow: hidden 会把多出来的部分切掉,但开发者常意识不到是 padding 导致的溢出边框(border)哪怕只有 1px,也会压缩内容区域;
2026-04-18 23:26:48
246
原创 CSS如何让文字超出两行显示省略号_使用line-clamp属性限制
必须搭配 display: -webkit-box 和 -webkit-box-orient: vertical,三者缺一不可元素需有明确宽度(比如 width 或父容器约束),否则 -webkit-line-clamp 不触发不能用于 inline 元素,得是 block 或 inline-blockFirefox用户只能靠 JS 模拟(比如截取字符+加“…可能是高度或行高冲突典型错误:明明写了 -webkit-line-clamp: 2,结果只看到一行,甚至文字还换行了。
2026-04-18 23:25:22
290
原创 Python Selenium怎么定位元素_By.XPATH与By.CSS_SELECTOR操作DOM节点
div:nth-child(2) 可行,但若前面有其他类型标签(比如 span),它可能选错——这时 XPath 的 (//div)[2] 更稳属性值含空格或特殊字符:CSS 要用引号包裹,比如 [data-tip="确认删除?"伪类如 :hover、:focus 在 Selenium 中无法触发或检测,别指望靠它们定位“悬停后才出现”的菜单什么时候必须用 XPath,绕不开当你要基于文本、位置关系或复杂逻辑找节点时,XPath 是唯一靠谱的选择。CSS 在这类场景下要么写不出来,要么写出来也不稳定。
2026-04-18 23:24:01
259
1
原创 CSS如何实现背景颜色的棋盘格分布_利用repeating-gradient
错一点,就会出现色块拉伸、缝隙、或根本看不出格子。transparent 在 CSS 中参与混合时等效于 alpha=0,不会污染底层色若需自定义格子色(比如灰格+白底),只需改第一个渐变里的非透明色,第二个保持 transparent千万别写成 repeating-linear-gradient(..., #fff 10px, #fff 20px)——这会产生实心条纹,不是空隙常见错误:背景不显示或全是黑/白最常踩的坑是没设 background-size,或者尺寸和渐变重复单位对不上。
2026-04-17 23:05:42
264
原创 golang如何使用struct嵌套_golang struct结构体嵌套使用方法.txt
得先 $unwind 再 $sort + $group + $push 截取。5.0+ 可用 $setWindowFields,但注意它不能跟在 $lookup 后面用——聚合管道里一旦出现 $lookup,后续就不能用窗口函数$lookup + $group 组合时,嵌套数组导致 $sum 失效这是最常被忽略的问题:$lookup 返回的是数组(哪怕只匹配一条),如果你直接对这个数组字段做 $sum,结果永远是 0 或 NaN——因为 $sum 不会自动展开数组,它只对数值型字段有效。
2026-04-17 23:02:04
184
原创 Golang如何用select监听channel_Golang select多路复用教程【必备】
default 仅非阻塞轮询,非超时机制。短生命周期操作(如单次 HTTP 请求)优先用 context.WithTimeout,自动管理 cancel 和 timer 释放需要手动参与 select 的场景,改用 time.NewTimer,并在退出前显式调用 timer.Stop()default 不是超时——它不计时,只是“现在没数据,我先干点别的”,误当超时会导致逻辑失控示例错误写法:select { case 在 for 循环里每轮都这么写,等于每秒造一个永不销毁的 timer。
2026-04-16 19:40:17
190
原创 SQL如何解决GROUP BY导致查询变慢_利用覆盖索引进行优化
GROUP BY a, b 时,索引必须是 (a, b) 或 (a, b, c) 这类左前缀结构,(b, a) 不行SELECT a, b, SUM(c) 要走覆盖,索引至少得是 (a, b, c);如果只建了 (a, b),c 还得回表查,不覆盖注意隐式类型转换:比如 user_id 是 BIGINT,但 WHERE user_id = '123' 传了字符串,索引就失效,覆盖自然也崩了建覆盖索引时最容易踩的三个坑覆盖索引不是字段堆得越多越好,顺序、冗余和维护成本都得算进去。
2026-04-16 19:39:20
228
原创 c++怎么在不加载整个大文件的情况下获取其SHA256校验值【进阶】
会错位用 file.gcount() 检查每次 read() 实际读了多少字节,文件末尾往往不满缓冲区,不能直接用 sizeof(buf)别用 file.eof() 当循环条件——它只在尝试读失败后才置位,容易多算一次OpenSSL 的 EVP_MD_CTX 必须正确初始化和清理很多人只记得 EVP_DigestInit,却漏掉 EVP_DigestFinal_ex 后的 EVP_MD_CTX_free,导致内存泄漏;另外,EVP_sha256() 返回的是 const 指针,别试图 free 它。
2026-04-16 19:38:25
50
原创 如何强制SQL字段必须是大写_利用触发器实现格式统一
函数体必须用 RETURN NEW,漏掉这句会导致整行被丢弃(INSERT 失败,UPDATE 变成 NULL)不要在触发器里调用耗时函数(比如远程 HTTP 请求),PG 会阻塞整个事务如果字段是 TEXT 类型,UPPER() 没问题;但如果是 BYTEA 或 JSONB,UPPER() 会报错CREATE OR REPLACE FUNCTION uppercase_name() RETURNS TRIGGER AS $$ BEGIN NEW.name := UPPER(NEW.name);
2026-04-16 19:37:28
207
原创 mysql数据库如何通过调整读取策略提升性能_开启innodb_read_ahead
innodb_read_ahead 是什么,什么时候该开它不是“默认开启就更快”的开关,而是针对**顺序扫描大范围数据页**的预读策略。两个预读模式的区别和选哪个innodb_read_ahead 实际控制的是预读触发阈值,而具体行为由 innodb_random_read_ahead 和底层机制共同决定。真正可调的是这两个配置:innodb_read_ahead_threshold:默认 56,表示“连续访问多少个相邻页后触发线性预读”。设太低(如 8)会让小范围扫描也预读,浪费内存;
2026-04-15 21:08:11
175
原创 Go语言怎么用反射_Go语言reflect反射教程【总结】
必须传指针并调用.Elem()才能修改原变量,因reflect.ValueOf(v)返回副本不可寻址,.CanSet()为false;fmt.Println(v.CanAddr(), v.CanSet()) —— 多数情况下都是 false false正确路径只有两条:reflect.ValueOf(&v).Elem()(改已有变量),或 reflect.New(t).Elem()(生成新实例再填值)怎么安全地给 struct 字段赋值?推荐生成新实例再设值,逻辑更可控。
2026-04-15 21:07:25
175
原创 C# 异步范围Asynchronous Disposal方法 C# await using如何使用
它调用 DisposeAsync()(返回 ValueTask),而普通 using 调用同步 Dispose(),二者不可互换,且 await using 仅限局部作用域使用。</p>什么是 await using,它和普通 using 有什么区别?(不允许字段级 await using)写成 await using (var x = ...) { ... }(C# 不支持这种括号形式,只支持声明式 await using var x = ...;
2026-04-15 21:06:43
304
原创 Go语言如何用systemd_Go语言systemd服务管理教程【总结】
比如把一个长期运行的 HTTP 服务设成 Type=simple(默认值)是对的;普通服务推荐新建专用用户(如 User=appuser)WorkingDirectory 要设成程序实际需要读写配置/日志的路径,比如 /var/lib/myappEnvironmentFile 可加载环境变量(如 /etc/default/myapp),比硬编码在 service 文件里更易维护Go 程序怎么优雅响应 systemd 的 stop 信号systemd 发 SIGTERM 给进程时,默认行为是立刻终止。
2026-04-15 20:00:41
213
原创 Redis怎样利用Lua为多个Key同步续期
比如你先对 order:123 续期,再对 order:123:lock 续期,中间若断连或超时,两个 key 就会“错期”——一个还活着,一个已过期,业务逻辑就可能出乱子。真正可靠的同步续期,必须靠服务端原子执行。用 EVAL 执行 Lua 脚本批量续期的写法核心思路:把要续期的 key 列表和新 TTL 作为参数传入,脚本里遍历并统一调用 PEXPIRE(推荐用毫秒级,精度更高、避免秒级截断误差)。如果 key 已被删,PEXPIRE 返回 0,脚本照常结束,客户端可据此判断是否需重建资源。
2026-04-15 19:56:30
226
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅