新需求开发从“把想法变成可交付的软件”出发,核心是把不确定性逐段消化:先澄清价值与边界,再固化方案与计划,随后分批实现、验证与上线,最后复盘沉淀。不同公司细节不一,但主干流程通常稳定。 需求进入与分级(立项前) 需求在这一段完成“是否值得做、要做到什么程度”的裁决,避免团队在错误目标上投入。 入口来...
Jetpack Compose 表面上“没有 View”,但真正落地到屏幕上时仍然依赖 Android 的视图体系与渲染管线。理解它的内存管理,关键在于分清三层:Compose 运行时对象、承载它的宿主 View、以及与绘制相关的图形资源;再补上一条主线:组合(composition)如何创建、复用...
对于基本类型和引用类型 == 的作用效果是不同的,如下所示: 基本类型:比较的是值是否相同; 引用类型:比较的是引用是否相同; 代码示例: String x = "string"; String y = "string"; String z = new String("string"); Syste...
在 1 MB 内存约束下处理 10 MB 的 IP 地址数据,本质是典型的“外存(磁盘)换内存”的重频(heavy hitter)问题。10 MB 数据不算大,但 1 MB 内存不足以容纳“IP→计数”的哈希表全量统计(IP 种类一多就爆)。可行解法分两类:精确解与近似解。精确解依赖分桶与多趟扫描;...
日常 Linux 使用里,“常用命令”通常覆盖 4 类场景:文件与目录、文本查看与处理、进程与系统、网络与权限。命令本身很短,但真正的效率来自两点:固定搭配的参数习惯,以及能把输出接到下一步处理的管道( )与重定向(>、>>)。 文件与目录:定位、创建、移动、清理 pwd:显示当前...
缓存相关的“穿透、击穿、雪崩”本质都是同一件事:在某个时间窗口里,缓存无法替数据库承压,导致请求洪峰直达存储层。除去常见的“布隆过滤器、空值缓存、互斥锁/单飞(singleflight)、热点永不过期”等手段,还存在一批更偏工程化、架构化的解法,往往组合使用效果最好。 先把三类问题对齐到“失效模式”...
找出数组里最小的 k 个数,本质是“部分排序”问题:只关心前 k 小,不必把全数组排好。常用解法可按数据规模、是否允许修改原数组、是否需要在线处理来选。 选择策略:三类主流解法 1)全量排序(最省心,但不省时) 把数组整体排序,取前 k 个。 时间复杂度:O(n log n) 空间复杂度:取决于排序...
在 InnoDB 存储引擎里,undo log(回滚日志)是一类用于“把数据改动撤回去”的日志记录。它不直接用于把数据“重做到最新”,而是保存变更前的版本或足以逆向恢复的操作信息,用来支撑事务回滚与多版本并发控制(MVCC, Multi-Version Concurrency Control,多版本...
类配置(class configuration)的“存储位置”取决于所处技术栈与配置形态。多数系统会同时存在多份配置:源码里的声明、构建产物里的描述、运行期的注册表/元数据,以及外部化配置中心或数据库。常见落点如下。 代码与工程内:最常见的“事实来源” 源码文件 Java:注解(如 @Configu...
在 Protobuf 里,“同一个字段”的判定基于字段号(field number / tag),而不是字段名、类型或声明顺序。版本演进时,只要在新版本的 .proto 中沿用同一个字段号,Protobuf 就会把它识别为同一字段并完成兼容解析。 字段身份的唯一锚点:tag(字段号) Protobu...
JVM 调优是指通过调整 JVM 参数和配置来优化 Java 应用程序的性能和稳定性。以下是一些常见的需要进行 JVM 调优的情况: 1. 系统不稳定,时快时慢 这种情况通常与垃圾回收(GC)和内存管理有关,可能是由于以下原因: Full GC 问题:新生代太小,导致老年代积累太多对象,从而频繁触发...
Java 自定义注解本质上是在“声明一种可被工具读取的元数据”。要让它在工程里真正可用,通常需要把几类关键信息一次性定义清楚:注解长什么样、贴在什么位置、能活多久、能不能被继承、能不能被重复、以及内部承载哪些参数。 注解的基本形态:声明与成员(参数) 自定义注解使用 @interface 定义。注解...
1、内存泄漏memory leak : 是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。 2、内存溢出 out of memory : 指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但...
Hystrix 和 Sentinel 都是常用的容错和流量控制工具,但它们的设计理念和关注点有所不同。以下是两者的主要区别: 1. 功能定位 Hystrix: 关注点:Hystrix 主要关注服务容错,尤其是针对微服务架构中的服务间调用故障的隔离、熔断和回退。它通过将远程调用隔离到独立的线程池中,防...