御林军与禁军有什么分别?哪个更厉害一些

【菜科解读】
历代有直称禁军、禁兵的,也有另立名目的。
又有此名义而扩大其任务范围的。
禁军初有元从禁军,以后陆续出现飞骑、百骑、千骑、万骑等名目,演变为左右羽林、左右龙武、左右神武、左右神策、左右神威等十军。
其中如神策军即戍守各地,任务不限于宿卫。
北宋称正规军为禁军或禁兵。
从各地招募,或从厢军、乡兵中选拔,由中央政府直接掌握,分隶三衙。
除防守京师外,并分番调戍各地,使将不得专其兵。
每发一兵,均须构密院颁发兵符。
编制单位有军、指挥、都。
士兵出自雇佣,且沿五代朱梁定制,文面刺字,社会地位低于一般人民。
北宋中叶,禁兵增至八十余万人。
变法时裁减兵额,置将分领,加强,战斗力有所提高。
北宋末年,政治腐败,军队缺额极多,京师三衙所统余万人,实际仅存三万人。
北宋亡,禁兵主力溃散。
时,各屯驻大军取代禁兵,成为正规军,而各地尚存的禁兵,则成为专供杂役、不从事战斗的部队。
羽林卫 即“羽林军”,为宫廷禁军,创设于汉武帝太初元年。
时,置左、右羽林军。
也设羽林军,分羽林左卫、羽林右卫。
御林军 简单的说说是保卫都城的卫戍部队。
洪武二年(公元1369年),设立亲军都尉府,统领中、左、右、前、后五卫,专事对皇城的保卫。
洪武六年(公元1373年)造守卫金牌,或镀金铜牌,牌上有篆文"守卫"、"随驾"字样,存尚宝司,军士值班领取佩带,下值时交回。
御林军为什么要戴面具: 他们戴面具跟现在特种兵戴墨镜的道理是一样的,主要不要让敌人看出你的神态,让对手产生敬畏感。
皇帝身边的近卫,一般都带鬼面,一个是防止被认出而收买,另一个是让人产生敬畏之心 在这里带上面具表示皇帝的威严,而且也防止有谋反之心的人对其不轨。
所以带上面具是另一种自我保护,也是对皇上的一种保护。
随机文章「今朝有酒今朝醉」下一句更经典 你知道吗?明朝的戚继光在哪一个皇帝的朝廷任职?苏联最具野心航天计划,研制可重复使用太空船对付美国玄武岩超音速巡航导弹,苏联最强反舰导弹(号称美国航母杀手)揭秘真正的嫦娥长什么样子,三界第一美人竟是丑陋的蟾蜍(辣眼睛)
诸葛亮为什么要求死后葬在定军山?而不是成都呢
不过,对于诸葛亮北伐来说,多以粮尽无功。
终因积劳成疾,于蜀建兴十二年(234年)病逝于五丈原(今陕西宝鸡岐山境内),享年54岁。
根据《》等史料的记载,诸葛亮遗言命令部下将自己葬在汉中定军山,依山势修建坟墓,墓穴仅能容纳下棺材。
那么,问题来了,诸葛亮的家人都在蜀汉都城成都,为什么诸葛亮要求死后葬在定军山?而不是蜀汉都城成都呢? 一 首先,根据《三国志·蜀书·诸葛亮传》的记载,诸葛亮遗命“葬汉中定军山”,所以定军山下建有武侯墓。
对于诸葛亮来说,徐州琅琊阳都(今山东临沂市沂南县)人。
但是,因为在三国时期,徐州琅琊阳都(今山东临沂市沂南县)已经是曹魏的疆域了,诸葛亮显然不能要求死后葬在家乡了。
为此,自己家人所在的蜀汉都城成都,应该是诸葛亮最可能选择的安葬之地。
不过,却要求葬在汉中地区的定军山。
对此,在笔者看来,孔明之所以这么做,原因也比较简单。
二 一方面,诸葛亮之所以要求葬在定军山,是因为定军山在汉中,是蜀汉北伐曹魏的前线。
在此基础上,诸葛亮要求死后安葬在这里,就是表明自己生前时刻铭记北伐中原,匡扶汉室,甚至可以说是为北伐中原而付出了自己的生命,也即。
同时,孔明此举也是为了警示和激励后人,比如希望和、、等文臣武将不要忘了兴复汉室,北伐曹魏,更不能忘了诸葛亮的毕生所愿。
与此相对应的是,诸葛亮如果要求死后安葬在成都或者说是蜀汉的其他地方,显然就没有这样的效果了。
三 另一方面,定军山属大巴山脉,其脉自高庙子入平地,隆起秀峰十二座,自石山子至元山子,号称“十二连峰”,再东为当口寺孤峰,自西向东绵延十多公里。
也即定军山不仅是兵家必争之地,而且拥有众多的山峰。
在此基础上,有个说法就是说诸葛亮去世前留下遗言给后主刘禅,要四个人抬着他的棺一直往南走,绳子在哪里断,就把他埋在哪里。
但是,这四个人在绳子没断的时候已经精疲力尽,所以就在定军山随便选择一个地方将诸葛亮安葬了。
那么,非常明显的是,定军山的复杂地形加上诸葛亮的遗言安排,促使诸葛亮墓的具体所在地至今成谜。
四 最后,如此相对应的是,如果诸葛亮要求死后安葬在蜀汉都城成都的话,那么自己的墓地就比较容易找到了。
在蜀汉实力明显弱于曹魏的背景下,不确定哪一天曹魏的大军就攻破了蜀汉都城成都。
在此基础上,诸葛亮因为多次北伐曹魏,其墓地也可能遭到盗墓和破坏。
所以,诸葛亮要求死后安葬在定军山,借助于定居山复杂的地形,再加上比较隐秘的埋葬方法,从而避免被盗墓的风险。
而这,无疑是诸葛亮聪明才智又一体现。
对此,北魏地理学家郦道元《》中记载:“葬于其山,因即地势,不起坟垄”。
从“不起坟垄”来看,诸葛亮明显不希望他人知道自己的埋葬之处。
随机文章《历史与社会》教学中如何培养学生的读图能力死亡率最高的极限洞穴潜水,美国洞穴一年死25人国产歼20隐形战斗机详解,隐身性和速度超越F35天王星海王星冥王星的区别,冥王星最小天王星最大(八大行星)太平洋最深处有生物吗,海底一万米存在怪物或外星人(细思极恐)
三种模式实现分层结构下transaction数据访问层与业务逻辑分离
从对象关系角度看,业务逻辑层的对象依赖于数据访问层。
.net平台提供了ado.net对数据库进行操作,connection对象提供了对database连接与transaction的功能。
在分层结构下,数据访问层处理了对数据库的操作,实现了domain每一个对象与database的方法。
例如对象Customer,提供CustomerDAO.Add(),CustomerDAO.Update()等等的方法,每一个方法都会引用独立的connection对象。
业务层直接调用CustomerDAO的方法。
connection对象对业务层是close状态,业务层不能访问到并且控制ado.net提供的transaction。
在不破坏分层体系结构前提下一般有三种方式来实现。
System.Transaction:.net提供的一个使用很简单的解决方法。
System.Transaction允许对local和distributed数据库进行操作。
使用System.Tansaction不用考虑是一个或者多个connection,一个或多个数据库。
例如可以使用TransactionScope,举个例子,下面的code很直观,using (TransactionScope scope = new TransactionScope()){SqlConnection connection1 = new SqlConnection(connectString1)SqlConnection connection2 = new SqlConnection(connectString2)scope.Complete();}有两个connection,System.Transaction会整合成一个tranaction来处理,那么我们只需要在业务层需要transaction的地方使用TransactionScope就可以了,很方便。
虽然方便,但还是有不利的地方。
因为System.Transaction会自动监测connection,如果只有一个,就直接使用ado.net的transaction,perfomance不会影响。
但如果是上面的code,有两个以上的connection,System.Transaction会自动升级为distributed级别,这样performance会打了折扣。
而且对于除sqlserver一些其他的数据库例如oracle,一直会是distributed级别。
这种方式只适合对于performance要求不是很高的项目。
Connection/Transaction参数传递给DAO:这种方式的思路是DAO的对象每一个对象需要提供一个参数来接受是否需要transaction的信息。
例如可以自定义一个MyTrans类,MyTrans类引用一个connection对象。
public class MyTrans{public IConnection connection;public void beginTrans();public void commitTrans();}这样一个包装过的类,就可以使业务层的对象对connection间接的进行操作,例如业务层类customer.Update()就可以这样实现。
using(MyTrans tran=new MyTrans){tran.beginTrans();CustomerDAO dao=new CustomerDAO(tran);dao.Add();tran.commitTrans();}这样实现,对开发的复杂度会增大,DAO需要每个类都要实现一个接受Trans的参数。
这种方式适和那种有充足时间而且想亲自操作数据库的项目。
AOP实现Transaction:这种方式可以参考Spring提供的AOP机制与Spring的Transation,Aop的内部实现是采用了反射原理,利用Typebuilder对Class的Methord进行重新编排,使在逻辑层的对象方法内部自动的加入Connection的transaction的操作。
Spring提供了一个声明的方式,很方便快捷,而且由于使用的Ado.net进行操作,所以performance没有受到任何影响。
如以下Code,只要简单的声明就可以了。
public class TestObjectManager : ITestObjectManager {// Fields/Properties ommited[Transaction()]public void SaveTwoTestObjects(TestObject to1, TestObject to2){TestObjectDao.Create(to1.Name, to1.Age);TestObjectDao.Create(to2.Name, to1.Age);}[Transaction()]public void DeleteTwoTestObjects(string name1, string name2){TestObjectDao.Delete(name1);TestObjectDao.Delete(name2);}}这种方式适合项目较大,需要快速开发,而且项目决策者愿意使用工具的项目。
三种,模式,实现,分层,结构,下,transaction,数