0. 总框架

第1阶段,c语言层面

(1) c语言基本语法:结构体、指针、宏

(2) 数据结构和算法:hash,rbtree,b/b+tree,linked list(链表)

1.2.1-1部分数据结构的说明-CSDN博客

1.2.1-2部分数据结构的说明02_链表-CSDN博客
(3) 设计模式:单例,策略,观察者,工厂,迭代器模式,过滤器
(4) 库:stl,c++新特性
(5) linux的命令:makefile/cmake,git/svn, 看内存,看网络状态(netstat),看磁盘,比如(htop,top),tcp抓包(tcpdump),测试(iperf)

1.5-1 linux的部分基础命令01-CSDN博客

第2阶段,网络层面

(1) 网络的代码怎么写:管理io的io多路复用(select/poll/epoll),多线程多进程结合业务怎么做,阻塞/非阻塞,同步/异步,来了数据后的业务如何做 → 量化指标: 实现网络框架(你的设计理念,你的做法,你的适配业务,把性能参数调节好,很有必要)

2.1.1 网络io-CSDN博客

2.1.2 网络io多路复用-CSDN博客

2.1.3-1 第一次Reactor代码(流程梳理)-CSDN博客

2.1.3-2 webserver和websocket(reactor 怎么用)_webserver和websocketserver-CSDN博客

2.1.3-3 第二次Reactor代码(百万并发测试过程的报错信息)-CSDN博客

2.1.4 posix api_socket api属于posix吗-CSDN博客

2.1.5-1 协程设计原理与汇编实现-01-CSDN博客

2.1.5-2 协程设计原理与汇编实现-02-CSDN博客

2.1.6-1 dpdk的环境设置_dpdk网卡有几个队列-CSDN博客

2.1.6-2 dpdk收发数据代码实现-CSDN博客

2.1.6-3 DPDK实现TCP的三次握手的代码说明-CSDN博客

2.1.6-4 用DPDK实现TCP协议栈并发-CSDN博客

2.1.7-1 io_uring的使用-CSDN博客

2.1.7-2 io_uring与epoll的对比-CSDN博客

2.1.8 epoll的实现原理-CSDN博客
(2) 网络的原理:eth(以太网),ip,udp/tcp(可扩展的),http(可扩展的) → 量化指标: 实现tcp协议栈(很有必要)

第3阶段,基础组件(日常的轮子,要有造轮子的能力,也要有不造轮子的觉悟)

就是软件设计的固定模式,知道20-30个轮子如何实现,以后看代码会感觉似曾相识
(1) 内存池
(2)线程池
(3)数据库连接池
(4)请求池
(5)原子操作
(6)ringbuffer
(7)无锁队列定时器方案
(8)死锁检测
(9)内存泄漏
(10)日志
(11)网络块
(12)共享内存的做法
(13)probuf协议

第4阶段,中间件(形成自己的技术栈,有自己的思路当时解决业务的问题)

(1) redis(缓存)
(2)MySQL(持久化存储,关系数据库)
(3)Nginx(网关开发)
(4)grpc(服务和服务之间调度,一般服务和服务之间调度选择rpc分布式)
(5)mq(消息队列)

第5阶段,适配行业的开源框架

(1) skynet(用于游戏行业)
(2)openresty(用于cdn/waf)
(3)spdk(用于存储)
(4)dpdk(用于网络)
(5)cuda(高性能计算,gpu计算)
(6)workflow(网络编程范式)

第6阶段,devops(运维和部署)是站在产品的角度

(1) docker
(2) k8s

第7阶段,性能分析

(1)内核要足够了解,比如进程调度,内存管理,文件系统。 针对于(a)磁盘(b)网络(c)内存
(2)bpf/ebpf
(3)火焰图
(4)中间件
(5)gtest

第8阶段,分布式(作为技术扩展)

(1)分布式数据库TiDB
(2)分布式文件系统ceph
(3)分布式协同etcd

第9阶段,经历几个项目

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Go】运行自己的第一个Go程序

运行自己的第一个Go程序 一、Go语言的安装Go环境安装查看是否安装成功配置GOPROXY(代理) 二、Goland安装三、Goland破解四、新建项目 开一篇专栏记录学习Go的过程,一门新语言从hello world开始,这篇文章详细讲解Go语言环境搭建及hello world实现 一、Go语…

提升汽车金融租赁系统的效率与风险管理策略探讨

内容概要 在汽车金融租赁系统这个复杂的生态中,提升整体效率是每个企业都渴望达成的目标。首先,优化业务流程是实现高效运行的基础。通过分析目前的流程,找出冗余环节并进行简化,能够帮助企业缩短审批时间,提高客户满…

计算机网络 (25)IPV6

前言 IPv6,全称为“互联网协议第6版”(Internet Protocol Version 6),是由互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议。 一、产生背景 IPv4,即互联网协议第4版,是现行…

嵌入式系统(将软件嵌入到硬件里面)

目录 Linux起源 查看操作系统的版本 查看内核的版本: 内核系统架构 系统关机或重启命令 关机: 重启: linux下的软件安装 两种软件包管理机制: deb软件包分为两种: 软件包的管理工具:dpkg apt 1…

Conda 安装 Jupyter Notebook

文章目录 1. 安装 Conda下载与安装步骤: 2. 创建虚拟环境3. 安装 Jupyter Notebook4. 启动 Jupyter Notebook5. 安装扩展功能(可选)6. 更新与维护7. 总结 Jupyter Notebook 是一款非常流行的交互式开发工具,尤其适合数据科学、机器…

web实操9——session

概念 数据保存在服务器HttpSession对象里。 session也是域对象,有setAttribute和getAttribute方法 快速入门 代码 获取session和塞入数据: 获取session获取数据: 请求存储: 请求获取: 数据正常打印&#xff1a…

如何在电脑上使用 FaceTime

如今,视频通话已成为与朋友、家人和同事保持联系的重要组成部分。 FaceTime 是 Apple 推出的一款功能丰富的视频通话应用程序。它以其简单性和视频质量而闻名。但如果您想在 PC 上使用 FaceTime该怎么办?虽然 FaceTime 仅适用于 Apple 设备,但…

(框架漏洞)

1.Thinkphp 1.Thinkphp5x远程命令执⾏及getshell 搭建靶场环境 vulhub/thinkphp/5-rce docker-compose up -d #启动环境 ?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1][]whoami ?s/Index/\think\app/invokefunctio…

探秘Kafka源码:关键内容解析

文章目录 一、以kafka-3.0.0为例1.1安装 gradle 二、生产者源码2.1源码主流程图2.2 初始化2.3生产者sender线程初始化2.4 程序入口2.5生产者 main 线程初始化2.6 跳转到 KafkaProducer构造方法 一、以kafka-3.0.0为例 打开 IDEA,点击 File->Open…->源码包解…

动态库dll与静态库lib编程4:MFC规则DLL讲解

文章目录 前言一、说明二、具体实现2.1新建项目2.2 模块切换的演示 总结 前言 动态库dll与静态库lib编程4:MFC规则DLL讲解。 一、说明 1.前面介绍的均为Win32DLL,即不使用MFC的DLL。 2.MFC规则DLL的特点:DLL内部可以使用MFC类库、可以被其他…

对比学习损失函数 - InfoNCE

InfoNCE Loss :构建高效对比学习模型 引言 对比学习中的InfoNCE损失函数是自监督学习领域的重要进展,它通过最大化正样本对之间的相似度并最小化负样本对的相似度,有效地引导模型学习到数据的本质特征。InfoNCE不仅提高了表示学习的质量&am…

家用万兆网络实践:紧凑型家用服务器静音化改造(二)

大家好,这篇文章我们继续分享家里网络设备的万兆升级和静音改造经验,希望对有类似需求的朋友有所帮助。 写在前面 在上一篇《家用网络升级实践:低成本实现局部万兆(一)》中,我们留下了一些待解决的问题。…

【STC库函数】Compare比较器的使用

如果我们需要比较两个点的电压,当A点高于B点的时候我们做一个操作,当B点高于A点的时候做另一个操作。 我们除了加一个运放或者比较器,还可以直接使用STC内部的一个比较器。 正极输入端可以是P37、P50、P51,或者从ADC的十六个通道…

东京大学联合Adobe提出基于指令的图像编辑模型InstructMove,可通过观察视频中的动作来实现基于指令的图像编辑。

东京大学联合Adobe提出的InstructMove是一种基于指令的图像编辑模型,使用多模态 LLM 生成的指令对视频中的帧对进行训练。该模型擅长非刚性编辑,例如调整主体姿势、表情和改变视点,同时保持内容一致性。此外,该方法通过集成蒙版、…

海思Linux(一)-Hi3516CV610的开发-ubuntu22_04环境创建

目 录 前 言 一、芯片介绍 二、环境搭建 2.1 前提准备 2.2 虚拟机创建 2.3 ubuntu环境安装 2.4 基础ubuntu环境搭建 2.5 使用MobaXterm登陆ubuntu 前 言 芯片选型:HI3516CV610 选择的开发板是:酷电科技馆的Hi3516CV610-MINI开发板 上一篇文章&#xf…

vue elementUI Plus实现拖拽流程图,不引入插件,纯手写实现。

vue elementUI Plus实现拖拽流程图,不引入插件,纯手写实现。 1.设计思路:2.设计细节3.详细代码实现 1.设计思路: 左侧button列表是要拖拽的组件。中间是拖拽后的流程图。右侧是拖拽后的数据列表。 我们拖动左侧组件放入中间的流…

Spring boot 项目 Spring 注入 代理 并支持 代理对象使用 @Autowired 去调用其他服务

文章目录 类定义与依赖注入方法解析createCglibProxy注意事项setApplicationContext 方法createCglibProxy 方法 类定义与依赖注入 Service: 标识这是一个 Spring 管理的服务类。ApplicationContextAware: 实现该接口允许你在类中获取 ApplicationContext 对象,从而…

应用程序越权漏洞安全测试总结体会

应用程序越权漏洞安全测试总结体会 一、 越权漏洞简介 越权漏洞顾名思议超越了自身的权限去访问一些资源,在OWASP TOP10 2021中归类为A01:Broken Access Control,其本质原因为对访问用户的权限未进行校验或者校验不严谨。在一个特定的系统或…

JAVA:Spring Boot 集成 Quartz 实现分布式任务的技术指南

1、简述 Quartz 是一个强大的任务调度框架,允许开发者在应用程序中定义和执行定时任务。在 Spring Boot 中集成 Quartz,可以轻松实现任务的调度、管理、暂停和恢复等功能。在分布式系统中,Quartz 也支持集群化的任务调度,确保任务…

改善 Kibana 中的 ES|QL 编辑器体验

作者:来自 Elastic Marco Liberati 随着新的 ES|QL 语言正式发布,Kibana 中开发了一种新的编辑器体验,以帮助用户编写更快、更好的查询。实时验证、改进的自动完成和快速修复等功能将简化 ES|QL 体验。 我们将介绍改进 Kibana 中 ES|QL 编辑器…