召田最帅boy

NC100 把字符串转换成整数(atoi)

算法

实现字符串转整数(atoi)功能,要求自行编写 `StrToInt`,不使用库函数。算法步骤:①去除首尾空格;②识别首个非空字符的正负号,默认正;③从符号后连续读取数字构成有效整数,遇非数字即停止;④若无有效数字返回 0;⑤结果超出 32 位有符号整数范围时截断到 `[-2^31, 2^31‑1]`。代码采用先去除空格、判断首字符合法性、记录数字起始位置,并统一以负数形式累加防止溢出,最后根据符号返回相应正负值。示例展示了普通、带空格、含多余字符、无数字及溢出等情况的处理。

微服务接口设计原则

框架与微服务

微服务通过原子、独立、去中心化的方式实现业务拆分,接口设计需兼顾高可用、高性能和易维护。关键原则包括:降级兜底、过载保护与流量限流、快速失败与超时、无状态与最少依赖、简洁可靠、分散与隔离、幂等和故障自愈;在分布式环境下根据 CAP 定理在一致性和可用性之间权衡,采用 BASE 理论实现基本可用、软状态和最终一致性。性能上尽量使用无锁数据结构和单线程模型,避免锁竞争。遵循这些原则可构建可靠、弹性、可扩展的微服务接口。

MySQL常见面试题总结

面试

文章系统梳理了MySQL面试常见知识点:索引原理及Hash、B+树区别,聚簇与非聚簇、联合索引顺序与使用场景;事务的ACID特性、四种隔离级别及锁机制;表结构设计要点,如主键选自增、NOT NULL、char/varchar 区别;InnoDB 与 MyISAM 的特性比较;binlog 三种格式、超大分页优化、慢查询分析与分表策略;存储过程优缺点及数据库三范式。

面试篇【二】

面试

本文系统梳理了面试常见的网络、操作系统、Java 并发、JVM、微服务等知识点。包括 TCP 与 UDP 的区别、四次挥手原理、计算机加电流程、Linux 设备文件、同步方式(synchronized、volatile、Lock 等)及可重入锁概念;线程创建、返回值获取、线程池的四种实现、核心参数与拒绝策略;Java8 新特性(Lambda、Stream、Optional 等)及其优缺点;多线程使用场景、并发问题、MyBatis SQL 绑定、虚拟内存工作原理、栈/方法区溢出、类加载五阶段;ThreadLocal 实现原理与典型应用;微服务的定义与特征;以及 MySQL 事务的 ACID 特性。全文突出概念解释与实际应用场景。

面试篇【一】

面试

文章系统梳理了面试常考的技术要点:Spring AOP 动态代理实现原理、JDK8 前后 HashMap 与 ConcurrentHashMap 的结构与扩容机制、线程池大小的 CPU/IO 区分、G1 垃圾回收特性与 OOM 排查、MySQL 事务隔离级别及默认 REPEATABLE_READ、SQL 慢查询优化、缓存穿透/击穿/雪崩的原因与防御、LRU 实现、JVM 堆参数设置、栈队列应用、InnoDB 与 B+ 树索引、MVCC 与 undo log 原理以及索引失效情形。

IDEA 2022.2版本新特性

云原生与运维

IDEA 2022.2 引入远程开发模式,后端部署在服务器,前端 thin client 本地使用,通过 SSH 分担重任务提升流畅度;全面支持 Spring 6 与 Spring Boot 3,包括 @AutoConfiguration、@ConfigurationProperties 等新特性;新增 ⌃⇧. /⌃⇧, 快捷键全局调节编辑器字体大小;JSON、YAML、properties 中的 http/https 链接可直接点击打开或生成 HTTP 请求;实验性 GraalVM 原生调试器支持调试本地镜像;Bean Validation 注解的消息属性支持引用与折叠;其他改进包括 Groovy 集成查询、升级内置 Kubernetes/Docker、运行当前文件无需配置、导入受信任 SSL 证书、HTTP 客户端优化、JBR11→JBR17、代码检查与补全增强等。

NC142 最长重复子串

算法

本文介绍了“最长重复子串”问题:判断字符串中由两个相同子串相连的最长子串长度,若不存在返回0。字符串长度≤10^3,仅含小写字母。给出 O(n^2) 时间、O(1) 额外空间的解法:从可能的最大子串长度开始枚举,检查相邻两段是否相等,若匹配即返回长度。代码实现包含主函数 solve 与辅助函数 check,遍历并在首次发现符合条件的子串时立即返回结果。

NC37 合并区间

算法

文章介绍了“合并区间”题目:给定最多 2×10⁵ 个区间,要求合并所有重叠区间并按起点升序返回,时间复杂度 O(nlogn)、空间复杂度 O(n)。示例展示了相邻区间合并的效果。提供的 Java 解法先对区间按 start、end 排序,然后遍历列表,若当前区间与结果末尾不重叠则直接加入,重叠时更新末尾区间的结束值,实现了高效的合并逻辑并处理空集等特殊情况。

NC41 最长无重复子数组

算法

本文给出“最长无重复子数组”问题的描述与示例,要求在长度≤10⁵的数组中返回连续子数组的最大长度,使其中元素全部不重复。提供的 Java 解法采用滑动窗口结合哈希表记录窗口内元素出现次数:右指针扩展窗口并更新计数,若出现重复则左指针收缩窗口直至所有计数≤1,期间维护最大长度。代码时间复杂度 O(n),空间复杂度 O(m)(m 为不同元素数),能够高效求解该问题。

NC19 连续子数组的最大和

算法

求数组任意子数组(长度≥1)的最大和,要求时间 O(n),空间 O(1)。利用 Kadane 思路:遍历时累计当前子数组和,若前缀和为负则重置为当前元素;同时维护全局最大值。代码示例中通过 `array[i] += Math.max(0, array[i‑1])` 更新累计和,`res` 保存最大和,最终返回 `res`。该算法满足题目约束,适用于正负数混合的任意整数数组。