的高级指挥员如果追赠军人职位军衔等级划分该怎么划分

中共早期牺牲的高级指挥员如果追赠军衔该怎么划分? - 知乎121被浏览76084分享邀请回答8228 条评论分享收藏感谢收起中共早期牺牲的高级指挥员如果追赠军衔该怎么划分? - 知乎121被浏览76084分享邀请回答15 条评论分享收藏感谢收起8228 条评论分享收藏感谢收起查看更多回答&p&今天来看我的个人仓库已经有50个了,时间最长的还是&a href=&///?target=https%3A///biezhi/blade& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&biezhi/blade&i class=&icon-external&&&/i&&/a&,这是我2015年9月在开源世界的处女座,目前还在维护 并乐此不疲。&/p&&p&它是一个Java的MVC框架,当时的想法比较简单,摆脱SSH的臃肿,jar包即服务那才爽。&/p&&p&在今年的3月份,使用Blade一周左右开发了一款博客系统,在Github上快速流行了起来,它叫&a href=&///?target=https%3A///otale/tale& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&otale/tale&i class=&icon-external&&&/i&&/a&,里面很多技术几乎都不是主流的,作为个人项目,我倒喜欢把玩和挑战一些有趣的技术。&/p&&p&除此之外还做了很多有意思的小东西:&/p&&ul&&li&&a href=&///?target=https%3A///biezhi/oh-my-email& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&biezhi/oh-my-email&i class=&icon-external&&&/i&&/a&:一个类实现的邮件发送(Java语言)&/li&&li&&a href=&///?target=https%3A///biezhi/wechat-robot& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&biezhi/wechat-robot&i class=&icon-external&&&/i&&/a&:之前好奇做的微信个人机器人程序(鬼知道这么多人感兴趣)&/li&&li&&a href=&///?target=https%3A///biezhi/lowb& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&biezhi/lowb&i class=&icon-external&&&/i&&/a&:把玩NodeJS做的一个小巧的终端程序,README里有演示&/li&&li&&a href=&///?target=https%3A///biezhi/oh-mybatis& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&biezhi/oh-mybatis&i class=&icon-external&&&/i&&/a&:在浏览器中生成mybatis的那些屎文件&/li&&li&&a href=&///?target=https%3A///bladejava/blade-jdbc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&bladejava/blade-jdbc&i class=&icon-external&&&/i&&/a&:仿ActiveRecord的数据库操作库&/li&&li&&a href=&///?target=https%3A///biezhi/terse& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&biezhi/terse&i class=&icon-external&&&/i&&/a&:很久以前在typecho下写的主题&/li&&li&&a href=&///?target=https%3A///biezhi/grice& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&biezhi/grice&i class=&icon-external&&&/i&&/a&:Java编写的文档引擎&/li&&li&&a href=&///?target=https%3A///biezhi/oh-my-session& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&biezhi/oh-my-session&i class=&icon-external&&&/i&&/a&:以前写的基于ServletAPI的Session扩展&/li&&li&&a href=&///?target=https%3A///kongzhongfinance/mrpc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&kongzhongfinance/mrpc&i class=&icon-external&&&/i&&/a&:分布式的RPC服务治理框架,公司内部用的&/li&&li&&a href=&///?target=https%3A///junicorn/roo& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&junicorn/roo&i class=&icon-external&&&/i&&/a&:组织业务爱好者开发的社区系统(进行中)&/li&&li&&a href=&///?target=https%3A///biezhi/witty& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&biezhi/witty&i class=&icon-external&&&/i&&/a&:初学Golang做的一个聊天对话的程序&/li&&/ul&&p&当然还有更多,不知不觉写了这么多,我要去改BUG了,( 逃...&/p&
今天来看我的个人仓库已经有50个了,时间最长的还是,这是我2015年9月在开源世界的处女座,目前还在维护 并乐此不疲。它是一个Java的MVC框架,当时的想法比较简单,摆脱SSH的臃肿,jar包即服务那才爽。在今年的3月份,使用Blade一周左右开发了…
&img src=&/50/v2-fad65dc78e9_b.jpg& data-rawwidth=&1088& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1088& data-original=&/50/v2-fad65dc78e9_r.jpg&&&p&关中是西周、秦、西汉、隋唐的京畿之地,与洛阳(豫西)、殷邺(豫北冀南)、夏晋(晋西南)所在的黄河中游地区一道组成了华夏政治体在上古与中古时期的“关洛核心”,那么本来偏居西陲的关中凭借怎样的优势,方能与位居中州的河洛之地一道,成为西周国家与秦汉唐帝国的核心呢?寒某这次就从历史地理角度,解剖一下关中地区的地缘。&/p&&p&&b&一、关中核心区的东西两部&/b&&/p&&p&渭河及其支流“断陷”而成的关中平原是关中的核心,这一核心自古便区分为两部分:&/p&&p&①以&b&“汧渭之会、岐山之阳”&/b&为核心的西部,这里曾经是周秦两族早期控制秦陇的都城分布区,也是如今陕西方言西府话(中原官话秦陇片)的分布区,在历史上先后以岐山、雍、陈仓、凤翔、宝鸡为此一区之都会。&/p&&p&②以&b&“八水长安、黄河渭口”&/b&为核心的东部,这里曾经是周秦汉隋唐期间政权控制关中、半壁江山乃至整个天下的都城,到了宋元明清则成为控制陕西、陕甘乃至西北的重镇所在,如今是中原官话关中片的分布区,在历史上先后以丰镐、咸阳、长安、同州、西安为此一区之都会。&/p&&p&&br&&/p&&img src=&/v2-66358afe19b4f743dca0c_b.jpg& data-rawwidth=&1088& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1088& data-original=&/v2-66358afe19b4f743dca0c_r.jpg&&&p&&br&&/p&&p&有趣的是,&b&在关中的东西两处都会之间,周原、唐代帝陵、西汉帝陵分布于渭河北岸&/b&,另有少数西汉帝陵(霸陵、杜陵)与秦陵分布在关中东、东南的秦岭余脉旁。大体构成了关中,“东西两都包帝陵”的“帝王谷”样貌。&/p&&p&&br&&/p&&img src=&/v2-fed83d391d034b7a34d39934_b.jpg& data-rawwidth=&1088& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1088& data-original=&/v2-fed83d391d034b7a34d39934_r.jpg&&&p&&br&&/p&&p&更加有趣的是,周秦汉三朝以及隋唐统治集团的前身宇文泰集团无不是通过对关中西府地区的控制,方才进一步掌控关中乃至天下的,那么西府似乎可以看做是上古中古大一统王朝的“龙兴源地”,而东边的西咸则可以看做是上古中古大一统王朝的“阳宅帝都”,夹在东西之间的则是上古中古大一统王朝的“阴宅帝陵”。&/p&&p&&br&&/p&&img src=&/v2-29edde355fe8_b.jpg& data-rawwidth=&1088& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1088& data-original=&/v2-29edde355fe8_r.jpg&&&p&&br&&/p&&p&&b&二、关中的四边险要&/b&&/p&&p&&b&如果说关中平原构成了关中概念的腹心,那么关中的四边险要则构成了关中概念的边界&/b&。&/p&&p&【北】关中平原的北界为陇东陕北的黄土高原南缘。关中通往北方的干道,以发源自黄土高原的渭河支流(洛、泾、汧)下切形成的河谷为主,分别构成了陕北洛川、陇东泾川、秦陇汧川三个大小不等的河谷,由白于山、子午岭(大桥山)、千山、陇山等分水岭与其他地形区相分隔。&/p&&img src=&/v2-c4dfd66ceefcf70d53406c_b.jpg& data-rawwidth=&1088& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1088& data-original=&/v2-c4dfd66ceefcf70d53406c_r.jpg&&&p&&br&&/p&&p&【西】关中平原的西界最为狭窄,为汧渭之会以西的陇山。关中通往西方的干道有三,其一是,顺着渭河河谷而上为陇山南缘的凤阁岭,把守着宝鸡与天水之间的河谷要道;其二是,顺着千河(汧水)而上,经陇县西行入关山草原、张家川、秦安,便是当年秦非子牧马初封之处,也可南下直达天水,北上进入贺兰山麓,甚至直接西进陇中河西。其三,是先南经陈仓道,后西经祁山道而进入天水、陇南的迂回道路。&/p&&img src=&/v2-f27e97e08ed2aade8279b5_b.jpg& data-rawwidth=&1088& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1088& data-original=&/v2-f27e97e08ed2aade8279b5_r.jpg&&&p&&br&&/p&&p&【南】关中平原的南界最为漫长,为秦岭山脉北麓。关中通往南方的干道,由链接关中、汉中甚至陇西、襄宛的秦岭山脉间的险峻谷道构成,主要有陈仓道、褒斜道、傥骆道、子午道、武关道。&/p&&img src=&/v2-b9a995b3ad8e902c25d0bf_b.jpg& data-rawwidth=&1088& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1088& data-original=&/v2-b9a995b3ad8e902c25d0bf_r.jpg&&&p&&br&&/p&&p&【东】关中平原的东界为黄河。关中通往东方的干道,也便与汾渭断陷地貌、中条山、崤函古道一一对应,而主要分为三路:其一是,经黄土高原南缘东行,自龙门津渡河进入汾河下游;其二是,沿渭河北岸东行,自东府同州临晋关渡蒲津进入中条山南北两路的狭义河东地界;其三是,沿渭河南岸东行,经潼关(桃林之塞)进入崤函古道出函谷(泥丸之塞)而入中原。&/p&&img src=&/v2-dd1bc68a0db5aafbadd22b2_b.jpg& data-rawwidth=&1088& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1088& data-original=&/v2-dd1bc68a0db5aafbadd22b2_r.jpg&&&p&&br&&/p&&p&所谓关中四塞,大抵便是分布在上述四边中的某些重要通道上的:&/p&&p&&b&北·萧关&/b&:在秦时位于泾河支流马莲河上游,在汉时则位于泾河干流上游与陇山边。汉萧关直接控厄了关中通过泾川、汧川进出贺兰山麓乃至陇中河西的命门&/p&&p&&b&西·散关&/b&:散关位于陈仓道口,陈仓道较早发现且通行条件好,既是直达汉中西边的要道,又是迂回甘南、陇西的要道,一关而控三方。&/p&&p&&b&南·武关&/b&:武关位于商洛地区的秦岭东段之中,是关中与“华夏地缘旋转门”襄宛盆地的必经之路,通过武关抵达襄阳或宛城,可以进一步通达荆楚、河洛、淮泗甚至汉中,间接可控四方。&/p&&p&&b&东·潼关&/b&:潼关往往需要与黄河津渡共同形成一个防御体系方能发挥最有效的攻守作用。潼关恰好处于北方龙门津、蒲津,东方风陵渡、茅津之间,是整个防御体系的重心,控制了潼关及其周边津渡,对于关中政权而言,便可有效控制河东与河洛。&/p&&img src=&/v2-6fe69e1af0bd_b.jpg& data-rawwidth=&1088& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1088& data-original=&/v2-6fe69e1af0bd_r.jpg&&&p&&br&&/p&&p&&b&三、关中的周边地缘&/b&&/p&&p&关中周边,北方为“北上”之地(北地上郡)陕北陇东,西方为“西进”之地陇西河湟,南方为“南下”之地秦巴山区,东方则为“逐鹿”之地河东河洛。&/p&&p&北上陕北陇东,则直达塞外漠南,典型战例如汉唐北宋与漠南势力的攻守;&/p&&img src=&/v2-7ea04ba9904_b.jpg& data-rawwidth=&1088& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1088& data-original=&/v2-7ea04ba9904_r.jpg&&&p&&br&&/p&&p&西进陇西河湟,则通联河西西域,典型战例如汉唐、前后秦对河西西域的征讨;&/p&&img src=&/v2-410ecfcef_b.jpg& data-rawwidth=&1088& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1088& data-original=&/v2-410ecfcef_r.jpg&&&p&&br&&/p&&p&南下秦巴山区,则经略巴蜀江汉,典型战例如西魏的攻取巴蜀江汉;&/p&&img src=&/v2-70ef99ff5a072b4c98eb3_b.jpg& data-rawwidth=&1088& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1088& data-original=&/v2-70ef99ff5a072b4c98eb3_r.jpg&&&p&&br&&/p&&p&东进河洛河东,则逐鹿关东中原,典型战例如周秦汉唐的混一战争与蒙元灭金之战;&/p&&img src=&/v2-d3dd89bedb51b28ce8c9_b.jpg& data-rawwidth=&1088& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1088& data-original=&/v2-d3dd89bedb51b28ce8c9_r.jpg&&&p&&br&&/p&&p&&b&四、关中战略地位的流变&/b&&/p&&p&周秦之际的关中号称天府之国,并因此而支撑了秦汉时期的关西政权与关东诸国的对峙与兼并,然而随着都会之重带来的人口集中,以及魏晋南北朝的长期战乱,关中在汉唐之际逐渐失去了天府之国的地位,而不得不在隋唐时期开始依赖大运河的运输方能供养庞大的京畿官民需求。再加上黄土高原水土流失加重与唐末五代的战乱破坏,关中与河洛一道,失去了华夏帝国核心的地位。&/p&&img src=&/v2-5edbeb04cb74d9b99398f0b_b.jpg& data-rawwidth=&1088& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1088& data-original=&/v2-5edbeb04cb74d9b99398f0b_r.jpg&&&p&&br&&/p&&p&宋元明清构成的华夏帝国后一千年,军政经文中心一道东移,军政东北移,经文东南飞。与此同步,塞外政权的重心也从漠南向东北地区东移,西北方面来敌不如东北方面来敌更加能够威胁帝国秩序(金灭辽、蒙灭金、清灭明),关中也便不再是前一千年里拳打四方的京畿重地,只得屈居控厄西北的西部重镇地位。&/p&&img src=&/v2-f24cad3fbedede_b.jpg& data-rawwidth=&1096& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1096& data-original=&/v2-f24cad3fbedede_r.jpg&&&p&&br&&/p&&p&然而,世异则事异,事异则备变,西部开发与丝路经济的和平开发与穆斯林世界的动乱相伴而来,控厄关中,以经略好西北一路的国土便显得越发重要。注入现代经济动力的关中,其战略地位又相对于上一千年的长期靠边站而有所回升。&/p&&p&本文为寒砚笔记的&b&读史舆地&/b&系列文章,本系列文章还有:&/p&&p&&a href=&/p/& class=&internal&&【读史舆地】晋省的表里山河与关津陉口&/a&&/p&&p&下一步计划,将如下两篇回答,改编成本系列文章:&/p&&p&&a href=&/question//answer/& class=&internal&&在冷兵器时代,幽云十六州真的有那么重要吗?&/a&&/p&&p&&a href=&/question//answer/& class=&internal&&陕北古代地缘与交通地位如何重要?&/a&&/p&&p&&b&相关Live:&a href=&/lives/179712& class=&internal&&如何结合地图提升读史转化率&/a&&/b&&/p&&p&本文已同步发布于寒某微信订阅号:&b&寒砚笔记&/b&,与寒某同名头条号:&b&寒鲲&/b&&/p&&p&&b&习惯微信或头条阅读的朋友可以移步关注哦2333&/b&&/p&
关中是西周、秦、西汉、隋唐的京畿之地,与洛阳(豫西)、殷邺(豫北冀南)、夏晋(晋西南)所在的黄河中游地区一道组成了华夏政治体在上古与中古时期的“关洛核心”,那么本来偏居西陲的关中凭借怎样的优势,方能与位居中州的河洛之地一道,成为西周国家与…
&blockquote&谷歌地图上有很多的坐标,看起来很不可思议,确又是无法反驳。&br&&br&不断更新中!!!!&/blockquote&&img src=&/efcfd6801acdee49b9fdcb8_b.png& data-rawwidth=&575& data-rawheight=&482& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&/efcfd6801acdee49b9fdcb8_r.png&&&img src=&/ab8feea8d241cd7b03e33ad_b.png& data-rawwidth=&575& data-rawheight=&482& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&/ab8feea8d241cd7b03e33ad_r.png&&&img src=&/bc9d1b577ba_b.png& data-rawwidth=&575& data-rawheight=&483& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&/bc9d1b577ba_r.png&&&img src=&/80ecffe751cf2aa7407f_b.png& data-rawwidth=&575& data-rawheight=&483& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&/80ecffe751cf2aa7407f_r.png&&&img src=&/7a7c8cf09b43b9a3f5a18e_b.jpg& data-rawwidth=&575& data-rawheight=&483& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&/7a7c8cf09b43b9a3f5a18e_r.jpg&&&img src=&/2d0efb70565fef9b5eabb_b.jpg& data-rawwidth=&1057& data-rawheight=&682& class=&origin_image zh-lightbox-thumb& width=&1057& data-original=&/2d0efb70565fef9b5eabb_r.jpg&&&img src=&/784efa893d75be03af11687b_b.png& data-rawwidth=&575& data-rawheight=&485& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&/784efa893d75be03af11687b_r.png&&&blockquote&下面是一些坐标,大家可以试试。&br&&br&比尔盖茨的豪宅: 47°37'37.71&N,122°14'33.26&W&br&大标语“仗怎么打,兵怎么练!”: 43°45'19.10&N, 87°40'4.90&E&br&老外也搞大标语&Go Wings!&: 42°10'29.19&N, 83°11'41.36&W&br&断桥: 25°55'46.42&N,80°7'49.58&W &br&马戏团: 45°30'26.40&N 73°32'52.94&W&br&大堡礁: Great Barrier Reef 18°21'04.58&S,146°47'58.81&E&br&撞机事件: 51°52'17.78&N,0°34'0.13&W&br&乍得超高分辨率绿洲: 15 17'54.35&n 19 25'46.38''e &br&50米长的恐怖怪虫: 48°51'28.33N 10°12'18.66E &br&一群河马: 28°19'18.43&s 32°24'30.16E &br&大三角图案: 37°39'56.22&N116° 1'30.90&W &br&白宫: 38°53'23.90&N 77°00'32.60&W &br&五角大楼: 38°52'15.39&N 77°03'22.02&W &br&美国核设施: 37°50'38.81&N116°43'53.01&W&br&戴维斯空军基地: 32°9'57.52&N,110°51'17.58&W&br&北韩核反应堆: 40° 5'42.20&N,128°20'26.91&E&br&怀特曼空军基地: 38°43'40.89&N 93°33'21.58&W &br&俄国的核潜艇: 42.N, 132.E &br&俄国SU-27基地: 50°36'8.91&N 137° 4'47.63&E &br&&br&成都飞机公司 新歼: 30°42'17.16& N 103°57'21.71& E &br&西昌卫星发射基地: 28°14'22.38& N 102°01'28.95& E &br&清泉岗空军基地1:1模型: 40°23'04.16&N 99° 53'50.63&E &br&空三师27: 31°23'37.25&N,118 24'58.22&E &br&三亚虎头湾: 18 10'41.10&n 109 34'51.81&e &br&空36师 大场: 34 22'19& n 109 07'10&e &br&凤凰山陆航基地及陆军轻武器射击场: 30°43'50.99&N 104°05'26.16E &br&八达岭: 40°21'15.41&N,116°00'24.21&E&br&凯旋门: 48°52'26.79&N,2°17'42.66&E&br&凡尔赛宫: 48°48'17.76&N,2° 7'18.24&E&br&巴黎圣母院: 48°51'11.39&N,2°20'56.95&E&br&卢浮宫: 48°51'39.74&N,2°20'9.26&E&br&巴黎埃菲尔铁塔: 48°51'29.54&N,2°17'40.19&E&br&自由女神像: 40°41'21.48&N,74° 2'40.38&W&br&世贸中心双子星大厦遗址: 40°42'42.19&N 74°00'44.45&W &br&帝国大厦: 40°44'54.74&N 73°59'10.88&W&br&红场和克里姆林: 55°45'08.86&N 37°37'23.05&E &br&三峡 30°50'45&N 111°01'27&E &br&泸定铁索桥 29°54'52.39&N 102°13'48.61&E&br&卫国戍边: 39°41'44.94&N, 73°55'40.55&E&br&祖国在我心中: 39°41'42.55&N, 73°55'34.37&E&br&严格要求严格训练: 45° 6'56.73&N, 82°31'32.44&E&br&卫国戍边以卡为家: 45°22'3.47&N, 90°34'23.67&E&br&苦练精兵: 43°43'45.72&N, 87°40'12.59&E&br&仗怎么打 兵怎么练: 43°45'19.85&N, 87°40'6.22&E&br&只争朝夕: 42°39'34.40&N, 94°16'4.27&E&br&毛主席万万岁: 42°39'20.78&N, 94°10'0.58&E&br&为人民服务: 42°32'29.11&N, 94°19'34.62&E&br&排除万难去争取胜利: 42°27'15.00&N, 94° 8'48.36&E&br&向斗争中学习: 42°27'36.56&N, 94°14'27.76&E&br&这是青藏铁路在高原上的一段: 31° 5'55.90&N, 91°39'58.34&E&br&这是青藏铁路在高原上的另外一段:30°47'35.19&N, 91°36'38.53&E&br&青藏铁路格尔木东站: 36°25'8.48&N, 94°55'23.15&E&br&青藏铁路格尔木站: 36°23'0.22&N, 94°54'21.68&E&br&青藏铁路一隧道入口: 35°41'7.14&N, 94° 2'56.92&E&br&青藏铁路楚玛尔河沿: 35°18'41.27&N, 93°18'46.14&E&br&青藏铁路尚未开工的路段: 32°18'52.87&N, 91°43'44.59&E&br&青藏铁路一桥梁: 33°43'13.57&N, 92° 5'38.60&E&br&&br&最后放一张地球的照片,你敢信?&br&&img src=&/b516b9eff54add0d04fc_b.jpg& data-rawwidth=&575& data-rawheight=&575& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&/b516b9eff54add0d04fc_r.jpg&&&br&坐标:120°19'45.61&E,22°45'26.68&N&br&解释:仔细看。&img src=&/c6cba217ca8f772c25126fd_b.png& data-rawwidth=&981& data-rawheight=&641& class=&origin_image zh-lightbox-thumb& width=&981& data-original=&/c6cba217ca8f772c25126fd_r.png&&&br&坐标:40°5 42.20 N128°20 26.91 E&br&解释:朝鲜的核反应堆!!&br&&img src=&/1771efe5e6dbc5bccdd890f_b.png& data-rawwidth=&998& data-rawheight=&644& class=&origin_image zh-lightbox-thumb& width=&998& data-original=&/1771efe5e6dbc5bccdd890f_r.png&&&/blockquote&
谷歌地图上有很多的坐标,看起来很不可思议,确又是无法反驳。 不断更新中!!!!下面是一些坐标,大家可以试试。 比尔盖茨的豪宅: 47°37'37.71"N,122°14'33.26"W 大标语“仗怎么打,兵怎么练!”: 43°45'19.10"N, 87°40'4.90"E 老外也搞大标语"Go W…
&p&此文会根据评论区提醒,实时修改错误。&/p&&p&————————————正文—————————————&/p&&p&前几天看到这个问题了,所以开始画了一系列地图,可以发布成果了。&/p&&br&&p&1. 关宁锦防线&/p&&img src=&/v2-d231e630ef2a2cebf6e8a4a_b.png& data-rawwidth=&939& data-rawheight=&670& class=&origin_image zh-lightbox-thumb& width=&939& data-original=&/v2-d231e630ef2a2cebf6e8a4a_r.png&&&p&由锦州,宁远(今辽宁兴城),山海关组成,依次分布于辽西走廊上。西边是辽西的崇山峻岭,东边就是渤海,一夫当关万夫莫开。山海关作为最后一道防线至关重要,从地图上就可以看出,过了山海关就是华北平原了,可以直达北京或一路南下。&/p&&p&这里插一句,其实对于防御清军来说,只有山海关是有用的,宁远和锦州就是个摆设,具体原因看下一张图就知道了。&/p&&p&参考战例:松锦大战,宁远大捷, 宁锦大捷,辽沈战役&/p&&br&&p&2. 古北口和喜峰口&/p&&img src=&/v2-6ac5ea6278cb4faf10c1_b.png& data-rawwidth=&934& data-rawheight=&655& class=&origin_image zh-lightbox-thumb& width=&934& data-original=&/v2-6ac5ea6278cb4faf10c1_r.png&&&p&燕山山脉中的两个重要关口,和山海关一起成为了辽东进入北京的三条主要道路上的屏障,相比起山海关来,由于都是山地中的道路,所以行军不如前者方便。&/p&&p&看到这里你也明白前面说宁远和锦州是摆设的原因了,因为自清军吞并漠南蒙古诸部之后,版图向西大大延伸,本来处在蒙古控制之下的地区现在也纳入了自己的版图,进攻明朝的道路有了更多的选择,所以不必死磕关宁锦防线了。所以自己巳之变清军尝到甜头之后,先后总计六次通过这两条道路入塞抢劫,给华北平原带来空前浩劫,加速了明朝的灭亡。&/p&&p&参考战例:清兵入塞,己巳之变,庚戌之变&/p&&br&&p&&a href=&/question//answer/& class=&internal&&历史上有哪些国家是被自己「作」死的?它是如何做到的? - 知乎&/a&
我这个回答详细讲述了关宁锦防线和明朝灭亡的关系,有兴趣的可以看看。&/p&&br&&p&3. 居庸关&/p&&img src=&/v2-af16822cabf86c8e29b2bf6e4894fae2_b.png& data-rawwidth=&1307& data-rawheight=&719& class=&origin_image zh-lightbox-thumb& width=&1307& data-original=&/v2-af16822cabf86c8e29b2bf6e4894fae2_r.png&&&p&北京的北大门,处在太行山脉的山谷中,军都径上的一道屏障,其重要性不言而喻,防御着西北方来的敌人。当年土木堡之变就发生在离居庸关不到100公里的地方。&/p&&p&参考战例:土木堡之变&/p&&br&&p&4. 倒马关和紫荆关&/p&&img src=&/v2-5c330fa30dfdc4ecf108de5f7e2fa725_b.png& data-rawwidth=&600& data-rawheight=&351& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-5c330fa30dfdc4ecf108de5f7e2fa725_r.png&&&p&太行山脉中很重要的两个关口,也是位于草原游牧民族入侵的主要路线上,穿过这两个关口,翻过太行山脉,就可以往北京进军了。&/p&&p&参考战例:成吉思汗分兵内外夹击紫荆关的金军,土木堡之变&/p&&br&&p&居庸关、倒马关和紫荆关统称为“内三关”。&/p&&br&&p&5. 宣府与张家口&/p&&img src=&/v2-f3fab2c5f0f15ba_b.png& data-rawwidth=&890& data-rawheight=&565& class=&origin_image zh-lightbox-thumb& width=&890& data-original=&/v2-f3fab2c5f0f15ba_r.png&&&p&宣府和张家口一起组成了北京的北大门,主要防御从草原上来的敌人。&/p&&p&参考战例:野狐岭之战&/p&&br&&p&6. 大同&/p&&img src=&/v2-a7bbd2fa24ed8b4fbfed_b.png& data-rawwidth=&836& data-rawheight=&615& class=&origin_image zh-lightbox-thumb& width=&836& data-original=&/v2-a7bbd2fa24ed8b4fbfed_r.png&&&p&位于大同盆地,既是通往草原的桥头堡,也和宣府一起保卫北京免受游牧民族的侵略。从地形图上可以看出,它处在一个交通要道上,通过大同向南可以继续攻打雁门关,沿桑干河河谷往西可以进攻宣府。&/p&&p&参考战例:白登山之围&/p&&br&&p&宣大地区处于和游牧民族作战的第一线,有兴趣的可以看一下《明史》,列传第九十九,马永、梁震、王效、周尚文、马芳。这几个人都是嘉靖时期宣大地区抗蒙古的名将,他们的传记都是描述和蒙古军队作战的,对手主要是吉囊和俺答等鞑靼部首领。&/p&&br&&p&7. 雁门关&/p&&img src=&/v2-51d4f4c9aac9bbba6f62e08a8414ab06_b.png& data-rawwidth=&1006& data-rawheight=&667& class=&origin_image zh-lightbox-thumb& width=&1006& data-original=&/v2-51d4f4c9aac9bbba6f62e08a8414ab06_r.png&&&p&位于恒山之中,控制着连接大同盆地和太原盆地的要道。通过雁门关后往南就是太原,往东可以抵达平型关。&/p&&p&参考站例:雍熙北伐(杨业在雁门关外战死),应州大捷&/p&&br&&p&8. 偏关和宁武关&/p&&img src=&/v2-dd0d14c63bcadb187162dc_b.png& data-rawwidth=&1556& data-rawheight=&786& class=&origin_image zh-lightbox-thumb& width=&1556& data-original=&/v2-dd0d14c63bcadb187162dc_r.png&&&p&宁武关位于吕梁山中,在季节性的恢河旁,是图中三座关口中战事最频繁的一座关口 。偏关位于黄河边(老牛湾,很著名的景点),只有当冬季黄河结冰,北方的游牧民族才可越过黄河攻打偏关。图中连接雁门关、宁武关和偏关的线就是长城的大致走向。&/p&&p&参考战例:宁武关之战(周遇吉VS李自成)&/p&&br&&p&雁门关、宁武关和偏关统称为“外三关”。&/p&&br&&p&9. 平型关&/p&&img src=&/v2-bcbb8cf95fe00248cace1f1_b.png& data-rawwidth=&1034& data-rawheight=&653& class=&origin_image zh-lightbox-thumb& width=&1034& data-original=&/v2-bcbb8cf95fe00248cace1f1_r.png&&&p&位于恒山和五台山之间,地势险要,控制着太原和华北之间的交通要道,过了平型关,就可以经灵丘和飞狐峪进而攻打紫荆关。&/p&&p&参考战例:平型关大捷&/p&&br&&p&10. 太原&/p&&img src=&/v2-aa76a7ba05c6cce4ec39ff_b.png& data-rawwidth=&1012& data-rawheight=&690& class=&origin_image zh-lightbox-thumb& width=&1012& data-original=&/v2-aa76a7ba05c6cce4ec39ff_r.png&&&p&位于太原盆地,往东可以抵达娘子关。&/p&&p&参考战例:金军南下攻宋&/p&&br&&p&11. 临汾&/p&&img src=&/v2-f3520536becc1bf27ee2f549cedfca3c_b.png& data-rawwidth=&1380& data-rawheight=&665& class=&origin_image zh-lightbox-thumb& width=&1380& data-original=&/v2-f3520536becc1bf27ee2f549cedfca3c_r.png&&&p&关中及太原通道上的城池,往哪边打都行。&/p&&br&&p&12. 娘子关&/p&&img src=&/v2-c5b0cfb257eec79103a8d_b.png& data-rawwidth=&957& data-rawheight=&550& class=&origin_image zh-lightbox-thumb& width=&957& data-original=&/v2-c5b0cfb257eec79103a8d_r.png&&&p&连接太原和真定,位于翻越太行山脉的主要路径上。&/p&&p&参考战例:杨延昭镇守的三关之一&/p&&br&&p&13. 潼关和函谷关&/p&&img src=&/v2-d9c367ef1cf3e2030ffde_b.png& data-rawwidth=&1124& data-rawheight=&556& class=&origin_image zh-lightbox-thumb& width=&1124& data-original=&/v2-d9c367ef1cf3e2030ffde_r.png&&&p&位于中条山、华山、崤山之间的谷地上,靠近黄河边,地势险要,是关中平原和长安的东大门,防御者从中原来的敌人。秦军就是在函谷关拒六国兵马的。&/p&&p&参考战例:秦函谷关拒六国&/p&&br&&p&14. 汉中及散关&/p&&img src=&/v2-e7e360e1beda5c7cb11897_b.png& data-rawwidth=&1114& data-rawheight=&555& class=&origin_image zh-lightbox-thumb& width=&1114& data-original=&/v2-e7e360e1beda5c7cb11897_r.png&&&p&汉中通往关中平原的主要道路就要经过散关和宝鸡,所以散关是控制秦岭交通要道的重要关口。还有一条非主流路线就是子午谷了,不如前者便利,风险巨大,当年高迎祥就企图通过子午谷进攻关中,结果在黑水峪被孙传庭痛击。&/p&&p&参考战例:“明修栈道,暗度陈仓”,吴阶、吴璘打败完颜宗弼,曹真击败诸葛亮&/p&&br&&p&15. 幽云十六州的范围图&/p&&img src=&/v2-1b75e4e9d8d514ebcee2ba_b.png& data-rawwidth=&1320& data-rawheight=&658& class=&origin_image zh-lightbox-thumb& width=&1320& data-original=&/v2-1b75e4e9d8d514ebcee2ba_r.png&&&p&大致就是山西北部和华北平原北部及燕山山脉的一部分。&/p&&p&可以看出,前文介绍的大部分重要关口都在幽云十六州,南边就是大片的平原,开封坐落在这片平原上,除了少数河道外几乎无险可守。北宋就是在这样糟糕的环境下立国的,可以说是没有国防的。&/p&&p&幽州:今北京
顺州:今北京顺义&/p&&p&儒州:今北京延庆
檀州:今北京密云&/p&&p&蓟州:今天津蓟州区
涿州:今河北涿州&/p&&p&瀛州:今河北河间
莫州:今河北任丘北&/p&&p&新州:今河北涿鹿
妫州:今河北怀来&/p&&p&武州:今河北宣化
蔚州:今河北蔚县&/p&&p&应州:今山西应县
寰州:今山西朔州东&/p&&p&朔州:今山西朔州
云州:今山西大同&/p&&br&&p&16. 襄阳&/p&&img src=&/v2-fd908bb8f47cc_b.png& data-rawwidth=&1273& data-rawheight=&664& class=&origin_image zh-lightbox-thumb& width=&1273& data-original=&/v2-fd908bb8f47cc_r.png&&&p&秦岭--淮河分界线不但是中国的南北分界线,而且一起组成了抵御北方政权侵略的天然屏障。黄河在冬天会结冰,军队可以借此越过黄河南下进攻,但是淮河冬天不会,可以阻止不善水军的北方军队。所以在宋金战争中,金军虽然初期势如破竹,当推进到秦岭--淮河线时也停下了脚步。但是,从图上可以看出,秦岭和淮河并不是连接在一起的,中间有个缺口,而襄阳就坐落在这个缺口上,由此成为了南宋最为重要的战略中心。其实金军和伪齐政权在初期是占领过襄阳的,多亏了岳飞通过一系列战役(岳飞收复襄阳等六郡之站)最终收复了襄阳。随着吴阶、吴璘在川陕战场站稳了脚跟,南宋的秦岭--襄阳--淮河防线构筑完毕。这条防线坚持了130多年,直到咸淳九年被元军攻下。襄阳城破,南宋的国防被撕开了一个口子,10多年后就亡了。&/p&&p&不单单是战略上,襄阳本身也是个很重要的交通要道&/p&&img src=&/v2-2de8a51cd863ac598a3a43_b.png& data-rawwidth=&1267& data-rawheight=&583& class=&origin_image zh-lightbox-thumb& width=&1267& data-original=&/v2-2de8a51cd863ac598a3a43_r.png&&&p&往南可以抵达武汉、荆州,往北可以去中原,往西可以进入关中和汉中,如此便捷的交通优势是它成为兵家必争之地的一个原因。&/p&&br&&p&17. 河套平原,不是一个重镇,而是一个重要的军区&/p&&img src=&/v2-c3af933c4585fdc17864a_b.png& data-rawwidth=&1226& data-rawheight=&765& class=&origin_image zh-lightbox-thumb& width=&1226& data-original=&/v2-c3af933c4585fdc17864a_r.png&&&p&红线和黄河围成的地区就是河套平原。北部是阴山山脉,西部是腾格里沙漠,南部是库布齐沙漠。因为有黄河穿过,所以在这里形成了农业灌溉区,以水草丰美著称, 民谚曰:“黄河百害,唯富一套” 。&/p&&p&河套平原对于游牧民族的意义就相当于台湾对于美国的意义,即发起进攻的桥头堡。占据了河套,游牧民族军队就不需要通过茫茫大漠来运送补给,物资及水源可以直接从河套的农业区获取,极大地方便了后勤。这一点在明朝中期得到了验证,自小王子(达延汗)统一了漠南蒙古诸部之后,就开始经营河套,一直到俺答汗时期正式站稳了脚跟,明朝北部的边患就日益严重了起来,嘉靖时期“南倭北虏”的“北虏”就是始于此。&/p&&p&当然,中原王朝强大的时候也会尽力夺取这块地区,如蒙恬指挥的“ 秦攻匈奴之战 ”,攻占“河南地”,指的就是河套平原,从此“胡人不敢南下而牧马”。&/p&&br&&p&18. 太行八陉&/p&&img src=&/v2-a238ebc8863ddb8f013cf_b.png& data-rawwidth=&964& data-rawheight=&630& class=&origin_image zh-lightbox-thumb& width=&964& data-original=&/v2-a238ebc8863ddb8f013cf_r.png&&&p&燕山山脉和太行山脉一般就是以军都陉为分界的。&/p&&br&&p&19. 河西走廊及河西四郡&/p&&img src=&/v2-b411f61c16325cbc872e_b.png& data-rawwidth=&1630& data-rawheight=&716& class=&origin_image zh-lightbox-thumb& width=&1630& data-original=&/v2-b411f61c16325cbc872e_r.png&&&p&北部是巴丹吉林沙漠和腾格里沙漠,南部是祁连山脉,祁连山脉的冰川融雪在山脚下形成了一片带状的绿洲,连接新疆和中原。 西汉元狩二年(前121),汉武帝派骠骑将军霍去病出陇右击匈奴,使整个河西纳入西汉版图。在陇西郡和北地郡基础上,增设河西四郡 ,武威、张掖、酒泉、敦煌,以此来保卫这条交通要道。甘肃省的名字也是来源与其中的两个郡,即张掖的甘州,酒泉的肃州。嘉峪关是明长城最西段的关口。图中画出的红线就是G30连霍高速。&/p&&br&&p&20. 四川盆地及剑门关&/p&&img src=&/v2-51e1a41fb7e1a63dfeae3437ed8efda7_b.png& data-rawwidth=&1173& data-rawheight=&589& class=&origin_image zh-lightbox-thumb& width=&1173& data-original=&/v2-51e1a41fb7e1a63dfeae3437ed8efda7_r.png&&&p&东边是巫山,西边是青藏高原,南边是云贵高原,北边是大巴山。进川道路主要就上面三条。一条是经长江三峡到重庆再去成都,长江中上游水流应该挺急的,古代坐船去估计挺危险。一条是汉中到巴中再入川,这条路就是今天的G85高速。还有就是汉中经剑门关(今剑阁县)到成都的,也就是“蜀道难”中的“蜀道”, “剑阁峥嵘而崔嵬”描述的就是剑门关。这条路就是今天的G5高速,我查了一下图片,好像是挺难的。至于参考战例,大家去搜吴阶(和他弟弟吴璘)这个人就行了,南宋和岳飞齐名的抗金名将,三代守蜀,川陕战场就是靠他守住的。另外三国时期这个地方故事也不少,就不举例了。&/p&&br&&p&21. 安庆&/p&&img src=&/v2-8cba27b183d277d41c5c5e29be3148fa_b.png& data-rawwidth=&1375& data-rawheight=&673& class=&origin_image zh-lightbox-thumb& width=&1375& data-original=&/v2-8cba27b183d277d41c5c5e29be3148fa_r.png&&&p&这是个占据水运要道的极佳案例。安庆之所以能成为南京的门户,就是因为处在南京的上游,由此控制了通过水运运往南京的物资。想要攻打南京就必须先打下安庆,如果绕过安庆的话,那么后勤补给只能通过陆运,效率肯定比不上顺流而下的水运,而且南京城向来皮糙肉厚,一时半会儿打不下来的话就会成为消耗战,南京的物资可以轻轻松松从安庆经长江获取,时间一长陆运的肯定坚持不住。而一旦攻占了安庆,那么就可以夺取本属于对方的水运优势,一下子实现了逆转,打下南京也就指日可待了。&/p&&p&参考战例:陈玉成安庆保卫战,曾国荃攻占天京(南京)&/p&&br&&p&22. 虎牢关&/p&&img src=&/v2-1caca697fb79cfcd9ab2725_b.png& data-rawwidth=&1732& data-rawheight=&764& class=&origin_image zh-lightbox-thumb& width=&1732& data-original=&/v2-1caca697fb79cfcd9ab2725_r.png&&&p&北抵黄河,南靠嵩山,是洛阳的东大门。最有名的战役就是李世民击败窦建德和王世充的虎牢关之战。图中李世民的进攻路线我不太确定,欢迎指正。&/p&&br&&p&23. 上党地区&/p&&img src=&/v2-ced5afc882ad0871cdb42_b.png& data-rawwidth=&924& data-rawheight=&516& class=&origin_image zh-lightbox-thumb& width=&924& data-original=&/v2-ced5afc882ad0871cdb42_r.png&&&p&上党地区由长治盆地和泽州盆地组成,被太行山脉和太岳山脉夹在中间,南边是王屋山。往南出太行山可以攻击经黄河沿岸进入中原的军队,往西出太岳山脉可以前往关中,往东翻越太行山脉可以进去中原,往北就是晋中盆地,是十字路口式的交通要道。&/p&&p&战国时韩国上党郡郡守冯亭把上党郡献给赵国,想借助赵国之力对抗秦国,由此爆发了秦赵之间长达两年的战争,最终秦军在长平歼灭赵军主力,占据上党。可以看出上党往东翻越太行山脉就可以抵达赵国国都邯郸,所以素有“得上党而望中原”之说。图中标出的两条路就是由关中进入上党的路线,即当年长平之战秦军包抄赵军的路线。&/p&&br&&p&24. 长城线路图&/p&&p&以前在教材及相关书籍上看到长城的地图总是觉得非常奇怪,弄不明白它为什么是这样走的,现在配合地形图就一目了然了。上面的关口及地形前文都已介绍,这里就不细说了。&/p&&p&值得注意的是,长城在居庸关分成两道,北部的是外长城,也叫边墙,南部的是内长城,叫次墙,内外长城围成的部分就是前文所介绍的“幽云十六州”的西半部分。&/p&&img src=&/v2-836f2d64af2eea30fe7a_b.png& data-rawwidth=&1678& data-rawheight=&734& class=&origin_image zh-lightbox-thumb& width=&1678& data-original=&/v2-836f2d64af2eea30fe7a_r.png&&&br&&p&徐州及南方的部分大家去看 &a class=&member_mention& href=&///people/bba286bea1a3dd4efa0e6& data-hash=&bba286bea1a3dd4efa0e6& data-hovercard=&p$b$bba286bea1a3dd4efa0e6&&@从容淡定&/a& 的,他写的挺完善的,我确实不太熟悉南方部分。&/p&&br&&p&地形图是截取腾讯地图的,想看全图的直接上腾讯地图看。&/p&
此文会根据评论区提醒,实时修改错误。————————————正文—————————————前几天看到这个问题了,所以开始画了一系列地图,可以发布成果了。 1. 关宁锦防线由锦州,宁远(今辽宁兴城),山海关组成,依次分布于辽西走廊上。西边是辽西…
这几天比较忙。加个插曲。&br&
前两天面试了一个四年工作经验的Java工程师,挺失望的。工作换了四五家,大多浅尝则止,基础太差了。面试别人,一般基于其项目经历和简历的技能栈交流。没想到,这次交流成了授课了。“大处着眼,小处落手”,一个技术人员既要具备技术视野,也要理解技术细节。&br&&br&比较有感触的有下面几个问题。首先,我问了一个很多人平时意识不到的问题:一个.java文本文件,是如何运行起来的?本来是想检查下对Jave程序语言的运行机制的理解。如果回答可以就可以切入到虚拟机和java程序性能调优。没想到大失所望,该同学对此几乎没有概念。接下来,我问,HashMap的内部实现,不清楚,key是否可以是null,不知道。让其写一个简单的栈Stack类,实现基本的存取功能,我把结构都写了,让他下笔,写不出来。本来是考察对基本数据结构的理解,可能的话切入内存泄露。&br&&br&
到此,我已经基本确认该同学之前基本不写代码了。但他应聘的是中高级工程师,本着负责的态度。该问的还得继续。看项目经历吧,有个做OA系统的经验,熟悉Jbpm,看简历写着熟悉设计模式。好吧,我问:如果让你设计一个简单的流程引擎,你怎么设计,大概会用到什么设计模式。我想着,怎么着,你也应该知道责任链模式和观察者模式吧,退一步讲,一个好的系统,工厂模式、建造者模式不可能没有。对方一脸懵逼,说,没去了解过。说实在的,当时真的是有点不耐烦了。&br&&br&看到简历有mybatis技能,问动态sql拼装有哪些常用标签,回答差强人意。问得深一点:平时使用mybatis基本都是使用接口声明,然后注入直接调用接口方法,即可完成数据库操作。有没有疑惑过,为什么没看到实现该接口的类,就可以调用方法。要知道接口是不能实例化的。本意是考察对代理类生成(代理模式)的理解,不出所料,完全没有概念。随后简单问了下数据库,居然不知道索引是一棵树,,,&br&&br&随后草草收场。&br&&br&简单描述本次面试经历,我是觉得该面试者是一个典型。“大处着眼”,他不知道技术和框架出现的背景是什么,技术视野窄,不知道用什么技术解决实际问题,也没有关心前沿技术(分布式、服务化、大数据);“小处着手”,他没有探究内部原理的好奇心和意识,小一点说连“点进去JDK类的实现方法”的欲望都没有。&br&&br&我不知道这样技术深度和广度都没有的水平,怎么能实现他所说的“三年成为一个优秀的架构师”的愿望。&br&&br&感慨万千啊。&br&&br&###&br&多线程和虚拟机。实际工作中,大部分程序员可能几乎不用,但这两项技能是你面试所谓高级工程师的敲门砖,也是你在机会到来的时候能否顶上去的弹药库。很多人,把这两部看的太高深,望而却步,我觉得一个重要原因就是大部分博客和书籍写的太差,只讲结果不谈背景。比如,讲到虚拟机,上来就以hotspot为例,内存模型,各种分区、回收算法;讲到多线程,上来就各种synchronized关键字、各种锁、线程池怎么用。新手看到就蒙了。要知道,一切技术的出现都是有背景的。所有技术的出现都是基于计算机原理和体系结构的。为了解决特定问题,人们基于计算机理解的语言才创造了各种解决问题的方法,也就是说这些解决方案不过是践行某种思想的一种体现罢了。&br&&br&
先说虚拟机,我们都知道Java程序运行在虚拟机上,虚拟机又和操作系统打交道,最终通过二进制指令操纵电子电路运行。完成数据的读取,存储,运算和输出。&br&
虚拟机在加载.class文件的时候,会在内存开辟一块区域“方法区”,专门用来存储类的基本信息,同时在“堆”区为这些类生成一个Class对象,作为类的“镜像”或“模具”,为反射提供基础。程序运行过程中,对象不断的生成和死亡,有的朝生暮死(大多数对象都这样,最常见的是方法内部生成的临时对象),有的壮年而亡,有的长命百岁,有的长生不死除非世界毁灭(虚拟机关闭,典型的如servlet)。对象生要吃喝,死了得埋,所以虚拟机就不停的申请内存、回收内存。对象的生成方法很多,new、反射等,对象回收的方法也有很多,这就是GC,标记-清除、复制、标记-整理等等。&br&&br&垃圾回收,顾名思义,得确定垃圾是什么、在那里、如何回收。对象的生命周期不同,回收的方法不一样。假如让你设计垃圾回收,你该怎么做?大多数人都会想到,后台启动一个线程,隔一段时间(或达到某种状态,去堆用掉了80%),扫描垃圾对象,然后清除,然后继续执行原来的程序(串行收集器)。恭喜你,你也可以设计虚拟机了。但不幸的是,情况往往比你想象的复杂。效率、安全性、对原程序的影响,都是你要考虑的。人们最先发现,对象生命周期不同,用同一种GC方法,实在是效率差,怎么办?就如hotspot的方案,堆区根据对象生命周期不同,分成了Eden、Survivor0、Survivor1和Old区。每个区采用了不同的清理算法。多核的出现,自然人们会想到并行收集器,即多个回收线程一起跑;为了将对原程序影响降到最低(STW),又出现了并发收集器。这些,本质上,就是抽象分层思想的体现。类似于,重构代码中的,抽离属性和抽离方法。这种思想,我认为是计算机最重要的思想。可以讲三天三夜。如分布式服务中,根据业务模型,分拆用户服务、商品服务、订单服务。&br&&br&到此为止,虚拟机优化就涉及到两大方面,各个区的大小怎么划分最优、垃圾回收算法怎么选择最优。直接点,就是JVM参数调整。但关键在于,给你一个系统(可能是一个陌生的系统,我说的陌生可能就是你开放的系统,只是每个人负责的只是一个模块,对系统整体不熟悉),你怎么样能恰当估算系统业务情况,进而有针对性的收集系统数据,根据场景,确定优化的方向点,然后找到这个点对应的虚拟机参数,调整参数,或者,优化代码。注意,一切优化必须基于业务模型。不同业务系统、甚至同一套系统不同用户基数调整的方向都不一样。平时,我遇到的情况大概分为两种,一种是堆的问题,比如代码问题导致List或map越来越大,或者是string使用不当,造成频繁old gc;某个外部组件调用,生成大量代理类无法销毁。还有一种是线程栈,线程阻塞甚至死锁的问题。多线程使用不当,比不使用还坑爹。&br&&br&多线程,任何一个程序员都知道,但实际工作中,大部分程序员每天面对的基本是业务问题的CRUD和Bug定位,貌似没有直接接触多线程的机会。&br&&br&大家知道程序运行的时候,最关键的是内存和cpu,而cpu运算的时候,是要从内存取值,当然很多时候是从缓存取值的,然后放入寄存器,参与运算,得到结果,先放入寄存器,然后放入内存。程序执行的指令也放在寄存器,它记录了当前程序执行的地址。用一句话概括:程序=数据结构+算法。CPU运算需要知道,我要执行什么程序、我的程序数据怎么获取。&br&&br&大家应该看出问题来了吧?首先,线程执行是语言指令寄存器的,也就是当你切换线程的时候,得从虚拟机的程序计数器(PC)把该线程的执行指令放到指令寄存器,当然线程涉及的其他资源也要切换,比如IO设备。这些都是需要耗费资源的,这就是所谓的线程上下文切换。大学时候,记得很清楚的一句话:线程是CPU执行的最小单位。当时没怎么理解,后来想CPU执行程序,总得知道执行什么吧,那得准备指令寄存器的值,原材料得有吧,就可能涉及文件系统、网络资源吧,运算结果得输出到内存、文件或者网络吧。这些都是资源啊。所以,线程创建是一笔很大的开销。当然,如果你就一个线程,那就无所谓了,反正资源都是我的,想怎么用就怎么用。所以,很多时候,单线程比多线程快。&br&&br&很多面试宝典,有这么一道题:Java线程的start和run方法有什么区别?通过我上面关于线程执行的分析,应该一目了然。我用一个做饭的例子说明,start需要你买菜、准备锅碗瓢盆油盐酱醋、洗菜切肉,而run则是往锅里放油放菜炒。大家可以看到,Thread源码的start0是个native方法,也就是资源准备是虚拟机帮你做了。你不用管我菜是怎么买的、价钱多少。当然了,如果菜市场很远,一直没买到,或者排队很长,甚至被别人插队,那你这顿饭就一直做不上。这就是所谓的线程阻塞了。如果两个厨师都在做饭,一个拿着酱油想要醋,一个拿着醋想要酱油,互不相让,就出现所谓的死锁。不好意思,扯远了。关于start和run,如果把方法名改为:applyResourceAndPerformAction和doConcreteActions,是不是很容易理解?很多人面试的时候,背一下宝典,原理根本不清楚。你能指望他处理复杂问题?线程必须的资源虚拟机帮你做了,你需要的就是告诉线程你具体做什么,所以实现线程的几种方式就有了,1、继承Thread目的重写run方法;2、实现Runnable接口,实现run方法;3实现Callable接口,回调获取线程结果。1使用了继承,2和3使用了组合,内部持有了你所实现的类,更加灵活。你看,多用组合少用继承的原则就这么体现了。&br&&br&第二点,上面说到了,一个数值,进入CPU运算,经过了内存、多级缓存、寄存器,也就是说,当多线程运算同一个值的时候,是需要把值从主内存拿到该线程工作内存(寄存器)中的,当一个线程计算完毕(CPU首先把运算结果放到寄存器),还没刷新到主内存的时候,另一个线程从主内存取到的是旧值。JVM运行的每个线程都有自己的线程栈,不同线程运行的时候,都要复制主内存的一份副本到工作内存。怎么保证每个线程拿到的数据是最新的,这就是同步机制。volatile和synchronized,就是为了解决这个问题的。&br&&br&首先,谁都能想到的最直接的办法就是:共享变量同一时刻只允许有一个线程操作。这样就保证了所有线程要么拿不到值,要么拿到的值是“纯粹”的。于是有了synchronized,用来告诉虚拟机:这个地方是圣地,不允许多个人同时涉足。这里有一把锁,必须拿到锁才能进入,其他人要想进来必须等待。Java中的锁,可以是this对象、方法、类,也可以是声明的某个变量。锁的范围,可以是小块代码段,可以是整个方法区,甚至是所有方法。一定要注意锁和锁的范围,这是两个维度的事情。虚拟机会在锁对象和线程之间建立联系,其他线程跑到锁对象的时候,会看到:哦,其他哥们已经来了,我先等着吧。特别注意,不要以为对象和类的定义一样,不过是属性和方法的集合,类和对象是两回事。类似模具和产品的关系。虚拟机生成一个对象,这个对象有很多额外信息,起码有对象内存地址你是知道的吧?所以,要标识这个对象当前被哪个线程占有,是一件很容易的事情。感兴趣的同学,可以去看看对象在内存中的布局。&br&&br&我们很快发现,上面的方法有点粗暴,也不够灵活。很多时候,我们不关心共享值在被谁操作,我只关当前这个值“到底”是什么。所以,就有了volatile,大部分博客提到volatile,就一句话:保证可见性,不保证原子性。这什么鬼?实际上,如果一个共享变量声明为volatile,等于告诉虚拟机控制的所有线程:这个变量有点帅,要请他出山必须亲自去他老家——主内存去请,回来的时候也要尽快送回老家。所以,CPU计算的时候要从主内存取值,计算完毕,直接就写入主内存,不会写到高速缓存了。这就是所谓的“可见性”,也就是当前这个值是什么,你是完全知道的。至于不保证原子性,就很明显了,这个值谁都可以取来运算,从计算机角度来讲,跟普通变量的区别就在于:效率差了。因为写入和读取高速缓存,效率远远高于内存。一路题外话,不要以为数据库插入数据就直接到磁盘了,其实写入的也是缓存,由后台线程刷到磁盘的。这样既可以起到缓冲的作用,又可以提高效率。不然你以为怎么能那么快。其实,从底层到高层,从硬件到软件,很多原理都是相通的。&br&&br&———————————— &br&感谢朋友们的认可和指正。本文是有感而发,因为看过了太多坑人的博客和书籍,感慨自己走过的弯路,不希望其他初学者被网上互相抄袭的博客和东拼西凑的书籍浪费时间,想以一个相对宏观的视野来描述一个概念,力求通俗易懂,所以没有深入太多细节,简化了很多模型,给部分朋友造成了疑惑,说声抱歉。也没有配图,都是抽时间手机码字,打个分割线都费劲,图呢,其实网上都有。
&br&&br&记得我在另外一篇答案中提到,计算机程序(不仅仅各种语言的代码,一切能向计算机发出指令的序列都是程序,当然包括Java虚拟机)的努力方向:最大化利用计算机资源。多线程就是如此,一个CPU密集型的任务在跑,你让IO干等着,这不是浪费吗?所以,这时候你启动一个IO密集型的任务,资源利用率就提升了。当然,这是一种简化模型,实际上一个人任务的不同阶段,需要的计算机资源是不同的,如果你能合理安排多个任务的执行逻辑,资源利用率就会很大提升。&br&&br&我们学习程序语言,一定不要被束缚到语言细节和规范上去,而要从计算机逻辑执行层面思考问题。因为细节和规范都是人为设定的,是大牛抽象计算机逻辑后的加工品,你囿于此,其实是在理解别人的思想,而不是理解计算机。我们常说的高层依赖于抽象而不依赖于底层,是一样的意思。说了这么多,想表达的就是,对技术问题,要有思考的深度,要寻根溯源,要高屋建瓴。
&br&&br&回到多线程。上面提到synchronized,必须多说几句,这对理解锁的本质至关重要。多线程和锁,首先请大家记住一个场景:多人上厕所。&br&&br&多线程和锁,一个是线程,一个是对象。一个在私有的线程栈中,一个在共享的堆中。如何标识某个线程持有某个锁对象?如何如何标志某个对象被某个线程锁定?很显然,线程栈中开启一片区域“栈帧”存储对象锁记录,堆中对象有对象头(对象头主要保存了对象的类元数据,以及对象的运行时状态,其中就包括了锁线程和GC分代等信息。)可以标识被哪个线程锁定。实际上,虚拟机就是利用对象头和monitor(后面讲)来实现锁的。&br&&br&回到多人上厕所,人比做线程,厕所比做共享对象,锁比做对象头,monitor比做钥匙。&br&&br& synchronized锁的是一个对象,或者是类的某个实例,或者是类本身(即常量池的Class)。
synchronized内部原理是通过对象内部的一个叫做监视器(monitor)来实现的。本质又是依赖于底层的操作系统的Mutex Lock来实现的。而操作系统实现线程之间的切换需要从用户态转换到核心态,这个成本非常高,这就是为什么synchronized效率低的原因。比如Hashtable(再次吐槽小写t,浑身难受)和用Collections.synchronizedMap装饰的HashMap,内部都使用了 synchronized,所以性能差,不是因为“它性能差”,而是因为“它使用的同步方式”性能差,那天人家底层重写了性能高了你怎么办?很多时候,点下鼠标进入源码看几眼就知道的东西,没必要死记硬背。&br&&br&synchronized这种依赖于操作系统所实现的锁我们称之为“重量级锁”。JDK中对Synchronized做的种种优化,其核心都是为了减少这种重量级锁的使用。JDK1.6以后,为了减少获得锁和释放锁所带来的性能消耗,提高性能,引入了大量的优化,如自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销。别被这些名词砸晕了,这些锁的名字很有误导性,其实是对获取锁的方式的优化,不是锁。&br&&br& 所谓锁的优化,主要方向是优化获取锁的方式和加锁(释放)的方式。我不想一一解释枯燥名词。还是用上厕所举例。重量级锁可以认为是,你去上厕所,得先去管理处(人或者机器)登记并拿到钥匙上厕所,这个过程可以认为存在一次“用户态”到“内核态”的切换。是非常重量级的。 &br&&br& 这里我必须强调一下,你的目标是上厕所,不是加锁,加锁只是为了你更好的上厕所。线程也一样,目的是为了完成某项任务。加锁是不得以为之的。&br&&br&假如一层楼就你一个人,一个厕所, 你觉得还有必要去登记吗?要什么自行车?直接上啊。这就是无锁状态;如果这层楼还有一个哥们,但他尿泡比较强悍,一天不上厕所。厕所门上有个显示器,能显示上次上厕所的是谁、期间有没有其他人上厕所,那你上的时候,只要看下显示器就知道:没别人上过,还是我,照片都没变,不用刷脸,此厕可直接上。这就是偏向锁,因为“偏向你”;假如这个哥们偶尔也上一次,这次你发现厕所有别人上过,因为显示器上有他照片,那你就得重新刷脸,好吧,那我再刷了上吧,大部分时候,里面都没这哥们,你可顺利上厕所,这叫轻量级锁;如果某天这哥们腹泻(我一同事吃湖南蒸菜有过一次),那你悲剧了,你每次上的时候,不仅显示器不是你,你想刷脸进入,发展里面还有人。没办法,只能去管理处登记等待了,变成了重量级锁。锁升级是不会降级的。这里,重量级锁涉及操作系统的处理,而偏向锁和轻量级锁涉及CAS,硬件可以搞定,效率更高。&br&&br&上述锁状态转移和加锁(解锁不讲了)是由虚拟机(配合操作系统)完成的,我们不可见,既然是虚拟机控制,当然就有相关参数,如是否启用偏向锁,我忘了参数名字,但我知道肯定有这样的参数。如果面试我的面试官因为我不知道参数名字鄙视我,我能反怼死他。记个别人定的名字很自豪?&br&&br&上面讲到重量级锁的时候,其实就是锁竞争很激烈的时候。比如早上高峰期,厕所坑位紧缺,排队的人很多,如果你一直等,等待的状态就叫“自旋”,当然你可以自旋十分钟左右后离开(虚拟机自旋也有参数控制),因为你觉得里面的哥们玩手机不知道啥时候结束,你有更重要的事情要干,还不如去外面登记等通知。显然,自旋的前提是你知道上一个哥们不会很久。多次之后,你会摸清这些人上厕所的时间后,你自旋起来就更有针对性了,这叫“适应性自旋”。&br&&br&还有,锁消除,锁粗化,比如基本没人用的StringBuffer、Vector,你用在某个方法中,其实根本没必要加锁,或者说比如连续的append,没必要每次都加锁,虚拟机就会进行锁消除或者锁粗化处理。&br&&br&上面讲了这么多,主体是线程和锁对象,核心是获取锁的方式和锁定的方式,还有,不加锁或者“伪加锁”是不是能搞定?再次强调一遍,线程生来是为了完成任务的,不是为了和锁纠缠的。&br&&br&多线程竞争锁的时候,肯定涉及到线程的排队,新来的线程怎么处理,是去竞争锁还是直接排队?排队中的线程,那些有资格竞争锁?有资格的线程,那个拿到锁(只是拿到锁,还未执行共享区)?不管怎么实现,这些东西是必须要考虑的。你在synchronized没见到,是因为虚拟机帮你处理了,涉及的队列也是虚拟机在维护。重量级锁的时候,又涉及和操作系统信号的交互。当然,要是你不用和操作系统进行如Mutex Lock这样“重量级的”交互也能更好、更快、更好的处理同步,那你就是大牛了。&br&&br&大牛当然是存在,比如李老头。下面会开始讲更加灵活的、细粒度、可定制的Lock锁。可以认为是把synchronized加锁的过程、锁定的方式等流程中细节拆分出来,用灵巧的实现方式实现线程同步。再后面会讲对象的wait、notify,线程的sleep,主体不一样,思考的角度不一样。今天先到这里——&br&&br&手机码字,持续更新,,,&br&——————知乎什么鬼,说是保存为草稿,切了个微信,回来没了,在草稿里面也没有,玩我呢?刚写的关键的几段没了!&br&&br&有时间再写吧。
这几天比较忙。加个插曲。 前两天面试了一个四年工作经验的Java工程师,挺失望的。工作换了四五家,大多浅尝则止,基础太差了。面试别人,一般基于其项目经历和简历的技能栈交流。没想到,这次交流成了授课了。“大处着眼,小处落手”,一个技术人员既要具…
&img src=&/50/v2-eb7e3355a9d_b.png& data-rawwidth=&1728& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1728& data-original=&/50/v2-eb7e3355a9d_r.png&&&p&每天,每年,我在论坛里看到的多是这样的问题&/p&&p&&a href=&/?target=http%3A//1.XXX& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&1.XXX&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&球员好用吗?&/p&&p&&a href=&/?target=http%3A//2.XXX& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&2.XXX&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&战术包无SL夺冠&/p&&p&3.求推荐好的XX(位置球员)&/p&&p&4.小牛名单&/p&&p&5.开档可以买的最强XXX是谁?&/p&&p&每天,每年,我在群里看到的多是这样的问题&/p&&p&&a href=&/?target=http%3A//1.XXX& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&1.XXX&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&球员该怎么用&/p&&p&&a href=&/?target=http%3A//2.XXX& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&2.XXX&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&球队总打不过&/p&&p&&a href=&/?target=http%3A//3.XXX& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&3.XXX&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&阵型怎么破?&/p&&p&4.为何我总是XXX(丢球,越位,中柱,被绝杀,狂轰不进)&/p&&p&&a href=&/?target=http%3A//5.XXX& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&5.XXX&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&用什么角色职责好?&/p&&p&&a href=&/?target=http%3A//6.XXX& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&6.XXX&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&和谁配合比较好&/p&&p&7.我3中场这样的职责搭配行不行&/p&&p&8.客场怎么总输&/p&&p&&a href=&/?target=http%3A//9.XXX& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&9.XXX&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&阵型该长传还是短传?&/p&&p&&a href=&/?target=http%3A//10.XXX& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&10.XXX&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&该贴身还是压迫&/p&&p&在FM里,获胜的基础:&br&&/p&&p&你比对方强&/p&&p&强的几种方式:&/p&&p&1.绝对实力强&/p&&p&2.局部相对实力强&/p&&p&但在足球这种运动中,人为因素会导致强弱发生变化&/p&&p&足球是把球移动到对方球门内的活动,又是基于人的,所以足球存在效率&/p&&p&绝对完美的效率手段能达到两个结果&/p&&p&1.使自己的实力发挥更接近100%&/p&&p&2.使对方实力发挥更接近1%&/p&&p&这些手段的综合就叫:&b&战术&/b&&/p&&p&变强的第一种方式可以使用的手段是很容易的,常见的:&/p&&p&1.核武&/p&&p&2.买人(使用球探工具看CAPA买人)&/p&&p&3.训练&/p&&p&4.战术包&/p&&p&论坛的常见问题,属于入门级问题,代表你明白这是最快捷直接的变强手段&/p&&p&群里的常见问题,属于初级问题,你已经不打算依靠那些盘外招,而是靠自己的能力来变强&/p&&p&你开始注意到&/p&&p&1.不同球员在场上表现不同(属性效果)&/p&&p&2.同样球员职责不同表现不同(个人战术效果)&/p&&p&3.不同战术设置的场面表现不同(球队战术效果)&/p&&p&但我要说的是&/p&&p&上面列举的10个问题,&b&问题都问错了&/b&&/p&&p&你从问问题开始就错了,问题问的不对,问题不是这么问的&/p&&p&你问的是解决问题的方法,不是具体知识点&/p&&p&就好像你问怎么才能一夜暴富,而不是问如何赚到1块钱&/p&&p&你太想获得结果,而不想经历过程,所以战术包流这么多年都大行其道&/p&&p&1.你遇到的问题并不是你理解的那样,所以你问错了&/p&&p&2.你的确遇到了问题,但不是简单的一句话就能描述你的问题的,所以也不是一句话就能解决你的问题的。如果足球是这么简单的东西,它不可能成为最具魅力的运动&/p&&p&3.所以如果你有上面这些问题,那么你需要先解决的第一个问题是:问对问题&/p&&p&但我今天这篇文章不是用来解答上述问题的&/p&&p&解答上述问题的最有效方法,下面这个链接去看视频,直到自己看懂为止&/p&&p&&a href=&/?target=http%3A///%21/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibili&i class=&icon-external&&&/i&&/a&&br&&/p&&p&还有困难的,进群里问吧&/p&&p&&br&&/p&&p&我们今天直接讲第二种方式&/p&&p&&b&当你抛弃了上述手段后,你该如何变强?&/b&&/p&&p&这需要很多基础&/p&&p&1.你需要理解每一项属性产生的作用&/p&&p&2.每一项属性(不仅是球员属性,还包括天气,球场,裁判,媒体,死敌,士气,身体状态)带来的好处和坏处&/p&&p&3.如何通过战术发挥好处和遏制坏处&/p&&p&4.如何了解对手的每一项属性&/p&&p&5.如何通过对比认识到双方的优劣势&/p&&p&6.优劣势和战术面板的关联是什么&/p&&p&7.如何通过战术面板(个人,球队,针对性)来扬长避短&/p&&p&&b&8.如何通过战术面板来遏制对方优势并让对方劣势在自己面前无限放大&/b&&/p&&p&等你看完整个系列并理解了我所说的,你就明白我为何要把第8条标重了&/p&&p&认为我在足球战术理解上比你离真理大门更近一些玩家们&/p&&p&跟着我一起,老司机带你走一段&/p&
每天,每年,我在论坛里看到的多是这样的问题球员好用吗?战术包无SL夺冠3.求推荐好的XX(位置球员)4.小牛名单5.开档可以买的最强XXX是谁?每天,每年,我在群里看到的多是这样的问题球员该…
&img src=&/50/v2-ac56cc18d1a42de4b05222_b.png& data-rawwidth=&720& data-rawheight=&405& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&/50/v2-ac56cc18d1a42de4b05222_r.png&&&p&写在前面:本文是前端学习文章的其中一篇,查看全部文章可以关注 Github 上的 &a href=&/?target=https%3A///CompileYouth/front-end-study& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&front-end-study&i class=&icon-external&&&/i&&/a&。&/p&&br&&p&在文章开头,需要普及一下几个概念,那就是 Chrome 中的 extension、app 和 plugin,分别是扩展、应用和插件的意思,不能混为一谈。&br&&/p&&ul&&li&&p&extension(扩展):在 Chrome 地址栏输入 chrome://extensions 打开。Chrome 扩展是指可以增加 Chrome 浏览器功能或性能的小程序。“扩展”经常会被大家说成是“插件”&/p&&/li&&li&&p&app(应用):Chrome 地址栏输入 chrome://apps 打开。利用网页技术实现与本地桌面程序一样的应用程序。不过除了 Chrome OS,Google 将不再为 Windows、Mac、Linux 提供 App 支持,并且建议我们利用 &a href=&/?target=https%3A///web/progressive-web-apps/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PWA&i class=&icon-external&&&/i&&/a& 技术创建 Web app,或者改成写扩展,或者利用 &a href=&/?target=https%3A///electron/electron& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Electron&i class=&icon-external&&&/i&&/a& 或者 &a href=&/?target=https%3A///nwjs/nw.js& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&nw&i class=&icon-external&&&/i&&/a& 创建本地应用&/p&&/li&&li&&p&plugin(插件):Chrome 地址栏输入 chrome://plugins 打开。这才是 Chrome 的“插件”,这是对浏览器本身功能的增强。比如 &Chrome PDF Viewer& 插件可以使得浏览器具有浏览 PDF 文件的能力&/p&&/li&&/ul&&p&平时我们不用关心插件,我们经常用到的是“扩展”,并且偶尔也会使用到“应用”。所以今天主要就介绍几款 Chrome 扩展和应用。&/p&&h2&Extensions(扩展)&/h2&&p&对于开发者来说,Chrome 不仅自身厉害(可以参见&a href=&/?target=https%3A///CompileYouth/front-end-study/blob/master/tool/devtools/Chrome%2520DevTools%2520Overview.md& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Chrome DevTools&i class=&icon-external&&&/i&&/a&),而且背后还有强大的社区,今天就跟大家整理一下 Chrome 中那些针对开发者的扩展及应用。&/p&&h3&&a href=&/?target=https%3A///webstore/detail/octotree/bkhaagjahfmjljalopjnoealnfndnagc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&octotree&i class=&icon-external&&&/i&&/a&&/h3&&p&当你查看 Github 文件时你有没有因为不停切换文件而感到烦躁?octotree 能够将一个 Repository 以文件树的形式展现。&/p&&img src=&/v2-0a1b2bfbea6_b.png& data-rawwidth=&1800& data-rawheight=&1179& class=&origin_image zh-lightbox-thumb& width=&1800& data-original=&/v2-0a1b2bfbea6_r.png&&&h3&&a href=&/?target=https%3A///webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JSONView&i class=&icon-external&&&/i&&/a&&/h3&&p&将你的 JSON 数据更好地展现出来。&/p&&img src=&/v2-ea63ac6ae4819ffbeb7dce_b.jpg& data-rawwidth=&1280& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/v2-ea63ac6ae4819ffbeb7dce_r.jpg&&&h3&&a href=&/?target=https%3A///webstore/detail/code-cola/lomkpheldlbkkfiifcbfifipaofnmnkn& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Code Cola&i class=&icon-external&&&/i&&/a&&/h3&&p&以可视化方式在线编辑页面样式。&/p&&img src=&/v2-e84ac7f4f48e4b3227b09_b.png& data-rawwidth=&1440& data-rawheight=&804& class=&origin_image zh-lightbox-thumb& width=&1440& data-original=&/v2-e84ac7f4f48e4b3227b09_r.png&&&h3&&a href=&/?target=https%3A///webstore/detail/cssviewer/ggfgijbpiheegefliciemofobhmofgce& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CSSViewer&i class=&icon-external&&&/i&&/a&&/h3&&p&查看页面任意一个元素的 CSS 样式。&/p&&img src=&/v2-3dc54a9ff4988a75ada377c22e0b99dd_b.png& data-rawwidth=&1440& data-rawheight=&804& class=&origin_image zh-lightbox-thumb& width=&1440& data-original=&/v2-3dc54a9ff4988a75ada377c22e0b99dd_r.png&&&h3&&a href=&/?target=https%3A///webstore/detail/font-playground/hdpmpnhaoddjelneingmbnhaibbmjgno& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Font Playground&i class=&icon-external&&&/i&&/a&&/h3&&p&以可视化的方式为页面选中的元素设置不同的字体。&/p&&img src=&/v2-3f86fdea93f14f84989a_b.png& data-rawwidth=&1440& data-rawheight=&804& class=&origin_image zh-lightbox-thumb& width=&1440& data-original=&/v2-3f86fdea93f14f84989a_r.png&&&h3&&a href=&/?target=https%3A///webstore/detail/whatfont/jabopobgcpjmedljpbcaablpmlmfcogm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&WhatFont&i class=&icon-external&&&/i&&/a&&/h3&&p&检查页面中任意元素的字体。&/p&&img src=&/v2-3e38509cfd_b.png& data-rawwidth=&260& data-rawheight=&220& class=&content_image& width=&260&&&h3&&a href=&/?target=https%3A///webstore/detail/page-ruler/jlpkojjdgbllmedoapgfodplfhcbnbpn& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Page Ruler&i class=&icon-external&&&/i&&/a&&/h3&&p&在页面上画一把“尺子”,可以度量宽高、位置等信息。&/p&&img src=&/v2-6e557ce7d1ee86b4b3b6b9560ebf87e8_b.png& data-rawwidth=&1437& data-rawheight=&799& class=&origin_image zh-lightbox-thumb& width=&1437& data-original=&/v2-6e557ce7d1ee86b4b3b6b9560ebf87e8_r.png&&&h3&&a href=&/?target=https%3A///webstore/detail/perfectpixel-by-welldonec/dkaagdgjmgdmbnecmcefdhjekcoceebi& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PerfectPixel by WellDoneCode&i class=&icon-external&&&/i&&/a&&/h3&&p&将图片插入页面后可以在像素级上调整图片位置,对于像素控而言尤其有用。&/p&&img src=&/v2-7392cfffc5c7ceea206cbe6_b.png& data-rawwidth=&1440& data-rawheight=&804& class=&origin_image zh-lightbox-thumb& width=&1440& data-original=&/v2-7392cfffc5c7ceea206cbe6_r.png&&&h3&&a href=&/?target=https%3A///webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&EditThisCookie&i class=&icon-external&&&/i&&/a&&/h3&&p&编辑 cookie。&/p&&img src=&/v2-967fab1510fce4f2794dfede_b.png& data-rawwidth=&640& data-rawheight=&400& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-967fab1510fce4f2794dfede_r.png&&&h3&&a href=&/?target=https%3A///webstore/detail/google-pagespeed-insights/edbkhhpodjkbgenodomhfoldapghpddk& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Google PageSpeed Insights Extension&i class=&icon-external&&&/i&&/a&&/h3&&p&原理同将网址放入到 &a href=&/?target=https%3A///speed/pagespeed/insights/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PageSpeed Insights&i class=&icon-external&&&/i&&/a& 中,来测试网页的加载速度。这个插件可以一键为网页的加载速度打分,并且可以为你链接到 &a href=&/?target=https%3A///speed/pagespeed/insights/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PageSpeed Insights&i class=&icon-external&&&/i&&/a&。&/p&&img src=&/v2-56ffe9beddc3_b.png& data-rawwidth=&207& data-rawheight=&47& class=&content_image& width=&207&&&h3&&a href=&/?target=https%3A///webstore/detail/responsive-web-design-tes/objclahbaimlfnbjdeobicmmlnbhamkg& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Responsive Web Design Tester&i class=&icon-external&&&/i&&/a&&/h3&&p&测试响应式网页的利器。自认为比 Chrome DevTools 自带的 &Device Toolbar& 看得舒心。&/p&&img src=&/v2-41a02f0a8faa405fa3c08f_b.png& data-rawwidth=&424& data-rawheight=&133& class=&origin_image zh-lightbox-thumb& width=&424& data-original=&/v2-41a02f0a8faa405fa3c08f_r.png&&&h3&&a href=&/?target=https%3A///webstore/detail/user-agent-switcher-for-c/djflhoibgkdhkhhcedjiklpkjnoahfmg& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&User-Agent Switcher for Chrome&i class=&icon-external&&&/i&&/a&&/h3&&p&切换浏览器的 User Agent。&/p&&img src=&/v2-4f32c59473bcdba89c67ef5cd9ebc4e7_b.png& data-rawwidth=&256& data-rawheight=&183& class=&content_image& width=&256&&&h3&&a href=&/?target=https%3A///webstore/detail/usersnap-visual-feedback/khehmhbaabkepkojebhcpjifcmojdmgd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Usersnap - visual feedback & bug reports&i class=&icon-external&&&/i&&/a&&/h3&&p&让你快速以可视化的方式提交 bug。&/p&&img src=&/v2-ed59b0dcd592b7fb6f393d_b.jpg& data-rawwidth=&654& data-rawheight=&384& class=&origin_image zh-lightbox-thumb& width=&654& data-original=&/v2-ed59b0dcd592b7fb6f393d_r.jpg&&&h3&&a href=&/?target=https%3A///webstore/detail/wappalyzer/gppongmhjkpfnbhagpmjfkannfbllamg& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Wappalyzer&i class=&icon-external&&&/i&&/a&&/h3&&p&一键识别网页中用到了哪些软件,但并不是很全。&/p&&img src=&/v2-5d3fd37c7c88d34abe328ed00e3deb1f_b.png& data-rawwidth=&1100& data-rawheight=&700& class=&origin_image zh-lightbox-thumb& width=&1100& data-original=&/v2-5d3fd37c7c88d34abe328ed00e3deb1f_r.png&&&h3&&a href=&/?target=https%3A///webstore/detail/web-developer/bfbameneiokkgbdmiekhjnmfkcnldhhm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Web Developer&i class=&icon-external&&&/i&&/a&&/h3&&p&添加一个工具栏供开发者调试网页。&/p&&img src=&/v2-5eec64b098fca3789e3a_b.png& data-rawwidth=&802& data-rawheight=&140& class=&origin_image zh-lightbox-thumb& width=&802& data-original=&/v2-5eec64b098fca3789e3a_r.png&&&h3&&a href=&/?target=https%3A///webstore/detail/web-developer-checklist/iahamcpedabephpcgkeikbclmaljebjp& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Web Developer Checklist&i class=&icon-external&&&/i&&/a&&/h3&&p&为开发者提供一个最佳实践的检查表。&/p&&img src=&/v2-676d7ccb6ad1a461e535d4cca6bb63b7_b.png& data-rawwidth=&268& data-rawheight=&536& class=&content_image& width=&268&&&h3&&a href=&/?target=https%3A///webstore/detail/picmonkey-extension/dhipmoghimfdldnocmopeoanjmoolofl& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PicMonkey Extension&i class=&icon-external&&&/i&&/a&&/h3&&p&可以修改页面中的所有图片或者页面截图。&/p&&img src=&/v2-3c0c7336fcc311dbf46b9c5c5fb1f741_b.png& data-rawwidth=&172& data-rawheight=&603& class=&content_image& width=&172&&&h3&&a href=&/?target=https%3A///webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&React Developer Tools&i class=&icon-external&&&/i&&/a&&/h3&&p&React 开发者工具。&/p&&img src=&/v2-bf39eddc44bce518aa8fa33ac91917a5_b.jpg& data-rawwidth=&640& data-rawheight=&400& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-bf39eddc44bce518aa8fa33ac91917a5_r.jpg&&&h3&&a class=& wrap external& href=&/?target=https%3A///CompileYouth/front-end-study/blob/master/tool/chrome-extension/extensions-and-apps.md%23vuejs-devtools& target=&_blank& rel=&nofollow noreferrer&&CompileYouth/front-end-study&i class=&icon-external&&&/i&&/a&&a href=&/?target=https%3A///webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Vue.js devtools&i class=&icon-external&&&/i&&/a&&/h3&&p&Vue 开发者工具。&/p&&img src=&/v2-a5dfcc91f656fe9f9ff29_b.png& data-rawwidth=&589& data-rawheight=&371& class=&origin_image zh-lightbox-thumb& width=&589& data-original=&/v2-a5dfcc91f656fe9f9ff29_r.png&&&h2&Apps(应用)&/h2&&p&在介绍开发者用的 Apps 之前,我想先介绍一款扩展:&a href=&/?target=https%3A///webstore/detail/dream-afar-new-tab/henmfoppjjkcencpbjaigfahdjlgpegn& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&远方 New Tab&i class=&icon-external&&&/i&&/a&,与大家熟悉的 &a href=&/?target=https%3A///webstore/detail/momentum/laookkfknpbbblfpciffpaejjkokdgca& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Momentum&i class=&icon-external&&&/i&&/a& 相似,但我觉得这款扩展更适合我,不仅因为新的 Tab 页面上保留了 Google 原来的搜索框,也添加了几个有用的菜单:History、Bookmarks 和 Apps。所以我平时打开 Chrome apps 的入口都在这个页面。可能有人觉得搜索框影响图片的展现,你还可以将搜索框设置成隐藏,当鼠标悬浮到相应位置时,搜索框也能自动出现。&/p&&img src=&/v2-046aa2c03_b.png& data-rawwidth=&1439& data-rawheight=&802& class=&origin_image zh-lightbox-thumb& width=&1439& data-original=&/v2-046aa2c03_r.png&&&p&介绍了这款能够快速打开 Chrome apps 的扩展后,我们来看看有哪些适合开发者使用的应用。&/p&&h3&&a href=&/?target=https%3A///webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Postman&i class=&icon-external&&&/i&&/a&&/h3&&p&使用 Postman 可以模拟向服务器发起请求。&/p&&img src=&/v2-3a4fd0c2ecbe7ca485f06cff_b.png& data-rawwidth=&1439& data-rawheight=&896& class=&origin_image zh-lightbox-thumb& width=&1439& data-original=&/v2-3a4fd0c2ecbe7ca485f06cff_r.png&&&h3&&a href=&/?target=https%3A///webstore/detail/google-docs/aohghmighlieiainnegkcijnfilokake& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Google 文档&i class=&icon-external&&&/i&&/a&&/h3&&p&具有云储存、同时编辑等功能。&/p&&img src=&/v2-a7db9f8b725c50eae72033_b.jpg& data-rawwidth=&750& data-rawheight=&469& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&/v2-a7db9f8b725c50eae72033_r.jpg&&&h3&&a href=&/?target=https%3A///webstore/detail/marmoset/npkfpddkpefnmkflhhligbkofhnafieb& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Marmoset&i class=&icon-external&&&/i&&/a&&/h3&&p&为代码创建酷炫的快照&/p&&img src=&/v2-461c5dc4c9b_b.png& data-rawwidth=&1023& data-rawheight=&514& class=&origin_image zh-lightbox-thumb& width=&1023& data-original=&/v2-461c5dc4c9b_r.png&&&p&感谢@&a href=&/people/ahao430& class=&internal&&王昊&/a&的补充。&/p&&p&如果你有其他好用的扩展或应用,希望不}

我要回帖

更多关于 我国的军衔等级划分 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信