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


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


面朝大海 ,春暖花开!

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年最感到佩服的代码!

cpp 复制代码
// 最终模块 --- 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,请你一定等着我!!!

相关推荐
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码4 天前
嵌入式学习路线
学习
毛小茛4 天前
计算机系统概论——校验码
学习
babe小鑫4 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms4 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下4 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。4 天前
2026.2.25监控学习
学习
im_AMBER4 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J4 天前
从“Hello World“ 开始 C++
c语言·c++·学习