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的长度单位 代码实现: <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…...
【基础篇】什么是SQL注入,如何防止?
什么是 SQL 注入,如何防止? SQL 注入(SQL Injection)是一种常见的网络安全漏洞,它发生在 Web 应用程序中,当恶意用户在输入数据时,将恶意的 SQL 代码插入到输入中,从而导致应用程序…...
Swift语言的数据结构
Swift语言的数据结构 Swift是一种现代化的编程语言,它以安全性、性能和简洁性著称。尽管Swift通常被视为面向对象的语言,但它也支持函数式编程的特性,使得开发者可以以多种方式构建应用程序。在Swift中,数据结构是编程的基础&…...
牛客周赛 Round 77
题目链接:牛客周赛 Round 77 A. 时间表 tag:签到 B. 数独数组 tag:签到 Description:给定n个数,每个数的范围为1-9,问能否经过排列,使其每个长度为9的连续子数组都包含1-9这9个数字。 Sol…...
浅谈云端编辑器,分析其亮点与不足
浅谈云端编辑器,分析其亮点与不足 这个云端编辑器界面可以分为左侧题目筛选栏、中间题目描述与代码编辑区域、右侧AI提示功能三部分。以下是详细的分析: 1. 左侧题目筛选栏 层次结构清晰:左侧栏展示了一个层级结构,题目按主题分…...
web应用引入cookie机制的用途和cookie技术主要包括的内容
web应用引入cookie机制,用于用户跟踪。 (1)HTTP响应报文中的Cookie头行:set-Cookie (2)用户浏览器在本地存储、维护和管理的Cookie文件 (3)HTTP请求报文中的Cookie头行:…...
【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日,2024年博客之星入围公布,很荣幸获得了这次入围的机会。2024年对我个人是里程碑的一年,是意义非凡的一年,是充…...
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;//预…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
