我的创作纪念日——《惊变128天》

我的创作纪念日——《惊变128天》

    • 机缘
    • 收获
    • 日常
    • 成就
    • 憧憬


在这里插入图片描述


机缘

时光飞逝,转眼间,我已在这条创作之路上走过了 128 天。回顾起 2024 年 8 月 29 日,我满怀忐忑与期待,撰写了第一篇技术博客《讲解LeetCode第1题:两数之和(完整代码)》。彼时,我未曾想到,这平凡的一天,会成为我创作旅程的起点,赋予我如此多的意义与价值。

回想起最初成为创作者的初心,源自于对技术探索的热情与分享的欲望。彼时,我在技术的海洋里奋力遨游,接触到诸多复杂难题,每一次攻克后的喜悦都如璀璨星辰照亮我前行的方向。然而,随着学习的深入,愈发感觉知识如浩瀚宇宙,无边无际。我意识到,若想真正将所学内化,将经验沉淀,创作技术博客是不二之选。它既能帮我系统梳理知识脉络,又能为同行们提供参考,搭建起一座知识共享的桥梁。就像《讲解 LeetCode 第 1 题:两数之和 (完整代码)》,那是我学习路上的一个小小里程碑,我希望通过记录解题过程,不仅让自己加深理解,更能让遇到同样困惑的朋友少走弯路,于是开启了这段创作旅程。


收获

在创作的这128天里,我收获了诸多宝贵的财富。首先,我的粉丝数量稳步增长,从最初的寥寥数人到如今我开始写这篇博客时已经获得了300名粉丝了,这让我感到非常欣慰。其次,我的文章也获得了大量的正向反馈,无论是点赞、评论还是阅读量,都见证了我的努力与成长,这些反馈不仅是对我内容的认可,更是我继续创作的动力源泉。更重要的是,我通过文章结识了许多志同道合的领域同行。

同时,我的技术确实也获得了巨大的成长。从最初对技术知识的懵懂,到如今我对各种算法和编程知识有了更深层次的理解;从对文章结构的生疏,到能够清晰地组织思路、条理分明地阐述观点。每一次创作,都是一次自我挑战与突破。例如:为了使博客更加的美观清晰,我系统的学习了轻量型的标记语言Markdown;为了使讲解的算法题更直观易懂,我又学习了如何去作图。


日常

创作已然融入我的生活,成为不可或缺的一部分。在忙碌的学习间隙中,它是我心灵的栖息地。当然,创作的过程并非一帆风顺。有时面临考试备考很少有时间写博客,但对技术的热爱和分享的热情驱使我在深夜仍坚持敲击键盘,将自己的所学所思记录下来。

我也有过疲惫不堪而短暂停笔的时刻,可内心深处总有个声音提醒我不要忘记这份初心。我深知精力有限,所以学习巧妙平衡。白天利用通勤路上碎片化时间构思文章框架,晚上时整理资料,编写文章。如此一来,创作不仅未与学习冲突,反而相辅相成,学习中的知识为创作提供鲜活素材,创作过程中的知识梳理又助力学习难题迎刃而解,学习也因持续输出而更加扎实深入。


成就

在过去的日子里,我写过许多代码,但最让我自豪的是博客 单向链表的基本操作【下】(多种方法+测试代码+图像展示)中的代码。这篇博客里的代码是由我花费数天,通过不断的调试、修改,再调试、再修改而得到的最终精简版,同时这篇博客也是我的呕心沥血之作。

以下是我从这篇博客中精选的其中一段代码:

//单向链表节点的“插入+删除+查找+求表长”操作汇总小程序
#include<iostream>
using namespace std;struct ListNode
{int data;ListNode* next;ListNode(int val) :data(val), next(nullptr) {}
};class LinkList
{
public://显示基本操作菜单界面void menuList(){cout << "*********************单向链表的基本操作**********************" << endl;cout << "--------------------1.插入单向链表的节点---------------------" << endl;cout << "--------------------2.按位删除单向链表的节点------------------" << endl;cout << "--------------------3.按值删除单向链表的节点------------------" << endl;cout << "--------------------4.由位查找单向链表的节点------------------" << endl;cout << "--------------------5.由值查找单向链表的节点------------------" << endl;cout << "--------------------6.求长单向链表--------------------------" << endl;cout << "--------------------0.退出该小程序--------------------------" << endl;cout << "**********************************************************" << endl;}//单向链表节点的插入——任意插ListNode* insertListNode(ListNode*& head, int position, int value){int currSite = 1;ListNode* curr = head;if (position == 1){ListNode* newNode = new ListNode(value);newNode->next = head;head = newNode;return head;}else{while (curr != nullptr && currSite < position - 1){curr = curr->next;currSite++;}if (curr == nullptr || position < 0){return nullptr;}else{ListNode* newNode = new ListNode(value);newNode->next = curr->next;curr->next = newNode;return head;}}}//单向链表节点的删除——按位删除-迭代法(带哑节点的形式)ListNode* deleteListNode_P(ListNode*& head, int position){int currSite = 1;ListNode* dummy = new ListNode(-1);ListNode* curr = dummy;dummy->next = head;if (position <= 0){return nullptr;}else{while (curr->next != nullptr && currSite < position){curr = curr->next;currSite++;}if (curr->next == nullptr){return nullptr;}else{ListNode* delNode = curr->next;curr->next = curr->next->next;delete delNode;}head = dummy->next;delete dummy;return head;}}//单向链表节点的删除——按值删除-迭代法ListNode* deleteListNode_V(ListNode*& head, int value){ListNode* dummy = new ListNode(-1);dummy->next = head;ListNode* curr = dummy;while (curr->next != nullptr){if (curr->next->data != value){curr = curr->next;}else{ListNode* temp = curr->next;curr->next = curr->next->next;delete temp;}}head = dummy->next;delete dummy;return head;}//单向链表节点的查找——由位查值-迭代法void findListNode_P(ListNode* head, int position){int currSite = 1;ListNode* curr = head;if (head == nullptr || position <= 0){return;}while (curr != nullptr && currSite < position){curr = curr->next;currSite++;}if (curr == nullptr){return;}else{cout << "位置" << position << "上的节点的值为:" << curr->data << endl;return;}}//单向链表节点的查找——由值查位-迭代法void findListNode_V(ListNode* head, int value){int currSite = 1;ListNode* curr = head;while (curr != nullptr){if (curr->data == value){cout << "值为" << value << "的节点所在的位置为:" << currSite << endl;}curr = curr->next;currSite++;}}//单向链表的求长——迭代法void lengthList(ListNode* head){int length = 0;ListNode* curr = head;if (head == nullptr){cout << "该单向链表的长度为:" << length << endl;return;}while (curr != nullptr){curr = curr->next;length++;}cout << "该单向链表的长度为:" << length << endl;return;}//单向链表的打印——迭代void printList(ListNode* head){ListNode* curr = head;while (curr != nullptr){cout << curr->data << " ";curr = curr->next;}cout << endl;}
};int main()
{LinkList list;//单向链表的创建ListNode* head = new ListNode(3);head->next = new ListNode(2);head->next->next = new ListNode(1);head->next->next->next = new ListNode(3);int n = INT_MAX;while (n != 0){cout << "现在的单向链表为:" << endl;list.printList(head);list.menuList();cout << "请输入菜单号" << endl;cin >> n;int position, value;switch (n){case 1://单向链表节点的插入//int position, value;cout << "请输入你要插入的节点的位置" << endl;cin >> position;cout << "请输入你要插入的节点的值" << endl;cin >> value;cout << "已在位置" << position << "上插入值为" << value << "的节点" << endl;list.insertListNode(head, position, value);break;case 2://单向链表节点的删除//int position;cout << "请输入你要删除的节点的位置" << endl;cin >> position;cout << "已将位置" << position << "上的节点删除" << endl;list.deleteListNode_P(head, position);break;case 3://单向链表节点的删除//int value;cout << "请输入你要删除的节点的值" << endl;cin >> value;cout << "已将值为" << value << "的节点删除" << endl;list.deleteListNode_V(head, value);break;case 4://单向链表节点的查找//int position;cout << "请输入你要查找的位置" << endl;cin >> position;list.findListNode_P(head, position);break;case 5://单向链表节点的查找//int value;cout << "请输入你要查找的节点的值" << endl;cin >> value;list.findListNode_V(head, value);break;case 6:///单向链表的求长list.lengthList(head);break;}}return 0;
}

这段代码是单向链表节点的“插入+删除+查找+求表长”操作的汇总小程序。每当我回顾这段代码,我都会想起当时自己初次接触单向链表时的那份好奇与困惑。

从最初的无法理解节点间的指针关系,到后来能够熟练地实现插入、删除、查找和求表长等操作,每一步都凝聚了我的汗水与努力。这段代码不仅见证了我的技术成长,更成为了我面对挑战、不懈探索的宝贵记忆。如今,每当我再次审视它,都会涌起一股自豪与感激之情,它是我技术旅程中一个重要的里程碑。


憧憬

未来,我希望能够在技术领域继续深耕,不断提升自己的专业能力。在职业上,我希望能够成为一名优秀的软件开发工程师,不仅掌握各种编程语言与技术框架,还能在算法设计与系统架构方面有所建树。在创作上,我将继续坚持分享有价值的技术文章,不仅涵盖C/C++、算法与数据结构等核心技术领域,还将涉及操作系统和计算机网络等方向。

最后,感谢CSDN的鼓励与支持,也感谢每一位读者的陪伴与反馈。未来的路还很长,我会继续努力,不忘初心,砥砺前行!


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见的框架漏洞复现

1.Thinkphp Thinkphp5x远程命令执行及getshell 搭建靶场 cd vulhub/thinkphp/5-rce docker-compose up -d 首页 漏洞根本源于 thinkphp/library/think/Request.php 中method方法可以进行变量覆盖&#xff0c;通过覆盖类的核心属性filter导致rce&#xff0c;其攻击点较为多&…

云备份项目--服务端编写

文章目录 7. 数据管理模块7.1 如何设计7.2 完整的类 8. 热点管理8.1 如何设计8.2 完整的类 9. 业务处理模块9.1 如何设计9.2 完整的类9.3 测试9.3.1 测试展示功能 完整的代码–gitee链接 7. 数据管理模块 TODO: 读写锁&#xff1f;普通锁&#xff1f; 7.1 如何设计 需要管理…

flutter在windows平台中运行报错

PS D:\F\luichun> flutter run当运行flutter项目时&#xff0c;【解决如下报错】 /C:/flutter/packages/flutter/lib/src/painting/star_border.dart:530:27: Error: The getter Matrix4 isnt defined for the class _StarGenerator.- _StarGenerator is from package:flut…

Synthesia技术浅析(二):虚拟人物视频生成

Synthesia 的虚拟人物视频生成模块是其核心技术之一&#xff0c;能够将文本输入转换为带有同步语音和口型的虚拟人物视频。该模块如下所示&#xff1a; 1.文本输入处理 2.语音生成&#xff08;TTS, Text-to-Speech&#xff09; 3.口型同步&#xff08;Lip Syncing&#xff0…

[Linux]进程间通信-共享内存与消息队列

目录 一、共享内存 1.共享内存的原理 2.共享内存的接口 命令行 创建共享内存 共享内存的挂接 去掉挂接 共享内存的控制 3.共享内存的使用代码 Comm.hpp--封装了操作接口 客户端--写入端 服务器--读取端 4.管道实现共享内存的同步机制 二、消息队列 1.底层原理 2…

凸包(convex hull)简述

凸包&#xff08;convex hull&#xff09;简述 这里主要介绍二维凸包&#xff0c;二维凸多边形是指所有内角都在 [ 0 , Π ] [0,\Pi ] [0,Π]范围内的简单多边形。 凸包是指在平面上包含所有给定点的最小凸多边形。 数学定义&#xff1a;对于给定集合 X X X&#xff0c;所有…

【ArcGISPro/GeoScenePro】检查多光谱影像的属性并优化其外观

数据 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 操作 其他数据 检查影像的属性 熟悉检查您正在使用的栅格属性非常重要。

提升汽车金融租赁系统的效率与风险管理策略探讨

内容概要 在汽车金融租赁系统这个复杂的生态中&#xff0c;提升整体效率是每个企业都渴望达成的目标。首先&#xff0c;优化业务流程是实现高效运行的基础。通过分析目前的流程&#xff0c;找出冗余环节并进行简化&#xff0c;能够帮助企业缩短审批时间&#xff0c;提高客户满…

以太网UDP协议栈实现(支持ARP、ICMP、UDP)--FPGA学习笔记26

纯verilog实现&#xff0c;仅使用锁相环IP、FIFO IP&#xff0c;方便跨平台移植。支持ping指令。 以太网系列文章&#xff1a; 以太网ICMP协议(ping指令)——FPGA学习笔记25-CSDN博客 以太网ARP协议——FPGA学习笔记23-CSDN博客 以太网PHY_MDIO通信&#xff08;基于RTL821…

edeg插件/扩展推荐:助力生活工作

WeTab 此插件在我看来有2个作用 1.改变edeg的主页布局和样式,使其更加精简,无广告 2.提供付费webtab Ai(底层是chatGpt) 沉浸式翻译 此插件可翻译网页的内容 假设我们浏览github 翻译前 翻译后 Better Ruler 可以对网页的距离进行测量 适合写前端的小伙伴 用法示例:

java项目之校园管理系统的设计与实现(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园管理系统的设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; springboot校园…

设计模式 结构型 适配器模式(Adapter Pattern)与 常见技术框架应用 解析

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许将一个类的接口转换成客户端所期望的另一个接口&#xff0c;从而使原本因接口不兼容而无法一起工作的类能够协同工作。这种设计模式在软件开发中非常有用&#xff0c;尤其是在需要集成…

打造三甲医院人工智能矩阵新引擎(一):文本大模型篇--基于GPT-4o的探索

一、引言 当今时代,人工智能技术正以前所未有的速度蓬勃发展,深刻且广泛地渗透至各个领域,医疗行业更是这场变革的前沿阵地。在人口老龄化加剧、慢性疾病患病率上升以及人们对健康需求日益增长的大背景下,三甲医院作为医疗体系的核心力量,承担着极为繁重且复杂的医疗任务。…

S7-200采集频率信号

S7-200可以借助高速计数器完成频率信号采集&#xff0c;接入流量计、转速等信号。官方给出的程序块无法完成多路同时采集&#xff0c;需要自己进行修改。 首先下载官方的频率采集库 SIOS 下载后导入library&#xff0c;在library中出现Frequency(v1.0) 拖进ladder后&#xf…

专家混合(MoE)大语言模型:免费的嵌入模型新宠

专家混合&#xff08;MoE&#xff09;大语言模型&#xff1a;免费的嵌入模型新宠 今天&#xff0c;我们深入探讨一种备受瞩目的架构——专家混合&#xff08;Mixture-of-Experts&#xff0c;MoE&#xff09;大语言模型&#xff0c;它在嵌入模型领域展现出了独特的魅力。 一、M…

【Vue】分享一个快速入门的前端框架以及如何搭建

先上效果图: 登录 菜单: 下载地址: 链接&#xff1a;https://pan.baidu.com/s/1m-ZlBARWU6_2n8jZil_RAQ 提取码&#xff1a;ui20 … 主要是可以自定义设置token,更改后端请求地址较为方便。 应用设置: 登录与token设置: 在这里设置不用登录,可以请求的接口: request.js i…

MySQL叶子节点为啥使用双向链表?不使用单向呢?

文章内容收录到个人网站&#xff0c;方便阅读&#xff1a;http://hardyfish.top/ 文章内容收录到个人网站&#xff0c;方便阅读&#xff1a;http://hardyfish.top/ 文章内容收录到个人网站&#xff0c;方便阅读&#xff1a;http://hardyfish.top/ MySQL 中的 B 树索引&#x…

用户界面的UML建模10

非正常的可视反馈可伴随着同步事件发生&#xff0c;而同步事件可由系统动作产生。但是&#xff0c;可以分别对它们进行建模。 在下节中将对这些特殊的事件依次进行论述。 6.1 异常处理建模 异常&#xff0c;由Meyer 定义[16],其作为运行时事件&#xff08;run-time events&a…

最新版Chrome浏览器加载ActiveX控件之CFCA安全输入控件

背景 CFCA安全输入控件用于保证用户在浏览器、桌面客户端、移动客户端中输入信息的安全性&#xff0c;防止运行在用户系统上的病毒、木马等恶意程序入侵窃取用户输入的敏感信息。确保用户输入、本地缓存、网络传输整个流程中&#xff0c;输入的敏感信息不被窃取。广泛应用于银行…

0基础跟德姆(dom)一起学AI 自然语言处理10-LSTM模型

1 LSTM介绍 LSTM&#xff08;Long Short-Term Memory&#xff09;也称长短时记忆结构, 它是传统RNN的变体, 与经典RNN相比能够有效捕捉长序列之间的语义关联, 缓解梯度消失或爆炸现象. 同时LSTM的结构更复杂, 它的核心结构可以分为四个部分去解析: 遗忘门输入门细胞状态输出门…