- 博客(83)
- 收藏
- 关注
原创 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-26 19:21:05
171
原创 mysql如何配置审计日志输出_mysql audit_log_format设置
MySQL 审计日志的 audit_log_format 只支持两个值:NEWLINE(已弃用)、JSON,没有 STATEMENT 选项。在线 SET 不生效,该变量是只读的(read_only)audit_log_policy=ALL 不等于“记录所有语句”很多人以为设了 audit_log_policy=ALL 就能抓到每个 SELECT 或 INSERT,其实它只控制“审计事件类型”的粒度,比如连接、断开、查询开始/结束、表访问等,不控制 SQL 语句体是否写入日志。
2026-04-26 19:16:35
162
原创 如何安全清理数据库中未引用的图片文件
本文介绍一种高效、安全的方式,批量删除服务器目录中未被数据库记录引用的图片文件,避免误删和路径错误,适用于 php 环境下的 cms 或电商系统维护。需特别注意以下几点:?仅比对文件名而非完整路径:数据库字段(如 picture)通常只存相对文件名(如 'product_abc.jpg'),而非 './assets/image/products/product_abc.jpg',因此必须使用 $file->getFilename() 而非 $file->getPathname() 进行匹配;
2026-04-25 22:03:27
35
原创 如何解决变异表报错_ORA-04091复合触发器COMPOUND应用
ORA-04091本质是Oracle为保障读一致性而禁止在行级触发器中查询正被修改的表;常见触发场景包括:行级触发器里查本表(哪怕只查一行)函数被 SQL 调用,而该函数内部又查了正在被 UPDATE 的表级联触发器中,A 表触发器改 B 表,B 表触发器再回头查 A 表COMPOUND TRIGGER 是怎么绕过变异限制的?
2026-04-25 22:00:31
199
原创 WordPress 动态变量短代码:基于用户输入自动匹配预定义值的通用解决方案
正确做法是把过程体里关键语句(尤其是带 WHERE、JOIN、子查询的)拎出来,手动补上实际参数值再 EXPLAIN:EXPLAIN SELECT * FROM orders WHERE user_id = 123 AND status = 'paid';如果语句含变量(如 WHERE id = in_id),MySQL 5.7+ 支持用 EXPLAIN FORMAT=TRADITIONAL + 手动替换测试,8.0 可直接用 EXPLAIN ANALYZE 看真实执行路径。
2026-04-24 23:34:41
174
原创 HTML怎么标注字数限制提示_HTML实时字数统计占位【详解】
" 是多个 UTF-16 码元,length 会返回 4 或 5,实际应算作 1 字安全做法:用 [...value].length 展开为真正字符数组(ES2015+),或用 Array.from(value).length如果后端按字节计数(如 MySQL utf8mb4),JS 里无法精确模拟,此时建议前端只做友好提示,以服务端校验为准示例逻辑:function updateCount(el, counterEl, max) {<br> const text = el.value;
2026-04-24 23:32:12
192
原创 MySQL怎样在触发器中引用新旧数据行_NEW与OLD关键字详解
用 <div> 堆砌反而丢失结构信息,影响可访问性和 seo。推荐竖线用 ::before 伪元素画在 <ol> 上,宽度设 2px,height: 100%节点圆点用 <li>::after,position: absolute 定位,避免影响文字流移动端断点要重置竖线位置 —— 比如小屏改用顶部横线 + 左右堆叠内容,别硬撑垂直布局时间轴内容过多时怎么避免滚动卡顿长列表时间轴(比如 100+ 条历史记录)直接渲染会拖慢首屏,但又不能简单分页——用户需要上下滑动浏览连续时间流。
2026-04-24 23:29:23
219
原创 如何存储MongoDB的爬虫抓取数据_动态字段与无模式宽容度.txt
场景明确:清洗逻辑依赖上游结果(比如“只保留近30天有订单的用户”),且上游数据集不大(风险点:嵌套层超过2层、子查询含GROUP BY或ORDER BY、外层JOIN后又套子查询替代优先级:CTE > 临时表 > 嵌套查询(注意:MySQL 5.7不支持CTE,得降级用临时表)MySQL里NOT IN导致结果为空的坑这是ETL清洗中最隐蔽的错误之一:当子查询返回NULL时,NOT IN整个表达式直接判为UNKNOWN,最终过滤掉所有行。你查不到数据,不是没匹配上,是SQL三值逻辑把你“静音”了。
2026-04-22 19:54:01
118
原创 HTML怎么创建时间轴布局_HTML结构化时间线写法【方法】
用 <div> 堆砌反而丢失结构信息,影响可访问性和 seo。推荐竖线用 ::before 伪元素画在 <ol> 上,宽度设 2px,height: 100%节点圆点用 <li>::after,position: absolute 定位,避免影响文字流移动端断点要重置竖线位置 —— 比如小屏改用顶部横线 + 左右堆叠内容,别硬撑垂直布局时间轴内容过多时怎么避免滚动卡顿长列表时间轴(比如 100+ 条历史记录)直接渲染会拖慢首屏,但又不能简单分页——用户需要上下滑动浏览连续时间流。
2026-04-22 19:52:38
119
原创 golang如何使用expvar暴露运行时指标_golang expvar运行时指标暴露步骤
因为 expvar.NewInt 创建的是“未注册的裸变量”,它只是个 *expvar.Int 实例,还没放进全局注册表。expvar.Publish("http_requests_total", reqCount)更省事写法:直接用 expvar.Register(&reqCount)(注意传指针)常见错误:在函数内部定义 var x = expvar.NewInt("tmp"),然后没逃逸、被 GC 回收,指标就消失了变量名不能含点号(如 "api.latency"),会被当成嵌套对象处理;
2026-04-21 23:09:22
196
原创 如何防止SQL注入泄露元数据_限制数据库信息查询权限
MySQL 中如何禁用 information_schema 查询默认情况下,普通用户也能查 information_schema,这是 SQL 注入后获取表名、列名的主要跳板。实操上,直接回收对 information_schema 的 SELECT 权限无效(MySQL 8.0+ 允许显式授权但不生效),真正有效的是:限制用户只能访问指定数据库,并关闭元数据访问开关。注意:不能删或重命名 pg_catalog,那是核心 schema;泄露常发生在误授了这类权限,或者用了 sa 登录的应用连接字符串。
2026-04-21 23:08:04
161
原创 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-21 23:06:46
305
原创 如何提升SQL数据更新的安全性_使用行级锁与悲观锁机制
确保 WHERE 字段有索引,否则 SELECT ... FOR UPDATE 或 UPDATE ... WHERE 可能锁不住具体行,甚至锁整张表用 EXPLAIN 看执行计划,确认 type 是 const、ref 或 range,不是 ALL避免在事务里做 HTTP 请求、文件读写等长耗时操作,锁持有时间越长,并发冲突概率越高SELECT ... FOR UPDATE 不生效的常见情况它只在事务内、可重复读(REPEATABLE READ)或串行化(SERIALIZABLE)隔离级别下才真正加行锁;
2026-04-21 23:05:21
258
原创 持久化存储如何适配不同浏览器?解决隐私模式下存储失败的指南
持久化存储在不同浏览器中表现不一致,尤其在隐私模式下容易失败,核心原因不是代码写错了,而是各浏览器对存储 API 的限制策略不同——比如 Safari 默认禁用第三方 Cookie 和 localStorage,Firefox 隐私窗口会清空 sessionStorage 且部分版本拒绝 indexedDB 打开请求,Chrome 则在“无痕模式”下允许 localStorage 写入但会在关闭窗口时立即丢弃。
2026-04-21 23:04:10
248
原创 HTML函数开发用防眩光屏幕更舒适吗_显示面板类型选择【指南】
防眩光(雾面)屏能显著降低前端开发者视觉疲劳——通过散射环境光消除反光,提升长时间编码可读性,虽轻微降低对比度与色彩饱和度,但对写代码无害且更护眼。HTML 函数开发本身和屏幕防眩光无关,但长时间写代码时,防眩光屏幕确实能显著降低视觉疲劳——关键不在“函数”,而在你每天盯屏 8 小时的生理现实。Mokker AI AI产品图添加背景。
2026-04-20 21:35:00
127
原创 SQL分组聚合优化_GROUP BY索引与优化方案
合理设计索引可加速GROUP BY:索引应按WHERE列、GROUP BY列、ORDER BY列顺序覆盖,遵循最左前缀原则;避免在分组或条件中对字段使用函数或隐式类型转换。GROUP BY 本身不直接使用索引,但合理设计索引能显著加速分组聚合过程——关键在于让数据库先通过索引快速定位/排序数据,再执行分组,避免全表扫描和临时文件排序。推荐索引:INDEX(status, dept)。这样过滤后数据天然按 dept 有序,分组无需额外排序。
2026-04-20 21:33:48
61
原创 宝塔面板网站无法发邮件怎么办_检查PHP函数与SMTP配置
进宝塔 → 网站 → PHP 设置 → 禁用函数列表,删掉 mail确认 sendmail_path 在 PHP 配置里没被注释或设为空(宝塔界面“配置文件”里搜这一行)重启 PHP 服务(不是重启面板或服务器)写个测试脚本:<?Gmail 要开启两步验证再生成 App Password插件里 SMTP 主机填 smtp.qq.com,端口选 465(SSL)或 587(TLS),别混用宝塔自带的邮件推送(如登录通知)失败这是宝塔后端自己的 Python 脚本发信,和网站 PHP 无关。
2026-04-20 21:32:34
279
原创 如何交换表分区_ALTER TABLE EXCHANGE PARTITION实现数据快速导入导出
EXCHANGE PARTITION 为什么能“秒级”导入导出数据因为 exchange partition 不移动实际数据文件,只交换元数据(比如分区定义、段名、高水位等),本质是把两个表的物理存储“换个名字”。源表必须和目标分区所属表具有完全相同的列定义(包括隐式类型转换不被允许)源表不能有主键或唯一索引(除非目标表也启用 INCLUDING INDEXES,且索引结构匹配)源表不能有外键引用,也不能被外键引用(否则需先禁用约束)目标分区必须为空(EXCHANGE 不会清空它,只做交换;
2026-04-20 21:31:13
250
原创 SQL注入防御技术方案_基于正则表达式的输入清洗
正则清洗不能防SQL注入,因其无法覆盖宽字节、编码混淆、函数嵌套等绕过方式;真实攻击者早就不靠 ' 或 UNION 明文出现来注入了——用宽字节、注释符、编码混淆、函数嵌套,WHERE id = 1 AND (SELECT ...) 这类结构连正则都难识别边界。占位符,数据库引擎自动隔离语义若必须拼接表名/字段名(如动态排序),只允许从预定义白名单中取值:$valid_fields = ['name', 'created_at', 'status'];
2026-04-20 21:29:48
98
原创 怎么为MongoDB事务调优:将读操作尽量移到事务外面执行
仅两类读必须留在事务内:依赖一致性的读和用于写冲突判断的读。其他所有读都该挪走。常见误留场景包括:collection.countDocuments() 统计用于日志或监控(与业务逻辑无关)collection.find().toArray() 加载配置或字典数据(这些数据本身不参与事务逻辑)为日志拼接用户昵称而查 users.findOne()(昵称不参与扣款/状态变更)怎么安全地把读移到事务外核心原则是:**读操作必须在事务开始前完成,且结果传入事务函数作为不可变输入**。
2026-04-19 23:24:12
223
原创 Golang slice扩容机制原理_Golang切片扩容教程【高效】
append 触发扩容的唯一条件是 len(s) == cap(s)只要当前长度还没撑满容量,append 就不会分配新底层数组,直接在原数组末尾写入。已知最终长度约 200?注意它的 cap 可能远大于 len,但若不够,扩容后就脱离原数组,失去共享优势错误示范:s := make([]int, 0);i++ { s = append(s, i) } —— 至少触发 10 次扩容,底层数组拷贝累计超 100KB用 len 和 cap 差值判断是否“快满了”,比猜更可靠别凭经验估算“差不多该扩容了”。
2026-04-19 23:23:01
223
原创 MySQL升级如何回滚到旧版本_灾难恢复方案与快照备份恢复
唯一可行回滚路径是用旧版mysqld启动升级前备份的干净副本并切流,且备份须满足:①导出含--routines --events --triggers --single-transaction;MySQL升级后不能直接卸载重装旧版本升级后的MySQL实例,数据字典、mysql系统库结构、InnoDB redo log格式、权限表字段(如authentication_string哈希方式)、甚至default_authentication_plugin默认值都可能已被新版本改写。
2026-04-19 23:21:51
201
原创 mysql如何通过yum源快速安装_mysql官方yum安装教程
真正要装的是 mysql-community-server,它依赖官方 yum 源系统自带源里没有这个包,必须先加 MySQL 官方 repo某些云厂商镜像(如阿里云 EPEL)会覆盖官方 repo 配置,导致 yum repolist 看不到 mysql80-community怎么加官方 yum 源才不翻车官网下载的 mysql80-community-release RPM 包,本质只是写几个 .repo 文件到 /etc/yum.repos.d/,但容易被已有配置干扰。
2026-04-19 23:19:03
277
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅