资深程序员:给新入坑的程序员一些建议

    先要明确目标万事开头难,在学习之前我们可以花点时间搞清楚自己为什么学python。如果没有想明白这点,那些基础语法的学习真的没有啥意思。即使是学生的考试必修,为了学好,最好也通过老师或者一些其他定个目标再开始学习。
    Python有很多的方向,如web开发、爬虫、数据分析、自动化测试、运维开发、机器学习。根据自己的情况,选择自己适合或感兴趣的方向。
    为防止空谈道理而把自己到搞晕了,在开始下面的内容前,先选个方向吧。爬虫的思路在上面的链接中说了部分,这次就选web开发吧。     
    打牢基础知识
    选了目标方向之后,基础就涉及到几个部分了。语言层面:无论什么方向,Python基础语法都要掌握,且是日后必用的知识,这些在网上也比较容易找到免费课程,具体列举一下:
    数据类型(整型、浮点型、虚数、字符串)和变量以及与它们相关的操作(比较、运算、赋值、位运算、逻辑运算等);
    掌握数据结构(列表、元组、集合、字典)以及它们的使用方式,是否支持以及如何进行增删改查等操作;
    学习掌握常见的流程控制语句,比如if-else if-else,while、for等;
    掌握函数的使用与定义,函数参数等相关知识,可以编写函数,实现代码复用;
    学习一些基础模块,比如os提供的文件操作,输入输出方法,日期时间相关内容;
    学习到此,不同方向路线开始慢慢产生分岔,转到特定领域的学习。比如,数据分析将会开始诸如numpy、pandas、matplotlib、scipy这些具体的库的学习。如果遇到一些问题,基本靠百度、google就可以解决;
    提醒:经常发生这样的事情,当开始学习一门新的编程语言时,我们总想抱一本诸如《Python编程手册》从头啃到尾。结果很快就放弃了。我认为并非是你毅力不好,而是方法不当。书中通常有很多对作者而言不能少而我们并不感兴趣而且并不需要知道的知识。
    深入编程
    技能我们知道web开发是工程化方向。所以这个方向的编码要求会很高,很讲究模块化开发,甚至设计模式也要了解一些。如果公司开发,通常都有一套基本的代码规范,而且还需要代码review。
    先来说说还需继续学习一些高级编程技巧吧,如下:
    1.要了解Python中的模块,import到底怎么用,怎么开发一些新的模块;了解异常处理机制,
    2.掌握try except的使用方法,提高的代码的健壮性;
    3.掌握面向对象、类和对象。为什么说python所有变量都是对象,深入变量的存储形式等。
    4.掌握网络编程,如何使用socket套接字开发tcp服务;
    5.多进程多线程怎么写,可以先熟悉系统提供的包就行了;
    有了这些知识我们还不能进行web开发,但是建议如果这个过程有毅力,可以多练习一些案例。以后如果有时间,我也可以整理一些,来提高这些枯燥无味阶段趣味的练习。我整理一些python学习资料,放在**[\[这**里\]](https://jq.qq.com/?_wv=1027&k=58r1hX6)有需要伙伴,点“[这里进去领取](https://jq.qq.com/?_wv=1027&k=58r1hX6
    )掌握领域知识如果是其他语言转过来的朋友,或许已经熟悉web的流程。
    我转学python时,已经是一名3年的PHP开发,所以我只需根据这些流程针对性学习python中的相应技术即可。
    其中很重要的就是http协议,先说说HTTP协议吧,简单拆分如下几部分,不一定全:
    1.了解http与tcp协议之间的关系,了解网络分层模型的知识;
    2必须掌握http的请求响应流程,了解一个网页请求从发出到获取页面涉及了哪些路径;
    3.熟悉http协议中的请求和响应结构,可以做个练习,比如用socket模拟http请求下载网页;
    4掌握session和cookie,它们也是http的知识,要深入理解掌握的它们的作用和区别;
    5.熟悉http中各种方法,了解它们的区别以及什么是restful,掌握POST和GET的区别;
    尴尬说明:在努力回忆自己学过的一些知识。扯着扯着好像成了老师整理课程大纲了。不过大家都知道,在学习的过程,经常梳理一下自己曾经所学也是巩固知识的一种方式。
    需要简单了解聊聊前端一些知识,现在web开发前后端职责分明。以前谈web开发不太区分这些。
    python主要是在后端,不过前端的知识也需要了解一些:熟悉html的使用,起码要会写一些简单结构的页面,了解各种标签的作用;
    了解一些js编程技术,起码会做简单的dom操作,可以去学学jquery;至于css是否要学,看自己需求,如果想做些项目且无人合作,可以了解下。
    现在专业的前端已经越来越工程化。node出来后,前端发展很迅猛,诸如es6、typescript、vue、react、webpack、babel、postcss等各种技术五花八门。
    但是现在一些项目前端仍会采用jquery+bootstrap开发,因为资源有限,后端毕竟不是专业前端工程师啊。
    聊聊周边服务web系统的运行要依赖许多的外部服务。比如数据库、缓存、代理服务器、操作系统等先说说数据库,大学时期应该都会学的一门课(电子信息专业的我没学!脸特别疼)。
    在大学听到最多的数据库软件是oracle和sqlserver,不知道现在怎么样了。其实现在很多互联网企业都在用MySQL,这是一款开源的关系型数据库存储系统。
    我认为无论现在用什么数据库系统,有些内容还是一定要学的,此处主要以MySql为例,其他数据库我也不太了解。比如:掌握基本的SQL操作。比如DDL定义、DML操作,DCL权限、TCL事务的操作使用;
    熟悉数据库索引,比如建立索引,了解不同索引的数据结果;了解慢查询和其分析方法,会使用mysqldump或其他一些高级工具分析慢查询;掌握一些常用性能分析方法,学会通过explain、profile分析SQL;
    熟悉一些常见语句的查询过程,避免如子查询和连接查询等SQL导致系统问题;如果继续往下深入的话,进一步提升数据性能,还需要进一步提升,比如:了解数据库的主从复制,以及主从复制会带来什么问题;如何进行分表分库缓解服务器压力及如何解决分表分库带来的一些问题;使用什么集群方案,比如一些公司提供的解决方案,如pxc、mycat怎么用;等等。有些是DBA需要掌握,不过对开发也是有益无害,可帮助我们开发出更稳健的系统
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值