2021年总结(2021年1月1日至2021年12月26日)

2024-04-20 11:48
文章标签 总结 2021 26 日至

本文主要是介绍2021年总结(2021年1月1日至2021年12月26日),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

时间飞快,转眼就到了年底,2021年就这么过去了,今年也是正式工作的第一年,记得好像是2020年7月13号进的公司,进入社会,9月7号转正,正式成为一名公司员工,到现在2021年12月26号大概有一年半的时间了。

看到网上,有大佬建议,最好每年都进行一个年终总结,这样会记录自己去年都做了些什么、做的怎么样,也会给来年一些方向,不至于浑浑噩噩,不知道生活/工作的方向在在哪里,毕竟这样的生活还要重复数十年。

有句名言特别喜欢:“你是把一年活成了365天,还是把一天重复了365遍”

2021年的计划(愿望)完成情况

先说说去年的计划,也是愿望,希望自己能做到什么,我去年是有简单列了几项的,比较简单随意:请添加图片描述
主要有四项:

  • 多赚银子,超过6位数的存款;(√)
  • 多看书,阅读书籍数量超过10本;(×)
  • 好好使用业余时间,学会一门乐器;(×)
  • 找个女朋友。(×)

第一条,基本完成了。每月定期存钱,勒紧裤腰带,按照自己定的额度往卡里存起,这样一来压着自己不要乱用钱,这也得益于一个朋友的提醒,建议我每月都要存钱,现在感觉是真有用,自己手里有钱了,就比较独立,再也不用担惊受怕被公司突然开了,碰到特别想买的,很实用的东西,也能轻松付款了,比如在2021年中秋前附件买的台式机,终于把我服役了7年之久的笔记本电脑给换了,就再也不用大老远跑到网吧里去打游戏,每天在家都能玩,非常开心!感觉买的很值。

第二条,好像只看了6本左右,没看够10本,一开始没想到10本书这么多,而且用的业余时间,自从买了台式机,看书看的少了,还是太爱玩游戏了。不过10本的目标有点多了,平时周末的时间比较紧张,下次把目标改小点,至少5本吧。

第三条,本来是打算把读研那会儿的小提琴学起来的,可是太难了,拉小提琴真是难上加难,周末的时间又比较宝贵,小提琴又比较难学,唉,以后怕是要放弃了。。。

第四条,单身狗的悲哀,依旧单身,还是性格的锅,比较腼腆内向,另外就是在这方面的时间花的太少了,很少去扩大自己的社交圈,那肯定只能单着了,这点需要反思,以后需要多花点时间在这上面,年龄越来越大了,该到了谈婚论嫁的年纪了~~

上面说的四项比较偏重生活了,后面的计划也要把工作给纳入进来。

2021年的工作

2021年开始,在工作上,也慢慢地开始做项目,承担任务了。

做的项目有:

  • 参与了安卓相机应用的开发;
  • 参与了windows平台QT软件的一些功能开发;
  • 另外就是其他平台的相机驱动以及应用的开发了;
  • V4L2的框架很熟悉,11月5号组内分享的就是这个。

做的还是一些基础的工作,没参与到核心技术的开发,核心技术方面都是我们组的zy负责,他设计框架,比如相机的数据流、应用界面、有哪些线程,线程之间如何传数据,我们往里面填东西,他比较有经验,七八年的老程序员了,技术需要沉淀。而且自己的基础还不是太好,因为以前是学C和Python的,C++的基础不是特别好,安卓也是现学的,好在学习能力比较强,学起来比较快。自己也在慢慢学习这些

以后打算深入学习的方向也是相机驱动了,要靠这门手艺吃饭了,但是其他涉及到的也要尽量学,技多不压身。

在工作上的:

在2021年认真学的V4L2框架,个人觉得要从五部分学吧:

  • V4L2应用层
    这部分主要是熟悉V4L2的那些应用命令,命令调用流程,注意事项等
  • V4L2应用至驱动的联系
    这部分对于做驱动的来说,很重要,需要清楚V4L2的每条命令对于底层驱动的哪部分,每条命令,对应驱动做了什么
  • V4L2框架-media framework
    这部分就是V4L2的媒体框架了,这部分会说到数据流的pipeline(管道)了,就是数据流向,从camera sensor到顶层应用的数据流了,一个一个模块是如何连接的,数据格式如何统一,比如
    sensor->mipi->csi->isp->stat->vinc->video的数据流
    - V4L2框架-videobuf2
    这部分涉及到camera的数据管理了,因为相机的数据量比较大,内核会对其进行管理,保证数据稳定且快地从底层sensor流向应用层,所以就抽象出了videobuf2,用的队列管理,队列里面用的是双向链表,链表的每个子单元就包含有每一帧数据
  • V4L2框架-ctrls
    最后这部分就是ctrls了,这部分我还没认真细看,但知道大致意思,就是V4L2关于应用层对底层sensor的一些控制,比如修改sensor的曝光时间和增益了,可能会涉及到一些扩展命令的使用。

具体每部分怎么看,我自己是到网上找一些相关博客看,对着V4L2源码一步一步的看,那些大佬会对每一步进行分析讲解,然后再自己总结,加深印象,能理解使用即可。更有大佬,自己写代码去实现V4L2的框架,这个太厉害了,学不来,我连那些数据结构都还没搞明白呢,还是一步一步来。

第二个大的部分就是Android Camera2的学习了,2021年学习了相机应用的基本框架,会写一个基本的相机应用了,参考的是github的一个例子特别好:android-Camera2Basic,由这个例子,学习相机应用的基本框架、andorid hal层的数据流是比较好的,我们组的一个应用,就是基于这个例子开发出来的,很不错。

但我还是对于hal层了解的不是特别深,因为没有具体手机系统源码,MTK的有,但是比较老了,更想看的是高通的Hal层是如何设计的,但是没有系统源码。当时在开发手机相机应用的时候,后悔没认真学习hal层,因为一直在搞驱动,其实hal层的学习也不能丢下。

第三个大的部分自然是驱动了,一开始是做应用,应用做的差不多后,后面又回来做驱动了。一开始学的就是字符设备驱动了,因为字符设备用的很广泛,很多驱动都是字符设备驱动,比如前面说到的V4L2就是基于字符设备驱动来的,另外就是字符设备驱动比较简单吧,好理解,宋宝华的《Linux设备驱动开发详解》关于这部分讲的特别好。然后就是i2c驱动,因为camera sensor的驱动就是i2c驱动,比较重要,所以也认真看了下,但是没看的很细,后面有时间再加强一下。

另外,因为在开发的时候经常往Git上提交代码,所以现在会熟练地使用git了:git add->git commit->git push、撤销git add、撤销git commit、新建分支、切换分支、删除分支、rebase操作、切换git commit、回撤到某笔commit、cherry pick等。
不得不说,git真是做开发的神器,给Linus大神点个赞,膜拜大神!

最后的一部分就是开发语言的学习了,现在对C语言更加熟练了,写代码不仅仅只关注功能的实现了,还要注意代码的可扩展性和兼容性;C++慢慢地入门了,慢慢由面向过程思想转为面向对象的思想,熟悉封装特性、抽象为类特性,另外还对C++的多态有了更深的理解,因为在开发的时候用到了;然后,安卓的开发是现学的、边做边学,能做基础的安卓界面的开发,《Android的第一行源码》对入门比较友好;Qt的开发也是现学的,会用控件做基本的界面,知道信号和槽的使用,当时还用Qt完成了两个应用(进程)之间数据的传输,传输的数据就是camera的数据,用的进程间通信方式是WM_COPYDATA的方式,简单易用,传输稳定且快,感兴趣的可以看一下。

在生活上的:

在生活上的,2021年最大的收获莫过于学会做饭了!!想吃什么,可以自己做了!

自从2021年7月中旬,换房东后,租了一个带厨房的地方,一个月后,也就是8月15号,自己动手做了第一顿饭后,就开始了自己的做饭生涯,哈哈哈!做的第一顿饭是江西人都爱吃的辣椒炒肉,还有荷包蛋。

然后,几乎每天都会做饭,只做晚饭,午饭在公司吃。所以,到现在,已经能轻松驾驭做饭了,想吃什么,查下菜谱,把原材料买回来,边看边做,做多了就熟练了。现在我的招牌菜是啤酒鸭和辣椒炒肉,哈哈哈,以后打算把酸菜鱼给学了,因为也是我爱吃的!

还有就是前面说的,买了一台新的台式机!24寸的显示屏无论是玩游戏还是看电影都很爽!机械键盘打起字来,也很舒服。虽然忍痛花了将近7千多两银子,但感觉很值!真应了那句话:“贵的东西,买的时候心疼,但用的时候却一直很舒服!”

2022的计划(愿望)

因为以后的工作方向是camera驱动了,所以以后的学习重点是驱动方向,另外,若后面有机会的话,会再认真地学一下手机的Hal层,主要看一下camera数据是如何一步一步由底层驱动传到应用的,然后,也要加强对C++的学习,C++用的比较多,还是要从头一步一步把C++认真学一下,就硬啃《primer C++》 这本书了,还有就是需要了解一下锁啊、自旋锁、信号量、条件变量啊这些,多线程里面用的比较多,最后一部分就是对数据结构的学习了,这部分之前没学过,可能比较头疼,但是实际用的很多,比如链表,双向链表,在驱动源码里面经常看到,所以还是得学。

因此,2022的计划从工作、生活两块分别总结为以下几点:

工作上

  • Camera驱动的深入学习,各相关驱动的学习:camera驱动总结,各相关驱动总结;
  • 手机Hal层的camera数据流的学习:整理camera的数据流;(有机会)
  • C++基础的加强:至少把书啃完一遍;
  • 多线程之间的锁、信号量等的学习:熟练使用;
  • 基础的数据结构的学习:至少得把链表学会。

生活上

  • 当然是找个妹子啦
    优先级直接拉到第一位!其他的,全部排后面。

  • 上海有名的景点都逛一逛,不要太宅,多出去走一走,看一看;

  • 利用业余时间,至少看够5本书

THE END

这篇关于2021年总结(2021年1月1日至2021年12月26日)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/920179

相关文章

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

Linux下MySQL8.0.26安装教程

《Linux下MySQL8.0.26安装教程》文章详细介绍了如何在Linux系统上安装和配置MySQL,包括下载、解压、安装依赖、启动服务、获取默认密码、设置密码、支持远程登录以及创建表,感兴趣的朋友... 目录1.找到官网下载位置1.访问mysql存档2.下载社区版3.百度网盘中2.linux安装配置1.

C# Task Cancellation使用总结

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延... 目录C# Task Cancellation总结1、调用cancellationTokenSource.

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter