php怎么搜索引擎,怎么租用一个合适的服务器?
如今随着云服务器的发展成熟,租用服务器不像以前那样需要自己单独租一台服务器了,如今租用服务器都是在运营商的系统上按照自己需要非常方便地弹性选择,按需购买,目前有名气的属阿里云、腾讯云、百度云、华为云等等。
有名气的服务商,只要你接触过互联网,看看这些名字:
阿里云:就是阿里巴巴旗下的,不单单做电子商务,互联网业务范围还有很多。
腾讯云:腾讯不用说了,估计都知道吧,他家早几年开始也涉足服务器租售,云服务器我自己也在用。
百度云:这个百度云,可能有些人只用过百度网盘的云盘。
华为云:这个也是华为集团自己下面的业务,有云盘,也有云服务器。
之前有网传说,这些公司因为这么多年做互联网业务,自己的服务器使用量是很多的,到一定时间就需要更新换代,那么他们这么大量的服务器更换出来拿来去干什么?拿去哪里?于是某一年,随着云服务器概念的出现,这些公司不约而同的涉足了云服务器主机租售业务,传说他们把服务器拿出来做弹性云,租出来,这又能继续发挥余热,这些我们暂时不研究,我们只知道凭这些公司的实力,应该能够满足题主的需求了。
我们先来简单理解下什么是云计算、云服务器在以前,我们要想做网站,租用服务器,必须自己单独租一台硬件设备,或者购买一台硬件设备的服务器,这种服务器在以前的理解当中就是和一台电脑主机差不多,你购买或者租用之后,服务器提供商还会附带说明说租用多少年就送服务器产权,也就是那台服务器就是你的了,但是这成本都是在你身上出的。就成本来说,传统服务器比云服务器消耗的要多很多,看看云服务器和传统服务器租用的一些区别:
从上面的一份简单对比的表格看出,先不说成本,就单单产品性能和管理能力、扩展能力,传统服务器是完全不能和云服务器相比的,传统服务器你需要自己管理系统,自己维护设备的性能,一旦业务发展壮大,你的服务器需要扩展的时候是很麻烦的,但是云服务器的管理和扩展这些是非常方便弹性选择的,而且他们有专业的技术维护团队,无须我们用户自己操心维护,我们可以把发展中心放在核心业务上。
以前要想租用一台服务器,还需要看它各项硬件选用的是什么硬件,硬件的性能等等,如今你租用服务器可以尽管抛开这些问题,只管在服务商的服务面板上面按照需要选择你的服务器配置,随时可以增加减少自己的用量,弹性选择。
可以按照自己业务需要选择计算能力、存储能力、网络带宽的弹性云服务器
对于我们租用服务器来说我们主要考虑服务器的计算能力、存储能力、服务器机房的网络带宽,在传统的服务器租用上,我们一旦租用之后,这些资源要想更改升级,操作是比较麻烦的,但是如今的云服务器,你只需要在服务商提供的云服务器管理操作后台上自己按照需要就能很方便升级服务器设备的性能,我们来参考一下常见的云服务器选择界面:
上图是各大云服务器提供商基本相同的操作界面,这是购买选择的界面,请注意看红圈箭头指向的部分,在很多新手不知道如何选择自己需要的服务器配置的时候,可以参考这里,你租用服务器是打算开展什么业务用的,这里都会提供一个建议的配置给你了,只要点击购买推荐配置就好。
如果你自己对服务器的选择有不同的需求,就可以选择自主配置,如下图:
我们通过这个云服务器购买选择界面,可以看到,租用一个云服务器,可以很方便的选择网络地域,比如国内大陆的多线网络,或者香港的网络,有些甚至有国外的网络线路,对于外贸网站一般都是会选择国外的网络。
CPU、内存这些也都是随便选择,存储方面,系统盘一般丢失赠送的40G,不收费的,这基本足够了,如果要增加就要收费了,不过我想一般都没必要。
重要的是数据盘,这个盘就是我们用来存储我们开着网络业务的资源文件等等的了。这个数据盘在我们租用服务器以后,如果后期数据盘不够用,可以直接在后台购买需要的容量,再挂载进你这个服务器ID里面就可以了。
下面的公网带宽,就是你这台服务器给你的访客客户登录时候的网络带宽了,简单来说,就是看你的用户量有多少,越多人同时访问,需要的带宽越大,这个带宽我建议如果你开始业务量小的时候可以最低选择,后期大了再逐渐增加。
如今互联网上提供云服务器租用的商家很多,还有其他一些有名气的就不一一介绍了,基本都差不多,主要看专业性,售后服务团队的强大与否,在这方面可以多参考观察几家。
还有一些云服务器是可以提供一段时间免费试用的,大家有兴趣的可以去试试免费试用一下,熟悉一下看,到底适合不适合自己使用。
好了,以上就是我对提问怎么租用一个服务器的一些看法解答,希望能帮助到到大家,如果还有这方面的问题可以关注我,邀请我回答,谢谢。
python主要用于什么开发?
为什么这么多人在学Python呢?很多小白都听说Python很火,简单易学,学起来很容易,学习周期短,可是为啥要学Python呢?,下面谈谈我对Python的感悟。
在PC时代大量的嵌入式的设备,底层的代码,底层原理,以及底层逻辑运用,以及桌面的应用都是用C、C++实现的,毋庸置疑它们是最接近底层,对底层有着强大的解释说服力,也是最早的、最快的。随着2000年电商的大规模的兴起,多数人融入到这个大家庭中,逐渐地从PC时代过度到互联网时代,Java开始王者归来,再加上2010移动互联网的爆发Android开始风靡起来,Java更是如日中天,走向了辉煌。那我们现在为什么要学习Python呢?Python到底是用来干什么的?1、Web开发Python的诞生历史比Web还要早,由于Python是一种解释型的脚本语言,开发效率高,所以非常适合用来做Web开发,大大提高了做web开发人员的效率。Python有上百种Web开发框架,有很多成熟的模板技术,选择Python开发Web应用,不但开发效率高,而且运行速度快,加快了时代的发展。常用的web开发框架有:Django、Flask、Tornado 等。许多知名的互联网企业或者小型公司将Python作为主要开发语言:豆瓣、知乎、果壳网、Google、NASA、YouTube、Facebook……由于后台服务器的通用性,除了狭义的网站之外,很多App和游戏的服务器端也同样用 Python实现,来运行,完成相应的工作。一个Web应用的本质就是:浏览器发送一个HTTP请求;服务器收到请求,生成一个HTML文档;服务器把HTML文档作为HTTP响应的Body发送给浏览器;浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示。所以,最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回。Apache、Nginx、Lighttpd等这些常见的静态服务器就是干这件事情的,完成这些事情的。如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,还没开始写动态HTML呢,就得花个把月去读HTTP规范。正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心用Python编写Web业务。这个接口就是WSGI:Web Server Gateway Interface。(Web服务器网关接口)wsgi就是一种规范,它定义了使用web应用程序与Python编写的web服务器程序之间的接口格式。无论多么复杂的Web应用程序,入口都是一个WSGI处理函数。HTTP请求的所有输入信息都可以通过environ获得,HTTP响应的输出都可以通过start_response()加上函数返回值作为Body。WSGI接口定义非常简单,它只要求Web开发者实现一个函数,就可以响应HTTP请求。我们来看一个最简单的Web版本的“Hello,web!”:上面的application()函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数:environ:一个包含所有HTTP请求信息的dict对象;start_response:一个发送HTTP响应的函数。在application()函数中,调用:就发送了HTTP响应的Header,注意Header只能发送一次,也就是只能调用一次start_response()函数。start_response()函数接收两个参数,一个是HTTP响应码,一个是一组list表示的HTTP Header,每个Header用一个包含两个str的tuple表示。通常情况下,都应该把Content-Type头发送给浏览器。其他很多常用的HTTP Header也应该发送。然后,函数的返回值'<h1>Hello, web!</h1>'将作为HTTP响应的Body发送给浏览器。有了WSGI,我们关心的就是如何从environ这个dict对象拿到HTTP请求信息,然后构造HTML,通过start_response()发送Header,最后返回Body。了解了WSGI框架,我们发现:其实一个Web App,就是写一个WSGI的处理函数,针对每个HTTP请求进行响应。但是如何处理HTTP请求不是问题,问题是如何处理100个不同的URL。由于用Python开发一个Web框架十分容易,所以Python有上百个开源的Web框架。各种Web框架的优缺点自己去了解一下就可以了,直接选择一个比较流行的Web框架——Flask来使用。除了Flask,常见的Python Web框架还有:Django:全能型Web框架;web.py:一个小巧的Web框架;Bottle:和Flask类似的Web框架;Tornado:Facebook的开源异步Web框架。做一个游戏2、网络爬虫许多人对编程的热情始于好奇,终于停滞,小有成就就止步于此。距离真枪实干做开发有技术差距,也无人指点提带,也不知当下水平能干嘛?就在这样的疑惑循环中,编程技能止步不前,而爬虫是最好的进阶方向之一。网络爬虫是Python比较常用的一个场景,国际上,google在早期大量地使用Python语言作为网络爬虫的基础,带动了整个Python语言的应用发展。以前国内很多人用采集器搜刮网上的内容,现在用Python收集网上的信息比以前容易很多了,如:从各大网站爬取商品折扣信息,比较获取最优选择;对社交网络上发言进行收集分类,生成情绪地图,分析语言习惯;爬取网易云音乐某一类歌曲的所有评论,生成词云;按条件筛选获得豆瓣的电影书籍信息并生成表格……应用实在太多,几乎每个人学习爬虫之后都能够通过爬虫去做一些好玩有趣有用的事。例子:爬取网络上的歌曲3、人工智能人工智能是现在非常火的一个方向,AI热潮让Python语言的未来充满了无限的潜力。现在释放出来的几个非常有影响力的AI框架,大多是Python的实现,为什么呢?因为Python有很多库很方便做人工智能,比如numpy, scipy做数值计算的,sklearn做机器学习的,pybrain做神经网络的,matplotlib将数据可视化的。在人工智能大范畴领域内的数据挖掘、机器学习、神经网络、深度学习等方面都是主流的编程语言,得到广泛的支持和应用。人工智能的核心算法大部分还是依赖于C/C++的,因为是计算密集型,需要非常精细的优化,还需要GPU、专用硬件之类的接口,这些都只有C/C++能做到,所有c/c++和P相结合就可以实现人工智能。4、Python的其他应用举例系统编程:提供API,能方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具。图形处理:有PIL、Tkinter等图形库支持,能方便进行图形处理。数学处理:NumPy扩展提供大量与许多标准数学库的接口。文本处理:Python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用Python进行XML程序的开发。数据库编程:程序员可通过遵循PythonDB-API(数据库应用程序编程接口)规范的模块与MicrosoftSQLServer,Oracle,Sybase,DB2,MySQL、SQLite等数据库通信。Python自带有一个Gadfly模块,提供了一个完整的SQL环境。网络编程:提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet及BitTorrent.Google都在广泛地使用它。Web编程:应用的开发语言,支持最新的XML技术。多媒体应用:Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”,能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。黑客编程: Python有一个hack的库,内置了你熟悉的或不熟悉的函数,但是缺少成就感。以上内容分享自华为云社区《【云驻共创】你知道在未来Python主要的运用途径和领域吗?》,作者:楠羽。网站开发用什么语言好?
写一个网站,前端浏览器界面编程没有选余地,只有JavaScript+css+html
服务器端选择的余地很多,毕竟现在都是web2.0时代,通过ajax或者动态服务器渲染技术实现前后端数据交互。
Java,静态语言。相信大部分人都听说过,要是开发人员的话,更是熟悉。特点:成熟、稳定、庞大、生态繁荣。国内的最典型的就是阿里巴巴,几乎涵盖整个阿里的业务,天猫、淘宝,抗住双11的流量不用过多的怀疑Java的web 服务器领域的霸主地位。不足就是学习内容多,需要花费很多时间学习。
JavaScript,动态语言。你没有听错,现在JavaScript也可以开发服务器了,其实最早语言的开发创作者时候就是有这个想法的,奈何随着
node.js
强势诞生是这个梦想落了地。JavaScript特点就是,入门简单,想要深入学习还是不容易的。原型链、this指向、闭包等。服务器开发一般使用较少。PHP,脚本语言。一般的小型网站使用的还是比较多的,PHP就是专门为web而生,奈何单线程,大型网站一般不予使用。CSDN就是PHP哦,可以看看招聘。
python,解释性脚本语言。最近几年非常的火。不得不说,python是一门有趣的语言,一般用来人工智能、爬虫等。web编程不是特别多,知乎、豆瓣据说就是python开发的服务器。
c#不能够遗忘,和Java同时代的,特性和Java差不多,缺点就是平台捆绑Windows,使用的还是有很多。东京原始版本就是c#开发的哦。
最后近几年强势发展的go语言,记得让它火的就是B站源码泄露事件,发展势头不容小觑。
如何从零开始学编程?
You can code. They cannot. That is pretty damn cool.– Learn Python The Hard Way
在你学习编程之前思考一下你的目标,当你有最终目标时道路会更加的清晰。那么,你想要写什么?网站?游戏?iOS或者Android应用?或是你是想自动化完成一些乏味的任务让你有更多的时间看窗外的风景?也许你只是想更具有就业竞争力找个好工作。所有的这些都是有价值的目标,这些目标都是你编程学习推动力的一部分,没有推动力的人,是无法在略显枯燥的漫长学习之旅中走远的。
不要浮躁
Bad programming is easy. Even Dummies can learn it in 21 days. Good programming requires thought, but everyone can do it and everyone can experience the extreme satisfaction that comes with it.不管是在线下还是线上的书店,满目都是《21天学通Java》这种速成书目,它们都承诺在很短一段时间内就让你能够学会相关技术。Matthias Felleisen在他的著作 How to Design Programs, Second Edition 一书中明确指出了这种「速成」的趋势并予以了以上的讽刺。
所谓的「捷径」或者说「银弹」是不存在的,智者说过,精通某个东西需要10年或10000个小时,也就是汉语中的「十年磨一剑」,所以不用着急,功不唐捐。
培养兴趣
Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.
– Linus Torvalds
沉醉于编程,编程更是为了兴趣。兴趣是推动力的不竭源泉,保持这种充满兴趣的感觉,以便于你能将其投入到你的10年/10000小时的编程时间中。编程很有趣,那是探索的喜悦。那是创造的喜悦。看到自己亲手完成的作品显示在屏幕上很有趣。有人为你的代码而惊叹很有趣。有人在公共场合称赞你的产品、邻居使用你的产品、以及在媒体上讨论你的产品很有趣。编程应该十分有趣,若并非如此,就找出导致编程无趣的问题,然后解决之。
这幅图取自 Douglas Hofstadter 的著作Gödel, Escher, Bach。图中的每一个字母都由其他更小的字母组成。在最高层级,我们看的是"MU",M 这个字母由三个HOLISM(整全觀)构成,U则是由一个REDUCTIONISM(还原论)构成,前者的每一个字母都包含后者的后者整个词,反之亦然。而在最低层级,你会发现最小的字母又是由重复的"MU"组成的。
每一层次的抽象都蕴含着信息,如果你只是幼稚地单一运用整体论在最高层级观察,或运用还原论观察最低层级,你所得到的只有"MU"(在一些地区的方言中mu意味着什么都没有)。问题来了,怎样才能尽可能多的获取每个层级的信息?或者换句话说,该怎样学习复杂领域(诸如编程)包含的众多知识?
教育与学习过程中普遍存在一个关键问题:初学者们的目标经常过于倾向整全觀而忽略了基础,举个常见的例子,学生们非常想做一个机器人,却对背后的
理解物理模型 → 理解电子工程基础 → 理解伺服系统与传感器 → 让机器人动起来
这一过程完全提不起兴趣。
在这里对于初学者有两个大坑:
如果初学者们只与预先构建好的「发动机和组件」接触(没有理解和思考它们构造的原理),这会严重限制他们在将来构建这些东西的能力,并且在诊断解决问题时无从下手。第二个坑没有第一个那么明显:幼稚的「整体论」方法有些时候会显得很有效,这有一定的隐蔽性与误导性,但是一两年过后(也许没那么长),当你在学习路上走远时,再想回过头来「补足基础」会有巨大的心理障碍,你得抛弃之前自己狭隘的观念,耐心地缓步前进,这比你初学时学习基础知识困难得多。但也不能矫枉过正,陷入还原论的大坑,初学时便一心试图做宏大的理论,这样不仅有一切流于理论的危险,枯燥和乏味还会让你失去推动力。这种情况经常发生在计算机科班生身上。
为了更好理解,可以将学习编程类比为学习厨艺:你为了烧得一手好菜买了一些关于菜谱的书,如果你只是想为家人做菜,这会是一个不错的主意,你重复菜谱上的步骤也能做出不赖的菜肴,但是如果你有更大的野心,真的想在朋友面前露一手,做一些独一无二的美味佳肴,甚至成为「大厨」,你必须理解这些菜谱背后大师的想法,理解其中的理论,而不仅仅是一味地实践。但是如果你每天唯一的工作就是阅读那些厚重的理论书籍,因为缺乏实践,你只会成为一个糟糕的厨子,甚至永远成为不了厨子,因为看了几天书后你就因为枯燥放弃了厨艺的学习。
总之,编程是连接理论与实践的纽带,是计算机科学与计算机应用技术相交融的领域。正确的编程学习方法应该是:通过自顶而下的探索与项目实践,获得编程直觉与推动力;从自底向上的打基础过程中,获得最重要的通用方法并巩固编程思想的理解。
作为初学者,应以后者为主,前者为辅。
启蒙
「学编程应该学哪门语言?」这经常是初学者问的第一个问题,但这是一个错误的问题,你最先考虑的问题应该是「哪些东西构成了编程学习的基础」?
编程知识的金字塔底部有三个关键的部分:
算法思想:例如怎样找出一组数中最大的那个数?首先你得有一个 maxSoFar 变量,之后对于每个数…语法:我怎样用某种编程语言表达这些算法,让计算机能够理解。系统基础:为什么 while(1) 时线程永远无法结束?为什么 int *foo() { int x = 0; return &x; } 是不可行的?启蒙阶段的初学者若选择C语言作为第一门语言会很困难并且枯燥,这是因为他们被迫要同时学习这三个部分,在能做出东西前要花费很多时间。
因此,为了尽量最小化「语法」与「系统基础」这两部分,建议使用 Python 作为学习的第一门语言,虽然Python对初学者很友好,但这并不意味着它只是一个「玩具」,在大型项目中你也能见到它强大而灵活的身影。熟悉Python后,学习C语言是便是一个不错的选择了:学习C语言会帮助你以靠近底层的视角思考问题,并且在后期帮助你理解操作系统层级的一些原理,如果你只想成为一个普通(平庸)的开发者你可以不学习它。
下面给出了一个可供参考的启蒙阶段导引,完成后你会在头脑中构建起一个整体框架,帮助你进行自顶向下的探索。
完成 Codecademy 的 Python 部分。这只是热身部分,尽快完成它,因为你永远只是在浏览器里,你不会学到如何搭建开发环境。在 Codecademy 这类的编程学习网站学到的那点儿东西,哪怕你只想做一个小的不能再小的项目,你都不知道该从哪儿开始。完成 MIT 6.00.1x(中文化)(如果你英语不过关,完成麻省理工学院公开课:计算机科学及编程导论。MOOC 是学习编程的一个有效途径。虽然该课程的教学语言为Python,但作为一门优秀的导论课,它强调学习计算机科学领域里的重要概念和范式,而不仅仅是教你特定的语言。如果你不是科班生,这能让你在自学时开阔眼界;课程内容:计算概念,python编程语言,一些简单的数据结构与算法,测试与调试。支线任务:完成Python核心编程完成 Harvard CS50 (如果你英语不过关:完成哈佛大学公开课:计算机科学 cs50 。同样是导论课,但这门课与MIT的导论课互补。教学语言涉及 C, PHP, JavaScript + SQL, HTML + CSS,内容的广度与深度十分合理,还能够了解到最新的一些科技成果,可以很好激发学习计算机的兴趣。支线任务:阅读《编码的奥秘》完成《C语言编程》[可选] 如果你的目标是成为一名 Hacker:阅读 Hacker's DelightPS:如果教育对象还是一个孩子,以下的资源会很有帮助:
5-8岁: Turtle Academy8-12岁:Python for Kids12岁以上: MIT Scratch 或 KhanAcademy入门
结束启蒙阶段后,初学者积累了一定的代码量,对编程也有了一定的了解。这时你可能想去学一门具体的技术,诸如Web开发,Android开发,iOS开发什么的,你可以去尝试做一些尽可能简单的东西,给自己一些正反馈,补充自己的推动力。但记住别深入,这些技术有无数的细节,将来会有时间去学习;同样的,这时候也别过于深入特定的框架和语言,现在是学习计算机科学通用基础知识的时候,不要试图去抄近路直接学你现在想学的东西,这是注定会失败的。
那么入门阶段具体该做些什么呢?这时候你需要做的是反思自己曾经写过的程序,去思考程序为什么(Why)要这样设计?,思考怎样(How)写出更好的程序?试图去探寻理解编程的本质:利用计算机解决问题。
设想 :
X = 用于思考解决方案的时间,即「解决问题」 部分
Y = 用于实现代码的时间,即「利用计算机」部分」
编程能力 = F(X, Y) (X>Y)
要想提高编程能力,就得优化 X,Y 与函数 F(X, Y),很少有书的内容能同时着重集中在这三点上,但有一本书做到了——Structure and Interpretation of Computer Programs(SICP)《计算机程序的构造和解释》,它为你指明了这三个变量的方向。在阅读SICP之前,你也许能通过调用几个函数解决一个简单问题。但阅读完SICP之后,你会学会如何将问题抽象并且分解,从而处理更复杂更庞大的问题,这是编程能力巨大的飞跃,这会在本质上改变你思考问题以及用代码解决问题的方式。此外,SICP的教学语言为 Scheme,可以让你初步了解函数式编程。更重要的是,他的语法十分简单,你可以很快学会它,从而把更多的时间用于学习书中的编程思想以及复杂问题的解决之道上。
Peter Norvig 曾经写过一篇非常精彩的SICP书评,其中有这样一段:
To use an analogy, if SICP were about automobiles, it would be for the person who wants to know how cars work, how they are built, and how one might design fuel-efficient, safe, reliable vehicles for the 21st century. The people who hate SICP are the ones who just want to know how to drive their car on the highway, just like everyone else.如果你是文中的前者,阅读SICP将成为你衔接启蒙与入门阶段的关键点
虽然SICP是一本「入门书」,但对于初学者还是有一定的难度,以下是一些十分有用的辅助资源:
Udacity CS212 Design of Computer Program): 由上文提到的Google研究主管Peter Norvig 主讲,教学语言为 Python,内容有一定难度。How to Design Programs, Second Edition:HtDP的起点比SICP低,书中的内容循循善诱,对初学者很友好,如果觉得完成SICP过于困难,可以考虑先读一读HtDP。UC Berkeley SICP授课视频以及 SICP 的两位作者给 Hewlett-Packard 公司员工培训时的录像(中文化项目)Composing Programs:一个继承了SICP思想但使用Python作为教学语言的编程导论(其中包含了一些小项目)SICP 解题集:对于书后的习题,作为初学者应尽力并量力完成。完成了这部分学习后,你会逐步建立起一个自己的程序设计模型,你的脑子里不再是一团乱麻,你会意识到记住库和语法并不会教你如何解决编程问题,接下来要学些什么,在你心里也会明朗了很多。这时候才是真正开始进行项目实践,补充推动力的好时机。
关于项目实践:对于入门阶段的初学者,参与开源项目还为时过早,这时候应该开始一些简单的项目,诸如搭建一个网站并维护它,或是编写一个小游戏再不断进行扩展,如果你自己的想法不明确,Mega Project List 中选取项目。总之,务必在这时拿下你项目实践的第一滴血。
与此同时,别忘了继续打好根基。为了将来的厚积薄发,在下面这几个方面你还要继续做足功课(注意:下面的内容没有绝对意义上的先后顺序):
计算机系统基础
有了之前程序设计的基础后,想更加深入地把握计算机科学的脉络,不妨看看这本书:《深入理解计算机系统》 Computer Systems A Programmer's Perspective。这里点名批评这本书的中译名,其实根本谈不上什么深入啦,这本书只是 CMU的「计算机系统导论」的教材而已。CMU的计算机科学专业相对较偏软件,该书就是从一个程序员的视角观察计算机系统,以「程序在计算机中如何执行」为主线,全面阐述计算机系统内部实现的诸多细节。
如果你看书觉得有些枯燥的话,可以跟一门 Coursera 上的 MOOC: The Hardware/Software Interface,这门课的内容是 CSAPP 的一个子集,但是最经典的实验部分都移植过来了。同时,可以看看 The C Programming Language,回顾一下C语言的知识。
完成这本书后,你会具备坚实的系统基础,也具有了学习操作系统,编译器,计算机网络等内容的先决条件。当学习更高级的系统内容时,翻阅一下此书的相应章节,同时编程实现其中的例子,一定会对书本上的理论具有更加感性的认识,真正做到经手的代码,从上层设计到底层实现都了然于胸,并能在脑中回放数据在网络->内存->缓存->CPU的流向。
此外,也是时候去接触 UNIX 哲学了: KISS Keep it Simple, Stupid. 在实践中,这意味着你要开始熟悉命令行界面,配置文件。并且在开发中逐渐脱离之前使用的IDE,学会使用Vim或Emacs(或者最好两者都去尝试)。
阅读 《UNIX编程环境 》阅读《UNIX编程艺术 》折腾你的 UN*X 系统数据结构与算法基础
如今,很多人认为编程(特别是做web开发)的主要部分就是使用别人的代码,能够用清晰简明的方式表达自己的想法比掌握硬核的数学与算法技巧重要的多,数据结构排序函数二分搜索这不都内置了吗?工作中永远用不到,学算法有啥用啊?这种扛着实用主义大旗的「码农」思想当然不可取。没有扎实的理论背景,遭遇瓶颈是迟早的事。
数据结构和算法是配套的,入门阶段你应该掌握的主要内容应该是:这个问题用什么算法和数据结构能更快解决。这就要求你对常见的数据结构和算法了熟于心,你不一定要敲代码,用纸手写流程是更快的方式。对你不懂的数据结构和算法,你要去搜它主要拿来干嘛的,使用场景是什么。
供你参考的学习资源:
《算法导论 》:有人说别把这本书当入门书,这本书本来就不是入门书嘛,虽说书名是 Introduction to Algorithms,这只不过是因为作者不想把这本书与其他书搞重名罢了。当然,也不是没办法拿此书入门,读第一遍的时候跳过习题和证明就行了嘛,如果还觉得心虚先看看这本《数据结构与算法分析》Coursera Algorithms: Design and Analysis [Part 1] & [Part 2]: Stanford 开的算法课,不限定语言,两个部分跟下来算法基础基本就有了;英语没过关的:麻省理工学院公开课:算法导论入门阶段还要注意培养使用常规算法解决小规模问题的能力,结合前文的SICP部分可以读读这几本书:《编程珠玑 》,《程序设计实践 》编程语言基础
Different languages solve the same problems in different ways. By learning several different approaches, you can help broaden your thinking and avoid getting stuck in a rut. Additionally, learning many languages is far easier now, thanks to the wealth of freely available software on the InternetThe Pragmatic Programmer
此外还要知道,学习第n门编程语言的难度是第(n-1)门的一半,所以尽量去尝试不同的编程语言与编程范式,若你跟寻了前文的指引,你已经接触了:「干净」的脚本语言 Python, 传统的命令式语言 C, 以及浪漫的函数式语言 Scheme/Racket 三个好朋友。但仅仅是接触远远不够,你还需要不断继续加深与他们的友谊,并尝试结交新朋友,美而雅的 Ruby 小姑娘,Hindley-Milner 语言家族的掌中宝 Haskell 都是不错的选择。但有这么一位你躲不开的,必须得认识的大伙伴 — C++,你得做好与他深交的准备:
入门:C++ Primer[可选] 进阶:高效使用:Effective C++深入了解:《深度探索C++对象模型》;C++Templates研究反思:The Design and Evolution of C++ ;对于C++这个 Necessary Evil ,看这本书可以让你选择是成为守夜人还是守日人。现实是残酷的,在软件工程领域仍旧充斥着一些狂热者,他们只掌握着一种编程语言,也只想掌握一种语言,他们认为自己掌握的这门语言是最好的,其他异端都是傻X。这种人也不是无药可救,有一种很简单的治疗方法:让他们写一个编译器。要想真正理解编程语言,你必须亲自实现一个。现在是入门阶段,不要求你去上一门编译器课程,但要求你能至少实现一个简单的解释器。
供你参考的学习资源:
《程序设计语言-实践之路》:CMU编程语言原理的教材,程序语言入门书,现在就可以看,会极大扩展你的眼界,拉开你与普通人的差距。Coursera 编程语言MOOC:课堂上你能接触到极端FP(函数式)的SML,中性偏FP的Racket,以及极端OOP(面向对象)的Ruby,并学会问题的FP分解 vs OOP分解、ML的模式匹配、Lisp宏、不变性与可变性、解释器的实现原理等,让你在将来学习新语言时更加轻松并写出更好的程序。Udacity CS262 Programming Language:热热身,教你写一个简单的浏览器——其实就是一个javascript和html的解释器,完成后的成品还是很有趣的;接下来,试着完成一个之前在SICP部分提到过的项目:用Python写一个 Scheme Interpreter其他
编程入门阶段比较容易忽视的几点:
学好英语:英语是你获取高质量学习资源的主要工具,但在入门阶段,所看的那些翻译书信息损耗也没那么严重,以你自己情况权衡吧。此外英语的重要性更体现在沟通交流上,Linus Torvalds一个芬兰人,一口流利的英语一直是他招募开发者为Linux干活的的法宝,这是你的榜样。学会提问:学习中肯定会遇到问题,首先应该学会搜索引擎的「高级搜索」,当单靠检索无法解决问题时,去Stack Overflow 或知乎 提问,提问前读读这篇文章:What have you tried?不要做一匹独狼:尝试搭建一个像这样简单的个人网站,不要只是一个孤零零的About页面,去学习 Markdown 与 LaTeX,试着在Blog上记录自己的想法,并订阅自己喜欢的编程类博客。推荐几个供你参考:Joel on Software,Peter Norvig, Coding Horror小结
以上的内容你不应该感到惧怕,编程的入门不是几个星期就能完成的小项目。期间你还会遇到无数的困难,当你碰壁时试着尝试「费曼」技巧:将难点分而化之,切成小知识块,再逐个对付,之后通过向别人清楚地解说来检验自己是否真的理解。当然,依旧会有你解决不了的问题,这时候不要强迫自己——很多时候当你之后回过头来再看这个问题时,一切豁然开朗。
此外不要局限与上文提到的那些材料,还有一些值得在入门阶段以及将来的提升阶段反复阅读的书籍。The Pragmatic Programmer 就是这样一本程序员入门书,终极书。有人称这本书为代码小全:从DRY 到 KISS,从做人到做程序员,这本书教给了你一切,你所需的只是遵循书上的指导。
后记如果你能设法完成以上的所有任务,恭喜你,你已经真正实现了编程入门。这意味着你在之后更深入的学习中,不会畏惧那些学习新语言的任务,不会畏惧那些「复杂」的API,更不会畏惧学习具体的技术,甚至感觉很容易。当然,为了掌握这些东西你依旧需要大量的练习,腰还是会疼,走路还是会费劲,一口气也上不了5楼。但我能保证你会在思想上有巨大的转变,获得极大的自信,看老师同学和 csdn 的眼光会变得非常微妙,虽然只是完成了编程入门,但已经成为了程序员精神世界的高富帅。不,我说错了,即使是高富帅也不会有强力精神力,他也会怀疑自己,觉得自己没钱就什么都不是了。但总之,你遵循指南好好看书,那就会体验「会当凌绝顶」的感觉。
如何制作高水平简历?
作为猎聘网合作的头部简历顾问,强答一波。
从三个方面给你建议:
1、整体版面在你自己打印简历带去面试和自己投递邮箱的简历中,版面的整体视觉效果很重要。
整体结构版面不好不一定被筛掉,但是好的话一定加分。
上图是一个简历成稿的整体截图,主要看整体视觉效果,就比在线简历和很多模板简历要舒心舒服。版面上我们处理主要是做以下几点:
√ 页数控制:不管你经验在丰富简历都不允许超过三页,超过了是无效的,HR没耐心看,所以页面最佳是两页;控制在两页除了内容精简、模块精简外,也需要调控内容排版、页边距控制等,最终输出使得页面是完整的一页、两页或三页,不要有半页那种,一定要填满整个页面。
√ 页边距:页边距一般就正常普通就可以,但是如果为了调整版面使得保证页面显示在控制页数内,那么你可以将页边距调整成为窄边距、甚至自定义页边距为0.3左右。
√ 行距:行距最佳视觉效果是1.5倍,如果内容比较多可以压缩调整,最低不要低于1.2,太密集也就不好看了。
√ 项目编号:简历中文字很多、文字段落也很多,做好同类层级内容段落用同样的项目编号符号,这样就能显得结构清晰,视觉美观。同时每个段落能提炼出是最好的,如下图:
√ 行数:这里指的行数是指我们一段内容的行数,一段内容不超过三行,如果内容超过三行就想把办法精简到两行,实在精简不了,那么这个内容考虑拆分成为两个内容或者子内容。如下图,两行解决不了的内容拆分出子内容板块。
2、内容板块在简历中要规划好内容板块。各大招聘网站在线简历中已经有对应板块划分了,大部分都一致,这里简单说一下重要的几个板块:
√ 求职信:这个板块不需要,提出来说,只是想告诉求职者,真的不需要,写了洋洋洒洒的上千字HR没时间看的。所以不要写求职信了。
√ 基本信息:必要且重要。基本信息包括个人学历、姓名、电话、邮箱、性别、婚育情况等等基本的硬性条件,这些信息是必要的,是HR判断人选的标准,如果有的网站填写时你发现有些信息是可以选填的情况,那也一定要填,很多企业用EHR系统筛选简历的,i要是缺少一些信息字段,可能你投递的简历都无法被检索到。
√ 工作经历:必要且重要。这个不用言说,很重要。有些求职者在个人工作经历中一句话带过自己所有的经历,比如“***年-**年在某企业担任销售岗位,负责销售工作”这么一句话不是你的简历精炼而是自废武功,这样的简历没有任何内容体现,HR是不联系的。
√ 教育背景:必要且重要。主要写个人学历教育信息,不要把培训信息写进去了。
√ 项目经历:看情况填写。这个部分主要视自己所经历的一些具有代表性的、有价值有意义的相关项目,可以拿出来写,如果实在没有不写也没关系。
√ 个人评价:看情况填写。个人评价部分主要是针对自己和应聘工作相关的知识、技能、经验、素养方面的评价,不要走偏了,应聘财务岗位评价自己歌喉好是没有意义的。
√ 其他信息:看情况填写。如果你有考一些证书、获得一些奖项没有地方写,就可以放在这部分。
3、文字内容√ 写事实和数据:不要写感受、也不要写流水账。而是写工作中你经历的什么工作、履行的什么职责、取得什么业绩,取得的成就业绩用对比的方式数据化呈现,比如销售业绩每年完成500万,相较于公司其他同事每月排名第一。
结合到下面的STAR呈现方法来描述。
√ STAR法则:STAR分别表示目标、任务、方法、结果,也就是你履行的职责、做的项目、做的事情是在什么背景下、为了达成什么目标、用了什么工具方法技术最终达成什么样的结果,这样的表达就具有说服力、体现你工作的价值感了。如下图:
以上观点,请参考。 还请不吝点赞关注,给你更多职场方法论。 十三年职场摸爬滚打,老司机、不油条、技术流、脑洞大、用过都说好。