青春时代是一个短暂的美梦,当你醒来时,它早已消失得无影无踪了。
 
今日:0    总帖:356
admin
6363
原文地址:http://blog.51cto.com/gingerbeer/2130706?weibo谁说世界杯期间就不update知识了?当你点开这篇文章,我不得不说,你前途无量。为什么?想想世界杯期间,还有谁去学习、精进?而你与众不同,他们看球,你读知识博客,你要是没前途了,还有谁有?既然进来了,就品鉴品鉴这篇白话文,读完顺便点个赞,要是能再关注我一下,那就更好了~好了,废话不说,上菜。故事背景OSPF路由协议,相信你配置的熟练,听得耳烂,看的厌烦。毫无疑问,OSPF在业界是出了名的成功,无论是同一个厂家的设备,还是异厂家对接,OSPF都是一个非常不错的选择。稳定的输出,简单的配置,丰富的功能。可是,还有一个OSPF的孪生姐妹,功能与OSPF类似,而且输出极其稳定,它就是今天我们要说的主角:IS-IS,这位路由界的深宫妃子。之所以想起聊聊这位后宫美人,是因为大家对她都比较陌生,只闻其名,不见其人。刚好在我的《老司机网络运维干货集锦 》专栏里面,有朋友问道IS-IS协议的诸多细节,我觉得有必要通过一个简单易懂的文章,同大家聊聊IS-IS的特点。如何聊?逐个盘点知识细节?这不是我的风格,我们就追求简单易懂,上手即用。所以最好的方法,就是通过一个熟悉的东西作为参照对象,从而让你能够快速上手。这个对象,不用说,非OSPF莫属。IS-IS协议简介IS-IS全名并不是中东某某集团、让你出国玩的时候很不爽的那一帮人。他们的名字中间少了一个横杠(-)。此处说的IS-IS,名为中间系统-中间系统。英文名:Intermediate System to Intermediate System (IS-IS)名字很奇怪,之所以叫做“中间系统”,则是ISO这帮人对于网络设备的一个称呼,因为网络设备是介于终端之间。所以称之为中间设备,这就好像写什么文书,本来大白话可以说清的,非得一副文绉绉的样子。而终端,例如服务器,主机等,则称作终端系统“End System”。选手介绍完毕。总览下图为OSPF 和IS-IS的各项区别和相似之处:由于篇幅有限,也不想把文章当做说教之处,本文仅仅从里面挑出几个比较有意思的点和你一起分享。还是那句话,掌握思路比学到具体的知识更重要。而且说到知识储备,有谁拼得过百度和google呢?能搜就行了。接下来,开始进入PK环节:底层协议PKOSPF:OSPF是基于IP的路由协议,利用IPv4包头承载OSPF的数据包。如下图所示:IS-IS:IS-IS就不一样了,IS-IS是基于ISO的OSI协议模型的。不知道大家是否还记得常说的OSI 7层协议模型,什么物理层,数据链路层,网络层等等。其实这就是OSI 7层模型,而这7层模型中,还存在很多各种各样的协议,见过的没见过的。如下图所示:你可能很奇怪,比如网络层,协议不应该是IP么?传输层不应该有TCP,UDP么?怎么都看不到了。其实TCP也好,IP也罢,都是基于TCP/IP协议模型,而非传统的OSI模型。只是随着时间的推移,人们喜欢OSI的模型来描述网络层级,因为它更精确。但是同时用现今流行的网络协议来对应到OSI层级上,所以就出现了,网络层IP,传输层TCP、UDP等协议的说法。回到正题,你会发现,IS-IS就在上图中Network网络层的层级里面。刚开始IPv4还没占领全宇宙的时候,OSI的这些古怪协议都还有人用,自然而然,就需要一个路由协议来学习各个奇葩协议的网段,IS-IS就应运而生了。相比OSPF使用IP地址来互相建立邻居,IS-IS也需要一个OSI界的地址族,这就是NET(Network Entity Title:网络实体名称)。一个典型的IS-IS NET的地址结构是这样的:最左边的49.0001是区域号码,中间的192xxxx8001是系统号,右边的NSEL号码配置为00,代表路IS-IS路由器自身的地址。NET地址小窍门:有没有发现上面的1922.5112.8001很熟悉。 其实他是这样的:192.251.128.001。这不就是一个 传统的IPv4地址么。 完全正确。 由于IS-IS的NET地址一台路由器只需要配置一个,通常都配置在lo0接口上。 所以最方便的就是把Lo0的IPv4地址转换一下变为NET地址。 例如192.168.1.1 可以转换为:49.0001.1920.1680.1000.1000.00最后,让我们一起看看IS-IS的数据包结构:区域划分多区域的OSPFOSPF为了获取网络部署的灵活性,和各项路由功能,特定把整个OSPF域做了如下划分:Area 0 骨干区域,骨干区域用于连接其他OSPF区域。Area xxx 非骨干区域,连接到骨干区域。非骨干区域可以实现各种功能,以及在非骨干和骨干区域之间实施路由策略。一般情况下,OSPF的多区域网络划分是这样的:上述拓扑相信大家已经司空见惯。但是请再次注意一点,那就是两个区域之间的连接,是通过一台路由器相连,此路由器我们称之为ABR。换句话来说,一台路由器跨越了两个区域。同时,OSPF可以有很多区域,你可以基于你的需求来定义区域的数量。回过头来看看IS-IS。双区域的IS-IS传统模式IS-IS也有区域的概念,但是相对于OSPF,它的区域则是简单的多。IS-IS仅仅存在两个区域层级:Level 2:骨干区域,类似于OSPF的Area 0。Level 1:非骨干区域,类似于OSPF的非Area 0的区域。两者之间的关系,如下图所示:上述拓扑中,level 2作为主干,左右两侧作为分支。但是请注意,左右两边没有Area号码这一说,都是同属于Level 1。同时,OSPF的ABR部分,则称作L1/L2路由器,即把L1和L2互联起来的路由器。众人大呼上当,这不是和OSPF一模一样么,换汤不换药,就是把Area改为Level而已,ABR换一个名字?真是如此吗?独立模式让我们在看另外一个拓扑:上图有两台路由器,他们建立了IS-IS邻居关系,而且同时在Level1和Level2层级上建立邻居关系。这就神奇了,你见过哪一个OSPF路由器可以同时把Area 0和Area 1重叠起来建立么?OSPF不可以,但是IS-IS可以。IS-IS的Level 1和Level 2的邻居状态数据库等一切信息都是互相独立的,两者之间不产生交集,也不共享路由信息。除非像上述传统模式拓扑内,存在一个L1/L2路由器,同时把两边衔接起来,此时L1和L2才存在互相通告路由的可能性。IS-IS有趣的网络结构就此结束了么?肯定不会,下一个。多域模式在看图之前,先问个问题,你见过OSPF存在不同的域么?没有吧,OSPF没有类似于EIGRP或者BGP那样,存在一个自治系统号。所以你不会看到下面这样的OSPF拓扑图:但是,IS-IS却可以。回到本文上半部分讲述IS-IS NET地址时,存在一个Area id区域号码。上述的例子是49.0001。换句话说,IS-IS就可以存在多个域。而域和域之间肯定存在互联关系,自然而然就引入下面的拓扑:上述拓扑中,存在三个IS-IS域。他们之间必须通过L2骨干链路互联,而且互联的方式是两两互联,两两之间分别处于不同的域内。这个再次和OSPF区别开来,OSPF的Area之间通过一台ABR互联。DR/BDR vs DIS既然说到域,就顺带提提DR、BDR 指定路由器,备份指定路由器。。DR和BDR是在OSPF广播型链路中,为了减少大量路由器两两之间交换的链路状态信息,遂选举出一个“村官”来管大家,所有同一个LAN里面的OSPF路由器都要和村长DR联系,同时还有一个副村长BDR,免得村长挂了。那IS-IS里面是否也有类似的设计呢?答案是有的。IS-IS里面不叫DR,BDR。而是叫做DIS:Designated Intermediate System。DIS是何须人也?其实非常容易理解:OSI模型里面Router路由器 = Intermediate System中间系统。两边同时加上一个Designate指定一词,得到DR=DIS。这就好理解了吧。但是注意,IS-IS内没有BDR,即BDIS一说,IS-IS不喜欢副村长。协议特性:LSA vs TLVLSA:OSPF的生命源泉相信大家都知道OSPF都有哪一些常见的LSA类型,而每一个LSA都代表什么意思。例如一类LSA,二类LSA,3类,5类。7类等。这些LSA汇总在一起,定义了OSPF的各种功能特性毫不夸张的说,LSA赋予了OSPF蓬勃的生命力。同时,正因为有了LSA,随着时代的发展,当OSPF需要更多的功能时。就可以通过开发新的LSA类型来满足其功能上的需求,例如LSA9-11,负载MPLS相关的功能等。同样的,IS-IS也得有它的一套绝活,否则怎么能在江湖上立足呢?TLV:IS-IS的立命之本TLV,全称:Type,Length,Value,翻译过来就是类型,长度,值。它作为一个典型的编码,被极其广泛的应用在IS-IS协议内部。通过定义不同的TLV,IS-IS也获得了不同的功能。常见的TLV如下所示:Juniper 路由器 IS-IS输出结果下的TLV对应图:IPv6怎么搞定?OSPF和IS-IS相安无事很多年,大家各司其职。OSPF风靡全世界的企业网,而IS-IS则稳坐运营商骨干网IGP协议的鳌头。可是,突然有一天,一个不速之客来了。那就是IPv6。就在大家都嚷嚷说要上IPv6的时候,两个协议也需要继续跟进。OSPF 的困兽之斗先说说OSPF。刚才说过,OSPF若需要新的协议特性和功能,就通过开发LSA类型来解决。可是这次这方法不灵光了。为什么?因为OSPF的根是在IPv4上,邻居关系,hello包的组播地址,一切的一切都是以IPv4为基础。所以OSPF若要新增IPv6的功能,不是简简单单一个LSA就能搞定的问题了。所有一切都得推倒重来。于是乎,无奈之下-OSPFv3诞生了。OSPFv3同时兼容了IPv4和IPv6,虽然很好。但是它意味着你需要单独在跑一个路由协议,OSPF和OSPFv3是两个独立的协议。我知道,很疼。IS-IS第二春IS-IS,就很有意思了。当IS-IS看到OSPF这般难受时,不禁大笑。为何?因为IS-IS特殊的身世。还记得,IS-IS可是诞生于ISO的OSI模型之下,它和后来的IP一点瓜葛都没有。所以,这是IS-IS的根:OSI网络模型。后来1990年,IS-IS通过新增一个TLV的方式,把IPv4加进来了。对他来说,新增IPv4就是一个TLV而已。同理,新增IPv6也就是另外一个TLV而已。就因为这样,当你运行IS-IS的时候,你不需要开启任何特殊功能,IS-IS同时兼容IPv4和IPv6。运营商的同学们也没有任何心理负担,只需要配置IPv6地址在接口上,马上就有了一张原生的IPv6网。怎么一个爽字了得。这就印证了一句话:风水轮流转,今年到我家想当年OSPF就因为选择了IPv4作为其基础,从此走向了康庄大道。 可是,有时候你觉得,某些东西是你的绝对优势的时候。 某一天,峰回路转,它反而让你寸步难行。 路由协议都是这样。 何况人生呢?结束语经过一番胡侃瞎聊,相信你就算从来没碰过IS-IS这个协议,现在也有一个大致的了解了。我也没打算花大篇幅一个个的给你讲IS-IS的诸多细节,内容繁多不说,你看了看可能就半路撤退了,内容没有获取到,反而浪费你宝贵的时间。授人以鱼不如授人以渔~好了,轮到你给小伙伴们吹嘘了。。。内容不够你看,瞅瞅这个:我还有个专栏~此专栏通过“网络路由篇”,“网络交换篇”,“网络安全篇”,“QoS篇”四大典型技术模块,分别给各位讲述运维中的网络设计思路和一些运维的技术难题。知识够广 - 还全是干货。要不,来一份?传送门如下:老司机网络运维干货集锦,点我进行传送>>>
资讯 1 1 2137天前
admin
4511
原文地址:https://weibo.com/ttarticle/p/show?id=2309351002704252628124081464转载自:岛上十点(BBfresh)作者:乔治王高考第一天,越来越多的家长问我孩子网瘾的问题。我作为一名从业多年的资深游戏策划,首先得说个现实,商业化的网络游戏,无不是为让玩家沉迷所设计的。为了让玩家沉迷,我们做的功课比各位父母要深入的多,这根本不是一个维度的对抗,所以无奈是大多数父母的感受。我们非常清楚你的儿子想要什么,愿意付出什么,以及什么是他喜欢的。百万玩家的数据和调研在我们的数据平台上随时可查,我们的每一个改动都和数据有关,我相信我比你更了解你的儿子的喜好。作为一个游戏策划,这是我的工作,但作为一个家长,我儿子也读小学了,但他却没有对游戏成瘾。说句不好听的,引导玩家和教育儿子没有本质的区别,而在引导玩家这件事上,我经验丰富。家长要端正态度很多问我,作为游戏策划,你的儿子玩不玩游戏?很多家长都问过我这事,有意思的是我一回还遇到一个亲戚说:你这个做游戏的,还让自己儿子也玩游戏,你怎么想的,赚钱赚的脑子拎不清了?我只能苦笑,这个亲戚的儿子沉迷LOL,住校时晚上翻墙去网吧,房间里贴着亚索和劫的海报,上回暑假见过一回,我和他聊的话题是Faker明年到底会不会服兵役,不过没聊几句他的母亲就如临大敌。真想要让孩子摆脱网瘾,做家长的自己首先要端正态度,如果只把游戏当做洪水猛兽,不去深入了解,逃避只会让事越来越大。我儿子当然玩游戏,非但给他玩,我还买更好的游戏让他体验。最开始玩植物大战僵尸和我的世界,去年开始玩王者荣耀,不过给他买了switch后,开始玩塞尔达了,而现在在玩奥德赛。为什么他不和同龄人一起玩王者荣耀?当你见识过越多,就对越低级的刺激不敏感,就像没有人一边玩《塞尔达》一边玩《贪玩蓝月》一样,人的阈值会越来越高,逐渐对低质量游戏变得不感冒。禁止孩子玩游戏是不现实的,但是可以选择合适的游戏让他体验,高质量的游戏教会的并不比书本要少。王者荣耀他也玩,但对他更像是一个社交工具,他逐渐觉得并不需要靠王者才能获得社交和认同感。很多人对见识的增长都来源于年龄,但是这样太花费时间了,当你帮助他见识过什么是更好的东西,低级的刺激对他就没有意义。好比作为一个成年人,钱对我的乐趣比玩游戏可带劲多了,马云却认为钱对他没有意义。亲戚家的娃儿在被压抑了一个月后就彻底爆发了,在LOL赛季结束前跑出去通宵了三天,被抓回来就一顿毒打。不过他却并没有后悔,他和我说上到钻石了,有钻石框可以领。甚至我的舅舅,作为一个电工每个月有五六千的收入,但至今还迷恋着游戏厅,每个月存一千块在饭卡里吃饭以外,全部花在了里面,没有结婚讨老婆,住在宿舍里。我曾和他说过现在电脑上游戏好玩多了,你自个拉个宽带在家玩不是挺好的还省钱,但他却并不相信。玩游戏不是原罪,哪怕没有游戏,还有番剧、网络小说,只要它比读书有意思,就足够所谓“毁掉一个年代的孩子”。我小时候也有“电视病”,我爸见我一天到晚看电视也叹气,这娃迟早要完,现在他老人家最爱的事,就是上本地的游戏平台打打麻将下下棋,绝口不提沉迷的事儿。眼界的提升,让人发觉过去非常执着于喜欢的东西,不过是沧海一粟。当策划已经在拆解马斯洛需求,尊重和自我实现在游戏中如何体现的时候,父母只是指望孩子突然自己开窍,就像是弹弓射大炮。沉迷游戏的本质你有没有想过,你的孩子为什么一开始会选择玩一款游戏?游戏是一个把复杂事物条理化的产物,游戏的很多玩法的设计都源于生活、来自于人性,只不过设计者将规则设计得比现实更清晰、反馈更明确、更洞悉玩家的想法。所以玩家在游戏中会有爽、满足、实现了的快感,这是在现实中难以获得的。商业化的网络游戏,新手引导是一个非常重要的环节。简单来说,就是设计非常多的细节目标,让玩家按部就班的达成,并给予奖励的过程,以达到上手游戏的目的。同样是让你的儿子学东西,游戏策划通常花费数月把每一个环节都以数据为指标来打磨,大到整个流程,小到一个按钮,都是为了你儿子能继续玩下去。相信设计者是专业的,有大多数家长都没有的耐心。这个指标,及格线一般是第二天保证 40% 以上的玩家能再上线,我们称为次日留存。相同还有七日留存,所以说为什么游戏往往都有 7 日签到,或者 30 日签到。我给我儿子同样定了一套上学的新手引导,在三年级刚上英语课的时候,我只需要他及格,便奖励他一个月的零花钱翻倍。他们班只有不到六个人不及格,他很轻松的完成了目标,我立刻给他兑现了奖励。在游戏行业我们管这叫首充,只需充值几块钱,可以享受数倍于你充值的奖励。因为我们发现,只要充过一次钱的玩家,充第二第三次的概率非常高。玩家始终需要被引导,不然就很容易离开游戏,孩子也一样。就像七日登录,又比如每个赛季你上了黄金段位就送你的英雄皮肤。每一次目标无需太难,太难会适得其反,保持在一个个稳定的画饼-完成-奖励再画饼的小循环中,让人始终在追求。兑现奖励后,我要求他拿70分,除了零花钱以外,只要他愿意每天记几个单词,我每天都会愿意让他玩一会游戏。一旦他进入了这个循环体系,成绩变好只是一个结果。引导孩子的技巧[标签法]之前有不少家长找到我,说我的儿子沉迷游戏,但当我问你儿子在玩什么游戏的时候,十个里面九个不知道。就好像我儿子喜欢吃一道菜,但是这道菜我却闻所未闻,也就无从下手了。换到孩子玩游戏这件事上来,家长觉得游戏太厉害束手无策,其实本质上还是对它的不了解。知己知彼的道理大家都懂,可就是没人知道第一步要怎么做,下面我来讲几个技巧。第一步:贴标签。人们反感别人给自己贴标签,但往往会给自己贴标签,这是一个快速定义自己的一个好办法。比如我妈,我给她定义的是中年、母亲、退休、广场舞、小城市。通过这几个标签,大约可以猜到她的社交范围是广场舞的阿姨大妈和小区里退休的前同事,以及各路兄弟姐妹亲戚。你会发现,光看“母亲”是看不出信息量的,标签之间是有联系的,标签越多,就越能准确的定义一个人的特点。为了博我母亲开心,前年我带父母去了一趟长滩岛,那里低廉的消费,酸爽的SPA,新鲜的水果和干净的沙滩让人非常享受,但我爸妈更享受的是回国之后和亲戚朋友们的谈资。这趟出国旅行,在她们的社交圈里,成了有孝心、档次高、会享受和生活充实丰富的代名词。这种小地方上的社交愉悦感,是我为他们选择东南亚这趟旅行的原因。作为策划,我们给玩家贴了很多标签,比如二次元、竞技、九零后、社交。我们通过标签来筛选出,谁到底会成为我们游戏的玩家,并为我们付钱。话说话来,如果我立刻让你给你的儿子贴标签,你可能会发现对他一无所知,除了说他沉迷游戏,不爱学习以外。用标签的方式拆解一个事物,找出里面的联系,你便会心里有数。我的小表妹今年读初三,是我看着长大的,父母基因好,人已经长到一米八了和我平视。春节时我发现她在玩王者荣耀,暑假时还不见她玩,现在已经轻车熟路。重点初中、爱漂亮、成绩不错,这是我对她的标签,初三的压力不小她怎么有心情玩游戏?后来她组了一个好友,我发现段位比她还要低,组他的原因,竟然是因为“他长得好看”。我大概知道她沉迷王者的问题所在了。学生有一个很重要的标签,就是频繁的面对面的社交行为,这是容易形成恋爱、小团体或攀比心理的地方。王者荣耀只是她和这个好看男生的社交工具。所以我小姨在担心她会不会沉迷王者考不上好高中时,我则在担心她是不是恋爱了,我只是多得到了一个标签,问题就能找的更精准。除了贴标签以外,我们还要不断的更新他的标签。我们都知道一个标签是好赌、有钱的人,下一步就会进入赌场,但是当他亏光后,变为好赌又没钱的时候,他会做什么呢?标签越来越多,我们就可以模糊的看到下一步的走向,以及问题的根源到底在哪儿。和父母害怕游戏一样,动物怕火,害怕被烧死,但是人类可以轻松的控制它,区别只在于动物对火无知的恐惧。很多家长问到我:我的儿子沉迷游戏怎么办?我这时不是担心他儿子,我忧虑的是他自己:你平心而论,对儿子为什么会沉迷游戏,是不是像动物面对火一样,一无所知。[惩罚与奖励法]许多家长的惩罚方式很容易将自己摆在孩子的对立面。如何惩罚孩子,简单来说,就是不要拿走属于他自己的东西。在游戏设计中有一个常识,策划几乎不因为玩家没达到目标,而把他已有的东西拿走来作为惩罚,相反是许诺一个奖励,你达成了才能获得。好比完成任务后获得的金币,打死Boss掉落的装备。不会因为你没打死Boss,作为惩罚没收你的装备,这样带来极强的挫败感。惩罚对一个孩子来说是一件严重的事情,在游戏中我们也极少惩罚玩家,哪怕你玩的再烂,我们都会告诉你:你玩的不错,还有以下几种办法可以让你变得更强。如果我的儿子反复受到惩罚,他会觉得这事不适合我,他会逃到一个天天夸他很厉害的舒适区中去,而这往往就是游戏。而如何奖励孩子,简单来送儿子东西时要谨慎。首先游戏策划永远不会偷偷或者无缘无故的送你东西,背后始终都惦记着你什么,不管是期待你多上线也好,期待你想充钱也好,而且大奖励在送之前,都会先画个饼,告诉你想获得是有条件的。奖励跳出来的特效永远酷炫具有仪式感,希望你记住我们对你的好,让你心情激动的明白,这是我们奖励你的,而不是我们欠你的。如果你给孩子的奖励被他认为是理所应该,他也许会因为哪天买不起最新的iPhone、买不起想要的车时怪罪你太过抠门。那么我们可以奖励什么给孩子?我们可以送孩子手机、游戏机的使用权,迪士尼两日游,新款NB鞋一双,或者给他买个皮肤买个游戏也无妨,以财力来定。但是直接赠送手机、人民币、游戏机则不行。我们要投其所好,但要记住,这些奖励都有一个共同点,就是有使用范围,人民币就是没有使用范围的奖励,你不知道他是攒着买手机了,还是消费到游戏中浪去了,它能实现他所有的目标。奖励的目的是它能让儿子获得短暂的快乐,满足他的某一个需求,但过去就没了,下一个目标又在眼前。想清楚什么是你儿子想要的,利用它和你儿子站在一起,完成你们想要的目标。哪怕你儿子要买手办,在你眼里这不就是个塑料小人吗,那你自己也要明白,你买的价值不是这个塑料小人,买的是你儿子达成目标所付出的努力。结语当然,游戏设计极为复杂,一款游戏往往是近百人的打磨才得以呈现,是一个充满了利用人性弱点的集合,并非三言两语可以将其剖析。但是家长指望孩子忽然开窍,或者希望有关部门一封了之,是非常不现实的,因为这并不能解决他沉迷的问题,最有可能帮助他根源上改变的,就是家庭。眼界的提升,让人发觉过去非常执着于喜欢的东西,不过是沧海一粟。目标的拆分和建立,让人可以持之以恒的坚持。拆解标签让你找到沉迷游戏的根本原因,奖励和惩罚,张弛中找到引导的平衡点。游戏如此,生活何尝不是如此。经历过的人都会明白这个道理,只是有些人在过程中付出了惨重的代价,相对于指望政府和游戏公司,家长你自己就是最好的领路人。作者:乔治王:从业多年的游戏设计师,带你以设计者的视角看视角。个人公号:岛上十点(BBfresh)
休闲 0 0 2137天前
admin
4639
原文地址:https://mp.weixin.qq.com/s/ukOHhnI7nLfRoGER68rAPA(歌曲稍大,请耐心等待)“你总说毕业遥遥无期,转眼就各奔东西”又是一年毕业季阳光和汗水交织的初夏告别的日子悄悄来临也许这一别之后许久难再见也许这一别之后再也不见可是,那些年一起熬过的夜晚一起泡过的网吧一起追过的TA还有一起听过的五月天却留存在心底挥之不去“终究会有一天,我们都变成昨天是你陪我走过,一生一回,匆匆的人间有一天,就是今天,今天就是有一天说出一直没说,对你的感谢和你再干一杯”——《干杯》期待一趟旅程精彩万分 你却还在等等到荒废青春 用尽体温才开始悔恨期待一种永恒即使伤痕 也奋不顾身生命还没有黄昏下一站 你的第二人生——五月天《第二人生》“还记得,那晚星空下信誓旦旦的自己吗”那一年我们望着星空有那么多的灿烂的梦至少回忆会永久像不变星空 陪着我最后只剩下星空像不变回忆 陪着我——五月天《星空》“但行好事,莫问前程,愿你我都不被辜负” 我们曾夏啦啦啦的唱过那一首噗通通通的心动多年后我们是否依然是那一个你 那一个我当岁月轻飘飘飘的溜走我们都哎呀呀呀白了头有什么留在你我的心头那是什么——五月天《什么歌》“别忘记,去远方” 让定律更简单 让秩序更混乱这样的青春 我才喜欢让盛夏去贪玩把残酷的未来狂放到光年外——五月天《盛夏光年》“一生很长,要做些有意义的事啊” 今天 珍重谁知道是真是梦明天过后 解答或解脱如果 你在幸存的平行宇宙要怎么做 要怎么活请你对自己说——五月天《2012》“你,就是最好的自己” 我如果有梦 有没有错错过才会更加明白明白坚持是什么我如果有梦 梦要够疯够疯才能变成英雄总会有一篇我的传说——五月天《咸鱼》“要相信,下一秒永远可能有好事发生” 有没有那么一个明天重头过一遍让我再次感受曾挥霍的昨天无论生存或生活我都不浪费不让故事这么的后悔有谁能听见 我不要告别——五月天《如烟》“别急,慢慢来,比较快” 会不会 有一天时间真的能倒退退回 你的我的回不去 的悠悠的岁月也许会 有一天 世界真的有终点也要和你举起回忆酿的甜和你再乾一杯——五月天《干杯》“除了父母,应该不会有人再像您一样照顾我了吧” 只期待 后来的你 能快乐那就是 后来的我 最想的后来的我们 依然走着只是不再并肩了朝各自的人生 追寻了无论是 后来故事 怎么了也要让 后来人生 值得——五月天《后来的我们》
音乐频道 1 0 2145天前
admin
4883
转自:http://dc.pconline.com.cn/1129/11298568.html 以前网络没有像现在这么发达,人们购买电子产品,那些软件驱动都是以CD或者DVD光盘媒介给到用户。现在基本上很多电脑都没配备光驱,很多数码产品的说明书都改成电子版了,直接扫描二维码就能下载软件和驱动,但是有些产品还是帮你配了光盘,里面的东西网上也能下载到,自己没光驱可以读盘,扔了又可惜,还能怎么利用呢?当然是用来拍照啊!一、用光盘的镜面做静物背景  相信大家都见过光盘,一张可以记录数据的塑料圆片上,一面是印有这张光盘的文字或图片信息,而光盘记录数据的一面是会反光的,类似镜面一样,还会有一条条彩虹般的光影出现,很适合用来做背景底。  众所周知光盘中间是有个洞的,显然一张光盘是不够拍比较大的静物,只能拍小的,最好准备多几张光盘,把背景底铺开,就能拍摄比较大的物品。  用大光圈镜头或者长焦镜头拍摄效果会更好,利用其浅景深带来的虚化效果,突出主体,底部的倒影衬托出主体,显得很丰满唯美,有种梦幻般的感觉。二、拍摄人物时用来做虚化前景  以往拍摄人像需要找各种各样的前景来进行衬托,拍多了之后觉得很单调,渐渐地失去了新鲜感。如今有了光盘的反光做前景,同时镜面里面的景物与现实相结合,有种多重曝光的感觉,但又不是多重曝光,难以言喻。  拍出这样的画面很简单,就像上面的Gif一样,将光盘斜斜地贴在镜头的边缘不断地去调整角度,如果光盘反射出来的画面是白色的,说明你角度不够好,将天空反射出来了,应当反射周围的景物,调整多几次,就安心按快门了。  还能利用相机的内置闪光灯,强行加光斑,光盘在没有强光的情况下是很难出彩虹的,用闪光灯来来强行加光斑也是一种手法,适当将闪光灯的灯头压一下,效果会更佳。三、利用其折射出的彩虹光拍人像  有看过电视剧的朋友,都知道彩虹灯是有多么的火,我之前也买过来拍,但是那个彩虹灯的功率很小,导致ISO要开得很高,噪点也是非常多,效果也不怎么好。看到光盘的反光有彩虹出现的那一刻,我就知道有故事要发生了。  用手机的闪光灯就可以单手操作,就像上面的那样,用食指穿过光盘中间的洞,拇指和无名指抓住手机,手机跟光盘的角度呈现45度,这样一来,光盘的镜面将手机的闪光灯柔化了,没有直射这么硬,还伴有彩虹的颜色,拿出相机或手机就能拍到上面这样的效果,记住镜头不能太近,要适当留有大概两米多的距离,近距离时会聚光,离远点的话光线就会散开,彩虹能覆盖到比较大的面积。  全文总结:这期又教了大家用平时意想不到的小物件来拍摄大片,运用一些小技巧就能化腐朽为神奇,把光盘折射出来的彩虹跟镜面这两个特点运用在摄影中,这就说明看到那些看起来跟摄影一点都不沾边的东西,在拍摄中也能起到很大的作用。
休闲 1 0 2152天前
admin
7677
随着Windows 10的完善,目前win10系统下可以安装Linux子系统,通过安装子系统就不必再装双系统,但是子系统安装好后运行的窗口类似开启了一个终端,没有图形界面,那么,这个经验就是教大家怎么去安装Linux图形界面。安装方法就不在这里讲述了,这里我们假定大家已经装好Linux系统进入方法有以下几种:1。在左下角的Cortana中搜索Ubuntu,点击进入,看到的界面就如同我们在Ubuntu下的终端界面,在这个窗口测试一下ls命令,无误。2.通过CMD/Windows Power Shell中,输入bash进入也是可以的进入正题目前网络上主要为两种方案:一。远程桌面协议(参考:https://jingyan.baidu.com/article/ed2a5d1f98577809f6be17a3.html)我们在Linux命令行下依次输入以下命令:更新sudo apt-get update安装 xorgsudo apt-get install xorg安装xfce4sudo apt-get install xfce4安装xrdpsudo apt-get install xrdp配置xrdpsudo sed -i 's/port=3389/port=自定义为你自己的端口/g' /etc/xrdp/xrdp.ini上面是配置端口,其中第一个port3389为固定端口,后一个port为对外访问端口,也即是你之后连进来的端口向xsession中写入xfce4-sessionsudo echo xfce4-session >~/.xsession重启xrdp服务sudo service xrdp restart如果有防火墙,允许就好了。以上内容设置完成后,就可以通过远程桌面连接上去了,用户名与密码为你Linux子系统的密码二。使用第三方插件实现(例如:X-Windows 资料来源:https://blog.csdn.net/u011138447/article/details/78262369)
维护 2 0 2171天前
admin
17541
昨晚更新系统,更新完成后今天开机打开远程桌面意外却提示了 英文提示: An authentication error has occurred. The function requested is not supported Remote computer:xxx.xxx.xx This could be due to CredSSP encryption oracle remediation For more information, see https://go.microsoft.com/fwlink/?linkid=866660 中文提示: 经过查询资料得知 微软相关资料页面:点击访问 知道原因,问题就很好解决了,我们可以通过以下两种方法进行解决 1.如果可以直接访问,则只需在主机上通过安装对应的Windows 补丁即可解决 2.对于无法进行直接访问的,可以通过打开组策略(gpedit.msc),找到如下策略: 策略路径:“计算机配置”->“管理模板”->“系统”->“凭据分配” 英文版策略路径名称:“Computer Configuration”-> "Administrative Templates" -> "System" -> "Credentials Delegation" 设置名称: 加密 Oracle 修正 (Encryption Oracle Remediation) 默认为未配置,我们只需要将其改为已启用,防护级别改为“易受攻击”,应用并保存即可正常连接**ps:在Windows Server 2012 R2中已看不到此选项,建议尝试更新系统后再尝试,或也可尝试通过导入以下注册表尝试解决,如果仍旧无法解决,建议暂时通过修改系统属性中远程桌面的安全选项以解决连接问题注册表路径HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters值AllowEncryptionOracle数据类型DWORD是否需要重启?是运行regedit打开注册表管理器。HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\创建两级文件夹,也就是新建项。CredSSP\Parameters然后再Parameters下新建DWORD 32位,修改名称AllowEncryptionOracle。双击修改值为2.如觉得操作麻烦,也可直接导入以下注册表文件:注册表文件(本地下载)     注册表文件(云文件:0KB)附上KB4093120 官方下载地址:Microsoft Update Catalog
维护 5 0 2175天前
admin
5852
    相信很多和我一样的linux新手都会在安装linux后,输入命令下载文件,常常为输入一个长长的url地址而烦心吧。所以在安装linux后,第一步我们应该及时安装VMware Tools,这样会省不少事。好了,废话少说,开始进入正题吧:如何在Linux命令行模式下安装VMware Tools。选择菜单栏“虚拟机”——“安装VMware tools” ,等待系统自动更换ISO光盘**mount /dev/cdrom /mnt cd /mnt tar zxvf VMwareTools-9.6.0-1294478.tar.gz -C /root/(安装到的目录) cd /root/ cd vmware-tools-distrib/ ./vmware-install.pl最后,我们只需要一路回车到底,完成后重启系统。
维护 3 0 2188天前
admin
4725
原文转自:http://k.sina.com.cn/article_1708729084_65d922fc0010065r5.html阿里资深无线开发专家李运华,系统梳理了自己的思考和理解,希望帮助更多同学少走一些弯路。不管是开发、测试、运维,每个技术人员心里多多少少都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。然而“梦想是美好的,现实却是残酷的”,很多同学在实际工作后就会发现,梦想是成为大牛,但做的事情看起来跟大牛都不沾边。例如,程序员说“天天写业务代码还加班,如何才能成为技术大牛”,测试说“每天都有执行不完的测试用例”,运维说“扛机器接网线敲 Shell 命令,这不是我想要的运维人生”。我也是一位程序员,所以我希望通过以下基于程序开发的一些例子,帮助大家解决这些困惑。大道理是相通的,测试、运维都可以借鉴。几个典型的误区拜大牛为师有人认为想成为技术大牛最简单直接、快速有效的方式是“拜团队技术大牛为师”,让他们平时给你开小灶,给你分配一些有难度的任务。我个人是反对这种方法的,主要的原因有几个:大牛很忙,不太可能单独给你开小灶,更不可能每天都给你开 1 个小时的小灶。而且一个团队里面,如果大牛平时经常给你开小灶,难免会引起其他团队成员的疑惑,我个人认为如果团队里的大牛真正有心的话,多给团队培训是最好的。然而做过培训的都知道,准备一场培训是很耗费时间的,课件和材料至少 2 个小时(还不能是碎片时间),讲解 1 个小时,大牛们一个月做一次培训已经是很高频了。因为第一个原因,所以一般要找大牛,都是带着问题去请教或者探讨。因为回答或者探讨问题无需太多的时间,更多的是靠经验和积累,这种情况下大牛们都是很乐意的,毕竟影响力是大牛的一个重要指标嘛。然而也要特别注意:如果经常问那些书本或者 Google 能够很容易查到的知识,大牛们也会很不耐烦的,毕竟时间宝贵。经常有网友问我诸如“jvm 的 -Xmn 参数如何配置”这类问题,我都是直接回答“请直接去 Google”,因为这样的问题实在是太多了,如果自己不去系统学习,每个都要问是非常浪费自己和别人的时间的。大牛不多,不太可能每个团队都有技术大牛,只能说团队里面会有比你水平高的人,即使他每天给你开小灶,最终你也只能提升到他的水平。而如果是跨团队的技术大牛,由于工作安排和分配的原因,直接请教和辅导的机会是比较少的,单凭参加几次大牛的培训,是不太可能成为技术大牛的。综合上述的几个原因,我认为对于大部分人来说,要想成为技术大牛,首先还是要明白“主要靠自己”这个道理,不要期望有个像武功师傅一样的大牛手把手一步一步地教你。适当的时候可以通过请教大牛或者和大牛探讨来提升自己,但大部分时间还是自己系统性、有针对性的提升。业务代码一样很牛逼有人认为写业务代码一样可以很牛逼,理由是业务代码一样可以有各种技巧。例如可以使用封装和抽象使得业务代码更具可扩展性,可以通过和产品多交流以便更好的理解和实现业务,日志记录好了问题定位效率可以提升10倍等等。业务代码一样有技术含量,这点是肯定的,业务代码中的技术是每个程序员的基础,但只是掌握了这些技巧,并不能成为技术大牛。就像游戏中升级打怪一样,开始打小怪,经验值很高,越到后面经验值越少,打小怪已经不能提升经验值了,这个时候就需要打一些更高级的怪,刷一些有挑战的副本了,没看到哪个游戏只要一直打小怪就能升到顶级的。成为技术大牛的路也是类似的,你要不断的提升自己的水平,然后面临更大的挑战,通过应对这些挑战从而使自己水平更上一级,然后如此往复,最终达到技术大牛甚至业界大牛的境界。写业务代码只是这个打怪升级路上的一个挑战而已,而且我认为是比较初级的一个挑战。所以我认为:业务代码都写不好的程序员肯定无法成为技术大牛,但只把业务代码写好的程序员也还不能成为技术大牛。上班太忙没时间自己学习很多人认为自己没有成为技术大牛并不是自己不聪明,也不是自己不努力,而是在中国的这个环境下,技术人员加班都太多了,导致自己没有额外的时间进行学习。这个理由有一定的客观性,毕竟和欧美相比,我们的加班确实要多一些,但这个因素只是一个需要克服的问题,并不是不可逾越的鸿沟,毕竟我们身边还是有那么多的大牛也是在中国这个环境成长起来的。我认为有几个误区导致了这种看法的形成:上班做的都是重复工作,要想提升必须自己额外去学习。形成这个误区的主要原因还是在于认为“写业务代码是没有技术含量的”,而我现在上班就是写业务代码,所以我在工作中不能提升。学习需要大段的连续时间。很多人以为要学习就要像学校上课一样,给你一整天时间来上课才算学习,而我们平时加班又比较多,周末累的只想睡懒觉,或者只想去看看电影打打游戏来放松,所以就没有时间学习了。实际上的做法正好相反:首先我们应该在工作中学习和提升,因为学以致用或者有实例参考,学习的效果是最好的;其次工作后学习不需要大段时间,而是要挤出时间,利用时间碎片来学习。正确的做法Do more做的更多,做的比你主管安排给你的任务更多。我在 HW 的时候,负责一个版本的开发,这个版本的工作量大约是 2000 行左右。但是我除了做完这个功能,还将关联的功能全部掌握清楚了,代码(大约 10000 行)也全部看了一遍,做完这个版本后,我对这个版本相关的整套业务全部很熟悉了。经过一两次会议后,大家发现我对这块掌握最熟了,接下来就有趣了:产品讨论需求找我、测试有问题也找我、老大对外支撑也找我。后来,不是我负责的功能他们也找我,即使我当时不知道,我也会看代码或者找文档帮他们回答。最后我就成了我这个系统的“专家”了。虽然这个时候我还是做业务的,还是写业务代码,但是我已经对整个业务都很熟悉了。以上只是一个简单的例子,其实就是想说:要想有机会,首先你得从人群中冒出来,要想冒出来,你就必须做到与众不同,要做到与众不同,你就要做得更多!怎么做得更多呢?可以从以下几个方面着手:熟悉更多业务不管是不是你负责的,熟悉更多代码,不管是不是你写的,这样做有很多好处。举几个简单的例子:需求分析的时候更加准确,能够在需求阶段就识别风险、影响、难点。问题处理的时候更加快速,因为相关的业务和代码都熟悉,能够快速的判断问题可能的原因并进行排查处理。方案设计的时候考虑更加周全,由于有对全局业务的理解,能够设计出更好的方案。熟悉端到端比如说你负责 Web 后台开发,但实际上用户发起一个 HTTP 请求,要经过很多中间步骤才到你的服务器(例如浏览器缓存、DNS、Nginx 等)。服务器一般又会经过很多处理才到你写的那部分代码(路由、权限等),这整个流程中的很多系统或者步骤,绝大部分人是不可能去参与写代码的。但掌握了这些知识对你的综合水平有很大作用,例如方案设计、线上故障处理这些更加有含金量的技术工作都需要综合技术水平。“系统性”、“全局性”、“综合性”这些字眼看起来比较虚,但都是技术大牛必备的素质,要达到这样的境界,必须去熟悉更多系统、业务、代码。自学一般在比较成熟的团队,由于框架或者组件已经进行了大量的封装,写业务代码所用到的技术确实也比较少。但我们要明白“唯一不变的只有变化”,框架有可能要改进,组件可能要替换,或者你换了一家公司,新公司既没有组件也没有框架,要你从头开始来做。这些都是机会,也是挑战,而机会和挑战只会分配给有准备的人,所以这种情况下我们更加需要自学更多东西,因为真正等到要用的时候再来学已经没有时间了。以 Java 为例,大部分业务代码就是 if-else 加个数据库操作,但我们完全可以自己学些更多 Java 的知识。例如垃圾回收,调优,网络编程等,这些可能暂时没用,但真要用的时候,不是 Google 一下就可以了,这个时候谁已经掌握了相关知识和技能,机会就是谁的。以垃圾回收为例,我自己平时就抽时间学习了这些知识,学了 1 年都没用上,但后来用上了几次,每次都解决了卡死的大问题。而有的同学,写了几年的 Java 代码,对于 stop-the-world 是什么概念都不知道,更不用说去优化了。Do better要知道这个世界上没有完美的东西,你负责的系统和业务,总有不合理和可以改进的地方,这些“不合理”和“可改进”的地方,都是更高级别的怪物,打完后能够增加更多的经验值。识别出这些地方,并且给出解决方案,然后向主管提出,一次不行两次,多提几次,只要有一次落地了,这就是你的机会。例如:重复代码太多,是否可以引入设计模式?系统性能一般,可否进行优化?目前是单机,如果做成双机是否更好?版本开发质量不高,是否引入高效的单元测试和集成测试方案?目前的系统太庞大,是否可以通过重构和解耦改为 3 个系统?阿里中间件有一些系统感觉我们也可以用,是否可以引入 ?只要你去想,总能发现可以改进的地方的;如果你觉得系统哪里都没有改进的地方,那就说明你的水平还不够,可以多学习相关技术,多看看业界其他优秀公司怎么做。我 2013 年调配到九游,刚开始接手了一个简单的后台系统,每天就是配合前台做数据增删改查,看起来完全没意思,是吧?如果只做这些确实没意思,但我们接手后做了很多事情:解耦,将一个后台拆分为 2 个后台,提升可扩展性和稳定性。双机,将单机改为双机系统,提高可靠性。优化,将原来一个耗时 5 小时的接口优化为耗时 5 分钟。还有其他很多优化,后来我们这个组承担了更多的系统,也就是这个小组 5 个人,负责了 6 个系统。Do exercise在做职业等级沟通的时候,发现有很多同学确实也在尝试 Do more、Do better,但在执行的过程中,几乎每个人都遇到同一个问题:光看不用效果很差,怎么办?例如:学习了 Jvm 的垃圾回收,但是线上比较少出现 FGC 导致的卡顿问题,就算出现了,恢复业务也是第一位的,不太可能线上出现问题然后让每位同学都去练一下手,那怎么去实践这些 Jvm 的知识和技能呢?Netty 我也看了,也了解了 Reactor 的原理,但是我不可能参与 Netty 开发,怎么去让自己真正掌握 Reactor 异步模式呢?看了《高性能MySQL》,但是线上的数据库都是 DBA 管理的,测试环境的数据库感觉又是随便配置的,我怎么去验证这些技术呢?框架封装了 DAL 层,数据库的访问我们都不需要操心,我们怎么去了解分库分表实现?诸如此类问题还有很多,我这里分享一下个人的经验,其实就是 3 个词:learning、trying、teaching!Learning这个是第一阶段,看书、Google、看视频、看别人的博客都可以,但要注意一点是“系统化”,特别是一些基础性的东西,例如 Jvm 原理、Java 编程、网络编程,HTTP 协议等等。这些基础技术不能只通过 Google 或者博客学习,我的做法一般是先完整的看完一本书全面的了解,然后再通过 Google、视频、博客去有针对性的查找一些有疑问的地方,或者一些技巧。Trying这个步骤就是解答前面提到的很多同学的疑惑的关键点,形象来说就是“自己动手丰衣足食”,也就是自己去尝试搭建一些模拟环境,自己写一些测试程序。例如:Jvm 垃圾回收:可以自己写一个简单的测试程序,分配内存不释放,然后调整各种 jvm 启动参数,再运行的过程中使用 jstack、jstat 等命令查看 jvm 的堆内存分布和垃圾回收情况。这样的程序写起来很简单,简单一点的就几行,复杂一点的也就几十行。Reactor 原理:自己真正去尝试写一个 Reactor 模式的 Demo,不要以为这个很难,最简单的 Reactor 模式代码量(包括注释)不超过 200 行(可以参考 Doug Lee 的 PPT)。自己写完后,再去看看 Netty 怎么做,一对比理解就更加深刻了。MySQL:既然有线上的配置可以参考,那可以直接让 DBA 将线上配置发给我们(注意去掉敏感信息),直接学习。然后自己搭建一个 MySQL 环境,用线上的配置启动;要知道很多同学用了很多年 MySQL,但是连个简单的 MySQL 环境都搭不起来。框架封装了 DAL 层:可以自己用 JDBC 尝试去写一个分库分表的简单实现,然后与框架的实现进行对比,看看差异在哪里。用浏览器的工具查看 HTTP 缓存实现,看看不同种类的网站,不同类型的资源,具体是如何控制缓存的。也可以自己用 Python 写一个简单的 HTTP 服务器,模拟返回各种 HTTP Headers 来观察浏览器的反应。还有很多方法,这里就不一一列举,简单来说,就是要将学到的东西真正试试,才能理解更加深刻。印第安人有一句谚语:I hear and I forget. I see and I remember. I do and I understand ,而且“试试”可以比较简单,很多时候我们都可以自己动手做。当然,如果能够在实际工作中使用,效果会更好,毕竟实际的线上环境和业务复杂度不是我们写个模拟程序就能够模拟的。但这样的机会可遇不可求,大部分情况我们还真的只能靠自己模拟,然后等到真正业务要用的时候,能够信手拈来。Teaching一般来说,经过 Learning 和 Trying,能掌握 70% 左右,但要真正掌握,我觉得一定要做到能够跟别人讲清楚。因为在讲的时候,我们既需要将一个知识点系统化,也需要考虑各种细节,这会促使我们进一步思考和学习。同时,讲出来后看或者听的人可以有不同的理解,或者有新的补充,这相当于继续完善了整个知识技能体系。这样的例子很多,包括我自己写博客的时候经常遇到,本来我觉得自己已经掌握很全面了,但一写就发现很多点没考虑到。组内培训的时候也经常看到,有的同学写了 PPT,但是讲的时候,大家一问,或者一讨论,就会发现很多点还没有讲清楚,或者有的点其实是理解错了。写 PPT、讲 PPT、讨论 PPT,这个流程全部走一遍,基本上对一个知识点掌握就比较全面了。后记成为技术大牛梦想虽然很美好,但是要付出很多,不管是 Do more 还是 Do better 还是 Do exercise,都需要花费时间和精力,这个过程可能很苦逼,也可能很枯燥。这里我想特别强调一下:前面我讲的都是一些方法论的东西,但真正起决定作用的,其实还是我们对技术的热情和兴趣!作者:李运华编辑:陶家龙、孙淑娟来源:转载自阿里技术微信公众号
休闲 1 0 2211天前
admin
6716
原文地址:https://bbs.pediy.com/thread-225175.htm今天我们探索一个问题: 64位的ntdll是如何被加载到WoW64下的32位进程?今天的旅程将会带领我们进入到Windows内核逻辑中的未知领域,我们将会发现32位进程的内存地址空间是如何被初始化的。WoW64是什么?来自MSDN:WOW64是允许32位Windows应用程序无缝运行在64位Windows的模拟器。  换句话说,随着64位版本Windows的引进,Microsoft需要拿出一种允许在32位时代的Windows程序与64位Windows新的底层组件无缝交互的解决方案。特别是64位内存寻址和与内核直接交流的组件。两个NT层,一个内核在32位的Windows系统中,要调用Windows API的应用程序需要经过一系列的动态链接库(DLL)。然而,所有的系统调用最终会定向到ntdll.dll,它是在用户模式下将用户模式API传递给内核的最高层。以调用CreateFileW为例,这个API调用源于用户模式下的kernel32.dl,随后它以NtCreateFile传递给ntdll,随后NtCreateFile通过系统调度程序将控制权传递给内核。在32位Windows下这是非常简单的,然而,在WoW64下需要额外的步骤。32位的ntdll不可以直接将控制权交给内核,因为内核是64位的,只接受遵循64位ABI的类型(译者注:ABI,Application Binary Interface,应用二进制接口)。正因为如此,一个翻译层以几个标准的命名为wow64.dll,wow64cpu.dll和wow64win.dll的DLL的形式被添加到64位Windows。这几个DLL负责将32位调用转换成64位调用。那些调用最终被定向到映射到每个32位进程中的64位ntdll。许多关于这种从32位系统调用到64位系统调用(1)的神奇转换的信息是可获得的,所以我们不会从这里进入。我们最关注的是内核何时和怎样将64位版本的ntdll映射到一个32位进程。看起来像这样:我们特别关注倒数第二项。我们能发现ntdll被映射到地址是64位地址范围(7FFFFED40000-7FFFFEF1FFFF),而且它的位置在Windows 64位系统文件所在的System32\路径下。然而,我们知道32位进程不可以访问或者运行在64位内存空间。为了理解上面输出的内容,我们首先讨论VAD(Virtual Address Descriptor,虚拟地址描述符)是什么和它将如何帮助我们理解加载64位dll到32位进程的机制的。什么是虚拟地址描述符?VAD是Windows操作系统跟踪系统中可用物理内存的许多方法之一。VAD专门跟踪每个进程用户模式范围的保留的和提交的地址。任何时候一个进程请求一些内存,一个新的VAD实力被创建用来跟踪内存。VAD被构造成一个自平衡树,每个节点描述了一段内存范围。每个节点至多包含两个子节点,左边是低地址,右边是高地址。每个进程被分配一个VadRoot,之后通过遍历VadRoot来分辨额外用来描述保留或提交的虚拟地址范围的额外节点。我们需要关注WindDBG中的!vad命令的输出,因为这是我们将大量使用来跟踪64位Windows中32位进程的映射的输出。对于这个练习,不是所有的域对我们来说都是特别有趣的。我们考虑测试程序HelloWorld.exe的输出。通过!process ProcessObject 命令的输出来分辨我们进程的VadRoot。 一旦我们确定了VadRoot,我将地址输入到 !vad 命令。(输出为了容易分析已被截断)我们看到五列: "VAD", "Level", "Start", "End", 和"Commit".!vad命令 接受VAD实例的地址;在我们的例子中,我们已经为它提供了在此进程中通过使用!process命令获得的VadRoot。VAD地址是当前VAD结构体或实例的地址:等级(Level)描述了这个VAD实例(节点)在所在树中的级别。Level 0是从上面!process输出中获得的VadRoot。开始(Starting)和结束(Ending)地址值用VPN(Virtual Page Numbers,虚拟页数量)表示。这些地址可以通过乘以页面大小(4kb)或者左移3位转化为虚拟地址。结束VPN会添加一个额外的0xFFF来扩展到页面末尾。如我们上面例子中的D20->D20000,DD20->DD2FFF。提交(Commit)是被此VAD实例描述的范围内提交页面的数量。分配类型(type of allocation)告诉我们改特定范围是否已经被映射或是进程私有的。访问类型(Type of access)描述改范围内的允许访问。最后是被映射到当前区域对应的名称。一个AVD实例可以以多种方式创建。如通过使用映射API(CreateFileMapping/MapViewOfFile)或者内存分配API如VirutalAlloc函数。内存可以是保留或者提交的(或free的),或保留和部分提交的。无论哪一种,一个VAD项被映射到进程的Vad树来让内存管理器知道此进程中当前已提交的内存。我们对VAD 的观察将揭示WoW64下运行的32位进程的初始设置。  映射NT子系统DLL进程初始化的早期,在主可执行文件被映射和初始化之前,Windows为特殊区域确定和保留一些地址范围。其中包含初始进程地址空间,共享系统空间(_KUSER_SHARED_DATA),控制流守护位图区域,和NT本地子系统(ntdll)。由于进程初始化整体的复杂性,我们只关注最后一块,它包含32位ntdll和64位ntdll加载到32位进程地址空间的逻辑。我们关注一系列的API调用和在每个点的内存区域的虚拟地址描述符(VAD)。为了让内核区分怎样映射一个新进程,它需要知道是否这是一个WoW64进程。当进程对象最初被创建,内核通过读取名为_EPROCESS.Wow64Process的未文档化结构体_EPROCESS结构体的值来实现此操作。PspAllocateProcess是我们探索开始的地方,但是更具体的说,我们开始在MmInitializeProcessAddressSpace()。MmInitializeProcessAddressSpace()负责与一个新进程地址空间有关的初始化。它调用MiMapProcessExecutable,该函数创建了定义初始进程可寻址内存空间的VAD项,随后将新创建的进程映射到它的基虚拟地址。一个特别有趣的函数是PspMapSystemDlls。我们关注在调用PspMapSystemDlls之前的进程地址空间的样子。在WinDBG中确保我们当前处于我们测试应用程序的上下文中(.process),并寻找当前VadRoot(!vad output)。          到目前为止我们可以观察到,我们的进程在32问地址空间中被映射和分配了一个基地址(1200),内核共享内存(0x7FFE0000-0x7FFE0FFF) 和64KB保留内存区域(0x7FFE1000-0x7FFEFFFF) 也已经被映射到他们各自的虚拟地址。PspMapSystemDlls 通过一个包含多个平台子系统模块的全局指针迭代。对于x86和x64Windows,这些是分别位于 C:\Windows\SysWow64 和C:\Windows\System 目录中的ntdll.dll。一旦 PspMapSystemDlls 发现要加载的DLL,它调用 PspMapSystemDll 来映射他们(DLLs)到进程的地址空间。该函数非常简短,下面展示了一个片段。为了正确映射本地子系统,需要满足一些条件。         PspMapSystemDll 通过调用 MmMapViewOfSection 实现实际的本地DLL的映射,并保存所占的基地址。在这两个DLL映射完成并且他们的VAD项初始化完成后,我们的32位进程地址空间看起来像这样:             所以现在,我们映射完我们的进程(0xc40000-0xcf2fff),内核共享内存空间(0x7ffe0000-0x7ffe0fff),32位地址空间的有效结束区域(0x7ffe1000-0x7ffeffff),和我们的两个NT子系统DLL。锁定地址空间为了完成32位进程的映射,还有最后一步要做。我们知道一个32位进程最多寻址到2GB的虚拟内存,所以Windows需要屏蔽此进程剩余的地址空间。对于32位进程,屏蔽在 0x7FFF0000 - 0x7FFFFFFF 之后;然而,0x7FFeFFFF 之后什么也不可以映射。基于此事实,紧邻64位NTDLL的内存区域需要保留或者屏蔽。要做到这一点,内核标记剩下的64位地址空间为私有。它通过遍历当前进程的VAD树和定位最后可用的虚拟地址来创建此VAD项,然后附加一个新的VAD项。完成此任务的API是 MiInitializeUserNoAccess。该函数接受当前进程句柄和一个虚拟地址。传递的虚拟地址是 0x7FFF0000,这是32为进程最后可寻址范围的起始。然后,它遍历当前的VAD项并执行一个新范围的插入,该范围覆盖了32位进程剩余的地址空间。在此调用后,我们的进程地址空间看起来像这样:      我们现在可以发现,我们的32位进程已经映射,并且它的合规的内存地址范围已经被内核保留。涵盖 0x7FFF0 - 0x7FFFFED3F 和 0x7FFFFEF20- 0x7FFFFFFEF 范围的VAD实例已经被内核保留为私有。随后任何检索内存的调用仅仅会发生在允许的32为地址空间内。一旦进程完全加载,我们可以看到额外的已提交的内存出现在进程(0xC40000)附近的地址空间。       结束演讲我们观察到64位Windows下的32位进程的初始映射以及64位ntdll如何被映射到64位区域,随后64位地址空间被锁定,防止用户访问,我们学到了什么?1、早期初始化逻辑决定我们是否准备映射一个WoW64进程。2、分配最初的32位地址空间区域;这包括最高可访问的32位地址范围,和进程首选的基虚拟地址。3、NT子系统DLL被加载到他们各自的地址范围,32位ntdll加载到32位空间,64位ntdll加载到64位地址空间。4、MmInitializeUserNoAccess 用来创建与64位ntdll范围相邻的西游范围。这具有从32位进程锁定64位可寻址空间的效果。希望这篇文章提供了一些关于Windows如何允许讲32位进程无缝集成到64位Windows操作系统的透明度。随着WoW64模拟层的添加,对地址空间可用性进行了一些额外的考虑,并且这个过程反映了一些这些考虑和及其实现。 
开发 2 0 2233天前
admin
35316
原文载自:http://www.hao4k.com/thread-9349-1-1.html 如果观看4K HDR视频和电影的时候,使用不正确的方法观看时,画面惨白惨白的,简直一塌糊涂,不知道人还以为是片源有问题呢。下面这图应该是很多用户会遇到的情况。HDR片源正确播放和非正确播放对比图。8 p3 a; N: q$ c: G4 N  g  在开始介绍如何用PC播放HDR之前,小编还是建议大家花几百块买台电视盒子,这样省事儿很多。英特尔的牙膏还要一点一点挤,优秀的HDR算法更是捉襟见肘。相反ARM处理器就灵活很多,专门针对视频优化的ARM处理器甚至可以支持HDR10标准(12bit、Rec 2020、4K)的硬解。目前英特尔第七代U虽然支持了HEVC 4K 60FPS硬解,但是对于HDR的视频渲染目前还没有硬解方案。' H0 G, r) [0 L/ i6 Q电脑怎么播放4K HDR片子的方法(相关软件在文章最后均有提供): 2022.08.21 更新说明:如果使用的是完美解码带的potplayer,则已无需再进行设置,完美解码最新版本已自带Lentoid HEVC 渲染方案,最新版完美解码下载地址:完美解码 20220730 - 清新影视 (3vfree.cn)   下面小编介绍的方案是potplayerr播放器+madVR渲染。potplayer就不用过多介绍了,madVR支持读取片源里的HDR信息,然后把颜色重新映射在SDR屏幕上,模拟HDR的效果。& O! j+ {  o/ E; c( ?  一、硬件检测  可以先用DXVAChecker检查一下CPU或者显卡是否支持HEVC 10bit硬解。站长用GTX750检查了一下,最高可以支持到4K HEVC 10bit硬件。  还有一点要注意,如果打算用PC输出到普通显示设备上观看HDR视频,那输出端口必须支持HDMI2.0和DP1.4,DP1.2的宽带虽然也够,但却不支持HDR/BT.2020。然而HD620核显HDMI只支持到了1.4,目前的4K电视是没有DP接口的,所以要借助转换器或者雷电接口了。打算拿Kaby Lake来做HTPC在电视上解码4K HDR视频的朋友,一定要留意HTPC是否有DP或雷电接口,4K电视是否有HDMI2.0接口。  大家可以去potplayerr官网和madVR官网分别下载最新的程序,安装完potplayerr之后记得勾选“安装额外的编解码器”,这样就可以将常用的解码器一并安装了。  二、madVR设置  madVR下载之后解压到非中文名称的路径下,管理员身份运行install.bat。这样madVR就安装好了。       接下来我们打开“madHcCtrl.exe”这个程序,对madVR进行简单设置,显示器设置选第二项Digital Monitor/TV。properties中,如果是PC就选0-255,如果是TV就选16-235。面板色数这里根据你自己面板的参数来,如果屏幕是8bit抖色成10bit且只能显示1670万色,那建议选8bit、9bit,这样色阶过度会好一点,不然画面可能会出现很多噪点或者断层。                   calibration。选择第二项,表示显示器的色彩已经校准为BT.709(此处根据显示器色域性能选择不同的标准)。其他方面默认设置就好。                     三、potplayerr设置 用potplayerr任意打开一个HDR视频,进入选项设置,在视频解码器中添加滤镜,选择系统滤镜,点选“madVR”(上图为具体操作流程)。这样播放器就成功添加了madVR滤镜。 接着把视频输出设备勾选为“Madshi视频渲染”,全屏独占模式选为“使用”(全屏下渲染更快)。至此视频渲染器的设置就完成了。]# g  四、效果检验  potplayerr播放界面下查看视频输出设备,出现了“Madshi视频渲染”。 快捷键Tab调出OSD信息可以看到视频渲染器为“Madshi Video Renderer”。 有木有感觉相当惊艳?!看到两种渲染模式的对比,HDR让人有种回到等离子时代的幻觉,而且这还是在普通显示器上演示的结果,如果放在峰值亮度1000nit及以上的显示设备上,那画面的真实感怕是要溢出了。 i  总结:由于HDR标准面世的时间还不太久,在消费领域推广HDR视频也是近几年才有的事情,所以市面上关于4K HDR的解决方案还并不是很多。本文介绍在PC端渲染的方法也还不尽完善,且对硬件要求非常之高。如果你打算更流畅的体验HDR带来的视觉惊喜,小编还是建议直接购买支持HDR的电视或者盒子。  HDR是为内容而生的,但是一个新技术面世初期,必然面临内容匮乏的尴尬。可这种尴尬并不能很快化解,因为内容创作是一次性的,越来越庞大的电视节目库不可能整体升级,可以期待的只是增量,只有新内容可以用更高的技术规格进行制作。短期内能做的只是通过现有片源+图像处理技术加以适当弥补。(完) 软件下载:①DXVA Check :点击下载    ②madVr :分卷1下载   分卷2下载  分卷3下载  分卷4下载  分卷5下载 附:完整madvr设置:点击查看(图片较大,如果显示不正常请刷新)
其他 1 0 2233天前
桂公网安备 45010302000666号 桂ICP备14001770-3号
感谢景安网络提供数据空间
本站CDN由七牛云提供支持
网站已接入ipv6
免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。
如果某些内容侵犯了您的权益,请通过右侧按钮与我们联系
Your IP: 18.190.159.10 , 2024-04-27 08:36:42 , Processed in 0.5683 second(s).
Powered by HadSky 8.3.7
知道创宇云安全