UE4的TMap实现原理

TMap的成员ElementSetType是TSet类型,此TSet的成员是

1
TTuple<Key, Value>

TSet类由两个动态数组组成,一个用于Hash表,一个是TSparseArray。

先说TSparseArray,其成员Data是TArray类型,即动态数组,TSparseArray的特点是通过空闲成员内部指针将空闲成员链起来,这样可方便增加删除操作,但其中的增加操作的Index是无法预先指定的。

所以TSet类又用到了一个动态数组用于Hash表,这样可以计算Hash Key找到指定Hash表项,这个表项存的是Hash桶的最后一个入桶的成员在TSparseArray数组中的Index,而其它相同Hash Key的桶成员都在最后入桶成员结构内部链起来了。

判断类的继承性

比如类定义如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <memory>
#include <iostream>
 
using namespace std;
 
class BaseA
{
public:
	int i_;
};
 
class ChildA //: public BaseA
{
public:
	int i_;
};

如下的方法只会报编译错误

1
2
3
4
5
6
7
8
9
    ChildA *a = (ChildA *)1;
    if (NULL == static_cast<BaseA*>(a))
    {
        cout << "ChildA does not inherit from BaseA 2." << endl;
    }
    else
    {
        cout << "ChildA inherits from BaseA 2." << endl;
    }

如下的方法才能编译中自动检查类的继承性并作相应处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template<class T, class = void>
struct IsFromBaseA : false_type {};
 
template<class T>
struct IsFromBaseA<T, void>
    : is_convertible<T*, BaseA*>::type {};
 
int main()
{
    if constexpr (conjunction_v<IsFromBaseA<ChildA>>)
    {
        cout << "ChildA inherits from BaseA." << endl;
    }
    else
    {
        cout << "ChildA does not inherit from BaseA." << endl;
    }
    return 1;
}

这是enable_shared_from_this实现的基础。

《旷野之息》中有趣的事情

  • 盾反的速度可以超过光速。
  • 中国人在喜事上吹唢呐,在悲事上也吹唢呐。我在《旷野之息》中打wetland的西诺克斯Hinox独眼巨人时听到了唢呐,同样我在一些韩国电影中也听到过唢呐。
  • 《旷野之息》里怪物会骑马,而人类在村中商店里公开售卖怪物的guts,是怪物野蛮,还是人类野蛮?
  • 在双子山,隔着屏幕,我起了同现实中一样的恐高反应,双脚发软不敢往下看。
  • 在双子山的神庙A记下了球阵的摆放位置,我就去神庙B成功地还原摆放位置完成神庙B的挑战,之后我认为神庙A的门也已打开可直接领取神庙A的精神球,于是头也不回过去了……
  • 既然红月是盖侬为了让怪物们起死回生而出现的,那么闪电一定是盖侬在打击林克。
  • 有人建议新人先不要玩旷野之息,说Link一个人太孤单了。而我认为从某个角度可把游戏分为几类,有一种是游戏内多人玩家一人,如《最终幻想》;有一种是游戏内一人玩家多人,如《旷野之息》。
  • 电视剧我只看历史或现实剧,而《旷野之息》都是虚构的,可我却觉得真香。石中剑?

还在玩……

春秋战国年表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
前868-前868,齐哀公被烹杀
 
前770-前770,周平王东迁
 
前757-前701,郑庄公/姬寤生/57/前743-前701/43/
 
前723-前645,管仲
前???-前643,齐桓公/小白/易牙,竖刁,开方
前697-前628,晋文公/重耳/69/前636-前628/9/
前591-前541,赵氏孤儿
 
前571-前471,老子
前559-前484,伍子胥
前551-前479,孔子
前547-前496,阖闾/公子光/52/前515-前496/20/专诸刺王僚
前545-前470,孙武/训练阖闾妃嫔
前???-前473,夫差/前495-前473/23/
前???-前464,勾践
前536-前448,范蠡
 
前440-前381,吴起
前395-前338,商鞅
前369-前286,庄子
前379-前379,田氏代齐
前376-前376,三家分晋
 
前372-前289,孟子
前???-前316,孙膑/围魏救赵,庞涓
 
前???-前279,齐孟尝君/田文
前???-前257,白起
前313-前238,荀子
前280-前233,韩非
前260-前260,长平之战
前???-前251,赵平原君/赵胜
前???-前243,魏信陵君/魏无忌
前???-前238,楚春申君/黄歇/李园
 
前230-前221,秦灭六国
前259-前210,秦始皇
前???-前208,李斯

属性“NMakeBuildCommandLine”不存在

1
2
1>------ 已启动生成: 项目: Test01, 配置: XXX Win32 ------
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VC\v160\Microsoft.MakeFile.Targets(44,5): warning MSB8005: 属性“NMakeBuildCommandLine”不存在。  正在跳过...

原因是右键工程->属性->NMake->常规->生成命令行是空的。

请仔细审视编译输出日志,看编译对应的是哪种配置平台,如上例日志中对应的是Win32,则再查看Win32配置平台下的“生成命令行”是否为空。

或者发现编译的不是需要的配置平台,可通过“配置管理器”更正。

refer to: https://social.msdn.microsoft.com/Forums/vstudio/en-US/05c02dd5-4470-445f-8131-b993b482ff32/building-a-project-configuration-makefile?forum=vcgeneral

中国近代历史年表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
1911年10月10日,辛亥革命
1913年,二次革命(讨袁之役)
1915年-1916年,护国战争
1917年-1922年,护法运动
1919年,五四运动
1921年7月23日-31日,中共一大
 
1926年3月18日,记念刘和珍君
1926年7月9日,国民革命军从广东起兵,北伐开始
1926年10月-1927年3月,上海三次工人武装起义
1927年4月12日,四一二事件
1927年4月27日-5月9日,中共五大
1927年7月15日,七一五反革命政变
1927年8月1日,南昌起义
1927年8月7日,八七会议
1927年8月12日,蒋介石第一次下野
1927年9月9日,秋收起义
1927年9月29日-10月3日,三湾改编
1927年10月,井冈山革命根据地建立
1927年12月1日,蒋宋联姻
1928年4月28日,井冈山会师
1928年6月18日-7月11日,中共六大
1928年12月29日,东北易帜,北伐结束
 
1929年1月14日,红四军主力出击赣南
1929年12月28日,古田会议
 
1931年9月18日,九一八事变
1931年12月15日,蒋介石第二次下野
1932年1月2日,日军占领锦州东北全部沦陷
1932年1月28日-3月3日,一二八淞沪抗战
1932年10月上旬,宁都会议
 
1934年10月-1936年10月,红军长征
 
1935年1月15日,遵义会议
 
1936年12月12日,西安事变
1937年7月7日,七七卢沟桥事变,日本宣称三个月之内灭亡中国
1937年8月13日,第二次淞沪抗战
1937年12月13日,南京大屠杀
1938年3月16日-4月15日,台儿庄战役
 
1941年12月7日,珍珠港事件
 
1945年8月6日和9日,广岛长崎原子弹事件,8月15日日本投降
1945年8月29日-10月10日,重庆谈判
 
1949年1月21日,蒋介石第三次下野

英格兰历史年表

1
2
3
4
凯尔特人时期/Celts/前500-前100/
罗马时期/前100-400/
亚瑟王/King Arthur/500-550/
圣 奥古斯丁/St. Augustine of Canterbury/597/使当地人皈依基督教/希波的奥古斯丁/Augustine of Hippo/354-430

七国时代(400-800)

1
2
3
4
5
6
7
诺森布里亚/Northumbria/
麦西亚/Mercia/
东盎格利亚/East Anglia/
埃塞克斯/Essex/东撒克逊
苏塞克斯/Sussex/南撒克逊
威塞克斯/Wessex/西撒克逊
肯特/Kent/400-825

威塞克斯王朝(802-1066)Wessex, West Saxons

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
爱格伯特/Egbert/770-839/70/796-839/44/
埃塞尔沃夫/Aethelwulf/839-858/20/
埃塞尔巴德/Aethelbald/831-860/39/858-860/3/
埃塞尔伯特/Ethelbert/860-865/6/
埃塞尔雷德一世/Ethelred I/865-871/7/
阿尔弗烈德大帝/Alfred/871-899/29/876年埃丁顿之战击败丹麦维京海盗
长者爱德华/Edward the Elder/900-924/25/
埃塞尔斯坦/Athelstan/924-940/17/
埃德蒙/940-946/
埃德烈德/946-955/
埃德威格/955-959/
埃德加/King Edgar the Peaceful/959-975/
殉教者爱德华/Edward the Martyr/975-978/4/Elfrida, wife of Edgar
埃塞尔雷德二世/Ethelred the Unready/978-1016/39/丹麦金,Sweyn I
埃德蒙二世/Edmund II/1016-1016/半年/
忏悔者爱德华/Edward the Exile/1041-1066/26/
哈罗德二世/Harold Godwinson/1040-1042/3/

丹麦王朝(1016-1042)House of Denmark

1
2
3
克努特一世/Knud II den Store/1016-1035/20/
哈罗德一世/Harold I or Harold Harefoot/1035-1040/6/
哈德克努特/Harthacnut,Knud III Hardeknu/1040-1042/3/

诺曼王朝(1066-1154)House of Horman

1
2
3
4
威廉一世/King William I/1027-1087/61/1066-1087/22/the Conqueror
威廉二世/King William II/1057-1100/44/Rufus 红毛王/1096年牛津大学
亨利一世/King Henry I/1068-1135/68/Well-Educated, Beauclerc 儒雅王
斯蒂芬/King Stephen/1097-1154/58/1135-1154/20/

金雀花王朝 House of Plantagenet
安茹王朝(1154-1399)House of Anjou

1
2
3
4
5
6
7
8
亨利二世/King Henry II/1133-1189/57/Curtmantle 短斗篷王/王子叛乱
理查德一世/King Richard I/1157-1199/43/10/Coeur de Lion 狮心王/第三次十字军东征
约翰/King John/1167-1216/50/1199-1216/18/Lackland 无地王/1209年剑桥大学
亨利三世/King Henry III/1207-1272/66/1216-1272/57/Simon de Montfort, 6th Earl of Leicester
爱德华一世/King Edward I/1239-1307/69/1272-1307/26/Long Shank 长脚王/jus primae noctis, 排犹,William Wallace
爱德华二世/King Edward II/1284-1327/44/1307-1327/21/同性恋
爱德华三世/King Edward III/1312-1377/66/1327-1377/51/英法百年战争,黑死病
理查德二世/King Richard II/1367-1400/34/1377-1399/23/

兰开斯特王朝(1399-1464)House of Lancaster/red rose

1
2
3
亨利四世/King Henry IV/1367-1413/47/1399-1413/15/
亨利五世/King Henry V/1387-1422/36/1413-1422/9/
亨利六世/King Henry VI/1421-1471/51/1422-1461/40/圣女贞德,玫瑰战争

约克王朝(1461-1485)House of York/white rose

1
2
3
爱德华四世/King Edward IV/1442-1483/42/1471-1483/13/
爱德华五世/King Edward V/1470-1483/1483-1483/1/
理查德三世/King Richard III/1452-1485/34/1483-1485/3/

都铎王朝(1485-1603)House of Tudor

1
2
3
4
5
6
亨利七世/King Henry VII/1457-1509/53/1485-1509/25/
亨利八世/King Henry VIII/1491-1547/57/1509-1547/39/新教
爱德华六世/King Edward VI/1537-1553/17/1547-1553/7/
简 格雷/Lady Jane Grey/1537-1554/18/1553-1553/9天/
玛丽一世/Queen Mary I/1516-1558/43/1553-1558/6/the Bloody 血腥玛丽/
伊丽莎白一世/Queen Elizabeth I/1533-1603/71/1558-1603/46/莎士比亚

斯图亚特王朝(1603-1649)House of Stewart

1
2
3
4
5
6
7
8
9
詹姆斯一世/King James I/1566-1625/60/1603-1625/23/1620年新教徒乘"五月花号"
查理一世/King Charles I/1600-1649/50/1625-1649/25/国王被斩首,1637年郁金香事件,牛顿(1643-1727)
奥利弗 克伦威尔/Oliver Cromwell/1599-1658/60/1649-1658/10/民主榜样,被掘尸
理查德 克伦威尔/Richard Cromwell/1626-1712/87/1658-1659/2/
查理二世/King Charles II/1630-1685/56/1660-1685/26/
詹姆斯二世/King James II/1633-1701/68/1685-1688/4/光荣革命,詹姆斯党
威廉三世/King William III/1650-1702/53/1689-1702/14/1701年王位继承法
玛丽二世/Queen Mary II/1662-1694/33/1689-1694/5/同性恋,死于天花
安妮女王/Queen Ann/1665-1714/50/1702-1714/13/英格兰与苏格兰议会合并

汉诺威王朝(1714-1901)House of Hannover

1
2
3
4
5
6
乔治一世/King George I/1660-1727/68/1714-1727/14/
乔治二世/King George II/1683-1760/78/1727-1760/34/七年战争
乔治三世/King George III/1738-1820/83/1760-1820/61/蒸汽革命(1760-1830),法国大革命(1789),美国独立,发现澳大利来,拿破仑,乾隆
乔治四世/King George IV/1762-1830/69/1820-1830/11/
威廉四世/King William IV/1765-1837/73/1830-1837/8/
维多利亚女王/Queen Victoria/1819-1901/83/1837-1901/65/Oliver Twist 1838, 电气革命(1860-1910),两次鸦片战争

萨克森 科堡 哥达王朝 House of Sachsen-Coburg-Gotha

1
爱德华七世/King Edward VII/1841-1910/70/1901-1910/10/

温莎王朝(1910-至今)The House of Windsor

1
2
3
4
乔治五世/King George V/1865-1936/72/1910-1936/27/一战(1914-1918),1921年爱尔兰独立战争,Angela's Ashes 1935
爱德华八世/King Edward VIII/1894-1972/79/1936-1936/11个月/因辛普森夫人退位
乔治六世/King George VI/1895-1952/58/1936-1952/17/二战(1939-1945)
伊丽莎白二世/Her Majesty Queen Elizabeth II/1926-至今/

refer to:
https://wenku.baidu.com/view/6971f5114431b90d6c85c769.html
https://baike.baidu.com/item/%E8%8B%B1%E5%9B%BD%E5%8E%86%E5%8F%B2%E5%B9%B4%E8%A1%A8/7062006
http://www.englishmonarchs.co.uk/saxon_37.html

安装程序无法自动安装 Virtual Machine Communication Interface Sockets (VSock)

http://www.catalog.update.microsoft.com/search.aspx?q=kb4474419
下载kb4474419 win7 x64版珍藏!

refer to:
https://tieba.baidu.com/p/6031541992
https://kb.vmware.com/s/article/78708
https://support.microsoft.com/en-us/topic/sha-2-code-signing-support-update-for-windows-server-2008-r2-windows-7-and-windows-server-2008-september-23-2019-84a8aad5-d8d9-2d5c-6d78-34f9aa5f8339