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

CTO 实际上是做什么的?

https://vadimkravcenko.com/shorts/what-cto-does/ 有刪節

本文旨在为软件工程师解密CTO的角色,并为那些渴望担任这一职位的人提供路线图。

“他们是技术团队与公司其他部门之间的桥梁,确保技术支持并推动业务发展。”

CTO的角色经常被误解。CTO有时是技术主管,有时是将技术与业务目标相结合的战略思考者,有时两者兼具。

什么是CTO?

CTO(首席技术官)是一个领导者、战略家、管理者、远见者、程序员、咖啡爱好者和问题解决者。他们不仅要理解技术,其角色还超越了仅仅理解代码或架构。他们需要理解业务、市场、客户和团队。他们需要做出的决策不仅基于技术可行性,还要考虑对公司战略的有利程度。

在媒体中,CTO常被描绘成技术天才或魔法师,独自编写复杂算法或发明突破性技术。然而,现实往往不那么光鲜。尽管CTO可能是公司技术进步的公众代表,但真正使之成为可能的是他背后的团队。CTO大多数时间都在开会、做决策、管理人员,并处理运营技术团队带来的无数挑战。

我有一个经验法则 — 公司越小,CTO需要处理的人际关系就越少;公司越大,CTO与技术的直接关系就越少。在这个光谱的某些点上 — 要么全是编码,要么全是战略。

在创业公司,CTO可能更偏向于实操,做出关键技术决策,甚至亲自编码。随着公司发展,CTO的角色变得更加以人为本。他们专注于将开发与业务目标保持一致,管理更大的团队,并与投资者/客户沟通,为整个公司的方向做出高层决策。这种演变需要持续学习和适应。

因此,你要么改进和适应,要么遗憾的是,你将无法胜任带领公司迈向下一步的任务。让我们讨论一下在不同阶段你应该期待什么变化。

不同阶段的CTO

在种子轮前期或早期创业阶段,CTO通常是公司的技术主力。他们深度参与技术工作,从编写和审查代码到做出关键架构决策。他们负责构建MVP(最小可行产品)和搭建初始技术基础设施。在这个阶段,CTO的编码技能至关重要。他们还要招聘首批团队成员并建立公司的技术文化。这个阶段的日常任务可能包括编码、调试、代码审查、架构决策、服务器和数据库设置,以及处理客户支持请求。

当公司进入成长阶段,CTO的角色从实操位置转向更多管理职责。他们管理更大的技术团队,这可能涉及建立流程、实施工具,并招聘经理来协助处理日常活动。这个阶段的日常任务可能包括规划冲刺、与其他部门协调、管理团队动态、监督项目交付和确保产品质量。

在成熟或扩张阶段的公司中,CTO的角色主要是战略性的。他们负责制定公司的技术愿景,确保其与业务战略保持一致。他们不直接管理任何人,除了与副总裁级别的直接对话。这涉及建立结构和流程,以确保有效的沟通、协作和决策。这个阶段的日常任务可能包括战略规划、预算管理、监督安全和合规、维护与关键供应商的关系,以及作为公司技术成功/失败的代表。

我想深入探讨每个阶段,讨论在10人、100人和1000人规模公司中的不同职责、挑战和关键技能要求。

10人公司的CTO

如上所述,在这个阶段,CTO经常参与技术工作。他们可能在编写和审查代码、做出关键架构决策、搭建技术基础设施、进行部署,以及为公司的发展设置各种SaaS服务。但这还不是全部 — 他们将对自建还是购买做出决策、选择技术栈、为大客户提供客户支持、与想要与软件构建者对话的更大客户进行销售、与想要见到整个团队的投资者进行融资洽谈。

在这个阶段,CTO还负责招聘首批工程师,这通常涉及大量的亲自指导和辅导,以确保文化保持正确。

典型挑战

  • 挑战:使用有限资源工作。在小型创业公司中,CTO通常必须在非常紧张的预算下工作,只有1-2名额外的工程师;CEO可能会做QA。这可能使快速交付高质量产品变得具有挑战性。
  • 解决方案:CTO必须有效地确定优先级,专注于最关键的功能,并对技术栈和架构做出明智的决策。当你的时间和资源有限时,你必须仔细选择将时间集中在什么上面。一切都需要有高影响力才能生存。

  • 挑战:招聘人才。在竞争激烈的技术就业市场中,吸引顶尖人才可能具有挑战性,特别是对于小型创业公司。
  • 解决方案:CTO需要展示强大的技术文化,并提供学习和成长的机会。你还必须向潜在的应聘者推销公司愿景,因为你无法在薪资和福利方面进行竞争。

关键技能
如果在这个阶段我要推荐一个单一技能,那就是技术专业知识。你需要对正在使用的技术有深入的理解。这是你带来的最大资产。你的创始人将依靠你做出关键的架构决策、为大客户调试代码,并构建MVP。

成长建议:及时了解你的技术栈的最新趋势,构建副项目,观看YouTube课程,参加工程课程。如果你喜欢,参加编码挑战,或为开源项目做贡献。基本上,提高你的技术知识。

100人公司的CTO

随着公司成长,你作为CTO的角色变得更偏向管理。你现在负责构建和管理团队,而不是产品本身 — 这可能涉及建立适当的流程、实施工具以改善信息流动,并招聘经理来处理日常问题。

在这个阶段,CTO必须确保技术战略与公司需求保持一致。这可能涉及关于长期投资本地化迁移或重构应用程序部分以减少技术债务的决策。此外,合规性成为一个重大话题;由于你不再只是在玩原型,你正在获得越来越多的严肃客户。

在这个阶段,希望通过所有正确的招聘,你已经培养了强大的技术文化,并确保技术团队与公司价值观保持一致。

典型挑战

  • 挑战:扩展开发团队的效率并与技术债务作斗争。
  • 解决方案:是时候为各种事情实施明确定义的流程了 — 部署、代码审查、代码格式化、一对一会议、本地开发等。这也是开始将基础设施视为一等公民并建立适当的管道和CI/CD的好时机,以确保功能能像以前一样快速交付,并考虑到安全性。

  • 挑战:平衡管理和技术工作。在这一点上,你可能开始手头事情太多,两边都在拉你解决他们的问题。现在是开始将工作委派给其他人的好时机。否则,你可能会发现很难平衡作为CTO的高影响力职责和你仍然喜欢做的低影响力任务,例如,摆弄Kubernetes。
  • 解决方案:CTO需要有效地委派,可能需要为不同的角色招聘人员来处理占用太多时间的低影响力任务。

关键技能
这里最重要的单一技能是 — 人员管理。你基本上是在公司周围创建一个系统,让人们来做你以前独自做的事情,而且做得更好。

成长建议:参加领导力/管理/沟通课程。寻求团队的反馈,并保持开放学习和改进的态度。练习积极倾听和同理心交流。

1000人公司的CTO

现在你进入了大企业联盟。我从未担任过1000人公司的CTO,所以这是基于我与不同人的交谈、读书,以及根据我感觉事情发展的方向所做的推断。这里的角色主要是战略性的。你负责制定公司的技术愿景,并确保它与业务战略保持一致。

纯粹的前瞻性思维 - 我们如何在未来十年作为一家公司蓬勃发展,而不是运营性的 - 我们如何改进产品?在这一点上,你应该有比你更有能力的人来思考运营事务。

在这个阶段,你所做的一切都是从公司各个方面收集信息,将其与外部技术进步的信息相结合,并与其他C级高管一起设定公司发展方向。

你还必须管理与关键利益相关者的关系,包括董事会、投资者、重要客户和合作伙伴。别忘了参加大型活动与其他CTO会面,看看是否有潜在的协同增长机会,并讨论收购事宜。

典型挑战

  • 挑战:管理地理位置分散的大型团队。在大公司中,CTO需要确保技术团队的有效沟通和协作。
  • 解决方案:CTO需要确保(不是说他应该自己做)存在适当的结构和流程以实现有效沟通。例如,清晰的报告线路、明确的团队间依赖关系和沟通系统。甚至可以尝试自组织团队的Holacracy管理模式。

  • 挑战:在快速发展的技术环境中保持竞争力。在大公司中,CTO必须确保公司有效利用技术保持竞争力。
  • 解决方案:CTO需要在团队中培养创新文化。他们还需要对技术投资和合作伙伴关系做出明智的决定,例如微软与OpenAI的合作。

关键技能
你需要具备的一项技能是 — 战略思维/长期思维。在大公司中,CTO需要能够为未来五年制定清晰的技术愿景和战略,做出关于技术投资的高层决策,并确保技术战略支持公司的业务目标。

成长建议:我不知道;我还没到那个程度,但有很多关于商业战略的书籍可以学习,也有CEO教练可以帮助你转变思维范式。所以建议是通过参与复杂的长期项目来练习战略思维,并向经验丰富的技术领导者寻求指导。但这些建议要持保留态度。我也在学习中。

我的一天是怎样的?
我想给你一个具体的例子,说明如果你选择CTO这条道路,你的生活可能是什么样子。在我的生活中,没有两天是完全相同的。我目前的角色是技术、管理和战略职责的混合,我的日常任务会根据项目的需求而广泛变化。我希望这个日常生活的一瞥能提供一些清晰的认识。

早晨
我7:30起床。我不会去晨跑,而且我并没有充满动力,因为我已经查看了手机,有几十个通知。完美。我只想洗个澡然后去办公室。

你可能认为一旦我到了办公室,我就会享受日出,喝着热咖啡,想着自己有多棒。不是的。我的早晨很忙碌,我总是从查看邮件和Slack消息开始一天,检查是否有任何紧急事项。通常每天早上都有大约15条消息等着我 — 包括团队更新、人力资源备忘录、开发问题和客户邮件。

喝完咖啡后,我有时会参加一些重要项目的站会,确保我们在正轨上。我们讨论进展,解决任何问题或阻碍,看看我是否能以某种方式帮助他们 — 大多数情况下这意味着我要写一些邮件并安排一些会议来加快进度。

我在一天的第一部分处理最高优先级的任务。其中一些包括 — 作为第二双眼睛审查PR(我仍然喜欢做这个),与其中一个团队做出架构决策,查看我们的DevOps或为新客户制定提案。作为一个仍然参与实操的CTO,我可能会花费早上相当大的一部分时间做技术工作。

下午
午餐后,我参加一些会议。这可能包括客户演示、供应商会议,或关于战略、预算分配或资源规划的内部会议。即使我还在参与实操,我仍然参与很多关于公司方向的高层决策,所以这些会议是我一天中的重要部分。

之后,我可能会进行项目估算工作。我们与高级开发人员一起估算新软件项目的范围和成本。这涉及理解客户需求、评估技术要求,以及评估所需的时间和资源(以及我们是否拥有所需的资源)。

如前所述,我们同时有多个产品在开发中,我通常在Slack上很活跃,所以我会在一天中查看Slack,确保每个人都从我这里得到他们需要的一切,没有人被阻塞。

晚上/在家
我在家完成当天的工作,检查待办事项清单看看我完成了什么,并发送邮件安排接下来几天/几周的会议。尽可能回复更多的人。我试图在一天结束时做到零未回复邮件,但经验表明 — 总是有比你一天能处理的更多的工作。

在完成主要职责后,我会阅读一些HackerNews文章,听一些技术播客,构思下一期通讯的主题,并写几段文字。

基本上就是这样。这严重依赖于具体项目、截止日期和可能出现的问题。我试图保持灵活,在日常工作中仍然扮演多个角色,我希望确保我们在技术工作上取得进展,并在流程、资源和项目方面使公司变得更有效率。

完成工作后,我会读一些奇幻小说,去散步,和朋友一起出去玩。最终我会躺在床上,好好睡一觉,第二天带着不同的问题集重复相同的模式。激动人心!

值得吗,还是应该继续做软件工程师?

这是个大问题,没有简单的答案。从软件工程师转型到CTO的决定主要取决于你的职业目标、兴趣和技能。我们都是不同的苹果。

作为软件工程师,你深度参与技术方面。你在编码、调试和部署。你在解决复杂问题,并在你构建的产品中看到工作的直接成果。如果你热爱动手的技术工作,更喜欢专注于编码和技术问题解决,那么继续做软件工程师可能是你的正确选择 — 而且,这种情况下与人的互动要少得多。

另一方面,作为CTO,你的角色更多关于管理和战略。你要管理一切 — 资源、人员、计划、供应商、合作伙伴、客户。你是推动大规模事务发生的驱动力之一。你较少参与实际编码工作,更多地是在管理那些编写代码的软件工程师。如果你享受领导工作,喜欢成为榜样,并且热衷于在公司层面解决问题,转型成为CTO可能是一个正确的选择。

在领导岗位上你能产生的影响是惊人的,完全不能与软件工程相提并论。你不仅仅在影响单个项目或产品,而是在影响整个公司的技术方向。你可以塑造公司的技术文化,推动创新,并对公司的成功产生重大影响。CTO的角色也可以成为通往其他领导职位的跳板,比如CEO,特别是如果你对经营企业感兴趣的话。

然而,从程序员转变为CTO意味着需要培养新的技能(人际交往技能)并承担新的责任(很多很多责任!)。这可能具有挑战性,可能会让你走出舒适区。但它也可能带来回报,并提供新的成长和学习机会。

所以,选择权在你。

相关文章:

CTO 实际上是做什么的?

https://vadimkravcenko.com/shorts/what-cto-does/ 有刪節 本文旨在为软件工程师解密CTO的角色,并为那些渴望担任这一职位的人提供路线图。 “他们是技术团队与公司其他部门之间的桥梁,确保技术支持并推动业务发展。” CTO的角色经常被误解。CTO有时是…...

【软考速通笔记】系统架构设计师④——系统工程基础知识

文章目录 一、前言二、系统工程方法2.1 霍尔的三维结构2.2 切克兰德法2.3 并行工程2.4 综合集成法 三、系统工程生命周期四、系统生命周期方法五、系统性能5.1 计算机的性能指标5.2 路由器的性能指标5.3 交换机的性能指标5.4 网络的性能资料5.5 操作系统的性能指标5.6 数据库的…...

2024赣ctf-web -wp

1.你到底多想要flag??? 首先来解决第一关: 先了解一下stripos(); 并且此函数处理数组返回false。而且pre_match同样遇见数组是返回false(解释一下正则 i:这是正则表达式的修饰符,代表“不区…...

Android Framework AudioFlinge 面试题及参考答案

目录 请解释什么是 AudioFlinger? AudioFlinger 在 Android 系统中的位置是什么? AudioFlinger 的主要职责有哪些? AudioFlinger 如何管理音频流? 在 AudioFlinger 中,什么是音频会话? 请简述 AudioFlinger 的工作流程。 AudioFlinger 是如何与硬件交互的? 在 A…...

英语知识在线平台:Spring Boot技术应用

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...

Qt5.14.2的安装与环境变量及一些依赖库的配置

目录 1.Qt5.14.2安装 2.Qt环境变量及一些依赖库的配置 1.Qt5.14.2安装 QT从入门到入土(一)——Qt5.14.2安装教程和VS2019环境配置 - 唯有自己强大 - 博客园 2.Qt环境变量及一些依赖库的配置 假设QT安装目录为: D:\Qt\Qt5.14.2 将目录: D:\Qt\Qt5.14.…...

2024年9月中国电子学会青少年软件编程(Python)等级考试试卷(六级)答案 + 解析

一、单选题 1、下面代码运行后出现的图像是?( ) import matplotlib.pyplot as plt import numpy as np x np.array([A, B, C, D]) y np.array([30, 25, 15, 35]) plt.bar(x, y) plt.show() A. B. C. D. 正确答案:A 答案…...

go编程中yaml的inline应用

下列代码,设计 Config 和 MyConfig 是为可扩展 Config,同时 Config 作为公共部分可保持变化。采用了匿名的内嵌结构体,但又不希望 yaml 结果多出一层。如果 MyConfig 中的 Config 没有使用“yaml:",inline"”修饰,则读取…...

Springboot自带注解@Scheduled实现定时任务

基于Scheduled注解实现简单定时任务 原理 Spring Boot 提供了Scheduled注解,通过在方法上添加此注解,可以方便地将方法配置为定时任务。在应用启动时,Spring 会自动扫描带有Scheduled注解的方法,并根据注解中的参数来确定任务的…...

VSCode【下载】【安装】【汉化】【配置C++环境(超快)】(Windows环境)

目录 一、VSCode 下载 & 安装 二、VSCode 汉化 三、VSCode C配置 配置环境变量 如何验证是否成功 接着在VSCode中配置​编辑 一、VSCode 下载 & 安装 VSCode 下载 & 安装-CSDN博客https://blog.csdn.net/applelin2012/article/details/144009210Download Visual St…...

【八股文】小米

文章目录 一、vector 和 list 的区别?二、include 双引号和尖括号的区别?三、set 的底层数据结构?四、set 和 multiset 的区别?五、map 和 unordered_map 的区别?六、虚函数和纯虚函数的区别?七、extern C …...

ABAP OOALV模板

自用模板,可能存在问题 一、主程序 *&---------------------------------------------------------------------* *& Report ZVIA_OO_ALV *&---------------------------------------------------------------------* REPORT ZVIA_OO_ALV.INCLUDE ZVI…...

qt QDateTime详解

1. 概述 QDateTime 是 Qt 框架中用于处理日期和时间的类。它将 QDate 和 QTime 组合在一起,提供了日期时间的统一处理方案。QDateTime 可以精确到毫秒,并支持时区处理。 2. 重要方法 构造函数: QDateTime() 构造无效的日期时间 QDateTime(const QDa…...

鸿蒙安全控件之位置控件简介

位置控件使用直观且易懂的通用标识,让用户明确地知道这是一个获取位置信息的按钮。这满足了授权场景需要匹配用户真实意图的需求。只有当用户主观愿意,并且明确了解使用场景后点击位置控件,应用才会获得临时的授权,获取位置信息并…...

决策树分类算法【sklearn/决策树分裂指标/鸢尾花分类实战】

决策树分类算法 1. 什么是决策树?2. DecisionTreeClassifier的使用(sklearn)2.1 算例介绍2.2 构建决策树并实现可视化 3. 决策树分裂指标3.1 信息熵(ID3)3.2 信息增益3.3 基尼指数(CART) 4. 代码…...

【Android】RecyclerView回收复用机制

概述 RecyclerView 是 Android 中用于高效显示大量数据的视图组件&#xff0c;它是 ListView 的升级版本&#xff0c;支持更灵活的布局和功能。 我们创建一个RecyclerView的Adapter&#xff1a; public class MyRecyclerView extends RecyclerView.Adapter<MyRecyclerVie…...

自制Windows系统(十)

上图 &#xff08;真的不是Windows破解版&#xff09; 开源地址&#xff1a;仿Windows...

Linux——初识操作系统(Operator System)

前言&#xff1a;大佬写博客给别人看&#xff0c;菜鸟写博客给自己看&#xff0c;我是菜鸟。 一、冯偌伊曼体系 图一&#xff1a; 在初识操作系统之前&#xff0c;我们需要对计算机的硬件组成做一定的了解。本篇优先对数据信号做初步分析&#xff0c;暂时不考虑控制信号(操作系…...

RuoYi(若依)框架的介绍与基本使用(超详细分析)

**RuoYi&#xff08;若依&#xff09;**是一个基于Spring Boot和Spring Cloud的企业级快速开发平台。它集成了多种常用的技术栈和中间件&#xff0c;旨在帮助企业快速构建稳定、高效的应用系统。以下是关于RuoYi框架的详细介绍和基本使用教程&#xff0c;涵盖了从环境搭建到核心…...

js:基础

js是什么 JavaScript是一种运行在客户端的编程语言&#xff0c;实现人机交互的效果 js只要有个浏览器就能跑 js可以做网页特效、表单验证、数据交互、服务端编程 服务端编程是前端人拿他们特有的后端语言node.js来干后端干的事情 js怎么组成 JavaScriptECMAScript(语言基…...

easyui combobox 只能选择第一个问题解决

easyui combobox 只能选择第一个问题解决 问题现象 在拆分开票的时候&#xff0c;弹出框上面有一个下拉框用于选择需要新增的明细行&#xff0c;但是每次只能选择到第一个 选择第二条数据的时候默认选择到第一个了 代码如下 /*新增发票编辑窗口*/function addTicketDialog…...

【RISC-V CPU 专栏 -- 香山处理器介绍】

文章目录 RISC-V 香山处理器介绍雁栖湖处理器南湖处理器RISC-V 香山处理器介绍 相信很多小伙伴对于“香山”都不陌生,它是一款开源RISC-V处理器核,香山的每一代架构,都是采用了湖的名字,第一代架构被命名为雁栖湖,第二代架构则叫做 “南湖”。 “雁栖湖”这款处理器的 R…...

深入理解下oracle 11g block组成

深层次说&#xff0c;oracle数据库的最少组成单位应该是块&#xff0c;一般默认情况下&#xff0c;oracle数据库的块大小是8kb&#xff0c;其中存储着我们平常所需的数据。我们在使用过程中&#xff0c;难免会疑问道&#xff1a;“oracle数据块中到底是怎样组成的&#xff0c;平…...

“华为杯”研究生数学建模比赛历年赛题汇总(2004-2024)

文章目录 赛题链接历年赛题2004年赛题2005年赛题2006年赛题2007年赛题2008年赛题2009年赛题2010年赛题2011年赛题2012年赛题2013年赛题2014年赛题2015年赛题2016年赛题2017年赛题2018年赛题2019年赛题2020年赛题2020年赛题2021年赛题2022年赛题2023年赛题2024年赛题 赛题链接 部…...

LLM PPT Translator

LLM PPT Translator 引言Github 地址UI PreviewTranslated Result Samples 引言 周末开发了1个PowerPoint文档翻译工具&#xff0c;上传PowerPoint文档&#xff0c;指定想翻译的目标语言&#xff0c;通过LLM的能力将文档翻译成目标语言的文档。 Github 地址 https://github.…...

【深度学习之一】2024最新pytorch+cuda+cudnn下载安装搭建开发环境

兵马未动&#xff0c;粮草先行。作为深度学习的初学者&#xff0c;快速搭建一个属于自己的开发环境就是头等大事&#xff0c;可以让我们节省许多的时间。这一期我们主要讲一讲2024年最新pytorchcudacudnn下载安装搭建开发环境&#xff0c;以及安装过程中可能遇到的一些问题以及…...

摄像机视频分析软件下载LiteAIServer视频智能分析平台玩手机打电话检测算法技术的实现

随着科技的不断进步&#xff0c;摄像机视频分析软件的发展已经为我们的生活带来了许多便捷。其中&#xff0c;LiteAIServer视频智能分析平台的玩手机打电话检测算法技术尤为突出&#xff0c;它利用先进的图像处理和人工智能技术&#xff0c;能够自动识别并监控视频中的玩手机或…...

HTML5和CSS3新增特性

HTML5的新特性 HTML5新增的语义化标签 HTML5 的新增特性主要是针对于以前的不足&#xff0c;增加了一些新的标签、新的表单和新的表单属性等。 这些新特性都有兼容性问题&#xff0c;基本是 IE9 以上版本的浏览器才支持&#xff0c;如果不考虑兼容性问题&#xff0c;可以大量…...

删除word中页眉里的横线

使用快捷键‌简单粗暴&#xff1a; 双击页眉&#xff0c;将光标定位在页眉的横线上&#xff0c;按下CtrlShiftN快捷键&#xff0c;页眉横线即可删除。...

列表代码思路

目录 列表添加修改删除(单删,批删) 页面>Controller>service>Dao 一.列表的jsp页面 : 一. 想要用户已经来就看到的数据使用文档就绪函数 ①文档就绪函数 : 二. 封装ajax方法 二 : 在body中间 一 : 多条件查询的文本框 二. 写列表 三.在body的下面写脚本 1.给搜…...

40分钟学 Go 语言高并发:Context包与并发控制

Context包与并发控制 学习目标 知识点掌握程度应用场景context原理深入理解实现机制并发控制和请求链路追踪超时控制掌握超时设置和处理API请求超时、任务限时控制取消信号传播理解取消机制和传播链优雅退出、资源释放context最佳实践掌握使用规范和技巧工程实践中的常见场景…...

el-row el-col显示失效问题修复

el-row el-col显示失效 问题&#xff1a; 在列表显示页面&#xff0c;头部有几个搜索框和选择框&#xff0c;由于搜索条件框太多&#xff0c;写了el-row 和el-col进行分行分列展示。测试发现并没有按照行列展示。 <el-form :inline"true" :model"paramForm…...

libphone desktop编译

linphone-desktop 在ubuntu20.04 下编译 linphone 介绍 Linphone是一款遵循GPL的开源网络视频电话系统&#xff0c;支持多种平台如Windows、Linux、Android等。它基于SIP协议&#xff0c;提供语音、视频通话及即时文本消息功能。核心功能包括SIP用户代理、音频视频Codec支持、…...

实现一个可配置的TCP设备模拟器,支持交互和解析配置

前言 诸位在做IOT开发的时候是否有遇到一个问题&#xff0c;那就是模拟一个设备来联调测试&#xff0c;虽然说现在的物联网通信主要是用mqtt通信&#xff0c;但还是有很多设备使用TCP这种协议交互&#xff0c;例如充电桩&#xff0c;还有一些工业设备&#xff0c;TCP这类报文交…...

Rust环境安装乱码解决

安装rust环境open with visual studio2022操作系统乱码问题解决 打开“设置”&#xff0c;找到“时间和语言”。 进去之后依次选择“语言”->"管理语言设置"->“更改系统区域设置” 取消勾选“Beta版:使用Unicode UTF-8 提供全球语言支持”&#xff0c;然后重…...

Zookeeper实现分布式锁、Zookeeper实现配置中心

一、Zookeeper实现分布式锁 分布式锁主要用于在分布式环境中保证数据的一致性。 包括跨进程、跨机器、跨网络导致共享资源不一致的问题。 1.Zookeeper分布式锁的代码实现 新建一个maven项目ZK-Demo,然后在pom.xml里面引入相关的依赖 <dependency><groupId>com.…...

学习日记_20241126_聚类方法(自组织映射Self-Organizing Maps, SOM)

前言 提醒&#xff1a; 文章内容为方便作者自己后日复习与查阅而进行的书写与发布&#xff0c;其中引用内容都会使用链接表明出处&#xff08;如有侵权问题&#xff0c;请及时联系&#xff09;。 其中内容多为一次书写&#xff0c;缺少检查与订正&#xff0c;如有问题或其他拓展…...

【webrtc】 mediasoup中m77的IntervalBudget及其在AlrDetector的应用

IntervalBudget 用于带宽控制和流量整形 mediasoup中m77 代码的IntervalBudget ,版本比较老IntervalBudget 在特定时间间隔内的比特预算管理,从而实现带宽控制和流量整形。 一。 pacedsender 执行周期: 下一次执行的时间的动态可变的 int64_t PacedSender::TimeUntilNextPr…...

Python学习指南 + 谷歌浏览器如何安装插件

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; Python 目录 前言 Python 官方文档的使用 谷歌浏览器中如何安装插件 前言 在学习Python时&#xff0c;我们可能会出现这样的困惑&#x…...

leetcode - LRU缓存

什么是 LRU LRU (最近最少使用算法), 最早是在操作系统中接触到的, 它是一种内存数据淘汰策略, 常用于缓存系统的淘汰策略. LRU算法基于局部性原理, 即最近被访问的数据在未来被访问的概率更高, 因此应该保留最近被访问的数据. 最近最少使用的解释 LRU (最近最少使用算法), 中…...

RabbitMQ7:消息转换器

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…...

C#(14)七大原则

前言 其实在面向对象设计里&#xff0c;程序猿们互相约定好一些原则&#xff0c;即七大原则。 面向对象的七大原则是一组指导软件设计的原则&#xff0c;旨在帮助开发人员实现松耦合、可维护和可扩展的软件系统。这些原则的设计过程和发展历史可以追溯到20世纪80年代。 单一职…...

JDBC使用连接池druid操作数据库mysql

// 创建DruidDataSource实例DruidDataSource dataSource = new DruidDataSource();String url = "jdbc:mysql://localhost:3306/demo_base?useUnicode=true&characterEncoding=utf8&useSSL=true";String username...

零碎04 MybatisPlus自定义模版生成代码

目录 背景 动手开干 需要的依赖包&#xff0c;需要注意mybatis-plus-generator的3.5版本是没有兼容历史版本的。 定义一个CodeGenerator类&#xff0c;负责生成代码和配置属性 Entity模版 背景 MybatisPlus代码生成使用默认的velocity模版解决不了定制化的需求&#xff0…...

rk3568-linux-5.10.160移植rtl8822cs wifi 模块纪要

rk3568-linux-5.10.160移植rtl8822cs wifi 模块纪要 1、将驱动添加到 kernel/drivers/net/wireless/rockchip_wlan/ 或者 kernel/drivers/net/wireless/realtek/rtlwifi/ 2、修改该目录下的makefile、kconfig 3、修改rtl8822cs/os_dep/linux/os_intfs.c&#xff0c;添加 MO…...

uniapp接入高德地图

下面代码兼容安卓APP和H5 高德地图官网&#xff1a;我的应用 | 高德控制台 &#xff0c;绑定服务选择《Web端(JS API)》 /utils/map.js 需要设置你自己的key和安全密钥 export function myAMap() {return new Promise(function(resolve, reject) {if (typeof window.onLoadM…...

如何通过高效的缓存策略无缝加速湖仓查询

引言 本文将探讨如何利用开源项目 StarRocks 的缓存策略来加速湖仓查询&#xff0c;为企业提供更快速、更灵活的数据分析能力。作为 StarRocks 社区的主要贡献者和商业化公司&#xff0c;镜舟科技深度参与 StarRocks 项目开发&#xff0c;也为企业着手构建湖仓架构提供更多参考…...

微信小程序数据请求教程:GET与POST请求详解

微信小程序数据请求教程:GET与POST请求详解 引言 在微信小程序的开发过程中,数据请求是至关重要的一部分。通过与后端服务器进行通信,小程序能够获取动态数据,实现丰富的功能。在这篇文章中,我们将深入探讨微信小程序中的数据请求,重点介绍GET和POST请求的使用方法、示…...

【Redis 】Bitmap 使用

Redis Bitmap介绍 Redis Bitmap 是一种特殊的数据类型&#xff0c;它通过字符串类型键来存储一系列连续的二进制位&#xff08;bits&#xff09;&#xff0c;每个位可以独立地表示一个布尔值&#xff08;0 或 1&#xff09;。这种数据结构非常适合用于存储和操作大量二值状态的…...

【C语言】指针与数组的例题详解:深入分析与高级用法

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;题目一详细分析与解答代码逐步解析 &#x1f4af;进一步优化和拓展1. 指针与数组的关系2. 指针运算的注意事项3. 常见的错误和陷阱4. 拓展&#xff1a;指针操作的应用场…...