【博客之星】2024年度创作成长总结 - 面朝大海 ,春暖花开!

news2025/1/23 9:50:21

在这里插入图片描述

没关系的,大家都会做错选择,会
莫名其妙掉眼泪,走在路上会突然崩溃,
但这并不影响我们去看看晚霞,
再次爱上这个世界。

面朝大海 ,春暖花开!

  • about me
  • Review
  • Life

about me

现在我是一名24级计算机类的大一学生。从23年高考毕业正式接触编程,当时十分想要报名计算机专业,但是阴差阳错成为了山东大学威海校区电子信息类的学生。这种错过梦想的感受让我沮丧的一段时间。这世界上总有突如其来的失去,洒了的牛奶,.遗失的钱包,走散的爱人,断掉的友情等等,当你做什么都于事无补的时候,唯一能做的,就是让自己过得好一点。丢都丢了,就别再哭了。”

于是我们立志要进行转专业,转入计算机专业。同时暑假我开始了C语言的学习,正式踏入到了程序世界,开始以一种全新的视角开始审视这个世界。也正式成为一名创作者,在CSDN平台开始了创作道路!

在大一上学期,我得知我们努力将绩点保持在前10%,我以为大一下年度的转专业一定会顺利通过,但命运总会和我开一个玩笑:我与转专业线差之毫厘,仅仅0.7%的绩点排名差距。

至此,我以为我与科班生就没有关系了,开始全力学习计算机四大件,学校课程基本都是水过去的。没有想到的是,在大二上的转专业中,我意外的获得了转专业名额,正式的成为了24级计算机科班生。

这一路,真可谓是 生活难免曲折,但要相信你的运气!

Review

在2024年中,我创作了160篇文章,累积博客阅读量32万,平均2.2天就可以创作一篇文章。回过头来看,针对真的很难想象我创作的频率如此之高,真的要感激2024努力的自己!
在这里插入图片描述
在2024博客之星评选中入围了TOP300名单,这是对每一位用心创作的创作者的最大的嘉奖!

在这里插入图片描述
在这一年中我学习了数据结构,计算机网络,Linux系统编程 ,网络编程。对于学习的每一个知识点都会进行总结,写出博客进行发布,坚持了一年,让我写作能力大大提升,敲键盘的硬素质也得到了质的提升!!!

在学校中,虽然没有全力学习课程,但幸运的获得了山东大学特长奖学金,这无疑是对我硕大的激励!

2024年,我也初步开始接触算法竞赛。年初先从简单的蓝桥杯开始,蓝桥杯省赛获得了二等奖,这时的我还只会使用暴力解法,基本一点算法思维都没有。半年后参加了WCPC威海市程序设计大赛,这是第一次参与ACM赛制的比赛,团队合作进行解题,但遗憾的是我们并没有获得奖项,算法的路依旧漫长!目前累积刷题270道:
在这里插入图片描述

24年我完成了两个项目:

  • 高并发内存池项目:纯C++项目,十分巧妙的三层结构,实现对内存申请的快速高效处理
  • 仿muduo库的高并发服务器:一个仿muduo库One Thread One Loop式主从Reactor模型实现⾼并发服务器项目。实现网络服务器通信!

高并发服务器项目的实现中,我由衷的感到c++功力的强大,通过层层套接封装,可以实现一个如此复杂却又简明的服务器框架,下面是我24年最感到佩服的代码!

// 最终模块 --- TcpServer
class TcpServer
{
private:
    uint64_t _conn_id;                            // 自增长的连接ID;
    int _port;                                    // 绑定的端口号
    EventLoop _baseloop;                          // 主Reactor模型
    Acceptor _acceptor;                           // 监听套接字
    LoopThreadPool _pool;                         // 从属线程池
    std::unordered_map<uint64_t, PtrConn> _conns; // 管理连接的哈希表
    int _timeout;                                 // 超时时间
    bool _enable_active_release;                  // 是否开启超时销毁 默认是false

    // 4种 回调函数 --- 注意使用智能指针 防止在执行任务之前Connection销毁
    using ConnectedCallBack = std::function<void(const PtrConn &)>;         // 连接时进行的回调函数
    using MessageCallBack = std::function<void(const PtrConn &, Buffer *)>; // 处理数据时的回调函数
    using ClosedCallBack = std::function<void(const PtrConn &)>;            // 关闭连接时的回调函数
    using AnyEventCallBack = std::function<void(const PtrConn &)>;          // 处理任意事件时的回调函数

    ConnectedCallBack _conn_cb;  // 连接回调函数类型
    MessageCallBack _message_cb; // 处理时回调函数
    ClosedCallBack _closed_cb;   // 关闭阶段的回调
    AnyEventCallBack _event_cb;  // 任意事件触发的回调
private:
    void RunAfterInLoop(int sec, const Functor &func)
    {
        _conn_id++;
        _baseloop.TimerAdd(_conn_id, sec, func);
    }
    // 对新连接的处理
    void NewConnction(int newfd)
    {
        // 创建新的fd的channel
        _conn_id++;
        PtrConn conn(new Connection(_pool.NextLoop(), _conn_id, newfd));
        LOG(DEBUG, "新Connection建立 fd :%d\n", conn->Fd());
        // 设置回调函数
        conn->SetMessageCB(_message_cb);
        conn->SetClosedCB(_closed_cb);
        conn->SetConnectCB(_conn_cb);
        conn->SetAnyEventCB(_event_cb);
        conn->SetSvrClosedCB(std::bind(&TcpServer::RemoveConnection, this, std::placeholders::_1));
        conn->EnableInactiveRelease(_timeout); // 启动非活跃销毁功能
        conn->Established();                   // 进行就绪初始化!
        // LOG(DEBUG, "Connection初始化就绪\n");

        // 非活跃连接的超时释放操作
        _conns.insert(std::make_pair(_conn_id, conn));
    }
    void RemoveConnectionInLoop(const PtrConn &conn)
    {
        uint64_t id = conn->Id();
        auto it = _conns.find(id);
        if (it != _conns.end())
        {
            _conns.erase(id);
        }
    }
    void RemoveConnection(const PtrConn &conn)
    {
        _baseloop.RunInLoop(std::bind(&TcpServer::RemoveConnectionInLoop, this, conn));
    }

public:
    TcpServer(int port) : _conn_id(0),
                          _port(port),
                          _baseloop(),
                          _acceptor(&_baseloop, _port),
                          _pool(&_baseloop),
                          _timeout(0),
                          _enable_active_release(false)
    {
        _acceptor.SetAcceptCallBack(std::bind(&TcpServer::NewConnction, this, std::placeholders::_1));
    }
    //  设置回调函数
    void SetConnectCB(const ConnectedCallBack &cb) { _conn_cb = cb; }
    void SetMessageCB(const MessageCallBack &cb) { _message_cb = cb; }
    void SetClosedCB(const ClosedCallBack &cb) { _closed_cb = cb; }
    void SetAnyEventCB(const AnyEventCallBack &cb) { _event_cb = cb; }
    // 开启超时销毁
    void EnableActiveRelease(int timeout)
    {
        _timeout = timeout;
        _enable_active_release = true;
    }
    // 添加定时任务
    void RunAfter(int sec, const Functor &func)
    {
        _baseloop.RunInLoop(std::bind(&TcpServer::RunAfterInLoop, this, sec, func));
    }
    // 设置线程池数量
    void SetThreadSize(int size) { return _pool.SetLoopThreadSize(size); }
    // 服务器开始运行
    void Start()
    {
        // LOG(DEBUG, "Start()\n");
        _acceptor.Listen();
        _pool.Create();
        _baseloop.Start();
    }
};

void Channel::Remove() { return _loop->RemoveEvent(this); }
// 更新Channel的事件监控
void Channel::Update() { return _loop->UpdateEvent(this); }

void TimeWheel::TimerAdd(uint64_t id, int delay, Task_t cb)
{
    _loop->RunInLoop(std::bind(&TimeWheel::TimerAddInloop, this, id, delay, cb));
}

void TimeWheel::TimerRefresh(uint64_t id)
{
    _loop->RunInLoop(std::bind(&TimeWheel::TimerRefreshInloop, this, id));
}

void TimeWheel::TimerCancel(uint64_t id)
{
    _loop->RunInLoop(std::bind(&TimeWheel::TimerCancelInLoop, this, id));
}

目前正在完成第三个项目:仿RabbitMQ实现消息队列。

这三个项目是我25年暑期争取实习机会的重要保证!

Life

创作之余,游戏与运动是我习惯的放松方式。

与舍友一起开黑的时光真的治愈身心,每天学习完回到宿舍就是一句:瓦!目前是一名黄金玩家,还需努力哈哈!下面是我最喜欢的角色 cypher
在这里插入图片描述

为班级征战的篮球赛真的振奋人心,运动总会让我忘记烦恼,沉浸在汗水与呐喊中,一点一点的感受身体的脉动!
在这里插入图片描述

这学期也开始了健身,卧推极限达到了65KG,到达了自重。这也让我十分开心哈哈哈,健壮的身体真的让我开心哈哈哈

2024年我前往杭州千岛湖,与友人共度欢乐时光;漫步九寨沟,与兄弟们深度体验自然奇观;抵达北京,亲历庄严的升旗仪式!
在这里插入图片描述

对于未来,我感觉依然充满不确定性,但没关系的,大家都会做错选择,会莫名其妙掉眼泪,走在路上会突然崩溃,但这并不影响我们去看看晚霞,再次爱上这个世界。我相信没有一颗星,会因为追求梦想而受伤,当我真心渴望某样东西时,整个宇宙都会来帮忙。

大厂offer,请你一定等着我!!!
大厂offer,请你一定等着我!!!
大厂offer,请你一定等着我!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

StyleMaster: Stylize Your Video with Artistic Generation and Translation 论文解读

目录 一、概述 二、相关工作 1、图像风格化 2、视频风格化 三、StyleMaster 1、创建对比数据集 2、提取全局描述子 3、局部描述和全局描述结合 4、时间和风格质量的运动适配器 5、Gray Tile ControlNet 四、实验 一、概述 Our StyleMaster demonstrates superior vi…

c++进阶---c++三大特性之一---多态

多态的简单介绍&#xff1a;是一种动态的访问函数&#xff0c;比如&#xff1a;你定义了一个一个人类和一个学生类&#xff0c;当你传入的是学生类的时候&#xff0c;你需要有购物优惠&#xff0c;这种情境下用多态就很适用。 1.简单的多态使用&#xff1a; 1.1构造多态的条件…

安卓程序作为web服务端的技术实现(二):Room 实现数据存储

已经实现web服务器安卓程序作为web服务端的技术实现&#xff1a;AndServer 实现登录权限拦截-CSDN博客 现在需要和正常web项目类似&#xff0c;那么就需要操作数据库 一般web项目都是选择较为重型的数据库如MySQL&#xff0c;SQL server等 这里是安卓项目&#xff0c;我目前…

如何使用Python脚本将本地项目上传到 GitHub

前言 这里我们通过创建一个新的github仓库&#xff0c;来测试我们的脚本能否上传我们本地的项目&#xff0c;并且进行更新。首先你需要先安装 Git&#xff0c;关于这部分我好像没有记录过&#xff0c;这里我搜索看了一下&#xff0c;这篇博客写的Git安装详解应该是比较齐全的&…

Day 15 卡玛笔记

这是基于代码随想录的每日打卡 222. 完全二叉树的节点个数 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#x…

IO进程----进程

进程 什么是进程 进程和程序的区别 概念&#xff1a; 程序&#xff1a;编译好的可执行文件 存放在磁盘上的指令和数据的有序集合&#xff08;文件&#xff09; 程序是静态的&#xff0c;没有任何执行的概念 进程&#xff1a;一个独立的可调度的任务 执行一个程序分配资…

【Postgres_Python】使用python脚本将多个PG数据库合并为一个PG数据库

需要合并的多个PG数据库表个数和结构一致&#xff0c;这里提供一种思路&#xff0c;选择sql语句insert插入的方式进行&#xff0c;即将其他PG数据库的每个表内容插入到一个PG数据库中完成数据库合并 示例代码说明&#xff1a; 选择一个数据库导出表结构为.sql文件&#xff08…

微软预测 AI 2025,AI Agents 重塑工作形式

1月初&#xff0c;微软在官网发布了2025年6大AI预测&#xff0c;分别是&#xff1a;AI模型将变得更加强大和有用、AI Agents将彻底改变工作方式、AI伴侣将支持日常生活、AI资源的利用将更高效、测试与定制是开发AI的关键以及AI将加速科学研究突破。 值得一提的是&#xff0c;微…

《Java核心技术 卷II》获取Web数据提交表单数据

提交表单数据 了解即可&#xff0c;直接上案例 package 第4章网络.post;import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.io.Reader; import java.net.CookieHandler; import java.net.CookieManager; import java.net.Co…

Spring Boot AOP实现动态数据脱敏

依赖&配置 <!-- Spring Boot AOP起步依赖 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>/*** Author: 说淑人* Date: 2025/1/18 23:03* Desc…

JavaScript —— 变量与运算符

变量与常量 let&#xff1a;用来定义变量&#xff0c;可以只声明不定义&#xff1b; 例如&#xff1a; <script type"module">let a; // 只声明不定义let x 2, name "kitty"; // 定义若干个变量let d { // 定义一个对象&#xff0c;类似于p…

YOLO-cls训练及踩坑记录

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、模型训练 二、测试 三、踩坑记录 1、推理时设置的imgsz不生效 方法一&#xff1a; 方法二&#xff1a; 2、Windows下torchvision版本问题导致报错 总结 前…

Android BitmapShader简洁实现马赛克,Kotlin(一)

Android BitmapShader简洁实现马赛克&#xff0c;Kotlin&#xff08;一&#xff09; 这一篇&#xff0c; Android使用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现马赛克效果&#xff0c;Kotlin&#xff08;3&#xff09;-CSDN博客 基于PorterDuffXfermode实现马…

全球化趋势与中资企业出海背景

1. 全球化趋势与中资企业出海背景 1.1 全球经济格局变化 全球经济格局正经历深刻变革&#xff0c;新兴经济体崛起&#xff0c;全球产业链重塑&#xff0c;中资企业出海面临新机遇与挑战。据世界银行数据&#xff0c;新兴市场和发展中经济体在全球 GDP 中占比已超 40%&#xff…

无人机在城市执法监管中的应用:技术革新与监管挑战

随着科技的不断进步&#xff0c;无人机技术在城市管理中的应用越来越广泛。无人机以其灵活性、高效性和低成本的优势&#xff0c;正在逐渐成为城市执法监管的得力助手。本文将探讨无人机在城市执法监管中的应用现状、技术优势以及面临的挑战。 无人机技术在城市执法监管中的应用…

总结6..

背包问题的解决过程 在解决问题之前&#xff0c;为描述方便&#xff0c;首先定义一些变量&#xff1a;Vi表示第 i 个物品的价值&#xff0c;Wi表示第 i 个物品的体积&#xff0c;定义V(i,j)&#xff1a;当前背包容量 j&#xff0c;前 i 个物品最佳组合对应的价值&#xff0c;同…

【2024年 CSDN博客之星】我的2024年创作之旅:从C语言到人工智能,个人成长与突破的全景回顾

我的2024年创作之旅&#xff1a;从C语言到人工智能&#xff0c;个人成长与突破的全景回顾 引言 回望2024年&#xff0c;我不仅收获了技术上的成长&#xff0c;更收获了来自CSDN平台上无数粉丝、朋友以及网友们的支持与鼓励。在这条创作之路上&#xff0c;CSDN不仅是我展示技术成…

等变即插即用图像重建

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 即插即用算法为解决反问题成像问题提供了一个流行的框架&#xff0c;该框架依赖于通过降噪器隐式定义图像先验。这些算法可以利用强大的预训练降噪器来解决各种成像任务&#xff0c;从而避免了在每…

MLCC电容、铝电解电容寿命计算及影响分析

如何评价MLCC的寿命 MLCC的寿命受温度条件和施加的DC电压条件影响&#xff0c;可以用下列加速方程式来表示。 例如&#xff0c;85oC,16V条件的高温负荷测试是比65oC4V环境高2,374.16倍的加速测试&#xff0c;MTTF(测试样本数40pcs,可信度60%情况下)预计为103,562,200h&#…

集成学习算法

集成学习算法 一、集成学习介绍 二、随机森林算法 1、Bootstrap随机抽样 2、Bagging 算法 3、训练算法 4、代码实现 三、Boosting 算法 AdaBoost 算法 1、强分类器与弱分类器 2、训练算法 3、代码实现 一、集成学习介绍 集成学习是通过多个模型的组合形成一个精度更…