- 博客(27)
- 收藏
- 关注
原创 C#怎么获取多显示器屏幕尺寸_C#如何适应不同分辨率【解析】
Screen.AllScreens 可获取所有显示器的 Bounds(含位置和宽高)及 WorkingArea,需配合 per-monitor V2 manifest 实现准确 DPI 感知,否则 Bounds 返回逻辑像素而非物理分辨率。怎么用 Screen.AllScreens 拿到所有显示器的尺寸直接遍历 screen.allscreens 数组,每个元素都带 bounds(含位置和宽高)和 workingarea(排除任务栏后的可用区域)。这不是 bug,是系统故意做的兼容层。
2026-04-12 18:12:22
170
原创 mysql如何配置全文索引停用词_mysql ft_stopword_file设置
MySQL全文索引停用词默认由内置表提供,ft_stopword_file不生效主因是未重启mysqld、未重建索引或路径/权限/编码错误;ft_stopword_file 不生效的常见原因MySQL 5.7+ 默认启用内置停用词表(如 “the”、“is”、“in” 等常见英文词),你改了 ft_stopword_file 却没效果,大概率是因为:没重启 mysqld、没重建全文索引、或者路径权限不对。你加了一堆中文词到停用词表,但引擎压根没把它们当“词”来处理,自然不进也不出停用逻辑。
2026-04-12 18:10:59
226
原创 Python 中使用集合解包生成 Literal 类型的正确实践
python 运行时允许用 literal[*set] 动态构造字面量类型,但静态类型检查器(如 mypy、pyright)不支持解包操作,会导致类型检查失败;类型检查器报错:Unpacked arguments cannot be used in type argument lists这段代码在运行时完全合法:Python 解释器会成功执行 Literal[*top_fruits],并生成一个有效的类型对象(实际等价于 Literal[Fruit.Watermelon, Fruit.Banana])。
2026-04-12 18:10:04
227
原创 Django怎么优雅发送邮件_Python配置SMTP后端实现异步通知
需确认EMAIL_BACKEND为smtp后端、使用应用专用密码、适配465/587端口,并用线程实现异步发送。SMTP配置后邮件发不出去,send_mail 卡住或报 ConnectionRefusedError根本原因通常是 Django 默认用同步方式连 SMTP 服务器,而本地开发环境没装邮件服务,或生产环境防火墙/端口没放开。它不是“高级版”,而是“必须用”的底层接口。Django 不会自动切换,靠你手动区分。
2026-04-12 18:07:37
370
原创 html标签怎样表示方向变化_bdo标签实际用途少原因【介绍】
仅在需逐字符视觉翻转(如调试、镜像效果)时不可替代。<bdo> 标签确实存在,但绝大多数 Web 项目里根本用不到它——不是因为它没用,而是现代布局和 Unicode 双向算法(Bidi Algorithm)已经接管了绝大部分方向控制需求。为什么 <bdo> 在真实项目中几乎不出现浏览器渲染文字方向时,默认依赖 Unicode Bidi 算法自动判断 LTR(左到右)或 RTL(右到左)文本流。只要文本本身含阿拉伯、希伯来等 RTL 字符,或显式加了 dir 属性,<bdo> 就是冗余的。
2026-04-12 18:04:40
38
原创 如何从SQL中提取年份或月份:EXTRACT与日期函数用法
时区、索引及函数使用需注意。常见错误是传入 '2023-05-12' 这种文本而没转类型。字段是 VARCHAR 存的日期(比如 '2023/05/12'),YEAR(col) 会尝试解析,但遇到 '2023-13-01' 这种非法值就返回 0,不报错也不警告MONTH() 对 NULL 返回 NULL,但对空字符串 '' 会返回 0,和 YEAR() 行为不一致想取“2023-05”这种格式,别拼字符串,用 DATE_FORMAT(col, '%Y-%m') 更稳;
2026-04-11 00:12:39
242
原创 怎样导出用于负载测试的样本数据_LIMIT限制数据量提取
注意以下几点:新端口不能是常用服务端口(如 21、22、80、443、3306),避免冲突或被误判为攻击行为必须选高位端口(建议 10000–65535 范围内),避开 Linux 保留端口(1–1023)修改后浏览器地址栏需手动更新为 http://你的IP:新端口,否则打不开如果保存后无法访问,大概率是防火墙未放行——别急着回滚,先看下一步CentOS/Ubuntu 系统防火墙放行新端口宝塔不接管系统级防火墙,仅管理自身服务。端口修改后,必须显式放行新端口,否则请求根本到不了面板进程。
2026-04-11 00:11:51
305
原创 如何解决ORA-28040没有匹配的验证协议_sqlnet.ora版本兼容设置
需在服务端sqlnet.ora中配置SQLNET.ALLOWED_LOGON_VERSION_SERVER(如设为10),并重启监听器,同时确保JDBC驱动版本兼容(至少ojdbc7)。本质是 oracle 12c 及以后默认禁用了旧版认证协议(如 sqlnet.allowed_logon_version 对应的 8–10 级),而老客户端(比如 oracle 11g 客户端、某些 jdbc thin 驱动旧版、pl/sql developer 早期版)只支持低版本验证协议,一连就报这个错。
2026-04-10 19:35:32
313
原创 怎样跨库跨表导出JSON数据_结构与数据分离提取
SELECT CONCAT('[', GROUP_CONCAT(JSON_OBJECT('id', id, 'title', title) SEPARATOR ','), ']') FROM posts WHERE status = 1 LIMIT 1000:拼成数组,适合小结果集更安全的做法是用游标或应用层分批:每次查 500 行,每行 JSON_OBJECT,输出一行一个 JSON 对象(NDJSON 格式)注意:JSON_OBJECT 会把 NULL 转成 null,但空字符串 '' 还是 "";
2026-04-10 19:32:51
192
原创 如何加固SQL环境部署_删除默认安装的示例数据库
不能删除information_schema和mysql库,仅可安全删除test等明确标注的示例库(如sakila、world),需先核查进程、禁用自动重建逻辑、逐个DROP并刷新权限,再清理匿名用户及加固认证。删掉 mysql、test、information_schema 这几个库?快速筛选注意大小写:Linux 下库名区分大小写,Test 和 test 是两个库安全删除示例库的正确姿势直接 DROP DATABASE 不够——得先关掉可能的自动重建逻辑,再删,否则下次重启或运行初始化脚本又冒出来。
2026-04-09 19:41:56
225
原创 SQL实现按用户偏好进行分组汇总_自定义聚合规则
JSON_OBJECT_AGG 的 key 必须是单值,不能是表达式,所以得先用子查询或 CTE 把 pref_type 和 pref_value 拆成两列MySQL 的 GROUP_CONCAT(DISTINCT pref_value ORDER BY pref_value SEPARATOR '|') 要显式加 DISTINCT,否则同一用户多次设置同一偏好会重复出现聚合前务必 WHERE pref_value IS NOT NULL AND pref_value!
2026-04-09 19:39:23
274
原创 SQL删除视图会删掉原数据吗_DROP VIEW的安全性分析
视图本质是保存在数据库字典里的 SELECT 语句,它不存数据,也不占实际存储空间(物化视图除外,但那是另一回事)。有人误以为“删了视图=删了它依赖的表”,其实连依赖检查都不会触发(除非加了 CASCADE,但那也只影响其他视图,不影响基表)。别删视图,那是徒劳;删视图可以,但得同步确认 BI 工具、定时任务、API 层是否还调用它MySQL 8.0+ 支持可更新视图(INSERT/UPDATE 走视图),但 DROP VIEW 依然不影响底层表结构或数据删视图前必须检查的三件事不是所有视图都能安全删。
2026-04-08 00:10:21
204
原创 如何利用SQL嵌套查询进行数据去重_配合窗口函数
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) 是核心:按用户分组,按时间倒序排,每组第一行就是最新记录嵌套只是载体:外层筛出 rn = 1 的行,内层负责算编号,不能反过来把 ROW_NUMBER() 放在外层常见错误是漏写 PARTITION BY,导致全表只编 1 个号;SQLite 在 3.25.0+ 才支持 ROW_NUMBER(),老版本只能用自关联或 GROUP BY + MAX() 模拟,但容易丢字段。
2026-04-08 00:09:51
210
原创 CSS如何避免浮动元素换行_计算所有浮动元素的总宽度不超过父容器宽度
这不是 bug,是 float 的原始行为逻辑。务必用浏览器开发者工具的「盒模型高亮」确认每个浮动项实际占位宽度父容器不能设 overflow: hidden 或 auto 以外的值来“强制包裹”,否则可能隐藏溢出而非阻止换行百分比宽度要小心:父容器若带 padding,子项用 100% 会超(因为百分比基于 content box,而 padding 是额外加的)用 display: flex 替代 float 是最稳解法现代布局中,float 本就不该用于多列排列。
2026-04-07 00:02:54
265
原创 JavaScript借用构造函数继承解决引用属性共享问题
借用构造函数继承能避免引用类型属性共享,因为每次创建子类实例时都通过call/appl调用父类构造函数,为每个实例独立初始化属性;为什么原型链继承会导致引用属性共享当通过原型链实现继承时,父类的引用类型属性(如数组、对象)会被所有子类实例共用。// ['red', 'blue', 'green'] ← 被意外修改了借用构造函数继承的核心做法在子类构造函数内部,用 call 或 apply 调用父类构造函数,让父类中的 this 指向当前子类实例。
2026-04-07 00:01:46
237
原创 CSS如何实现Bootstrap悬停放大效果_利用transform缩放属性
必须配合 transition 才有缓动效果,比如 transition: transform 0.2s ease-in-out;别在父容器上设 overflow: hidden 后又对子元素做 scale(1.1)——放大会被裁掉,Bootstrap 的 .card 就因此常加 overflow: visible 或留出边距如何复刻 Bootstrap 5 的卡片悬停放大行为Bootstrap 5 的 .card 默认不带 hover 放大,但它的 .card-img-top 和 .btn 有。
2026-04-06 00:03:01
156
原创 Go语言怎么做分布式事务_Go语言分布式事务教程【精通】
Seata-Golang兼容性差,生产建议Saga+消息队列最终一致性兜底。这不是遗漏,是设计取舍:Go 倾向让开发者显式选择、组合、控制分布式一致性逻辑,而不是封装一个“开箱即用但黑盒难调”的事务抽象。这意味着你写 db.BeginTx() 只管单数据库,跨服务、跨库、跨消息队列的操作,必须自己编排状态、重试、补偿、幂等——没捷径。用 Saga 模式实现跨服务事务最现实Saga 是 Go 生态中最常落地的方案:把一个分布式操作拆成一系列本地事务,每个步骤有对应的补偿操作。
2026-04-06 00:01:09
65
原创 Linux用户如何挑选HTML函数工具_开源工具适配汇总【汇总】
Linux用户处理HTML可选用htmlq、pup、BeautifulSoup、xmlstar及Shell函数五类工具:htmlq支持CSS选择器查询;pup用Go编写,容错性强;以下是适用于Linux用户的HTML函数工具挑选方案与开源工具适配汇总:一、使用htmlq进行命令行HTML查询htmlq是专为Linux终端设计的轻量级HTML查询工具,其核心能力是将CSS选择器语法映射为命令行输出,实现类似jq对JSON的操作体验,适合脚本中嵌入HTML字段提取逻辑。立即学习“前端免费学习笔记(深入)”;
2026-04-05 00:06:01
200
原创 如何测试RMAN通道分配_ALLOCATE CHANNEL DUMMY检查存储设备连通性
ALLOCATE CHANNEL DUMMY 不能测存储连通性,因它仅解析语法、模拟通道对象,不触发I/O、不验证路径可写、不加载设备库;—— 这条命令强制访问所有归档路径(包括 LOG_ARCHIVE_DEST_1 和 LOG_ARCHIVE_DEST_2),且会尝试删除输入归档(只校验,不真删)若用 SBT,必须提前加载对应库:CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/path/to/libobk.so';
2026-04-05 00:04:56
278
原创 bootstrap怎么设置表单为水平布局
form-group 和 col-sm-2 等 v4 类已失效;v4 的 form-group row + col-form-label 是历史写法,v5 不再支持其栅格逻辑col-sm-2 在小屏下可能撑不开、label 被截断,或 input 溢出容器真正响应式的做法是用 col-auto 控制 label 宽度,col 让 input 自适应,天然适配 xs → xxl复选框/单选按钮怎么水平对齐它们不能套 row + col 做左右对齐,因为语义和交互逻辑不同。
2026-04-04 12:27:23
244
原创 宝塔面板安装后无法修改配置文件_处理chattr锁定属性
宝塔面板配置文件被 chattr 锁定,修改保存失败宝塔面板安装后部分配置文件(如 /www/server/panel/vhost/ 下的站点配置、/www/server/panel/data/ 中的主配置)可能被 chattr +i 加了不可修改属性,导致在面板里编辑保存时提示“权限不足”或直接无响应——这不是权限 755/644 的问题,是文件系统级锁定。不是异常,是宝塔主动行为:当开启“网站防篡改”或“面板安全入口”时,它会用 chattr +i 锁定关键配置防止被恶意覆盖。
2026-04-04 12:26:17
221
原创 如何实现SQL特定业务逻辑钩子_利用触发器扩展功能点
真正能做的:只读查询(SELECT ... INTO 变量)、简单计算、INSERT/UPDATE/DELETE 其他表、调用无副作用函数如果必须加锁或跨表强一致性校验,得把逻辑提到应用层,或改用存储过程封装整个操作MySQL 8.0+ 支持在触发器中调用 GET_LOCK() 做轻量级互斥,但要注意锁生命周期和超时,别忘了 RELEASE_LOCK()PostgreSQL 的 AFTER ROW 触发器拿不到新旧行完整状态?提前解构BEFORE 触发器可修改 NEW,AFTER 不行;
2026-04-03 00:01:43
180
原创 MySQL中如何利用MD5函数加密字符串_MySQL数据加密函数
MD5函数返回32位小写十六进制字符串,非二进制值,不适用于密钥派生或密码存储;如果真要存二进制形式,用 UNHEX(MD5('hello')),但字段类型得是 BINARY(16) 或 VARBINARY(16)MD5() 是确定性函数:相同输入永远得相同输出,毫无盐值(salt)可言,完全不防彩虹表MySQL 8.0+ 已明确标记 MD5() 为“不安全哈希”,审计或合规场景下会被拦截别用MD5做密码存储,连SHA2都比它强一点用 MD5() 存用户密码等于把钥匙挂在门把手上。
2026-04-03 00:00:34
239
原创 HTML怎么实现拖拽上传区域高亮_HTML drop zone视觉反馈结构【教程】
实操建议:给目标区域绑定 dragover 事件,第一行必须写 event.preventDefault()只阻止 dragover 就够了,dragenter 和 drop 不需要(但 drop 里也要 preventDefault 防止页面打开文件)别在父容器上绑而子元素没透传,检查事件是否真的到达了你写的那个 div用 dragenter 和 dragleave 控制高亮开关靠 dragover 持续触发来判断“是否在区域内”容易误判——它每秒触发十几次,且子元素进出也会反复触发。
2026-04-02 00:01:47
211
原创 Redis怎样监控集群节点间的网络带宽消耗_评估大规模集群Gossip协议带来的内网通信开销
用 redis-cli --cluster check + 抓包定位异常 Gossip 流量当发现某几个节点间内网带宽持续偏高(比如阿里云/腾讯云控制台显示节点间 ENI 流量突增),先排除是否因配置或状态异常导致 Gossip 频繁重传:运行 redis-cli --cluster check <any-node-ip>:6379,检查是否有 FAIL 状态节点未被及时摘除,或 NOADDR 节点残留——这类异常会让其他节点每秒多次尝试重连并重发 gossip 消息;
2026-04-02 00:00:49
179
原创 Python字典底层实现_dict哈希结构解析
该结构维护dk_indices数组(存储索引偏移)和可选的dk_entries数组(存储键值对),二者共同构成稀疏哈希表。二、键哈希计算与索引映射机制Python对任意键对象调用PyObject_Hash()获取64位哈希值,随后截取低log2(dk_size)位作为初始桶索引。三、开放寻址与探查序列生成当目标桶已被占用时,字典不采用链地址法,而是执行线性探查变体:以初始索引为起点,按固定步长递增偏移,直至找到空槽或命中已存在键。1、分配新dk_indices数组,长度为原值两倍且为2的幂。
2026-04-01 23:35:24
204
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅