静态方法与实例方法区别详解:从内存模型到重写陷阱
一道特别经典的Java面试题几乎每次技术面都会被问到“静态方法和实例方法的区别是什么”很多人能答上来几条比如“静态方法用类名调实例方法用对象调”“静态方法不能访问实例变量”但真要往深了问一句“静态方法到底能不能被重写”不少人就开始含糊了。这篇文章我打算换个讲法不背八股文而是把静态方法和实例方法从内存模型、字节码指令、设计取舍到实战避坑整个串一遍。不管你是刚学Java基础的学生还是准备跳槽刷面试题的开发又或者是工作几年想回头补补底层知识的工程师这篇都能给你一些不一样的视角。我尽量把话说人话复杂的原理用类比讲清楚同时把我在实际项目里踩过的坑也一并交代了。1. 先搞清楚表象调用方式、this 引用与内存归属的底层差异1.1 最常见的区别类名调用与对象调用先从最直观的写代码体验说起。静态方法static method属于类本身你用类名就能直接调不需要先new一个对象出来public class MathUtils { public static int add(int a, int b) { return a b; } } // 直接类名调用 int sum MathUtils.add(1, 2);实例方法instance method属于对象必须先创建对象再通过对象引用去调public class Counter { private int count; public void increment() { count; } public int getCount() { return count; } } // 必须new对象 Counter c new Counter(); c.increment(); int current c.getCount();这个表层区别大家都很熟但它背后反映的其实是成员归属权的不同。让我用一个生活化的类比来解释你可以把类想象成一张建筑设计蓝图把对象想象成按照蓝图盖出来的房子。静态方法是画在蓝图上的一行说明——“所有房子都必须有消防通道”它不依赖具体哪一栋房子实例方法则是“这栋房子开灯”“这栋房子打开窗户”只能针对你手里那套房来操作你不先拿到其中一套房这句话就没有意义。这个类比能帮你理解后面几乎所有规则为什么静态方法不能直接访问实例变量因为蓝图不会知道你某一套房里的窗帘是什么颜色。为什么实例方法可以随便访问静态变量因为每一套房都能看到小区统一规划的那条消防通道。1.2 深入内存模型静态方法在方法区实例方法随对象在堆中很多人以为“静态方法存在方法区实例方法存在堆里”这句话严格来说是有问题的。Java的类信息包括方法字节码、字段描述、常量池等在JVM里统一存放在元空间JDK 8之后叫Metaspace替代了JDK 7及以前的永久代。不管是静态方法还是实例方法它们的字节码指令都放在类的元数据里也就是说方法的定义都随类走。那真正不同的点在哪在于方法的属主是谁以及调用时JVM怎么找到它、怎么传参数。静态方法在字节码层面的调用指令是invokestaticJVM在编译阶段就能完全确定调用哪个类、哪个方法这就是所谓的编译期绑定静态绑定。参数列表里不包含this你写的参数是什么栈帧里就存什么参数没有隐藏的“当前对象”引用。实例方法的调用指令是invokevirtual普通实例方法JVM需要根据运行时对象的实际类型去查找方法版本这就是运行时绑定动态分派。参数列表里天然多了一个隐藏的this引用指向当前调用这个方法的对象。正是因为多了这个this实例方法才能随意访问this.count、this.name这些实例字段。用javap -c反编译一下字节码你就能看得非常清楚public class Demo { public static void staticMethod() { System.out.println(static); } public void instanceMethod() { System.out.println(instance); } }反编译后的字节码调用点invokestatic #7 // Method staticMethod:()V invokevirtual #13 // Method instanceMethod:()V一个指令差异一张内存分布图其实就已经把“为什么静态方法不能访问实例成员”“为什么实例方法能访问静态成员”的根本原因讲透了——静态方法连this都没有它拿什么去定位某个具体对象的count字段反过来实例方法手里握着this通过类元数据当然能找到静态变量和静态方法。1.3 一个容易混淆的细节静态方法确实不能访问实例成员这是我辅导过的新人里出现频率最高的误区。很多人知道“静态方法不能直接访问实例变量”但问他为什么只能背结论。现在用上面的原理一推就通了静态方法被调用时完全不知道当前是哪个对象在调因为没有this无法通过隐藏的this去定位实例字段所以this.name这种代码在静态方法里编译都过不了但反过来实例方法里访问静态变量、调用静态方法是完全没有问题的因为任何对象都能通过类的元数据找到类的静态成员。public class Demo { private int num 10; private static int staticNum 20; public static void testStatic() { System.out.println(staticNum); // 完全OK System.out.println(num); // 编译报错无法从静态上下文引用非静态字段 demoMethod(); // 也报错同理 } public void testInstance() { System.out.println(num); // OK通过this System.out.println(staticNum); // OK通过类元数据 testStatic(); // OK } }这里我多说一句静态方法里如果要使用某个实例对象的能力只能自己创建对象或者接收外部传入的对象引用。工具类方法你仔细看基本都是接收参数传入的对象然后对其进行操作而不是自己去new一个对象。这就是设计层面的取舍后面第三部分我会专门展开讲。2. 重写与隐藏静态方法不能重写只能“隐藏”2.1 为什么说静态方法“重写”是伪命题面试里最常设的陷阱题就是父类和子类各有一个同名的静态方法子类重新定义了一个这算重写override吗答案是不算。Java语言规范里的定义很明确重写是实例方法之间的一种关系静态方法是隐藏hide不是重写。看代码public class Parent { public static void hello() { System.out.println(Parent static hello); } public void say() { System.out.println(Parent instance say); } } public class Child extends Parent { public static void hello() { System.out.println(Child static hello); } Override public void say() { System.out.println(Child instance say); } }然后分别用父类引用和子类引用去调用Parent p new Child(); p.hello(); // 输出Parent static hello p.say(); // 输出Child instance say Child c new Child(); c.hello(); // 输出Child static hello看到了吗实例方法say()表现出了多态引用是Parent类型但运行的是Child的版本。而静态方法hello()的表现是引用是谁的类型就调谁的版本。你用Parent引用去调即使实际对象是Child调用的也还是Parent里的hello()。这就是静态绑定和动态分派截然不同的行为。2.2 重写与隐藏背后的字节码真相为了让大家记忆更深刻我再翻一次字节码。同样反编译上面这段调用逻辑invokevirtual #12 // Method say:()V invokestatic #8 // Method hello:()Vinvokevirtual指令的含义是根据栈顶对象引用的实际类型来查找方法。所以执行到p.say()时JVM看到栈顶对象的真实类型是Child就会沿着Child的方法表往上找命中Child的say。而invokestatic指令在编译时就已经被javac写死了方法的符号引用是Parent还是Child的方法完全取决于引用声明的类型与运行时的对象实际类型无关。这里我额外补充一个冷门点private实例方法在字节码层面用的是invokespecial指令不是invokevirtual因为它不存在跨类重写的语义构造方法也是invokespecial。所以严格来说“实例方法invokevirtual”这个说法只适用于非私有的实例方法。面试的时候如果能把这个细节说清楚会显得你对JVM指令集是有真实理解的而不是死背八股。2.3 为什么Java要这样设计静态方法是类级的契约如果你问我为什么Java偏偏要这样设计不让静态方法参与多态我的看法是这是语义一致性的要求。静态方法是类级别的行为属于这个类本身的工具逻辑它不依赖任何对象状态也不该由“对象实际类型”来决定调用哪个版本。如果允许静态方法重写那么它和实例方法的边界就会变得模糊你无法再确定“调这个静态方法到底执行的是谁的逻辑”这会直接破坏静态方法的确定性也会给框架设计带来巨大的混乱。想想看如果一个静态方法也能被“多态地”调用那Collections.sort()这种工具方法还能不能放心用你调一个静态方法结果实际执行逻辑还得看运行时对象是谁这太反直觉了。静态方法的本质是“确定、无状态、不依赖上下文”所以它只能在编译期绑定。由于静态方法的“重写”其实是隐藏编译器会提醒你如果你在子类里定义了和父类同名的静态方法最好加上Override注解试试——你会发现编译直接报错。这是很实用的判别手段你可以在子类方法上加 Override能过编译的就是实例方法重写过不了的就是静态方法隐藏。3. 实际项目里的设计取舍什么时候该用静态方法什么时候该用实例方法3.1 工具类与无状态方法静态方法的舒适区聊完底层的差异我们来谈一点接地气的写代码的时候到底该怎么选。最经典且没有争议的使用静态方法的场景就是工具类。比如JDK自带的Collections、Arrays、Math以及你项目里的StringUtils、DateUtils、FileUtils。这些类里所有方法都满足以下特征不依赖对象内部状态输入是方法参数输出是计算结果或操作结果方法内部不会读写自己特有的实例字段或者压根没有实例字段不需要通过继承和多态去扩展不同版本的行为。这种“纯函数式”的方法设计成静态方法是最合理的。它简洁不强制调用方去new一个其实没任何状态的对象它语义也清楚你一看StringUtils.isBlank(str)就知道这是对一个字符串做“是否空白”的判断不需要引入任何可变状态。我自己的经验是判断一个方法该不该设计成静态的可以问自己两个问题。第一这个方法是否需要读取或修改对象创建时保存的状态需要就应该用实例方法完全不需要才对静态方法敞开大门。第二这个类会被设计成可继承、可多态扩展吗如果答案是“会”方法就应该是实例方法否则你用静态方法就是把继承这条路堵死了。3.2 工厂方法与单例模式里的静态方法绕不开的入口除了工具类静态方法还有一个重要舞台就是工厂方法。比如Integer.valueOf(int)、LocalDate.now()、Calendar.getInstance()它们都是静态方法负责创建并返回实例对象。工厂方法用静态方法的意义在于你不需要先有一个对象才能调用创建对象的方法这很自然——你要的就是“从无到有”静态方法就是那个“无中生有”的入口。单例模式里经典的getInstance()同样是静态方法因为单例的前提是进程中只有一个类级别实例这个实例本身必须由类来管理所以获取它的入口也必须是类级别的。但是我要特别提醒一句工厂方法虽然声明为静态但它一般都会在内部new出对象也就是说静态方法自己处理实例创建逻辑。这和上一节说的“静态方法无法访问实例成员”并不矛盾——工厂方法通过new拿到一个引用这个引用是方法内部局部变量并不是某个调用者已经创建好的实例。这恰好是静态方法操作对象的标准姿势要么自己创建要么通过参数接收就是不能凭空访问某个对象的私有状态。3.3 过度使用 static 的坏味道测试、扩展与可读性三重灾难很多人初学Java时会有一个倾向图省事把所有方法都写成static因为这样不用写new。这种写法的代价在项目规模变大后会暴露得非常明显。第一是测试困难。静态方法不能被重写所以你在单元测试里很难对一个静态方法做替换mock。Mockito从3.4开始虽然支持mock静态方法但那需要额外引入mockito-inline而且这种测试写法本身就是在和设计缺陷对抗。如果你的业务方法依赖了一个静态方法而这个静态方法内部会去访问数据库或者发HTTP请求你的单元测试会被迫连带启动这些外部依赖。相比之下实例方法天然配合接口和依赖注入你随便写一个实现类或者mock对象就能把依赖替换掉。第二是可扩展性差。静态方法无法通过继承实现多态如果哪天你发现不同子类对同一个静态方法的逻辑要求不同你根本没法在子类里优雅地“覆盖”它只能改调用方的代码去走不同的类。而基于实例方法的多态设计加一个新实现类就行对已有的调用完全无感。第三是可读性下降。类名加静态方法就像全局函数它打破了“对象协作”的面向对象思维。类一旦变得“全静态”你写的其实不是面向对象的Java而是披着类外皮的C语言。写工具类没问题但业务逻辑里到处都是大杂烩的静态方法项目会慢慢变成“不可面向对象”。我在重构过一个老项目的代码后对这件事感触特别深。原来的Service层每个方法都写成静态方法全部维护在同一个类里测试时想mock被连带调用的静态方法环境起半天后来逐步改成实例方法配合接口和构造器注入单测清爽多了业务扩展时也直接继承新实现类就行改动面小了很多。3.4 静态导入一种需要克制的语法糖Java 5开始支持静态导入import static java.lang.Math.max;写代码时可以直接用max(a, b)代替Math.max(a, b)。这个语法糖用好了很顺手比如在常量汇总类、数学计算场景里能减少不少冗余。但我要提醒的是滥用静态导入会让代码的来源变得不清晰你看到一行max()得想一会儿才知道它是从哪儿来的。团队协作时这种“隐式来源”对阅读者其实是一种负担。我的建议是只在同一个类里高频使用同一静态方法时考虑静态导入一般情况下保留类名前缀能让你和你的同事少动很多脑筋。4. 常见问题与面试追问这些坑你最好提前踩一遍4.1 连环追问面试官眼中的标准答案长什么样这一部分写给正在准备Java基础面试的同学也写给面试别人时没思路的读者。静态方法和实例方法这个知识点面试官通常会以连环追问的方式考察我把最高频的几个问题按顺序列一下并附上回答思路。面试官问“静态方法和实例方法的区别”如果你只答“静态方法用类名调、实例方法用对象调”那基本只能拿及格分。一个合格的深度回答应该覆盖这四层归属层面静态方法属于类实例方法属于对象内存/字节码层面静态方法对应invokestatic编译期绑定实例方法对应invokevirtual普通实例方法运行期动态分派访问限制层面静态方法可以直接访问静态成员无法直接访问实例成员实例方法两者都能访问重写语义层面静态方法是隐藏实例方法才是重写静态方法不参与多态。面试官接着可能会追问问静态方法能不能被重写答不能。子类里写一个同名同参数列表的静态方法只会把父类的静态方法隐藏。用父类引用调用这个方法时实际调用的是父类版本和对象的实际类型无关。这体现了静态方法编译期绑定的特点。问静态方法里能不能用 this 或 super答不能用。this和super都是针对对象级别的引用静态方法不依附于任何对象没有隐含的this引用传入所以编译直接报错。问静态方法能不能访问实例变量答不能直接访问因为没有this引用。但静态方法可以自己创建对象或者把外部传入的对象引用当作参数然后通过这个引用去访问它的实例变量前提是该变量有对应的可见性。问static synchronized 方法锁的是什么答锁的是当前类的Class对象而普通synchronized实例方法锁的是当前实例。两者锁的对象不同不能互相替代。这也是并发编程里一个很容易踩的点。问接口里的静态方法和普通类里的静态方法有什么不同答接口的静态方法Java 8开始支持只能通过接口名调用不能被实现类继承也不能被实现类的实例调用而类的静态方法可以通过子类名继承调用但依旧是隐藏语义。另外接口的default方法本质上属于实例方法可以通过实例调用和静态方法是两码事。问为什么main方法要设计成static答因为JVM启动应用时还没有任何对象存在必须有一个不依赖对象就能调用的入口所以main必须是静态方法。JVM通过类加载机制加载入口类直接调用其静态main方法。4.2 我实测踩过的坑三个真实案例第一个坑是**“静态方法持有对象引用导致的内存泄漏”**。有一个工具类写法是静态方法里把一个局部变量赋值给了静态字段。看起来只是顺手缓存了一下结果这个静态字段变成强引用一直指向某个大对象JVM永远无法回收它内存一直涨。这是我印象比较深的一个教训静态方法本身不持有对象但静态字段会千万不要在静态上下文里缓存那些生命周期不可控的对象除非你很清楚自己在干什么。第二个坑是**“在子类中重写静态方法IDE没有提示”**。有次写代码时我在子类里定义了一个静态方法和父类静态方法同名同参当时没注意以为是对父类逻辑的覆盖结果父类引用调用时根本不走子类逻辑线上排错排了很久。后来我养成了一个习惯子类里凡是和父类方法同名的一律先加Override注解试试能编译过的才放心重写。第三个坑是**“静态方法里直接操作SimpleDateFormat线程不安全”**。有人会把SimpleDateFormat定义为静态字段然后写一个静态方法对其进行格式化。看起来省事但SimpleDateFormat内部有可变状态缓存多线程共享同一个实例时经常出现解析结果错乱甚至抛NumberFormatException。正确的做法是使用DateTimeFormatter它是线程安全的或者每次在方法内部new一个实例。这类问题之所以常和静态方法绑在一起是因为静态字段天然就是多线程共享的你在静态方法里操作静态字段等于自动交给了全局并发环境。4.3 高频问题速查表我平时帮团队整理过一份Java面试基础速查表这次也把静态方法相关的核心结论放在这里大家可以随手存下来维度静态方法实例方法调用方式类名直接调用对象引用调用依赖对象不依赖对象调用前不需要实例必须有实例隐含this无有访问静态成员可以可以访问实例成员不可以直接访问可以字节码指令invokestaticinvokevirtual私有实例方法为invokespecial绑定方式编译期绑定静态绑定运行期绑定动态分派重写语义不可重写只可隐藏可重写支持多态this/super不能用可以用synchronized锁类的Class对象当前实例对象JDK典型例子Collections.sort、Math.max、Integer.valueOfArrayList.add、String.substring这张表有一条逻辑主线一切区别都源于“静态方法不绑定实例对象”这一个事实。你能把这个根因讲清楚所有细枝末节都能自己推出来而不是靠背。写在最后静态方法和实例方法的核心差异说穿了就是一句话静态方法属于类、不依赖对象、编译期绑定实例方法属于对象、携带this、运行期多态。但在实际编码里这句话落到每个场景里会有完全不同的分量写工具类时静态方法让你清爽做框架设计时静态方法又可能成为扩展的堵点面试时从这一句话能牵出一整条JVM字节码和面向对象设计的知识链。我个人的体会是八股文式的“区别列表”只是起点真正值得花时间的是去理解“为什么Java要这么设计”。理解了设计动机你写代码时的每个选择才会更有章法而不是靠感觉。下次如果再有人问你这个问题试着先别急着列区别而是从“静态方法连this都没有”这个根儿上讲起对方的反应可能就会不太一样。

相关新闻

2026年ComfyUI本地部署完全指南:从硬件选型到工作流搭建

2026年ComfyUI本地部署完全指南:从硬件选型到工作流搭建

1. 为什么2026年还值得折腾本地部署如果你最近才开始接触AI绘画,大概率会听到两种声音:一种说在线工具点两下就出图,何必折腾本地环境;另一种说真正想玩出花样,本地部署才是归宿。我从2023年开始用各类AI绘画工具&…

2026/10/11 8:42:37 阅读更多 →
ComfyUI本地部署实战:从环境配置到商业级工作流

ComfyUI本地部署实战:从环境配置到商业级工作流

1. 这不是教程,是本地AI图像生成的“生存指南”ComfyUI在2024年彻底改变了本地AI绘图的工作方式——它不再是一个点几下就能出图的黑盒子,而是一套可拆解、可追踪、可复现的视觉计算流水线。我从2023年早期测试版开始用,踩过模型路径错乱导致…

2026/10/11 8:42:37 阅读更多 →
降AI率工具测评:10款实用方案让AI初稿更像真人写作

降AI率工具测评:10款实用方案让AI初稿更像真人写作

专科生写课程报告、交实训复盘,被一句“AI痕迹明显”打回来是什么体验,我太有发言权了。尤其是数学建模那阵,我拿AI辅助搭了框架、整理数据,结果交上去被打回,理由是“不像自己写的”。那时候我才认真研究“降AI率”&a…

2026/10/11 8:42:37 阅读更多 →

最新新闻

深度学习OCR系统实战:基于PyTorch的CRNN+CTC文字识别

深度学习OCR系统实战:基于PyTorch的CRNN+CTC文字识别

简介:基于深度学习的文字识别系统完整项目包,面向毕业设计、课程设计与期末大作业场景,适合需要快速搭建OCR系统的计算机相关专业学生。项目采用CNN与RNN结合实现文字检测与识别,覆盖图像预处理、模型训练、后端接口与移动端展示全…

2026/10/11 10:25:10 阅读更多 →
使用 claude-howto 的 blog-draft 技能与草稿模板,系统化产出高质量技术博客

使用 claude-howto 的 blog-draft 技能与草稿模板,系统化产出高质量技术博客

教程文档 【免费下载链接】claude-howto A visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value. 项目地址: https://gitcode.com/GitHub_Trending/cl/claude-howto 点…

2026/10/11 10:25:10 阅读更多 →
Excel自动评分:用LOOKUP和IF函数实现体育成绩折算自动化

Excel自动评分:用LOOKUP和IF函数实现体育成绩折算自动化

简介:这份资源是一份面向体育教师及学校教务人员的Excel实用教程文档,聚焦体育测试成绩换算这一高频痛点,帮助读者用公式与函数替代人工比对,降低错漏率。文档围绕学生成绩空表搭建、跳远与跳绳评分标准表制作、LOOKUP近似匹配与I…

2026/10/11 10:25:10 阅读更多 →
Legendary OSINT 海事篇:AIS 船舶追踪工具全景对比

Legendary OSINT 海事篇:AIS 船舶追踪工具全景对比

Legendary OSINT 海事篇:AIS 船舶追踪工具全景对比 【免费下载链接】Legendary_OSINT A list of OSINT tools & resources for (fraud-)investigators, CTI-analysts, KYC, AML and more. 项目地址: https://gitcode.com/GitHub_Trending/le/Legendary_OSINT…

2026/10/11 10:25:10 阅读更多 →
ProxCenter热迁移深度解析:VDDK+nbdkit实现虚拟机零停机迁移的原理与调优

ProxCenter热迁移深度解析:VDDK+nbdkit实现虚拟机零停机迁移的原理与调优

【免费下载链接】proxcenter-ui ProxCenter is an alternative to VMware vCenter for Proxmox environments. It provides a modern, intuitive web interface to manage multiple Proxmox VE clusters and Proxmox Backup Server instances from a single pane of glass. 项目…

2026/10/11 10:25:10 阅读更多 →
2025年AI IDE实战测评榜:从个人开发到企业部署的完整选型攻略(TaoToken统一API接入篇)

2025年AI IDE实战测评榜:从个人开发到企业部署的完整选型攻略(TaoToken统一API接入篇)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:24:10 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →