大家好,我是辣条。

目录

一、C/C++入门阶段

学习视频推荐:C++入门基础【B站 小甲鱼】

二、C/C++开发进阶

学习视频推荐:C++进阶【慕课网 免费课】

三、C++开发高级

视频教程:程序设计【中国大学MOOC 】

四、操作系统

教程链接:6.828 :操作系统工程

五、数据库

视频教程:MySQL数据库从入门到实战课【CSDN 课程】

六、计算机网络

教程链接:计算机网络试题【牛客网】


最近在某乎上看到这个问题,他的问题如下:

985末流计算机大一,一直跟着学校走,上学期学c语言,下学期学面向对象,感觉学完之后只会写点简单的数学题或者简单的管理系统什么的。甚至都不知道什么是配置环境。但是身边的同学很多都可以写页面丰富的游戏或者网站了,甚至还有做项目的。是我太菜了吗?想自学还没有方向,什么web前端、github我都不知道是什么,前端后端什么的也不清楚,请问怎么样才能自学提升自己的编程能力?

好家伙,看到这个问题竟不知道怎么回答,我也不是科班的, 怎么提升我也不知道,怎么给你整理一些学习内容给你,多看多练多做。

一、C/C++入门阶段

学习视频推荐:C++入门基础【B站 小甲鱼】

刚入门的时候我们主要是学习培养编程思维和动手能力,深刻理解面向过程和面向对象的思想方法,这对以后的程序员之路非常重要!

所以学习语言更为重要:

面向对象编程思想;类的封装,构造和析构、静态成员、对象管理;类的构造(有参构造函数、无参构造、拷贝构造、默认构造函数)和析构;对象动态管理、友元函数、友元类、操作符重载; C++编译器对象管理模型分析;类对象的动态管理(new/delete);友元函数和友元类;运算符重载(一元运算符、二元运算符、运算符重载难点、项目开发中的运算符重载);类的继承、多继承及其二义性、虚继承;多态(概念、意义、原理剖析、多态案例);虚函数、纯虚函数、抽象类(面向抽象类编程思想案例);函数模板、类模板,模板的继承。

C++类型转换;C++输入输出流(标准I/O 文件I/O 字符流I/O);C++异常处理(异常机制、异常类型、异常变量、异常层次结构、标准异常库);利用一些IDE开发工具:诸如Windows平台VC系列:VC++6.0(比较古老) ;Visual Studio2013, Visual Studio2015,Visual Studio2017,Visual Studio2019;Mac平台的XCode系列,还有CodeBlock,另附一些高级编辑器Notepad++, EditPlus,UE等一些开发工具的常用设置和一些常见快捷键的使用。

这个阶段推荐以下两本书:

《Essential C++》 这是一本内容不多但很实用的C++入门书籍,强调快速上手与理解C++编程。本书主要围绕一系列逐渐复杂的程序问题,以及用以解决这些问题的语言特性展开讲解。你不只学到C++的函数和结构,也会学习到它们的设计目的和基本原理。

《C++ Primer》 本书对C++基本概念、技术、以及现代C++编程风格进行了全面而且权威的阐述,是C++初学者的最佳指南;本书可以帮助你编写实用的程序,而无需首先精通每个语言细节。对于中高级程序员,本书也是不可或缺的参考书。

二、C/C++开发进阶

学习视频推荐:C++进阶【慕课网 免费课】

在第二阶段学习的时候,就是比较重要的了,C++开发的进阶之路,更是一个让自己找份薪水比较体面的工作的筹码。

C++进阶之STL:

STL = Standard Template Library,即标准模板库。这是提高开发效率的极品工具。通过学习此阶段,应掌握泛型编程技巧,理解容器类在C++语言中的应用模式,以及熟练掌握全部STL类的使用方法。

C++进阶之设计模式:

决定一个项目成败最重要的因素是项目总体的设计,通过本阶段的学习,可掌握面向对象编程中重要的一环,是编码前建模的技巧所在。单例模式;工厂模式;代理模式;迭代模式等,这些都是你要掌握的哦。

C++进阶之数据结构基础:

这是所有编程语言中最应该学习的部分,程序组成的基础之一。顺序存储、链式存储、循环链表;

双向链表、栈(顺序和链式)、队列(顺序和链式);

栈的应用、树基本概念及遍历、二叉树;

排序算法、并归算法、选择、插入、快速、希尔。

这个阶段推荐以下几本书:

《Effective C++》和《More effective C++》 作者是Scott Meyers。你应该熟读它们,并清楚地理解每个项目。该书围绕55条准则,每一条都介绍了一个可让你写出更好的C++程序代码的方法,并以特别设计过的例子详加讨论。

《Exceptional C++(C++编程剖析)》和《More exceptional C++》 这两本书中都包含了40个C++编程问题,这些问题会让你磨练自己的技能,最终成为优秀的C++程序员。这些问题是Herb Sutter精心挑选,与ISO/ANSI C++官方标准相一致,帮助程序员在设计、架构和编码过程中保持良好的风格,从而使编写的C++软件更健壮、更高效。

《Inside the C++ object model(深度探索C++对象模型)》 本书专注于C++面向对象程序设计的底层机制,包括结构式语意、临时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承,帮助你理解程序的底层实现,以便写出更高效的代码。

《The design and evolution of C++(C++语言的设计与演化)》 本书作者也是C++语言的设计者Bjarne Stroustrup,作者在书中综合性地介绍了C++的发展历史,C++中各种重要机制的本质意义和设计背景,这些机制的基本用途和使用方法,讨论了C++所适合的应用领域及其未来的发展前景,既没有忽略关键性的详情,又没有过多地陷入技术细节。

三、C++开发高级

视频教程:程序设计【中国大学MOOC 】

这个阶段几乎伴随了职场后续的整个生涯,只有更精没有最精,C++高手之路,任重道远!

这个阶段需要掌握的一些C++技能:

C++进阶之QT开发:

掌握QT类库构架,图形界面开发模型;掌握QT开发技巧,消息机制,图形处理;掌握QT网络编程,UDP,TCP使用方式;掌握QT文件处理方式,序列化;掌握QT在windows,linux,ios,android不同平台下的移植技术

C++进阶之Windows/Linux网络服务器:

掌握Unix/Linux平台开发方式;熟练使用系统调用;熟练Unix/Linux内存管理,进程,线程调度;掌握MFC界面开发,网络编程;熟悉网络服务器开发方式,熟练编写TCP,UCP网络服务程序;掌握同步/异步IO模型在网络编程中的使用方式。

C++进阶之数据库开发:

掌握SQL语言的实用技巧。Oracle,MySQL数据库的使用方式。

如果你能熟练掌握以上列出的技能,具备解决复杂问题和技术难点的能力,而且你能独立开发一些比较复杂的功能模块,这个时候C++基本就没有太多能难到你的东西了!

四、操作系统

教程链接:6.828 :操作系统工程

国外有很多优秀的操作系统公开课,比如mit6.828、哈弗OS/161。这类课程都会给你提供一个mini os壳程序,相当于一个核心组件,剩下的你可以自由发挥。比如你可以设计线程管理、文件系统等等。相比只是看操作系统的书籍,这种学习方法的效率简直高100倍!

五、数据库

视频教程:MySQL数据库从入门到实战课【CSDN 课程】

国内说数据库就是mysql,这点要相信我!

首先概览下mysql的知识体系:
基础:

  • sql语句
  • 表结构设计

调优:

  • 索引、慢查询优化
  • 配置参数调优

核心原理:

  • InnoDb存储引擎 (包括隔离级别、事务、锁、缓存池、回滚日志等等)
  • Mysqld (包括连接管理、进程管理、查询缓存、查询优化、日志等等)

架构与运维:

  • 用户与权限、安全
  • 备份与恢复
  • 日志
  • 分布式与高可用

推荐两本书:
1.《MySQL必知必会》 这本书讲的非常全,从基本概念,到查询到插入新建表,用户的管理,都有具体的例子,非常适合没有任何基础的同学来学习Mysql,总之这本书学习的方法就是:1、十分钟了解下数据库的基本概念 2、找到练手的数据库 3、对照着上面的内容去敲。本书里也有大量的内容是讲sql的,可以结合w3c的sql教程一起,有取舍地看。

2.《数据库系统概念》这本书是dba必看的。

看完这些并且实践+思考之后,可以算入门了。

接下来对于希望深入学习的童鞋:

我推荐几本书(很多大神都这么推荐),《高性能MySQL(第3版)》、 《MySQL技术内幕(第4版)》,《MySQL技术内幕 InnoDB存储引擎》,《深入理解MySQL》还有Mysql的官网。读完这些东西,再加些丰富的经验,理论上来讲就具备DBA的水平了。

六、计算机网络

教程链接:计算机网络试题【牛客网】

网络知识工作后非常非常重要!

我分三个阶段来介绍:

1. 入门

第一本书 建议看谢希仁的《计算机网络基础》

2.进阶

然后第二本要看 《TCP/IP详解1:协议》,这个阶段需要多思考和动手网络在LINUX系统上发挥的最淋漓尽致,所以在学习的时候最好学习LINUX配合使用,学习LINUX,推荐《鸟哥的LINUX私房菜:基础篇》。

学习网络过程中,要不断抓包分析等,自己能写些简单的应用来发包更是完美。抓包工具推荐:LINUX环境下用TCPDUMP,windows环境下用 wireshark。这个阶段写习完后,已经是个小高手了。。

主要技能应该是 : 对TCP,IP,DNS,icmp等协议应该都蛮熟了得了,dhcp/tftp/ftp等协议也应该都懂些,重点是要学会如何分析一个协议及LINUX系统的基本操作也差不多了。

3.高手阶段

这个阶段需要有一点的编程能力,指C/C++编程。主要学习的方向是协议的实现和协议的架构原理
协议的实现方面, 主要学习底层协议(指传输层及以下)的实现, 这些协议都是在操作系统层面实现的,最好的教材是《TCP/IP详解:实现》。至于网络架构这块,可以学习《计算机网络》这本书。

 

发现不会的或者学习Python的,可以直接评论留言或者私我【非常感谢你的点赞、收藏、关注、评论,一键四连支持】

贴一下互联网头部大厂2020年校招相关岗位的薪资待遇:

学习没有捷径没有秘籍,只有踏踏实实多看多练多问,学习如此做人亦是如此,希望大家都能找到满意的工作!

计算机专业学了快一年, 只会一点C语言,你好意思说自己是IT专业的?相关推荐

  1. 大学计算机专业学高数吗,数学差‍的学生,大学最好别选这几个专业,不然将来恐难毕业...

    文/妮妮 高考"三分考,七分报",填报志愿的重要性不言而喻,而报考最重要两项就是大学和专业. 在高考之前,同学们有想过自己想学什么专业,或是对哪方面比较感兴趣的吗?大多数学生选择专 ...

  2. 测绘专业计算机应该学什么,视频 | 测绘工程有哪些就业方向,什么人适合学习测绘工程专业...

    原标题:视频 | 测绘工程有哪些就业方向,什么人适合学习测绘工程专业 导 读 2020高考填报志愿时,现对测绘工程专业简介.就业方向.就业前景等信息做相关分析,供大家参考. 一.测绘工程专业简介 测绘 ...

  3. 气象学需要计算机知识吗,应用气象学专业学什么

    应用气象学专业学什么? 快车教育,某名企人力资源总监曾先生表示,应用气象学专业培养掌握应用气象学专业的基础知识.基本理论和基本技能,能够在农业气象及生态环境监测调控.信息分析处理.资源开发利用和防灾减 ...

  4. 不是计算机专业学python能找到工作吗-python学习难不难?非计算机专业也能学吗?...

    听很多学习培训Python程序编写的人说Python简易容易新手入门,很多IT培训学校的教师也说各种各样编程语言对比出来,Python是非常简单的,我觉得招来一群非计算机专业的同学们摩拳擦掌,可她们在 ...

  5. 计算机类大一需要学什么原因,大一新生上大学要不要带电脑?我认为不论什么专业,电脑是必需品...

    原标题:大一新生上大学要不要带电脑?我认为不论什么专业,电脑是必需品 导语 有很多大一新生问我,上大学要不要带电脑,有没有必要买一个好一点的电脑呢?因为现在也即将开学了,很多同学们都在为开学做准备,但 ...

  6. 职专计算机怎么学,浅析职业中专计算机专业计算机教学

    [摘 要] 目前职业中专学校计算机专业存在着学生素质不高.课程结构不合理.考核形式单一等影响自身发展的因素.要想在发展的大趋势中争得自身生存和发展的空间,不断缩短与社会需求的差距,职业中专计算机教学改 ...

  7. 电气专业学python吗_985大学毕业起薪最高的五个专业,计算机、金融、电气上榜!...

    本科毕业生起薪是指本科毕业生第一份工作能够获得的薪资水平,大学毕业生的起薪一般会因为学校.专业.地区的不同而有所差异.一般来说,985大学毕业生的起薪要比普通大学毕业生的起薪高一点,那么,985大学中 ...

  8. 知乎神回复:计算机专业学成什么样,才算“大学没白读“?

    翻开计算机本科专业目录,我们会看到计算机是个大类,计算机专业类包括计算机科学与技术.软件工程.网络工程.信息安全等七八个专业.其中,最核心.最基础的专业就是计算机科学与技术,这些也是各院校计算机系招生 ...

  9. 水利专业学计算机吗,大学哪些专业最易被误解?计算机专业居榜首,水利学生气到不行!...

    随着社会的发展,大学专业开设也是越来越丰富,很多大学专业单看字面意思真的容易造成很多误解.我们很多在校生每次跟家长或者朋友聊天的时候,各种被误读的解释常常让人忍俊不禁.到底,大学哪些专业最易被误解?快 ...

最新文章

  1. CPSR和SPSR(转)
  2. 连咖啡首席产品经理左弘帆:all in小程序前你想清楚了吗?
  3. 传统的线性降维方法效果不佳。_高压断路器机械故障诊断与定位的新思路:KPCA-SoftMax诊断方法...
  4. 《Java 核心技术卷1 第10版》学习笔记------ -理解方法调用【重载解析、静态绑定、动态绑定】
  5. 显卡A卡和N卡有什么区别
  6. luogu P1519 穿越栅栏 Overfencing
  7. Tensorflow深度学习应用(筑基篇)
  8. C++ stack
  9. HTTP协议:GET请求
  10. 20155238 2016-2017-2 《Java程序设计》第三周学习总结
  11. 20. Prefer pass-by-reference-to-const to pass-by-value
  12. 方舟生存 服务器修改器,【修改贴】关于单机版gg修改器的应用。
  13. 曲线运动与万有引力公式_专题三曲线运动与万有引力定律
  14. 分布式事务解决方案(一)Seata集成和使用
  15. TweenMax.to()的使用
  16. 谷歌浏览器播放器声音
  17. 华东交通大学2018年ACM双基程序设计大赛题解
  18. AtCoder Grand Contest 012 B Splatter Painting(记忆化搜索)
  19. java 学习 汇总
  20. CSS属性 – text-decoration(常用)

热门文章

  1. rfid技术及应用答案王佳斌_rfid技术及应用课后答案王佳斌
  2. trex做网卡性能测试方法
  3. 知识付费社群运营怎么做?
  4. 使用spyder编写爬虫_CodingPark编程公园
  5. Unity Shader菲涅耳反射(Fresnel)
  6. Unity中简单的cubecap+fresnel shader的实现
  7. React 编码工具
  8. 徐传运 计算机教育,张杨-重庆师范大学计算机与信息科学学院
  9. 世界上最难征服的山峰排行
  10. 确定你的台式计算机支持的内存类型,怎么查看电脑主板支持多大内存?教你看主板支持多大内存2种方法...