2023年终总结
前言:
嘻嘻,12月底广州降温了又到了写年终总结的时间,这也是我第二年写年终总结。今年的年终总结主要记录了我大三下学期和大四上学期这两个时间段的学习和收获,也是我尝试走出校园,接触社会的第一年(感触良多)。大致的主线就是正点原子IMX6ULL开发板的一些收尾工作、学习Qt修改出厂综合历程来达到最初买这块开发板的目的;牛客刷笔试、面试题,参加面试来知道自己的不足、积累面经;两段嵌入式软件岗位的实习(音频+网络)。因为是大三下学期,这一年对我来说终于摆脱了奖学金和绩点的束缚,我不用把时间花在这些事上(前两年拿过奖学金了,绩点、年级排名也够用)。加上我也没有打算考研或考公,所以我就可以把心思全部投入到实习当中。总的来说最大的感触就是企业级的代码跟学校完成课程设计的代码完全是两个量级,实习可以学到一些之前没有见过的代码架构和处理逻辑。在学校的课程设计主要是完成功能为主,企业级代码注重稳定性,对不同场景的考虑也会更加严谨。年末我第一个参与的产品也是成功通过测试在官网发布了,市面上终于有一款产品里有我写的代码(OLT)。前言差不多就到这,接下来就具体介绍一下我这十二个月分别做了什么,有哪些收获和感触。
一月:正点原子IMX6ULL开发板Qt C++教程、QML,开发板出厂综合历程修改
实话实说,学Qt是我目前在嵌入式学习中最快乐的一段时光(好吧,我承认是因为有蛇姐),我在写一月份这部分总结的时候回想起来都笑得好开心。
话说回来,在开始之前先学习了一些C++的基础,类、对象、封装、继承、多态等基本概念。因为主要是学习Qt中控件的使用,C++的学习就没有比较系统和全面。Qt一开始是从基本的常用控件开始,我没有用Qt Designer直接拖出控件来进行界面设计。刚开始都是用C++一个一个控件学习,像pushbutton、scroll、spacer、table等,调整布局中要到的horizontal、vertical、grid。用代码这样可以更好地熟悉底层实现逻辑,直接拖控件完成起来会比较快,但是如果最后工程大一些直接界面设计就没这么方便,维护起来也更困难。进一步就是掌握信号与槽的机制、qss文件改变样式表等。
![](https://img-blog.csdnimg.cn/direct/7063106a82134fd5bff5f8195dfca073.png)
![](https://img-blog.csdnimg.cn/direct/10606817a8184ec9b80e81fcf12e1207.png)
![](https://img-blog.csdnimg.cn/direct/4efc629fecb44c098226974b071ed509.png)
之后我就用了Qt中自带的QSerialPort、QSerialPortInfo两个类进行设计一个串口。基本功能就是可以设置串口的一些参数波特率、奇偶校验位、停止位、数据位、哪个串口等,设置完成之后可以实现开发板和PC进行简单的数据收发。
#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//lcd屏的分辨率是1024X600this->setFixedSize(QSize(1024, 600));//new 一个QSerialPort对象serialPort = new QSerialPort(this);//通过foreach语句将windows或imx6ull可用串口识别出来,并添加至对应的下拉选择框QStringList serialList;foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){serialList += info.portName();}ui->comboBox->addItems(serialList);//设置串口的信号与槽connect(serialPort, SIGNAL(readyRead()), this, SLOT(readData()));}Widget::~Widget()
{delete ui;
}void Widget::on_radioButton_clicked(bool checked)
{//点击“打卡串口”button之后的一些串口配置操作,和一些逻辑关系if(checked){//设置串口端serialPort->setPortName(ui->comboBox->currentText());//设置波特率serialPort->setBaudRate(ui->comboBox_2->currentText().toInt());//设置停止位serialPort->setStopBits(QSerialPort::StopBits(ui->comboBox_4->currentText().toInt()));//设置数据位serialPort->setDataBits(QSerialPort::DataBits(ui->comboBox_6->currentText().toInt()));//设置校验位switch(ui->comboBox_5->currentIndex()){case 0:serialPort->setParity(QSerialPort::Parity::NoParity);break;case 1:serialPort->setParity(QSerialPort::Parity::EvenParity);break;case 2:serialPort->setParity(QSerialPort::Parity::OddParity);break;case 3:serialPort->setParity(QSerialPort::Parity::SpaceParity);break;case 4:serialPort->setParity(QSerialPort::Parity::MarkParity);break;default:break;}serialPort->setFlowControl(QSerialPort::NoFlowControl);if(!serialPort->open(QSerialPort::ReadWrite)){QMessageBox::about(this, "串口打开错误提示", "可能被占用了");return;}//打开串口之后其他的选择按钮设置成不可用ui->comboBox->setEnabled(false);ui->comboBox_2->setEnabled(false);ui->comboBox_4->setEnabled(false);ui->comboBox_5->setEnabled(false);ui->comboBox_6->setEnabled(false);ui->radioButton->setText("关闭串口");}else{serialPort->close();ui->comboBox->setEnabled(true);ui->comboBox_2->setEnabled(true);ui->comboBox_4->setEnabled(true);ui->comboBox_5->setEnabled(true);ui->comboBox_6->setEnabled(true);ui->radioButton->setText("打开串口");}}void Widget::readData()
{//将串口中的数据打印到textBrowser中ui->textBrowser->insertPlainText(serialPort->readAll());
}void Widget::on_pushButton_clicked()
{//点击“发送”button之后,将textEdit中的内容写入串口serialPort->write(ui->textEdit->toPlainText().toUtf8());
}void Widget::on_pushButton_2_clicked()
{//清屏操作ui->textEdit->clear();ui->textBrowser->clear();
}
PC和开发板用不同的编译链进行编译出来就可以在对应的环境执行。
![](https://img-blog.csdnimg.cn/direct/da43b5cb762c46199756a2a32299de14.png)
![](https://img-blog.csdnimg.cn/direct/9ef583c6b81248f0b78b0c825b4a63cf.png)
学了差不多半个月了我打算去修改正点的例程了,但是我发现这个项目不只有Qt C++,还有一些qml的文件。后来了解到qml也是Qt主推的一种界面设计,Qt Quick提供一些更方便使用的类,像竖屏滑动,横屏翻页等。
![](https://img-blog.csdnimg.cn/direct/7e85a1d208e14c8e9b8bd4b3e8a7847e.png)
![](https://img-blog.csdnimg.cn/direct/b394d9892d744a059179e84ca8abc9a6.png)
新建一个qml工程的界面(整个新工程基于某些类的初始化),简单创建一个Qt Quick工程的文件。
![](https://img-blog.csdnimg.cn/direct/b311d493601b48a7b7277b44d19bd41c.png)
我在B站看的qml教程,讲的比较细致,有讲基础的控件使用,重点是在C++和qml端如何进行交互。
![](https://img-blog.csdnimg.cn/direct/4726bb1b39604b58bffcc4ec5e7ba231.png)
在Qt C++和qml两方面都准备好后就开始修改综合例程了。正点的综合例程工程主体框架就是C++会使用系统调用来获取数据(例如打开文件read、write),而qml是将C++端获得的数据进行显示并修改样式,类似于一个前端、一个后端。C++和qml的通信主要是main.cpp 中通过 qmlRegisterType<>()来完成类的注册,然后在 qml 端通过 import 导入对应的模块进行数据调用。花了差不多一个礼拜进行修改和调试,最终也是实现了想要的效果。
![](https://img-blog.csdnimg.cn/direct/7768f587aa604acca3a68646c0ef88d2.png)
具体的展示视频地址和仓库工程链接:
正点原子Linux(imx6ull)开发板出厂Qt综合历程修改_哔哩哔哩_bilibili
正点原子QDesktop例程学习 · master · 门牙会稍息 / 正点原子IMX6ULL开发板综合历程修改 · GitCode
到这里我也是结束了正点这块板的学习,耗时半年从最初的裸机开发、驱动开发、到Linux C 应用开发、最后Qt的学习,这块板也是真正地带我走进了嵌入式Linux,收获颇丰。
二月:观看正点原子视频,重新学习、巩固STM32的基础知识,体验K210开发板
23年其实没有受到疫情的影响,出校很方便,我的计划是想过完年三月初在广州找一份实习。但是花了半年的时间在Linux这了,一些裸机、STM32外设、总线协议的基础知识遗忘了许多。赶在三月份之前也是看了看正点新推出的视频,复习了stm32外设的一些基本知识,实操回顾了之前做过的一些实验例程。然后也是在裸机的基础上尝试移植freertos操作系统和lvgl开源图形库,但是我感兴趣的还是Linux+Qt这种组合。学习freertos、lvgl主要是在于了解和应付一些面试,我不是特别想走单片机加一个操作系统的职业方向。可能是因为我在Linux这边花了更多时间,相较于这种单片机的方向更有底气。
![](https://img-blog.csdnimg.cn/direct/475ffe8d560742f48a170bc1873a6681.png)
二月下旬的时候买了块K210的板子试了试,怎么说呢,也没太发挥出它的性能和应用场景。对于我来说主要是锻炼一下快速上手一款陌生的芯片或开发板,如何将之前stm32的知识进行迁移,这块板没花什么时间,不是特别上心。
![](https://img-blog.csdnimg.cn/direct/318e49ea01cd403c86e5976e338a7fb9.png)
![](https://img-blog.csdnimg.cn/direct/cdd86ec112cf488b9fdd7cdea0a2153e.png)
二月中旬的时候我开始投递简历,二月底我也是得到了绿辰的面试邀约。面试流程总共有两轮,第一轮是电话面,另一轮是线下面。电话面主要是嵌入式相关的,公司线下面技术的稍微少一点,主要是看能不能合得来共事。因为绿辰是做音频相关的,特地多注意了ADC、DAC、I2S这部分内容。电话面的时候印象比较深的有一个问题,问的是音频的数据输入和输出如果不同步可以用什么方法,数据怎么存储之类的,这个我是没有答上来的。后来面试官也是很耐心的跟我讲解,可以用环形buffer,串口数据接收也可以用这种方式。环形缓冲区可以用于延迟补偿,将输入音频样本推迟一段时间再进行处理,这样可以保持同步和正确的处理结果。我个人感觉电话面的一般,但还好给了我一个机会去公司线下面试,挺紧张的,也是第一次出校园到公司去面试。面试前将之前学的内容又过了一遍,也是提前一天晚上去公司旁边踩了点。面试的那天下午我把正点那块修改了综合历程的开发板带过去公司展示了,可能是因为有音频的输入输出,他们就感觉我会音频的一套体系,就录用我了。怎么说呢,我整个人是有点发虚的,音频也不是专门弄过,但也没想这么多了,先干着看看吧。
![](https://img-blog.csdnimg.cn/direct/b933d12751eb4503b442ccf14efaf470.png)
三月:绿辰实习、开始踏入社会
面试通过了,在三月初办理了入职,也是正式开始第一份实习。进去之后带我的是奇哥,搞音频算法相关的。电话面试我的是宇哥,他是专门搞嵌入式的,人在长沙的一家公司平时不在公司。宇哥和老板是朋友,平时会帮忙提出一些设计思路和面试招人。
![](https://img-blog.csdnimg.cn/direct/f96e8d93ae7e4c16972a357dbe52810d.png)
实习的第一个礼拜没有什么特别的任务,就是下载开发环境Andesight,熟悉山景公司芯片的SDK历程。学习基本的开发流程,如何下载代码到开发板上,一个一个历程下来和32挺像的。开发板主控用的是上海山景的BP10系列,下面这张图是芯片功能的基本介绍(图来源于上海山景官网),也是第一次用专业的蓝牙音频编解码的芯片。
![](https://img-blog.csdnimg.cn/direct/f7a41625cf114055b9c570c3ffa98c28.png)
![](https://img-blog.csdnimg.cn/direct/010a86378ff84e178753eb20e31ab162.png)
![](https://img-blog.csdnimg.cn/direct/29be52eba5be4afbb934f0e0ddbf1cb0.png)
开发板SDK例子的功能主要是围绕ADC、DAC、USB Audio、Bluetooth展开的。搞音频躲不掉Au软件的使用,其中有一个历程就是手机和开发板通过蓝牙进行连接,手机放歌通过蓝牙发送到bp10上,bp10中有内置的蓝牙协议栈进行接收,接收到的音频数据进行Audio ADC转换,最后通过USB Audio将数据传入到PC上的Au软件进行采集。一套流程下来后计算信噪比、功率比这些参数。但是我肯定没有那些专门搞音乐,搞音频的人那么专业,基本上就是体验了一下,走了一遍流程,如果要细弄真弄不来。像音频、USB、蓝牙,随便拎出一个来都有得来搞,让人头大。音频有MP2、MP3、FLAC、AAC等许多编解码格式,DMA水位要怎么设置、音频数据的读写速度要怎么调整。USB协议中又有细分音频、HID设备之类的,蓝牙协议栈就更不用说了,脑子里都没概念。
![](https://img-blog.csdnimg.cn/direct/096f829bd2de47bf880e2129d4e2f900.png)
![](https://img-blog.csdnimg.cn/direct/35e18f8bf98244bbb5d82f2c635ce38d.png)
后面按奇哥要求花了一段时间通过学习USB协议,将开发板通过USB线和PC进行连接,PC将开发板识别成USB HID设备(这里是枚举成了键盘)。讲到这里就要感谢圈圈大佬了,没有《圈圈教你玩USB》这本书的话,我都不知道该怎么办,真是圈圈帮了大忙。USB里那么多种类的描述符和包结构,直接看USB协议会无从下手。虽然圈圈的书是在0几年写的,但是实在是经典,看圈圈的书入门USB是最好的选择。最后也是写了一篇博客来记录圈圈书上的一些知识点。
![](https://img-blog.csdnimg.cn/direct/ee6a9a36e99f4087b4a8637bcf0cf8ec.png)
这周快结束的时候也是通过开发板上的按键来模拟日常用的键盘,这里就只实现了两个键(a和c),基本的流程是走通了要添加其他的按键或者改成其他类型的HID设备也不会太难了。
![](https://img-blog.csdnimg.cn/direct/c49d3103784e413fb70bf0ef4cc0e816.png)
![](https://img-blog.csdnimg.cn/direct/600c7afac6504f449674bfb62742f2ae.png)
差不多一个月过去了,其实也没有什么特别的产出,就将开发板枚举成键盘这个算是真正烧了脑、折磨了一个礼拜。其他的时间都是在学SDK历程,过了一周左右就开始要写周报了,这个月也写了三次周报。
![](https://img-blog.csdnimg.cn/direct/67dde9369b42459c87fef167af57cb33.png)
四月:前半月Looper&drum操作流程 LCD显示、后半月粤嵌GEC6818开发板实现电子相册、普中DSP课程设计
四月初奇哥也开始叫我做项目了,做的是一个录音机内置鼓机的项目。这个产品有一个LCD屏用来显示音频的相关数据、两个编码器旋钮和两个踩钉用于人机交互。产品的使用方式就是一端接音频的输入(可以是吉他),这个产品可以录制多个音轨,录制的音频可以输出到调音台进行播放。怎么说呢,因为没有搞过音乐,刚开始这个产品如何使用、使用场景是什么都弄不明白。
![](https://img-blog.csdnimg.cn/direct/631a876326ae495c8c02b92d8e636769.png)
我的任务就是将一块SPI的屏驱动起来,模仿友商的产品设计界面。编写界面的函数接口,其中包括音量调节、音轨选择、鼓机风格选择、音频播放的进度条等,前前后后包括调试也差不多弄了两个礼拜。最后也是写了一个综合历程来模拟用户在使用的情况下会出现的界面,测试了一下不同情况下界面的显示是否正常,会不会出现界面刷新之后还有数据像素点残留、像素点覆盖的情况,音频进度条的显示是否正常。
![](https://img-blog.csdnimg.cn/direct/991fc023db6a4eb2b01da3c65e53d104.png)
四月中旬发了三月的工资,虽然不多但是第一次挣钱也挺开心。
![](https://img-blog.csdnimg.cn/direct/82e32a35dfb04b0a824a79ea34d0e396.png)
但是好景不长,我被奇哥约去谈话了。谈话的主要内容是说我现在的水平和能力其实达不到他们的要求,所以要我提前结束实习,换言之就是被裁了。钱都还没焐热这边就告诉我要办理离职,我都还打算问奇哥下礼拜要做什么。谈话结束之后回到工位我脑子是蒙的,什么事也做不下去,第一次发工资和第一次被裁两件事发生的间隔不到两天,我是有点接受不了。下班出地铁,骑上学校的共享电动之后我没有直接回宿舍,而是骑着电动在学校逛。骑车的时候回想起来这些,实在是受不了了,在没人的时候也是忍不住掉小珍珠了(我觉得除了我没有人会看得这么细)。那天晚上也是骑了好久,心情平复好了才回宿舍。
![](https://img-blog.csdnimg.cn/direct/bb3d8e5f868245a499cee1839d8cbe4e.png)
因为实习的时候我周二下午要回去上课,之前没有一周是全勤的。就最后一周的周二逃了课没回学校,那周就是全勤,结果是第一次也是最后一次。最后一周的周二下午刚好也是宇哥从长沙来到公司,也算有缘分,好歹怎么样也见到了一次。
![](https://img-blog.csdnimg.cn/direct/6872bb2ba6254730995b2f43d1bb2d0f.png)
14号我基本上就是在整理之前的工作内容和奇哥进行交接,17号上午交接完,办好离职,我的第一份实习就这样结束了,怎么也没有想到这么快就结束了。
![](https://img-blog.csdnimg.cn/direct/6b1e2d6a4c794ebd9e0d3ea66a9c8cc9.png)
整个实习过程结束后我进行了反思,其实在这一个半月我也有做的不好的地方。每天下班之后就是看直播、刷抖音,以为找到实习就万事大吉了,工作的强度也不高,没有真正全身心的投入。还有一点就是在招我进来之后,我看公司这个岗位的招聘就停止了。但是四月初的时候我感觉有点奇怪为什么公司在招聘网站上又开始招嵌入式的实习生了,我以为是要给我找个伴。结果,哎!人还是要多点忧患意识。走之前最后一餐也是去了公司同事第一次带我中午吃饭的店里吃了一顿煲仔饭,这也算是有始有终吧。
![](https://img-blog.csdnimg.cn/direct/447969965e244ea8916105df6442a5d0.png)
总的来说还是挺感谢这一个半月的实习经历,帮我迈出了第一步。那天下午奇哥也跟我讲了很多,给了问我一些忠告,数字信号处理、微机原理、操作系统、工程数学这几本书我还记得。有些话在离职的时候没有亲口说出来,在这里还是感谢奇哥和宇哥,也是祝愿你们以后在自己的领域继续发光发热。
![](https://img-blog.csdnimg.cn/direct/459d4902eeae43babf780f638c8e7cd8.png)
四月下旬就是在处理学校的课程设计,一个Linux,一个DSP。
粤嵌的那个电子相册我是有认真搞,后面自己多加了一个音乐播放器。这个和之前做的有所差别,用的都是Linux C应用编程知识,没有用Qt库。具体的功能要有点击特定的区域实现上一张、下一张、自动播放图片、黑屏退出应用程序、左右滑动切换图片相关功能。其中涉及到的知识点也比较多,像文件IO、内存映射、触摸屏、bmp图片格式、进程、线程创建和同步、字符串操作等。
![](https://img-blog.csdnimg.cn/direct/1f6fa62c3ac840c887d9e63af3da86de.png)
具体的可以看我写的一篇博客,现在是我阅读量最高的一篇文章,里面有演示视频和工程源码,有需要的可以参考。
粤嵌Linux GEC6818开发板实现电子相册_linux电子相册-CSDN博客
还有一个就是DSP的课程设计,把基本的功能都实现就没做其他的了,做的内容和之前的课程设计差不了太多,没怎么用心。
![](https://img-blog.csdnimg.cn/direct/7642e97f70ba4e55b544fc42bf086990.png)
五月:劳动节放假调整、然后开始牛客刷笔试题备考cvte暑期实习笔试、夯实基础
完成学校的事后也是到五一了,五一也是先去了东莞老姐家休息了一天,我也没有跟家里人说我被裁的事,以后也不会说了。
![](https://img-blog.csdnimg.cn/direct/b35740dd915d4864a7dfa88836c04824.png)
五一短暂修整了过后就开始修改简历、投暑期的实习,投的有cvte的暑期实习,笔试是安排在5月底,差不多有一个月的时间准备。准备的这段时间开始调整作息和运动量,之前实习的一个半月基本没怎么运动。我就发现了我要做成什么事,首先就是要多锻炼身体,变胖了也是侧面的反映出这段时间的状态比较差、没有这么自律。
![](https://img-blog.csdnimg.cn/direct/a7401cb5b37b413eaf22b97a52e5c726.png)
准备的过程基本上就是刷牛客上嵌入式软件的笔试题,包括C、C++、Linux基础、C应用开发、操作系统等,时不时的也会看别人的面经。
![](https://img-blog.csdnimg.cn/direct/d361ee6522f24706ad71a01dead9c81b.png)
刷题、复盘、积累这样的日常差不多持续了三个礼拜,这段时间内也是补了很多的基础知识和以前忽略的地方。有时候学是那么回事,一做题就会暴露出很多的问题,还有通过做题来发现以前不知道的知识点。不做题休息的时候就会看看B站爱上半导体这个账号发的视频,挺有意思的,可以帮助我从不同的角度理解以前所学过的内容。电子专业的低年级学生看这个也会有比较多好处,可以更好地理解一些模电、数电、单片机的基础内容,一个视频也不长,看完就可以了解一个知识点,我个人是比较推荐看的。
![](https://img-blog.csdnimg.cn/direct/31f803ffe56244cf93a0b67d12c42dba.png)
![](https://img-blog.csdnimg.cn/direct/3c6e65e7cf2b4446a8fa237060e63b0e.png)
很快也是到了笔试的日子,笔试前也是吃了顿饺子希望有好运。笔试的题目范围很广,C/C++基础、Linux、操作系统、总线、C应用编程和一道字符串相关的编程题,做的过程还行,个人感觉勉勉强能过。过了两天笔试的结果出来了,也是顺利通过了,好在没有辜负这几个礼拜的付出。
![](https://img-blog.csdnimg.cn/direct/ea0617980a914d63a0feed40fa38fae1.png)
![](https://img-blog.csdnimg.cn/direct/1b1800797d61419c86de2b75046a0157.png)
五月也就差不多是这些内容,之后就是等面试的通知。
六月:参加cvte线上面试的经验总结、C++、计算机与网络、刷题
差不多过了十天,cvte西安产业园的人跟我打电话安排面试的时间,采用的是线上视频面试。这一次面试可谓又是把我打回原型了,问的范围和笔试一样很广,但我的简历是偏Linux的,就问了比较多Linux相关的。有底层驱动、C应用、用户态和内核态之间的通信方式(系统调用)以及一些常见的术语,这些答得还是可以。但是我最薄弱的两部分C++和计算机网络被问到问题就基本没有答上来,面试结束之后我的感觉不是很好,最后的情况也是没有通过面试。
![](https://img-blog.csdnimg.cn/direct/fa3419eee05743fe805eb5ea0493d7b9.png)
面完之后复盘、整理了一下面试过程没有答上来的问题。然后六月的主要任务就是学C++基础和计算机网络,补上两块短板。这两个我都是在B站上看视频、然后做笔记,C++是黑马而计算机网络是王道考研系列。
![](https://img-blog.csdnimg.cn/direct/abdb296db0234eed9d5f14d44524459f.png)
![](https://img-blog.csdnimg.cn/direct/4f31ba76c52f4b2bb85d839f07ad4ff7.png)
六月底的时候我的计划是暑假就不回家了,投其他的暑期实习有点太晚了,索性就在学校里投秋招的提前批,回去的话如果有线下面试之类的就不方便。所以趁着端午节就回去一趟,暑假就待在学校冲刺秋招提前批,放假前和舍友们出去聚了一下。
![](https://img-blog.csdnimg.cn/direct/6866937b154f46e2a3ac9821aa6b1eda.png)
![](https://img-blog.csdnimg.cn/direct/07e80df86ef946f8ad914f91283a76db.png)
![](https://img-blog.csdnimg.cn/direct/0b2728280024430285d4cb8c299341aa.png)
七月:ESP8266,笔试、面试,提升强度备战秋招提前批,获得芯德科技offer
五六月份基本上都是在做笔试题或者面试,开发板摸的比较少。以前一直没有摸过esp8266这个WiFi模块,六月底、七月初的时候也是配合stm32体验了一下,顺便回顾开发流程。
![](https://img-blog.csdnimg.cn/direct/219e04cc412e42a1b7b608122d0137f6.png)
在用esp8266模块的时候有配合OneNet云平台一起使用,将开发板上的传感器数据通过WiFi模块发送到云平台进行实时监控,其中主要的内容就是AT指令和POST、GET报文格式,总的来说就是一些简单的物联网应用。做题做的比较烦的时候就会在学校里逛逛,换一个食堂吃饭。
![](https://img-blog.csdnimg.cn/direct/fd8925a617bf4e76b30899cda42ab084.png)
![](https://img-blog.csdnimg.cn/direct/e7e533812a5c4ce694a9500ff298e89b.png)
esp8266体验了之后也是继续投简历,那段时间差不多每一周都有一次正式的笔试或者面试。这里面印象比较深的是深圳元戎启行的面试,面试官看起来比我大两三岁,整体的面试体验也是很不错的。开始就是根据你的简历问一些基础的问题,答得还行。问完之后就是手撕代码,额,这部分就勉勉强强,整个面试差不多有一个小时,面试完之后我个人还是比较有底的。过了两天HR问我考不考虑测试岗,怎么说呢可能是投的人比较多,软件开发岗学历好的大有人在,我的学校和情况在竞争者中可能就是符合他们厂测试的水平的,软件开发可能还是不够的。后边也是拒绝HR说的测试岗,但是HR没有直接给我直接发感谢信我就觉得这次面试就算成功了,加上一些电话面试,面的多了整个人在后面的面试也是更有经验和信心了。
![](https://img-blog.csdnimg.cn/direct/ae461e1cca3f448d9f107a498b8f8c8f.png)
后面也是继续在招聘网站和公司官网投了一些公司,芯德的hr跟我打电话问我有没有时间去线下笔试、面试,我也是答应了,岗位的方向是Linux+网络。芯德的HR跟我打电话的时候我都没有反应过来,我都忘记了什么时候投过这个公司。后面去官网了解了一下是做ONU、OLT的厂商,在国内的二线的厂商是属于头部位置的。到公司之后是先做了一个小时的笔试、做完之后就是技术面、技术面完之后就是老总面。笔试、面试的强度在面过的厂商里算中等的,面试的过程也是比较顺利、氛围也挺好的。面过几家之后发现问的问题方向都大差不差,可能有些点就会更细一些。第二天晚上也是收到了offer,薪资和方向都还可以就签了,后面也没有继续投其他公司了,我的秋招就结束了。
![](https://img-blog.csdnimg.cn/direct/8d67ccf67f234cab909fe533d472924b.png)
![](https://img-blog.csdnimg.cn/direct/1000b37afd4b407f91b01644f60adb75.png)
![](https://img-blog.csdnimg.cn/direct/4f3fbb08a3cb4ed490ef02eca0861dfa.png)
八月:芯德中试培训、学习
签了offer之后也是马不停蹄开始了在芯德的实习,研发部门的同事都是要在测试这边干一个月然后再回到对应的产品线。干测试一个月的主要目的是熟悉公司的产品,因为ONU、OLT这些产品学生一般是没有什么场合去使用到的,路由器用的还多一点。在测试房有学习网络相关的协议、OLT/ONU的使用、打流仪的使用、批量测试组网等,如果没有学习的话就直接写代码或者该bug会力不从心的,用都用不好就不可能会开发。
![](https://img-blog.csdnimg.cn/direct/f364d9773b294fe892d7e27a540c9343.png)
![](https://img-blog.csdnimg.cn/direct/b618e44a12884243817fcea0d48e6ce7.png)
在中试(测试)的这一个月内遇到过一个比较奇怪的问题,就是在打二层裸流和组播流的时候收到的包会比发出来的包多。一开始也是先排查了OLT这边有没有开PON口镜像,如果开了镜像的话会把其一个的包转到其他配置镜像的口上,这样包就会变多,但是OLT这边没有开镜像。排查到后面也是发现一台ONU没有开IGMP Snooping,导致把其他组播组成员的数据包也给转了一份。最后也是自己拿了两台ONU进行组网验,实验的现象和所想是一致的。
![](https://img-blog.csdnimg.cn/direct/0f61d03252064b54a05bb8758fb17401.png)
八月底也是开了生日会(每个月都有),我刚好是八月的也收到了一份公司的生日礼物。刚来公司没一个月就拿了,运气真好,很开心。
![](https://img-blog.csdnimg.cn/direct/ade6dfb3a22243f5ba216e6969d0cce9.png)
一个月过得很快,在中试这边学习了一个月之后就要回产线了(其实就隔了一栋楼)。在中试的一个月收获挺多,每天就好像在学校里做实验一样,自己接线组网来验证问题,遇到不会的中试同事也会跟我讲解。中试的同事基本上都是95-00年、加上一些老员工,有很多话题聊得来,每天中午都会约到一起去吃饭。在中试的每一天都很开心,之前的实习就没有这种感觉。
![](https://img-blog.csdnimg.cn/direct/6a33ccbd9f834742a4d448983c2129d7.png)
在中试的每一天都会写日报记录当天的工作内容和学习情况,这些我在回产线之前也是进行了汇总以便日后遇到什么问题可以快速查阅。
![](https://img-blog.csdnimg.cn/direct/a91efa78fc224ee9a6711e1e9cf26c9c.png)
九月:回产线熟悉代码和基本工具的使用、流氓ONU的移植
软件部门当中又分了两个产品线,一个产品线是做ONU的、另一个产品线是做OLT的,我被分到做OLT的产线。回到产线之后部门给我安排的师傅是我的校友(姓黄),他是21年也毕业的,在公司也工作两年多了,他PON芯片相关的开发比较多。刚回产线就是先熟悉工具的使用、编码的规范、整体的开发流程、svn、项目管理系统的使用。
![](https://img-blog.csdnimg.cn/direct/d6b6a8b095d4405fb0efeb6b092e9cdb.png)
熟悉了一个礼拜之后给我分配的第一个任务是OLT中流氓ONU(Rogue ONU)功能。这里先简单介绍一下OLT和ONU之间的交互方式。上行方向(OLT->ONU):是通过广播的方式将数据包转到每个ONU,ONU再根据GEM PORTID来识别是不是发给自己的包,是就接收。下行方向(ONU->OLT):采用TDMA,时分多址访问,也就是OLT会给每个ONU分配一定的时隙(时间片)与其交互。每台ONU只能在指定的时隙内和OLT进行交互。
![](https://img-blog.csdnimg.cn/direct/e64e292310b24bceac460b1ff062cf8b.png)
![](https://img-blog.csdnimg.cn/direct/f929cdcc7e8d4f2a80fe5a62cce7a046.png)
出现流氓ONU的现象就是在一台OLT的一个PON口批量注册多台ONU,发现有一台或者几台ONU可以正常注册,但是其他的ONU无法注册上OLT。流氓ONU就是在上行方向上占满了整个时隙,导致其他ONU无法和OLT进行交互最后导致ONU掉注册。
![](https://img-blog.csdnimg.cn/direct/ff90a615a0f34cb097df2ad79be14249.png)
九月份也是我回产线的第一个月,主要是在熟悉开发环境(Linux),开始Rogue ONU功能的开发。
![](https://img-blog.csdnimg.cn/direct/3d426becb228407bb0b998cb20905aff.png)
十月:HTML、CSS的学习、ONU Common Service的移植和测试、解bug
产品提供给用户的管理方式有CLI、Web、Telnet,其中内嵌了Web服务器就避免不了要学习一些基本的网页界面设计。国庆的时候也是抽时间学了html、css、js,因为我们的产品提供一些表、按钮进行业务的配置和回显,没有像专业前端那边用框架。大框架其实已经搭建好了,学了些基础标签的使用和css语法格式就好了,在实操中遇到问题就再解决。
![](https://img-blog.csdnimg.cn/direct/d441ef74e2324914b91293acd54aa342.png)
![](https://img-blog.csdnimg.cn/direct/5cc1fc1434754b7f912bab831b3fe4a7.png)
月初国庆回老家正好赶上高中的学校100年校庆,回学校参加了活动,见到了三年没见到高中的老师。
![](https://img-blog.csdnimg.cn/direct/24fa32e55eda42d0a833b501233087a5.png)
我负责的Rogue ONU模块提供Web、CLI两种方式供客户进行配置,整体的难点就在交换芯片和PON芯片之间的交互。交换芯片是将配置下发到PON芯片这边开启Rogue ONU检测,PON芯片要将检测到的Rogue ONU信息回传给交换芯片。产品的一期功能完成后就进入测试了,测试过程中试的同事会报上出现的bug。我也被安排去解一些简单的bug,bug也是不断积累,慢慢有自己的一个bug库了。这样以后遇到类似的bug就可以更快解决,可能这就是所谓的经验吧。
![](https://img-blog.csdnimg.cn/direct/cbe0c9242d9a471a8408f8da584c38bd.png)
Rogue ONU功能差不多半个月之后就差不多结束了,后面的就是给测试的同事进行测试。后半个月就是在移植一个功能到当前项目上,ONU Common Service,这是一个介于配置单台ONU和模板的功能。此模块主要是在配置单台 ONU 的 Tcont、GemPort、Service、Service Port、PortVLAN 基础上移植的。移植过程中遇到的困难主要是多层循环遍历,针对多种情况都要进行考虑。类似于 ONU 是否绑定 Line 模板、一些配置项的从属关系(比如GemPort 存在时,对应的 Tcont 就不能先删除;Service、Service Port存在就不能先删除GemPort)、不同情况下的错误处理、告警弹窗灵活处理等。这个功能难倒是不难,主要是是比较繁琐,有很多情况需要考虑,这个功能就只提供了Web进行配置和回显。
![](https://img-blog.csdnimg.cn/direct/36d2065b704246aaba7677f6b24feaab.png)
月底的时候公司也是组织研发团队出去旅游,我实习也带上我了。周末两天去了清远的欧家梯田和湖南的莽山,市中心呆久了出去外面亲近亲近大自然,山里的空气也更好,十月就这样结束了。
![](https://img-blog.csdnimg.cn/direct/d16e5543d6394bb3b0785ecb7e815500.png)
![](https://img-blog.csdnimg.cn/direct/e1b18a7d847b4f369d8ccde6fd1f7bb1.png)
十一月:V1600XG02项目阶段性总结复盘、PON技术学习、eNSP组网学习
回产线差不多两个月了,也是对这两个月的学习和项目进行了阶段性的总结。这两个月的工作基本上都是在应用层,忽视了一些基本理论知识的学习,也是重新重视起来。后来也是找了课学习GPON、XG(S)-PON的基础知识。
![](https://img-blog.csdnimg.cn/direct/1c8acf05108645a689543e8029ceb84c.png)
用eNSP软件进行组网,加深理解一些之前学的网络基础知识和协议,像VLAN、路由协议、NAT、组播等。有需要的可以参考下发方的链接,里面也有工程的源文件。
eNSP实验-CSDN博客
![](https://img-blog.csdnimg.cn/direct/a60cd0b3e43346eabd67215d8520f883.png)
![](https://img-blog.csdnimg.cn/direct/54803f1b2544450bb1e0b87a51a8bd0b.png)
动物园产线团建,逛完之后就去了吃海鲜自助。
![](https://img-blog.csdnimg.cn/direct/9f25bb4860ae4ce4931c87faa1d6c39c.png)
![](https://img-blog.csdnimg.cn/direct/7a46b33e630d4488822a8f5d948a40f9.png)
周日下午也是到食堂一起看S13的总决赛,也是大学最后一次这样大家一起坐下来看比赛,氛围挺棒的,小虎真的是燃烧了自己!十月份和十一月份干的累但是也玩的多。
![](https://img-blog.csdnimg.cn/direct/63bbe45dc9364935a44e02f644013210.png)
十二月:客户定制模块流程、年终汇总
十二月份主要弄了客户定制模块。这个功能就是将客户的定制需求先写入到文件中,然后通过shell脚本读取数据。将客户的数据文件通过mkfs.ubifs、ubinize工具编译成一个分区最终生成 custo.ubi 可 FLASH 直接烧写文件,在启动的时候通过启动脚本手动mount挂载到/mnt节点下。代码中就通过系统调用来读取文件中客户的要求和属性来配置描述客户的结构体,其他地方就根据结构体中的属性值来进行添加或者删除相关功能。这一套流程下来主要是更了解项目的编译过程、整个OLT的启动流程和各个分区挂载的顺序。自己也是在顶层的Makefile中添加了新的目标编译项和shell脚本。12月份产品也是通过了测试正式在公司官网上线了,这也是在市面上第一个产品里有我写的代码,也是刚好12月1日有客户下了单。
![](https://img-blog.csdnimg.cn/direct/269b06960e6a49b2bda8e74d27e7fde4.png)
年底的时候也是进行了年终总结,第一次制作PPT在产线同事面前汇报工作
![](https://img-blog.csdnimg.cn/direct/5d5c460307ee48c98fc536736dc2ecf0.jpeg)
总结和展望:
通过今年的努力也是成功地实现了去年定的目标,然后也是加把劲明年能够顺利转正,在Linux+网络这个领域站稳脚跟。
![](https://img-blog.csdnimg.cn/direct/52941f31607245a88470257c5ac62d2e.png)
校园生活过一天少一天,公司的同事也是叫我珍惜最后半年的大学生活,没事就去旅旅游,看看祖国的大好河山,以后就没这么好的机会了。对于我来说,毕业以后的生活有点憧憬、又有点害怕。没了学生这个身份,不管是生活还是职场都要担起更多的责任,但这也是每个人的必经之路。新的一年的首要任务就是完成毕业设计顺利毕业,给大学生活划上一个句号,交上一份满意的答卷。最后也是祝CSDN的小伙伴和我自己在新的一年能够好好吃饭、好好睡觉、身体健康、平平安安、天天开心。
相关文章:
![](https://img-blog.csdnimg.cn/direct/52941f31607245a88470257c5ac62d2e.png)
2023年终总结
前言: 嘻嘻,12月底广州降温了又到了写年终总结的时间,这也是我第二年写年终总结。今年的年终总结主要记录了我大三下学期和大四上学期这两个时间段的学习和收获,也是我尝试走出校园,接触社会的第一年(感触…...
![](https://img-blog.csdnimg.cn/direct/8169c0c8698c4a0d95fbc4c73e0a7d0d.png)
深入探索MongoDB集群模式:从高可用复制集
MongoDB复制集概述 MongoDB复制集主要用于实现服务的高可用性,与Redis中的哨兵模式相似。它的核心作用是数据的备份和故障转移。 复制集的主要功能 数据复制:数据写入主节点(Primary)时,自动复制到一个或多个副本节…...
![](https://img-blog.csdnimg.cn/direct/99627302734b4a678a35e2a868d69522.png)
gem5学习(8):创建一个简单的缓存对象--Creating a simple cache object
目录 一、SimpleCache SimObject 二、Implementing the SimpleCache 1、getSlavePort() 2、handleRequest() 3、AccessEvent() 4、accessTiming() (1)缓存命中:sendResponse() (2)缓存未命中: 三、…...
![](https://img-blog.csdnimg.cn/direct/b823b7406fe14e029c576cdddae2755a.png)
【PTA-C语言】实验七-函数与指针I
如果代码存在问题,麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 目录——实验七-函数与指针I 6-1 弹球距离(分数 10)6-2 使用函数输出一个整数的逆序数(分数 10)6-3 使用函数求最大公约数(分数 10)6-4…...
![](https://www.ngui.cc/images/no-images.jpg)
C# 让数据保留小数后两位,不足的补充0
在C#中,可以使用Math.Floor、Math.Ceiling或者Math.Round方法结合字符串格式化来实现小数点后两位的保留,并在不足的情况下补充0。 以下是一个例子: double value 1.2345; string formattedValue value.ToString("0.00"); // 输…...
![](https://img-blog.csdnimg.cn/direct/9f5b186e88024aeb84e0fb4b25bfbdff.png)
RK3568驱动指南|第九篇 设备模型-第92章 引用计数器实验
瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…...
![](https://img-blog.csdnimg.cn/direct/b5b6c79faba44a86a10120098fa45183.jpeg)
苹果电脑Dock栏优化软件 mac功能亮点
hyperdock mac是一款Dock优化软件,hyperdock支持使用窗口自动排列功能,您可以直接通过将窗口拖拉至屏幕上方来快速最大化至全屏,又或者拖动到左右来进行左分屏和右分屏。而且Dock优化软件还有一个特色便是对Dock的强大管理哪里能力࿰…...
![](https://img-blog.csdnimg.cn/direct/f904de1537f74fe4957406f0859d8b69.png)
【UE5蓝图】读取本地json文件修改窗口大小
效果 插件 蓝图 1.判断文件存在 2.1文件不存在,生成文件 {"ResolutionX":540, "ResolutionY":960} 2.2文件存在,直接读取 3.设置窗口大小 遇到的坑 1.分辨率太大,导致效果不理想,建议先往小填写。 2.选对…...
![](https://img-blog.csdnimg.cn/direct/040fbc597948408e9c2dd3aae11bdb85.png)
ACM32F403/F433 12 位多通道国产芯片,支持 MPU 存储保护功能,应用于工业控制,智能家居等产品中
ACM32F403/F433 芯片的内核基于 ARMv8-M 架构,支持 Cortex-M33 和 Cortex-M4F 指令集。芯片内核 支持一整套DSP指令用于数字信号处理,支持单精度FPU处理浮点数据,同时还支持Memory Protection Unit (MPU)用于提升应用的…...
![](https://www.ngui.cc/images/no-images.jpg)
2024最新前端React面试题:JSX是什么,它和JS有什么区别
JSX是什么,它和JS有什么区别 回答思路:1.编写方式--->2.分别是什么?--->3.分别是怎么编译的?1.编写方式2.分别是什么?3.分别是怎么编译的? 回答思路:1.编写方式—>2.分别是什么&#x…...
![](https://img-blog.csdnimg.cn/img_convert/87c201c28164516a443d94107b107fe1.jpeg)
3d导入模型怎样显示原本材质---模大狮模型网
要在导入3D模型时保留原本的材质,您可以尝试以下方法: 导入前检查文件格式:确保您所使用的3D软件支持导入模型的文件格式。不同的软件对文件格式的支持有所差异,选择正确的文件格式可以更好地保留原始材质。 使用正确的材质库&am…...
![](https://img-blog.csdnimg.cn/direct/417ba63dbf3f468787d7fecab5e2b0e7.png)
web前端开发网页制作html/css结课作业
效果图展示: 注意事项: 引用JQuery文件地址和图片地址要更换一下。 百度网盘链接: http://链接:https://pan.baidu.com/s/1wYkmLr7csjBwQY6GmlYm4Q?pwd4332 提取码:4332 html界面展示: main.css代码部…...
![](https://img-blog.csdnimg.cn/direct/0082edf204404d799569f6276e79ba32.png)
工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)
工业相机如何实现实时和本地Raw图像和Bitmap图像的保存和相互转换(C#代码,UI界面版) 工业相机图像格式工业相机实现Raw图像和Bitmap图像的保存和转换的技术背景在相机SDK中获取图像转换图像的代码分析工业相机回调函数里保存Bitmap图像数据工…...
![](https://img-blog.csdnimg.cn/direct/b661084dd4294e02a5a0705144752ddb.png)
C++初阶------------------入门C++
作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 🎂 作者介绍: 🎂🎂 🎂 🎉🎉🎉…...
![](https://img-blog.csdnimg.cn/direct/523286bf244b45b3a4ae75db802c40d4.png)
深度学习核心技术与实践之自然语言处理篇
非书中全部内容,只是写了些自认为有收获的部分。 自然语言处理简介 NLP的难点 (1)语言有很多复杂的情况,比如歧义、省略、指代、重复、更正、倒序、反语等 (2)歧义至少有如下几种: …...
![](https://img-blog.csdnimg.cn/direct/64c0ba3336c348f3abe4c8c705d48c36.png)
AI-ChatGPTCopilot
ChatGPT chatGPT免费网站列表:GitHub - LiLittleCat/awesome-free-chatgpt: 🆓免费的 ChatGPT 镜像网站列表,持续更新。List of free ChatGPT mirror sites, continuously updated. Copilot 智能生成代码工具 安装步骤 - 登录 github&am…...
![](https://img-blog.csdnimg.cn/direct/98dd0a4bb27447f9a4142eeb70858463.png)
网络安全-真实ip获取伪造与隐藏挖掘
目录 真实ip获取应用层网络层网络连接TOAproxy protocol ip伪造应用层网络层TOA攻击proxy protocol 隐藏代理 挖掘代理多地ping历史DNS解析记录国外主机解析域名网站RSS订阅网络空间搜索引擎 总结参考 本篇文章学习一下如何服务如何获取真实ip,隐藏自己的ip…...
![](https://www.ngui.cc/images/no-images.jpg)
CMake入门教程【核心篇】添加子目录(add_subdirectory)
文章目录 1.概述2.添加子目录3.指定二进制目录4.排除子目录5.使用别名6.传递变量7.检查子目录是否存在 1.概述 add_subdirectory是 CMake 中的一个命令,用于向当前项目添加一个子目录。它的语法如下: #mermaid-svg-9zKJ3AvoVRln9hon {font-family:"…...
![](https://img-blog.csdnimg.cn/direct/006ac508278e47a9a947910f46f7ac3c.png#pic_center)
Prototype原型模式(对象创建)
原型模式:Prototype 链接:原型模式实例代码 注解 模式定义 使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。 ——《设计模式》GoF 目的 在软件系统中,经常面临这“某些结构复杂的对象”的创建工作&am…...
![](https://img-blog.csdnimg.cn/direct/c9a2ed94483143cb83a26cc9d9294c68.png)
[Redis实战]分布式锁
四、分布式锁 4.1 基本原理和实现方式对比 分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行…...
![](https://img-blog.csdnimg.cn/direct/5fc6224223d54512a9073338b91a64e5.png)
SpingBoot的项目实战--模拟电商【2.登录】
🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于SpringBoot电商项目的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.功能需求 二.代码编写 …...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
http——https实现指南
第一部分:HTTPS安全证书简介 什么是HTTPS安全证书? 在网络通信中,HTTPS安全证书是一种由可信任的证书颁发机构(CA)签发的数字证书,用于保障网站与用户之间的数据传输安全。通过加密和身份验证,…...
![](https://img-blog.csdnimg.cn/direct/d0422e84d03c4976bba7d931819f7fe8.png)
ROS仿真R2机器人之安装运行及MoveIt的介绍
R2(Robonaut 2)是NASA美国宇航局与GM通用联合推出的宇航人形机器人,能在国际空间站使用,可想而知其价格是非常昂贵,几百万美刀吧,还好NASA发布了一个R2机器人的Gazebo模型,使用模型就不需要花钱了,由于我们…...
![](https://www.ngui.cc/images/no-images.jpg)
【linux 多线程并发】线程属性设置与查看,绑定CPU,线程分离与可连接,避够多线程下的内存泄漏
线程属性设置 专栏内容: 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点的情况…...
![](https://img-blog.csdnimg.cn/direct/58b4cebcdeed490ea759165e6a74d50e.png)
70.乐理基础-打拍子-三连音
上一个内容:69.乐理基础-打拍子-大切分与变体-CSDN博客 62-66是总拍数为一拍的节奏型,一共有七个,68-69是两拍的节奏型。 三连音说明: 1.三连音的总拍数可以是一拍、两拍、四拍。。。。 2.打拍子比较难,或许需要用V字…...
![](https://img-blog.csdnimg.cn/direct/8e23e53fd9f3491cbcba7aa2296348f7.png)
100天精通Python(实用脚本篇)——第111天:批量将PDF转Word文档(附上脚本代码)
文章目录 专栏导读1. 将PDF转Word文档需求2. 模块安装3. 模块介绍4. 注意事项5. 完整代码实现6. 运行结果书籍推荐 专栏导读 🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教…...
![](https://img-blog.csdnimg.cn/direct/085dfbdb7ff94564a8144d6856988f08.png)
如何在 NAS 上安装 ONLYOFFICE 文档?
文章作者:ajun 导览 ONLYOFFICE 文档 是一款开源办公套件,其是包含文本文档、电子表格、演示文稿、表单、PDF 查看器和转换工具的协作性编辑工具。它高度兼容微软 Office 格式,包括 .docx、.xlsx 、.pptx 、pdf等文件格式,并支持…...
![](https://img-blog.csdnimg.cn/fac08fb87e0449e38743dc645051c6e2.png)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的图像剪切(ROI)功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的图像剪切(ROI)功能(C) Baumer工业相机Baumer工业相机的图像剪切(ROI)功能的技术背景CameraExplorer如何使用图像剪切(ROI)功…...
![](https://www.ngui.cc/images/no-images.jpg)
从 WasmEdge 运行环境读写 Rust Wasm 应用的时序数据
WebAssembly (Wasm) 正在成为一个广受欢迎的编译目标,帮助开发者构建可迁移平台的应用。最近 Greptime 和 WasmEdge 协作,支持了在 WasmEdge 平台上的 Wasm 应用通过 MySQL 协议读写 GreptimeDB 中的时序数据。 什么是 WebAssembly WebAssembly 是一种…...
![](https://img-blog.csdnimg.cn/direct/1f977336088d4a4488ba85a03faeaa2f.png)
算法训练营Day34(贪心算法)
1005.K次取反后最大化的数组和 1005. K 次取反后最大化的数组和 - 力扣(LeetCode) 秒了 class Solution {public int largestSumAfterKNegations(int[] nums, int k) {Arrays.sort(nums);// -4 -3 -2 -1 5//-2 -2 0 2 5int last -1;for(int i 0;i<…...
![](/images/no-images.jpg)
网站管理助手 phpmyadmin/百度一下网页版
首先说公司项目架构吧。公司后端走的是Spring MVC,通过各种微服务实现数据的可用性和安全性。微服务用的是阿里的dubbo服务,服务是通过JAR的方式启动,因为每次部署都需要本地打包,然后上传到服务器,然后重启服务&#…...
![](https://images2018.cnblogs.com/blog/1210603/201808/1210603-20180827234257856-1327647806.png)
中国广东网站建设/网络推广方式有哪几种
感觉最近做题量少了点,写并查集的时候发现find函数有点生疏了。所以这里写个详解,也算是自己的一个复习吧。 并查集就是一棵很奇怪的树。 看看度娘的解释吧:https://baike.baidu.com/item/%E5%B9%B6%E6%9F%A5%E9%9B%86/9388442?fraladdin 奇…...
![](https://img-blog.csdnimg.cn/20200316172014425.png)
如何构思公司网站/网站排名靠前的方法
基础版终结篇,学完就可以开始Vue全家桶了,有一丝兴奋hhhhhhh(虽然知道自己掌握的不咋样 )。begin~ 一、创建标签二、其他标签操作发布一个版本时,我们通常先在版本库中打一个标签(tag)ÿ…...
![](/images/no-images.jpg)
做网站没有数据/软文营销平台
出处:http://blog.csdn.net/notzuonotdied/article/details/69668519 在.ssh目录,执行以下命令行: sudo chmod 600 config转载于:https://www.cnblogs.com/YouXiangLiThon/p/7543240.html...
![](/images/no-images.jpg)
做网站哪家南京做网站/网络舆情分析师
java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点先初始化一个mappublic class TestMap {public static Map map new HashMap();}keySet values如果只需要ma…...
![](/images/no-images.jpg)
东莞建设网站的公司简介/淘宝网站的推广与优化
第十四章 性能优化 查询的性能可能受多方面因素影响。有些用户可以控制,有些是数据库系统的底层限定的设计。本章针对PostgreSQL性能的理解及优化进行了介绍。 14.1 使用EXPLAIN PostgreSQL为每个查询生成一个查询计划。为查询选择正确的执行计划对于性能至关重要…...