自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 Master公式秒算递归时间复杂度:原理与实战

Master定理(Master公式)是分析递归算法时间复杂度的有效工具,适用于形如T(n)=aT(n/b)+f(n)的递归式。它通过比较f(n)与n^log_b(a)的增长率,快速确定时间复杂度:若f(n)增长慢,复杂度由n^log_b(a)主导;若相当,则乘以logn;若f(n)增长快,则直接取f(n)。例如,二分查找为O(logn),归并排序为O(nlogn)。使用Master定理需注意递归式需满足b>1,且能准确识别a、b和f(n)。掌握该定理可大幅提升递归算法分析的效率和准确性。

2026-05-29 21:23:17 226

原创 CentOS版本差异详解和系统信息查看方法

本文分析了CentOS各版本的核心差异及关键系统信息查询命令。从CentOS6到CentOS8再到CentOS Stream,系统经历了从SysVinit到systemd、从yum到dnf包管理器的转变,其中CentOS Stream作为滚动预览版更适合测试环境而非生产系统。文章重点介绍了CPU(lscpu)、内存(free)、磁盘(lsblk)、内核(uname)等硬件信息的查询方法,以及网络配置(ipaddr)、进程监控(top)、日志查询(journalctl)等运维常用命令。这些命令组合能帮助管理员

2026-05-29 21:21:05 253

原创 SQL分组查询不会用?手把手教你Group By和聚合函数

SQL中GROUP BY与聚合函数的配合使用技巧:GROUP BY用于按字段分组数据,聚合函数(如COUNT、SUM、AVG等)则在每个分组内进行统计计算。使用时需注意:1) SELECT后只能出现分组字段或聚合处理字段;2) 常用聚合函数包括计数、求和、平均值等;3) HAVING用于聚合后条件过滤,不可用WHERE替代。通过合理搭配可实现高效数据分组统计,如计算每月平均销售额或用户登录次数等分析需求。文末附有多个图书列表链接。

2026-05-29 21:18:43 253

原创 Excel通配符批量替换教程 一秒搞定相似内容

摘要:Excel通配符是简化批量操作的实用工具,主要包含问号(?)和星号(*)。问号匹配单个任意字符,星号匹配多个字符。使用时需勾选"单元格匹配"选项,遇到特殊符号需用波浪号(~)转义。通配符能大幅提升数据替换效率,如统一地址格式等批量操作。对于复杂场景,可结合分列、SUBSTITUTE函数等方法处理。注意替换前设置文本格式以避免数据格式错乱问题。掌握这些技巧可节省大量手动操作时间。

2026-05-29 21:16:00 295

原创 DataTable排序与List顺序不一致?两个方法搞定

本文讨论了DataTable排序问题的解决方案。主要介绍了两种方法:1)通过DataColumn的Ordinal属性手动控制列顺序,适用于固定顺序但维护成本较高;2)使用DataView的Sort属性实现动态排序,通过添加排序序号列或指定排序字段来保持与List一致的顺序。文章还指出了实际开发中可能遇到的坑,并提供了相应的解决思路。

2026-05-27 18:53:10 327

原创 CAD文字样式设置技巧:三步搞定快速创建与修改

本文介绍了CAD中创建和调整文字样式的实用技巧。通过"格式"菜单或ST命令可调出文字样式管理器,新建样式时建议选用SHX字体并设置合适的宽度因子。修改样式时需注意文字对象是否关联当前样式,若未更新可通过属性面板重新指定样式。文章还提供了常见问题的解决方法,帮助用户更好地掌握CAD文字样式管理。

2026-05-27 18:51:07 366

原创 Python循环不迷路:for和while核心用法详解

本文介绍了Python中for和while循环的使用场景与注意事项。for循环适合遍历可迭代对象,简洁高效但要避免在遍历时修改原列表;while循环适用于不确定次数的循环,需警惕死循环问题。选择循环的核心原则是:明确次数用for,动态条件用while。文章还讲解了循环与else子句的配合使用,以及for循环相比while循环更Pythonic的写法特点。

2026-05-27 18:47:20 411

原创 数据分析中count函数怎么用才能更快更准

本文探讨了count函数在数据分析中的使用技巧与优化方法。文章指出,虽然count()和count(1)在MySQL和PostgreSQL等数据库中性能差异不大,但实际查询速度主要取决于数据量和索引设计。作者建议优先使用count(),并通过创建覆盖非空字段的迷你索引来提升性能。针对大表计数慢的问题,提出了改用MyISAM引擎(牺牲事务支持换取速度)等解决方案。文中还分享了处理500万行订单表时的实际案例,说明合理选择索引对count操作效率的关键影响。

2026-05-25 21:09:07 338

原创 链表操作从零开始:创建、插入、删除全搞懂

链表是一种基础而强大的数据结构,初学者常因指针操作感到困惑。其核心原理是将数据存储在节点中,每个节点包含数据域和指向下一节点的指针。创建链表时需先定义节点结构体,动态分配内存并检查分配结果。插入节点时要注意指针修改顺序,避免丢失原有连接;删除节点后必须释放内存防止泄漏。头尾节点的操作需要特殊处理,这些边界情况是实际开发中的常见问题。理解节点和指针的关系后,链表操作就会变得清晰。

2026-05-25 21:01:26 361

原创 对象属性太多怎么简化?不删除属性也能变清爽

本文探讨了在不删除对象属性的前提下简化对象结构的方法。主要提出两种优化方案:1. 属性分组打包,将相关属性按业务维度组织为嵌套对象,减少顶层属性数量;2. 使用计算属性或代理模式动态生成属性值,避免显式存储冗余数据。这些方法既能保持数据完整性,又能提升代码可读性和维护性,特别适用于接口返回和复杂对象管理场景。通过结构优化和访问控制,实现了对象属性的逻辑简化与高效访问。

2026-05-25 20:57:28 364

原创 JDK动态代理到底是怎么工作的

JDK动态代理是Java反射机制的重要特性,通过Proxy类和InvocationHandler接口实现。它能在运行时动态生成代理对象,在不修改目标类代码的情况下拦截和增强方法调用。核心原理是Proxy.newProxyInstance()方法动态生成代理类字节码,通过类加载器加载并实例化代理对象。代理类实现指定接口,并将方法调用转发给InvocationHandler的invoke方法处理。开发者可以在invoke方法中添加前置/后置逻辑,实现AOP编程。这种机制广泛应用于Spring等框架,是实现方法拦

2026-05-25 20:53:08 313

原创 Word文档字体不乱码的终极解决方法

电脑字体在不同设备上显示不一致的主要原因是字体库差异。解决方法有三种:1)在Word中嵌入字体(文件-选项-保存-勾选"将字体嵌入文件");2)直接发送字体文件让对方安装;3)转换为PDF格式固定排版。建议重要文档优先使用系统自带字体或转换为PDF,特殊字体可打包发送并指导安装。

2026-05-24 18:44:12 363

原创 代码跑偏白盒补漏:判定节点覆盖全路径测试

程序测试中判定节点的覆盖是确保代码质量的关键。判定节点(如if/else语句)决定了程序执行路径,测试需覆盖所有可能分支,包括边界和异常情况。设计测试用例时,需分析输入因素和输出结果,考虑条件组合和依赖关系,通过条件覆盖、判点覆盖和路径覆盖三个层次来规划。这需要测试人员具备敏锐的逻辑思维和业务理解,才能设计出全面有效的测试用例,避免遗漏潜在故障。

2026-05-23 20:06:01 277

原创 CSS复合属性实战技巧与交互设计应用

CSS复合属性是前端开发的高效工具,通过简写规则同时控制多个子属性,能显著减少代码冗余。合理运用复合属性不仅能优化样式表结构,还能提升交互体验。例如,padding/margin等属性合并可缩减30%代码量,transition属性简化动画交互实现。在响应式设计中,background复合属性便于统一管理背景样式。但需注意复合属性会重置未指定的子属性,使用前需确认影响范围。建议从padding、margin等基础属性开始练习,逐步掌握复合属性的使用技巧。

2026-05-23 16:34:03 294

原创 Redis性能翻倍秘诀:主从复制这样配置才高效

Redis主从复制机制通过读写分离提升系统性能,主库专注写入,从库处理读取请求,有效缓解高并发场景下的单机压力。异步复制设计确保主库写性能不受影响,同时从库可水平扩展以应对读多写少场景。但需注意数据延迟问题,可通过强制主库读取、版本号判断或监控复制偏移量等策略保障关键业务数据一致性。全量复制时建议控制从库数量(2-3个为宜)以避免性能抖动。该机制以低成本实现高吞吐量,是Redis应对高并发的核心方案。

2026-05-23 16:20:34 362

原创 Excel精确查找快到飞起:VLOOKUP+INDEX MATCH实战技巧

VLOOKUP函数查找失败的主要原因包括:未设置精确匹配参数、数据格式不一致(如文本与数字混用)、查找列不在第一列、数据中存在隐藏字符等。相比之下,INDEX-MATCH组合更灵活,可实现双向精确查找且不受列位置限制。数据清洗是解决查找错误的有效方法,可使用TRIM清除空格、CLEAN去除不可见字符、VALUE/TEXT统一数据格式,以及EXACT函数处理大小写敏感问题。这些技巧能显著提高Excel数据查找的准确性。

2026-05-23 16:17:21 420

原创 MDN接入Deno数据后,Web开发怎么查兼容性

MDN全面接入Deno兼容性数据,为开发者提供一站式API兼容性查询。新增的"Deno"标签列明API支持状态及版本要求,覆盖Web标准和Node兼容层API,简化了从Node迁移至Deno或维护多运行时的开发流程。团队协作时,统一数据源减少了兼容性争议,全栈开发中共享API的支持情况一目了然。开发者只需在MDN查看兼容性表格,绿色对勾表示支持,黄色图标提示部分支持,版本号标注则需注意运行时版本匹配。该整合将Deno纳入Web标准生态,避免了文档切换的繁琐,使MDN成为更全面的兼容性查询

2026-05-23 16:04:54 322

原创 如何用 scroll 与 resize 监听页面滚动与视口大小调整

基础监听写法(不推荐直接使用):window.addEventListener('scroll', () => { console.log(window.scrollY);<br> });

2026-04-16 19:41:12 179

原创 SQL如何避免不同团队修改同一张表_基于前缀名的授权GRANT ON语法

GRANT ON 语法不支持通配符前缀匹配表名,比如 GRANT SELECT ON `team_a_%`.* TO 'user' 是非法的,MySQL 和 PostgreSQL 都会报错 ERROR 1146 (42S02): Table doesn't exist 或类似解析失败提示。行级权限(如 MySQL 8.0 的 Row-Level Security)依赖策略函数,但无法按表名动态拦截,且不支持 DDL(如 DROP TABLE、ALTER TABLE),团队仍可能误删/改他人表。

2026-04-16 19:40:16 222

原创 CSS如何使用Sass管理全局配置_通过_config文件统一CSS变量

2026-04-16 19:39:20 231

原创 如何在 Go 中精确安装指定版本的模块.txt

但默认只显示当前用户自己的连接,看不到别人(包括 root)正在跑什么——这是权限限制,不是命令没生效。(需要 SELECT 权限)注意:MySQL 8.0+ 默认隐藏系统线程,加 SHOW FULL PROCESSLIST 才能看到完整 SQL 文本,否则可能只显示前 100 字符KILL 命令到底该杀 ID 还是 QUERYKILL 有两个变体:KILL [CONNECTION] id 终止整个连接(含后续所有查询),KILL QUERY id 只中断当前正在执行的语句,连接保活。

2026-04-16 19:38:23 191

原创 CSS如何设计简洁的移动端底部固定导航_利用position-fixed实现

iOS Safari 中 position: fixed 错位是因键盘弹出或地址栏变化时视口更新不触发重排,需用 viewport 控制、事件监听重绘及避免 100vh 等方案解决。为什么 position: fixed 在 iOS Safari 里会“跳”或“错位”不是你写错了,是 iOS WebKit 对 position: fixed 的实现有历史遗留问题:键盘弹出、地址栏收起/展开时,视口尺寸变化不会触发重排,导致固定元素位置卡在旧坐标上。实操建议:立即学习“前端免费学习笔记(深入)”;

2026-04-16 19:37:26 228

原创 如何高效批量删除SQL数据_使用脚本分段删除降低压力

安全删除需分批、索引、游标分页:WHERE条件字段必须有有效索引,用id主键游标替代LIMIT,单批1000~5000行并休眠,避免fetchall全量加载。真正安全的做法是分批、带索引条件、控制每批大小和间隔:必须确保 WHERE 条件字段有有效索引(比如 status 单独无索引,但 (status, id) 联合索引可用)用 id 或自增主键做游标分页,比 LIMIT offset, size 更稳定(避免 offset 越大越慢)单批建议 1000~5000 行,太小效率低,太大锁时间长;

2026-04-15 21:07:56 207

原创 mysql添加索引导致插入变慢怎么办_索引优化与异步处理方案

加索引导致INSERT变慢是因为MySQL需同步更新所有索引,引发B+树插入、页分裂及回表路径维护,索引越多开销越大。每多一个索引,INSERT 就得多做一次 B+ 树插入、可能触发页分裂、还要维护二级索引的聚簇索引回表路径。5k~10k 行/批较稳妥确认 innodb_buffer_pool_size 足够,否则索引页频繁刷盘会拖垮吞吐异步写索引:绕不开但不能瞎搞真正的“异步建索引” MySQL 不支持,所谓异步其实是把索引维护逻辑从写入路径中剥离,靠应用层或中间件补偿。

2026-04-15 21:07:12 242

原创 如何修改Oracle用户密码_ALTER USER IDENTIFIED BY重置口令

常见错误现象:ORA-01031: insufficient privileges用普通业务账号(比如 scott)去改 hr 密码,肯定报错即使改自己密码,某些 Oracle 版本或配置下也要求有 ALTER USER 权限(尤其在 12c+ 的 PDB 场景中)确认权限:查 SELECT * FROM SESSION_PRIVS WHERE PRIVILEGE = 'ALTER USER';,但生产环境严禁这么做安全替代:用至少 8 位、含大小写+数字+符号(如 P@ssw0rd_2024!

2026-04-15 21:06:27 312

原创 Matplotlib 动画中多子图更新失效的解决方案

在提问者的代码中,问题根源有三处:axis1.plot(x_data, y_data) 被注释后未等效替代:虽然启用了 line1.set_data(...),但 axis1 的坐标轴范围未同步更新,导致新数据超出可视区域;fig.gca().relim() 和 fig.gca().autoscale_view() 作用于当前激活轴(gca),而 gca() 在循环中可能默认为最后一个子图(axis2),因此 axis1 始终未重设视图;

2026-04-15 20:00:24 89

原创 Bootstrap 5栅格系统的五列等分布局方案

Bootstrap 5 原生不支持 col-5 类,因其栅格基于12等分,5非因数;Bootstrap 5 原生不支持 col-5 类,别硬套命名规则Bootstrap 5 的栅格系统默认按 12 等分设计,所有内置列类(如 col-3、col-4)都基于 12 的因数。5 不是 12 的因数,所以没有 col-5 或 col-md-5 这种“五等分”原生类——强行写 col-5 会被忽略,页面照样单列堆叠或错位。它不依赖子元素数量,哪怕你只放 3 个 .col,它们也还是均分宽度,只是后面留空。

2026-04-15 19:56:13 57

原创 SQL统计各分组中排名前三的记录_使用窗口函数RANK

真实场景中,用户要的是“最多三条”,不是“所有排名≤3的”,这时该用 DENSE_RANK() 或加限制逻辑RANK() 适合强调名次断层(如“冠军、亚军、季军,之后是第五名”),不适合取固定数量MySQL 8.0+、PostgreSQL、SQL Server 都支持,但 SQLite 默认不支持窗口函数(需 3.25+ 且编译时启用)怎么写出真正每组只取三条的 SQL?差别在是否容忍并列:用 ROW_NUMBER() 每组一定返回最多三条,但相同分数会被强行拆成第1、第2、第3;

2026-04-14 21:42:03 351

原创 正确构建与还原特征分解:NumPy 中特征向量矩阵的列优先约定详解

在原始代码中,用户将 evecs 定义为:evecs = np.array([[6.12e-32, 0.00, 1.0], # ← 这被当作第1行(错误:应为第1列) [0.71, 0.71, 0.00], # ← 第2行 [-0.71, 0.71, 0.00]]) # ← 第3行这实际构造了一个 3×3 行向量矩阵,即每个 eigenvector 是 row;

2026-04-14 21:38:36 208

原创 Pandas 中使用交叉表为分类列生成计数汇总列

本文介绍如何利用 `pd.crosstab` 将分类变量(如顾客评分)按分组(如门店)展开为多个计数列,高效实现“一店一行、三评计数”的宽表转换,并控制列序与轴标签。以下是一个典型场景:原始 DataFrame 包含两列 'Shop' 和 'Review',其中 'Review' 取值为 'High'、'Medium' 或 'Low',但同一店铺可能有多条评分记录。目标是生成新 DataFrame,每行唯一对应一个店铺,并新增三列分别统计该店各评分等级的数量。

2026-04-13 19:10:54 120

原创 Laravel 8 中实现错误日志与调试日志分离的完整配置指南

以下是推荐的生产就绪配置方案:?阻止日志向上传播到其他通道 'permission' => 0644, ], // (可选)保留 stack 供特殊场景使用,但不设为 default 'combined' => [ 'driver' => 'stack', 'channels' => ['error', 'debug'], 'ignore_exceptions' => false, ],],?

2026-04-13 19:07:25 220

原创 c++如何将文件从C盘移动到D盘_rename跨文件系统失败处理【进阶】

得先完整复制文件内容,再删除源文件。关键点不是“怎么写循环读写”,而是怎么避免常见翻车:std::ifstream 和 std::ofstream 必须用 std::ios::binary 模式打开,否则 Windows 下换行符会被悄悄转换,文件变样别用 std::filesystem::copy_file 默认行为——它不覆盖已存在目标,默认抛 std::filesystem::filesystem_error;

2026-04-12 18:07:11 184

原创 mysql如何恢复误删的二进制日志_利用mysqlbinlog工具还原

先定位误操作位置:mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000001 | grep -A 5 -B 5 "DELETE FROM mytable"用 --start-position 和 --stop-position 精确框出「误删前最后一刻」到「误删语句开始前」之间的区间,而不是删完就停如果误删后还有其他表的正常写入,建议导出为 SQL 文件人工检查,避免用 --database 过滤时漏掉跨库操作还原到从库还是主库?

2026-04-12 18:04:16 239

原创 golang如何实现备忘录模式_golang备忘录模式实现方案

只备份业务字段,避免指针/map共享;Memento 接口只声明一个空方法(比如 restore()),实际不提供读取能力,纯作类型标记真正保存状态的结构体(如 editorMemento)定义为发起者包内非导出类型,外部无法直接访问字段发起者提供 Save() 和 Restore(m *editorMemento) 方法,把状态读写逻辑收在内部别把状态字段全塞进备忘录结构体——按需快照才是关键常见错误是把整个 struct 复制一遍,比如把 *Editor 所有字段都深拷贝进 memento。

2026-04-11 00:12:37 180

原创 如何实现SQL存储过程权限审计_记录谁执行了什么存储过程

必须在 master 数据库中创建服务器审核(CREATE SERVER AUDIT),再绑定到具体数据库的审核规范(CREATE DATABASE AUDIT SPECIFICATION)要审计存储过程执行,得在规范中添加 EXECUTE ON DATABASE::[YourDB] BY [public] 操作——注意不是 ON OBJECT::[proc_name],那是针对单个对象的权限检查,不是执行行为捕获审核默认不记录参数值,只记 object_name 和 session_id;

2026-04-11 00:11:48 215

原创 CSS如何使用Sass的Partial功能管理样式_分文件管理项目代码

Partial 文件名必须以 _ 开头,否则会被当作入口文件尝试编译@use 是现代推荐方式,它默认启用模块化作用域(变量/混合宏不会全局污染)@import 已被弃用(Dart Sass 2.0.0+ 警告),且会把所有引入内容合并到全局,容易命名冲突路径区分大小写,尤其在 Linux/macOS 下,@use 'Components/button' 找不到 _Button.scss@use 的路径怎么写才不会 404路径是相对 @use 所在文件的位置,不是相对于项目根目录。

2026-04-10 19:35:06 228

原创 Go语言怎么遍历目录文件_Go语言filepath.Walk教程【避坑】

解决办法是改用 filepath.WalkDir(Go 1.16+),它返回 fs.DirEntry,能通过 entry.Type().IsSymlink() 判断,并手动调用 os.Readlink 和 filepath.Join 跳转:err := filepath.WalkDir(root, func(path string, d fs.DirEntry, err error) error { if err!返回 filepath.SkipDir 会跳过当前目录但继续其他分支。

2026-04-10 19:32:24 256

原创 Navicat找回历史执行记录突然失效怎么办_重置与缓存清理

Navicat历史记录消失是因异常退出导致history.db处于WAL日志不一致或事务未提交状态,并非数据被删;需关闭所有实例、备份并重命名history.db及相关文件后重启,新记录将重新生成。Navicat 历史执行记录消失,history.db 文件还在但不显示navicat 的历史 sql 记录不是实时写入数据库的,而是缓存在内存中、定期刷盘。如果异常退出(比如崩溃、强制杀进程),history.db 可能处于半损坏或事务未提交状态,导致重启后记录“凭空消失”。

2026-04-09 19:41:31 59

原创 CSS如何使用自定义属性实现主题切换_通过CSS变量快速更换配色方案

CSS变量需在:root中声明(如--primary-color: #4a6fa5),通过var(--primary-color)读取;:root里声明:保证所有元素都能通过var(--primary-color)访问变量名必须以--开头,大小写敏感,--Primary和--primary是两个变量值可以是任何合法CSS值:var(--color, #333)里的#333是回退值,当变量未定义时生效/* 正确 */:root { --primary-color: #4a6fa5;

2026-04-09 19:38:54 245

原创 如何正确对 JavaScript 对象的键进行字母序排序

/ → [['c', 'd', 'a', 'b']](未排序,且结构嵌套)问题根源在于:Object.keys(obj) 已返回一个数组(如 ['c','d','a','b']),而 keysArr.push(...) 是将整个数组作为单个元素添加到 keysArr 中,导致 keysArr 变成一个包含一层嵌套数组的容器(例如 [ ['c','d','a','b'] ])。

2026-04-08 00:10:16 207

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除