colrecorel draw x55如何前后调整页面顺序

corel draw x5破解时输入序列号无效_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
corel draw x5破解时输入序列号无效
但是无法算出激活码网上找了个序列号,进行了脱机注册,求解,希望大神能后解决问题
我有更好的答案
激活码: E432-5C6D-BC33-165C-35EA 希望能用。
采纳率:47%
序列号 和 安装代码 复制下来啊
用序列号:DR15R22-SJJ5UKL-VFFU959-55W55NJ安装代码:X5FW-3J45-TT6P-PE2F-K7A8电脑有点慢,久等了,抱歉!
一个供电方式给你发空格:E432-5C6D-BC33-165C-35EA
直接下载绿色版进行安装就可以了。解压缩后,打开文件夹,运行“!)CorelDRAWX5Porable.exe”开始安装。点击安装。CorelDRAW X5绿色破解版:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
河工物理模型中潮汐控制系统组态软件设计及应用.pdf63页
本文档一共被下载:
次 ,本文档已强制全文免费阅读,若需下载请自行甄别文档质量。
文档加载中...广告还剩秒
需要金币:200 &&
你可能关注的文档:
··········
··········
摘要 摘要 组态软件是指数据采集与过程控制的软件,可以非常容易地实现和完成监控层的各项功能,并能
同时支持各种硬件厂家的计算机和I/ 3设备,与高可靠的工控计算机和网络系统结合。可向控制层和
管理层提供软、硬件的全部接口,进行系统集成。 大型河工物理模型试验系统的重要组成部分――潮汐控制系统通常是由测控软件实现的。这类测
控软件不仅开发周期长。而且适应性差.本文在广泛调研的基础上,将组态软件的通用特性和大型河
工模型试验系统的特定需求结合起来,提出采用组态软件思想来开发潮汐测控软件,设计和开发―个
潮汐控制系统组态软件,提出了组态软件平台的数据结构设计方法,组态平台开发环境和运行环境的
设计方案,实时数据库的设计方案,并利用Visualc++6.0实现了该组态软件平台的开发和运行环境。
实现的模块有:图形界面系统中的图元库模块、图元操作工具模块,动画连接模块、数据库模块。 与其他测控软件系统相比,本文采用的设计方案具有较强的适应性,可以适应不同的河工物理模
型:具有较高的实时性,可以同时处理多个任务;具有可扩展性,可以根据少数河工物理模型的特殊
需要,增设控制组件,实现控制功能。
关键词;河工模型、组态软件、图形界面、动画连接、ActiveX控件、实时数据库 东南大学硕士学位论文 ABSTRACT isthesoftwarethatisusedforthedatacollectionand Configurationsoftware process
contr01.Thesoftwarecall
allkindsoffunctionsofthe level complete monitoringeasilF
The softwarecanalso
the andI/Odeviceof computers manycompanies. configuration support the and softwarecan alltheinterfacesof
By industry network,the using computer provide hardwareforthe levelto the
正在加载中,请稍后...&figure&&img src=&/50/v2-364e338c498cff_b.png& data-rawwidth=&524& data-rawheight=&226& class=&origin_image zh-lightbox-thumb& width=&524& data-original=&/50/v2-364e338c498cff_r.png&&&/figure&&p&&i&本文首发于公众号「从零道一」(id: goto0011)。&/i& &i&&a href=&/?target=http%3A///%23/program%3Fid%3D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&点击此处&i class=&icon-external&&&/i&&/a&收听完整播客。&/i&&/p&&p&&b&内容摘要:&/b&王浩然是美国卡内基梅隆大学(CMU)计算机学院的Master of Computational Data Science (MCDS) 项目的在读硕士生,他在上海交大的ACM班完成了本科。我第一次见到他的时候,他在上海纽约大学做GapYear的科研。他和我们聊了包括ACM班、CMU、Gap Year、个人规划等等:&/p&&p&- 入学时恰好赶上图灵奖得主来到ACM班授课&/p&&p&- 本科时候因为高强度的CS专业训练带来的些许遗憾&/p&&p&- 跟着上纽大教授做GapYear的研究时顺便还在复旦做“卧底”&/p&&p&- 喜欢Cornell Tech的特色但最后却选择了去CMU读书。&/p&&p&另外,他很喜欢读Peter Thiel的《从0到1》。&/p&&h2&&b&#1 在交大ACM班有遗憾吗?&/b&&/h2&&figure&&img src=&/v2-0e58c5a08a497c0f11b1b9_b.jpg& data-rawwidth=&900& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-0e58c5a08a497c0f11b1b9_r.jpg&&&/figure&&p&&i&在交大ACM班四年里你觉得对你影响最大的老师或者同学是谁?&/i&&/p&&p&王浩然:我觉得身边有很多优秀的同学,在交往中我学到了很多。他们有几种类型,一种是做研究做得很出色的,也就是本科阶段会在相关领域发几篇一作论文的;也有打ACM的同学,可以拿到全世界的金牌,排名第二。&/p&&p&这样就可以看到优秀的同龄人可以达到什么程度。比如,我大四上在微软亚洲研究院实习的时候,我们组的一个清华姚班的同学,他是我们这一届的研究做得很出色的学生之一,被图灵奖获得者姚期智先生评价为是我们这一届世界上前几名的计算机本科生。&/p&&p&然后老师的话,&b&我进交大的时间很好,很幸运成为ACM班的第十届。ACM是02年创立的,我是11级的,刚好是第十届。当时康奈尔大学(Cornell)有一个图灵奖获得者叫John Hopcroft,他受邀成为了我们班的讲席教授。&/b&&/p&&p&他每学期的期末会抽一段时间来交大给我们授课,也会请美国本土顶尖学校的老师。这样视野就一下子拓宽了,因为就算现在中国大陆最好学校的老师,和美国本土比较好的老师在学术影响力上的差距还是非常明显的。&/p&&p&举一个最简单的例子,在我做的System方向,一个顶会叫OSDI,但如果看OSDI的 Program Committee Member 中在亚洲工作的研究者其实是很少的。很多这种顶级会议的评委都是在国外的,也就带来了直接的差距。所以老师方面,John Hopcroft来了之后能请到国际上影响力很大的老师给我们授课,这是一个。&/p&&p&另外一个就是我们班的创始人,俞勇老师。他对学生教导的是先做人,再做学问,然后在做学问中学做人。他可以说是把他的所有的上班和课余的时间都奉献给了交大,奉献给了ACM班── 我们请的所有的老师,包括John Hopcroft,我们大三暑假统一去Cornell交流一个月,大四可以去亚洲比较好的研究机构做实习都离不开他的支持。&/p&&p&在ACM班也会有所谓的选课“特权”,也就是有一些课只有ACM班能选,可能计算机系的其他学生是选不了的。而且老师也是在交大能请到的最好的老师。&/p&&p&但是,这是好的地方,相应不太好的地方就是,自由的时间可能比较少。“自由的时间”的意思是,像我每年的暑假每年差不多可以有两周可以回家过,但其他的时间,我大一大二大三的暑假都是因为ACM都安排满了。&/p&&p&包括实习,如果你不是很想做科研的话,这个实习并不太合适,因为我们班的实习是要求必须是跟做研究的导师去做的,不能去企业做一个软件工程师这种。&i&(浩然注:现在交大ACM班的机制已经有挺大的改变,包括开放选课自由,提供本科阶段去美国顶级计算机学校交流、实习的机会等等。)&/i&&/p&&p&&i&你觉得本科的时候最大的遗憾是什么?&/i&&/p&&p&王浩然:我本科前两年成绩很差,我得想办法得跟上队伍,我大三大四慢慢跟上了,大四的时候在我们班从成绩来说我已经是前面几个了。&b&但遗憾的是,我所有的时间都在做专业要求我去做的事情。但如果可以重新来一遍,我可以去想想自己真正想做什么,做什么是和别人不一样的,做什么是最有可能的成功的。&/b&&/p&&p&为什么我之前做不了呢?因为想留在这个班级,并且进了这个班之后发现每一个人都做得比我好。这和我在高中时候和同学的感受是非常不一样的,自信心会受影响,就会说我这个都做不好,还能做其他事情吗?&/p&&p&这就是为什么我毕业之后有一年Gap year。我在申请美国研究生学校之后,我开始真正问自己想做什么,我开始看一些创业的书,然后去开始想想看之后会怎么走。其实发现,对于以前来说,可能觉得一定要做计算机、一定要读到博士,因为当时会觉得读到博士之后就可能会掌握有壁垒的技术。&/p&&p&&b&但现在一边在做手上的东西,一边也会想自己合适去做什么。&/b&“合适”这个词我指的是,可以去大公司工作,然后工作几年读MBA,这也是我Gap year的导师建议我的;也可以直接在美国研究生毕业之后,可以直接回国,可能这时已经认识了一些创业公司的老板,然后想办法去找一群合适的人。合适的人指的是,你和这个老板做,你能学到很多东西,这个团队是好的,他们做的东西是能做成的。&/p&&p&所以现在思路开了一些,并不是说一定要申请一个很好的学校,一定要去读一个很好的博士。如果申请不了很好的学校,跟不了很牛的导师,那也不是一定是件很坏的事情。&/p&&h2&&b&#2 为什么会选择Gap Year?&/b&&/h2&&b&&figure&&img src=&/v2-6ecede7c59b9dca6d6cd33ee2d551e6b_b.jpg& data-rawwidth=&900& data-rawheight=&599& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-6ecede7c59b9dca6d6cd33ee2d551e6b_r.jpg&&&/figure&&/b&&p&&i&能不能简单讲一下Gap时候的经历?&/i&&/p&&p&王浩然:首先为什么要Gap呢,因为我实力不够,实力够谁要Gap呀(笑)。我大学做事情少了,正常申请是大四上学期,我在大四上的时候大概知道自己做过什么事请,什么事情是比较牛的,什么不是。我也大概知道自己水平怎么样,然后我觉得不够,需要再做一年的积累。就很简单地做了这个要Gap的决定。&/p&&p&我实习的时候的老师给我介绍了我Gap year的老板张峥教授,他在上海纽约大学。然后我其实大四下就开始跟他做了,我们经常在复旦开会,因为他还有一帮复旦的学生。算是交大的同学在复旦做了半年多的卧底吧(笑)。我大三了做一些很初步的研究了,大四找的实习也是研究相关的,我Gap时候也是跟着教授去做研究的课题。&/p&&p&&b&Gap year最大的不一样是,别人要求你做的事情少了很多。&/b&比如在学校要满足学分的限制和毕业的要求,在公司会有一个直接的老板会让你完成工作指标。但是Gap year,你当然也会有有一个老板,但做研究和做工程的性质不太一样,它的周期会长一点。&/p&&p&&b&我觉得 Gap year 做研究更多是看老板的风格。&/b&有什么样的老板,很大程度上决定你的工作模式。比如有些老师很喜欢一周都要见好几次,要讨论不同的项目,他希望学生在不同的方向都有所涉猎。但有些老师,就可能比较资深,自己可能有开公司,所以会比较难约到。&/p&&p&我的老师是属于对学术非常感兴趣,他自己也同时做好几个题目。一般我们开会的时候是两三个或者四五个同学把每个人的题目拿出来一起讨论。&/p&&h2&&b&#3 为什么阴差阳错来了CMU?&/b&&/h2&&b&&figure&&img src=&/v2-1cb2bac33ae2cf86dc5743a_b.jpg& data-rawwidth=&900& data-rawheight=&675& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-1cb2bac33ae2cf86dc5743a_r.jpg&&&/figure&&/b&&p&&i&我不想花很多时间来说申请,但能不能说一下当时申请CMU时候碰到的困难是什么?&/i&&/p&&p&王浩然:我申请的时候我没想过我会来CMU。我申请一个比较大问题是要选对的项目。我当时也看排名,毕竟除了排名之外,很难对一个学校有很直接的了解。我在计算机前20的学校里面,大概选了十五个学校来申。因为有好几个学校是申不了硕士的,他们几乎不招外校的硕士。所以前二十里能申的大概都申了,都是研究导向型的。&/p&&p&只有我现在这个CMU项目,和Cornell Tech (Cornell在纽约的校园)是以工作为导向的。然后最后阴差阳错,发现这个是我拿的最适合我的offer,所以就来了这个学校 (笑)。&/p&&p&&i&当时你也说过你也很喜欢Cornell Tech。为什么最后没有去呢?&/i&&/p&&p&王浩然:我还专门去看了它的校园。在我知道的里面,Cornell Tech是唯一一个会邀请硕士项目的录取者去做校园参观的学校。当时专门办了一个B1/B2签证,在美国呆了10天。Cornell Tech给我的感觉是,它的理念非常超前。大概它有几个专业,律师,MBA,计算机,还有些其他的。他们有一个很好玩的地方,每学期你会选一门课,这门课你会要做一个小组项目,必须要和其他所有专业的人混搭,一起做一个东西,然后做展示。&/p&&p&这个学校以创业为导向。我记得它给过一个数字,因为在校的时候你会做一个创业项目,我忘了这个数字具体有多少,大概20~30%的项目是毕业之后这些学生会接着做的。所以那是我觉得是很有趣的东西,它整个学校是把交叉学科的概念融入其中的。&/p&&p&我没有去的一个很大的原因是,我之后可能要读博士,但如果我在那个学校,那个学校项目是一年的,完全是就业导向的,可能我能跟的Cornell Tech的导师跟CMU比还是要少一些,所以还是选了CMU。&/p&&p&&i&我们来说说你现在在CMU的就读体验,和你一开始设想的一致吗?&/i&&/p&&p&王浩然:CMU的课程质量很高,可能在中国读计算机的感觉是在课上学到的东西不是特别扎实。但在这边,每一门课的作业其实是布置的很详细的。比如说我有上一门课叫Storage System (存储系统),然后讲课的老师就是做Storage System的专家,我做的作业每一次write-up都写得非常详细,也挺有挑战性的。&/p&&p&&b&我在ACM班也有类似的训练,我们每学期会做一门从国外拷贝过来、有项目的课,会写很多代码。区别就是在CMU,可能一学期要3、4门这样的课同时上。所以CMU的课的设置是很用心的,也是能很轻松地选到在美国很出色的学者的课。&/b&在中国如果想做一些前沿的研究,老师是相对来说要少一点的。可能如果你在CMU,比较活跃的老师都是能做到比较前沿的,实验室也是在做前沿、能引领的工作。&/p&&p&&i&那你有没有和CMU的老师进行一些合作? &/i&&/p&&p&王浩然:合作不敢当,现在有一个老师在带着我做关于Spark Evaluation的一些研究。虽然项目是硕士,也是职业导向的,但如果你可以找到时间,说服这边的教授带你做事情, 他还是会很愿意的带你的,也是很友好的。&/p&&p&&i&在项目读完之后你的打算是怎么样的?&/i&&/p&&p&王浩然:现在手上在做一个项目,不想把这个项目到一半就扔了,所以想之后的七八个月可以继续做这个,做到一定程度然后再结束掉。我是明年的五六月份毕业,但是今年的年底我还是会继续申请博士,等明年二三月份可以拿到结果。也会一边申请一边找工作,然后再选一项。&/p&&h2&&b&#4 人工智能、最有趣的项目、喜欢读《从0到1》&/b&&/h2&&figure&&img src=&/v2-eb8ab6fff46a129a9fa1514c_b.jpg& data-rawwidth=&300& data-rawheight=&420& class=&content_image& width=&300&&&/figure&&p&&i&你是怎么看待现在人工智能的这个话题的呢?&/i&&/p&&p&王浩然:我微信里加了很多做人工智能比我厉害很多的学者(笑)。我不太敢班门弄斧,说我有多了解。但我做过一些视觉方面研究的应用,比如视觉里面的一个应用叫detection(检测),就是说给你一个图你要知道这个东西它在哪儿,能分辨说它是哪一种种类,它是猫还是狗,是桌子还是人。一类是定位,一类是分类。我大概有做一些应用,就是在自己做的一个机器学习的系统上,大概会有一些很浅薄的理解。&/p&&p&深度学习从12年一场视觉的很牛的比赛,有一个很牛的老板叫Hinton, 然后他的组在那个比赛上拿了第一,远远超过第二名,他们用的方法和所有其他的队伍都不一样,他们用的是深度学习。从那次比赛之后,做视觉的和做语言的开始意识到人工智能的春天又回来了,因为人工智能很早就被提出,但经历了几次高潮和低潮。我们现在所处的是它又开始回春的一个时代。&/p&&p&&b&我觉得企业可以做一些学术界做不了的事情。现在会有一些机器学习的开源工具,比如很多人知道的tensorflow,有很多的工具都是慢慢地从学校转向企业&/b&,因为他做一个软件,能分布式训练的工具,还要兼容各种模型,是很需要人力物力的。机器如果是分布式的话,要训一个模型出来,规模要几千台机器。现在我所知道的,机器学习系统用到最多的是6000台机器训同一个模型,如果你六千台机器跑几十个小时,如果用在AWS云上租的机器的价格换算一下,你花的钱就要几万美元了。&/p&&p&机器学习系统的趋势就是慢慢从学校往企业靠。很多机器学习的大佬会去公司里做事。比如说NYU的Yann LeCun在Facebook, 比如Andrew Ng(离职前)在百度,CMU的Alex Smola去了亚马逊,Apple有Ruslan,他也是CMU的老师,像谷歌就更不用说了,有各种做机器学习、做系统的。&/p&&p&&i&你觉得自己做过最有意思的项目是什么?&/i&&/p&&p&王浩然:大三的时候人生第一篇一作publication,但那个是一篇invited paper,意思是导师认识一些杂志的编辑或者评审,他们曾经在导师的工作里看到过一些很有趣的内容,他们就会说你能不能把你这一系列的工作总结一下,发表在我们的杂志上。我当时觉得可以声称自己可以有一篇还不错的文章发表,当时觉得比较厉害。&/p&&p&然后过了一段时间,去了企业的研发部门,做了一些真正的研究,也就是大家都关注的问题,那个时候有了第二篇的论文,发表在一个还不错的会议上。&b&虽然只是一篇Poster,但它发现了一个比较有趣的现象,解决了一些研究者对于某些特定问题的疑问。那时是第一次可以把自己对一些事物的见解去分享出去,而且这个见解可能是之前还没有文献记载的,觉得很酷的。&/b&&/p&&p&另外我 Gap year 做了这样一个工作:现在有多个系统要做一件事情,然后能不能实现一个接口,使它可以在这个系统调用另外系统的函数呢?具体一点就是,当同时有几个开源项目,但你只想主攻一个开源项目,但是另外的开源项目会有一些特定的函数,神经网络里面讲就叫operator,那能不能加一套逻辑或者plug-in,让现有的代码去调用它所有的逻辑和函数。但所有的资源管理,比如CPU、GPU,和分布式的训练都还是在原来的框架上做。&/p&&p&我当时做了一个工具,让一个开源项目可以在另一个开源项目上可以使用了。最后做成了一个新闻稿,发表在我们的网站和微博上,有很多人转载。那个时候觉得我做的东西也开始被别人认可了,那还是挺不错,也得到了不错的评价。现在毕竟看到的牛人越来越多了,自己的水平也在往上涨,现在就并不会觉得这些事情是很牛的。&/p&&p&&i&最后一个问题,能不能推荐几本喜欢看的书?&/i&&/p&&p&王浩然:高中时候看的一本书叫《叔本华的美学随笔》,我记得是在澳洲做医生的一个人翻译的。它是叔本华的文章中的节选,再翻译成中文,有个紫色的封面。我看了之后觉得很有趣,并且有一次我的朋友聚会大概十几个人,我送了他们每人一本书,就是这本。&/p&&p&为什么看那本书呢?因为我高三的时候做了脊柱手术,风险比较高,稍微不注意划破神经可能你整个人下半身就高位截瘫了。手术的死亡率大概是2%,也就五十台里有一台就会死亡。在做手术之前一周就被送进医院,做各种检查,我会开始第一次思考归去来兮的这种事情。&/p&&p&这种事情一个比较好的慰藉的方式就是看哲学。我非常喜欢叔本华的一些观点。我第一次看哲学家写的这些书完全出乎我的意料,他所谈论的事物非常之广泛,最经典的话题是关于死亡的,这和宗教一样,怎么可以平静的看待死亡。还有一些关于知识的、书籍、音乐和思考的,算是包罗万象了,非常喜欢他对这些事物的思考。&/p&&p&Gap Year我看了一本书是《从0到1》(Zero to One),是很畅销的一本书了。它回答了我当时的一个问题:做一件事情之前,会先想想什么是有价值的,然后再去做它。而不是说在学校读研究生上课,毕业找工作,这样一步一步往上走。大众一般是这么走的,但是你要去思考怎么去创造价值,然后要找到一个方法再去实践,所以我很喜欢这本书。&/p&&p&&br&&/p&&p&&b&你可能也喜欢:&/b&&/p&&p&&a href=&/p/& class=&internal&&BAT 实习与创客马拉松夺冠之后,是什么让我选择了网易游戏?(王钦,中山大学)&/a&&/p&&p&&a href=&/p/& class=&internal&&进入上科大的第三年,为什么MIT让我重新认识了科研?(王一帆,上海科技大学)&/a&&/p&&p&&b&关注「从零道一」:&/b&&/p&&p&微信公众号: goto0011&/p&&p&播客收听地址:&a href=&/?target=http%3A///%23/program%3Fid%3D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&网易云音乐&i class=&icon-external&&&/i&&/a& &a href=&/?target=https%3A///us/podcast/%25E4%25BB%258E%25E9%259B%25B6%25E9%E4%25B8%2580/id%3Fmt%3D2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&iTunes Podcast&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&/?target=http%3A//0011.one/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&官方网站&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&欢迎在这个知乎问题写下对我们节目的看法: &a href=&/question/& class=&internal&&如何评价知乎专栏《从零道一》?&/a&&/p&
本文首发于公众号「从零道一」(id: goto0011)。 收听完整播客。内容摘要:王浩然是美国卡内基梅隆大学(CMU)计算机学院的Master of Computational Data Science (MCDS) 项目的在读硕士生,他在上海交大的ACM班完成了本科。我第一次见到他的时候,…
&p&最后一次更新:&br&这个回答不再更新了,问题很多,一一回答,篇幅过大就不再符合问题的定义了。大家最重要的还是打好Java基础 Java编程思想还是要看 多看几遍&br&更新:&br&过去大半年了..这个问题关注者虽然很少 但是还是有很多人跟踪到这个问题&br&我就在提一些自己的经验吧&br&虽然下面的路线图很明确 大家照着这路线走 基本上JavaWeb的知识都能学得差不多&br&但是我觉得 路线图中的内容都只是一些实践,理论方面的东西并没有提 &br&因此我觉得要想学得更好或者精通
大家有必要去学习网络 操作系统 算法等相关的理论知识&br&比如《计算机网络-自顶向下》&br&这本书讲解的是网络体系,计算机是如何通信,TCP/IP的原理 DNS协议等等这些&br&书有一个好处就是类比
将每个原理与现实生活进行了恰当的比喻 使读者更容易理解&br&所以我说这个原因就是:不要只专注于学习某某语言的语法、api、库什么的&br&背后的原理掌握了
你才能飞跃&/p&&p&在知乎 收藏总是比赞多o(︶︿︶)o&br&&/p&&p&最近开了专栏 关于机器学习的 &/p&&p&分为机器学习原理 数学知识的应用 机器学习算法实现 实例 以及机器算法包使用 &/p&&p&感兴趣的可以看看 &/p&&p&&a href=&/jiaopan& class=&internal&&机器学习每日一记&/a&&/p&&p&&br&&/p&&p&&a href=&///?target=https%3A///JiaoPaner/WeiboSpider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - JiaoPaner/WeiboSpider: 一个基于微博用户数据的Java爬虫项目&i class=&icon-external&&&/i&&/a&&br&一个小的抓取微博用户信息和粉丝以及粉丝的信息及其粉丝的爬虫&br&代码不多 就10个左右类
用到的库:OkHttp,Jsoup&br&给初学者参考参考 &br&&/p&&h2&&b&更新时间 更详细的路线&/b&&/h2&&p&点击放大无比清晰 或者右键保存至你的电脑&/p&&p&&br&&/p&&img src=&/v2-b75b3e676c6e26eadb846a600dc86699_b.png& data-caption=&& data-rawwidth=&701& data-rawheight=&5872& class=&origin_image zh-lightbox-thumb& width=&701& data-original=&/v2-b75b3e676c6e26eadb846a600dc86699_r.png&&&p&&br&&/p&&p&以下是原路线图&/p&&p&&b&==============================第一阶段=================================&/b&&/p&&img src=&/1535fba395badfbba89c6_b.jpg& data-caption=&& data-rawwidth=&851& data-rawheight=&486& class=&origin_image zh-lightbox-thumb& width=&851& data-original=&/1535fba395badfbba89c6_r.jpg&&&img src=&/398ec7a9084a6edada29c2_b.jpg& data-caption=&& data-rawwidth=&852& data-rawheight=&420& class=&origin_image zh-lightbox-thumb& width=&852& data-original=&/398ec7a9084a6edada29c2_r.jpg&&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&==============================第二阶段=================================&/b&&/p&&img src=&/44db73e9f14ddafe9e131_b.jpg& data-caption=&& data-rawwidth=&846& data-rawheight=&475& class=&origin_image zh-lightbox-thumb& width=&846& data-original=&/44db73e9f14ddafe9e131_r.jpg&&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&==============================第三阶段=================================&/b&&/p&&img src=&/fe04dacb2ca4ae905508_b.jpg& data-caption=&& data-rawwidth=&845& data-rawheight=&165& class=&origin_image zh-lightbox-thumb& width=&845& data-original=&/fe04dacb2ca4ae905508_r.jpg&&&p&&br&&/p&&p&&br&&/p&&p&&b&==============================第四阶段=================================&/b&&/p&&img src=&/1ffccfea4c713dc1f6dd2ddb031b6f3f_b.jpg& data-caption=&& data-rawwidth=&850& data-rawheight=&396& class=&origin_image zh-lightbox-thumb& width=&850& data-original=&/1ffccfea4c713dc1f6dd2ddb031b6f3f_r.jpg&&&img src=&/ebd99c7d0da8ef0e25c2e8d5d40256c9_b.jpg& data-caption=&& data-rawwidth=&850& data-rawheight=&267& class=&origin_image zh-lightbox-thumb& width=&850& data-original=&/ebd99c7d0da8ef0e25c2e8d5d40256c9_r.jpg&&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&==============================第五阶段=================================&/b&&/p&&img src=&/976ec14de090_b.jpg& data-caption=&& data-rawwidth=&844& data-rawheight=&502& class=&origin_image zh-lightbox-thumb& width=&844& data-original=&/976ec14de090_r.jpg&&&p&&br&&/p&&p&&br&&/p&&p&&b&==============================第六阶段=================================&/b&&/p&&img src=&/c8ff644f7cbce9ec68ba_b.jpg& data-caption=&& data-rawwidth=&846& data-rawheight=&476& class=&origin_image zh-lightbox-thumb& width=&846& data-original=&/c8ff644f7cbce9ec68ba_r.jpg&&&img src=&/ecc4bea9dab1ebf010198_b.jpg& data-caption=&& data-rawwidth=&848& data-rawheight=&325& class=&origin_image zh-lightbox-thumb& width=&848& data-original=&/ecc4bea9dab1ebf010198_r.jpg&&&p&&br&&/p&&p&&br&&/p&&p&&b&==============================第七阶段=================================&/b&&/p&&img src=&/20e41b5d76ca5fb513c537_b.jpg& data-caption=&& data-rawwidth=&844& data-rawheight=&486& class=&origin_image zh-lightbox-thumb& width=&844& data-original=&/20e41b5d76ca5fb513c537_r.jpg&&&p&&br&&/p&&p&参考:&a href=&///?target=http%3A///thread-.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【爱分享,爱Java】JAVA学习路线【新手可以参考看下】&i class=&icon-external&&&/i&&/a&&/p&
最后一次更新: 这个回答不再更新了,问题很多,一一回答,篇幅过大就不再符合问题的定义了。大家最重要的还是打好Java基础 Java编程思想还是要看 多看几遍 更新: 过去大半年了..这个问题关注者虽然很少 但是还是有很多人跟踪到这个问题 我就在…
&p&&a class=&member_mention& href=&///people/ecc0ec035f& data-hash=&ecc0ec035f& data-hovercard=&p$b$ecc0ec035f&&@vczh&/a& 赞后瞬间被顶上来。麻烦有此困扰的各位,如果试了有用之后,请在评论里反馈一下。这快成广大 Win10 用户的心病了。
===================================================
解决 &b&Win10磁盘占用过高甚至长期100%&/b&,确认有用的办法:(不保证100%,但是几台试了都有用)
Win10 自带AHCI驱动版本过老,06年的,需要更新。操作如下:
设备管理器-&
IDEATA/ATAPI控制器-&
右键点击 标准SATA AHCI控制器,属性-&
驱动程序-&
更新驱动程序-&
浏览计算机以查找驱动程序软件&/p&&p&这里的驱动如果是Intel平台,去安装新的 IRST 驱动,手动如上更新。如果是A平台,就找对应的 AHCI 驱动。(另,如果有用,最好是去&b&关掉Win10的硬件驱动自动更新&/b&,省得因为莫名更新又引起问题,详见搜索)&/p&&p&PS. 关于AHCI驱动来源,以Intel平台为例,首先推荐去整机厂商的官网找驱动,例如(联想华硕等等),如果是自己攒机,那去对应主板厂商官网找,如果都找不到,再去驱动精灵这样类似的网站去找,最后还找不到,那就是Intel官网找,但是官网问题在于你得很清楚自己的主板是什么然后对应哪个驱动,分不清(如果胆子大)那就几个可能性的驱动都安装试一下。可以用Intel自己的驱动检测工具。我的是这个:&a href=&///?target=https%3A///zh-cn/download/24501/RAID-NUC& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&&/span&&span class=&invisible&&/zh-cn/download/24501/RAID-NUC&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&-&/p&
赞后瞬间被顶上来。麻烦有此困扰的各位,如果试了有用之后,请在评论里反馈一下。这快成广大 Win10 用户的心病了。
===================================================
解决 Win10磁盘占用过高甚至长期100%,确认有用的办法:(不保证100%,但是几…
&p&我是真正零基础开始学Python的,从一开始的一窍不通,到3个月后成功搭建了一个动态网站(没有用任何框架)。相比于计算机大牛,我更加知道一个小白将会遇到什么坑,遇到哪些难点。我把我的学习过程写在下面,并附上在每个阶段的学习资料,希望对零基础的Python学习者有所帮助。&/p&&p&注:本文只做经历分享,不是技术探讨。&/p&&p&&i&---&/i&&/p&在知乎上常常看到想要转行IT,或者是想学习编程但不知如何开始的朋友。回答这类问题的人往往只是列出书单资源然后给出一个大致的方向。有些朋友一开始就扎入了理论学习的汪洋大海,从苦读类似《算法导论》开始,能够坚持读下来的寥寥无几,学习的积极性也被不断的挫败感消磨的所剩无几。&p&一直以来,编程对我而言是一种「黑魔法」般的存在。今年阿里月饼门,当很多人都参与到是非之争的时候,我更加着迷于程序员区区几行代码的脚本所展现出的威力,对于外行而言,这是超乎他们想象之外的某种能力——为什么我守在电脑面前盯着秒针然后拼命点击鼠标都不一定能抢到的礼物,程序员只需要提前花5分钟写3行代码就轻松搞定?&/p&&p&所以,我的心底深处一直都想变成这样的一位魔法师。今年的8月,刚好工作上想要开发一个基于微信的英语学习网站,借此机会,我决定好好学习一下编程。在此之前,我所有关于程序的知识仅仅来源于两部分,一是本科时期的C语言必修课,现在已经忘的一干二净,不过好歹我从中明白编程是怎么回事;第二部分是大概两年前由于工作关系学的一些Python,不过只是皮毛,现在忘的七七八八。&/p&&p&简单说,我的目标是建立一个网站,不过这个网站是动态的,也就是说它能识别谁登陆,然后对不同的人显示不同的内容。而当时的现实是,我完全不明白网页是如何显示出来的?譬如每个人登陆知乎的时候看到的是定制化的页面,后台是如何基于每个ID来组织出不同的页面的?所有我们看到的问题,回答,参与的评论在背后的服务器上是以一种什么样的形式存在的?又比如为什么有些页面只能在微信端打开,在电脑上就会出错?(不知道你有没有发现这一点)&/p&&p&当时我的心中充满了无数个类似的问号?当然如果你也是小白,一定有着同样的疑问。&/p&&p&好处是一开始就明确了学习的目的:Web建站。所以我的学习方案基本就是通过做项目学习,哪里不懂就解决哪里,边做边学习,不断推进。另外,由于知道很多成功的网站在用Python做服务器开发,比如知乎,所以我就自然选择了Python。&br&&/p&&p&于是我就开始了我充满着挫败感和成就感的编程之路……&/p&&p&从8月到12月的四个月里,除去本来的工作,为了学习质量,我会保证平均每天4个小时的学习时间,周末也不例外。另外,所有的文档,问答都尽量看英文的,这可以帮你剩下大量的时间。12月13日,我做的网站上线了,3天时间大概有5000人访问了这个网站,我有时在后台看着日志,不免有些心潮喷涌,我想把自己的经验写下来,希望对于那些有心学习编程但无从下手的朋友提供一些帮助和鼓励。&br&&/p&&h2&1. 我的自学编程之路&/h2&&p&1)基础&br&&/p&&p&刚开始的时候,我对搭建网站一无所知。为了给自己迅速建立一个框架,我在Google上面泡了整整一天,了解了HTML,CSS,JavaScript,Ajax,jQuery,React,SQL,服务器脚本等等知识,不求精通,只是了解每一项技术是干嘛的,另一方面建立起了一个学习的roadmap,这样大概知道做一个Web App需要哪些知识,分别学习的主次顺序。重点推荐两个资源:&/p&&p&Python基础知识:&a href=&///?target=https%3A//learnpythonthehardway.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Learn Python the Hard Way&i class=&icon-external&&&/i&&/a&&/p&&p&Web App基础知识:@张秋怡的&a href=&/question//answer/& class=&internal&&答案&/a&写的通俗易懂,极力推荐。&/p&&p&有了这个roadmap,我明白了前端三大必须掌握技能HTML,CSS和JavaScript,花了大概10天左右把W3Schools上的教程全部过了一遍,然后试着写了几个网页,感觉自己写的很没有底气。于是根据知乎和豆瓣上的推荐,买了《JaveScript DOM》和《Head First HTML与CSS》,边看书边把例子过了一遍。&/p&&p&W3Schools: &a href=&///?target=http%3A///link%3Furl%3DIYCvCXzSkGQLt7ulZZFmBNaPMEd_6GSSHjvs-BKvWu-oYzYfW7aAUyj8JGqiQpVB& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&/&i class=&icon-external&&&/i&&/a&&/p&&p&JavaScript:&a href=&///?target=https%3A///subject/1921890/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JavaScript DOM编程艺术&i class=&icon-external&&&/i&&/a&&/p&&p&HTML & CSS : &a href=&///?target=https%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Head First HTML与CSS(第2版)&i class=&icon-external&&&/i&&/a&&/p&&p&前端是需要慢慢学习的,在看完上面的资料后,虽然能写出来一些挺漂亮的页面,但是我自己知道很多都是不符合标准的,更不要说代码风格什么的。这只能通过不断地积累和增加代码量来提高。由于明白服务器端需要耗费自己大量的时间,所以在发现自己能够按照构思勉强实现网页之后,我就把学习中心放到了服务器端上。不过每天还是会抽空写一写网页,避免手生。&/p&&p&2)服务器端&/p&&p&最先了解的是HTTP协议,也就是浏览器和服务器之间是如何通信的。也就是当你在浏览器里键入网址按下回车直到网页显示在你浏览器的这个过程中,浏览器和浏览器之间发生了什么事情。这是很有意思的内容,我是以读小说的心情了解了这部分内容。了解这部分后,你就会明白类似为什么有时候会有404页面?在百度搜索框里键入的搜索词是如何提交到百度服务器的?为什么重新登录知乎的时候就不用再输入密码了?之类的问题了。&/p&&p&HTTP协议学习资料:&a href=&///?target=https%3A//www.ntu.edu.sg/home/ehchua/programming/webprogramming/HTTP_Basics.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&In Introduction to HTTP Basics&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&///people/a179aa706eacbd2f7088& data-hash=&a179aa706eacbd2f7088& class=&member_mention& data-title=&@Vamei& data-editable=&true& data-hovercard=&p$b$a179aa706eacbd2f7088&&@Vamei&/a&的博客:&a href=&///?target=http%3A///vamei/archive//2802811.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&协议森林&i class=&icon-external&&&/i&&/a&&/p&&p&了解了HTTP协议之后,我就多少有些入迷了。看似神秘难懂的现象其实原理并不复杂,你反而会被吸引。接下来就进入到我投入时间最多的部分了——后端开发。记得当时了解Web开发的MVC(Model-View-Controller)模式后,有一种心血喷涌的感觉,觉得太有意思了(程序员别喷,我就是这么没见过世面)。我们以知乎为例子来说明MVC是个啥:&/p&&img src=&/v2-0f9a88b7e281cc7ffd5e_b.png& data-rawwidth=&1029& data-rawheight=&623& class=&origin_image zh-lightbox-thumb& width=&1029& data-original=&/v2-0f9a88b7e281cc7ffd5e_r.png&&&br&&p&每个人的主页都是相同的布局和风格,例如最上面的菜单搜索栏,颜色分割,左边显示动态等,右边是个人信息等,然后具体的内容却因人而异——每个人的头像,名字,动态都是不一样的。那么知乎是如何保证每一个人看到的都是自己的主页呢?&/p&&p&你可以把这个相同的布局想象成一个模板,里面有一个个空格子,当你用你的账户登陆页面时,想象你的电脑里有无数个小人根据你的账号从知乎后台的数据库里取出你的头像,动态,认证信息等等内容,然后对应着模板上规定好的位置,把对应的内容填进去。这些小人的动作实在是太快了,以至于你觉得这是在瞬间完成的。&/p&&p&上面所说的模板就是MVC中的V,是View的缩写,负责显示。这样做的好处在于,如果知乎有一天突然想改变一下个人主页的风格,那么只需要改变这一个模板,然后几千万注册用户的主页就相应的变化了,因为模板是公用的,是不是省了很多事情?(早期的Web开发可不是这样哟,你可能要一个个用户去改,非常麻烦。)&/p&&p&而这些小人除了摆放内容,它们真正负责的是业务逻辑,我们把他们叫做Controller,也就是MVC中的C。例如当你登陆的时候,这些小人要检查你的用户名是不是准确的,如果准确,它们要去数据库里取出你请求的信息等,如果用户名错误,它们要拦截住你的登陆。它们的职责还有很多,无法一一列举。在实际中,这些小人做的事情其实就是Python(或者其它脚本语言)做的事情。&/p&&p&最后,MVC中的Model其实就是传给View的数据,包括上面的头像,用户名,动态等因人而异的数据。这些数据在知乎服务器上是以数据库表格(table)的形式存在的,你可以把它们想象成很多不同的excel表格,不同的表格储存着不同的信息,有些记录着知乎用户的个人信息,有些记录着回答,有些记录着评论等等,而这些表格之间又彼此联系,当你在知乎的不同网页间跳转的时候,上面说的那些小人就根据你的要求,组合对应的表格取出对应的数据,然后把他们放到模板对应的空格里,发送给浏览器。然后浏览器根据你写的CSS,用不同的颜色,大小等等,将数据很漂亮的显示出来。&/p&&p&这样做的好处是什么呢?虽然你最终在浏览器里看到的是一个完整的页面,但是在后端逻辑上它们都是区分开的——模型(M),视图(V)和控制器(C)的区分就保证了较高的可维护性——我可以随时修改主页的显示并看到效果,同样我可以随时加入一些业务逻辑。&/p&&p&如果你的学习坚持到这里了,首先要恭喜你。其次你可能已经知道一些非常成熟的Python Web框架了,例如Django,Flask等等,并且你可能看到了很多小白教程教你直接使用,毕竟大部分人可能觉得没有必要重复造轮子。&/p&&p&本来为了省事,我也打算直接用框架。我是在设计数据库的时候,当时在看SQLAlchemy文档,觉得相对自己的项目SQLAlchemy太过复杂,所以我决定自己写自己的ORM(名词不懂没关系),这对于当时的我来说是一件难度非常大的事情。于是我投入了极大的精力每天都在看关于SQL和Python相关的教程和资料,&a href=&///?target=https%3A///subject/3112503/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python核心编程(第二版) &i class=&icon-external&&&/i&&/a&给了我很大的启发。在自己完成了ORM后,又写了URL处理函数,同样没有用任何现成的Web框架。&/p&&p&现在回头看,我认为这一段时间的造轮子是提升编程能力最快的时候。比如为了写ORM,就必须去花很多时间学习SQL,去了解Python里面的metaclass,而如果用一个现成的框架,我很有可能偷懒不去关注某些细节。而不出问题还好,一旦出问题,我就只能跪。另外,造轮子迫使我在开始的时候就构思整个框架,因为我必须尽可能的考虑到所有的情况,于是就会不断的强迫自己完善知识体系,和别人的代码作对比从而改进自己的,这个过程充满了无尽的挫败感,但是得来的成就和快乐也是无可比拟的。&/p&&p&SQL书籍:&a href=&///?target=https%3A///Sams-Teach-Yourself-MySQL-Days/dp/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Sams Teach Yourself MySQL in 21 Days&i class=&icon-external&&&/i&&/a&&/p&&p&Python:&a href=&///?target=https%3A///subject/3112503/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python核心编程(第二版)&i class=&icon-external&&&/i&&/a&&/p&&p&Github上的优质Python资源:&a href=&///?target=https%3A///CodementorIO/Python-Learning-Resources& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CodementorIO/Python-Learning-Resources&i class=&icon-external&&&/i&&/a&&/p&&p&过程中还牵涉到部署,我的网站是跑在Linux上的。关于部署网上有非常多的优质教程,一搜一大把。这里就不再赘述。&/p&&p&这些是我学习大致路线,当然过程中充满着小的磕磕绊绊,虽然网站上线了,貌似运行还比较顺利,但是如果以一个程序员的标准来要求自己,自己依然非常菜鸟。不过我并没有以前那样惧怕技术了,就像你明白魔术的背后的原理后,会更多的思考原理本身。&/p&&h2&2. 自学编程需要注意的问题&/h2&&p&很多人都推荐小白第一门语言选Python,因为语法简单。这句话只说了一半,Python确实容易上手,对初学者的门槛很低。但我发现,&b&&u&对于小白真正的门槛在于系统知识,这就和用什么语言完全没有任何关系了。&/u&&/b&例如很多人学完了Python的语法,觉得确实简单,但是转头去用Python标准库的时候,却发现自己连文档都看不懂。标准库提供了Python和其它系统功能的接口,最终实现了Python和系统之间的互动。读标准库需要系统知识,比如操作系统,数据库,进程和线程,socket编程,网络协议等等,这些对于编程小白来才构成很高的门槛,但是只有学会这些,才能真正发挥出Python的威力来。&/p&&p&这也是我觉得自己的经历对小白是有价值的一个原因。因为设计一个动态的网页是一个很不错的练手Project。建立网页(Web App)会逼迫你了解从你在浏览器里键入地址按下回车到网页显示在浏览器的过程中,浏览器,网络,服务器都干了些什么。具体到技术上面,你不得不去学习前端的HTML,CSS和JavaScript,后端的脚本,数据库,操作系统等。也就是说,这个过程能够促使你去主动学习上面提到的系统知识,如果你再做另外一个项目,你就不会像现在这样无从下手,而有能力去进行一些技术性的探讨,所以我认为这是一个非常好的练手项目。&br&&/p&&p&1)一定要空出时间补充理论知识&/p&很多人会强调learn by doing,边做项目边学习,这也是我自己采用的方式。在这种方式中,你不断犯错,改正……学习效率非常高。但是,很多人走了极端,最后的结果就是不注意理论知识的学习。你会发现自己Google的能力越来越高,但是真实的编程能力并没有得到提升。如果有这种情况,你需要反思一下。&p&一种可能是你太过于依赖各种成熟的框架,结果编程就变成了用「胶水」去粘合不同的框架完成需求。就好比你的Web App用了SQLAlchemy,虽然自己不太懂SQL,但是网站跑的也还不错。这时候如果数据库出现了问题,那你就只能跪了。&/p&&p&另外一种可能是你完全沉浸在做项目中,忽略了学习理论知识。做项目虽然充满困难,但回报是强烈的成就感,很容易沉浸其中。我觉得这是极其错误的。首先半路出家的程序员都没有经过系统的学习,没有形成自己的知识体系,如果你不懂数据结构,算法复杂度,操作系统这些理论,那么你能达到的高度就极其有限。所以,在每天做项目的同时,一定要保证抽出一定的时间,恶补理论知识。这部分的书单在豆瓣和知乎上都有很多总结,可以自行搜索。&/p&&p&2)不要太纠结于无意义的问题,比如什么框架好,XX语言比XX语言好啦这种问题。前期确定了练手项目,就去专心积累代码量,积累基础知识。那些你现在还看不懂的炫酷技术你慢慢也就能明白是怎么回事了,反而没有基础,再炫酷的框架对你而言都是天书。&/p&&p&3)学会发问。好问题是建立在你自己已经实践或者思考的基础上问出来的,这是对自己的负责,也是对别人的尊重。不要一遇到困难就喜欢直接上网搜索:「这个问题是怎么回事啊?」,「我不明白你能不能帮我看看……」。&/p&&p&4)学好英语。&/p&&p&THE END&/p&&br&&p&最后,给自己打个广告,如果学英语,一定要关注我。&/p&&p&&a href=&///?target=http%3A///r/ETt0bGzEkzHsrSgP924D& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/r/ETt0bGz&/span&&span class=&invisible&&EkzHsrSgP924D&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& (二维码自动识别)&/p&
我是真正零基础开始学Python的,从一开始的一窍不通,到3个月后成功搭建了一个动态网站(没有用任何框架)。相比于计算机大牛,我更加知道一个小白将会遇到什么坑,遇到哪些难点。我把我的学习过程写在下面,并附上在每个阶段的学习资料,希望对零基础的Pyt…
更新&br&1. 动手做,动手做,动手做(重要的事情说三遍)&br&我见过好多把CLRS当小说看的,真还有很多人囫囵吞枣给看完了的。但是没有动手自己去实现这些算法的话,CLRS看得再熟练,都只停留在纸面上。有些真正性能和实现上面的优点,不写代码是感受不出来的。&br&说到动手做的的话,做完题没有答案对就等于没有做啊。关于算导的答案部分,目前不是很全,主要有(不保证正确):&br&&ol&&li&&a href=&///?target=http%3A///index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Introduction to Algorithms study group&i class=&icon-external&&&/i&&/a& 现在应该有前11章的大部分答案,正确率不保证,仅供参考&br&&/li&&li&&a href=&///?target=http%3A//www.ime.usp.br/%7Egeiser/courses/MAC-%2520An%25C3%25A1lise%2520de%2520Algoritmos/Introduction%2520to%2520Algorithms%Instructor%Manual%2529.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ime.usp.br 的页面&i class=&icon-external&&&/i&&/a& 相当于一个教师指南的册子,答案讲的比较精细,基本上是全部正确的,但是题目覆盖不是很全&br&&/li&&li&&a href=&///?target=http%3A//pute.dtu.dk/%7Ephbi/files/teaching/solution.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&pute.dtu.dk/~ph&/span&&span class=&invisible&&bi/files/teaching/solution.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 也是一个教师指南,但是正确率要更低一些好像,很多题目也只有大致思路,仅供参考&/li&&li&&a href=&///?target=http%3A//yinyanghu.github.io/files/clrs_prev.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&yinyanghu.github.io 的页面&i class=&icon-external&&&/i&&/a& 南大的学长,好像在滑铁卢读博吧,这是一个第二版的连接,第三版的答案还在撰写当中&/li&&/ol&&br&2. 尽量看英文原版(不是为了装逼)&br&很多同学对看英文有排斥心理,这个很正常的。但是看英文原版真的不是为了装逼,而是中文翻译版虽说进步不少,但是拗口和错误之处还是有很多。你说算法这个东西吧,稍微理解错一个加一减一,就会对最后的结果产生很大的不同。我们当年上CLRS的时候,愣是盯着翻译版的某句话苦思冥想了好久。结果一看英文原版,瞬间豁然开朗,遂中文版丢弃一边了。&br&我个人建议,中英文混合着看,看不懂中文看英文,看不懂英文看中文。&br&&br&3. 书名真的是大误&br&Introduction个鬼哦,大家不要被导论给骗了。这里的导论我觉得应该是与TAOCP之类的书籍相比,它确实还就算个导论。但如果和什么《深入理解XXX》《深度探索XXX》《XXX编程指南》之类的相比,它绝对是难度与深度的集合体,学习曲线巨陡峭,基本上自学一两个月就跟没学似的。&br&&br&4. 配合别的东西一起学&br&硬啃书真的是很寂寞,当然不排除有的同学有这样过人的学力。如果这样一直吃白饭确实吃不下的话,可以考虑跟一下公开课。coursera/edx/mooc上面的好课都挺多,不出家门上到国外同学们斥巨资拼老命上到的课,还是赚到了的。&br&&br&5. 关于理论证明的取舍&br&CLRS作为一本严谨的科学研究入门教材,理论的证明充斥了这本书的很大一部分。每一章节的很多题目,都是证明某个引理之类的。这一部分的取舍我觉得因人而异吧,有的同学只是为了掌握算法本身而去学CLRS,那么证明部分我觉得只要能做到说服自己即可;有的同学将来要读博发paper的话,CLRS上的证明最好还是弄透彻比较好。虽然自己再造一个什么新的排序算法,新的二叉搜索树什么的可能性不是很高(大神除外了,Size Balanced Tree人家中学时候造出来),但是严谨的数学素养是非常重要的。&br&&br&Postscript:&br&如果说CLRS是一桌理论与思维的盛宴的话,&a href=&///?target=https%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Algorithms Unlocked (豆瓣)&i class=&icon-external&&&/i&&/a&就是餐前的开胃小菜。冲到饭店里直接就上主菜如果吃不消的话,可以考虑来读一读这本同样是作者Cormen写的小册子。不过目前还没有翻译版,有机会的同学可以尝试一下。&br&&img src=&/9ac9f122fe2e695cba8b_b.jpg& data-rawwidth=&480& data-rawheight=&723& class=&origin_image zh-lightbox-thumb& width=&480& data-original=&/9ac9f122fe2e695cba8b_r.jpg&&
更新 1. 动手做,动手做,动手做(重要的事情说三遍) 我见过好多把CLRS当小说看的,真还有很多人囫囵吞枣给看完了的。但是没有动手自己去实现这些算法的话,CLRS看得再熟练,都只停留在纸面上。有些真正性能和实现上面的优点,不写代码是感受不…
&figure&&img src=&/50/v2-5c1958d9edc_b.png& data-rawwidth=&1540& data-rawheight=&1014& class=&origin_image zh-lightbox-thumb& width=&1540& data-original=&/50/v2-5c1958d9edc_r.png&&&/figure&&blockquote&&p&作者:Mao Chan&/p&&p&著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。&/p&&/blockquote&&br&&p&2016年,机器学习在 Alpha Go 与李世石的世纪之战后变得更加炙手可热。Google也在今年推出了 TensorFlow Serving 又加了一把火。&br&&/p&TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库。它可以将训练好的机器学习模型部署到线上,使用 gRPC 作为接口接受外部调用。更加让人眼前一亮的是,它支持模型热更新与自动模型版本管理。这意味着一旦部署 TensorFlow Serving 后,你再也不需要为线上服务操心,只需要关心你的线下模型训练。&figure&&img src=&/v2-aa58a91faa3_b.png& data-rawwidth=&886& data-rawheight=&1042& class=&origin_image zh-lightbox-thumb& width=&886& data-original=&/v2-aa58a91faa3_r.png&&&/figure&&p&今天我就带大家来用 TensorFlow Serving 部署一个简单的 Linear Regression 模型。&/p&&p&&u&以下演示运行在 Ubuntu 16.04 LTS 之上。&/u&&/p&&p&&u&TensorFlow Serving 处于快速迭代期。如果本文内容与官方文档矛盾,请以官方文档为参考。&/u&&/p&&h2&环境&/h2&&p&TensorFlow Serving 目前依赖 Google 的开源编译工具 &a href=&/?target=https%3A///bazelbuild/bazel& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Bazel&i class=&icon-external&&&/i&&/a&。Bazel 是 Google 内部编译工具 Blaze 的开源版本,功能与性能基本一致。具体的安装可以参考&a href=&/?target=https%3A//www.bazel.io/versions/master/docs/install.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&官方文档&i class=&icon-external&&&/i&&/a&。此外还需要安装 &a href=&/?target=http%3A//www.grpc.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&gRPC&i class=&icon-external&&&/i&&/a& (Google 又一个内部工具的开源版)。&/p&&p&之后请参考&a href=&/?target=https%3A//tensorflow.github.io/serving/setup& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&官方安装指南&i class=&icon-external&&&/i&&/a&完成。值得注意的是,最后的 bazel build 将会需要大约30分钟时间并占用约5-10G的空间(时间取决于机器性能)。配合使用 -c opt 能一定程度加快 build。&br&&/p&&h2&模型训练&/h2&&p&接下来我们用 TensorFlow 写一个简单的测试用 Linear Regression 模型。数据的话我就使用正弦函数生成 1000 个点,尝试用一条直线去拟合。&/p&&p&&figure&&img src=&/v2-7a9ccf1c6b6518bf8ecc6_b.png& data-rawwidth=&662& data-rawheight=&490& class=&origin_image zh-lightbox-thumb& width=&662& data-original=&/v2-7a9ccf1c6b6518bf8ecc6_r.png&&&/figure&样本数据生成如下:&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&# Generate input data
x_data = np.arange(100, step=.1)
y_data = x_data + 20 * np.sin(x_data / 10)
# Reshape data
x_data = np.reshape(x_data, (n_samples, 1))
y_data = np.reshape(y_data, (n_samples, 1))
&/code&&/pre&&/div&&p&然后用一个简单的 y = wx + b 来做一个训练,使用 Adam 算法。简单调整了下参数:&/p&&p&&b&sample = 1000, learning_rate = 0.01, batch_size = 100, n_steps = 500&/b&&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&# Placeholders for batched input
x = tf.placeholder(tf.float32, shape=(batch_size, 1))
y = tf.placeholder(tf.float32, shape=(batch_size, 1))
# Do training
with tf.variable_scope('test'):
w = tf.get_variable('weights', (1, 1), initializer=tf.random_normal_initializer())
b = tf.get_variable('bias', (1,), initializer=tf.constant_initializer(0))
y_pred = tf.matmul(x, w) + b
loss = tf.reduce_sum((y - y_pred) ** 2 / n_samples)
opt = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(loss)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
for _ in range(n_steps):
indices = np.random.choice(n_samples, batch_size)
x_batch = x_data[indices]
y_batch = y_data[indices]
_, loss_val = sess.run([opt, loss], feed_dict={x:x_batch, y:y_batch})
print w.eval()
print b.eval()
print loss_val
&/code&&/pre&&/div&&p&大致把 loss 收敛在 15.8 左右。精度应该足够了,毕竟只是一个简单的测试用模型。&/p&&h2&模型导出&/h2&&p&接下来的就是本文的重点:导出模型。&/p&&p&&b&tf.train.Saver&/b&&/p&&p&用于保存和恢复Variable。它可以非常方便的保存当前模型的变量或者倒入之前训练好的变量。一个最简单的运用:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&saver - tf.train.Saver()
# Save the variables to disk.
saver.save(sess, &/tmp/test.ckpt&)
# Restore variables from disk.
saver.restore(sess, &/tmp/test.ckpt&)
&/code&&/pre&&/div&&p&&b&tf.contrib.session_bundle.exporter.Exporter&/b&&/p&&p&导出模型还需要这个 Exporter 的协助。令人尴尬的是这个 Exporter 太新了,还没有 API 文档支持,只能参考 Github 的&a href=&/?target=https%3A///tensorflow/tensorflow/blob/master/tensorflow/contrib/session_bundle/exporter.py%23L143& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&代码实现&i class=&icon-external&&&/i&&/a&。&/p&&p&Exporter 的基本使用方式是&/p&&ol&&li&&p&传入 saver 构造一个实例&/p&&/li&&li&&p&调用 &a href=&/?target=https%3A///tensorflow/tensorflow/blob/master/tensorflow/contrib/session_bundle/exporter.py%23L143& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&init&i class=&icon-external&&&/i&&/a& 定义模型的 graph 和 input/output&/p&&/li&&li&&p&使用 export 导出为文件&/p&&/li&&/ol&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&model_exporter = exporter.Exporter(saver)
model_exporter.init(
sess.graph.as_graph_def(),
named_graph_signatures={
'inputs': exporter.generic_signature({'x': x}),
'outputs': exporter.generic_signature({'y': y_pred})})
model_exporter.export(FLAGS.work_dir,
tf.constant(FLAGS.export_version),
&/code&&/pre&&/div&&p&大功告成!编译!我们成功导出了一个可以部署在 TensorFlow Serving 上的模型。它接受一个 x 值然后返回一个 y 值。导出的文件夹以 version 命名,包含用于部署的 meta 文件, 模型 checkpoint 文件和序列化的模型 graph:&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&/tmp/test/
checkpoint export-00000-of-00001 export.meta
&/code&&/pre&&/div&&h2&模型部署&/h2&&p&部署的方式非常简单,只需要以下两步:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&$ bazel build //tensorflow_serving/model_servers:tensorflow_model_server
bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server --port=9000 --model_name=test --model_base_path=/tmp/test/
&/code&&/pre&&/div&&p&我们看到 TensorFlow Serving 成功加载了我们刚刚导出的 model。并且还在不断尝试 poll 新的 model:&br&&/p&&figure&&img src=&/v2-d0ba0bdbf8d5a354e1cbc5_b.png& data-rawwidth=&1904& data-rawheight=&308& class=&origin_image zh-lightbox-thumb& width=&1904& data-original=&/v2-d0ba0bdbf8d5a354e1cbc5_r.png&&&/figure&&h2&客户端&/h2&&p&接下来我们写一个简单的 Client 来调用下我们部署好的 Model。这里我们需要用到 TensorFlow Serving 的 Predict API 和 gRPC 的 implementations.insecure_channel 来construct 一个 request。特别要注意的是 input 的 signature 和数据必须和之前 export 的模型匹配。本例中为 名称为 x, float32类型,大小为 [100, 1] 的 Tensor。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&from grpc.beta import implementations
import numpy as np
import tensorflow as tf
from tensorflow_serving.apis import predict_pb2
from tensorflow_serving.apis import prediction_service_pb2
tf.app.flags.DEFINE_string('server', 'localhost:9000',
'PredictionService host:port')
FLAGS = tf.app.flags.FLAGS
n_samples = 100
host, port = FLAGS.server.split(':')
channel = implementations.insecure_channel(host, int(port))
stub = prediction_service_pb2.beta_create_PredictionService_stub(channel)
# Generate test data
x_data = np.arange(n_samples, step=1, dtype=np.float32)
x_data = np.reshape(x_data, (n_samples, 1))
# Send request
request = predict_pb2.PredictRequest()
request.model_spec.name = 'test'
request.inputs['x'].CopyFrom(tf.contrib.util.make_tensor_proto(x_data, shape=[100, 1]))
result = stub.Predict(request, 10.0)
# 10 secs timeout
&/code&&/pre&&/div&&p&别忘了配置一下 bazel 的 BUILD 文件:&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&py_binary(
name = &test_client&,
&test_client.py&,
&//tensorflow_serving/apis:predict_proto_py_pb2&,
&//tensorflow_serving/apis:prediction_service_proto_py_pb2&,
&@org_tensorflow//tensorflow:tensorflow_py&,
&/code&&/pre&&/div&&p&最后编译运行,就能看到在线预测结果啦!&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&bazel build //tensorflow_serving/test:test_client && ./bazel-bin/tensorflow_serving/test/test_client
&/code&&/pre&&/div&&figure&&img src=&/v2-75fb1dd65ad2ce25635eff_b.png& data-rawwidth=&1070& data-rawheight=&898& class=&origin_image zh-lightbox-thumb& width=&1070& data-original=&/v2-75fb1dd65ad2ce25635eff_r.png&&&/figure&&h2&延伸&/h2&&p&TensorFlow 封装了众多常用模型成为 &a href=&/?target=https%3A//www.tensorflow.org/versions/r0.9/api_docs/python/contrib.learn.html%23estimators& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Estimator&i class=&icon-external&&&/i&&/a&,帮助用户避免了冗长易错的算法实现部分。比如以上的例子就可以完全用 LinearRegressor 来替换。只需要几行代码简单地调用 fit() 函数就能轻松得到收敛的模型。唯一不足的是目前与 TensorFlow Serving 还不能 100% 兼容。虽然 Google 还在全力完善 TensorFlow Serving,但是距离完善还需要一定的时间。&/p&&p&如果既想要使用方便快捷的的 Estimator ,又想线上部署呢?当然也是有办法的,笔者钻研了一下后,实现了一个用 Estimator 训练数据,导出模型后再部署上线的方法。最后用这个线上部署的模型实现一个在线评估房屋价值的系统。&br&&/p&&p&&b&如何利用机器学习最火的Tensor Flow架构预测房价&&&&/b&&a href=&/?target=https%3A//zoom.us/webinar/register/1cccdc3f40cd9f024ac87b605f06faf5& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&公开课注册试听&i class=&icon-external&&&/i&&/a&&/p&&br&&p&&b&Smart-Zillow全栈房价跟踪预测系统&&&&/b&&a href=&/?target=https%3A//www.bittiger.io/livecourses/Sj5EB5x94rBz2ikEd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&课程介绍&i class=&icon-external&&&/i&&/a&&/p&&p&&b&联系人微信:iioooANGELAoooii&/b&&/p&&p&&b&----------------------------------------------------------------------------------------------------&/b&&/p&&blockquote&更多精彩,尽在硅谷高端线上教育社区BitTiger:&a href=&/?target=https%3A//www.bittiger.io/%3Futm_source%3DZhihu%26utm_medium%3DZhihuBottom%26utm_content%3DZhihuBottom& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&请猛戳我&i class=&icon-external&&&/i&&/a&&br&&br&公众号:论码农的自我修养&br&&br&知乎专栏:&a href=&/bittiger& class=&internal&&太阁实验室&/a&&br&&br&微博:@太阁BitTiger &br&&br&今日头条:&a href=&/?target=http%3A///m/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&太阁BitTiger&i class=&icon-external&&&/i&&/a&&/blockquote&
作者:Mao Chan著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 2016年,机器学习在 Alpha Go 与李世石的世纪之战后变得更加炙手可热。Google也在今年推出了 TensorFlow Serving 又加了一把火。 TensorFlow Serving 是一个用于机器…
&figure&&img src=&/50/v2-dfe532f46b8ed803fb5b1_b.png& data-rawwidth=&900& data-rawheight=&500& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/50/v2-dfe532f46b8ed803fb5b1_r.png&&&/figure&&p&Vim编辑器都不陌生了,很多开发者都在用Vim,有人曾这样的说过:&/p&&blockquote&在世界上有三种人:一种是使用Vim的,另一种是使用是Emacs的,剩下的是第三种人……&/blockquote&&p&关于Vim的介绍就不多说了,可以自行搜索,一搜哗啦啦全都出来了,&b&我主要是想总结一下Vim编辑器的一些资料,设想的是一个完全不会Vim编辑器的人,想学习Vim,那么应该在哪里学习,有什么资料可以看,所以文章应该更适合想学习Vim编辑器的人&/b&,当然懂vim的也可以看看,我还是认为里面有些资源还是不错滴~&br&&/p&&p&首先当然是学会Vim编辑器的使用啦,可以看这个教程:&b&&a href=&/?target=https%3A///courses/2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Vim编辑器&i class=&icon-external&&&/i&&/a&,&/b&主要是因为这个教程附带了在线Vim编辑器可以使用,这样可以边看教程边跟着动手捣腾捣腾,对于初学者来说是非常好的一种学习方式,可以更快上手Vim。而且如果你开始不想在自己电脑上安装Vim的话,可以用这个在线的Vim编辑器进行学习,学会之后再安装。&br&&/p&&p&然后可以看看陈皓老师翻译的&b&:&a href=&/?target=http%3A///articles/5426.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&简明 Vim 练级攻略&i class=&icon-external&&&/i&&/a&,&/b&对于一个新手VIM来说是比较好的升级教程了,推荐一看。&br&&/p&&p&当然,鸟哥的私房菜中的:&b&&a href=&/?target=http%3A//linux.vbird.org/linux_basic/0310vi.php& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&鳥哥的 Linux 私房菜 -- 第九章、vim 程式編輯器&i class=&icon-external&&&/i&&/a&,&/b&对vim做了一个较为系统的介绍,也可以作为入门教程,但是我推荐对vim有一定的了解之后再看,因为可以将开始比较零碎的学习系统化,更有助于提高,而且懂了之后再看也知道重点看什么,也知道自己哪里不太懂,带着目的去学习更好。&br&&/p&&p&我们知道Vim编辑器啊,对于新手来说它的配置和众多的插件是比较头疼的事情,这里推荐两篇文章:&b&&a href=&/?target=http%3A//blog.csdn.net/namecyf/article/details/7787479& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&vim配置及插件安装管理(超级详细)&i class=&icon-external&&&/i&&/a&、&a href=&/?target=http%3A///p/a0b452f8f720& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Vim配置、插件和使用技巧&i class=&icon-external&&&/i&&/a&&/b&,可以教你怎样配置vim,以及插件管理。对了,还有知乎上的:&b&&a href=&/question/& class=&internal&&有哪些编程必备的 Vim 配置? &/a&,&/b&可以看看。&br&&/p&&p&嗯,还有什么,我想想,哦,还有一篇文章&b&&a href=&/?target=https%3A///questions/2721& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&最详细的 Vi 编辑器使用指南(翻译)&i class=&icon-external&&&/i&&/a&&/b&,各个方面都介绍了一些,可以看看。&br&&/p&&p&最后附上一些资源,可以看看:&br&&/p&&ul&&li&&b&&a href=&/?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&让你玩游戏的学习VIM&i class=&icon-external&&&/i&&/a&&br&&/b&&/li&&li&&b&&a href=&/?target=http%3A//cenalulu.github.io/linux/all-vim-cheatsheat/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&史上最全Vim快捷键键位图 -- 入门到进阶&i class=&icon-external&&&/i&&/a&&br&&/b&&/li&&li&&b&&a href=&/?target=http%3A//sheerun.net//how-to-boost-your-vim-productivity/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&有趣的Vim技巧&i class=&icon-external&&&/i&&/a&&/b&&/li&&li&&b&&a href=&/?target=https%3A///tutorials/10-time-saving-tips-for-unix-vim-beginners--cms-22386& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Vim 新手节省时间的 10 多个小技巧&i class=&icon-external&&&/i&&/a&&/b&&/li&&li&&b&&a href=&/?target=https%3A///article-4669-1.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&一些不起眼但非常有用的 Vim 命令&i class=&icon-external&&&/i&&/a&&/b&&/li&&li&&b&&a href=&/?target=http%3A///archives/1372.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&vim(gvim)相关插件整理&i class=&icon-external&&&/i&&/a&;&/b&&/li&&/ul&&p&好吧,附上我收藏的3张VIM图吧,相信很多人都已经看过了:&/p&&figure&&img src=&/v2-3d0df1e5e39c4f40016be_b.png& data-rawwidth=&3301& data-rawheight=&2550& class=&origin_image zh-lightbox-thumb& width=&3301& data-original=&/v2-3d0df1e5e39c4f40016be_r.png&&&/figure&&p&图片来源:&a href=&/?target=http%3A///vim/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&点这里&i class=&icon-external&&&/i&&/a&&/p&&figure&&img src=&/v2-107ab14e11c8_b.png& data-rawwidth=&1024& data-rawheight=&723& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/v2-107ab14e11c8_r.png&&&/figure&&p&图片来源:&a href=&/?target=http%3A///vi-vim-cheat-sheet-sch.gif& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&点这里&i class=&icon-external&&&/i&&/a&&/p&&p&其实上面两张图呢,我上面介绍的文章里面都有,不过还是贴出来吧,免得没图大家不爱看~~(&_&)~~&/p&&p&&figure&&img src=&/v2-721ed6e317cd011cee78688cca13be66_b.jpeg& data-rawwidth=&1024& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/v2-721ed6e317cd011cee78688cca13be66_r.jpeg&&&/figure&好吧,这一张图片真的不知道从哪里保存的,原作者看到后请与我联系啊,我加上来源~&/p&&p&最后:你,玩Vim,玩的开心啊,哈哈……&/p&
Vim编辑器都不陌生了,很多开发者都在用Vim,有人曾这样的说过:在世界上有三种人:一种是使用Vim的,另一种是使用是Emacs的,剩下的是第三种人……关于Vim的介绍就不多说了,可以自行搜索,一搜哗啦啦全都出来了,我主要是想总结一下Vim编辑器的一些资料,…
&figure&&img src=&/50/v2-a58cfded2b91ce127f95ae9_b.jpg& data-rawwidth=&600& data-rawheight=&475& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/50/v2-a58cfded2b91ce127f95ae9_r.jpg&&&/figure&&p&学习编程,欢迎关注专栏:&a href=&/passer& class=&internal&&学习编程 - 知乎专栏&/a&&br&&/p&&p&如果你刚好闲的无聊,想想以前每次放假,本来放假前想好出去干啥干啥的,最后都是窝在家里敲代码了。可能很多人还是如此,那么怎样给这一天的代码的添上一点色彩?为何不做点有意思的东西?&b&Use your CODE!&/b&&/p&&p&恰巧是国庆,那就让我们以一种不同的方式来庆祝她。庆祝祖国的67岁生日。让我们用不同的语言来编织我们的五星红旗……(分别是Java、HTML、Python、R、C、C++)&/p&&p&第一个:HTML + JavaScript
(来自:&a href=&/?target=http%3A///code/w7uassdu& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&RunJS&i class=&icon-external&&&/i&&/a&)&/p&&p&代码(测试通过):&/p&&br&&div class=&highlight&&&pre&&code class=&language-html&&&span&&/span&&span class=&p&&&&/span&&span class=&nt&&html&/span&&span class=&p&&&&/span&
&span class=&p&&&&/span&&span class=&nt&&head&/span&&span class=&p&&&&/span&
&span class=&p&&&&/span&&span class=&nt&&script&/span&&span class=&p&&&&/span&
&span class=&kd&&var&/span& &span class=&nx&&col&/span&&span class=&o&&=&/span&&span class=&k&&new&/span& &span class=&nb&&Array&/span&&span class=&p&&(&/span&&span class=&s2&&&red&&/span&&span class=&p&&,&/span&&span class=&s2&&&brown&&/span&&span class=&p&&);&/span&
&span class=&kd&&var&/span& &span class=&nx&&ticker&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&kd&&var&/span& &span class=&nx&&step&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&kd&&function&/span& &span class=&nx&&drawBackground&/span&&span class=&p&&(){&/span&
&span class=&kd&&var&/span& &span class=&nx&&g&/span&&span class=&o&&=&/span&&span class=&nb&&document&/span&&span class=&p&&.&/span&&span class=&nx&&getElementById&/span&&span class=&p&&(&/span&&span class=&s2&&&background&&/span&&span class=&p&&).&/span&&span class=&nx&&getContext&/span&&span class=&p&&(&/span&&span class=&s2&&&2d&&/span&&span class=&p&&);&/span&
&span class=&kd&&var&/span& &span class=&nx&&grd&/span&&span class=&o&&=&/span&&span class=&nx&&g&/span&&span class=&p&&.&/span&&span class=&nx&&createLinearGradient&/span&&span class=&p&&(&/span&&span class=&o&&-&/span&&span class=&mi&&560&/span&&span class=&o&&+&/span&&span class=&nx&&ticker&/span&&span class=&p&&,&/span& &span class=&mi&&0&/span&&span class=&p&&,&/span& &span class=&mi&&1400&/span&&span class=&o&&+&/span&&span class=&nx&&ticker&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&);&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&kd&&var&/span& &span class=&nx&&i&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span& &span class=&nx&&i&/span&&span class=&o&&&&/span&&span class=&mi&&10&/span&&span class=&p&&;&/span& &span class=&nx&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&nx&&grd&/span&&span class=&p&&.&/span&&span class=&nx&&addColorStop&/span&&span class=&p&&(&/span&&span class=&nx&&i&/span&&span class=&o&&/&/span&&span class=&mi&&10&/span&&span class=&p&&,&/span&&span class=&nx&&col&/span&&span class=&p&&[(&/span&&span class=&nx&&i&/span& &span class=&o&&+&/span& &span class=&nx&&step&/span&&span class=&p&&)&/span&&span class=&o&&%&/span&&span class=&nx&&col&/span&&span class=&p&&.&/span&&span class=&nx&&length&/span&&span class=&p&&]);&/span&
&span class=&nx&&ticker&/span&&span class=&o&&=&/span&&span class=&nx&&ticker&/span&&span class=&o&&+&/span&&span class=&mi&&10&/span&&span class=&p&&;&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&nx&&ticker&/span&&span class=&o&&&=&/span&&span class=&mi&&196&/span&&span class=&p&&){&/span&
&span class=&nx&&ticker&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&nx&&step&/span&&span class=&o&&++&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&nx&&g&/span&&span class=&p&&.&/span&&span class=&nx&&fillStyle&/span&&span class=&o&&=&/span&&span class=&nx&&grd&/span&&span class=&p&&;&/span&
&span class=&nx&&g&/span&&span class=&p&&.&/span&&span class=&nx&&fillRect&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&mi&&1600&/span&&span class=&p&&,&/span&&span class=&mi&&700&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&kd&&function&/span& &span class=&nx&&preperation&/span&&span class=&p&&(){&/span&
&span class=&nx&&setInterval&/span&&span class=&p&&(&/span&&span class=&s1&&'drawBackground()'&/span&&span class=&p&&,&/span&&span class=&mi&&100&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&p&&&/&/span&&span class=&nt&&script&/span&&span class=&p&&&&/span&
&span class=&p&&&&/span&&span class=&nt&&style&/span& &span class=&na&&type&/span&&span class=&o&&=&/span&&span class=&s&&&text/css&&/span&&span class=&p&&&&/span&
&span class=&nn&&#myCanvas&/span&&span class=&p&&{&/span&
&span class=&nb&&z-index&/span&&span class=&o&&:&/span&&span class=&m&&2&/span&&span class=&p&&;&/span&
&span class=&nb&&position&/span&&span class=&o&&:&/span&&span class=&nb&&absolute&/span&&span class=&p&&;&/span& &span class=&nb&&left&/span&&span class=&o&&:&/span&&span class=&m&&0px&/span&&span class=&p&&;&/span& &span class=&nb&&top&/span&&span class=&o&&:-&/span&&span class=&m&&5px&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&nn&&#background&/span&&span class=&p&&{&/span&
&span class=&nb&&z-index&/span&&span class=&o&&:&/span&&span class=&m&&1&/span&&span class=&p&&;&/span&
&span class=&nb&&position&/span&&span class=&o&&:&/span&&span class=&nb&&absolute&/span&&span class=&p&&;&/span&
&span class=&nb&&left&/span&&span class=&o&&:&/span&&span class=&m&&0px&/span&&span class=&p&&;&/span&
&span class=&nb&&top&/span&&span class=&o&&:&/span&&span class=&m&&0px&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&p&&&/&/span&&span class=&nt&&style&/span&&span class=&p&&&&/span&
&span class=&p&&&/&/span&&span class=&nt&&head&/span&&span class=&p&&&&/span&
&span class=&p&&&&/span&&span class=&nt&&body&/span& &span class=&na&&onLoad&/span&&span class=&o&&=&/span&&span class=&s&&&preperation()&&/span&&span class=&p&&&&/span&
&span class=&p&&&&/span&&span class=&nt&&canvas&/span& &span class=&na&&id&/span&&span class=&o&&=&/span&&span class=&s&&&myCanvas&&/span& &span class=&na&&width&/span&&span class=&o&&=&/span&&span class=&s&&&900&&/span& &span class=&na&&height&/span&&span class=&o&&=&/span&&span class=&s&&&600&&/span& &span class=&p&&&&/span&
Your browser does not support the HTML5 canvas tag.
&span class=&p&&&/&/span&&span class=&nt&&canvas&/span&&span class=&p&&&&/span&
&span class=&p&&&&/span&&span class=&nt&&canvas&/span& &span class=&na&&id&/span&&span class=&o&&=&/span&&span class=&s&&&background&&/span& &span class=&na&&width&/span&&span class=&o&&=&/span&&span class=&s&&&1600&&/span& &span class=&na&&height&/span&&span class=&o&&=&/span&&span class=&s&&&700&&/span& &span class=&p&&&&/&/span&&span class=&nt&&canvas&/span&&span class=&p&&&&/span&
&span class=&p&&&&/span&&span class=&nt&&script&/span&&span class=&p&&&&/span&
&span class=&kd&&var&/span& &span class=&nx&&x&/span&&span class=&o&&=&/span&&span class=&k&&new&/span& &span class=&nb&&Array&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&mi&&12&/span&&span class=&p&&,&/span&&span class=&mi&&54&/span&&span class=&p&&,&/span&&span class=&mi&&18&/span&&span class=&p&&,&/span&&span class=&mi&&28&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&o&&-&/span&&span class=&mi&&28&/span&&span class=&p&&,&/span&&span class=&o&&-&/span&&span class=&mi&&18&/span&&span class=&p&&,&/span&&span class=&o&&-&/span&&span class=&mi&&54&/span&&span class=&p&&,&/span&&span class=&o&&-&/span&&span class=&mi&&12&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&);&/span&
&span class=&c1&&//五角星样品坐标xx数组&/span&
&span class=&kd&&var&/span& &span class=&nx&&y&/span&&span class=&o&&=&/span&&span class=&k&&new&/span& &span class=&nb&&Array&/span&&span class=&p&&(&/span&&span class=&o&&-&/span&&span class=&mi&&53&/span&&span class=&p&&,&/span&&span class=&o&&-&/span&&span class=&mi&&17&/span&&span class=&p&&,&/span&&span class=&o&&-&/span&&span class=&mi&&17&/span&&span class=&p&&,&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&mi&&45&/sp

我要回帖

更多关于 unity draw call顺序 的文章

 

随机推荐