首页/新闻资讯/正文详情

Java基础笔试高频易错点:编译期、集合、异常与泛型解析

发布时间:2026/11/6 9:19:04 来源:云帆数科 栏目:资讯中心
Java基础笔试高频易错点:编译期、集合、异常与泛型解析
简介面向Java初学者、课程复习与笔试备考人群的基础知识题库围绕语法规则与常用API梳理高频考点适合系统学习后自测薄弱环节也可用于面试前快速回顾。内容覆盖Java基本概念、八种基本数据类型、运算符、控制结构、函数、数组、集合框架、泛型、封装与程序设计等模块题型兼顾选择题、简答题和编程题并附参考答案与代码示例涉及包装类、equals比较、Calendar实例获取、Set/Map/List特性、字符串拼接与替换、日期计算、Stack实现等具体知识点便于边练边核对思路。整份资料为1个docx文档压缩包约25KB目录集中、检索方便也适合打印成纸质练习。目前已有1308人学习适合希望用较短时间梳理Java基础、通过做题查漏补缺的读者。1. 从一道「输出 B 还是报错」的题说起Java 基础笔试到底在考什么有人复习时遇到这样一行代码一个刚 new 出来的 LinkedList先塞进 A接着list.add(2, B)。手写答案时觉得不就插到第 2 个位置嘛能跑真敲进 IDE 一点运行直接红着抛异常。这类 java 基础笔试题的共同点是语法看着都对错在看不见的规则上。笔试题反复出现在复习清单里不是因为题目刁钻而是它们把语言里那些平时不用想、出事才想起的默认约定摆到台面上——索引从哪算、null 从哪来、谁的返回值说了算。把这些约定捋顺比背答案有用得多。2. 看着简单却总做错Java 基础笔试真正在测的认知边界一份试卷里最容易被轻视的往往是那种看着会、做起来错的题。它们不考你记不记得某个方法名而是考你心里有没有一杆秤这段代码是在什么时候出问题、出的是哪种问题。这个判断决定了你是去改语法还是去加判空还是去调整逻辑。打个比方编译期像是出门前的安检你的行李代码在门口就被翻了一遍不合规的当场拦下根本走不到登机口运行期则是飞起来之后才发生的颠簸安检看不出来飞上天才知道。很多初学者把这两件事混在一起看到报错就慌却不分辨这是根本没编译过还是编译过了但跑崩了。这两类错误的修法完全不同。2.1 编译期与运行期两把不同的尺子先看那道索引题。原样的代码大致长这样import java.util.LinkedList; public class ListAddDemo { public static void main(String[] args) { LinkedList list new LinkedList(); list.add(A); // 此时 size() 为 1合法索引只有 0 和 1 list.add(2, B); // 传 2 越界add(index, e) 允许 0..size() String s (String) list.get(1); System.out.println(s); } }这段代码编译完全通过编译器不会拦你因为add(int, Object)这个方法签名是存在的参数类型也对得上。问题出在运行时add(int index, E element)对 index 的合法要求是从 0 到 size() 之间含 size()size() 为 1 时只能传 0 或 1传 2 就抛IndexOutOfBoundsException。把add(2, B)改成add(1, B)再get(1)输出就是 B而原题不改的话程序在add那行就断了走不到后面。同样的分界线还出现在另外几个地方。String str null; String strTest new String(str);这一句编译没问题因为String(String)这个构造器确实存在null 也是合法的 String 引用一执行就抛NullPointerException因为构造器内部要去读那个引用里的内容读到的是空。再看int a 5 / 0;整除零抛ArithmeticException但如果写成double b 5.0 / 0;结果是Infinity不抛异常——整数除零和浮点除零在 java 里是两套规则这也是选择题爱挖的坑。理解了这把尺子你再看编译时发生错误 / 运行时引发异常 / 正确运行输出 X这种三选一判断路径就很清楚先看方法签名和类型对不对得上对得上就不是编译错误再看运行时的边界条件索引、空引用、除零、类型转换踩到哪个就是哪个异常。2.2 集合家族的三条基本规则List、Set、Map 各管什么集合相关的题几乎每套卷子都有因为 List、Set、Map 这三个名字太像初学者容易把它们当成三种容器随便换着用。其实它们的分工从设计之初就定死了。接口是否有序能否存重复元素存的是什么典型用途List有序按插入位置索引能单个元素按顺序排列的数据如通讯录列表Set通常无序不能单个元素去重、判断存在性Map键无序部分实现有序键不能重复值可以键值对姓名到成绩、单词到释义的映射哪个集合不能存重复元素这类题的标准说法落在 Set 上因为 Set 的语义定义就是不重复的集合。Map 的键也不允许重复但它存的是键值对而不是单个元素一般不参与元素是否重复的比较——你往 Map 里 put 同一个键两次第二次是覆盖不是报错。再看那道关于 Map 和 List 关系的题四个选项里正确的是Map 的 value 可以是 List 或 Map。这条规则很实用Map 的值是个 Object 引用什么都能装套一层 List 就是一个键对应多个值套一层 Map 就是嵌套结构。而Map 继承 List是彻底错的两者是并列的接口谁都不继承谁List 中可以保存 Map 或 List其实也成立只是原题把它和更准确的选项放在一起做了取舍。至于只能保存从数据库中取出的数据更是把用途当成了限制集合只认类型不认数据来源。顺带说一句Map不属于Collection接口体系List和Set才属于。这个层级关系在选择题里也常出现问哪个不是 Collection 的子接口答案就是 Map。2.3 默认值数组和对象被创建时自带的出厂设置还有一类题代码短得让人放松警惕输出结果却要背下来public class DefaultValueDemo { public static void main(String[] args) { int[] nums new int[5]; System.out.println(nums[4]); // 输出 0 Object[] objs new Object[5]; System.out.println(objs[2]); // 输出 null int[] k new int[4]; System.out.println(k[3]); // 输出 0 } }三行输出分别是 0、null、0。规则是数组一旦被new出来它的每个元素都会被赋予该类型的默认值——整数系是 0浮点是 0.0布尔是 false字符是空字符所有引用类型包括 Object、String、数组本身都是 null。注意这里说的是数组元素而不是局部变量。方法体里单独声明的int x;如果不赋值就用是编译错误但new int[4]里的四个格子是堆上的内容创建时就填好了默认值。这个区分是很多人的血泪经验以为自己没初始化其实是把引用变量本身和引用指向的那块内存混为一谈了。引用变量必须初始化才能用它指向的数组或对象内部的字段由创建过程负责初始化。3. 包装类、字符串与相等性三个概念把「存储」和「比较」讲透如果只允许从一份 java 基础题库里挑三个最常被误解的点大概就是这三个包装类到底包了什么、和equals差在哪、String.valueOf为什么值得单独记。它们分别对应数据怎么装两个东西怎么算相等东西怎么变成字符串。3.1 包装类到底包装了什么java 有八种基本类型它们不是对象不能直接扔进集合里集合只收引用类型。为了让这些裸数据也能像对象一样被使用语言给每一种基本类型配了一个对应的类这就是包装类。基本类型包装类默认值byteByte0shortShort0intInteger0longLong0LfloatFloat0.0fdoubleDouble0.0dcharCharacter\u0000booleanBooleanfalse包装这个词很形象基本类型是一颗糖包装类是外面那层带标签的盒子盒子里还是那颗糖但盒子能被放进集合、能调用方法、能判空。这里有个需要点破的细节。有些题会问java 提供了哪个包装类来包装原始字符串类型选项里 Integer、Char、Double、String正确答案只能是 String——因为另外三个跟字符串没关系。但严格来说String 并不在八种包装类之列它本身就是个引用类型只是恰好承担了表示一串字符的职责。这类题考的是排除法不是定义明白了这一点你就不会误以为包装类有九个。包装类还有一个常见副作用自动装箱和拆箱。Integer a 100;会自动把 int 装成 Integerint b a;会自动拆回来。方便是方便但装箱时对较小范围内的整数会复用同一个对象超出范围才新建这导致两个数值相同的 Integer 用比可能一个 true 一个 false。这条规则不属于必须背的题但它是理解下一节的关键伏笔。3.2和equals一个比是不是同一个一个比内容像不像这两个符号在新手眼里几乎等价实际职责完全不同。比较的是两个引用是不是指向同一块内存equals比较的是两个对象的内容是否相等前提是类重写了 equalsString、Integer 这些常用类都重写了。String str1 It is; String str2 It is; String str3 new String(It is); System.out.println(str1 str2); // true System.out.println(str1 str3); // false System.out.println(str1.equals(str3)); // true第一行输出 true很多人第一次见会愣住明明是两个变量怎么会相等原因在于字符串字面量会被放进常量池str1和str2赋值时指向的是池子里同一份内容所以地址相同。第三行用new强制在堆上开了新对象地址自然不同立刻变 false而equals比内容仍是 true。这就解释了一个常见困惑为什么有的代码里能判等有的就不能。答案取决于这两个引用当初是怎么来的而不是字符串长什么样。所以工程里比较字符串内容一律用equals别赌常量池。equals还有一个容易忽视的细节如果调用方是 nullstr1.equals(str2)在 str1 为 null 时会抛空指针。稳妥的写法是把常量放前面It is.equals(str1)常量不可能是 null怎么都不会炸。这条习惯在笔试题里不常直接考但在真实代码里能省掉一整类 bug。顺便把 Objects 工具类带一句需要比较两个都可能为 null 的引用时Objects.equals(a, b)会先判空再比比手写更省心。3.3String.valueOf为什么比toString稳把别的东西变成字符串最直觉的写法是obj.toString()。问题在于如果 obj 是 null这一句直接抛NullPointerException。String.valueOf则有一组重载专门处理各种输入char[] data {a, b, c, d}; System.out.println(String.valueOf(10D)); // 10.0 System.out.println(String.valueOf(3 2)); // true System.out.println(String.valueOf(data, 1, 3)); // bcd System.out.println(String.valueOf((Object) null)); // null第一个输出是 10.0 而不是 10因为传的是 double 字面量valueOf(double)保留小数形式第二个传的是布尔表达式的结果输出 true第三个用的是valueOf(char[] data, int offset, int count)这个重载从下标 1 开始取 3 个字符得到 bcd注意它是从 1 开始数、数 3 个不是取到下标 3。第四个传 null 引用时返回字符串 null而不是抛异常。这四种行为说明一件事String.valueOf是一组按参数类型分派的重载方法不是单个方法。你传什么类型它就走哪个版本字符数组还额外享受截取能力。这也是为什么转换字符串时优先用它——它对手里这个值的类型更宽容。4. 泛型、封装与异常三个被名字耽误的核心机制泛型、封装、异常这三个词在教材里都带着一股学术味读起来像要背定义。但它们的实际作用非常朴素泛型是给集合加一道闸封装是把不该外露的东西藏起来异常是把出错了怎么办从业务代码里拆出去。理解了它们各自要解决的麻烦定义自然就记住了。4.1 泛型不是高级语法是给集合加一道闸先看没有泛型的日子。一个普通 List 什么都能塞import java.util.ArrayList; import java.util.List; public class RawListDemo { public static void main(String[] args) { List list new ArrayList(); list.add(hello); list.add(100); // 编译器不拦因为元素类型是 Object String s (String) list.get(1); // 取出来才发现是 Integer System.out.println(s); } }这段代码编译通过运行时在(String) list.get(1)那一行抛ClassCastException。问题不在强转写错了而在于这个 List 里到底能放什么这件事编译器完全不知情只能等运行到那一行才炸。泛型就是把这个信息提前告诉编译器import java.util.ArrayList; import java.util.List; public class GenericListDemo { public static void main(String[] args) { ListString list new ArrayListString(); list.add(hello); // list.add(100); // 这一行直接编译报错根本到不了运行期 String s list.get(0); // 不需要强转 System.out.println(s); } }差别就三处一是编译期就拦住类型不符的写入错误提前暴露二是取元素时不用强转代码干净三是同一份泛型代码能适配多种类型复用率上去了。这三点正好对应提高类型安全、消除强制类型转换、提高代码重用率这套说法。泛型还能用在方法上。比如写一个方法既能求整数数组的最大最小值也能求字符串数组的按字典序class PairT { private T min; private T max; public Pair(T min, T max) { this.min min; this.max max; } public T getMin() { return min; } public T getMax() { return max; } } class ArrayAlg { // T extends Comparable 限定 T 必须能比较大小否则 compareTo 调不了 public static T extends Comparable PairT minmax(T[] a) { if (a null || a.length 0) return null; T min a[0]; T max a[0]; for (int i 1; i a.length; i) { if (min.compareTo(a[i]) 0) min a[i]; if (max.compareTo(a[i]) 0) max a[i]; } return new PairT(min, max); } }关键在T extends Comparable这个上界它告诉编译器T 不一定是任何类型但至少得实现 Comparable 接口于是compareTo才调得动。如果去掉这个上界方法体里那两行比较会直接编译不过。这也是泛型最容易让人困惑的地方——类型参数不是万能的你需要给它划一个能力下限。4.2 封装隐藏实现不等于给每个字段配个 getter封装的标准定义是把数据项和方法隐藏在对象内部把方法实现细节隐藏起来。听起来抽象落到代码上其实就一句话外部只该知道这个对象能做什么不该知道它内部长什么样。很多人的理解停在字段全设成 private然后生成一堆 getter/setter这只能算完成了一半。真正的封装是把规则也收进去public class Score { private int value; public void setValue(int value) { if (value 0 || value 100) { throw new IllegalArgumentException(分数必须在 0 到 100 之间); } this.value value; } public int getValue() { return value; } }如果只是无脑生成 setter外界传 -5 也能存进去这个类就变成了一根裸的 int封装等于没做。把校验写在 setter 里外界无论从哪条路径改值都会经过这道关卡这才是隐藏的价值——不是藏起来不让人看是不让人乱改。封装类这个词还有另一层含义前面提到的 Integer、Double、Character 这些包装类有时也被称作封装类因为它们把基本类型封装成了对象。同一个词两种用法看上下文区分即可。4.3 异常体系Throwable 是根Error 和 Exception 是两大分支异常的继承结构不难但选择题特别爱考哪个是所有异常的父类。答案不是 Exception而是 Throwable。整棵树大致是这样层级代表类型特点Throwable根类所有可抛出对象的父类Error内部错误、致命错误程序一般无法处理如系统级故障Exception普通异常程序可以捕获并处理RuntimeException空指针、数组越界、算术异常、类型转换异常运行时才出现编译器不强制处理由此可以推出几条常考结论Error和Exception是兄弟不是父子RuntimeException是Exception的子类捕获时如果先写父类再写子类父类分支会把子类吃掉编译器会报该 catch 块不可达的错误。多重 catch 的顺序规则也是从这棵树来的越具体的异常越往前放越笼统的越往后放Exception这种覆盖所有情况的必须放最后。原因很直白——如果前面已经有个兜底的把什么都接住了后面的分支永远轮不到那写它干嘛。还有个语义上的区分值得说清throw是主动扔一个异常写在方法体里throws是声明这个方法可能扔出哪些异常写在方法签名上。前者是动作后者是告知。至于try它是唯一能和finally单独搭配的块——catch可以不写finally照常执行这个组合在只关心收尾、不关心异常类型时特别顺手。4.4finally与return的先后那道返回 3的题public int count() { try { return 5 / 0; } catch (Exception e) { return 2 * 3; } finally { return 3; } }这个方法返回 3。执行顺序是进 try除零抛ArithmeticException跳到 catch算出 6 准备返回但在真正返回之前finally一定会执行而finally里又写了一个 return它直接把前面那个待返回的 6覆盖掉最终返回 3。如果去掉 finally 里的 return结果才是 6。这道题考的其实不是异常而是finally 的执行优先级高于 try/catch 里的 return。反过来说这也是一条劝退级实践别在 finally 里写 return它会把异常和返回值一起吞掉调试时很难看出问题出在哪。再补一道try 里System.out.print(try); return;catch 打印 catchfinally 打印 finally。因为没有异常catch 不执行输出是tryfinally顺序上 finally 在 return 之后、方法真正退出之前。这两道题放到一起看finally 的位置感就建立起来了。5. 常见误区与易混概念五个初学者最容易混的地方复习到这一步剩下的坑基本都在以为懂了其实没懂的区间。下面五条是错得最有代表性的每一条都按错在哪、为什么会错、怎么分来说。5.1 误区一以为 String 是基本类型初学者常把 String 和 int、double 并列觉得字符串不就是一种数据类型嘛。其实 String 是标准的引用类型它是java.lang包下的一个类有自己的字段和方法也能被赋值为 null。会混的原因很实际String 用起来太顺手了可以直接写String s abc;不用 new看起来跟int i 1;没区别。这属于语言给的语法糖——字面量可以直接赋给引用类型编译器帮你创建对象。怎么区分看它能不能为 null看它有没有方法。int i null;编译不过String s null;天经地义i.length()不存在s.length()合理。另外八种基本类型的首字母都是小写String 是大写命名也能看出身。5.2 误区二以为 Map 继承 List或以为集合只能存一种来源的数据有一道题问关于 Map 和 List 哪个说法正确选项里塞了Map 继承 List集合只能保存从数据库取出的数据这类干扰项。会选错往往是因为把集合当成了一种东西的不同叫法。真实关系是List、Set 都继承自 CollectionMap 自成一家与 Collection 并列彼此没有继承关系。至于能存什么集合只受类型系统约束跟数据来自数据库、文件还是手工 new 出来毫无关系。怎么区分记住 Map 的形态是键值对一次 put 两个参数List 的形态是序列一次 add 一个元素。参数个数的差异背后就是接口设计的根本分歧。另外List 里能不能放 Map 或 List——能引用类型随便套Map 的 value 也能放 List 或 Map嵌套结构就这么来的。5.3 误区三以为多重 catch 的顺序可以随便写写了几行 catch 之后有人会把Exception放在最前面图省事结果编译报错提示 catch 块不可达。也有人反过来把具体异常写在后面IDE 只是警告却不明白为什么。会混的原因是从语义上看先捕获更宽的范围似乎更保险直觉里宽泛的应该更能兜底。但编译器的逻辑是执行顺序——前面的分支一旦匹配后面的就不会再看所以父类在前等于让子类分支成为死代码。怎么区分按继承树的深度排越具体越靠前。NumberFormatException和ArrayIndexOutOfBoundsException都是RuntimeException的子类RuntimeException又是Exception的子类所以书写顺序只能是具体异常 → RuntimeException → Exception。实在记不住就先把所有子类写完最后统一放 Exception。5.4 误区四以为 Calendar 的月份从 1 开始拿到日期相关代码很容易写出cal.get(Calendar.MONTH)然后直接拼进字符串输出发现月份少了一个。Calendar 的月份字段是 0 到 11一月是 0十二月是 11。年份和日期倒是正常从 1 起算这种同一组字段规则不一致的设计最容易翻车。会混的原因是人的直觉里月份就是从 1 开始的而日期、年份也确实从 1 开始只有月份这一个例外属于历史遗留的坑。怎么区分凡是取 MONTH一律加 1凡是set月份一律减 1。前面的日期计算代码里出现(cal.get(Calendar.MONTH) 1)不是啰嗦是在做这个换算。另外Calendar.getInstance()才是拿实例的正确方式它是静态工厂方法getTime()返回的是 Date 对象不是获取时间这个语义本身两个名字很像但用途不同。5.5 误区五以为泛型 List 和普通 List 只是写法不同看着List和ListString很容易以为是可选标注加不加都一样反正存进去的都是对象。这个理解在编译期就会被打脸两者的检查强度完全不同。会混的原因是java 的泛型在运行期会被擦除ListString和ListInteger跑起来其实是同一个类这让泛型只是装饰的说法听起来很有道理。但擦除发生在编译之后编译期的类型检查是真实存在的也正是它挡住了那些会抛ClassCastException的写法。怎么区分把泛型看成编译期的类型契约而非运行期的容器标签。契约期内往里塞错类型直接编译失败契约期结束编译完信息被擦掉所以不能对泛型做instanceof判断。另外泛型的类型参数只能是引用类型Listint不合法要写ListInteger——这也是包装类存在的实际意义之一。6. 什么时候该用、什么时候别用从笔试题到真实代码的边界题库里的知识点有些在日常开发中天天用有些只在考卷上出现。分不清这条界线容易出现两种极端一种是把笔试结论生搬硬套进项目另一种是觉得这些题都是八股学了没用。两种都亏。先说高频且必须掌握的部分。equals比较字符串内容是每天的活判断引用相等在业务代码里基本只用于和 null 比。集合选型也是日常决策需要顺序和重复就 List需要去重就 Set需要按名字查值就 Map。异常处理更是绕不开——捕获具体异常、记录日志、不要空 catch这些习惯直接决定线上问题能不能定位。泛型也一样写一个通用工具方法、定义带类型的容器是常规操作。再说说只适合练思维、不适合搬进项目的部分。手写一个 Stack 类用 LinkedList 的 addFirst/getFirst/removeFirst 模拟后进先出用来理解数据结构的运作非常好但真实项目里直接用现成的双端队列实现更稳自己维护一个没有任何收益。手写十进制转十六进制的循环加 switch 分支能把进制转换的原理吃透实际写代码时一行Integer.toHexString(365)就够了。用 Calendar 做日期加减和天数差在旧代码里仍然常见但新写的代码更倾向于用后来引入的时间 API因为后者不可变、线程安全、月份从 1 开始。知识点笔试卷里的分量真实代码里的分量建议与equals的区别必考高频必须吃透尤其常量池那段包装类与自动装箱常考中频知道缓存范围和判空即可集合家族分工必考高频必须吃透手写进制转换偶尔极低理解原理即可落地用现成方法自定义 Stack偶尔极低理清思路落地用标准库Calendar 月份偏移常考中频记住 1改代码时格外小心泛型与类型擦除常考高频会用T extends Comparable这种上界多重 catch 顺序必考中频记住具体在前笼统在后finally 与 return常考低频知道会覆盖返回值并且别这么写有一条我自己的教训值得一说。早年做一个小工具图省事在 finally 里写了 return本意是无论如何都返回一个默认值。结果某次上游抛了异常日志里干干净净什么都没留下排查了两个多小时才定位到是那个 finally 把异常吞了。从那以后我每次写 try 块都强制自己走一遍三问这里可能抛什么、catch 要捕到多具体、finally 里到底该不该有返回语句。规则不复杂但漏一次就够难受的。至于这份资料本身它的价值不在背完这些答案就能过而在于它把散落在教材各章的规则压缩成了几十道具体情境索引从哪算、null 从哪来、谁的返回值说了算、哪两个概念长得像但不是一回事。顺着这些题把每一处为什么补上你对 java 基础的那层模糊感会明显变薄。需要完整题目和参考答案的话按文末方式获取即可。希望帮到你。本文还有配套的精品资源点击获取

相关推荐

西门子PLC在农业自动灌溉系统中的应用与实践
西门子PLC在农业自动灌溉系统中的应用与实践

1. 项目概述:PLC在农业自动化中的典型应用 在现代化农业生产中,自动灌溉系统已经成为提高水资源利用率、降低人工成本的关键设备。西门子S7-200系列PLC因其稳定可靠的性能和友好的编程环境,成为中小型灌溉系统的首选控制器。这个项目通过组态… · 2026/11/6 9:19:03

网络安全行业现状与人才培养体系解析
网络安全行业现状与人才培养体系解析

1. 网络安全行业现状与人才缺口分析 当前全球网络安全形势正面临前所未有的严峻挑战。根据中国网络安全产业联盟最新数据,2022年我国网络安全市场规模已达633亿元,预计2025年将突破800亿元大关。这种快速增长背后,是日益复杂的网络威胁环境和… · 2026/11/6 9:18:02

Windows下VSCode编译调试C/C++全攻略:从环境搭建到断点调试
Windows下VSCode编译调试C/C++全攻略:从环境搭建到断点调试

嵌入式开发这块,工具链的折腾程度可以说是劝退新人的第一道门槛。我见过太多人卡在“代码写完了,怎么让它跑起来”这一步,尤其是从 Keil、IAR 那套 IDE 转过来的朋友,第一次面对 VSCode 加一堆配置文件的时候,很容易懵… · 2026/11/6 9:18:02

PyTorch手写UNet图像分割实战:从数据预处理到Dice评估的完整闭环
PyTorch手写UNet图像分割实战:从数据预处理到Dice评估的完整闭环

简介:本资源是一份面向Python图像处理初学者与深度学习实践者的U-Net图像分割实战项目,聚焦生物医学、遥感及卫星影像等场景下的像素级分割任务。资源提供完整可运行代码框架与配套示例数据,涵盖数据预处理、模型构建(含跳跃连接与… · 2026/11/6 10:13:54

UE4美术逻辑转蓝图:四层架构与VFX参数闭环控制
UE4美术逻辑转蓝图:四层架构与VFX参数闭环控制

简介:《UE4艺术大师蓝图全套》是一套面向游戏开发初学者与进阶美术/策划人员的系统性学习资源,聚焦UE4引擎中图形化编程核心——蓝图系统的全流程实践,有效降低逻辑开发门槛,助力非程序员快速构建可交互游戏原型。资源共941个文件… · 2026/11/6 10:13:54

Google Flow入门:用文字和参考图生成短片并拼成一个场景
Google Flow入门:用文字和参考图生成短片并拼成一个场景

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

Java Web购物车实战:掌握HttpSession会话状态管理
Java Web购物车实战:掌握HttpSession会话状态管理

简介:这是一份面向Java Web初学者的轻量级购物车系统实战案例,聚焦JSPServletTomcatSession核心技术栈,帮助开发者快速掌握电商基础功能的前后端协同实现。资源共62个文件,包含13个Java源码(覆盖entity、dao、service、… · 2026/11/6 10:13:54

Rocky Linux 9.5 OpenSSH 10.0p1 + OpenSSL 3.5.0 安全升级实战
Rocky Linux 9.5 OpenSSH 10.0p1 + OpenSSL 3.5.0 安全升级实战

简介:本资源是一套专为Rocky Linux 9.5系统设计的OpenSSH服务升级与安全加固脚本包,面向Linux系统管理员、安全运维工程师及红蓝对抗中需快速加固SSH服务的技术人员。针对默认系统中OpenSSH版本偏低、加密套件过时等风险,提供从OpenSSL 3.5.0… · 2026/11/6 10:13:54

Div.3 CF 1114A题(排序,贪心)
Div.3 CF 1114A题(排序,贪心)

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

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

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

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

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

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

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

三菱PLC数据采集到数据库的时序设计:Python+MC协议实战
三菱PLC数据采集到数据库的时序设计:Python+MC协议实战

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

ASIC主模式RTL设计:状态机与三态驱动的流片级实现
ASIC主模式RTL设计:状态机与三态驱动的流片级实现

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

STM32嵌入式C++开发:GDB调试与Renode仿真实战指南
STM32嵌入式C++开发:GDB调试与Renode仿真实战指南

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

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

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

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

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

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

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

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码