[资料] 名词链接帖 [占位ing]
RednaxelaFX
2010-09-11
A
Abstract Interpretation Wikipedia see also: Symbolic Execution Abstract Syntax Tree (AST) Wikipedia Accumulator-based Architecture Wikipedia see also: Accumulator Machine Accumulator Machine see also: Accumulator-based Architecture Adaptive Compilation presentation: Dynamic Compilation and Adaptive Optimization in Virtual Machines (2006) Matthew Arnold,Stephen Fink, David Grove, Michael Hind Ahead-of-time Compilation (AOT Compilation) Alias Analysis Wikipedia Automatic Memory Management see also: Memory Management, Garbage Collection Automaton Wikipedia B Back-edge Basic Block (BB) Wikipedia Biased-locking paper: Eliminating Synchronization-Related Atomic Operation with Biased Locking and Bulk Rebiasing (2006) Ken Russell, Dave Detlefs Bimorphic Bootstrapping Wikipedia Bottom Type Bottom-up Parsing Bottom-up Rewrite System (BURS) Wikipedia Branch Target Buffer (BTB) Wikipedia Bytecode documentation: Specification of the GNU Smalltalk virtual machine The Strongtalk VM bytecode format C Card Table see also: Remember Set, Garbage Collection paper: Remembered sets can also play cards (1993) Antony L. Hosking, Richard L. Hudson Central Processing Unit (CPU) Wikipedia Class Hierarchy Analysis (CHA) article: Class Hierarchy Graphs, Function Devirtualization, & RTTI (2005-04-01) Dibyendu Das paper: Optimization of Object-Oriented Programs using Static Class Hierarchy Analysis (1995) Jeffrey Dean, David Grove, Craig Chambers Code Motion Common Intermediate Language (CIL) Wikipedia Common Language Infrastructure (CLI) Wikipedia documentation: ECMA-335 Common Language Infrastructure (CLI) ISO/IEC 23271:2006 Common Language Runtime (CLR) Compare-and-swap (CAS) see also: Load-Linked / Store-Conditional blog: Unsafe & CompareAndSwap (2010-07-24) Cliff Click, Jr. Compilation Wikipedia Component-Dependency Graph (CDG) Constant Folding Wikipedia see also: Constant Propagation Constant Propagation Wikipedia see also: Constant Folding Constrained Execution Region (CER) documentation: Constrained Execution Regions Context-free Grammar (CFG) Wikipedia Continuation Wikipedia Continuation-passing Style (CPS) Wikipedia Contravariance Control Flow Wikipedia Control-flow Graph (CFG) Wikipedia Control-flow Normalization Copy-on-write (CoW) Wikipedia Copy Propagation Wikipedia Coroutine Wikipedia documentation: Da Vinci Machine Project Wiki: Coroutines (2010) Lukas Stadler Covariance D Deferred Reference Counting (DRC) see also: Reference Counting Directed Acyclic Graph (DAG) Wikipedia Dominator Wikipedia Dominator Tree Duck Typing Wikipedia Dynamic Language Runtime (DLR) Wikipedia Dynamic Recompilation (dynarec) Wikipedia blog post: Introduction to Dynamic Recompilation Dynamic Typing E Eliminating Array-Bounds Checks on Demand (ABCD) paper: ABCD: Eliminating Array-Bounds Checks on Demand (2000) Rastislav Bodik, Rajiv Gupta, Vivek Sarkar Ephemeral Escape Analysis (EA) Wikipedia presentation: Fast Bytecodes for Funny Languages (2008) Cliff Click, Jr. blog post: Escape Analysis in PyPy's JIT (2010-09-13) The JSR292 endgame (2009) Fredrik Öhrström paper: 在开放世界中实现逃逸分析 (2008) 史晓华, 吴甘沙, 金茂忠, LUEH Guei-Yuan, 刘超, 王雷 Evaluating the Impact of Thread Escape Analysis on a Memory Consistency Model-aware Compiler (2005) Chi-Leung Wong, Zehra Sura, Xing Fang, Kyungwoo Lee, Samuel P. Midki, Jaejin Lee, David Padua Escape Analysis for Java (1999) Jong-Deok Choi, Manish Gupta, Mauricio Serrano, Vugranam C. Sreedhar, Sam Midkiff Evaluation Stack see also: Expression Stack, Operand Stack Exeception Execution Engine (EE) Execution Environment (EE) Expression Stack see also: Evaluation Stack, Operand Stack F Feedback-directed Optimization (FDO) Finite Automaton (FA) see also: Finite-state Machine Finite-state Machine (FSM) Wikipedia see also: Finite Automaton Foreign Function Interface (FFI) Wikipedia Forth Wikipedia G Garbage Collection (GC) Wikipedia book: ガベージコレクションのアルゴリズムと実装 (2010) 中村 成洋, 相川 光, 竹内 郁雄 ISBN-10: 4798025623 Garbage Collection: Algorithms for Automatic Dynamic Memory Management (1996) Richard Jones, Rafael D. Lins ISBN-10: 0471941484 Generics Wikipedia Global Value Numbering (GVN) Wikipedia Grammar Graph-coloring Register Allocation H Handle Wikipedia Heap Wikipedia Hidden Class presentation: First-Class Hidden Types (2006) Joe Hallett, Eric Allen, Victor Luchangco, Sukyoung Ryu, Sam Tobin-Hochstadt paper: Organizing Programs Without Classes (1991) David Ungar, Craig Chambers, Bay-Wei Chang, and Urs Hölzle High-frequency Heap book: Shared Source CLI Essentials, page 222 Hotpath VM see also: Trace-based Compilation I Inheritance Wikipedia Inner Interpreter see also: Forth Instruction Instruction-level Parallelism (ILP) Wikipedia Instruction Set Wikipedia see also: Instruction Set Architecture Instruction Set Architecture (ISA) see also: Instruction Set Instrumentation Wikipedia Interface Method Table (IMT, itable, itbl) see also: Interface Virtual Table paper: Efficient Dispatch of Java Interface Methods (2001) Bowen Alpern, Anthony Cocchi, David Grove, Derek Lieber Efficient Implementation of Java Interfaces: Invokeinterface Considered Harmless (2001) Bowen Alpern, Anthony Cocchi, Stephen Fink, David Grove, Derek Lieber Interface Virtual Table (IVT, itable, itbl) see also: Interface Method Table paper: SableVM: A Research Framework for the Efficient Execution of Java Bytecode (2001) Etienne M. Gagnon, Laurie J. Hendren Intermediate Language (IL) see also: Intermediate Representation Intermediate Representation (IR) Wikipedia see also: Intermediate Language paper: Improving Compiler-Runtime Separation with XIR (2010) Ben L. Titzer, Thomas Würthinger, Doug Simon, Marcelo Cintra Interpretation Wikipedia Interprocedural Analysis (IPA) Wikipedia Intrinsics Wikipedia J Jalapeño see also: Jikes RVM Java Bytecode see also: Bytecode documentation: The JavaTM Virtual Machine Specification, Second Edition, Chapter 6 The Java Virtual Machine Instruction Set Tim Lindholm, Frank Yellin paper: Java intermediate bytecodes (1995) James Gosling Jikes RVM Wikipedia see also: Jalapeño Just-in-time Compilation (JIT Compilation) Wikipedia paper: Design and Evaluation of Dynamic Optimizations for a Java Just-In-Time Compiler (2007), Toshio Suganuma K L Large-object Heap (LOH) book: Shared Source CLI Essentials, page 232-234 Lexer see also: Scanner, Tokenizer Linear-scan Register Allocation (LSRA) paper: Linear Scan Register Allocation for the Java HotSpot™ Client Compiler (2004) Christian Wimmer Linking Load-Linked / Store-Conditional (LL/SC) Wikipedia Load-store Architecture Local Value Numbering (LVN) Loop Loop-header Loop-invariant Code Motion (LICM) Wikipedia Loop Nest Optimization (LNO) Wikipedia Low-frequency Heap book: Shared Source CLI Essentials, page 222 M Managed Runtime Environment (MRE, MRTE) workshop: 3rd Workshop on Managed Runtime Environments, MRE'05 (2005) Megamorphic Memory Barrier (membar) Wikipedia see also: Memory Fence Memory Fence see also: Memory Barrier Memory Management Wikipedia website: The Memory Management Reference Memory Management Unit (MMU) Wikipedia Memory Model Metacircular Evaluator (metacircular interpreter, metacircular virtual machine) Wikipedia 用高级语言实现时,有两种思路: 1、用高级语言的受限子集来编写,将其翻译为较低级语言后再编译生成最终的目标代码 (例:Squeak (Smalltalk -> Slang), Squawk (Java -> Java), PyPy (Python -> RPython)) 2、直接用高级语言自身来编写整个运行时环境,依赖compiler intrinsics来提供语言扩展以实现底层操作 (例:Jikes RVM (Java), MRP (Java), Klein (Smalltalk), Maxine (Java)) Metacircular Research Platform (MRP) see also: Jikes RVM Metaobject Protocol (MOP) Wikipedia book: The Art of the Metaobject Protocol (1991) Gregor Kiczales, Jim des Rivieres, Daniel G. Bobrow ISBN-10: 0262610744 Method Handle Method Inlining paper: An Empirical Study of Method Inlining for a Java Just-In-Time Compiler (2002) Toshio Suganuma, Toshiaki Yasue, Toshio Nakatani Monomorphic Inline Cache (MIC) Multiple Inheritance Wikipedia N Nominal Typing Wikipedia Non-local Control Flow Non-Uniform Memory Architecture (NUMA, Non-Uniform Memory Access) Wikipedia O Object Churn presentation: Jolt: Removing Object Churn Object Fusing see also: Object Layout paper: Automatic Feedback-Directed Object Fusing (2010) Christian Wimmer, Hanspeter Mössenböck Object Layout book: Rubyソースコード完全解説, 第2章 オブジェクト (2002) 青木 峰郎, まつもと ゆきひろ ISBN-10: 4844317210 paper: Vertical Object Layout and Compression for Fixed Heaps (2007) Ben L. Titzer, Jens Palsberg Custom Object Layout for Garbage-Collected Languages (2006) Gene Novark, Trevor Strohman, Emery D. Berger Object-oriented Programming (OOP) On-stack Replacement (OSR) technical article: The Java HotSpot Performance Engine: On-Stack Replacement Example (2000) Sun Microsystems paper: Efficient and General On-Stack Replacement for Aggressive Program Specialization (2006) Sunil Soman, Chandra Krintz Opcode Operand Stack see also: Expression Stack, Evaluation Stack Operating System Operator Operator-precedence Parsing Wikipedia Ordinary Object Pointer (Object Oriented Pointer, OOP) see also: Tagged Pointer documentation: Compressed oops in the Hotspot JVM John Rose VM Types used to map Smalltalk objects into C++ objects P Packrat Parsing Parser · Error Recovery paper: Natural and Flexible Error Recovery for Generated Parsers (2009) Maartje de Jonge, Emma Nilsson-Nyman, Lennart C. L. Kats, Eelco Visser Parse Tree Parsing Expression Grammar (PEG) Wikipedia paper: Parsing Expression Grammars: A Recognition-Based Syntactic Foundation (2004) Bryan Ford Phi (Φ) see also: Single Static Assignment Form Pinning Wikipedia Profiling Wikipedia Pointer Point-to Analysis (pointer analysis) Wikipedia presentation: SSA Form w.r.t. Pointer Analysis Precision Markus Schordan Pointer Analysis in the Presence of Dynamic Class Loading (2004) Martin Hirzel, Amer Diwan, Michael Hind Polymorphic Inline Cache (PIC) Wikipedia paper: Optimizing Dynamically-Typed Object-Oriented Programming Languages with Polymorphic Inline Caches (1991) Urs Hölzle, Craig Chambers, and David Ungar Polymorphism Preprocessing Wikipedia PyPy Wikipedia blog: PyPy Status Blog Q R Random Number Generation (RNG) Wikipedia Read Barrier Read-eval-print loop (REPL) Wikipedia Reference Counting Wikipedia Region-based Compilation (RBC) paper: A region-based compilation technique for dynamic compilers (2006) Toshio Suganuma, Toshiaki Yasue Toshio, Nakatani A Region-Based Compilation Technique for a Java Just-In-Time Compiler (2003) Toshio Suganuma, Toshiaki Yasue Toshio, Nakatani Register Allocation Wikipedia Register-based Architecture see also: Stack-based Architecture paper: Virtual Machine Showdown: Stack Versus Registers (2005) Yunhe Shi, David Gregg, Andrew Beatty, M. Anton Ertl Regular Expression book: Mastering Regular Expressions, 3rd Edition (2006) Jeffrey E.F. Friedl ISBN-10: 0596528124 Regular Grammar Reification Remember Set see also: Garbage Collection paper: Combining Card Marking with Remembered Sets: How to Save Scanning Time (1998) Alain Azagury, Elliot K. Kolodner, Erez Petrank, Zvi Yehudai Reverse Polish Notation (RPN) Wikipedia Roll-forward Root Set see also: Garbage Collection Root Set Enumeration see also: Root Set, Garbage Collection paper: Finding References in Java™ Stacks (1997) Ole Agesen, David Detlefs S Safepoint see also: Garbage Collection documentation: HotSpot Glossary of Terms blog post: GC safe-point (or safepoint) and safe-region (2008-01-26) Xiao-Feng Li paper: Optimization of Java Virtual Machine with Safe-Point Garbage Collection (2006) Sergey V. Rogov, Viacheslav A. Kirillin, Victor V. Sidelnikov GC Points in a Threaded Environment (1998) Ole Agesen Sampling Snapshot-at-the-beginning (SATB) glossary: SATB Scanner see also: Lexer, Tokenizer SECD Machine Wikipedia paper: The tail-recursive SECD machine (1999) John D. Ramsdell The Mechanical Evaluation of Expressions (1964) Peter J. Landin Self-modifying Code Wikipedia Semaphor Shadow Stack paper: Accurate Garbage Collection in an Uncooperative Environment (2002) Fergus Henderson Shared Source Common Language Infrastructure (SSCLI, Shared Source CLI) Wikipedia book: SSCLI 2.0 Essentials (2009) Joel Pobar, Ted Neward, David Stutz, Geoff Shilling Distributed Virtual Machines: Inside the Rotor CLI (2004) Gary Nutt ISBN-10: 0321159837 Shared Source CLI Essentials (2001) David Stutz, Ted Neward, Geoff Shilling ISBN-10: 059600351X Single Inheritance Single Instruction, Multiple Data (SIMD) Wikipedia Spinlock Squawk Wikipedia Stack Banging blog post: Stacks with split personalities (2010-08-26) Doug Simon Stack-based Architecture see also: Stack Machine, Register-based Architecture paper: Virtual Machine Showdown: Stack Versus Registers (2005) Yunhe Shi, David Gregg, Andrew Beatty, M. Anton Ertl Stack Frame Stack Machine see also: Stack-based Architecture Stack Overflow Wikipedia Stack Walker State Machine Static Single Assignment Form (SSA Form) Wikipedia seminar: Static Single-Assignment Form Seminar (2009) presentation: In and Out of SSA: A Denotational Specification Sebastian Pop SSA Form in the Java HotSpot Client Compiler (2010) Christian Wimmer paper: Constructing SSA the Easy Way (2009) Michael Bebenita Java Bytecode Verification via Static Single Assignment Form (2008) Andreas Gal, Michael Franz, Christian W. Probst Design of the Java HotSpot™ Client Compiler for Java 6 (2006) Thomas Kotzmann, Christian Wimmer, Hanspeter Mössenböck, Thomas Rodriguez, Kenneth Russell, David Cox Static Typing Strength reduction Wikipedia Strongly Connected Component (SCC) Wikipedia see also: Graph Theory Structural Typing Wikipedia Subtype Checking paper: Fast Subtype Checking in the HotSpot JVM (2002) Cliff Click, John Rose Dynamic Type Checking in Jalapeño (2001) Bowen Alpern, Anthony Cocchi, David Grove Subtyping Symbolic Execution Wikipedia see also: Abstract Interpretation T Tagged Pointer Wikipedia Tail Call Wikipedia Tail Call Optimization (TCO) Wikipedia paper: Tail Call Optimization in the Java HotSpot(TM) VM (2009) Arnold Schwaighofer Thread Threaded Code Wikipedia website: Threaded Code, M. Anton Ertl paper: Threaded Code Variations and Optimizations (Extended Version) (2002) M. Anton Ertl Thread-local Allocation Buffer (TLAB) blog post: The Real Thing (2006-08-15) Jon Masamitsu / Ross K. Thunk Wikipedia Tokenizer see also: Lexer, Scanner Top-down Parsing Top-of-stack Caching (TOS caching, stack caching, TOSCA) paper: Stack Caching for Interpreters (1995) M. Anton Ertl Trace-based Compilation video: Inside SPUR - A Trace-Based JIT Compiler for CIL (2010) paper: Trace Based Compilation in Interpreter-less Execution Environments (2010) Michael Bebenita, Mason Chang, Karthik Manivannan, Gregor Wagner, Marcelo Cintra, Bernd Mathiske, Andreas Gal, Christian Wimmer, Michael Franz SPUR - A Trace-Based JIT Compiler for CIL (2010) Michael Bebenita, Florian Brandner, Manuel Fahndrich, Francesco Logozzo, Wolfram Schulte, Nikolai Tillmann, Herman Venter Trace-based Just-in-Time Type Specialization for Dynamic Languages (2009) Andreas Gal, Brendan Eich, Mike Shaver, David Anderson, David Mandelin, Mohammad R. Haghighat, Blake Kaplan, Graydon Hoare, Boris Zbarsky, Jason Orendorff, Jesse Ruderman, Edwin Smith, Rick Reitmaier, Michael Bebenita+, Mason Chang, Michael Franz Tracing the Meta-Level: PyPy's Tracing JIT Compiler (2009) Carl Friedrich Bolz, Antonio Cuni HotpathVM: An Effective JIT Compiler for Resource-constrained Devices (2006) Andreas Gal, Christian W. Probst, Michael Franz Trace-tree Wikipedia paper: Incremental Dynamic Code Generation with Trace Trees (2006) Andreas Gal, Michael Franz Trampoline Translation Lookaside Buffer (TLB) Wikipedia Type Checking paper: Dynamic Type Checking in Jalapeño (2001) Bowen Alpern, Anthony Cocchi, David Grove Type Feedback paper: Type Feedback for Bytecode Interpreters (2007) Michael Haupt, Robert Hirschfeld, Marcus Denker Type Inference Type System U Unification V Virtual Execution Engine (VEE) Virtual Machine (VM) Wikipedia book: Oracle JRockit: The Definitive Guide (2010) Marcus Hirt, Marcus Lagergren ISBN-10: 1847198066 Virtual Machines: Versatile Platforms for Systems and Processes (2005) Jim Smith, Ravi Nair ISBN-10: 1558609105 Virtual Machines (2005) Iain D. Craig ISBN-10: 1852339691 Virtual Machine Design and Implementation C/C++ (2002) Bill Blunden ISBN-10: 1556229038 Virtual Memory (VM) Wikipedia Virtual Method Dispatch (virtual function dispatch) paper: The Direct Cost of Virtual Function Calls in C++ (1996) Karel Driesen, Urs Hölzle Virtual Method Table (VMT, vtable, vtbl, virtual function table, VFT, vftable, vftbl) Wikipedia W Write Barrier paper: A Comparative Performance Evaluation of Write Barrier Implementations (1992) Antony Hosking Eliot, Antony L. Hosking, J. Eliot, B. Moss, Darko Stefanović X Y Z |
|
kennyluck
2014-09-26
线性扫描我推荐同一个作者的新作
Optimized Interval Splitting in a Linear Scan Register Allocator 我看论文的经验不是很多,不过这篇真的感觉写得挺好,也比 04 那篇少很多跟线性扫描无关的东西。 |
|
LeafInWind
2014-11-26
请问remembered set与card table是什么关系,可以认为后者是前者的一种实现方式吗?!
|
|
RednaxelaFX
2014-11-29
LeafInWind 写道 请问remembered set与card table是什么关系,可以认为后者是前者的一种实现方式吗?!
好久没看到楼上的“?!”了 Remembered Set是一种抽象概念,而card table可以是remembered set的一种实现方式。 Remembered Set是在实现部分垃圾收集(partial GC)时用于记录从非收集部分指向收集部分的指针的集合的抽象数据结构。 分代式GC是一种部分垃圾收集的实现方式。当分两代时,通常把这两代叫做young gen和old gen;通常能单独收集的只是young gen。此时remembered set记录的就是从old gen指向young gen的跨代指针。 Regional collector也是一种部分垃圾收集的实现方式。此时remembered set就要记录跨region的指针。 不过就像平时讨论GC时大家只关心tracing GC而通常不把reference counting算在里面(严格说reference counting也是一种GC),remembered set与card table也有一些平时讨论时隐含的假设(虽然严格说那些假设并不必要)。 例如: 1、记录精度 一般的隐含假设: Remembered Set:对象粒度(remembered set里存有old generation的对象的指针); Card Table:card粒度(通常是2的幂字节大小的内存区域,例如HotSpot用512字节),里面可能包含多个对象。 其实无论是remembered set还是card table,记录精度都有很大的选择余地: * 字粒度:每个记录精确到一个机器字(word)。该字包含有跨代指针。 * 对象粒度:每个记录精确到一个对象。该对象里有字段含有跨代指针。 * card粒度:每个记录精确到一大块内存区域。该区域内有对象含有跨代指针。 * (还有其它可能性,任君想像) 现实中上面3种做法都有应用到实际产品种。全看设计者的取舍。 如果选择card的大小为1 word,那card粒度就是等于字粒度。 2、使用的数据结构 一般的隐含假设: Remembered Set:使用指针(对象指针或者字指针)的数据来实现,例如 struct RememberedSet { Object* data[MAX_REMEMBEREDSET_SIZE]; }; 或 typedef char* address; struct RememberedSet { address* data[MAX_REMEMBEREDSET_SIZE]; }; 不然的话不用数组而用例如基于红黑树的集合也成⋯ struct RememberedSet { std::set<Object*> data; }; ⋯嗯很少真的这么做的。 Card Table:使用字节数组来实现card的记录,每个card对应该数组里的一个bit或一个byte,例如 struct CardTable { byte table[MAX_CARDTABLE_SIZE]; }; 实际上card table也是remembered set的一种特殊实现。只是大家平时说的时候总觉得好像remembered set就该有对象指针的数组⋯那是不必要的假设。 3、write-barrier的实现方式 一般的隐含假设: Remembered Set:write-barrier是有条件的 Card Table:write-barrier是无条件的(也称blind card-marking) 其实remembered set也可以做称无条件的,而card marking也可以做成有条件的。这个都可选择。 ================================== 还有一个与remembered set相关的概念,叫做store buffer。由于其实现方式也被称为“sequential store buffer”。 有些资料会把store buffer也看作remembered set的一种实现,但我喜欢把前者看作与后者相关/近似的概念,而不是“实现方式”。 例如最老的V8使用per-page remembered set,而比较新的版本使用store buffer。 (使用remembered set的V8,以最早的V8 0.1为例,每个“Page”有8KB,其中开头有248字节用于remembered set(RSet)。RSet里每个bit对应该Page里的一个word,所以这是word精度的。 而使用store buffer的V8也是word精度的。) 两者的相似之处在于它们都记录跨区域的指针。 而最重要的区别是:remembered set是一个集合(set),所以不包含重复;store buffer则通常允许包含重复。 Store buffer的write-barrier比要去重复的remembered set的writer-barrier要简单和高效,但由于其允许重复,前者在部分收集(例如young GC)时的开销会比后者大。 一个折衷的办法是在mutator的write-barrier还是允许重复,然后周期性增量式或在另一个线程并发的对store buffer去重。这样到实际执行部分收集时重复条目的数量可以大幅减少,提高GC的效率。V8的store buffer就是这样做的。 这种还需要对数据做后续处理的write-barrier也叫做logging write-barrier。 ================================== 这组演示稿讲解分代式GC中各种概念的关系讲得不错,可以参考: https://www.ps.uni-saarland.de/courses/gc-ws01/slides/generational_gc.pdf Steve Blacburn的barrier论文也有些内容与我上面的描述相应: Barriers: friend or foe? 引用 Pointer sources can be remembered with a variety of different mechanisms, including remembering cards (regions of memory that may contain pointers into the nursery), objects (objects that may contain pointers into the nursery), and slots (addresses that may contain a pointer into the nursery)
|
相关讨论
相关资源推荐
- Phoenix schema的 启用、操作、关闭
- ApachePhoenix常用命令及基本操作
- phoenixframework自动化测试平台环境部署(Linux)
- phoenix常用操作命令
- Phoenix的shell简单操作
- Vue快速入门学习笔记(更新ing)
- html-图像、链接、表格、列表
- SpringBoot+Vue全栈开发--学习笔记(更新ing)
- 在python中的占位符中、请你选出不属于占位符的选项_2020年超星尔雅微表情识别·读脸读心 作业答案...
- 在python中的占位符中、请你选出不属于占位符的选项_知到智慧树My College English Diary作业题库答案...