stanford-oval/wikipedia huggingface dataset:
王金山 (1919年)
生平

1935年参加中国工农红军，1936年加入中国共产党。第一次国共内战时期，历任红25军75师225团战士，警卫员，看护员，看护班长；参加了崂山，榆林桥，直罗镇、东征和山城堡等战役。抗日战争时期，历任八路军115师344旅688团司药，军医助理，军医；新四军3师10旅旅部门诊部主任，新四军3师淮海6分区卫生部休养所所长，淮海6分区卫生部干事，主任；参加了平型关，反九路围攻等战役，1938年在张庄战役中负伤。
第二次国共内战时期，历任华东野战军第7野战医院副院长兼手术队队长，中国人民解放军第三野战军卫生部科长，华东军区海军卫生部科长；参加了七战七捷，莱芜，孟良崮，沙土集，豫东，淮海等战役；参与了华东军区海军卫生系统的组建。
中华人民共和国成立后，历任华东军区海军卫生部科长，副部长，海军总医院院长（上海），海军舟山基地卫生处处长。1954年被评为三等甲级残废军人。1955年被授予中国人民解放军中校军衔，荣获三级八一勋章，三级独立自由勋章，三级解放勋章。1955年至1959年进中国人民解放军第二军医大学卫勤系学习。毕业后，历任海军舟山基地后勤部副部长兼卫生处处长，海军东海舰队后勤部卫生部部长，海军上海基地后勤部部长，海军东海舰队后勤部第一副部长。1961年晋升为上校军衔，1965年晋升为大校军衔。1982年以正军职离休。1988年荣获二级红星功勋荣誉勋章。1992年在上海去世。
索足蛤科

| 索足蛤科 |
| --- | --- |

Thyasira gouldi

科学分类 
界：: 动物界 Animalia
门：: 軟體動物門 Mollusca
纲：: 双壳纲 Bivalvia
目：: 滿月蛤目 Lucinoida
总科：: 索足蛤總科 Thyasiroidea
科：: 索足蛤科 Thyasiridae Dall, 1900 (1895)

屬
 見內文
索足蛤科（學名：），又名無齒蛤科，是雙殼綱滿月蛤目的一個軟體動物科，有11個屬。本科從過往滿月蛤科的索足蛤亞科升格而成，是索足蛤總科之下唯一的一個科。
分類

Adontorhina 屬 S. S. Berry, 1947
Adontorhina cyclia S. S. Berry, 1947
Adontorhina keegani Barry & McCormack, 2007
Adontorhina lynnae Valentich-Scott, 2000
Adontorhina pisum (Dall, 1908)
Adontorhina similis Barry & McCormack, 2007
Adontorhina sphaericosa Scott, 1986
Adontorhina zelayai Valentich-Scott, 2012
Axinodon A. E. Verrill and Bush, 1898
Axinodon redondoensis (T. A. Burch, 1941)
Axinodon symmetros (Jeffreys, 1876)
Axinopsida Keen and Chavan, 1951
Axinopsida cordata (A. E. Verrill and Bush, 1898)
Axinopsida orbiculata (G. O. Sars, 1878)
Axinopsida serricata (Carpenter, 1864)
Axinopsida viridis (Dall, 1901)
Axinulus A. E. Verrill and Bush, 1898
Axinulus careyi Bernard, 1979
Axinulus eumyaria (M. Sars, 1870)
Axinulus redondoensis (T. A. Burch, 1941)
Conchocele 屬 Gabb, 1866
Conchocele bisecta (Conrad, 1849) — giant cleft clam
Conchocele disjuncta Gabb, 1866
Genaxinus 屬 Iredale, 1930
Genaxinus cookianus Fleming, 1950
Genaxinus otagoensis (Suter, 1913)
Leptaxinus 屬 A. E. Verrill and Bush, 1898
Leptaxinus incrassatus (Jeffreys, 1876)
Leptaxinus minutus A. E. Verrill and Bush, 1898
Maorithyas 屬 Fleming, 1950
Maorithyas flemingi Powell, 1955
Maorithyas marama Fleming, 1950
Mendicula 屬 Iredale, 1924
Mendicula ferruginosa (Forbes, 1844)
索足蛤屬 Thyasira Lamarck, 1818 ZoolScripta36:p455.
Thyasira alleni Carrozza, 1981
Thyasira barbarensis (Dall, 1890)
Thyasira brevis A. E. Verrill and Bush, 1898
Thyasira croulinensis Jeffreys, 1874
Thyasira cycladia S. Wood, 1853
Thyasira cygnus Dall, 1916 — Swan cleft clam
Thyasira elliptica Verrill and Bush, 1898
Thyasira equalis (A. E. Verrill and Bush, 1898)
Thyasira eumyaria M. Sars, 1870
Thyasira flexuosa (Montagu, 1803)
Thyasira gouldi (Philippi, 1845)
Thyasira grandis Verrill and Smith, 1885
Thyasira granulosa Monterosato, 1874
Thyasira incrassatus (Jeffreys, 1876)
Thyasira obsoleta (Verrill and Bush, 1898)
Thyasira ovoidea Dall, 1889
Thyasira peroniana peregrina Iredale, 1930
Thyasira peroniana waikanae Fleming, 1950
Thyasira plicata Verrill and Smith, 1885
Thyasira pygmaea Verrill and Bush, 1898
Thyasira resupina neozelanica (Iredale, 1930)
Thyasira rotunda Jeffreys, 1881
Thyasira simplex A. E. Verrill and Bush, 1898
Thyasira subovata Jeffreys, 1881
Thyasira subtrigona (Jeffreys, 1858)
Thyasira succisa (Jeffreys, 1876)
Thyasira tortuosa Jeffreys, 1881
Thyasira tricarinata Dall, 1916
Thyasira triseriata
Thyasira trisinuata (d'Orbigny, 1842) — Atlantic cleft clam
Wallerconcha 屬 Valentich-Scott and Powell,2014
Wallerconcha sarae Valentich-Scott and Powell,2014
參考文獻

1 2  徐凤山. . . 无脊椎动物 第四十八卷 软体动物门 满月蛤总科 平装; 第1版. 科学出版社. 2012-01-01  [2017-11-27]. ISBN 9787030324696 （中文（简体））.
↑
1 2  Paul Valentich-Scott, Charles Powell, Thomas Lorenson, Brian Ewards. . ZooKeys. 2014-10-12, 462: 11–26  [2018-04-02]. ISSN 1313-2970. doi:10.3897/zookeys.462.6790. （原始内容存档于2020-11-09） （英语）.
Powell A. W. B., New Zealand Mollusca, William Collins Publishers Ltd, Auckland, New Zealand 1979 ISBN 0-00-216906-1
緬因鎮區 (愛荷華州林縣)

| 緬因鎮區 Maine Township |
| --- | --- |
行政鎮區
緬因鎮區緬因鎮區在愛荷華州的位置
坐标：42°10′00″N 91°32′00″W﻿ / ﻿42.16667°N 91.53333°W﻿ / 42.16667; -91.53333
國家: 美国
州份: 愛荷華州
縣: 林縣
面积
 • 总计: 93.01 平方公里（35.91 平方英里）
 • 陸地: 92.35 平方公里（35.66 平方英里）
 • 水域: 0.66 平方公里（0.25 平方英里）
海拔: 282 公尺（925 英尺）
人口（2010）
 • 總計: 1,762人
 • 密度: 18.9人/平方公里（49.1人/平方英里）
时区: 北美中部時區（UTC-6）
 • 夏时制: CDT（UTC-5）
電話區號: 319（英语：）
GNIS ID: 468332
緬因鎮區（英語：）是位於美國愛荷華州林縣的一個行政鎮區。
地方資料

根據2010年美國人口普查的數據，緬因鎮區的面積為93.01平方千米，當中陸地面積為92.35平方千米，而水域面積為0.66平方千米。當地共有人口1762人，而人口密度為每平方千米18.94人。
參考文獻

↑  . 美国人口调查局.   [2011-05-14]. （原始内容存档于2013-09-11）.
↑  .
约瑟夫·博伊斯

| 约瑟夫·博伊斯 |
| --- | --- |

出生: (1921-05-12)1921年5月12日  魏瑪共和國威斯特法伦省克雷费尔德
逝世: 1986年1月23日(1986歲—01—23)（64歲）  西德杜塞尔多夫
国籍: 德国
教育程度: 杜塞尔多夫艺术学院
知名于: 行为艺术、雕塑
约瑟夫·博伊斯（德語：，1921年5月12日—1986年1月23日）是著名的德国行为艺术家，其作品包括各种雕塑、行为艺术，信奉人人都可以是艺术家的观点。代表作如《如何向死兔子讲解图画》、《油脂椅》等。
生平

1921年出生在德国北莱茵-威斯特法伦的克列弗尔德, 父亲是小商人。博伊斯青少年间就表现出叛逆的性格，中学期间他曾逃学到一家马戏团打工。1938年后他加入了希特勒青年团，二次世界大战中参加空军，曾受伤降落在苏联领土被当地鞑靼人所救。战争中多次负伤使得他腿脚有毛病，行动不便。二战后在克莱沃向当地艺术家学习雕塑及绘画艺术，同时认识了凡·格林腾兄弟。1947年博伊斯进入杜塞尔多夫艺术学院开始系统地学习艺术，师从恩塞林（Joseph Enseling）、马塔利（Ewald Mataré）等人。然而1953年他大学毕业后却找不到工作。其未婚妻也解除了和他的婚约，这些打击使得博伊斯一蹶不振并一度打算自杀。凡·格林腾兄弟帮他举办了一些小规模的展览，同时把他送到乡下两兄弟母亲的农场内进行调整。在农场生活工作了两年之后博伊斯重新恢复了信心，1959年与艾娃·汪姆芭走入婚姻殿堂并育有一对儿女。1961年，他被母校聘为教授，然而他本人并不喜欢学院僵化的制度。1967年建立了德国学生党，因为与学校方面的矛盾而在1972年被开除。1978年由于学生们的支持又恢复了他的教授名誉，正是在这几年中他积累起了国际声誉。1986年博伊斯死于杜塞尔多夫。
作品

博伊斯的作品种类多样，媒材从雕塑到行为艺术都有涉及。其创作创意很多来源于他在童年和二战中的经历，比如他在二战中曾当过德军飞行员，他所驾驶的飞机坠毁在克里米亚半岛后被鞑靼人救起，用毛毯和动物油脂包裹住身体为他保暖。因此他的创作有很多是用这两种元素创作的，比如《油脂椅》和《毛毡衣》。他的作品充满隐喻，如油脂椅是在一把普通的椅子上堆积上坡状的动物油脂，油脂象征着能量，椅子则暗示人的躯体。在《如何向死兔子解说图画》这件行为艺术中，博伊斯怀抱死兔子，头顶涂着蜂蜜，右脚绑着铁板，象征理性世界，左脚踩着毛毡鞋底，象征温暖。而《给卡塞尔的7000棵橡树》，实际上只是由作者开头，大部分橡树都是由市民和追随者种下的。
莱索洛

| 莱索洛 |
| --- | --- |
市镇
Lessolo
莱索洛莱索洛在意大利的位置
坐标：45°28′42″N 7°48′53″E﻿ / ﻿45.478258°N 7.814717°E﻿ / 45.478258; 7.814717
国家:  義大利
省份或广域市: 都灵省
面积
 • 总计: 7 平方公里（3 平方英里）
人口（2009）
 • 總計: 2,025人
 • 密度: 289人/平方公里（749人/平方英里）
时区: CET（UTC+1）
 • 夏时制: CEST（UTC+2）
邮编: 10010
莱索洛（義大利語：），是意大利都灵省的一个市镇。总面积7平方公里，人口2025人，人口密度289.3人/平方公里（2009年）。ISTAT代码为001132。
金瓯

金瓯可以指：
本义：金的盆盂，比喻疆土之完固，亦用以指国土等。
巩金瓯：中国清朝的国歌，中国是第一首法定国歌
金瓯永固杯
金瓯 (嘉靖进士)：明朝嘉靖三十五年进士，六安人
金瓯 (2014年电影)：中国大陆的一部公益电影，改编自长篇小说《蝴蝶是怎样飞回来的》，由田七执导，计春华、曾晓夏主演。
越南地名音译
金瓯省，又译哥毛省，越南的一個省。
金瓯市，又译哥毛市，越南金瓯省的省会。
东溪镇

东溪镇可以指：
东溪镇 (綦江区)，中华人民共和国重庆市綦江区下辖的镇
东溪镇 (忠县)，中华人民共和国重庆市忠县下辖的镇
东溪镇 (苍溪县)，中华人民共和国四川省广元市苍溪县下辖的镇
东溪街道 (简阳市)，中华人民共和国四川省资阳市简阳市下辖的镇
曾丽

| 曾丽 |
| --- | --- |
性别: 女
出生: 1969年6月（55歲）
国籍:  中华人民共和国
籍贯: 贵州凯里
民族: 苗族
头衔: 全国人大代表
政党: 中国致公党
网站: 全国人大代表数据库
曾丽（1969年6月—），贵州凯里人，苗族，中国致公党党员。中华人民共和国政治人物、第十三届全国人民代表大会贵州省代表。
生平

2018年，曾丽被选为贵州省出席第十三届全国人民代表大会代表。
參考文獻

↑  . 中国人大网.   [2020-03-16]. []
↑  . 中国政府网.   [2020-03-16]. （原始内容存档于2020-02-28）.
↑  . 中国新闻网.   [2021-02-19]. （原始内容存档于2018-02-27）.
↑  . 光明网. 2018-02-25  [2021-02-19]. （原始内容存档于2021-10-19） （中文）.
↑  . 澎湃新闻-The Paper.   [2021-02-19]. （原始内容存档于2018-03-23） （中文）.
↑  . 中国网. 2018-02-25  [2021-02-19]. （原始内容存档于2021-02-21） （中文）.
金坝乡

| 金坝乡 |
| --- | --- |
乡
国家:  中华人民共和国
上级行政区: 安徽省宣城市宣州区
时区: 北京时间（UTC+8）
电话区号: +86 
金坝乡，是中国安徽省宣城市宣州区下辖的一个乡镇级行政单位。
行政区划

金坝乡共辖以下地区：
双凤村、三合村、里仁村、正东村、靖庙村、祠边村、关庙村、长桥村、松林村、祝公村。
索沃泰尔 (热尔省)

| 索沃泰尔 Sauveterre |
| --- | --- |
 法國市镇

索沃泰尔的位置  
索沃泰尔显示法国的地图索沃泰尔显示热尔省的地图
坐标：43°27′23″N 0°51′26″E﻿ / ﻿43.4564°N 0.8572°E﻿ / 43.4564; 0.8572
国家:  法國
大区:  奧克西塔尼大區
省:  热尔省
面积1
 • 市镇: 16.45 平方公里（6.35 平方英里）
人口（2021年）
 • 市镇: 286人
 • 密度: 17.4人/平方公里（45人/平方英里）
时区: CET（UTC+01:00）
 • 夏时制: CEST（UTC+02:00）
邮政编码: 32220
INSEE: 32418 
省级选区: 萨沃河谷县（英语：）
海拔: 170—311（558—1,020英尺） （平均：247米）
1法國統計部門在計算土地面積時，不計算面積大於1平方公里的湖泊、池塘、冰川和河口。 2「人口不重複計算」：擁有多重居住地的居民（如：學生和軍人）僅計算一次。
索沃泰尔（法語：，法语发音：[sovtɛʁ]；加斯科涅語：）是法国热尔省的一个市镇，属于欧什区。
地理

索沃泰尔（43°27'23"N, 0°51'26"E）面积16.45 平方千米，位于法国奧克西塔尼大區热尔省，该省份为法国西南部内陆省份，北起顺时针与洛特-加龙省、塔恩-加龙省、上加龙省、上比利牛斯省、大西洋比利牛斯省和朗德省接壤。
与索沃泰尔接壤的市镇（或旧市镇、城区）包括：卡代扬、埃斯庞、戈雅克、隆贝兹、蒙塔马、萨巴扬。
索沃泰尔的时区为UTC+01:00、UTC+02:00（夏令时）。
行政

索沃泰尔的邮政编码为32220，INSEE市镇编码为32418。
政治

索沃泰尔所属的省级选区为萨沃河谷县（英语：）。
人口

索沃泰尔于2021年1月1日时的人口数量为286人。
索沃泰尔的OSM定位图
1962-2008年间索沃泰尔人口变化图示
金恰

金恰是哥倫比亞的城市，位於該國西部，由里薩拉爾達省負責管轄，距離首府佩雷拉110公里，始建於1888年11月29日，面積149平方公里，海拔高度1,825米，2005年人口31,996。
外部連結

Official Website Official website of Quinchía's Town Hall.
Hospital Nazareth[] Hospital Nazareth, located at the urban area of Quinchía, provides health services to local community.
QTV （页面存档备份，存于） Blog of the local radio station an TV channel. Radio Quinchía Televisión.
Quinchía.com （页面存档备份，存于） Website about Quinchía, Risaralda.
金恩持

金恩持（Kim Eun-ji， 2007年5月27日—），韩国女子围棋棋手，目前为九段。
生平

出生于首尔，6岁开始接触围棋，7岁加入张秀英围棋道场学习围棋。 2015年，她8岁时出演SBS教育节目《英才發掘團》出名，并在希望之星选拔赛等多项比赛中获奖。在姜昌培围棋研究室接受了姜昌培教练的围棋指导。 2020年1月，金恩持初段以新秀身份参加了2020年韩国女子围棋联赛的选拔比赛。  同年，她作为三陟海上缆车队队员参加韩国女子围棋联赛，并于当年10月22日晋升为二段。
2020年9月29日晚，在韩国职业围棋线上比赛“ORO国手战”中，金恩持在24强战中击败了韩国排名第7的男子顶尖国手李映九，而且几乎是完胜——执黑仅用129手便中盘获胜。但是一位围棋爱好者赛后对对局进行了分析，发现金恩持的手段和AI程序的推荐吻合率高达92%，由此引发了怀疑。随着作弊一事被传开，韩国国家队教练对金恩持进行了面谈，并且请了国内外的AI公司对这盘棋进行了分析。最终，金恩持也承认了利用AI作弊的情况，最终被禁赛一年并于次年返回。 2022年11月21日，达到晋级积分后晋升为四段，12月4日，赢得冠军赛（限制赛），晋升为五段。
漫澤蘭頂背節蜱

| 漫澤蘭頂背節蜱 |
| --- | --- |

科学分类 
界：: 动物界 Animalia
门：: 节肢动物门 Arthropoda
纲：: 蛛形纲 Arachnida
目：: 絨蟎目 Trombidiformes
科：: 瘿螨科 Eriophyidae
属：: 顶背节蜱属 Tegonotus
种：: 漫澤蘭頂背節蜱 T. eupators
二名法
Tegonotus eupators Huang, 2001

漫澤蘭頂背節蜱（学名：）为節蜱科頂背節蜱屬下的一个种。
动态链接库

此條目介紹的是Windows操作系統中實現共享函数库的方式。关于廣義的动态连接概念，请见「」。
动态链接库（英語：，缩写为DLL）是微软公司在 Windows 操作系统中实现共享函数库概念的一种實作方式。这些庫函数的扩展名是.DLL、.OCX（包含ActiveX控制的函式庫）或者.DRV（舊式的系统驱动程序）。
所謂動態链接，就是把一些經常會共用的程式碼（靜態链接的OBJ（英语：）程式庫）製作成DLL檔，當執行檔呼叫到DLL檔內的函數時，Windows作業系統才會把DLL檔載入記憶體內，DLL檔本身的結構就是可執行檔，當程式有需求時函數才進行链接。透過動態链接方式，記憶體浪費的情形將可大幅降低。静态链接库則是直接連結到執行檔。
DLL的文件格式与视窗EXE文件一样——也就是说，等同于32位视窗的可移植执行文件（PE）和16位视窗的New Executable（英语：）（NE）。作为EXE格式，DLL可以包括原始碼、数据和资源的多种组合。
在更广泛的意义上说，任何同样檔案格式的電腦檔案都可以称作资源DLL。这样的DLL的例子有扩展名为ICL的图标函式庫、扩展名为FON和FOT的字型檔案。
背景

DLL的最初目的是节约应用程序所需的磁盘和内存空间。在一个传统的非共享函式庫中，一部分代码简单地附加到调用的程序上。如果两个程序调用同一个子程序，就会出现两份那段代码。相反，许多应用共享的代码能够切分到一个DLL中，在硬盘上存为一个文件，在内存中使用一个实例（instance）。DLL的广泛应用使得早期的视窗能够在紧张的内存条件下运行。
DLL提供了如模組化这样的共享函式庫的普通好处。模块化允许仅仅更改几个应用程序共享使用的一个DLL中的代码和数据而不需要更改应用程序自身。这种模块化的基本形式允许如Microsoft Office、Microsoft Visual Studio、甚至Microsoft Windows自身这样大的应用程序使用较为紧凑的补丁和服务包。
模块化的另外一个好处是插件的通用接口使用。单个的接口允许旧的模块与新的模块一样能够与以前的应用程序运行时无缝地集成到一起，而不需要对应用程序本身作任何更改。这种动态扩展的思想在ActiveX中发挥到了极致。
尽管有这么多的优点，使用DLL也有一个缺点：DLL地獄，也就是几个应用程序在使用同一个共享DLL函式庫发生版本冲突。这样的冲突可以通过将不同版本的问题DLL放到应用程序所在的文件夹而不是放到系统文件夹来解决；但是，这样将抵消共享DLL节约的空间。目前，Microsoft .NET将解决DLL hell问题当作自己的目标，它允许同一个共享函式庫的不同版本并列共存（WinSxS）。由于现代的计算机有足够的磁盘空间和内存，这也可以作为一个合理的实现方法。
技术 > 内存管理

在Win32中，DLL文件按照片段（sections）进行组织。每个片段有它自己的属性，如可写或是只读、可执行（代码）或者不可执行（数据）等等。这些section可分为两种，一个是与绝对地址寻址无关的，所以能被多进程公用；另一个是与绝对地址寻址有关的，这个就必须由每个进程有自己的副本专用。sections的这种二分类，在编译DLL时就已经由编译器、链接器给标注好了。所以在装入DLL时，装入器知道哪些sections在内存物理地址空间只需要有一份，供多个进程共用（映射到各个进程的内存逻辑地址空间，所以逻辑地址可以不同）； 哪些sections必须是进程使用自己的专用副本。
也可在程序编译时通过编译选项/section 的S (Shared)属性，显式指定哪个节是跨进程共享的。默认情况下，DLL的数据节都是写时复制（COW）。
具体说，DLL装入时需考虑下述情形：
局部变量——每个线程都有自己的栈，DLL内部的局部变量随所在函数被执行而在各自线程的调用栈上开辟存储空间。
全局变量
DLL内部定义的全局变量
const全局变量——放入const节中，但不是各个进程共享；因为进程加载DLL时会初始化只读全局变量的值，这个值由可能是依赖于所在的进程，如DLL的函数在该进程中的逻辑地址。
非const全局变量——放入各个进程各自专用的data节中。即DLL装入时各个进程复制一份自己专用的DLL的data节。但是，对于一个进程内的多个线程并发访问这种进程空间全局变量，仍然存在线程安全问题。例如，在一个COM的DLL加载入一个进程的空间后，该进程的多个线程可能会并发访问该COM库的COM对象。为此，Windows与COM引入了线程“套间”(apartment)技术。一个进程内，应用程序与加载的各个DLL分属于不同的Module，如果DLL使用所在Module的全局变量，例如动态链接MFC的regular dll在访问自己的MFC全局变量时，应该明确声明。
访问DLL以外定义的全局变量——使用间址技术，在DLL的data节中用一个指针数据类型的内存空间来保存一个外部全局变量的地址。
函数调用
调用DLL内部定义的函数。这不是问题。
调用DLL外部定义的函数。例如，DLL内部调用一个外部函数foo()。这个foo函数在进程1中可能实现为“四舍五入”，在进程2中实现为“下取整”。所以调用外部函数是各个进程私用的事情。解决办法是使用间址技术，在data节中用一个“函数指针”数据类型的内存空间来保存这种外部函数的入口地址。
跳转指令
DLL内部跳转，不是问题
跳转到DLL外部，解决同上述3.2
DLL代码段通常被使用这个DLL的所有进程所共享。如果代码段所占据的物理内存被收回，它的内容就会被放弃，后面如果需要的话就直接从DLL文件重新加载。
与代码段不同，DLL的数据段通常是私有的；也就是说，每个使用DLL的进程都有自己的DLL数据副本。作为选择，数据段可以设置为共享，允许通过这个共享内存区域进行进程间通信。但是，因为用户权限不能应用到这个共享DLL内存，这将产生一个安全漏洞；也就是一个进程能够破坏共享数据，这将导致其它的共享进程异常。例如，一个使用访客账号的进程将可能通过这种方式破坏其它运行在特权账号的进程。这是在DLL中避免使用共享片段的一个重要原因。
当DLL被如UPX这样一个可执行的packer压缩时，它的所有代码段都标记为可以读写并且是非共享的。可以读写的代码段，类似于私有数据段，是每个进程私有的并且被页面文件备份。这样，压缩DLL将同时增加内存和磁盘空间消耗，所以共享DLL应当避免使用压缩DLL。
技术 > 符号解析和绑定

DLL输出的每个函数都由一个数字序号唯一标识，也可以由可选的名字标识。同样，DLL引入的函数也可以由序号或者名字标识。对于内部函数来说，只输出序号的情形很常见。对于大多数视窗API函数来说名字是不同视窗版本之间保留不变的；序号有可能会发生变化。这样，我们不能根据序号引用视窗API函数。
按照序号引用函数并不一定比按照名字引用函数性能更好：DLL输出表是按照名字排列的，所以对半查找可以用来在在这个表中根据名字查找这个函数。另外一方面，只有线性查找才可以用于根据序号查找函数。
将一个可执行文件绑定到一个特定版本的DLL也是可能的，这也就是说，可以在编译时解析输入函数（imported functions）的地址。对于绑定的输入函数，连结工具保存了输入函数绑定的DLL的时间戳和校验和。在运行时Windows检查是否正在使用同样版本的函式庫，如果是的话，Windows将绕过处理输入函数；否则如果函式庫与绑定的函式庫不同，Windows将按照正常的方式处理输入函数。
绑定的可执行文件如果运行在与它们编译所用的环境一样，函数调用将会较快，如果是在一个不同的环境它们就等同于正常的调用，所以绑定输入函数没有任何的缺点。例如，所有的标准Windows应用程序都绑定到它们各自的Windows发布版本的系统DLL。将一个应用程序输入函数绑定到它的目的环境的好机会是在应用程序安装的过程。
技术 > 运行时通知DLL进程/线程加载

进程/线程加载时，可以通过DllMain函数通知DLL相关信息，提供对应处理的机会。
BOOL WINAPI DLLMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID fImpLoad)
{
  switch(fdwReason)
  { 
    case DLL_PROCESS_ATTACH:
        //当这个DLL第一次被映射到了这个进程的地址空间时。DLLMain函数的返回值为FALSE，说明DLL的初始化没有成功，系统就会终结整个进程，去掉所有文件映象，之后显示一个对话框告诉用户进程不能启动。
    break;
    case DLL_THREAD_ATTACH:
        //一个线程被创建，新创建的线程负责执行这次的DllMain函数。系统不会让进程已经存在的线程以DLL_THREAD_ATTACH的值来调用DllMain函数。主线程永远不会以DLL_THREAD_ATTACH的值来调用DllMain函数。系统是顺序调用DllMain函数的，一个线程执行完DllMain函数才会让另外一个线程执行DllMain函数。
    break;
    case DLL_THREAD_DETACH:
       //如果线程调用了ExitThread来结束线程（线程函数返回时，系统也会自动调用ExitThread）。线程调用了TerminateThread，系统就不会用值DLL_THREAD_DETACH来调用所有DLL的DllMain函数。
    break;
    case DLL_PROCESS_DETACH:
        //这个DLL从进程的地址空间中解除映射。如果进程的终结是因为调用了TerminateProcess，系统就不会用DLL_PROCESS_DETACH来调用DLL的DllMain函数。这就意味着DLL在进程结束前没有机会执行任何清理工作。
    break;
  }
  return(TRUE);
}
技术 > 动态链接库搜索顺序

对于Windows，加载动态链接库时：
如果内存中已经有同module名的DLL，除非是DLL redirection或manifest，否则直接就用内存中这个DLL而不再搜索。
如果DLL名字属于当前Windows版本的Known DLL，则必须用Known DLL。清单见 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs.
如果DLL有依赖DLL，操作系统按缺省标准规则根据module名字搜索依赖DLL。即使第一个DLL指定了全路径。
Windows Desktop应用程序的DLL标准搜索序：
应用程序所在目录；
系统目录。GetSystemDirectory函数返回该目录。
16比特系统目录；
Windows目录。使用GetWindowsDirectory函数返回该目录。
当前（工作）目录；
环境变量PATH中列出的目录。
如果SafeDllSearchMode被禁止，则当前目录成为第二个被搜索的目录。
Windows Desktop应用程序的DLL替代搜索序。这包括两种情况：
LoadLibraryEx函数使用参数LOAD_WITH_ALTERED_SEARCH_PATH：LoadLibraryEx函数不是从应用程序所在目录开始，而是从参数lpFileName（即要加载的dll）所在目录开始搜索所有依赖DLL。
用SetDllDirectory函数修改搜素序。
当所有DLL都完成搜索，要开始执行DLL的初始化时，替代搜索序结束，恢复标准搜索序。
技术 > 运行时显式链接

对于一个进程，每個被加载的DLL在进程的PEB中有一個引用計數器，在当前进程中每多一次加载该计数器便加一。LoadLibrary 與 FreeLibrary 指令影響每一個行程內含的計數器；動態連結則不影響。因此藉由呼叫 FreeLibrary 而从記憶體卸载一 DLL 是很重要的。一個行程可以從它自己的 VAS 註銷此計數器。该计数器变为0时，这个DLL从当前进程中卸载，但并不意味着会从物理内存中卸载，因为其它进程可能使用这个DLL。
DLL 文件能够在运行时使用 LoadLibrary（或者 LoadLibraryEx）API 函数进行显式调用，这个的过程微软简单地称为运行时动态调用。如果在上述API的参数中指明了库文件的全路径，则不再搜索这个库文件。API 函数GetProcAddress 查找具有某名称的输出函数、FreeLibrary卸载 DLL（实际上是引用计数器减一）。这些函数类似于 POSIX 标准 API 中的 dlopen、dlsym、和 dlclose。
注意微软简单称为“运行时动态链接”的运行时隐式链接，如果不能找到链接的 DLL 文件，Windows 将提示一个错误消息并且调用应用程序失败（准确地说是不能创建进程）。应用程序开发人员不能通过编译链接来处理这种缺少 DLL 文件的隐式链接问题，而且在更改了实现后还必须重新编译链接整个程序——默认的增量链接模式会一直保留着那条缺少的函数引用，只有重新编译链接才能去掉。相反，虽然显式链接的代码量增多了，但开发人员有机会提供一个完善的出错处理机制。
运行时显式链接的过程在所有语言中都是相同的，因为它依赖于 Windows API 而不是语言结构。只要一种语言能够调用上述的 LoadLibrary 等函数，就能执行运行时显示链接。
技术 > Win16下的DLL

16位Windows，所有进程共用同一个内存地址空间。如果一个DLL被多个进程使用，它只被加载到内存中一次，只有一份数据节（data segment）。也就是说，DLL是系统全局而不是进程内的；进程不能得到DLL的一份独立的拷贝。每个DLL在内存中只有一份实例（instance）。
如果一个EXE文件同时执行多次，那么在内存中只有该EXE的一套只读拷贝（如代码或资源），但这个EXE的每个进程都有自己的一套数据段，即有多份实例（instance）。实际上，进程的实例句柄就是data segment（存放进程的全局变量）的内存起始地址。
模块（module）是指一个硬盘文件，可被加载到内存中。模块句柄是一个数据结构，表示这个硬盘文件的各部分（section）出自哪里，是否已经加载到内存中。
所以进程只能用实例句柄标识，而不能用模块句柄标识。
Win32的进程使用自己专用的逻辑内存空间。进程的全局变量不再是跨进程边界可见的。实例句柄与模块句柄相同，都是指向模块加载后的内存基地址。这样规定实际上也兼容了Win16时实例句柄与模块句柄的含义。
技术 > 资源加载

EXE和DLL都有其自己的资源（如对话框资源），而且这些资源的ID可能重复，默认使用EXE的资源。如果需要加载、使用DLL中的资源，需要通过DLL加载后的实例句柄（HINSTANCE）来找到DLL的资源。
应用程序进程本身及其调用的每个DLL模块都具有一个全局唯一的HINSTANCE句柄，它们代表了EXE或DLL模块在进程逻辑地址空间中的起始地址。进程本身的模块句柄一般为0x400000，而DLL模块默认加载地址为0x10000000。如果程序同时加载了多个DLL，则每个DLL模块都会有不同的HINSTANCE。
几种可行的办法：
方法1:
// in MFC DLL
void CDLL::ShowDlg(void)
{
       AFX_MANAGE_STATE(AfxGetStaticModuleState());
       CDialog dlg(IDD_DLL_DIALOG); //打开ID为2000的对话框
       dlg.DoModal();
}
AFX_MANAGE_STATE(AfxGetStaticModuleState());必须作为接口函数的第一条语句。功能是在栈上创建一个AFX_MAINTAIN_STATE2类的实例，利用其构造函数和析构函数对_afxThreadState.GetData()所指向内存存储块的模块状态（AFX_MODULE_STATE类型）设置现场（AfxGetModuleState函数返回的值）及恢复现场。
方法2：
// in MFC DLL
void CDLL::ShowDlg(void)
{
       HINSTANCE save_hInstance = AfxGetResourceHandle();    //当前资源句柄
       AfxSetResourceHandle(theApp.m_hInstance);             //设置为当前DLL的实例句柄所对应的资源句柄
       CDialog dlg(IDD_DLL_DIALOG);                          //打开指定ID的对话框
       dlg.DoModal();
       AfxSetResourceHandle(save_hInstance);
}
方法3：
// in EXE
void CEXE::OnButtonClick()
{
       HINSTANCE exe_hInstance = GetModuleHandle(NULL);
      HINSTANCE dll_hInstance = GetModuleHandle("SharedDll.dll");
      AfxSetResourceHandle(dll_hInstance); //切换状态
       ShowDlg();
      AfxSetResourceHandle(exe_hInstance); //恢复状态
}
编译器和语言考虑 > Delphi

在源文件的开头使用关键词library而不是program，在文件的末尾输出函数使用exports排列。
Delphi不需要LIB文件以从DLL中输入函数。为了链接一个DLL，在函数声明中使用关键词external。
编译器和语言考虑 > 微软 Visual Basic 及 .Net 框架

在Visual Basic（VB）中只支持运行时链接；但是除了使用LoadLibrary和GetProcAddress这两个API函数之外，允许使用输入函数的声明来引入DLL函数，如果找不到DLL文件，VB将产生一个运行时异常。开发人员可以捕获该异常并且进行适当的处理。
Visual Basic 6这样的较老的语言，只能调用__stdcall调用约定修饰的函数，并需要在声明DLL的输出函数时使用Alias，否则就会出现在DLL中找不到函数入口点的错误。例如：
Public Declare Function test2 Lib "PackingDLL.dll" Alias "_test2@4" (ByVal param As Integer) As Integer
也可以用def文件来定义dll输出函数的名字。。另外需要注意，VB6调用的dll，如果还依赖其他的dll，那么这些间接依赖的dll必须在VB6程序的dll搜索路径上，否则会报无法找到（被直接依赖的）dll的错误。
为了兼容，Declare Function 的方式一直沿用到 VB.net。不过在 .net 中，平台调用提供了一种新的声明DLL中的输出函数方式，通过 System.Runtime.InteropServices.DllImportAttribute 提供。例如：
<DllImportAttribute("user32.dll", EntryPoint:="MessageBoxW", SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
Public Function MessageBox(hWnd As Integer, lpText As String, lpCaption As String, uType As UInteger) As Integer
End Function
在同为 .net 语言的 C# 中，这是仅有的处理方式。当然托管 C/C++ 就不必受此限制，见下节。
编译器和语言考虑 > C和C++

微软Visual C++（MSVC）提供了许多标准C++的扩展，它允许直接在C++代码中将函数（类、数据变量）声明为输入或输出；这种做法已经被Windows平台上其他的C和C++编译器采纳，包括Windows平台上的GCC。这种扩展在函数声明前使用__declspec属性：
_declspec(dllexport)用于在DLL源文件中声明要输出的C++类、函数以及数据。
_declspec(dllimport)用于在外部程序声明由DLL输出的C++类、函数以及数据。很多情况下不使用__declspec(dllimport)也能正确编译代码。但使用__declspec(dllimport)使编译器可以生成更好的代码，因为它可以确定函数是否存在于DLL中，这使得在跨DLL边界的函数调用时编译器可以生成跳过间接寻址级别的代码。需要特别注意的是，必须使用__declspec(dllimport)才能导入DLL中输出的变量。例如，DLL输出一个C++类，该类有一个静态变量，那么在外部文件使用这个类时必须用__declspec(dllimport)声明。
如果是遵从C命名规范（naming convention）的外部名字，它们必须在C++代码中声明为extern "C"以避免它们使用C++命名规范。如果使用dll的语言（如Fortran、Visual Basic 6）不能识别C命名规范，那么需要采取办法指出在DLL中输出函数的名字。也可以通过DEF文件来定义输出函数的名字与序号。或者使用如下的链接指令来制定dll输出函数名字：
#pragma comment(linker, "/export:add=@add@8")
除了使用__declspec属性定义输入输出函数之外，它们也可以列在项目DEF文件的IMPORT或者EXPORTS部分。DEF文件不是由编译器进行处理，而是由链接器据此生成DLL文件中输出函数的名字与顺序（ordinal number），这样DEF文件就不是C/C++特有的，其它语言写的程序如果想要编译为DLL也可以使用DEF。
DLL的编译将生成DLL和LIB两个文件。LIB文件被称为输入库（import library），在编译时为调用DLL的程序提供“桩”（stub）实际上是间接跳转到运行时载入的DLL的对应的函数上再继续执行。这种通过输入库来使用DLL的方式，在程序运行时启动进程时就会自动（隐式）加载所有用到的DLL。另一种使用DLL的方式是通过LoadLibrary（或者LoadLibraryEx） API函数进行显式加载DLL，用GetProcAddress API函数通过函数名称获取其加载后的内存地址、通过FreeLibrary卸载DLL。
DLL一般说来必须放在PATH环境变量、缺省系统路经或者是使用它的程序所在路径三个的一个之内。COM服务器DLL使用regsvr32.exe注册，它将DLL的路径和全局唯一身份（GUID）记录在注册表中。应用程序能够通过在注册表中查找GUID、找到它的路径从而使用这个DLL。
编程实例 > 创建DLL输出函数

下面的例子展示了与特定语言相关的从DLL输出符号表的方法。
Delphi
library Example;
 
 // Function that adds two numbers
 function AddNumbers(a, b: Double): Double; cdecl;
 begin
     AddNumbers := a + b
 end;
 
 // Export this function
 exports
     AddNumbers;
 
 // DLL initialization code: no special handling needed
 begin
 end.
C 或 C++
#include <windows.h>
 
 // Export this function
 extern "C" __declspec(dllexport) double AddNumbers(double a, double b);
 
 // DLL initialization function
 BOOL APIENTRY DllMain(HANDLE hModule, [[DWORD]] dwReason, LPVOID lpReserved)
 {
 	return TRUE;
 }
 
 // Function that adds two numbers
 double AddNumbers(double a, double b)
 {
 	return a + b;
 }
编程实例 > 使用DLL输入

下面的例子展示了与特定语言相关的如何在编译时链接DLL输入符号表的方法。
program Example;
 {$APPTYPE CONSOLE}
 
 // Import function that adds two numbers
 function AddNumbers(a, b: Double): Double; cdecl; external 'Example.dll';
 
 var result: Double;
 begin
 result := AddNumbers(1, 2);
 Writeln('The result was: ', result)
 end.
C 或 C++
#include <windows.h>
 #include <stdio.h>
 
 // Import function that adds two numbers
 extern "C" __declspec(dllimport) double AddNumbers(double a, double b);
 
 int main(int argc, char **argv)
 {
 	double result = AddNumbers(1, 2);
 	printf("The result was: %f\n", result);
 	return 0;
 }
编程实例 > 运行时使用显式调用

下面的例子展示了如何使用不同语言特有的WIN32 API绑定进行运行时的调用和链接。
Microsoft Visual Basic
Option Explicit
 Declare Function AddNumbers Lib "Example.dll" (ByVal a As Double, ByVal b As Double) As Double
 
 Sub Main()
     Dim Result As Double
     Result = AddNumbers(1, 2)
     Debug.Print "The result was: " & Result
 End Sub
C 或 C++
#include <windows.h>
 #include <stdio.h>
 
 // DLL function signature
 typedef double (*importFunction)(double, double); 

 int main(int argc, char **argv)
 {
     importFunction addNumbers;
     double result;
 
     // Load DLL file
     HINSTANCE hinstLib = LoadLibrary("Example.dll");
     if (hinstLib == NULL) {
         printf("ERROR: unable to load DLL\n");
         return 1;
     }
 
     // Get function pointer
     addNumbers = (importFunction)GetProcAddress(hinstLib, "AddNumbers");
     if (addNumbers == NULL) {
         printf("ERROR: unable to find DLL function\n");
         return 1;
     }
 
     // Call function.
     result = addNumbers(1, 2);
 
     // Unload DLL file
     FreeLibrary(hinstLib);
 
     // Display result
     printf("The result was: %f\n", result);
 
     return 0;
 }
组件对象模型

组件对象模型（COM）将DLL概念扩充到了面向对象编程。对象能够从另外一个进程调用或者在另外一台机器上运行。COM对象有一个唯一的GUID并且能够实现强大的后台以简化如Visual Basic和ASP这样的GUI前台应用。它们也可以使用脚本语言编程。COM对象的创建和使用比DLL更为复杂。
備註

↑  如果不使用__declspec(dllimport)，那么导入的动态链接库全局变量，诸如extern int dllGlobalVar;, 实际上是该变量的指针值。因此在使用它时，必须：printf("%d ", *(int*)dllGlobalVar); *(int*)dllGlobalVar = 1; 也可以使用GetProcAddress函数来显示导入一个DLL定义的全局输出变量，例如：int &my_int = *(int*)GetProcAddress(hInstLibrary, "DLLData");
金永基

| 個人 |
| --- | --- | --- | --- |
全名:  金永基 김영기
出生日期:   (1985-01-24) 1985年1月24日（39歲）
出生地點:   日本兵库县姬路市
身高:  
位置:  守門員

現在所屬:  FC Korea
球衣號碼:  1
青年隊
2003-2006:  桃山學院大學
職業*
| 年份 |  球隊 |   |  （） |
| 2007-2012 |  湘南比馬 |  94 |  (0) |
| 2013 |  大分三神 |  0 |  (0) |
| 2013 |  → 福岡黃蜂 |  0 |  (0) |
| 2014-2016 |  AC長野拍檔 |  1 |  (0) |
| 2018- |  FC Korea |  1 |  (0) |
‡
| 2018- |  在日朝鮮人聯合足球代表隊 |  5 |  (0) |
 * 職業次數與數僅計算國內聯賽部份 最後更新於：2012年5月27日 ‡ 次數和數 最後更新於：2012年5月27日
金永基（韓語：，英語：；1985年1月24日—），出生於日本的韓國職业足球运动员，是一名守門員。現在效力於日本東京都社會人足球聯賽球會FC Korea，曾經先後效力日本職業足球聯賽湘南比馬、大分三神和AC長野拍檔，並曾被大分三神借用至借用至福岡黃蜂。其弟金聖基是中後衛，並曾代表朝鲜国家足球队。
連接

Yeong-Gi Kim - Player profile - transfermarkt.co.uk （页面存档备份，存于） （英文）
索洛尼

| 索洛尼 Sologny |
| --- | --- |
 法國市镇

   徽章
索洛尼的位置  
索洛尼显示法国的地图索洛尼显示索恩-卢瓦尔省的地图
坐标：46°21′36″N 4°40′58″E﻿ / ﻿46.36°N 4.6828°E﻿ / 46.36; 4.6828
国家:  法國
大区:  
省:  索恩-卢瓦尔省
面积1
 • 市镇: 10.65 平方公里（4.11 平方英里）
人口（2021年）
 • 市镇: 577人
 • 密度: 54.2人/平方公里（140人/平方英里）
时区: CET（UTC+01:00）
 • 夏时制: CEST（UTC+02:00）
邮政编码: 71960
INSEE: 71525 
省级选区: 于里尼县（英语：）
海拔: 260—602（853—1,975英尺） （平均：431米）
網站: http://www.sologny.fr
1法國統計部門在計算土地面積時，不計算面積大於1平方公里的湖泊、池塘、冰川和河口。 2「人口不重複計算」：擁有多重居住地的居民（如：學生和軍人）僅計算一次。
索洛尼（法語：，法语发音：[sɔlɔɲi]；法兰克-普罗旺斯语：）是法国索恩-卢瓦尔省的一个市镇，属于马孔区。
地理

索洛尼（46°21'36"N, 4°40'58"E）面积10.65 平方千米，位于法国勃艮第-弗朗什-孔泰大區索恩-卢瓦尔省，该省份为法国中部省份，北起顺时针与科多尔省、汝拉省、安省、罗讷省、卢瓦尔省、阿列省和涅夫勒省接壤。
与索洛尼接壤的市镇（或旧市镇、城区）包括：克呂尼、贝尔泽勒沙泰勒、贝尔泽城、布尔维兰、皮埃尔克洛、圣塞西尔。
索洛尼的时区为UTC+01:00、UTC+02:00（夏令时）。
行政

索洛尼的邮政编码为71960，INSEE市镇编码为71525。
政治

索洛尼所属的省级选区为于里尼县（英语：）。
人口

索洛尼于2021年1月1日时的人口数量为577人。
索洛尼的OSM定位图
1962-2008年间索洛尼人口变化图示
金斯县 (加利福尼亚州)

| 金斯县 Kings County |
| --- | --- |
县
金斯县行政中心
   旗幟 圖章
 金斯县于加利福尼亚州中的位置
 加利福尼亚州于美国的位置
坐标： 36°04′N 119°49′W﻿ / ﻿36.07°N 119.81°W﻿ / 36.07; -119.81
国家:  美国
州:  加利福尼亚州
设立日期: 1893年3月22日
語源: 金斯河（英语：）
县治: 汉福德
最大城市: 漢福德（人口） 阿维纳尔（面積）
面积
 • 总计: 1,392 平方英里（4,000 平方公里）
 • 陸地: 1,389 平方英里（4,000 平方公里）
 • 水域: 2.1 平方英里（5 平方公里）
人口（2020年）
 • 總計: 152,486人
 • 密度: 110人/平方英里（40人/平方公里）
时区: 太平洋时区（UTC−8）
 • 夏时制: 太平洋时区（UTC−7）
电话区号: 559
包含的国会选区: 第20選區、​第22選區
網站: www.countyofkings.com
金斯县（英語：）又译国王县，是美国加利福尼亚州的一个县，县治汉福德。根据美国人口普查局2020年统计，共有人口15萬2,486人；人口比例白人約占53.68%、非裔占8.30%、亞裔占3.07%、印第安人占1.68%。
地理 > 建制市

| 自治体（市/镇） | 成立年份 | 人口（2018） |
| --- | --- | --- |
| 阿维纳尔（Avenal） | 1979 | 13,218 |
| 科克伦（Corcoran） | 1914 | 21,676 |
| 汉福德（Hanford） | 1891 | 56,910 |
| 勒穆尔（Lemoore） | 1900 | 26,474 |