【博客之星】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,请你一定等着我!!!

相关推荐
小爬菜3 分钟前
Django学习笔记(项目默认文件)-02
前端·数据库·笔记·python·学习·django
Icoolkj1 小时前
微服务学习-SkyWalking 实时追踪服务链路
学习·微服务·skywalking
李匠20241 小时前
云计算架构学习之LNMP架构部署、架构拆分、负载均衡-会话保持
学习·架构·云计算
dal118网工任子仪1 小时前
73,【5】BUUCTF WEB [网鼎杯 2020 玄武组]SSRFMe(未解出)
笔记·学习
如果'\'真能转义说2 小时前
TypeScript - 利用GPT辅助学习
gpt·学习·typescript
五味香4 小时前
Java学习,查找List最大最小值
android·java·开发语言·python·学习·golang·kotlin
小爬菜4 小时前
Django学习笔记(启动项目)-03
前端·笔记·python·学习·django
小爬菜4 小时前
Django学习笔记(bootstrap的运用)-04
笔记·学习·django
dal118网工任子仪5 小时前
69,【1】BUUCTF WEB ssrf [De1CTF 2019]SSRF Me
笔记·学习