首先聊一聊我是怎么接触到编程这个行业的,表哥在当地的一所高职院校的电子信息学院当副院长,带的是计算机专业。当时我一亲戚也是就读于这所高职院校电子信息学院,2008年的时候学的计算机网络编程技术,属于比较早学习计算机专业的一批。后来也没找到专业对口的好工作,从事了其它行业,具体是啥就不便透露了。
继续聊自己,就读于区里重点高中。虽说是重点高中,但是进重点班和宏志班才有希望,普通班奋斗是机会渺茫,前两年几乎是那种半学半玩的状态,最后一年艰苦奋斗终究是名落孙山,也希望各位客官能多学点是一点,书到用时方恨少。连谈恋爱的时候都感觉到书到用时方恨少,开个玩笑,有点扯远了,哈哈,学习归学习。
2014年9月来到当时表哥所在的电子信息学院,学的移动互联专业,本来是想学建筑,搬砖的,哈哈。阴差阳错入了编程行业,一如编程深似海,从此节操是路人,随叫我们比较骚呢,闷骚型。
接着讲解下移动互联这个专业学的专业性质以及大体内容,打着校企合作的招牌广纳贤才,当然也和招聘老师的口才密不可分,相当能说。签了一个啥就业保障协议其实作用不大。感觉是变相入坑,3年下来,一共多交1.8w,快要毕业的最后5个月去所谓的校企合作培训机构去实训5个月,做一些小项目,达到速成。其实最终还是看个人,大学期间合理利用空余时间在网上自学,我的初恋编程学习网站慕课网。
专业介绍:
移动互联,顾名思义移动互联网,主打移动端。主要分三个大方向,第一个是以学Java
语言为主,最终开发走向是面向当时最火爆的Android
开发。还有一个开发方向就是企业化信息管理主打C#
编程,ASP.NET
那一套,最后一个大方向是Javaweb
后端开发。
第一个大方向是学Java
编程,当时Android
编程语言用的是Java
,后来把主语言改为了kotlin
,但是也可以互相转换,早期那会儿(2014年)我们用的还是adt-buddle
,现在用的都是Android Studio
。
瞅瞅我们学Android
的两本书。记得当时用的数据库是SQLLITE
来着,托拉拽做了一个简单的增删改查,后期熟练后,托拉拽这种形式还挺便捷的,节约时间。我自己当时还模仿网上的教程写了个简单的五子棋,五子棋还是涉及到很多算法的,挺深奥的。后面这条线被遗弃了,白学了。
第二个大方向ASP.NET
,那就接着讲讲C#
吧(微软当年学Java
打造了J++
,后面不知道为啥放弃了,开发了C#
),也就是ASP.NET那一套,包含:C#,Winform,SQLServer
。
是不是感觉我们专业学的东西很多很杂,大学三年能学通吗?其实我还没讲完,后期不知道啥原因,Android开发行业竞争日益强烈,被迫改大变方向学了Javaweb方面的知识。
第三个大方向。主要从事web后端开发,提供一些API
接口,当然也要会一些前段框架知识,比如JQuery
,JavaScript
,HTML
,CSS
等编程知识。也少不了数据库方面的知识,例如MySQL
和Oracle
,当年学的好像是Oracle9
来着。
部分专业课详细回忆:
最开始学的是比较老的技术,JSP
动态网站开发,当然也涉及到了Servlet
。
Servlet(Server Applet),全称Java Servlet,未有中文译文。 是用Java编写的服务器端程序。
其主要功能在于交互式地浏览和修改数据,生成动态Web内容。
ss2h
三件套配合Oracle
学习。
那会主要学的是Oracle
,还没涉及到MySQL
。
现在的互联公司几乎采用的的是动静分离,也就是前后端分离技术。再来聊聊web
方面后端需要掌握当时大厂用的比较多的框架,有Spring
这很重要,以及mvc
这种三成架构开发模式,当然这是一种编程思想。Struts2
这门也不例外,当时学的可艰难了。说道Struts2
面不了涉及到Hibernate
,现如今Hibernate
(一个ORM
持久化框架,解决书写纯JDBC
的繁琐,其实就是底层封装了JDBC
)的知识我也忘记的差不多了。看完之后是不是觉得这边学一点,那边学一点,到头来啥也没学会。
这是我们移动联专业当时学习的全家桶,部分知识都快遗忘了,后期拍照截的图。书籍保留在家里,偶尔还会翻一翻。
大学的第一年,也就是2014年的秋天。经历完军训后,开始分班了,我被分到了和原先宿舍几个色友(老司机)不同的班级,开始了慢慢的编程之旅。
回忆之计算机基础知识:
初学的第一本书叫计算机基础知识来着,教一些word
页面排版,Excel
表格的设计,以及ppt
的制作这些常用的基础知识,刚接触的时候想要模仿的好,还是不容易的,个人觉得这些知识还是很实用的。后面学校也组织考了全国计算机高薪技术考试办公中级,好像会计学院也要考来着,他们还考了办公高级。个人感觉考这个证对Java
面试并没多大用处,用网络流行语表达就是没卵用。后期还考了激素那几组装与维护,还有Java
初级开发工程师,具体是哪的认证我都不知道。如果不是思科那种权威认证,不建议面试时带上这种证件。
编程前期学的两本书:
回忆之HTML网页设计:
后面就开始学HTML
静态网页的编写了,知识点大致有:"head头部,title标题栏,body主体,div分割区、或者区域部分起到划分作用,p段落标签,a加入链接标签,h1标题标签,table表格,tr列,td行,form表单元素"等等一些页面标签的使用。学完之后,就可以做些简单的静态的网页了。
回忆之微软的三件套:
然后就开始学习我们的第一个真正意义上的后台开发编程了,也就是所谓的后台开发。可惜最开始学的并不是Java
这条线,而是微软ASP.NET
的那一套,C#
和Winform
技术,意想不到吧。
微软的三件套:
我也很纳闷,学院为何不一开始就带大伙学习Java
语言,当时带课老师说,学院觉得C#
相对于Java
语言相对简单一些。学完C#
之后,再学Java
编程要容易的多。后面我看了Java
核心卷1第10版(这一版更新了Java8
的一些知识)后,至今还在阅读中,也推荐想入门的或者在职的都去阅读阅读这本实体书,绝对有意想不到的收获。学完之后确实有所感受,C#
和Java有很多相同之处,应该就是前期模仿了Java
这门优秀的语言开发技术。值得注意的是C#
里是有多继承的,而Java
只有单根继承,多实现。但是现在想来当时学院当时浪费将近大半年学习微软的那一套其实是不明智的,并没有多大的成效,驳杂而不专精。推荐这本书籍给大伙,你值得拥有。
回忆之Java编程:
学完ASP.NET
一套后,算是正式开始了Java
入门编程之旅了。学的是Java
的一些基础知识,始终记得最开始连配置Java
环境都记不住,后面发现压根就不用记住,亲自配一遍,写一篇博客记录下来,下次使用就方便多了,用多了自然就熟练了。
配置JDK环境变量,工欲善其事,必先利其器。
还有第一次是在不用编辑器eclipse
或者idea
这类软件的情况下,编写一个hello world
然后使用javac
[Demo.java]进行编译,编译后使用java
[Demo]输出结果,这是在win
下面的dos
环境下使用的,已经配置过JDK
环境变量了。当然在linux
下使用方法也差不多,纯字符界面,用vim
编辑器编辑后保存,然后使用javac
命令编译,使用java
命令进行输出。我这里方便演示就没改了,当然工作空间路径不建议使用中文或者有空格,最好用英文有意的文件路径,方便自己记忆查找。
还是讲详细点吧,使用命令[d:]进入D盘,然后cd [接你的文件路径名],切到Demo.java目录下。
后面就开始了使用eclipse
进行开发了,快捷键很多,熟练使用后可以达到事半功倍的效果。举几个简单的快捷键:
Ctrl+1
万能提示键,Ctrl + shirt + r
全文搜索,Ctrl + f
查找,Ctrl + shirt + f
格式化代码这几个还是挺实用的。关于下载链接,下面给出官网直通车,不一定要用最新版的,肯定是用最稳定的版本。讲点后期工作中涉及到的,一般是使用SVN或者git进行多人协作开发,下面也给出SVN的安装与简单的使用方法,后续有时间再更新Git
的详细使用方法。
Linux(Centos6.5)下搭建SVN环境
Eclipse for JavaEE官网直通车
第二年终于开启了Java基础知识的大门。
Java
常量与变量,Java
运算符,Java
流程控制之选择结构,Java
流程控制之循环结构,Java
数组之一维数组,Java
数组之二维数组,Java
方法,数组移位与统计。依稀还记得学完后的的期末考试最后一道题,使用for
循环写一个简单的1+2+...+100
的求和sum
。
里面的知识就不细讲了,聊下去都可以写好几篇文章了,就不多BB了。
接着Java
基础往后,就是Java
编程技术开发了,属于进阶知识范畴。
Java
面向对象多态、封装和继承以及单例模式。Java
常用工具类 ,Java
异常 ,Java
包装类, Java
字符串 ,Java
集合 ,Java
集合排序 ,Java
泛型,Java
多线程,Java IO
输入输出流以及JDBC
的使用。这里也不做过多的赘述,就给出一个简单的BuddleSort
(冒泡排序,稳定,O(n2)),有些公司对应届生都会问到这个算法,笔试题上也会经常出现,当然掌握一些其它的更好:归并排序(稳定,O(nlogn))、快速排序(不稳定,O(nlogn))、堆排序(不稳定,O(nlogn))、二叉树排序(稳定,O(nlogn))等等。
其实上面的代码有点小问题,细心的同学是不是发现了array.length
出现了很多次,可以抽出来赋值(int n = array.length;)
给n
,看起来也舒服一点。是不是很纳闷,我怎么不直接贴代码,直接粘贴复制没多大意义,在于平时带着理解多练练,自然就会了。建议初学的时候能手动敲,尽量手动完成代码,不要想着走捷径,编程这个行业是没有捷径可走的,有的只是前人通过自己的经验总结出来的,让你在学习的大方向上少走弯路而已。
回忆之Android开发:
紧接着又恶补了Android
基础和进阶这两本书,当然也涉及到了SQLLITE
数据库的知识点。前面也讲到了,由于Android
在我们毕业的那一年并不是很吃香,就业形势不是很好,就被舍弃掉了。当时还是很喜欢Android
开发的,毕竟开发完后可以看到优美的界面,不像Javaweb
那样只是编写API
接口和一些前端的JS
,只能看到后台管理界面感觉很枯燥乏味。
回忆之数据库学习:
学完Java
编程进阶篇后,就开启了Oracle
数据库的学习之旅。在这之前其实已经有了SQLServer
的基础,学习来相对简单一些。印象比较深的是一些聚合函数sum
,min
,max
,avg
,count
统计函数。还有联合查询,主要有inner
join
内连接,left outer join
左外连接,right outer join
右外连接,full outer join
全外连接。还有分页查询Oracle
与MySQL
的有所区别,MySQL
的是使用limit
关键字。当然还有一些SQL
高级知识,比如游标,存储过程和视图这些可以去了解使用的方法,这里不做过多赘述。也不深究怎么去安装Oracle
数据库了,CSDN
上应该有不少很详细的教程。
Oracle
的分页查询是这样的,以scott
账户下的emp
表为例子:
首先查询一下emp
表:
Select * From emp 查询第6~11数据通过嵌套子查询,使用到关键字Rownum和where
Select * From (Select emp.empno,Rownum r From emp Where Rownum<=11) Where r>=6
先进行排序,再分页查询
排序:Select * From emp e Order By e.empno Desc
分页:Select * From (Select e.*,Rownum r_num From(Select * From emp e Order By e.empno Desc )e)b Where b.r_num between 6 And 11
回忆之JavaScript:
学完Oracle
之后,接着迎来了JavaScript
这门前端必备的编程语言。前端同学必备学习编程语言,当然随着业务需求后端开发也是要会的,国外很流行全栈工程师,当然在国内全栈工程师肯定也是很吃香的,想想老板请你一个顶几个,偷着乐。
个人理解,一般都是和HTML网页搭配着使用,写完js
文件,举个例子使用:
标签引入。
还有引入方法,给出例子如下:
<script type="text/javascript" charset="utf-8">
mui.init();
mui.plusReady(function() {
plus.navigator.setStatusBarStyle("light");
plus.navigator.setStatusBarBackground("#C9394A");
});
</script>
还有经常使用到的var
定义变量,值得注意的是现在java
也支持了。其它的就不多说了,后面接着聊JSP
。
回忆之JSP:
学完JavaScript
后,开始了新的征程。这是进入到Web
开发中,一开始不是ssh
和ssm
这些,而是JSP
和servlet
。说道JSP我前几年出去面试时已经很少遇到公司会问了,但是还是得做些准备防着。4大作用域和9个内置对象还是有印象的,Application
作用于整个应用程序;page
作用于页面;request
代表与 Web
客户机发出的一个请求相关的对象和属性,可能跨多个页面;session会
话属性,经常会跨越多个客户机请求。内置对象包含request
用户端请求,此请求会包含来自 GET/POST
请求的参数,response
网页传回用户端的回应,pageContext
网页的属性是在这里管理,session
与请求有关的会话期,application servlet
正在执行的内容,out
用来传送回应的输出,config servlet
的构架部件,page JSP
网页本身,exception
针对错误网页,未捕捉的例外。
回忆之ssh框架:
继JSP
之后,才开始学习了当时大公司都在用的ssh
框架。ssh
指的是Struts2
(相对于springmvc
就有点老了)、Spring
(相信大家应该有所了解)以及Hibernate
(ORM
持久化框架)。肯定会有疑问,Struts2
和Struts
是啥关系,之前学的时候注意到介绍Struts2
是以webwork
为核心。Spring
是一个轻量级web
容器框架,尤其是SpringAOP
面向切面和SpringIOC
控制反转这两块在面试中提到比较多。Hibernate
底层封装了JDBC
,一款开源关系映射框架,编写DAO
数据访问层更方便了。
Struts2 是目前较为普及和成熟的基于MVC设计模式的web应用程序框架,它不仅仅是Struts1
的升级版本,更是一个全新的Struts架构。最初,是以WebWork框架和Struts框架为基础,通过提供增强和改进的Struts框架,进而实现简化web技术人员开发工作的目标。不久之后,Webwork框架和Struts社区联合创造了现在流行的Struts2框架。
ssh
框架学习完后,快到第三年了。期末考试弄了个ssh
框架整合,具体也记不清了,反正用MVC
三层架构写了个CURD
就算通过考核了。
回忆之实习经历:
再后来就是去工厂流水线实习,无力吐槽,计算机专业跑去流水线实习半年,学的知识怕不是忘掉了大部分。也不知道大专暑假出去实习,是不是都被学校安排进了流水线,学校和工厂是否有PY交易就不得而知了。犹记得当时我因为体检时某一项超了一点,电子厂居然不让进去了,来回的车费算是打水漂了,当做暑期去常州的一次旅行了。
回忆之校企合作之培训经历:
紧接着就是校企合作的重头戏,来到了培训公司的分部,当时在武汉软件新城。进行了为期5个月左右,反正不到半年的培训,学习一些大学没教过的知识点,用小项目来练手。最开始是写ssh
框架的,基本上后台页面使用jsp
进行开发的,前后端分离当时也没涉及到。边做项目时,用到jQuery
就是现学现用,ajax
也一样。后面开启了ssm
(springmvc+spring+mybatis
(ORM
持久化框架,底层封装JDBC
)),在这期间使用到了easyUI
现学现用,使用到了maven
中央仓库,不再是用传统的导入jar
包形式。当然还用到了svn
,以小组形式,每组5人协作开发。
回忆之ssm框架:
把ssm
框架单独拿出来聊一聊吧,spring
就不多聊了,用起来很爽,字面意思就看出春天来了,让我想起了一首歌的歌词:春天花会开,鸟儿自由自在。看看springmvc
的介绍
提供了构建 Web 应用程序的全功能 MVC 模块
后期进化到springboot
,进一步简化了pom.xml
配置文件,超级进化就是springcloud
微服务架构了,有兴趣的可以去了解了解。现在springboot越来越受欢迎了,值得大家去学习学习。看看官网的截图,spring官网直通车
用了mybatis后是真心觉得好用,个人觉得配置比hibernate用起来舒服多了。
学习网站推荐:
mybatis3在github上的开源代码我就不做过多介绍了。
当然还有:mybatis-plus,是mybatis的增强工具,很多公司目前也在用,建议大家去了解一下,会有意想不到的收获,在之前还是建议了解下原版的mybatis。
相信很多人都用过:程序员都在用的网站,你值得拥有,github
培训结束后,就各奔东西了。由带队老师带领想去哪些大城市找工作的,基本上是在地铁口附近租房子。前期让你写完个人简历,然后海投简历(包装1到2年,懂得都懂)。说是校企合作,有就业保障,推荐就业,其实就是带队老师监督你自己去应聘。期间推荐过一回,居然事先并没打好招呼,让三个人一起去面试,是不是很无语。
推荐几个学习网站给大家:第一个是我的初恋情人慕课网,免费课程也有很多,在于去挖掘,希望对想入行的起到一些帮助吧。
程序员都知道网站github,认真看下来的肯定是看到了,前面介绍过了github直通车。
还有一个是:依托于Git的代码托管服务的网站gitee,访问更快,大家都懂得
部分书籍推荐:
再推荐几本我高中时代就在阅读的书籍,没去网上抠图片,用手渣渣手机拍的照,别介意哈:
百年孤独
鲁迅全集,诗歌散文集值得阅读,尤其是朝花夕拾。
曾国藩家书。曾国藩晚清中兴第一名臣,值得大家学习。
尾声:赶到2019-12-31也是2019年的最后一天总结了这篇文章,可能有些地方不是很完善,也请多多包涵,第一次写超过万字的文章。也希望新的一年各位客官开开心心每一天,自己也能多写写有意思的文章。
PS:书山有路勤为径,学海无涯苦作舟。光说不练假把式,多学多练,多思考,有益身心健康。给即将进入编程世界的爱好者,或许有些人听朋友、亲戚或者同学介绍,程序员工资特别高。未来肯定是美好的,但是高工资对应的是你辛勤的汗水,而不是打酱油、划水,摸鱼能做到的。前行的路上遇到挫折是肯定的,热爱这行,你才有可能比大多数人走的更远。个人的编程学习经历仅供参考,希望我的这段经历能给各位客官些许收获吧。提前祝大家新年快乐!!!