- 博客(42)
- 收藏
- 关注
原创 560. 和为 K 的子数组
此方法通过前缀和和哈希表的巧妙结合,将暴力解法 O(n²) 的时间复杂度优化至 O(n),适用于大规模数据场景。和可被 K 整除的子数组(利用同余定理,修正负数取模)最长连续子数组和为 0(哈希表记录前缀和首次出现的位置通过本题,可以深入理解空间换时间的优化策略,以及哈希表在统计类问题中的高效性。
2025-03-30 16:17:12
148
转载 select、poll、epoll之间的区别(搜狗面试)
对于第二个缺点,epoll的解决方案不像select或poll一样每次都把current轮流加入fd对应的设备等待队列中,而只在epoll_ctl时把current挂一遍(这一遍必不可少)并为每个fd指定一个回调函数,当设备就绪,唤醒等待队列上的等待者时,就会调用这个回调函数,而这个回调函数会把就绪的fd加入一个就绪链表)。每次注册新的事件到epoll句柄中时(在epoll_ctl中指定EPOLL_CTL_ADD),会把所有的fd拷贝进内核,而不是在epoll_wait的时候重复拷贝。
2025-03-27 09:39:31
9
原创 64. 最小路径和
dp[i][j]表示从起点(0,0)到网格位置(i,j)的最小路径和。这个定义抓住了问题的本质——将全局最优问题转化为局部最优的累积计算。
2025-03-20 23:22:32
963
原创 基于System V的共享内存函数使用指南
的方式,它通过直接读写物理内存实现数据共享,避免了内核与用户空间的多次数据拷贝。但因其无内置同步机制,需结合。以下以System V共享内存函数为例,结合调试函数。共享内存是进程间通信(IPC)中。
2025-03-17 23:26:59
715
原创 首次在 Linux 环境下使用 Git SSH 认证上传代码的全流程指南
通过 SSH 认证在 Linux 环境下使用 Git,不仅提升了代码传输的安全性,还大幅简化了操作流程。本文从密钥生成到代码推送,覆盖了全流程操作与典型问题的解决方案。
2025-03-15 19:57:04
620
3
原创 C++进程间通信方式全解析:从管道到套接字实战代码示例
通信方式适用场景性能复杂度管道父子进程简单通信中低消息队列异步通信,松散耦合中中共享内存大数据量、实时性要求高高高信号量资源访问控制高中套接字跨网络通信可变高开发建议:优先考虑共享内存+信号量组合处理高性能场景,简单通信可使用管道或信号。
2025-03-12 19:41:39
324
原创 右值引用的定义与核心作用
右值引用的引入是C++对性能优化和资源管理的重要改进。通过区分左值/右值引用,开发者可以精准控制对象的拷贝与移动行为,显著提升程序效率。理解其底层机制(如移动构造、完美转发)是编写现代C++高效代码的关键。
2025-03-11 19:14:58
628
原创 多态的实现原理及其优点
通过上述示例,多态通过分层抽象和类型泛化,显著提升了代码的适应能力和可维护性,是面向对象设计的核心思想之一。假设需要设计一个支持多种图形(圆形、矩形)的绘图工具,要求支持动态扩展新图形类型,且能统一调用绘制方法。符合“开闭原则”(对扩展开放,对修改关闭),例如图形系统可轻松支持未来新增的椭圆、多边形等类型。基类)隔离变化,新增功能时只需扩展子类,无需修改现有代。)处理多种对象,避免大量条件判断(如。动态多态通过抽象层(如。
2025-03-11 18:23:09
314
原创 MySQL用户管理全解析:从基础到最佳实践
有效的用户管理是数据库安全的第一道防线。通过本文介绍的多层级权限控制、密码策略强化和角色管理机制,开发者可以构建起符合企业安全规范的MySQL用户管理体系。建议结合自动化运维工具定期执行用户权限审计,确保权限设置的持续合规性。
2025-03-11 16:38:05
381
原创 MySQL事务深度解析:ACID特性、隔离级别与MVCC机制
隔离级别选择金融场景优先选择REPEATABLE READ(兼顾性能与一致性)。高并发读场景可使用READ COMMITTED减少锁竞争长事务规避:MVCC依赖Undo Log保留旧版本,长事务可能导致存储膨胀锁与MVCC协同:写操作仍需要加锁,但读操作通过MVCC实现无锁化,显著提升吞吐量通过ACID特性、多级隔离策略与MVCC的协同,MySQL在数据一致性与并发性能之间找到了精妙平衡。理解这些机制,有助于开发者根据业务需求合理设计事务逻辑,构建高可靠的数据库系统。
2025-03-11 13:10:29
914
原创 C++17 string_view关键字
是 C++17 引入的轻量级、非拥有(non-owning)的字符串视图类型,用于高效地观察现有字符串数据,而无需拷贝或管理内存。
2025-03-09 17:18:21
803
原创 MySQL复合查询深度解析:概念、类型与实战指南
复合查询(Compound Query)指通过逻辑组合多个查询条件或操作,实现对多表数据的关联、筛选和计算的查询方式。它突破了单表操作的局限性,是处理关系型数据库的核心技术。技能层级能力体现初级使用IN、简单子查询中级熟练运用EXISTS、派生表高级设计CTE分层查询、优化执行计划专家级改写复杂查询为高性能JOIN操作掌握复合查询的精髓,意味着能够将零散数据转化为商业洞见。建议在真实业务场景中反复练习,同时结合EXPLAIN工具进行调优实践。
2025-03-07 15:38:35
788
原创 MySQL内置函数详解:提升数据处理效率的必备工具
避免在WHERE条件中对字段使用函数,可能导致索引失效。复杂函数嵌套可能影响性能,需结合业务场景优化。不同MySQL版本支持的函数可能不同,需参考官方文档确认兼容性通过掌握这些函数,开发者能够更高效地完成数据清洗、报表生成、动态计算等任务,充分发挥MySQL在数据处理中的优势。
2025-03-06 15:55:03
655
原创 MySQL查询语句完全指南:从基础到高阶实战
根据Stack Overflow 2023开发者调查,MySQL以51.1%的使用率蝉联最受欢迎数据库榜首。其查询语句作为数据操作的基石,支撑着全球数百万应用的日常运转。本指南将通过和,带您系统掌握从基础检索到复杂分析的全套技能。
2025-03-05 19:23:40
333
1
原创 数据库表约束全面解析与深度实践指南
数据库约束是数据完整性的第一道防线,需要平衡规范性与灵活性。OLTP系统严格使用约束数仓场景适当放宽分布式系统采用应用层校验定期进行约束有效性审查附录:常用约束查询语句-- 查看约束通过系统化的约束设计,可降低数据异常风险达73%(根据TPC-C基准测试),建立可靠的数据质量保障体系。
2025-03-04 11:28:59
456
原创 数据库数据类型详解:从基础到实战
数据类型是数据库设计的基础,合理选择数据类型可以提高数据库的性能和数据的完整性。在实际开发中,我们需要根据业务需求和数据特性,选择最合适的数据类型。希望本文能帮助你更好地理解和应用数据库数据类型!如果你有任何问题或需要进一步的帮助,请随时留言!😊。
2025-03-03 12:16:31
956
原创 从卡片柜到数字宇宙:数据库的前世今生与架构解析—— 一篇写给技术新手的数据库全景指南
从打孔卡到云原生,数据库的进化史就是一部人类驾驭信息的史诗。理解其架构不仅能让开发者写出高效SQL,更能洞悉大数据、区块链、元宇宙等技术背后的数据逻辑。正如Linux之父Linus Torvalds所言:“数据是新的代码(Data is the new code)”,而数据库正是承载这份新时代“源代码”的终极容器。在计算机诞生之前,人类用纸质档案、微缩胶片甚至打孔卡管理数据。20世纪50年代,美国人口普查局的一台UNIVAC计算机需要。这种低效催生了数据库的诞生。—— 一篇写给技术新手的数据库全景指南。
2025-03-02 08:45:00
915
原创 数据库操作命令详解:CREATE、ALTER、DROP 的使用与实践
CREATE:用于构建数据库骨架,需明确字段类型、约束和存储引擎。ALTER:灵活调整结构,但需关注数据安全与性能影响。DROP:彻底清理数据,操作前务必确认备份和依赖关系。最佳实践所有 DDL 操作前备份数据。使用事务或工具辅助高风险操作(如 MySQL 的通过注释和文档记录表结构变更历史。掌握这些命令后,您将能游刃有余地设计和管理数据库,支撑业务高效运转!
2025-03-01 20:51:35
1122
原创 437. 路径总和 III
给定一个二叉树的根节点root,和一个整数targetSum,求该二叉树里节点值之和等于targetSum的的数目。不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。
2025-02-28 13:53:47
708
原创 GET 和 POST请求方法的区别
安全性 数据暴露在 URL 中,不安全 数据在请求体中,相对安全。GET 和 POST 是 HTTP 协议中最常用的两种请求方法,它们在用途、数据传输方式、安全性等方面有显著区别。数据附加在 URL 后面,格式为?数据暴露在 URL 中,容易被浏览器缓存、记录在历史记录或服务器日志中。请求可以被缓存,适合获取静态资源(如图片、CSS、JS 文件等)。数据在请求体中传输,不会被缓存或记录在 URL 中。
2025-02-25 20:53:47
754
原创 42. 接雨水
"接雨水"(Trapping Rain Water)问题是经典的算法题,常常出现在技术面试中。问题描述是给定一个数组,其中每个元素代表一根柱子的高度,要求计算在这些柱子之间可以接多少水。假设某个区域有多个柱子,我们需要找出可以在这些柱子之间储水的量。储水量的计算依据是水只能存储在较高柱子之间的低洼区域,水的高度由柱子的高度决定。这个问题的本质是找到每个柱子左右的最大柱子,从而计算其可以存储的水量。为了提高效率,我们可以使用双指针法来解决这个问题。这段代码利用了双指针法和木桶原理,使得问题的求解在。
2025-02-15 19:15:14
784
原创 581. 最短无序连续子数组
找到无序区间的边界:通过不断寻找满足升序的条件,快速确定左边界和右边界。通过最小值和最大值扩展边界:通过查找left到right范围内的最小值和最大值,确保子数组被正确扩展。无需排序:本题巧妙地通过比较而非排序来定位无序子数组。这个问题的核心在于找出最小的不符合升序的区间,然后扩展这个区间直到整个数组有序。该方法避免了直接排序数组,从而实现了高效的 O(n) 时间复杂度解决方案。希望通过这篇博客的分享,大家对如何优化寻找最短无序子数组的算法有了更深的理解。如果你有任何问题,欢迎在评论区留言讨论!
2025-02-13 15:04:23
582
原创 525. 连续数组
通过前缀和和哈希表的结合使用,我们可以高效地解决“找到最长的连续子数组,使得0和1的数量相等”的问题。这个方法不仅思路清晰,而且代码实现也相对简洁。希望本文能帮助你更好地理解这个问题及其解决方案。如果你有任何问题或建议,欢迎在评论区留言讨论。
2025-02-09 16:37:01
486
原创 56. 合并区间
通过排序和栈的结合使用,我们可以高效地解决合并区间的问题。这个方法不仅思路清晰,而且代码实现也相对简洁。希望本文能帮助你更好地理解这个问题及其解决方案。如果你有任何问题或建议,欢迎在评论区留言讨论。
2025-02-09 16:15:44
745
原创 739. 每日温度
这道题目要求你为每一天的温度找到下一次温度高于当前温度的天数,如果没有更高的温度,则返回 0。第一个解法是比较直观的暴力解法,采用了双重循环的方式。通过两层循环,外层循环逐日遍历每一天的温度,内层循环寻找下一个温度更高的日子。在实际应用中,栈解法无疑是更加高效的选择,特别是在数据量较大的时候,暴力解法可能会导致严重的性能瓶颈。写在之前---写的暴力枚举法,直接遍历每个数i,再遍历之后的数找到大于x的数j计算两者的距离,以。通过使用栈的方式,我们大大提高了算法的效率,避免了重复的内层循环,提升了计算速度。
2025-01-31 21:42:17
311
原创 55. 跳跃游戏
这道题通过贪心算法高效地解决了跳跃游戏问题,代码简洁且性能优异。贪心算法的核心思想是每一步都选择当前最优解,从而希望最终结果是全局最优解。如果你对贪心算法感兴趣,可以尝试解决类似的题目,例如:希望这篇博客对你有所帮助!如果有任何问题或建议,欢迎在评论区留言讨论。😊初始化k = 0,表示当前能到达的最远位置。遍历数组如果当前位置i超过了k,说明无法到达当前位置,直接返回false。否则,更新k为,即当前位置能跳到的最远位置。返回结果:如果遍历完数组都没有遇到i > k的情况,说明可以到达终点,返回。
2025-01-31 20:35:56
816
原创 41. 缺失的第一个正数
然后遍历数组,寻找第一个缺失的正整数。我们利用数组本身的索引来为每个数字找到对应的位置,从而降低空间复杂度。,我们遍历数组进行交换操作,然后再遍历一次数组找缺失的正整数。每个元素最多交换一次,因此时间复杂度是线性的。通过原地交换,将数字放到正确的位置,最终我们可以找到缺失的最小正整数。数组,然后遍历查找缺失的最小正整数。,我们只用了常数空间来进行交换操作,没有使用额外的数据结构。问题的核心是:如何在给定的数组中,找到不在。,请你找出其中没有出现的最小的正整数。,即不使用额外的空间,并且。
2025-01-28 22:08:04
878
原创 128. 最长连续序列
给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为O(n)的算法解决此问题。写在题前----第一次做这个题的时候我的思路是暴力枚举,遍历整个数组若这个数不存在刚好比他小1的数则视为这个数是一个连续序列的起始点,然后在循环找数组中是否存在比这个数大1的数,依次进行查找并更新最大但时间复杂度达到惊人的故放弃--重新找寻解决办法--故记录。这道题目是关于,给定一个无序的整数数组nums。
2025-01-27 22:09:37
884
原创 LCR 017. 最小覆盖子串
目标:从字符串s中找到最短的子字符串,这个子字符串包含了t中所有字符,并且字符的数量不小于t中该字符的数量。如果找不到这样的子字符串,则返回空字符串。滑动窗口:通过左右指针(left和right)来维护一个“窗口”,该窗口不断扩展直到包含了t中的所有字符,接着尝试收缩窗口来找到最小的符合条件的窗口。该算法使用了滑动窗口技术,通过动态调整窗口的大小来解决问题。每次扩展窗口时,检查窗口是否包含了t中的所有字符;当包含时,尝试收缩窗口,找到最小的符合条件的子字符串。如果有任何疑问请留言,我们共同讨论!!
2025-01-26 18:39:24
864
原创 424. 替换后的最长重复字符
滑动窗口:通过left和right两个指针来动态调整窗口的大小。在每一步中,增加右指针扩展窗口,直到满足条件。通过不断调整左指针来收缩窗口,确保窗口的大小满足最多k次字符替换的条件。频率统计:通过一个哈希表hash来记录窗口内字符的出现频率。同时,通过maxcount来记录窗口内出现最多次数的字符,减少了每次都需要遍历哈希表的操作。计算最大长度:在每次调整窗口时,计算当前窗口的长度,并更新最大子串长度ret。边界条件:当k。
2025-01-24 21:35:58
465
原创 946. 验证栈序列
给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作。
2025-01-23 18:56:59
734
原创 K 个一组翻转链表
4、当当前k个节点全部翻转完之后,更新pre指针,tail指向就是上一个翻转完之后的尾指针,所以pre更新到tail位置即可,待翻转数量更新Length。这道题我的第一思路是既然要依次翻转K个链表,我们可以选择按照题目直接要求依次翻转K个节点,将整个链表分为,已翻转部分,正在翻转部分,和未翻转部分如图。4、翻转部分--经典的pre cur tail三指针法不过需要注意的是这里的第一个节点是不需要翻转的所有初始化时i=1。5、相信到这里你已经基本理解了这道题的结题思路,快去在尝试一下吧!
2025-01-19 19:18:48
168
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人