锐捷网络C++开发实习有感

news/2023/10/4 1:20:04

​ 为期两个多月的实习就结束了,还是颇有体会的,于是想写一篇博客记录一下,也防止自己忘记了。(6月29日-9月9日)

带我的导师是一个年龄不大的老哥,也比较随和,第一次见面就感觉比较轻松。但是,程序员一般都不是很会讲话,所以常常就是比较沉默的看代码思考问题。然后就是带我领了一下电脑然后到工位上。因为去年也有来这里实习,所以有的流程就比较熟悉了

下午三点的时候阿姨会把水果和小点心放在茶水间给大伙做补给,然后晚上可以吃一顿免费的加班餐,有熏鸭粉、炒饭、炒面、拌面扁肉、玉米香肠套餐或者是两素一荤的套餐等,分量我觉得刚刚好(白嫖还要什么自行车)。

​ 我实习所在的是做的云桌面产品,简单来说就是远程控制电脑的软件,利用服务器资源在本地上使用。

​ 开始的两周基本上就是带薪学习,导师叫我按照文档学习qt相关的内容(比如事件循环、UI之类的),于是就在B站上找了一些qt的视频看了一下,顺便跟着敲了敲代码。学习过程中发现QT啥东西都是在之前加个Q,比如QVectorQList之类,后来查了一下qt出来的时间比stl还早。

​ 第一个分配的任务就是比较简单cv(CTRL+C ,CTRL+V),就是将程序换颜色,也就是将程序的qss文件中的颜色都改变掉,qss有一点很不舒服,就是没有错误提示,没有效果就得自己找错误,这里也学习了用git的对比差异工具方便了排查代码的错误。

​ 第二个分配的任务是修复一个复选框点击到间隙的位置会使得前面点击的都被取消掉,解法大概是用一个更大的checkbox套住原来的checkbox,扩大checkbox的点击范围。但很遗憾的是,花了大概两周没能做出来,后来导师亲自做完之后我看了一下代码,添加了一共六十多行代码,发现代码都是能看懂,但是对于整个项目代码了解不足,并且实际编码经验不足,导致我根本没法写出来。

​ 之后又被分配做了一个网络状态不佳的气泡提示框,这次倒是做出来了,一共就添加了两行代码(可以说是整个代码的一小步,对于我来说是一大步哈哈哈)大概的思路就是,在定时更新网络状态的函数里面写一个if语句判断,如果网络状态不佳的时候,就弹出提示。

​ 第四个给的任务就是实现MacOS上,点击程序复选框,要完成设置程序开机自启动。当时基本的思路就是:

1.  要先获取此时程序是否为自启动状态,来确定复选框是否勾上
2.  选择自启动的时候,要将程序加入开机启动列表;没有选择的时候,要从开机启动列表去掉。

但遗憾的是这个功能也还是没有完成,只是完成了添加删除程序到自启动列表(用的是QProcess 调用 AppleScript)

​ 最后接手的一个任务是修复macOS上菜单项图标和文本间距过大的bug,不过看了下代码,不太好改,如果要改得重新写一个组合的Widget作为菜单项才能控制间距,一方面编码功力还不够,而且临近开学了,于是就不了了之了。

​ 还有就是因为程序开发mac版本,于是就是用了几周的Mac,感觉上面的操作逻辑都跟win反着来,刚刚上手的时候非常难以习惯,我还想着明年换一台mac,感觉其中习惯的成本至少要1个月时间打水漂,这已经有点打消我明年买mac的冲动了,打算秋招找到工作之后再说吧。

​ 编码之外,我也参加了一些软件测试,发现测试也确实是门需要耐心和细心的活,并且也是需要一定的方法,不然是很难找到bug。但同时我也发现,能透析代码,才能更好的去测试,所以说测试也并非是很简单的。我还测试了一些驱动方面的问题,测的是上信息课时候的那种控制学生屏幕的软件,测试其进程防杀死(各位上电脑课肯定都有试过脱离控制),因为涉及到了硬件,就会是个体力活,一直要在不同机器上插拔设备,要在各种系统版本之间都测试一遍确保没有出现bug。

​ 其他学习到的就是 git的使用,比如常见的git pullgit pushgit clone之类的操作;在MacOS上实常会用到一些简单的linux指令,比如cpcd 之类。

​ 开发中还认识到实际的商业程序中不只是简单的几个.cpp 和几个.h,还有好多的动态链接库、Lua脚本,bat批处理程序,.sh脚本程序等等。我接触到的一个类似于百度云盘的的程序,代码统计时大概是1万行左右,而且功能还不算是非常多,这就可以想象百度网盘这种应用的复杂情况和代码量更加庞大。同时,我接触到的程序如果完整编译出包一次都要接近30分钟的时间,与自己学习的时候相差还是很大的。

​ 阅读公司项目代码时,我发现代码中大量用到了宏定义,而且封装代码真的是一层套一层,而且也会写许多宏函数,许多其他的特性也同时让我复习了许多C++特性,并且程序一大起来,各种调用,继承关系就会非常多且长,逻辑就必须要非常的清楚,如果不清楚的话,根本不可能进行进一步的开发。

​ 想借用侯捷老师书上的一句话:

参观飞机工厂不能让你学得流体力学,也不能让你学会开飞机。但是如果你既会开飞机又懂流力学,参观飞机工厂可以带给你最大的乐趣和价值。

​ 在测试期间,发现女同志就偏多了,这看起来行业不同岗位上性别占比也是很不同的。像开发那边就一个前端的姐姐,其他全是汉子,对了,还有新来的一个应届生的妹妹,居然是西电的,一想到自己这研究生和本科都是双非,看起来想到时候应届进这家公司还是有点难度的(o(╥﹏╥)o)。其实我还是挺想去这家公司的,毕竟这家公司就在自己家附近,坐地铁回家也就半小时,而且听他们说正式员工工资都挺不错的。

​ 离职之前,问了mentor几个问题:

问:如果想走C++客户端开发的话,在学校里我能做些什么准备呢?

答:重点还是打好基础,qt这个框架可以多学习。然后设计模式可以学习一下。然后深入之后有各种方向比如网络协议,音视频这些方向。

感悟

​ 公司里会有专门的项目经理来督促程序员和测试按期完成测试和开发修复任务,这一点很值得我思考,进度管理有时候是非常重要的,我在考研已经对此有所体会。对于明年即将到来的秋招,需要有一个进度表,在什么时间点要完成哪些任务,而不是简单的学到哪里算哪里,一定要以任务为导向,有些书(比如基础的数学,或者UNP、APUE,虽然这些很重要很经典)就得放一放,把握主次。上半年我就因为读了C++Primer花费时间太多,导致五月份,看了点视频跟敲了点代码就去投简历找实习,导致面试准备都不是很充足,一面就废,这确实需要反思。

​ 在刚到公司第一天和师傅吃午饭的时候,我问他有读哪些C++相关的书来学编程吗,他回答到并没有刻意去读那些书,而是学校里学了一点,然后就开始边做边学。在解决bug时,我也发现自己时常看着代码却没法写出代码来,可想而知,编程实践还是要多进行,理论书籍当然也要读,但毕竟编程是工学,不是纯粹的理论科学,毕竟:纸上得来终觉浅,方知此事需躬行啊!

​ 还有就是网络上现在盛行客户端没前途的观点,之前我也是人云亦云,但是直到实习才知道,客户端也并非那么容易就能精通,如果真的精通这块编程,学得的知识便能够复用到新的领域,一些事件类型编程思想和面向对象的程序设计思想至少目前还不会淘汰。

​ 加班似乎这个是计算机相关行业的常规操作了,不过,公司里大部分老哥也都是早上九点半之后才到的,晚上在企业微信看他们基本也就是要做到8点左右走,也算还好,未来还是希望整个行业上班时间能够往前挪动一点,这样晚上也可以做点别的事放松,对人的发展会更好一点 。

​ 我希望自己也能够真正的进入程序开发的行业,当然通过这次实习我也感受到了一定的困难,而且有一门手艺总也是一个人能安身立命的根基。

最后

​ 希望自己能坚持写博客,虽然目前写的和流水账一样(害,从小养成的习惯~)。最近看了余秋雨还有汪曾祺先生的书,感觉他们的文字真的是行云流水一气呵成,希望自己的文字也能和他们一样流畅,但罗马并非一日建成的,在技术上也不是一蹴而就的,都是需要经过不懈的努力才能达到我们想要的结果。但是我相信 “骐骥一跃,不能十步;驽马十驾,功在不舍”,我相信,只要肯坚持,总会多少有点收获的。

​ 这个实习也算是给研一的学习画上一个句号把,但是真正的奋斗还未结束,下一年的学习和秋招仍然在前面等待着我。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.yaotu.net/news/4773.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序基于vant和springboot实现附件上传和预览

前言 图片上传和预览在移动端应用非常广泛和频繁,vant组件库van-uploader组件已经帮我们实现了大部分功能,但是在系统中频繁使用还是有点麻烦,我们根据自身的业务系统重新封装了一下简化我们的开发。后端使用springboot集成jcifs实现文件管理…

python图形界面tkinter使用技巧

文章一、python图形界面tk之滚动文本框的实现示例代码实现1.方式一2.方式二二、python图形界面tk之控件随窗口自变化的实现示例代码实现三、python图形界面tk之顶部菜单栏实现示例代码实现四、python图形界面tk之多选框实现示例代码实现五、python图形界面tk之打开文件实现示例…

猿创征文 | Solidity 智能合约技术成长之路

Solidity 智能合约入门 Solidity 是链上智能合约的开发语言,链上智能合约相当于传统行业的后端,链上应用基本都是由合约 前端组成的,虽然不推荐,但部分链上应用也会加入后端进行数据存储,以降低用户的使用成本。 So…

【linux的用户管理】

概念解释 用户、组、家目录 基本介绍 Linux系统是一个多用户多任务的操作系统,任何一个要进入系统资源的用户都必须先向系统管理员申请一个账号,然后以账号的身份进入系统。 添加用户 基本语法 useradd 用户名细节说明 当创建用户成功后&#xff…

uniapp 跨端兼容 条件编译

背景 我们项目中的一些配置,布局和交互有部分,在微信和 h5 端有一些兼容问题,可能需要不一样的接口,等等。 uniapp官网跨端兼容逻辑 uni-app 已将常用的组件、JS API 封装到框架中,开发者按照 uni-app 规范开发即可…

详解容灾架构中的数据复制技术

1. 什么是企业容灾的数据复制技术? 企业容灾架构中,所谓的数据复制技术主要是指能够将结构化数据进行复制,从而保证数据具备双副本或者多副本分散在不同数据中心的技术。这里面需要强调两点: ① 结构化数据:以结构化…

kali超详细安装CUDA,安装java,安装go, docker

更多文章点击这里观看 更多文章点击这里观看 install java, go ,docker ,nvidia driver on kali 前提 新配了个电脑 配置 如下 Intel Corei7 12700F 盒装华硕 TUF B660M-PLUS WIFI 重炮手 DDR4利民 PA120SE argb影驰3060ti 金属大师OC[FG]技嘉P750GM电源金士顿 FURY 16Gx2 …

质量问题不是不爆,时候未到

很认同的一个观念是:把事情一次性做好,就是最低的成本和最高的效率;所以需求再多,也要质量为王;如果因为产品的体验差影响业务,那么用户、平台、研发谁才是真正的大冤种?没有质量,哪来效率,谈什么成本;01 最近大半年,团队以极其曲折的方式,将一个支离破碎的应用从重…

【编程题】【Scratch四级】2021.06 食堂取餐

食堂取餐 食堂有6个取餐口,男生按B键、女生按G键就可以获取一个取餐号,显示在列表中。例如第一个男生的取餐号为Boy1,第一个女生取餐号为Girl1,获得取餐号后角色Dot会播报:“Boy1排队中”。隔一段时间后,小猫播报:“请Boy1到2号窗口”,1号男生就可以去2号窗口取餐了。…

Android基本界面控件的使用、部分属性方法解析

一、View类概述: View是构建用户界面控件(Button,Textfields等等)的父类,所有的用户界面可见控件以及布局类都是由View派生来的。一个View占用了屏幕上的一个矩形区域并且负责界面绘制和事件处理,能够实现…

嵌入式Linux入门-输入系统应用编程(鼠标、键盘、触摸屏)

目录 1. 输入系统 1.1 基本概念 1.2 获取输入设备信息 1.3 输入系统框架 2. 输入系统编程 2.1 确定对应关系 2.2 编写代码步骤 3. 开发板上的编程 学习带着问题学会比较好,比如,在Linux系统下,我们如何编写程序获得鼠标的位置&#xf…

开学季征文 | 一位人工智能专业研究生的新学期

#新学期,新FLAG# 一、自我介绍 大家好呀,我是CSDN博主“沉迷单车的追风少年”,正在参加开学季征文 | #新学期,新FLAG# 活动,欢迎大家动动小手指为我点个赞呀~ 我是一名人工智能专业的研二学生,就读于北京邮…

C++实现并查集

文章目录并查集原理并查集实现路径压缩并查集应用并查集原理 在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中反复用到查询某一个元…

图像分割:FCN网络讲解

1. 介绍 FCN网络论文:Fully Convolution Networks for Semantic Segmentation,是2015年发表在CVPR上的一篇文章。FCN网络是首个端对端的针对像素级预测的全卷积网络。 FCN网络是语义分割领域非常经典的网络,它的地位可以类比于目标检测领域的Faster-RCNN, 因为从2015年之后…

zookeeper集群环境搭建

文章目录zookeeper集群环境搭建修改配置文件,添加集群ip修改log data 路径创建myid查看集群状态zookeeper集群环境搭建 修改配置文件,添加集群ip server.1192.168.74.138:2888:3888 server.2192.168.74.128:2888:3888 server.3192.168.74.148:2888:388…

spring native 初体验实现 小米控制美的空调

目前关于 spring native 分享的文章还比较少 写这篇文章的主要目前是分享一下自己写的一个 小米控制美的空调 的程序 集成 spring native 过程中碰到的一些问题和解决方法 先放地址 : https://github.com/toohandsome/xiaomi2meidi 欢迎star 对比一下速度:上面是编译成exe运行…

【小树T系列3D打印机安装教程】

小树T系列3D打印机安装教程1. 小树简介🌻2. 3D打印机🌻🌻2.1 打印机定义:2.2 打印机分类:2.3 打印机结构:3. 小树T系列安装🌻🌻🌻3.1 采购3.2 预先了解3.3 小树装机3.4 调…

php计算机毕业设计基于thinkph框架的学生宿舍公寓管理系统

本学生公寓管理系统是针对目前学生公寓管理的实际需求,从实际工作出发,对过去的学生公寓管理系统存在的问题进行分析,完善学生的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。 本系统结合计算机系统的结构、概念、…

初探Hessian利用链为Dubbo-CVE占坑

介绍 Hessian 是 caucho 公司的工程项目,为了达到或超过 ORMI/Java JNI 等其他跨语言/平台调用的能力设计而出,在 2004 点发布 1.0 规范,一般称之为 Hessian ,并逐步迭代,在 Hassian jar 3.2.0 之后,采用了…

SpringCloud-9-Eureka:搭建服务注册中心

5.4 搭建服务注册中心 服务注册中心项目结构 在主工程下创建一个名为 microservice-cloud-eureka-7001 的 Spring Boot Module 作为服务注册中心,并在其 pom.xml 中引入以下依赖。父项目指定了springcloud版本的话就不用写spring-cloud-starter-netflix-eureka-ser…
最新文章