2017/2/13的碎碎念

从开始工作到现在,已经过去了一年半,近期想转行,遂记下这一年半的时间里的各种碎碎。

说实话一年半里专业水平在项目中提升不是很多,由于业务强烈依赖高通,好多内容对新手来说不是很容易上手,掺杂了很多底层知识。公司里的培训相对又较少,造成自己对业务无法形成系统性的认知,也基本没有写代码的机会,遂放弃。
但是自己对操作系统的理解确实提高了一个档次。以前完全是看不懂操作系统在讲什么,不理解操作系统为什么设计?现在至少可以对其概念有了清晰的认知。

下面记录一下自己的学习路径:

linux内核学习

内核学习主要从以下两方面入手

  • 必须先了解linux的内存管理部分,内存管理是精华,也是我们可能经常会碰到问题的地方。参考英文版的《深入理解Linux虚拟内存管理》,中文版翻译很烂。
  • 学习《深入理解linux内核》这本书把linux内核讲的很透,值得反复看。如果英文版的《内存管理》那本书看不懂,可以先看这本书,这两本书,我一直在交叉看。

驱动学习

  • 驱动学习必须先从device tree入手,内核3.0后都改用的设备树了。要理解“device tree是对硬件的抽象”
  • 然后是如何使用各个模块的接口,如regulator、gpio等
  • makefile编写
  • android中.rc文件配置

android学习

本身从事手机行业,提供了编译接触到android源码的机会,方便在学习中添加自己的功能。由于这半年自己负责的是指纹模块,对android的系统服务有了一定的认知。

  • android的基础是binder通信,但是不一定非要深入了解binder。首先要利用binder添加系统服务,包括native service和java service,这样才了解到binder的基本结构。native服务和容易添加,java层的服务需要花费点时间。android的主要工作在java层,即framework构建了新的体系。现阶段,对binder通信结构的基本了解,能添加服务,还需要深入了解。
  • 学android离不开java

java学习

学习的时候走了很多弯路。虽然之前已经有过基础,研究生期间学过java的基本语法,但是当时学的很浅,也没有意识到java其实比linux还难。linux入门很难,但是入门之后,会发现是有规律可循的。linux可以分为内存管理、进程调度、文件系统等,每一部分都可以作为独立的一部分来研究。研究每一部分都需要先把对应的数据结构搞清楚,基本上搞清楚的数据结构的每个成员的作用,这部分就能了解的差不多。比如内存管理部分,对应的数据结构是struct mm_struct(给进程用的内存描述符)、struct page(描述内存物理页)、struct zone(描述内存区)等等。其次要了解内存相关的算法,这些算法都是与数据结构中的成员联系在一起的。

总而言之,完全可以按照数据结构+算法的思路来学习linux。

java 入门容易,写个程序很简单,但要写好,很难。以前总是把java理解成一种编程语言,现在发现java更像是在操作系统上建立的新的“操作系统”。linux有内存管理、进程调度、编译连接、代码执行、堆栈管理等等,这些jvm里也都有。在学习过程中我一直把jvm当做操作系统来学(野路子)。
刚开始学的时候拿springmvc来练手,后来发现路数不对。虽然能用来写点小程序,但是spring中概念太多,自己的底子薄,很多概念都理解不了,想深入了解一点spring设计相关的内容就理解不了,比如反射、静态代理、动态代理、设计模式之类等。遂放弃。后来不知什么原因想起了写爬虫,发现爬虫真是个入门java,巩固java基础知识的好项目,大致经过了几个过程:

  • 实现了各模块功能。
    完成了数据采集、网页解析、数据存储、多线程调度各个模块的功能。其间也是边学边做,这段时候学的最快。实现功能的同时,熟悉了jdbc、mysql、java多线程。
  • 优化代码。
    初次实现的代码各个模块间的耦合太严重,尤其是数据保存部分,各个数据采集线程自己操作数据库保存数据,不易实现多线程。需要对代码进行分离。首先考虑的是如何支持多线程的问题,运用到生产者消费者模式+阻塞队列的方式,完美地实现了数据采集和数据保存之间的解耦。设计模式真是个好东西,它是对编程中常用的业务场景进行抽象和归纳,值得多学习。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新手老王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值