[{"data":1,"prerenderedAt":3318},["ShallowReactive",2],{"series:index":3,"content:\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter6-xwindow":972,"surround:\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter6-xwindow":3315},[4,15,25,35,45,54,64,74,82,91,101,110,120,129,138,147,152,162,172,181,189,194,203,213,223,233,243,253,263,273,283,293,303,313,323,333,339,348,357,366,372,381,391,401,410,420,429,439,448,457,467,476,485,494,504,513,522,531,540,549,559,569,578,587,596,605,610,620,629,638,644,649,658,666,674,679,687,692,700,708,716,724,732,740,749,758,766,774,779,787,796,805,814,823,831,836,845,850,855,863,871,879,887,895,900,905,914,923,931,939,947,955,963],{"stem":5,"path":6,"title":7,"date":8,"collapsed":9,"readingTime":10},"posts\u002F2024\u002FXZZD-Aquire-Score","\u002F2024\u002F10\u002F23\u002FXZZD-Aquire-Score","XZZD_Aquire_Score","2024-10-23 15:08:30",false,{"text":11,"minutes":12,"time":13,"words":14},"3 min read",2.955,177300,591,{"stem":16,"path":17,"title":18,"date":19,"collapsed":9,"readingTime":20},"posts\u002F2024\u002Felec-design-contest-2024","\u002F2024\u002F07\u002F07\u002Felec-design-contest-2024","东四——隐秘的角落","2024-07-07 11:44:32",{"text":21,"minutes":22,"time":23,"words":24},"2 min read",1.74,104400,348,{"stem":26,"path":27,"title":28,"date":29,"collapsed":9,"readingTime":30},"posts\u002F2024\u002Fmechanics","\u002F2024\u002F07\u002F08\u002Fmechanics","about力学","2024-07-08 14:14:07",{"text":31,"minutes":32,"time":33,"words":34},"9 min read",8.54,512400,1708,{"stem":36,"path":37,"title":38,"date":39,"collapsed":9,"readingTime":40},"posts\u002F2025\u002F25GElecDesignContest","\u002F2025\u002F08\u002F26\u002F25GElecDesignContest","纪念最好的大二五组 - Soleil 的 电赛回忆录","2025-08-26 11:06:33",{"text":41,"minutes":42,"time":43,"words":44},"30 min read",29.99,1799400,5998,{"stem":46,"path":47,"title":48,"date":49,"collapsed":9,"readingTime":50},"posts\u002F2025\u002FEngineering-Innovation","\u002F2025\u002F01\u002F20\u002FEngineering-Innovation","工程实践与创新能力大赛","2025-01-20 22:20:59",{"text":21,"minutes":51,"time":52,"words":53},1.365,81900,273,{"stem":55,"path":56,"title":57,"date":58,"collapsed":9,"readingTime":59},"posts\u002F2025\u002FTOP","\u002F2025\u002F01\u002F20\u002FTOP","置顶","3025-01-20 21:53:36",{"text":60,"minutes":61,"time":62,"words":63},"1 min read",0.285,17100,57,{"stem":65,"path":66,"title":67,"date":68,"collapsed":9,"readingTime":69},"posts\u002FUGCourses\u002F1.freshman-spring\u002Fengineering-drawing-notes","\u002F2024\u002F06\u002F30\u002Fengineering-drawing-notes","工程图学期末复习","2024-06-30 21:02:09",{"text":70,"minutes":71,"time":72,"words":73},"15 min read",14.78,886800,2956,{"stem":75,"path":76,"title":77,"date":78,"collapsed":9,"readingTime":79},"posts\u002FUGCourses\u002F1.freshman-spring\u002Findex","\u002Fugcourses\u002Ffreshman-spring","大一春夏","2024-06-30 19:15:28",{"text":80,"minutes":81,"time":81,"words":81},"0 min read",0,{"stem":83,"path":84,"title":85,"date":86,"collapsed":9,"readingTime":87},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002FComplex-Analysis","\u002F2025\u002F01\u002F21\u002FComplex-Analysis","复变函数与积分变换","2025-01-21 13:23:59",{"text":11,"minutes":88,"time":89,"words":90},2.855,171300,571,{"stem":92,"path":93,"title":94,"date":95,"collapsed":9,"readingTime":96},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002FFundamentalsMarxism","\u002F2025\u002F06\u002F06\u002FFundamentalsMarxism","马克思主义基本原理","2025-06-06 00:22:45",{"text":97,"minutes":98,"time":99,"words":100},"6 min read",5.54,332400,1108,{"stem":102,"path":103,"title":104,"date":105,"collapsed":9,"readingTime":106},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002FMathematical-Modeling","\u002F2024\u002F09\u002F22\u002FMathematical-Modeling","数学建模（课程）","2024-09-22 19:07:42",{"text":11,"minutes":107,"time":108,"words":109},2.475,148500,495,{"stem":111,"path":112,"title":113,"date":114,"collapsed":9,"readingTime":115},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002FMicroelectronic-Circuits","\u002F2025\u002F01\u002F20\u002FMicroelectronic-Circuits","电基小子","2025-01-20 23:02:49",{"text":116,"minutes":117,"time":118,"words":119},"5 min read",4.225,253500,845,{"stem":121,"path":122,"title":123,"date":124,"collapsed":9,"readingTime":125},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002FMumerical-Analysis","\u002F2024\u002F09\u002F19\u002FMumerical-Analysis","数值分析方法","2024-09-19 17:12:56",{"text":11,"minutes":126,"time":127,"words":128},2.1,126000,420,{"stem":130,"path":131,"title":132,"date":133,"collapsed":9,"readingTime":134},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002FProbability-Theory","\u002F2025\u002F01\u002F21\u002FProbability-Theory","概率论与数理统计","2025-01-21 12:52:11",{"text":11,"minutes":135,"time":136,"words":137},2.205,132300,441,{"stem":139,"path":140,"title":141,"date":142,"collapsed":9,"readingTime":143},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002Fengineering-training","\u002F2024\u002F09\u002F17\u002Fengineering-training","工程训练","2024-09-17 21:40:26",{"text":11,"minutes":144,"time":145,"words":146},2.385,143100,477,{"stem":148,"path":149,"title":150,"date":78,"collapsed":9,"readingTime":151},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002Findex","\u002Fugcourses\u002Fsophomore-autumn","大二秋冬",{"text":80,"minutes":81,"time":81,"words":81},{"stem":153,"path":154,"title":155,"date":156,"collapsed":9,"readingTime":157},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002Fsolid-state-physics","\u002F2024\u002F09\u002F11\u002Fsolid-state-physics","固体物理基础","2024-09-11 19:15:26",{"text":158,"minutes":159,"time":160,"words":161},"4 min read",3.21,192600,642,{"stem":163,"path":164,"title":165,"date":166,"collapsed":9,"readingTime":167},"posts\u002FUGCourses\u002F3.sophomore-spring\u002FAIFrontier","\u002Fugcourses\u002Fsophomore-spring\u002Faifrontier","人工智能前沿","2025-06-12 14:58:16",{"text":168,"minutes":169,"time":170,"words":171},"25 min read",24.02,1441200,4804,{"stem":173,"path":174,"title":175,"date":166,"collapsed":9,"readingTime":176},"posts\u002FUGCourses\u002F3.sophomore-spring\u002FDigitalSys","\u002Fugcourses\u002Fsophomore-spring\u002Fdigitalsys","数字系统设计",{"text":177,"minutes":178,"time":179,"words":180},"45 min read",44.87,2692200,8974,{"stem":182,"path":183,"title":184,"date":166,"collapsed":9,"readingTime":185},"posts\u002FUGCourses\u002F3.sophomore-spring\u002FMaoTheory","\u002F2025\u002F06\u002F12\u002FMaoTheory","毛概",{"text":70,"minutes":186,"time":187,"words":188},14.63,877800,2926,{"stem":190,"path":191,"title":192,"date":78,"collapsed":9,"readingTime":193},"posts\u002FUGCourses\u002F3.sophomore-spring\u002Findex","\u002Fugcourses\u002Fsophomore-spring","大二春夏",{"text":80,"minutes":81,"time":81,"words":81},{"stem":195,"path":196,"title":197,"date":198,"collapsed":9,"readingTime":199},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture1","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture1","Lecture 1：摩尔定律与 CMOS","2026-09-09 19:39:00",{"text":60,"minutes":200,"time":201,"words":202},0.535,32100,107,{"stem":204,"path":205,"title":206,"date":207,"collapsed":9,"readingTime":208},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture10","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture10","Lecture 10：从 MOS 电容到 MOSFET","2026-09-10 00:10:00",{"text":209,"minutes":210,"time":211,"words":212},"18 min read",17.615,1056900,3523,{"stem":214,"path":215,"title":216,"date":217,"collapsed":9,"readingTime":218},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture11","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture11","Lecture 11：亚阈值效应与 MOSFET 尺寸缩放","2026-09-10 00:20:00",{"text":219,"minutes":220,"time":221,"words":222},"23 min read",22.35,1341000,4470,{"stem":224,"path":225,"title":226,"date":227,"collapsed":9,"readingTime":228},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture12","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture12","Lecture 12：MOSFET 尺寸缩微","2026-09-10 00:30:00",{"text":229,"minutes":230,"time":231,"words":232},"35 min read",34.225,2053500,6845,{"stem":234,"path":235,"title":236,"date":237,"collapsed":9,"readingTime":238},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture13","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture13","Lecture 13：MOS 新范式","2026-09-10 00:40:00",{"text":239,"minutes":240,"time":241,"words":242},"24 min read",23.25,1395000,4650,{"stem":244,"path":245,"title":246,"date":247,"collapsed":9,"readingTime":248},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture2","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture2","Lecture 2：半导体基础","2026-09-09 19:39:31",{"text":249,"minutes":250,"time":251,"words":252},"7 min read",6.02,361200,1204,{"stem":254,"path":255,"title":256,"date":257,"collapsed":9,"readingTime":258},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture3","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture3","Lecture 3：费米能级、载流子散射与迁移率","2026-09-09 21:00:00",{"text":259,"minutes":260,"time":261,"words":262},"13 min read",12.565,753900,2513,{"stem":264,"path":265,"title":266,"date":267,"collapsed":9,"readingTime":268},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture4","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture4","Lecture 4：漂移电流、扩散电流与产生复合","2026-09-09 23:00:00",{"text":269,"minutes":270,"time":271,"words":272},"10 min read",9.22,553200,1844,{"stem":274,"path":275,"title":276,"date":277,"collapsed":9,"readingTime":278},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture5","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture5","Lecture 5：PN 结与耗尽区","2026-09-09 23:10:00",{"text":279,"minutes":280,"time":281,"words":282},"14 min read",13.515,810900,2703,{"stem":284,"path":285,"title":286,"date":287,"collapsed":9,"readingTime":288},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture6","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture6","Lecture 6：正向偏置 PN 结与理想二极管方程","2026-09-09 23:20:00",{"text":289,"minutes":290,"time":291,"words":292},"20 min read",19.095,1145700,3819,{"stem":294,"path":295,"title":296,"date":297,"collapsed":9,"readingTime":298},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture7","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture7","Lecture 7：金半接触","2026-09-09 23:40:00",{"text":299,"minutes":300,"time":301,"words":302},"16 min read",15.195,911700,3039,{"stem":304,"path":305,"title":306,"date":307,"collapsed":9,"readingTime":308},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture8","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture8","Lecture 8：PN 结在光电领域的应用","2026-09-09 23:50:00",{"text":309,"minutes":310,"time":311,"words":312},"54 min read",53.955,3237300,10791,{"stem":314,"path":315,"title":316,"date":317,"collapsed":9,"readingTime":318},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture9","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture9","Lecture 9：MOS 电容","2026-09-10 00:00:00",{"text":319,"minutes":320,"time":321,"words":322},"21 min read",20.355,1221300,4071,{"stem":324,"path":325,"title":326,"date":327,"collapsed":9,"readingTime":328},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FMidtermExam","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Fmidtermexam","期中复习题","2026-09-09 23:30:00",{"text":329,"minutes":330,"time":331,"words":332},"8 min read",7.595,455700,1519,{"stem":334,"path":335,"title":336,"date":337,"collapsed":9,"readingTime":338},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FMockExam","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Fmockexam","押题密卷","2026-09-10 00:50:00",{"text":21,"minutes":51,"time":52,"words":53},{"stem":340,"path":341,"title":342,"date":198,"collapsed":343,"readingTime":344},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002Findex","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices","微电子器件",true,{"text":158,"minutes":345,"time":346,"words":347},3.055,183300,611,{"stem":349,"path":350,"title":351,"date":352,"collapsed":9,"readingTime":353},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F1.HistoryMetaCharacters","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fhistorymetacharacters","History & Meta Characters","2026-09-10 20:25:44",{"text":269,"minutes":354,"time":355,"words":356},9.36,561600,1872,{"stem":358,"path":359,"title":360,"date":361,"collapsed":9,"readingTime":362},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F10.PastExams\u002F1.ExamAutumn2223","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fpastexams\u002Fexamautumn2223","22-23 秋冬历年卷","2026-09-10 20:26:49",{"text":319,"minutes":363,"time":364,"words":365},20.295,1217700,4059,{"stem":367,"path":368,"title":369,"date":370,"collapsed":9,"readingTime":371},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F10.PastExams\u002F2.Exam2021","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fpastexams\u002Fexam2021","20-21 历年卷","2026-09-10 20:26:50",{"text":289,"minutes":290,"time":291,"words":292},{"stem":373,"path":374,"title":375,"date":376,"collapsed":9,"readingTime":377},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F10.PastExams\u002F3.ExamRecall1","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fpastexams\u002Fexamrecall1","不知名回忆卷 1","2026-09-10 20:26:51",{"text":116,"minutes":378,"time":379,"words":380},4.215,252900,843,{"stem":382,"path":383,"title":384,"date":385,"collapsed":9,"readingTime":386},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F10.PastExams\u002F4.ExamRecall23","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fpastexams\u002Fexamrecall23","不知名回忆卷 2\u002F3","2026-09-10 20:26:52",{"text":387,"minutes":388,"time":389,"words":390},"12 min read",11.235,674100,2247,{"stem":392,"path":393,"title":394,"date":395,"collapsed":9,"readingTime":396},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F1.Chapter1-Introduction","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter1-introduction","Chapter 1：Introduction","2026-09-10 20:27:26",{"text":397,"minutes":398,"time":399,"words":400},"19 min read",18.435,1106100,3687,{"stem":402,"path":403,"title":404,"date":405,"collapsed":9,"readingTime":406},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F2.Chapter2-IntroductionToUnix","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter2-introductiontounix","Chapter 2：Introduction to Unix","2026-09-10 20:27:40",{"text":168,"minutes":407,"time":408,"words":409},24.895,1493700,4979,{"stem":411,"path":412,"title":413,"date":414,"collapsed":9,"readingTime":415},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F3.Chapter3-ViAndShell","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter3-viandshell","Chapter 3：Vi and Shell","2026-09-10 20:27:41",{"text":416,"minutes":417,"time":418,"words":419},"32 min read",31.035,1862100,6207,{"stem":421,"path":422,"title":423,"date":424,"collapsed":9,"readingTime":425},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F4.Chapter4-Network","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter4-network","Chapter 4：Network","2026-09-10 20:27:49",{"text":239,"minutes":426,"time":427,"words":428},23.975,1438500,4795,{"stem":430,"path":431,"title":432,"date":433,"collapsed":9,"readingTime":434},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F5.Chapter5-Administration","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter5-administration","Chapter 5：Administration","2026-09-10 20:27:51",{"text":435,"minutes":436,"time":437,"words":438},"36 min read",35.41,2124600,7082,{"stem":440,"path":441,"title":442,"date":443,"collapsed":9,"readingTime":444},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F6.Chapter6-Xwindow","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter6-xwindow","Chapter 6：Xwindow","2026-09-10 20:27:53",{"text":319,"minutes":445,"time":446,"words":447},20.235,1214100,4047,{"stem":449,"path":450,"title":451,"date":452,"collapsed":9,"readingTime":453},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F7.Chapter7-SoftwareDevelopmentTools","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter7-softwaredevelopmenttools","Chapter 7：Software Development Tools","2026-09-10 20:27:54",{"text":209,"minutes":454,"time":455,"words":456},17.85,1071000,3570,{"stem":458,"path":459,"title":460,"date":461,"collapsed":9,"readingTime":462},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F8.Chapter8-CProgrammingInUnix","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter8-cprogramminginunix","Chapter 8：C Programming in Unix","2026-09-10 20:27:57",{"text":463,"minutes":464,"time":465,"words":466},"17 min read",16.855,1011300,3371,{"stem":468,"path":469,"title":470,"date":471,"collapsed":9,"readingTime":472},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F2.LinuxUnix","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Flinuxunix","Linux & Unix","2026-09-10 20:25:46",{"text":41,"minutes":473,"time":474,"words":475},29.33,1759800,5866,{"stem":477,"path":478,"title":479,"date":480,"collapsed":9,"readingTime":481},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F3.Vi","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fvi","Vi","2026-09-10 20:25:47",{"text":329,"minutes":482,"time":483,"words":484},7.95,477000,1590,{"stem":486,"path":487,"title":488,"date":489,"collapsed":9,"readingTime":490},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F4.ViCopy","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fvicopy","Vi（详细版）","2026-09-10 20:25:49",{"text":279,"minutes":491,"time":492,"words":493},13.785,827100,2757,{"stem":495,"path":496,"title":497,"date":498,"collapsed":9,"readingTime":499},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F5.Shells","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fshells","Shells","2026-09-10 20:25:51",{"text":500,"minutes":501,"time":502,"words":503},"22 min read",21.21,1272600,4242,{"stem":505,"path":506,"title":507,"date":508,"collapsed":9,"readingTime":509},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F6.Network","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fnetwork","Network","2026-09-10 20:25:54",{"text":319,"minutes":510,"time":511,"words":512},20.595,1235700,4119,{"stem":514,"path":515,"title":516,"date":517,"collapsed":9,"readingTime":518},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F7.SystemAdministration","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fsystemadministration","System Administration","2026-09-10 20:26:44",{"text":329,"minutes":519,"time":520,"words":521},7.12,427200,1424,{"stem":523,"path":524,"title":525,"date":526,"collapsed":9,"readingTime":527},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F8.XWindow","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fxwindow","XWindow","2026-09-10 20:26:45",{"text":97,"minutes":528,"time":529,"words":530},5.105,306300,1021,{"stem":532,"path":533,"title":534,"date":535,"collapsed":9,"readingTime":536},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F9.SystemDevelopmentTools","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fsystemdevelopmenttools","System Development Tools","2026-09-10 20:26:47",{"text":387,"minutes":537,"time":538,"words":539},11.35,681000,2270,{"stem":541,"path":542,"title":543,"date":544,"collapsed":343,"readingTime":545},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002Findex","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad","面向 ICCAD 的软件基础技术","2026-09-10 12:37:00",{"text":60,"minutes":546,"time":547,"words":548},0.185,11100,37,{"stem":550,"path":551,"title":552,"date":553,"collapsed":9,"readingTime":554},"posts\u002FUGCourses\u002F4.junior-autumn\u002F3.HDL\u002FFeiQilai1","\u002Fugcourses\u002Fjunior-autumn\u002Fhdl\u002Ffeiqilai1","飞起来1.0","2026-09-10 12:51:49",{"text":555,"minutes":556,"time":557,"words":558},"105 min read",104.655,6279300,20931,{"stem":560,"path":561,"title":562,"date":563,"collapsed":9,"readingTime":564},"posts\u002FUGCourses\u002F4.junior-autumn\u002F3.HDL\u002FFeiQilai2","\u002Fugcourses\u002Fjunior-autumn\u002Fhdl\u002Ffeiqilai2","飞起来2.0","2026-09-10 12:52:06",{"text":565,"minutes":566,"time":567,"words":568},"29 min read",28.755,1725300,5751,{"stem":570,"path":571,"title":572,"date":573,"collapsed":9,"readingTime":574},"posts\u002FUGCourses\u002F4.junior-autumn\u002F3.HDL\u002FFeiQilai3","\u002Fugcourses\u002Fjunior-autumn\u002Fhdl\u002Ffeiqilai3","飞起来3.0","2026-09-10 12:52:12",{"text":116,"minutes":575,"time":576,"words":577},4.49,269400,898,{"stem":579,"path":580,"title":581,"date":582,"collapsed":9,"readingTime":583},"posts\u002FUGCourses\u002F4.junior-autumn\u002F3.HDL\u002FLecture13","\u002Fugcourses\u002Fjunior-autumn\u002Fhdl\u002Flecture13","Lecture 13：浮点数标准","2026-09-10 12:51:27",{"text":11,"minutes":584,"time":585,"words":586},2.575,154500,515,{"stem":588,"path":589,"title":590,"date":591,"collapsed":9,"readingTime":592},"posts\u002FUGCourses\u002F4.junior-autumn\u002F3.HDL\u002FLecture6","\u002Fugcourses\u002Fjunior-autumn\u002Fhdl\u002Flecture6","Lecture 6：Behavioral Modeling，非阻塞赋值","2026-09-10 12:51:12",{"text":97,"minutes":593,"time":594,"words":595},5.34,320400,1068,{"stem":597,"path":598,"title":599,"date":600,"collapsed":9,"readingTime":601},"posts\u002FUGCourses\u002F4.junior-autumn\u002F3.HDL\u002FPPTCorrespondence","\u002Fugcourses\u002Fjunior-autumn\u002Fhdl\u002Fpptcorrespondence","与PPT的对应","2026-09-10 12:52:18",{"text":269,"minutes":602,"time":603,"words":604},9.275,556500,1855,{"stem":606,"path":607,"title":608,"date":544,"collapsed":343,"readingTime":609},"posts\u002FUGCourses\u002F4.junior-autumn\u002F3.HDL\u002Findex","\u002Fugcourses\u002Fjunior-autumn\u002Fhdl","硬件描述语言原理与应用",{"text":60,"minutes":61,"time":62,"words":63},{"stem":611,"path":612,"title":613,"date":614,"collapsed":9,"readingTime":615},"posts\u002FUGCourses\u002F4.junior-autumn\u002F4.analogICDesign\u002F1.BeforeMidterm","\u002Fugcourses\u002Fjunior-autumn\u002Fanalogicdesign\u002Fbeforemidterm","期中前","2026-09-10 20:28:52",{"text":616,"minutes":617,"time":618,"words":619},"11 min read",10.835,650100,2167,{"stem":621,"path":622,"title":623,"date":624,"collapsed":9,"readingTime":625},"posts\u002FUGCourses\u002F4.junior-autumn\u002F4.analogICDesign\u002F2.MidtermExam2425","\u002Fugcourses\u002Fjunior-autumn\u002Fanalogicdesign\u002Fmidtermexam2425","24-25 期中","2026-09-10 20:29:00",{"text":21,"minutes":626,"time":627,"words":628},1.22,73200,244,{"stem":630,"path":631,"title":632,"date":633,"collapsed":9,"readingTime":634},"posts\u002FUGCourses\u002F4.junior-autumn\u002F4.analogICDesign\u002F3.FinalExamReview","\u002Fugcourses\u002Fjunior-autumn\u002Fanalogicdesign\u002Ffinalexamreview","期末考试整理","2026-09-10 20:29:09",{"text":387,"minutes":635,"time":636,"words":637},11.36,681600,2272,{"stem":639,"path":640,"title":641,"date":642,"collapsed":343,"readingTime":643},"posts\u002FUGCourses\u002F4.junior-autumn\u002F4.analogICDesign\u002Findex","\u002Fugcourses\u002Fjunior-autumn\u002Fanalogicdesign","模拟集成电路设计","2026-09-10 20:00:00",{"text":80,"minutes":81,"time":81,"words":81},{"stem":645,"path":646,"title":647,"date":78,"collapsed":9,"readingTime":648},"posts\u002FUGCourses\u002F4.junior-autumn\u002Findex","\u002Fugcourses\u002Fjunior-autumn","大三秋冬",{"text":80,"minutes":81,"time":81,"words":81},{"stem":650,"path":651,"title":652,"date":653,"collapsed":9,"readingTime":654},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F1.Chapter3-Device","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter3-device","Chapter 3：器件 Device","2026-09-10 21:14:41",{"text":249,"minutes":655,"time":656,"words":657},6.055,363300,1211,{"stem":659,"path":660,"title":661,"date":653,"collapsed":9,"readingTime":662},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F10.Chapter12-Arithmetic","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter12-arithmetic","Chapter 12：算术运算电路 Arithmetic",{"text":168,"minutes":663,"time":664,"words":665},24.245,1454700,4849,{"stem":667,"path":668,"title":669,"date":653,"collapsed":9,"readingTime":670},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F11.Chapter13-Memory","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter13-memory","Chapter 13：存储器 Memory",{"text":229,"minutes":671,"time":672,"words":673},34.235,2054100,6847,{"stem":675,"path":676,"title":677,"date":653,"collapsed":9,"readingTime":678},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F12.Chapter14","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter14","Chapter 14",{"text":80,"minutes":81,"time":81,"words":81},{"stem":680,"path":681,"title":682,"date":653,"collapsed":9,"readingTime":683},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F13.PastExams\u002F1.Midterm2022","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fpastexams\u002Fmidterm2022","2022 期中试题",{"text":60,"minutes":684,"time":685,"words":686},0.075,4500,15,{"stem":688,"path":689,"title":690,"date":653,"collapsed":9,"readingTime":691},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F13.PastExams\u002F2.Midterm2023","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fpastexams\u002Fmidterm2023","2023 期中试题",{"text":80,"minutes":81,"time":81,"words":81},{"stem":693,"path":694,"title":695,"date":653,"collapsed":9,"readingTime":696},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F13.PastExams\u002F3.FinalPolished","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fpastexams\u002Ffinalpolished","期末历年卷（AI 润色版）",{"text":21,"minutes":697,"time":698,"words":699},1.575,94500,315,{"stem":701,"path":702,"title":703,"date":653,"collapsed":9,"readingTime":704},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F14.ExamRecall2026","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fexamrecall2026","数字集成电路回忆 2026",{"text":60,"minutes":705,"time":706,"words":707},0.49,29400,98,{"stem":709,"path":710,"title":711,"date":653,"collapsed":9,"readingTime":712},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F2.Chapter4-Wire","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter4-wire","Chapter 4：导线 Wire",{"text":397,"minutes":713,"time":714,"words":715},18.65,1119000,3730,{"stem":717,"path":718,"title":719,"date":653,"collapsed":9,"readingTime":720},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F3.Chapter5-Inverter","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter5-inverter","Chapter 5：CMOS 反相器 Inverter",{"text":269,"minutes":721,"time":722,"words":723},9.385,563100,1877,{"stem":725,"path":726,"title":727,"date":653,"collapsed":9,"readingTime":728},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F4.Chapter6-LogicGate","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter6-logicgate","Chapter 6：逻辑门 Logic Gate",{"text":31,"minutes":729,"time":730,"words":731},8.635,518100,1727,{"stem":733,"path":734,"title":735,"date":653,"collapsed":9,"readingTime":736},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F5.Chapter7-SequentialLogic","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter7-sequentiallogic","Chapter 7：时序逻辑 Sequential Logic",{"text":463,"minutes":737,"time":738,"words":739},16.645,998700,3329,{"stem":741,"path":742,"title":743,"date":653,"collapsed":9,"readingTime":744},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F6.Chapter8-Speed","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter8-speed","Chapter 8：延迟与速度 Speed",{"text":745,"minutes":746,"time":747,"words":748},"33 min read",32.885,1973100,6577,{"stem":750,"path":751,"title":752,"date":653,"collapsed":9,"readingTime":753},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F7.Chapter9-Power","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter9-power","Chapter 9：功耗 Power",{"text":754,"minutes":755,"time":756,"words":757},"31 min read",31.005,1860300,6201,{"stem":759,"path":760,"title":761,"date":653,"collapsed":9,"readingTime":762},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F8.Chapter10-Interconnect","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter10-interconnect","Chapter 10：互连 Interconnect",{"text":463,"minutes":763,"time":764,"words":765},16.32,979200,3264,{"stem":767,"path":768,"title":769,"date":653,"collapsed":9,"readingTime":770},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F9.Chapter11-Timing","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter11-timing","Chapter 11：时序 Timing",{"text":289,"minutes":771,"time":772,"words":773},19.68,1180800,3936,{"stem":775,"path":776,"title":777,"date":653,"collapsed":343,"readingTime":778},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002Findex","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign","数字集成电路设计",{"text":80,"minutes":81,"time":81,"words":81},{"stem":780,"path":781,"title":782,"date":653,"collapsed":9,"readingTime":783},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F1.L1-Intro","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl1-intro","L1：计算机发展史与体系结构导论",{"text":397,"minutes":784,"time":785,"words":786},18.695,1121700,3739,{"stem":788,"path":789,"title":790,"date":653,"collapsed":9,"readingTime":791},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F10.L8-9-Memory","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl8-9-memory","L8-9：存储器层次结构",{"text":792,"minutes":793,"time":794,"words":795},"128 min read",127.1,7626000,25420,{"stem":797,"path":798,"title":799,"date":653,"collapsed":9,"readingTime":800},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F11.L10-11-Parallelism","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl10-11-parallelism","L10-11：并行性",{"text":801,"minutes":802,"time":803,"words":804},"159 min read",158.86,9531600,31772,{"stem":806,"path":807,"title":808,"date":653,"collapsed":9,"readingTime":809},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F12.L12-CacheCoherence","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl12-cachecoherence","L12：缓存一致性 Cache Coherence",{"text":810,"minutes":811,"time":812,"words":813},"76 min read",75.395,4523700,15079,{"stem":815,"path":816,"title":817,"date":653,"collapsed":9,"readingTime":818},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F13.L13-14-ComplexPipeline","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl13-14-complexpipeline","L13-14：复杂流水线（衔接 L7）",{"text":819,"minutes":820,"time":821,"words":822},"44 min read",43.985,2639100,8797,{"stem":824,"path":825,"title":826,"date":653,"collapsed":9,"readingTime":827},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F14.L15","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl15","L15：期末复习问答",{"text":269,"minutes":828,"time":829,"words":830},9.105,546300,1821,{"stem":832,"path":833,"title":834,"date":653,"collapsed":9,"readingTime":835},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F2.L2-Binary","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl2-binary","L2：二进制数制",{"text":80,"minutes":81,"time":81,"words":81},{"stem":837,"path":838,"title":839,"date":653,"collapsed":9,"readingTime":840},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F3.L3-CMemory","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl3-cmemory","L3：C 语言与内存模型",{"text":841,"minutes":842,"time":843,"words":844},"98 min read",97.32,5839200,19464,{"stem":846,"path":847,"title":848,"date":653,"collapsed":9,"readingTime":849},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F4.L4a-wbx","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl4a-wbx","L4a：wbx",{"text":80,"minutes":81,"time":81,"words":81},{"stem":851,"path":852,"title":853,"date":653,"collapsed":9,"readingTime":854},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F5.L4b-MachineCode","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl4b-machinecode","L4b：机器码 Machine Code",{"text":80,"minutes":81,"time":81,"words":81},{"stem":856,"path":857,"title":858,"date":653,"collapsed":9,"readingTime":859},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F6.L5-DSD","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl5-dsd","L5：数字系统设计 Digital System Design",{"text":269,"minutes":860,"time":861,"words":862},9.955,597300,1991,{"stem":864,"path":865,"title":866,"date":653,"collapsed":9,"readingTime":867},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F7.L6a-SingleCycle","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl6a-singlecycle","L6a：单周期处理器设计",{"text":219,"minutes":868,"time":869,"words":870},22.125,1327500,4425,{"stem":872,"path":873,"title":874,"date":653,"collapsed":9,"readingTime":875},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F8.L6b-Microcode","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl6b-microcode","L6b：微码处理器架构",{"text":387,"minutes":876,"time":877,"words":878},11.86,711600,2372,{"stem":880,"path":881,"title":882,"date":653,"collapsed":9,"readingTime":883},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F9.L7-Pipeline","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl7-pipeline","L7：流水线处理器",{"text":177,"minutes":884,"time":885,"words":886},44.505,2670300,8901,{"stem":888,"path":889,"title":890,"date":653,"collapsed":343,"readingTime":891},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002Findex","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization","计算机组成与系统结构",{"text":60,"minutes":892,"time":893,"words":894},0.12,7200,24,{"stem":896,"path":897,"title":898,"date":78,"collapsed":9,"readingTime":899},"posts\u002FUGCourses\u002F5.junior-spring\u002Findex","\u002Fugcourses\u002Fjunior-spring","大三春夏",{"text":80,"minutes":81,"time":81,"words":81},{"stem":901,"path":902,"title":903,"date":78,"collapsed":9,"readingTime":904},"posts\u002FUGCourses\u002Findex","\u002Fugcourses","本科课程",{"text":80,"minutes":81,"time":81,"words":81},{"stem":906,"path":907,"title":908,"date":909,"collapsed":9,"readingTime":910},"posts\u002Fubuntu\u002F1.config","\u002Fubuntu\u002Fconfig","ubuntu 系统配置","2025-08-26 19:38:06",{"text":158,"minutes":911,"time":912,"words":913},3.815,228900,763,{"stem":915,"path":916,"title":917,"date":918,"collapsed":9,"readingTime":919},"posts\u002Fubuntu\u002F2.cadence\u002F1.mmsim","\u002Fubuntu\u002Fcadence\u002Fmmsim","在 Ubuntu 24.04 上安装 Cadence MMSIM 15.1 的兼容性问题","2026-09-09 14:06:40",{"text":158,"minutes":920,"time":921,"words":922},3.5,210000,700,{"stem":924,"path":925,"title":926,"date":918,"collapsed":9,"readingTime":927},"posts\u002Fubuntu\u002F2.cadence\u002F2.innovus","\u002Fubuntu\u002Fcadence\u002Finnovus","Innovus安装",{"text":11,"minutes":928,"time":929,"words":930},2.08,124800,416,{"stem":932,"path":933,"title":934,"date":918,"collapsed":9,"readingTime":935},"posts\u002Fubuntu\u002F2.cadence\u002Findex","\u002Fubuntu\u002Fcadence","Ubuntu24.04安装Cadence 系列软件",{"text":269,"minutes":936,"time":937,"words":938},9.98,598800,1996,{"stem":940,"path":941,"title":942,"date":918,"collapsed":9,"readingTime":943},"posts\u002Fubuntu\u002F3.synopsys","\u002Fubuntu\u002Fsynopsys","Ubuntu 24.04 安装 Synopsys",{"text":269,"minutes":944,"time":945,"words":946},9.555,573300,1911,{"stem":948,"path":949,"title":950,"date":918,"collapsed":9,"readingTime":951},"posts\u002Fubuntu\u002F4.vivado","\u002Fubuntu\u002Fvivado","Ubuntu 24.04 安装 Vivado 2020.1",{"text":60,"minutes":952,"time":953,"words":954},0.62,37200,124,{"stem":956,"path":957,"title":958,"date":918,"collapsed":9,"readingTime":959},"posts\u002Fubuntu\u002F5.migrate","\u002Fubuntu\u002Fmigrate","硬盘迁移系统",{"text":60,"minutes":960,"time":961,"words":962},0.64,38400,128,{"stem":964,"path":965,"title":966,"date":967,"collapsed":9,"readingTime":968},"posts\u002Fubuntu\u002Findex","\u002Fubuntu","Ubuntu装进移动硬盘","2025-08-25 19:38:06",{"text":269,"minutes":969,"time":970,"words":971},9.26,555600,1852,{"id":973,"title":442,"body":974,"categories":3298,"collapsed":9,"date":443,"description":3299,"draft":9,"extension":3300,"hideInArchive":343,"hideInList":343,"image":3301,"meta":3302,"navigation":343,"path":441,"permalink":3301,"published":3301,"readingTime":3304,"recommend":3301,"references":3301,"seo":3305,"sitemap":3306,"stem":440,"tags":3310,"type":3313,"updated":443,"__hash__":3314},"content\u002Fposts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F6.Chapter6-Xwindow.md",{"type":975,"value":976,"toc":3258},"minimark",[977,982,990,1094,1098,1136,1139,1143,1181,1183,1188,1258,1260,1264,1285,1293,1325,1327,1331,1377,1379,1383,1405,1415,1437,1441,1527,1534,1539,1543,1651,1655,1770,1773,1779,1787,1791,1884,1888,1913,1915,1920,2285,2287,2291,2340,2344,2349,2457,2461,2476,2478,2482,2592,2594,2598,2615,2631,2633,2637,2644,2649,2656,2661,2668,2670,2674,2690,2694,2710,2712,2716,2801,2803,2807,2855,2857,2861,3030,3032,3036,3070,3072,3076,3184,3186,3190],[978,979,981],"h2",{"id":980},"xwindow","Xwindow",[983,984,986],"h3",{"id":985},"introduction",[987,988,989],"strong",{},"Introduction",[991,992,993,1022,1047,1077],"ul",{},[994,995,996,999],"li",{},[987,997,998],{},"基本定位",[991,1000,1001,1012],{},[994,1002,1003,1004,1007,1008,1011],{},"行业标准的软件系统，用来在",[987,1005,1006],{},"网络工作站","上开发",[987,1009,1010],{},"可移植的图形界面","。",[994,1013,1014,1015,1018,1019,1011],{},"同时是一套",[987,1016,1017],{},"窗口系统的规范与实现","，并提供",[987,1020,1021],{},"简单的编程接口",[994,1023,1024,1027],{},[987,1025,1026],{},"历史与普及",[991,1028,1029,1036],{},[994,1030,1031,1032,1035],{},"由 ",[987,1033,1034],{},"MIT、DEC、IBM"," 等机构共同开发。",[994,1037,1038,1039,1042,1043,1046],{},"自 ",[987,1040,1041],{},"1986 年首次发布","以来，已在几乎所有类型的",[987,1044,1045],{},"位图图形显示设备","上实现。",[994,1048,1049,1052],{},[987,1050,1051],{},"版本信息",[991,1053,1054,1063],{},[994,1055,1056,1059,1060,1011],{},[987,1057,1058],{},"X11"," 于 ",[987,1061,1062],{},"1987 年发布",[994,1064,1065,1066,1069,1070,1076],{},"最新的大版本为 ",[987,1067,1068],{},"X11R7.7","（可在 ",[1071,1072,1073],"a",{"href":1073,"rel":1074},"https:\u002F\u002Fwww.x.org\u002Freleases\u002F",[1075],"nofollow"," 查看）。",[994,1078,1079,1082],{},[987,1080,1081],{},"图形扩展",[991,1083,1084,1087],{},[994,1085,1086],{},"早期并不存在针对现代 GPU 和视频加速的复杂 2D\u002F3D 客户端渲染库。",[994,1088,1089,1090,1093],{},"目前这类能力通过 ",[987,1091,1092],{},"X 的扩展（X extensions）"," 来提供和支持。",[983,1095,1097],{"id":1096},"x-的主要特性x-features","X 的主要特性（X Features）",[991,1099,1100,1113,1126],{},[994,1101,1102,1105],{},[987,1103,1104],{},"与机器架构和操作系统无关",[991,1106,1107,1110],{},[994,1108,1109],{},"图形编程接口在所有平台上保持一致。",[994,1111,1112],{},"同一程序可在网络中任意主机运行，但把图形显示到任意工作站上。",[994,1114,1115,1118],{},[987,1116,1117],{},"支持多应用共享同一屏幕",[991,1119,1120,1123],{},[994,1121,1122],{},"多个应用程序可以同时在一个显示屏上绘制。",[994,1124,1125],{},"应用之间可以共享窗口及其他屏幕资源。",[994,1127,1128,1131],{},[987,1129,1130],{},"提供丰富的编程库且源码开放",[991,1132,1133],{},[994,1134,1135],{},"有大量 X 库可用，源代码可自由获取和分发。",[1137,1138],"hr",{},[983,1140,1142],{"id":1141},"x-的客户端服务器模型client-server-model","X 的客户端–服务器模型（Client-Server Model）",[991,1144,1145,1161],{},[994,1146,1147,1150],{},[987,1148,1149],{},"X Display Server（X 显示服务器）",[991,1151,1152,1155,1158],{},[994,1153,1154],{},"单一进程，管理本工作站的图形显示和 I\u002FO 设备。",[994,1156,1157],{},"运行在带图形显示的工作站上。",[994,1159,1160],{},"通过网络与各个 X Client 通信。",[994,1162,1163,1166],{},[987,1164,1165],{},"X Clients（X 客户端）",[991,1167,1168,1171,1178],{},[994,1169,1170],{},"请求服务器进行图形显示的应用程序。",[994,1172,1173,1174,1177],{},"使用 ",[987,1175,1176],{},"X-Protocol"," 通过网络与服务器通信。",[994,1179,1180],{},"上层还可以有更高级的库对 X-Protocol 做封装（如 Xlib 等）。",[1137,1182],{},[1184,1185,1187],"h4",{"id":1186},"x-server-与-x-clientsx-server-and-x-clients","X Server 与 X Clients（X Server and X Clients）",[991,1189,1190,1203,1240],{},[994,1191,1192,1195],{},[987,1193,1194],{},"基本关系",[991,1196,1197,1200],{},[994,1198,1199],{},"每个 X 显示都对应一个 X 服务器。",[994,1201,1202],{},"任何想在这个显示上画图的进程都可以是一个 X Client。",[994,1204,1205,1208],{},[987,1206,1207],{},"显示名称（display name）格式",[991,1209,1210,1216],{},[994,1211,1212],{},[1213,1214,1215],"code",{"code":1215},"hostname:displaynumber.screennumber",[994,1217,1218,1219],{},"例：\n",[991,1220,1221,1234],{},[994,1222,1223,1226,1227,1226,1230,1233],{},[1213,1224,1225],{"code":1225},":0.0",", ",[1213,1228,1229],{"code":1229},":0.1",[1213,1231,1232],{"code":1232},":0.2"," 等 → 本地默认 X 服务器的不同屏幕。",[994,1235,1236,1239],{},[1213,1237,1238],{"code":1238},":0"," → 本地默认 X 服务器的默认屏幕。",[994,1241,1242,1245],{},[987,1243,1244],{},"通信方向",[991,1246,1247],{},[994,1248,1249,1250,1253,1254,1257],{},"客户端向服务器发 ",[987,1251,1252],{},"请求（requests）","，服务器返回 ",[987,1255,1256],{},"应答（replies）","，如图示多个 X Client 连接同一个 X Server。",[1137,1259],{},[1184,1261,1263],{"id":1262},"客户端服务器通信clientserver-communication","客户端\u002F服务器通信（Client\u002FServer Communication）",[991,1265,1266],{},[994,1267,1268,1271],{},[987,1269,1270],{},"Requests（客户端 → 服务器，约 100 种类型）",[991,1272,1273,1276,1279,1282],{},[994,1274,1275],{},"窗口操作：创建、销毁、移动、缩放等。",[994,1277,1278],{},"2D 图形函数：画线、画圆、绘制文本等。",[994,1280,1281],{},"资源分配：字体、颜色等图形资源。",[994,1283,1284],{},"事件管理：注册\u002F管理感兴趣的事件",[1286,1287,1288],"blockquote",{},[991,1289,1290],{},[994,1291,1292],{},"键盘移动了 or 鼠标双击or鼠标移动",[991,1294,1295,1302],{},[994,1296,1297,1298,1301],{},"特点：通常是",[987,1299,1300],{},"异步(asynchronous)","的（客户端发出请求后默认认为成功，不必等待立即回复）。",[994,1303,1304,1307],{},[987,1305,1306],{},"Replies（服务器 → 客户端）",[991,1308,1309,1312,1319],{},[994,1310,1311],{},"服务器针对客户端请求返回的数据包，例如返回当前鼠标位置。",[994,1313,1314,1315,1318],{},"一般与某个请求",[987,1316,1317],{},"同步","（客户端需要等待这个结果）。",[994,1320,1321,1324],{},[987,1322,1323],{},"XCB","（X C Binding）库改进了这一机制，允许一次发送多条请求，再在需要时批量或延迟获取回复，提高效率。",[1137,1326],{},[1184,1328,1330],{"id":1329},"x-eventsx-事件","X Events（X 事件）",[991,1332,1333,1346],{},[994,1334,1335,1338],{},[987,1336,1337],{},"定义",[991,1339,1340,1343],{},[994,1341,1342],{},"由服务器发送的消息，是用户操作（通常是输入）直接或间接产生的结果。",[994,1344,1345],{},"用于通知客户端：有“感兴趣”的事情发生，需要客户端处理。",[994,1347,1348,1351],{},[987,1349,1350],{},"事件种类（共约 34 类，示例）",[991,1352,1353,1356,1359,1362,1365,1368,1371,1374],{},[994,1354,1355],{},"键盘输入。",[994,1357,1358],{},"定位器（鼠标）移动。",[994,1360,1361],{},"鼠标按键输入。",[994,1363,1364],{},"窗口状态、大小、位置、层叠顺序的变化。",[994,1366,1367],{},"窗口属性变化。",[994,1369,1370],{},"窗口全部或部分区域需要重绘（exposure）。",[994,1372,1373],{},"选择、剪切\u002F粘贴信息的相关事件。",[994,1375,1376],{},"其他客户端发送的消息事件。",[1137,1378],{},[1184,1380,1382],{"id":1381},"事件机制event-mechanism","事件机制（Event Mechanism）",[991,1384,1385],{},[994,1386,1387,1390],{},[987,1388,1389],{},"事件选择（event mask）",[991,1391,1392,1399,1402],{},[994,1393,1394,1395,1398],{},"客户端通过设置 ",[987,1396,1397],{},"事件掩码"," 来声明自己希望接收的事件类型。",[994,1400,1401],{},"事件掩码是一个位掩码，每一位对应一种事件。",[994,1403,1404],{},"示例调用：",[1406,1407,1413],"pre",{"className":1408,"code":1410,"language":1411,"meta":1412},[1409],"language-c","XSelectInput(theDisp, mainW,\n             ExposureMask | KeyPressMask |\n             StructureNotifyMask | ButtonPressMask);\n","c","",[1213,1414,1410],{"__ignoreMap":1412},[991,1416,1417],{},[994,1418,1419,1422],{},[987,1420,1421],{},"队列机制",[991,1423,1424,1427,1430],{},[994,1425,1426],{},"请求和事件都通过队列管理。",[994,1428,1429],{},"服务器为每个客户端维护其请求队列和事件队列。",[994,1431,1432,1433,1436],{},"客户端通过 API（如 ",[1213,1434,1435],{"code":1435},"XNextEvent(theDisp, &event);","）从队列中依次取出事件并处理。",[1184,1438,1440],{"id":1439},"服务器资源server-resources","服务器资源（Server Resources）",[991,1442,1443,1455,1480,1499,1513],{},[994,1444,1445,1447],{},[987,1446,1337],{},[991,1448,1449],{},[994,1450,1031,1451,1454],{},[987,1452,1453],{},"X 服务器维护","、可以被所有客户端使用\u002F共享的对象。",[994,1456,1457,1460],{},[987,1458,1459],{},"典型类型",[991,1461,1462,1465,1468,1471,1474,1477],{},[994,1463,1464],{},"窗口（Windows，最基础的资源）",[994,1466,1467],{},"图形上下文（Graphics Context，保存绘图属性的一组参数）",[994,1469,1470],{},"字体（Fonts）",[994,1472,1473],{},"光标（Cursors）",[994,1475,1476],{},"颜色映射表（Color Maps）",[994,1478,1479],{},"像素图\u002F位图（Pixmaps）等。",[994,1481,1482,1485],{},[987,1483,1484],{},"生命周期",[991,1486,1487,1493],{},[994,1488,1489,1490,1011],{},"资源",[987,1491,1492],{},"存放在服务器端",[994,1494,1495,1496,1011],{},"但由客户端通过请求来",[987,1497,1498],{},"创建、使用、销毁",[994,1500,1501,1504],{},[987,1502,1503],{},"标识方式",[991,1505,1506],{},[994,1507,1508,1509,1512],{},"每个资源都有一个由服务器分配的 ",[987,1510,1511],{},"resource ID"," 作为唯一标识。",[994,1514,1515,1518],{},[987,1516,1517],{},"共享特性",[991,1519,1520],{},[994,1521,1522,1523,1526],{},"同一资源可以被多个客户端",[987,1524,1525],{},"低成本地共享","（如共享字体、颜色表、pixmap 等）。",[1528,1529,1530],"p",{},[1531,1532,1533],"mark",{},"Microsoft Windows 和 X windows 区别在哪里",[1528,1535,1536],{},[1531,1537,1538],{},"前者是Operating System， 后者是GUI",[1184,1540,1542],{"id":1541},"x-window最基础的资源a-window-the-most-fundamental-x-resource","X Window：最基础的资源（A Window: The Most Fundamental X Resource）",[991,1544,1545,1587,1604,1632],{},[994,1546,1547,1550],{},[987,1548,1549],{},"窗口的本质",[991,1551,1552,1558],{},[994,1553,1554,1555,1011],{},"窗口是屏幕上的一个",[987,1556,1557],{},"简单矩形区域",[994,1559,1560,1561],{},"特点：\n",[991,1562,1563,1569,1575,1581],{},[994,1564,1565,1568],{},[987,1566,1567],{},"无装饰（No decorations）","：边框、标题栏等不属于窗口本体。",[994,1570,1571,1574],{},[987,1572,1573],{},"有自己的坐标系","：窗口内部的绘图与事件位置以该坐标系为准。",[994,1576,1577,1580],{},[987,1578,1579],{},"可组合成更高层界面对象","：多个窗口叠加\u002F嵌套可构成按钮、面板等组件。",[994,1582,1583,1586],{},[987,1584,1585],{},"一个应用可能有很多窗口","：可能达到数百个（用于不同控件\u002F区域）。",[994,1588,1589,1592],{},[987,1590,1591],{},"窗口的属性与属性集（attributes & properties）",[991,1593,1594,1597],{},[994,1595,1596],{},"每个窗口都带有一组属性\u002F属性项。",[994,1598,1599,1600,1603],{},"客户端可以通过向服务器发送请求来",[987,1601,1602],{},"修改","这些属性\u002F属性项（例如大小、背景、事件订阅等）。",[994,1605,1606,1609],{},[987,1607,1608],{},"窗口曝光（window exposure）与重绘责任",[991,1610,1611],{},[994,1612,1613,1614],{},"当窗口内容被遮挡后又重新露出（exposure）时：\n",[991,1615,1616,1622],{},[994,1617,1618,1621],{},[987,1619,1620],{},"客户端负责维护并重绘窗口内容","（服务器不保证替你保存内容）。",[994,1623,1624,1627,1628,1631],{},[987,1625,1626],{},"X Composite Extension"," 可以对内容进行缓冲（buffer），但是否启用取决于",[987,1629,1630],{},"服务器端设置","，而非客户端单方面决定。",[994,1633,1634,1637],{},[987,1635,1636],{},"窗口树（Window Trees）与窗口管理器（Window Manager）",[991,1638,1639,1645],{},[994,1640,1641,1642,1011],{},"窗口按层级结构组织成 ",[987,1643,1644],{},"窗口树（Window Trees）",[994,1646,1647,1650],{},[987,1648,1649],{},"窗口管理器","可以对窗口进行操作与装饰：如移动、缩放、加边框\u002F标题栏等。",[1184,1652,1654],{"id":1653},"x11-的问题与替代方案x11-problems-and-its-replacements","X11 的问题与替代方案（X11 Problems and Its Replacements）",[991,1656,1657,1677,1713,1734],{},[994,1658,1659,1662],{},[987,1660,1661],{},"窗口管理器（Window Manager）的定位",[991,1663,1664,1670],{},[994,1665,1666,1667,1011],{},"Window Manager 本质上是一个",[987,1668,1669],{},"特殊的 X Client",[994,1671,1672,1673,1676],{},"它维护系统中",[987,1674,1675],{},"所有窗口","的信息：窗口列表、位置、大小、遮挡\u002F重叠关系等，并据此进行管理。",[994,1678,1679,1682],{},[987,1680,1681],{},"现代桌面环境带来的复杂性（合成式窗口管理）",[991,1683,1684,1694],{},[994,1685,1686,1687,1690,1691,1011],{},"现代桌面环境（如 ",[987,1688,1689],{},"GNOME、KDE","）通常采用",[987,1692,1693],{},"合成式窗口管理器（compositing WM \u002F compositor）",[994,1695,1696,1697],{},"合成器的关键做法：\n",[991,1698,1699,1706],{},[994,1700,1701,1702,1705],{},"为",[987,1703,1704],{},"每个窗口维护一个离屏缓冲区（off-screen buffer）","；",[994,1707,1708,1709,1712],{},"再把这些缓冲区",[987,1710,1711],{},"合成为最终的顶层画面","显示到屏幕上（实现透明、阴影、动画等效果）。",[994,1714,1715,1718],{},[987,1716,1717],{},"X11 架构的核心问题：仍可实现，但过于复杂",[991,1719,1720,1728],{},[994,1721,1722,1723],{},"X 架构并非不能支持合成，但在现实中会形成较复杂的链路：\n",[991,1724,1725],{},[994,1726,1727],{},"X Clients → X Server → Compositor（合成器）→ 内核显示\u002F输入子系统（如 KMS、evdev）",[994,1729,1730,1731,1011],{},"结果：组件分层多、职责分散，整体架构显得",[987,1732,1733],{},"冗长且复杂",[994,1735,1736,1739],{},[987,1737,1738],{},"替代方向：Wayland 的简化思路",[991,1740,1741,1755,1763],{},[994,1742,1743,1744],{},"Wayland 将“显示服务器 + 合成器”的角色更集中：\n",[991,1745,1746,1752],{},[994,1747,1748,1751],{},[987,1749,1750],{},"Wayland Compositor"," 直接作为核心组件，统一负责合成与显示，并与内核的 KMS\u002Fevdev 交互；",[994,1753,1754],{},"Wayland Clients 直接与 Wayland Compositor 通信。",[994,1756,1757,1758],{},"典型链路：\n",[991,1759,1760],{},[994,1761,1762],{},"Wayland Clients → Wayland Compositor → 内核（KMS、evdev）",[994,1764,1765,1766],{},"目标：在满足现代合成需求的同时，减少 X11 式的结构复杂度。\n",[1767,1768],"img",{"alt":1767,"src":1769},"\u002Fimg\u002FICCAD\u002FDetailCh6-01.png",[1528,1771,1772],{},"Wayland 介绍（幻灯片给出的参考）：",[1528,1774,1775],{},[1071,1776,1777],{"href":1777,"rel":1778},"https:\u002F\u002Fwayland.freedesktop.org\u002F",[1075],[1286,1780,1781,1784],{},[1528,1782,1783],{},"Ctrl Z + bg",[1528,1785,1786],{},"或者 xterm &",[1184,1788,1790],{"id":1789},"使用-x-的常用命令using-x-commands","使用 X 的常用命令（Using X Commands）",[991,1792,1793,1807,1828,1856],{},[994,1794,1795,1798],{},[1213,1796,1797],{"code":1797},"xset q",[991,1799,1800],{},[994,1801,1802,1803,1806],{},"用途：查询当前 ",[987,1804,1805],{},"X display"," 的状态与配置（query your X display）。",[994,1808,1809,1812],{},[1213,1810,1811],{"code":1811},"xterm [-option]",[991,1813,1814,1821],{},[994,1815,1816,1817,1820],{},"用途：启动一个 ",[987,1818,1819],{},"X 终端窗口","（open an X terminal）。",[994,1822,1823,1824,1827],{},"说明：",[1213,1825,1826],{"code":1826},"xterm"," 的可选参数很多，可用于配置终端外观（字体、颜色、大小等）。",[994,1829,1830,1833],{},[987,1831,1832],{},"其他常见 X 工具（utilities）",[991,1834,1835,1841,1847,1853],{},[994,1836,1837,1840],{},[1213,1838,1839],{"code":1839},"xwininfo","：查看窗口信息（如窗口 ID、大小、位置、层级等）。",[994,1842,1843,1846],{},[1213,1844,1845],{"code":1845},"xeyes","：演示程序（眼睛跟随鼠标移动）。",[994,1848,1849,1852],{},[1213,1850,1851],{"code":1851},"xclock","：时钟程序。",[994,1854,1855],{},"以及更多同类工具。",[994,1857,1858,1861],{},[987,1859,1860],{},"延伸问题（本页提出）",[991,1862,1863,1866],{},[994,1864,1865],{},"如何在一台机器上运行 X 程序，但把 GUI 显示到另一台机器上？",[994,1867,1868,1869,1872,1873,1876,1877,1876,1880,1883],{},"要点通常与 ",[987,1870,1871],{},"X 的网络透明性","有关：需要指定目标显示（display）并允许远端连接（后续页一般会讲 ",[1213,1874,1875],{"code":1875},"DISPLAY","、",[1213,1878,1879],{"code":1879},"ssh -X\u002F-Y",[1213,1881,1882],{"code":1882},"xhost"," 等）。",[1184,1885,1887],{"id":1886},"远程运行-x-程序remotely-running-x-program","远程运行 X 程序（Remotely Running X Program）",[991,1889,1890],{},[994,1891,1892,1895],{},[987,1893,1894],{},"场景设定",[991,1896,1897,1907],{},[994,1898,1899,1900,1903,1904,1011],{},"程序运行在 ",[987,1901,1902],{},"机器 A","，X 显示服务器（X display server）运行在 ",[987,1905,1906],{},"机器 B",[994,1908,1909,1910,1011],{},"直接传输时属于",[987,1911,1912],{},"不安全数据（unsecured data）",[1137,1914],{},[1916,1917,1919],"h5",{"id":1918},"方法一直接让-b-接收来自-a-的图形输出不安全需授权","方法一：直接让 B 接收来自 A 的图形输出（不安全\u002F需授权）",[991,1921,1922,1938],{},[994,1923,1924,1927],{},[987,1925,1926],{},"在机器 B 上：允许 A 连接到本机 X 服务器",[991,1928,1929,1932,1935],{},[994,1930,1931],{},"命令：",[994,1933,1934],{},"machine_b$ xhost +machine_a    # 或者使用 xauth",[994,1936,1937],{},"含义：让 B 的 X server 接受来自 A 的图形连接请求。",[994,1939,1940,1943],{},[987,1941,1942],{},"在机器 A 上：指定图形应该显示到哪台机器",[991,1944,1945,1947,2279],{},[994,1946,1931],{},[994,1948,1949,1950,2278],{},"machine_a",[1951,1952,1955,2066],"span",{"className":1953},[1954],"katex",[1951,1956,1959],{"className":1957},[1958],"katex-mathml",[1960,1961,1963],"math",{"xmlns":1962},"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML",[1964,1965,1966,2061],"semantics",{},[1967,1968,1969,1973,1976,1978,1981,1984,1987,1990,1993,1996,1999,2002,2005,2008,2012,2015,2017,2019,2022,2025,2028,2036,2039,2043,2045,2047,2049,2051,2053,2055],"mrow",{},[1970,1971,1972],"mi",{},"e",[1970,1974,1975],{},"x",[1970,1977,1528],{},[1970,1979,1980],{},"o",[1970,1982,1983],{},"r",[1970,1985,1986],{},"t",[1970,1988,1989],{},"D",[1970,1991,1992],{},"I",[1970,1994,1995],{},"S",[1970,1997,1998],{},"P",[1970,2000,2001],{},"L",[1970,2003,2004],{},"A",[1970,2006,2007],{},"Y",[2009,2010,2011],"mo",{},"=",[1970,2013,2014],{},"m",[1970,2016,1071],{},[1970,2018,1411],{},[1970,2020,2021],{},"h",[1970,2023,2024],{},"i",[1970,2026,2027],{},"n",[2029,2030,2031,2033],"msub",{},[1970,2032,1972],{},[1970,2034,2035],{},"b",[2009,2037,2038],{},":",[2040,2041,2042],"mn",{},"0.0",[1970,2044,2014],{},[1970,2046,1071],{},[1970,2048,1411],{},[1970,2050,2021],{},[1970,2052,2024],{},[1970,2054,2027],{},[2029,2056,2057,2059],{},[1970,2058,1972],{},[1970,2060,1071],{},[2062,2063,2065],"annotation",{"encoding":2064},"application\u002Fx-tex"," export DISPLAY=machine_b:0.0\nmachine_a",[1951,2067,2071,2136,2219],{"className":2068,"ariaHidden":2070},[2069],"katex-html","true",[1951,2072,2075,2080,2085,2088,2091,2096,2099,2102,2106,2110,2114,2117,2120,2124,2129,2133],{"className":2073},[2074],"base",[1951,2076],{"className":2077,"style":2079},[2078],"strut","height:0.8778em;vertical-align:-0.1944em;",[1951,2081,1972],{"className":2082},[2083,2084],"mord","mathnormal",[1951,2086,1975],{"className":2087},[2083,2084],[1951,2089,1528],{"className":2090},[2083,2084],[1951,2092,2095],{"className":2093,"style":2094},[2083,2084],"margin-right:0.0278em;","or",[1951,2097,1986],{"className":2098},[2083,2084],[1951,2100,1989],{"className":2101,"style":2094},[2083,2084],[1951,2103,1992],{"className":2104,"style":2105},[2083,2084],"margin-right:0.0785em;",[1951,2107,1995],{"className":2108,"style":2109},[2083,2084],"margin-right:0.0576em;",[1951,2111,1998],{"className":2112,"style":2113},[2083,2084],"margin-right:0.1389em;",[1951,2115,2001],{"className":2116},[2083,2084],[1951,2118,2004],{"className":2119},[2083,2084],[1951,2121,2007],{"className":2122,"style":2123},[2083,2084],"margin-right:0.2222em;",[1951,2125],{"className":2126,"style":2128},[2127],"mspace","margin-right:0.2778em;",[1951,2130,2011],{"className":2131},[2132],"mrel",[1951,2134],{"className":2135,"style":2128},[2127],[1951,2137,2139,2143,2147,2150,2154,2210,2213,2216],{"className":2138},[2074],[1951,2140],{"className":2141,"style":2142},[2078],"height:0.8444em;vertical-align:-0.15em;",[1951,2144,2146],{"className":2145},[2083,2084],"ma",[1951,2148,1411],{"className":2149},[2083,2084],[1951,2151,2153],{"className":2152},[2083,2084],"hin",[1951,2155,2157,2160],{"className":2156},[2083],[1951,2158,1972],{"className":2159},[2083,2084],[1951,2161,2164],{"className":2162},[2163],"msupsub",[1951,2165,2169,2201],{"className":2166},[2167,2168],"vlist-t","vlist-t2",[1951,2170,2173,2196],{"className":2171},[2172],"vlist-r",[1951,2174,2178],{"className":2175,"style":2177},[2176],"vlist","height:0.3361em;",[1951,2179,2181,2186],{"style":2180},"top:-2.55em;margin-left:0em;margin-right:0.05em;",[1951,2182],{"className":2183,"style":2185},[2184],"pstrut","height:2.7em;",[1951,2187,2193],{"className":2188},[2189,2190,2191,2192],"sizing","reset-size6","size3","mtight",[1951,2194,2035],{"className":2195},[2083,2084,2192],[1951,2197,2200],{"className":2198},[2199],"vlist-s","​",[1951,2202,2204],{"className":2203},[2172],[1951,2205,2208],{"className":2206,"style":2207},[2176],"height:0.15em;",[1951,2209],{},[1951,2211],{"className":2212,"style":2128},[2127],[1951,2214,2038],{"className":2215},[2132],[1951,2217],{"className":2218,"style":2128},[2127],[1951,2220,2222,2225,2228,2231,2234,2237],{"className":2221},[2074],[1951,2223],{"className":2224,"style":2142},[2078],[1951,2226,2042],{"className":2227},[2083],[1951,2229,2146],{"className":2230},[2083,2084],[1951,2232,1411],{"className":2233},[2083,2084],[1951,2235,2153],{"className":2236},[2083,2084],[1951,2238,2240,2243],{"className":2239},[2083],[1951,2241,1972],{"className":2242},[2083,2084],[1951,2244,2246],{"className":2245},[2163],[1951,2247,2249,2270],{"className":2248},[2167,2168],[1951,2250,2252,2267],{"className":2251},[2172],[1951,2253,2256],{"className":2254,"style":2255},[2176],"height:0.1514em;",[1951,2257,2258,2261],{"style":2180},[1951,2259],{"className":2260,"style":2185},[2184],[1951,2262,2264],{"className":2263},[2189,2190,2191,2192],[1951,2265,1071],{"className":2266},[2083,2084,2192],[1951,2268,2200],{"className":2269},[2199],[1951,2271,2273],{"className":2272},[2172],[1951,2274,2276],{"className":2275,"style":2207},[2176],[1951,2277],{}," your_program",[994,2280,2281,2282,2284],{},"含义：把应用的显示目标设置为 B 的 display（",[1213,2283,1225],{"code":1225},"）。",[1137,2286],{},[1916,2288,2290],{"id":2289},"方法二通过安全隧道做-x-转发x-forwarding-through-secured-tunnel","方法二：通过安全隧道做 X 转发（X forwarding through secured tunnel）",[991,2292,2293,2319],{},[994,2294,2295,2298],{},[987,2296,2297],{},"开启 SSH 的 X11 转发能力（配置层面）",[991,2299,2300,2310],{},[994,2301,2302,2303,2306,2307,2284],{},"在机器 A 的 SSH 配置中打开 ",[1213,2304,2305],{"code":2305},"ForwardX11","（文件：",[1213,2308,2309],{"code":2309},"\u002Fetc\u002Fssh\u002Fssh_config",[994,2311,2312,2313,2316,2317,1011],{},"作用：在 A 上创建一个",[987,2314,2315],{},"虚拟 X server","，并且会自动设置 ",[1213,2318,1875],{"code":1875},[994,2320,2321,2324],{},[987,2322,2323],{},"在机器 B 上通过 SSH 登录 A，并启用 X forwarding",[991,2325,2326,2328,2331,2337],{},[994,2327,1931],{},[994,2329,2330],{},"machine_b$ ssh -X\u002F-Y machine_a",[994,2332,2333,2334,2336],{},"前提：",[1213,2335,1882],{"code":1882}," 等访问控制需要设置正确。",[994,2338,2339],{},"登录后：在这个终端里启动图形程序，即可把 GUI 安全地转发回 B 显示。",[1184,2341,2343],{"id":2342},"pc-上的-x-模拟器x-emulator-on-pc","PC 上的 X 模拟器（X Emulator on PC）",[1528,2345,2346],{},[1767,2347],{"alt":1767,"src":2348},"\u002Fimg\u002FICCAD\u002FDetailCh6-02.png",[991,2350,2351,2365,2386,2424,2443],{},[994,2352,2353,2356],{},[987,2354,2355],{},"常见实现\u002F软件",[991,2357,2358],{},[994,2359,2360,2361,2364],{},"在 PC 上运行 X 相关组件的工具包括：",[987,2362,2363],{},"Exceed、Cygwin、X-Win32、Xshell\u002FXmanager、VcXsrv"," 等。",[994,2366,2367,2370],{},[987,2368,2369],{},"核心结论：PC 充当 X Display（显示端）",[991,2371,2372,2379],{},[994,2373,2374,2375,2378],{},"PC 上运行 ",[987,2376,2377],{},"X server","，因此 PC 相当于“显示服务器\u002F显示端”（幻灯片标注为 machine B）。",[994,2380,2381,2382,2385],{},"远端 Unix 主机运行应用程序，应用作为 ",[987,2383,2384],{},"X client","（machine A）。",[994,2387,2388,2391],{},[987,2389,2390],{},"通信路径（与图对应）",[991,2392,2393,2404],{},[994,2394,2395,2396,2399,2400,2403],{},"应用的图形输出通过 ",[987,2397,2398],{},"X Protocol"," 传输，承载在 ",[987,2401,2402],{},"TCP\u002FIP \u002F Ethernet"," 等网络之上。",[994,2405,2406,2407],{},"常见端口含义（图中标注）：\n",[991,2408,2409,2415],{},[994,2410,2411,2414],{},[987,2412,2413],{},"SSH 通道：22 端口","（用于建立安全隧道）。",[994,2416,2417,2420,2421,2284],{},[987,2418,2419],{},"X11：6000 端口","（传统 X server 监听端口，",[1213,2422,2423],{"code":2423},"6000 + displaynumber",[994,2425,2426,2429],{},[987,2427,2428],{},"两种连接方式的暗示（图中灰字）",[991,2430,2431,2437],{},[994,2432,2433,2436],{},[987,2434,2435],{},"直接 X 连接","：X client 直接连到 PC 的 X server（可能走 6000 端口），安全性较弱。",[994,2438,2439,2442],{},[987,2440,2441],{},"SSH X forwarding（推荐）","：通过 SSH 隧道转发 X 流量（图中“secured tunnel \u002F possible virtual X server”），由 SSH 负责加密与转发。",[994,2444,2445,2448],{},[987,2446,2447],{},"PC 侧补充",[991,2449,2450],{},[994,2451,2452,2453,2456],{},"PC 通常还会有一个 ",[987,2454,2455],{},"终端模拟器","（用于登录远端并启动 X 程序）。",[1184,2458,2460],{"id":2459},"编写一个-x-应用programming-an-x-application","编写一个 X 应用（Programming an X Application）",[991,2462,2463],{},[994,2464,2465,2468],{},[987,2466,2467],{},"整体结构",[991,2469,2470],{},[994,2471,2472,2473,1011],{},"典型流程分三段：",[987,2474,2475],{},"初始化（Initialization）→ 事件管理（Event management）→ 结束清理（Termination）",[1137,2477],{},[1916,2479,2481],{"id":2480},"a-初始化initialization","A. 初始化（Initialization）",[2483,2484,2485,2502,2522,2536,2546,2556,2566,2579],"ol",{},[994,2486,2487,2490],{},[987,2488,2489],{},"引入头文件",[991,2491,2492,2497],{},[994,2493,2494],{},[1213,2495,2496],{"code":2496},"#include \u003CX11\u002FXlib.h>",[994,2498,2499],{},[1213,2500,2501],{"code":2501},"#include \u003CX11\u002FXutil.h>",[994,2503,2504,2507],{},[987,2505,2506],{},"声明变量",[991,2508,2509],{},[994,2510,2511,2512,1876,2515,1876,2518,2521],{},"准备 ",[1213,2513,2514],{"code":2514},"Display*",[1213,2516,2517],{"code":2517},"Window",[1213,2519,2520],{"code":2520},"GC","（图形上下文）等后续要用的数据结构\u002F句柄。",[994,2523,2524,2527],{},[987,2525,2526],{},"连接到工作站的 display",[991,2528,2529],{},[994,2530,2531,2532,2535],{},"与 X server 建立连接，拿到一个 ",[1213,2533,2534],{"code":2534},"display"," 句柄（本质是通信通道）。",[994,2537,2538,2541],{},[987,2539,2540],{},"从 display 获取可绘制的 screen",[991,2542,2543],{},[994,2544,2545],{},"选择要画在哪个屏幕\u002F屏幕资源上。",[994,2547,2548,2551],{},[987,2549,2550],{},"创建窗口（Create a window）",[991,2552,2553],{},[994,2554,2555],{},"在服务器端创建一个窗口资源（会获得对应的 window id\u002F句柄）。",[994,2557,2558,2561],{},[987,2559,2560],{},"通知窗口管理器期望的窗口属性",[991,2562,2563],{},[994,2564,2565],{},"告诉 Window Manager：窗口应有哪些特性（如标题、大小提示、可否缩放等），便于其装饰与管理。",[994,2567,2568,2571],{},[987,2569,2570],{},"创建其他资源（如 Graphics Context）",[991,2572,2573],{},[994,2574,2575,2576,2578],{},"常见的是创建 ",[987,2577,2520],{},"：集中保存绘图属性（颜色、线宽、字体等）。",[994,2580,2581,2584],{},[987,2582,2583],{},"把窗口映射到屏幕（Map window）",[991,2585,2586],{},[994,2587,2588,2591],{},[1213,2589,2590],{"code":2590},"map"," 的意义是：让窗口从“存在但不可见”变成“可见并参与显示”。",[1137,2593],{},[1916,2595,2597],{"id":2596},"b-事件管理event-management","B. 事件管理（Event management）",[2483,2599,2600,2610],{},[994,2601,2602,2605],{},[987,2603,2604],{},"设置感兴趣事件（event mask）",[991,2606,2607],{},[994,2608,2609],{},"告诉服务器：这个窗口\u002F应用需要接收哪些事件（键盘、鼠标、曝光、结构变化等）。",[994,2611,2612],{},[987,2613,2614],{},"事件循环（Event loop）",[991,2616,2617,2624],{},[994,2618,2619,2620,2623],{},"逻辑：只要还有事件，就",[987,2621,2622],{},"读取 → 解释 → 处理","下一条事件。",[994,2625,2626,2627,2630],{},"图形输出通常也发生在这里（例如收到 ",[1213,2628,2629],{"code":2629},"Expose"," 事件后重绘）。",[1137,2632],{},[1916,2634,2636],{"id":2635},"c-结束termination","C. 结束（Termination）",[2483,2638,2639],{},[994,2640,2641],{},[987,2642,2643],{},"销毁资源（Destroy resources）",[991,2645,2646],{},[994,2647,2648],{},"释放窗口、GC、pixmap 等服务器端\u002F客户端侧资源。",[2483,2650,2651],{},[994,2652,2653],{},[987,2654,2655],{},"关闭 display 连接（Close display）",[991,2657,2658],{},[994,2659,2660],{},"断开与 X server 的连接。",[2483,2662,2663],{},[994,2664,2665],{},[987,2666,2667],{},"退出程序（Exit）",[1137,2669],{},[1916,2671,2673],{"id":2672},"现实开发补充图右侧要点","现实开发补充（图右侧要点）",[991,2675,2676,2683],{},[994,2677,2678,2679,2682],{},"现在",[987,2680,2681],{},"直接调用 Xlib \u002F Xt \u002F XCB"," 来写完整 GUI 已经比较少见。",[994,2684,2685,2686,2689],{},"更常见做法：使用更高层的 GUI 工具包（如 ",[987,2687,2688],{},"GTK+、Qt","），由它们封装底层 X（或 Wayland）细节。",[1184,2691,2693],{"id":2692},"demo-x-源码示例逐段说明","Demo X 源码示例（逐段说明）",[991,2695,2696],{},[994,2697,2698,2701],{},[987,2699,2700],{},"用途概览",[991,2702,2703],{},[994,2704,2705,2706,2709],{},"这是一个最小化的 ",[987,2707,2708],{},"Xlib"," 程序：创建一个窗口、设置窗口属性与事件监听，然后进入事件循环；在特定事件（如鼠标点击）发生时做处理并输出信息。",[1137,2711],{},[1916,2713,2715],{"id":2714},"依赖与头文件a-demo-x-source-file-1","依赖与头文件（A Demo X Source File (1)）",[991,2717,2718,2731,2770],{},[994,2719,2720,2723],{},[987,2721,2722],{},"依赖安装（Ubuntu）",[991,2724,2725],{},[994,2726,2727,2730],{},[1213,2728,2729],{"code":2729},"sudo apt-get install libx11-dev","：安装 X11 开发头文件与库，才能编译 Xlib 程序。",[994,2732,2733,2736],{},[987,2734,2735],{},"头文件含义（关键点）",[991,2737,2738,2751,2760],{},[994,2739,2740,2743,2744,2747,2748,2284],{},[1213,2741,2742],{"code":2742},"X11\u002FXlib.h"," \u002F ",[1213,2745,2746],{"code":2746},"X11\u002FXutil.h","：Xlib 核心 API 与常用工具结构体（如 ",[1213,2749,2750],{"code":2750},"XSizeHints",[994,2752,2753,2756,2757,2284],{},[1213,2754,2755],{"code":2755},"X11\u002Fcursorfont.h","：提供光标字体常量（如 ",[1213,2758,2759],{"code":2759},"XC_umbrella",[994,2761,2762,2763,1876,2766,2769],{},"其余如 ",[1213,2764,2765],{"code":2765},"stdio.h",[1213,2767,2768],{"code":2768},"stdlib.h"," 为标准 C 库。",[994,2771,2772,2775],{},[987,2773,2774],{},"全局 X 相关变量",[991,2776,2777,2783,2789,2795],{},[994,2778,2779,2782],{},[1213,2780,2781],{"code":2781},"Display *theDisp;","：与 X server 的连接句柄。",[994,2784,2785,2788],{},[1213,2786,2787],{"code":2787},"int theScreen;","：使用的屏幕编号（一个 display 下可能有多个 screen）。",[994,2790,2791,2794],{},[1213,2792,2793],{"code":2793},"Window rootW, mainW;","：根窗口与主窗口（X 的窗口在服务器端以 ID 表示）。",[994,2796,2797,2800],{},[1213,2798,2799],{"code":2799},"HandleEvent(XEvent *)","：事件分发函数声明。",[1137,2802],{},[1916,2804,2806],{"id":2805},"建立连接与定位根窗口a-demo-x-source-file-2","建立连接与定位根窗口（A Demo X Source File (2)）",[991,2808,2809,2832,2842],{},[994,2810,2811,2814],{},[1213,2812,2813],{"code":2813},"XOpenDisplay(NULL)",[991,2815,2816,2826],{},[994,2817,2818,2819,2822,2823,2825],{},"打开到 X server 的连接。",[1213,2820,2821],{"code":2821},"NULL"," 表示使用环境变量 ",[1213,2824,1875],{"code":1875}," 指定的默认显示。",[994,2827,2828,2829,2831],{},"若返回 ",[1213,2830,2821],{"code":2821},"，说明无法连接到 X server，程序直接报错退出。",[994,2833,2834,2837],{},[1213,2835,2836],{"code":2836},"DefaultScreen(theDisp)",[991,2838,2839],{},[994,2840,2841],{},"获取默认 screen 编号，后续创建窗口需要。",[994,2843,2844,2847],{},[1213,2845,2846],{"code":2846},"RootWindow(theDisp, theScreen)",[991,2848,2849,2852],{},[994,2850,2851],{},"获取该 screen 的根窗口（root window）。",[994,2853,2854],{},"根窗口是所有顶层窗口的父窗口（通常由窗口管理器\u002F桌面环境管理）。",[1137,2856],{},[1916,2858,2860],{"id":2859},"设置窗口约束创建窗口选择事件a-demo-x-source-file-3","设置窗口约束、创建窗口、选择事件（A Demo X Source File (3)）",[991,2862,2863,2903,2935,2977,3000],{},[994,2864,2865,2868,2871,2874],{},[987,2866,2867],{},"窗口大小提示（",[1213,2869,2870],{"code":2870},"XSizeHints hints",[987,2872,2873],{},"）",[991,2875,2876,2882,2891,2897],{},[994,2877,2878,2881],{},[1213,2879,2880],{"code":2880},"hints.width\u002Fheight = 100","：初始大小 100×100。",[994,2883,2884,1876,2887,2890],{},[1213,2885,2886],{"code":2886},"max_width\u002Fmax_height = 600",[1213,2888,2889],{"code":2889},"min_width\u002Fmin_height = 16","：最大\u002F最小尺寸限制。",[994,2892,2893,2896],{},[1213,2894,2895],{"code":2895},"width_inc = height_inc = 16","：调整大小的步进（每次缩放以 16 为单位）。",[994,2898,2899,2902],{},[1213,2900,2901],{"code":2901},"hints.flags |= PMaxSize | PMinSize | PResizeInc;","：启用这些限制，让窗口管理器知道要遵守这些 hint。",[994,2904,2905,2908,2911,2913],{},[987,2906,2907],{},"设置鼠标光标（",[1213,2909,2910],{"code":2910},"XSetWindowAttributes xswa",[987,2912,2873],{},[991,2914,2915,2921],{},[994,2916,2917,2920],{},[1213,2918,2919],{"code":2919},"xswa.cursor = XCreateFontCursor(theDisp, XC_umbrella);","：把光标设成“伞”的样式。",[994,2922,2923,2926,2927,2930,2931,2934],{},[1213,2924,2925],{"code":2925},"xswamask = CWCursor;","：告诉 ",[1213,2928,2929],{"code":2929},"XCreateWindow"," 本次属性里只有 ",[1213,2932,2933],{"code":2933},"cursor"," 这一项需要应用。",[994,2936,2937,2940,2942,2944],{},[987,2938,2939],{},"创建窗口（",[1213,2941,2929],{"code":2929},[987,2943,2873],{},[991,2945,2946,2964,2970],{},[994,2947,2948,2949,2952,2953,2956,2957,2960,2961,1011],{},"以 ",[1213,2950,2951],{"code":2951},"rootW"," 为父窗口，在坐标 ",[1213,2954,2955],{"code":2955},"(0,0)"," 创建大小 ",[1213,2958,2959],{"code":2959},"100×100"," 的窗口，边框宽度为 ",[1213,2962,2963],{"code":2963},"2",[994,2965,2966,2969],{},[1213,2967,2968],{"code":2968},"CopyFromParent","：许多视觉\u002F深度\u002F类信息从父窗口继承（简化参数）。",[994,2971,2972,2973,2976],{},"返回的 ",[1213,2974,2975],{"code":2975},"mainW"," 是窗口句柄（ID）。",[994,2978,2979,2982,2985,2987],{},[987,2980,2981],{},"设置窗口基本属性（",[1213,2983,2984],{"code":2984},"XSetStandardProperties",[987,2986,2873],{},[991,2988,2989],{},[994,2990,2991,2992,2995,2996,2999],{},"设置窗口名\u002F图标名（这里都为 ",[1213,2993,2994],{"code":2994},"\"x_try\"","），并把前面的 ",[1213,2997,2998],{"code":2998},"hints"," 作为窗口管理器参考。",[994,3001,3002,3005,3008,3010],{},[987,3003,3004],{},"选择要监听的事件（",[1213,3006,3007],{"code":3007},"XSelectInput",[987,3009,2873],{},[991,3011,3012,3018,3024],{},[994,3013,3014,3017],{},[1213,3015,3016],{"code":3016},"ExposureMask","：窗口需要重绘时（Expose）。",[994,3019,3020,3023],{},[1213,3021,3022],{"code":3022},"StructureNotifyMask","：窗口结构变化，如 resize\u002Fmove（ConfigureNotify 属于这一类）。",[994,3025,3026,3029],{},[1213,3027,3028],{"code":3028},"ButtonPressMask","：鼠标按键按下事件。",[1137,3031],{},[1916,3033,3035],{"id":3034},"显示窗口与事件主循环a-demo-x-source-file-4","显示窗口与事件主循环（A Demo X Source File (4)）",[991,3037,3038,3048],{},[994,3039,3040,3043],{},[1213,3041,3042],{"code":3042},"XMapWindow(theDisp, mainW)",[991,3044,3045],{},[994,3046,3047],{},"“映射”窗口：让窗口从不可见变为可见（交给窗口管理器安排显示）。",[994,3049,3050,3053],{},[987,3051,3052],{},"主循环",[991,3054,3055,3064],{},[994,3056,3057,3059,3060,3063],{},[1213,3058,1435],{"code":1435},"：阻塞等待下一个事件，读到 ",[1213,3061,3062],{"code":3062},"event"," 中。",[994,3065,3066,3069],{},[1213,3067,3068],{"code":3068},"HandleEvent(&event);","：交给事件处理函数分发。",[1137,3071],{},[1184,3073,3075],{"id":3074},"事件处理逻辑a-demo-x-source-file-45","事件处理逻辑（A Demo X Source File (4)(5)）",[991,3077,3078,3086,3109,3145,3174],{},[994,3079,3080,3083],{},[1213,3081,3082],{"code":3082},"switch (event->type)",[987,3084,3085],{},"：按事件类型分支处理",[994,3087,3088,3091],{},[987,3089,3090],{},"Expose（窗口需要重绘）",[991,3092,3093,3099,3106],{},[994,3094,3095,3098],{},[1213,3096,3097],{"code":3097},"XExposeEvent *exp_event = (XExposeEvent *) event;","：把通用事件解释为 Expose 事件结构。",[994,3100,3101,3102,3105],{},"注释提示：若 ",[1213,3103,3104],{"code":3104},"exp_event->window == mainW","，应该在此处执行重绘（例如重新画图形\u002F文字）。",[994,3107,3108],{},"这里示例没有真正绘制代码，只保留了重绘位置。",[994,3110,3111,3114],{},[987,3112,3113],{},"ButtonPress（鼠标按下）",[991,3115,3116,3121,3138],{},[994,3117,3118],{},[1213,3119,3120],{"code":3120},"XButtonEvent *but_event = (XButtonEvent *) event;",[994,3122,3123,3124],{},"条件：\n",[991,3125,3126,3132],{},[994,3127,3128,3131],{},[1213,3129,3130],{"code":3130},"but_event->window == mainW","：事件发生在主窗口上；",[994,3133,3134,3137],{},[1213,3135,3136],{"code":3136},"but_event->button == Button1","：按下的是鼠标左键。",[994,3139,3140,3141,3144],{},"动作：打印点击坐标 ",[1213,3142,3143],{"code":3143},"but_event->x, but_event->y","（窗口内部坐标）。",[994,3146,3147,3150],{},[987,3148,3149],{},"ConfigureNotify（窗口结构变化，如大小\u002F位置变化）",[991,3151,3152,3157,3160],{},[994,3153,3154],{},[1213,3155,3156],{"code":3156},"XConfigureEvent *conf_event = (XConfigureEvent *) event;",[994,3158,3159],{},"注释提示：窗口尺寸变化后通常也需要重绘\u002F重新布局。",[994,3161,3162,3163,3166,3167,3170,3171,1011],{},"注意：示例注释里写了 ",[1213,3164,3165],{"code":3165},"exp_event","，但此分支里实际变量是 ",[1213,3168,3169],{"code":3169},"conf_event","——这更像是教学用代码中的小笔误；语义上应当检查 ",[1213,3172,3173],{"code":3173},"conf_event->window == mainW",[994,3175,3176,3179],{},[987,3177,3178],{},"default",[991,3180,3181],{},[994,3182,3183],{},"忽略未处理的事件类型。",[1137,3185],{},[1916,3187,3189],{"id":3188},"读代码时可以抓住的主线","读代码时可以抓住的“主线”",[991,3191,3192,3201,3209,3216,3226,3233,3241,3253],{},[994,3193,3194,3197,3198],{},[987,3195,3196],{},"连上 X server","：",[1213,3199,3200],{"code":3200},"XOpenDisplay",[994,3202,3203,3197,3206],{},[987,3204,3205],{},"找根窗口",[1213,3207,3208],{"code":3208},"RootWindow",[994,3210,3211,3197,3214],{},[987,3212,3213],{},"准备属性 + 创建窗口",[1213,3215,2929],{"code":2929},[994,3217,3218,3197,3221,3223,3224,2873],{},[987,3219,3220],{},"告诉 WM 你的窗口偏好",[1213,3222,2984],{"code":2984},"（含 ",[1213,3225,2750],{"code":2750},[994,3227,3228,3197,3231],{},[987,3229,3230],{},"订阅事件",[1213,3232,3007],{"code":3007},[994,3234,3235,3197,3238],{},[987,3236,3237],{},"显示窗口",[1213,3239,3240],{"code":3240},"XMapWindow",[994,3242,3243,3197,3246,3249,3250],{},[987,3244,3245],{},"事件循环",[1213,3247,3248],{"code":3248},"XNextEvent"," → ",[1213,3251,3252],{"code":3252},"HandleEvent",[994,3254,3255],{},[987,3256,3257],{},"在 Expose\u002FConfigureNotify 中重绘，在 ButtonPress 中响应输入",{"title":1412,"searchDepth":3259,"depth":3259,"links":3260},4,[3261],{"id":980,"depth":3262,"text":981,"children":3263},2,[3264,3266,3267],{"id":985,"depth":3265,"text":989},3,{"id":1096,"depth":3265,"text":1097},{"id":1141,"depth":3265,"text":1142,"children":3268},[3269,3270,3271,3272,3273,3274,3275,3276,3277,3282,3283,3289,3295],{"id":1186,"depth":3259,"text":1187},{"id":1262,"depth":3259,"text":1263},{"id":1329,"depth":3259,"text":1330},{"id":1381,"depth":3259,"text":1382},{"id":1439,"depth":3259,"text":1440},{"id":1541,"depth":3259,"text":1542},{"id":1653,"depth":3259,"text":1654},{"id":1789,"depth":3259,"text":1790},{"id":1886,"depth":3259,"text":1887,"children":3278},[3279,3281],{"id":1918,"depth":3280,"text":1919},5,{"id":2289,"depth":3280,"text":2290},{"id":2342,"depth":3259,"text":2343},{"id":2459,"depth":3259,"text":2460,"children":3284},[3285,3286,3287,3288],{"id":2480,"depth":3280,"text":2481},{"id":2596,"depth":3280,"text":2597},{"id":2635,"depth":3280,"text":2636},{"id":2672,"depth":3280,"text":2673},{"id":2692,"depth":3259,"text":2693,"children":3290},[3291,3292,3293,3294],{"id":2714,"depth":3280,"text":2715},{"id":2805,"depth":3280,"text":2806},{"id":2859,"depth":3280,"text":2860},{"id":3034,"depth":3280,"text":3035},{"id":3074,"depth":3259,"text":3075,"children":3296},[3297],{"id":3188,"depth":3280,"text":3189},[903],"X Window 系统：详细版笔记","md",null,{"slots":3303},{},{"text":319,"minutes":445,"time":446,"words":447},{"title":442,"description":3299},{"loc":441,"images":3307},[3308,3309],{"loc":1769},{"loc":2348},[3311,3312],"Linux","课程笔记","tech","d1DkzFeK69cRzVlxtr3JmbMr9C8_bArLJ7YEXzjVxrQ",[3316,3317],{"title":432,"path":431,"stem":430,"date":433,"type":3313,"children":-1},{"title":451,"path":450,"stem":449,"date":452,"type":3313,"children":-1},1789057284885]