当前位置: 首页 > news >正文

2024年度总结-CSDN

2024年CSDN年度总结

Author:OnceDay Date:2025年1月21日

一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦…

漫漫长路,有人对你微笑过嘛…

文章目录

      • 2024年CSDN年度总结
        • 1. 整体回顾
        • 2. 网络领域学习总结
        • 3. 操作系统领域学习总结
        • 4. 编程技术领域学习总结
        • 5. 展望

1. 整体回顾

在2024年,CSDN上总共写了100篇文章,当然,其中有不少是刷题或者简单的工具类文章,凑数之用。

整体来说,相比于2023年61篇文章,有60%的提升,在25年,目标是150篇文章(每周三篇)。

当然,现实情况是25年1月份已经过去20天,才发布一篇文章,懒惰毕竟是人的固有属性。

2024年取得的最大突破是粉丝量,显然,也是靠友情互刷起来的,只能说自己看得舒服一些,聊以慰藉。

在25年,这个目标是年中1万粉丝,年末1.5万粉丝,争取拿到优质创作者身份,需要继续加油了。

24年本想每周都发布动态,也算是一个小小的总结,可惜坚持不下去,25年需要重启拾起。

在过去,学习的领域很杂,新的语言,如Go和Rust,各种开发工具,如Linux命令行和框架。

但效果并不好,因为都是蜻蜓点水,浅尝辄止,学点皮毛,所以25年必须改善,专研深层次的问题。

24年本来准备做出一两个开源项目,但是最终只有HTTP代理和CSDN自动评论工具两个能用,其他的想法都半途而废,实在可惜。

25年必须要搞出2个开源项目,提高代码质量,不光看书总结,也需要实际训练,产生价值。

在这里插入图片描述

2. 网络领域学习总结

24年非常重要的一个工作是认真总结了TCP详解这本书里面的内容,从网络层往上,总结了大量的文档,逐个协议分析,并且深入阅读RFC资料,养成了阅读标准协议文档的习惯。

在这里插入图片描述

这部分文档学习和总结时,预期也准备自己实现用户态协议栈来加深理解,但是一直磨蹭,25年这项工作可以开始了。

网络领域学习在之前,其实有些停留于表面,都是一些整体概述性知识,不够深入,目前准备向下面五个方向前进:

  • 加密报文处理,涉及对网络传输的数据进行加密和解密,以保护数据的机密性和完整性。常见的加密协议有IPsec、SSL/TLS等。

  • 路由协议处理,路由协议如OSPF、BGP等,用于在网络中交换路由信息,构建forwarding表。

  • 内核协议栈,内核协议栈是操作系统网络功能的核心,负责处理各层网络协议。需要深刻理解TCP/IP协议栈的原理,包括报文的封装和解封装、flow的管理、拥塞控制、超时重传等各种机制。

  • 安全和审计,网络安全日益重要。需要对各种常见的攻击方式(如DDoS、TCP SYN Flood)有所了解,并设计相应的防御和检测措施。安全审计则要求对网络中的流量和行为进行记录和分析,快速发现异常。

  • DPDK深入理解与性能优化,DPDK是Intel开发的一个高性能网络数据平面开发套件,可以大幅提升报文的处理性能。需要理解DPDK提供的各种机制,如Hugepage、PMD、Ring、Mempool等,并学会如何基于DPDK开发高性能的网络应用。

3. 操作系统领域学习总结

在过去,操作系统领域一般是学习一些常见的Linux编程机制,以及与内核交互的各种接口。但在工作和学习中,如果只了解到这种程度是远远不够,还是需要阅读源码,了解真正的实现。

一方面是诊断机制(优先掌握使用,可以快速在工作中实践):

  • ftrace: 函数追踪工具,可以跟踪内核函数的调用。支持函数调用图、时延统计等,是分析内核行为和性能问题的利器。

  • perf: Linux性能分析工具,以性能事件采样为基础,可以分析程序热点、内核性能瓶颈等。支持多种性能事件(如CPU周期、cache命中等)和采样方式。

  • /proc等虚拟文件系统,提供了大量内核运行状态的信息,如/proc/kallsyms(内核符号表)、/proc/kmsg(内核日志)、/proc/meminfo(内存使用信息)等。

  • /sys等sysfs文件系统,提供了内核配置、硬件信息等,用于用户态和内核态的交互。如/sys/kernel/debug/tracing用于ftrace的控制。

  • kdump: 内核崩溃转储机制,当内核panic时,利用kexec启动一个捕获内核,将崩溃的内核镜像保存下来用于离线调试。需要预留一部分内存。

另外就是主要的内核子系统:

  • 进程管理: 进程调度、创建与销毁、信号处理、进程关系(如父子进程)维护等。

  • 内存管理: 物理内存管理、虚拟内存管理、页表、TLB、swap、内存回收等。

  • 文件系统: VFS、各种文件系统(如ext4、XFS)、页缓存、目录项缓存(dentry cache)等。

  • 网络: 网络协议栈、socket、邻居子系统、路由、netfilter等。

  • 设备驱动: 字符设备、块设备、网络设备等各种驱动框架和具体驱动。

  • 安全: DAC(自主访问控制)、MAC(强制访问控制,如SELinux)、capabilities等。

  • 时间管理: 定时器、时钟、jiffies等。

  • 中断: 硬件中断、软中断、tasklet、workqueue等。

  • 同步: 原子操作、自旋锁、信号量、互斥锁等各种同步机制。

  • 系统调用: 用户态和内核态的切换,以及各种系统调用的实现。

4. 编程技术领域学习总结

24年尝试了Go、Rust、C++三门语言,结合工作所需,Rust和C++需要继续深入学习和使用,重点在这些编程语言的设计思想和编程范式。在软件工程方面,如设计、单元测试和集成测试,高保真设计等方面,还需要继续在独立项目中训练。

(1)编程语言

  • C++: 高性能、系统级编程语言。支持面向对象、泛型编程等多种范式。

  • Rust: 兼顾安全和性能的系统级编程语言。有ownership、borrow check等独特的内存安全机制。

(2)设计方法

  • 设计模式: 反复出现问题的成熟解决方案,如单例、工厂、观察者等。合理使用设计模式能提高代码的复用性、可维护性。

  • 设计文档: 从需求到实现的设计思路和接口定义。包括架构设计、概要设计、详细设计等不同层次的文档。

(3)测试技术

  • 单元测试: 对代码的最小可测试单元(如函数)进行验证。需要注意边界条件、异常case等。
  • 集成测试: 将多个单元组合在一起,测试它们之间的交互。
  • 自动化测试: 将手工测试转为机器自动执行,提高测试效率和覆盖率。常见的有UI自动化、接口自动化等。
  • 覆盖率测试: 度量测试用例对代码的覆盖情况,如语句覆盖、分支覆盖等。
  • 内存检测: 检测内存泄漏、非法访问等问题,常用工具如valgrind。

(4)工程实践

  • 编译系统: 如GNU make、CMake等,用于管理复杂项目的编译构建过程。
  • 代码文档: 对代码的功能、参数、返回值等进行说明,方便其他人阅读和使用。常用工具如Doxygen、Javadoc等。
  • 版本控制: 如Git、SVN等,用于管理代码的版本变更。
  • 代码审查: 由AI、工具对代码进行检查,找出可能的问题和改进点。
5. 展望

回首过去,总是会有遗憾,唯一要做的就是持之以恒,积少成多,25年也是重新开始的一年,将之前未完成之事给搞定,不留下遗憾。

相关文章:

2024年度总结-CSDN

2024年CSDN年度总结 Author:OnceDay Date:2025年1月21日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 文章目录 2024年CSDN年度总结1. 整体回顾2…...

2024国游销量前20游戏分析:某开放世界武侠(排名11)

1、销量约20万套,销售额1400万人民币。 与一代的发售间隔为三年。 虽然对于网游大厂来说这个数字不够看,但对一个小团队来说足够维持了,三年的运营成本不是小数目。 2、开发商属于国内最早做3DMMO的厂商之一,创始人曾在国外大学…...

如何使用python技术爬取下载百度文库文档?

使用 Python 爬取百度文库文档需要通过分析网页结构和接口请求来实现。以下是一个基于搜索结果的实现方法,适用于爬取百度文库中的文档内容: 第一部分:获取百度文库文档 实现步骤 获取文档 ID 和基本信息 通过文档的 URL 获取文档 ID&…...

navicat无法连接虚拟机的docker中的mysql

我的数据库安装在了虚拟机的docker中,启动MySQL后,在主机上使用navicat一直连接不上。 首先确认密码是否有问题: docker exec -it mysql8 bash #进入mysql容器 mysql -u root -p #登录MySQL,我这边密码是123456 密码没问题的话…...

如何使用CRM数据分析优化销售和客户关系?

嘿,大家好!你有没有想过为什么有些公司在市场上如鱼得水,而另一些却在苦苦挣扎?答案可能就藏在他们的销售策略和客户关系管理(CRM)系统里。今天我们要聊的就是如何通过有效的 CRM 数据分析来提升你的销售额…...

【Unity3D】3D物体摆放、场景优化案例Demo

目录 PlaceManager.cs(放置管理类) Ground.cs(地板类) 和 GroundData.cs(地板数据类) 额外知识点说明 1、MeshFilter和MeshRenderer的Bounds区别 2、Gizmos 绘制一个平行于斜面的立方体 通过网盘分享的文件:PlaceGameDemo2.unitypackage 链接: https://pan.baid…...

使用HTML5 Canvas 实现呼吸粒子球动画效果的原理

在网页开发领域,动画效果能够极大地提升用户体验,让页面变得更加生动有趣。今天,我们深入剖析一个基于 HTML5 Canvas 的 3D 粒子动画 —— 呼吸粒子球。通过详细解读其代码实现,我们将全面了解如何运用 HTML5 的强大功能构建出如此…...

Java 中实体类与操作类分离

目录 一、为啥要把实体类和操作类分开 二、实体类长啥样,怎么用 三、操作类的使命与实现 四、实战演练:实体类与操作类协同工作 五、拓展思考:这种分离带来的好处与进一步优化 六、总结与展望 家人们,今天我想跟你们唠唠我在…...

【STM32HAL-----GPIO】

1. 什么是GPIO?(了解) 2. STM32 GPIO简介 2.1. GPIO特点 2.2. GPIO电气特性 2.3. GPIO引脚分布图 IO引脚分布特点:按组存在、组数视芯片而定、每组最多16个IO引脚。 3. IO端口基本结构介绍 4. GPIO八种工作模式 4.1. 输入浮空 特…...

Java Web开发高级——单元测试与集成测试

测试是软件开发的重要环节,确保代码质量和功能的正确性。在Spring Boot项目中,单元测试和集成测试是常用的两种测试类型: 单元测试:测试单个模块(如类或方法)是否按预期工作。集成测试:测试多个…...

编译chromium笔记

编译环境: windows10 powershell7.2.24 git 2.47.1 https://storage.googleapis.com/chrome-infra/depot_tools.zip 配置git git config --global user.name "John Doe" git config --global user.email "jdoegmail.com" git config --global …...

Web开发 -前端部分-CSS3新特性

1 CSS概述 2 CSS3私有前缀 3 CSS3的长度单位 代码实现&#xff1a; <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…...

【基础篇】什么是SQL注入,如何防止?

什么是 SQL 注入&#xff0c;如何防止&#xff1f; SQL 注入&#xff08;SQL Injection&#xff09;是一种常见的网络安全漏洞&#xff0c;它发生在 Web 应用程序中&#xff0c;当恶意用户在输入数据时&#xff0c;将恶意的 SQL 代码插入到输入中&#xff0c;从而导致应用程序…...

Swift语言的数据结构

Swift语言的数据结构 Swift是一种现代化的编程语言&#xff0c;它以安全性、性能和简洁性著称。尽管Swift通常被视为面向对象的语言&#xff0c;但它也支持函数式编程的特性&#xff0c;使得开发者可以以多种方式构建应用程序。在Swift中&#xff0c;数据结构是编程的基础&…...

牛客周赛 Round 77

题目链接&#xff1a;牛客周赛 Round 77 A. 时间表 tag&#xff1a;签到 B. 数独数组 tag&#xff1a;签到 Description&#xff1a;给定n个数&#xff0c;每个数的范围为1-9&#xff0c;问能否经过排列&#xff0c;使其每个长度为9的连续子数组都包含1-9这9个数字。 Sol…...

浅谈云端编辑器,分析其亮点与不足

浅谈云端编辑器&#xff0c;分析其亮点与不足 这个云端编辑器界面可以分为左侧题目筛选栏、中间题目描述与代码编辑区域、右侧AI提示功能三部分。以下是详细的分析&#xff1a; 1. 左侧题目筛选栏 层次结构清晰&#xff1a;左侧栏展示了一个层级结构&#xff0c;题目按主题分…...

web应用引入cookie机制的用途和cookie技术主要包括的内容

web应用引入cookie机制&#xff0c;用于用户跟踪。 &#xff08;1&#xff09;HTTP响应报文中的Cookie头行&#xff1a;set-Cookie &#xff08;2&#xff09;用户浏览器在本地存储、维护和管理的Cookie文件 &#xff08;3&#xff09;HTTP请求报文中的Cookie头行&#xff1a;…...

【HTML+CSS】使用HTML与后端技术连接数据库

目录 一、概述 1.1 HTML前端 1.2 后端技术 1.3 数据库 二、HTML表单示例 三、PHP后端示例 3.1 连接数据库 3.2 接收数据并插入数据库 四、安全性 4.1 防止SQL注入 4.2 数据验证与清洗 五、优化 5.1 索引优化 5.2 查询优化 六、现代Web开发中的最佳实践 6.1 使用…...

「2024·我的成长之路」:年终反思与展望

文章目录 1. 前言2.创作历程2.1 摆烂期2.2 转变期3. 上升期 2. 个人收获3.经验分享4. 展望未来 1. 前言 2025年1月16日&#xff0c;2024年博客之星入围公布&#xff0c;很荣幸获得了这次入围的机会。2024年对我个人是里程碑的一年&#xff0c;是意义非凡的一年&#xff0c;是充…...

C#PaddleOCRSharp使用

using PaddleOCRSharp;namespace PaddleOCRSharpDemo {internal class Program{static void Main(string[] args){//中英文模型V3模型OCRModelConfig config null;//OCR参数OCRParameter oCRParameter new OCRParameter();oCRParameter.cpu_math_library_num_threads 6;//预…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...