总结
经过四个月在华清远见的学习,我收获了很多东西。这四个多月算是高考后,最充实的一段时间。
一开始的时候算是比较轻松的,因为C语言在大学学过,有些比较基础的东西还是比较简单。在华清学习,该阶段主要是查漏补缺,有很多细节上的地方得到了很好的补充,比如各种情况计算字节大小,尤其是结构体的大小,有32位64位之分,还有默认对齐位数,在以前是不知道的。还有像指针这类难点也得到了突破,不仅是指针的概念的,还有多级指针,const修饰指针等等难点,老师还讲了指针数组,数组指针等比较容易混淆的知识。在这期间和后面的c高级阶段,还学习了一个重要的东西,就是Linux操作系统。Linux因为它的开源,可移植性和可裁剪性,非常符合嵌入式的使用要求,所以我以后常接触的也是该操作系统。然后学习了IO操作,对文件操作有了深刻的认识。接下来就是面试的重点了,网络编程,这部分算是一个难点,其中tcp,udp是比较常用的传输层协议,他们的主要区别就是tcp可靠,udp不可靠,容易数据丢失。基于这些协议来写服务器,然后通过并发,IO多路复用来实现多个用户同时使用服务器传递数据,其中比较了select、poll和epoll几种方法,不过IO多路复用是伪并发,真正的并发是进程和线程来实现的,这种也实例过。进线程应该算是比较基础的内容,但是是比较重要的内容,它的难点主要在进线程通信部分。线程通信有个同步和互斥的概念,这两种容易搞混,同步是让不同线程按一定的顺序执行,互斥是保护临界资源,一个线程在用的时候,另一个线程不能用,从概念上感觉两个没有关系,但其实同步的过程算是完成了互斥的操作。进程通信方式比较多,有无名管道,有名管道、信号,共享内存,消息队列,信号量等。共享内存是进程的,全局变量是线程的通信方式,之前记错了。
C++在大学里是有这个课程的,但是当时混了,没学到什么,完全忘了,这次基本算是个新东西,不过它是在c语言的基础上发展上来的,所以还是有很多学过的地方,前期学起来还是比较轻松,不过后面有点难,比如重载,重写,重定义的区别,就很容易搞混,但多练几次还是能总结规律,比如重载是在同一区域(同在父类或同在子类)里才有的概念,不同区域才区分重写和重定义,然后重写是函数名,参数,返回值都一样,还必须有virtual,其余全算重定义。
然后学习了QT,QT算是比较有意思的东西,它没多少逻辑上的难点,主要都是用别人定义好的东西。它特有的机制是信号与槽,例如一个按钮,按下会有一个信号,这个信号会触发一个槽函数,槽函数里面去实现各种功能。整体还是不难,唯一难的就是不知道,很多没见过就想不起用它,以为要自己写,其实别人都已经弄好了,比如播放器,摄像头,这些QT已经有写好的类了。自己写了个音乐播放器,其实都不能算自己写的,大部分都是用QT的,自己写了个界面。
后面的就比较难了,关于底层的内容。ARM学了个汇编语言,写个加减倒还是挺简单,一旦涉及循环,递归就难搞了,而且想参照C语言程序写一个稍微长一点的代码就难以下手。然后就是各个模式下的寄存器,有点乱。系统移植,课程内容算是简单,就是跟着老师一步步走,只是让我自己重新移植有点困难,过程复杂,还是得看视频一步一步跟着。有点担心工作了怎么办,工作移植的系统肯定需要不同功能,不知道到那找。驱动开发就有点麻烦了,操作麻烦,写代码也麻烦。整体学下来基本不会。只能指望后面工作了继续学习。
在学习过程中,我的懒癌频发,导致很多时候有点跟不上,不过也有客观因素,我的路程有点远,每天有接近3小时在路上,也少了很多练习时间。归根结底还是没有被逼到绝境,感觉到的压力还是不够,对自己的目标有点低了,之前就想的出去能有7千就不错了,现在能有6千就好了,对自己的要求太低了。
工作了应该不会这样随遇而安了,工作的压力是能直接感受到的,到时自己赚钱自己花,消费肯定会很高,这肯定会逼着自己多赚钱。因为即使现在没什么钱,还是想要追求一些好东西,只能从其他地方减少开支来支持我的爱好。
因为我学的不怎么样,所以接下来我想先找一个还可以的工作,先进入嵌入式这个行业,然后在一个地方沉淀几年,为自己增加经验,增加涨薪的筹码。
华清这个地方还是不错的,老师都很热情,有问题都会给你解答。不吹不黑,大部分都很好,只是有些老师的水平还是有点不够,不过在前面相对简单的阶段。最好的一点是学不走了可以滑班,跟着下一个版班继续学,我就滑过一回。要是大学里就知道这个就好了,在这里学几个月,然后校招找个好公司,也算是有个高的起点了。
总的来说这4个多月还是很值的,学到了很多东西,明确了以后奋斗的目标。