【书籍】DeepSeek谈《持续交付2.0》
目录
- 一、深入理解
- 1. 核心理念升级:从"自动化"到"双环模型"
- 2. 数字化转型的五大核心能力
- 3. 关键实践与案例
- 4. 组织与文化变革
- 5. 与其它框架的关系
- 6. 实际应用建议
- 二、对于开发实习生的帮助
- 1. 立刻提升你的代码交付质量(技术验证环实操)
- 2. 让导师/同事觉得你“有灵性”(业务验证环意识)
- 3. 实习生最容易踩的坑与解法
- 4. 超车技巧:用持续交付思维写简历
- 5. 低成本学习路径
- 三、高频出现的核心原则
- 1. "小步快跑"提交原则
- 2. "生产环境等价"原则
- 3. "测试是代码的刹车系统"原则
- 4. "配置即代码"原则
- 5. "快速失败"原则
- 6. "监控是第二测试套件"原则
- 如何落地这些原则?
- 从**防御性编程**开始:每次写代码时自问:
- 利用IDE插件强化习惯:
- 观察团队痛点:如果发现:
《持续交付2.0》是乔梁在经典著作《持续交付》基础上的升级版本,它不仅延续了第一版的核心思想,还结合了数字化转型时代的新需求,提出了更系统化的方法论。
一、深入理解
1. 核心理念升级:从"自动化"到"双环模型"
第一版的基础:持续交付1.0强调自动化构建-测试-部署流水线,目标是"随时可发布"。
2.0的突破:提出**“双环模型”**(业务验证环+技术验证环):
业务验证环(外环):快速验证用户需求价值,通过MVP(最小可行产品)和数据分析迭代。
技术验证环(内环):保障代码质量与交付效率,延续CI/CD流水线但更强调反馈速度。
关键点:两个环的协同实现了"业务-技术"的双向驱动,避免技术团队与业务目标脱节。
2. 数字化转型的五大核心能力
书中提出组织需要构建的五大能力,可类比为"持续交付的生态系统":
持续探索:通过用户画像、A/B测试等工具快速验证假设(对应业务验证环)。
持续集成:代码提交后立即构建、测试,反馈时间控制在分钟级(技术验证环基础)。
持续部署:自动化发布到生产环境,但强调渐进式发布(如金丝雀发布)。
持续运营:监控生产环境数据并反哺决策(连接双环的关键)。
持续优化:通过技术债管理、架构演进保持系统可持续性。
3. 关键实践与案例
分支策略的演变:从Git Flow到Trunk-Based Development(主干开发),减少合并冲突,加速反馈。
测试金字塔的强化:强调单元测试覆盖率(70%+)和契约测试(微服务场景),减少UI测试依赖。
环境治理:提出"环境即代码",用IaC(如Terraform)统一管理环境,解决"在我机器上能跑"问题。
案例:书中提到某金融企业通过双环模型将需求周期从2周缩短到2天,缺陷率下降60%。
4. 组织与文化变革
DevOps文化的深化:打破"交付即结束"思维,强调开发对业务结果负责(You Build It, You Run It)。
度量体系:不仅关注部署频率,更关注需求前置时间(Lead Time)和故障恢复时间(MTTR)。
反模式警示:如"虚假的CI"(每日合并主干)、"隔离的Ops团队"等。
5. 与其它框架的关系
与敏捷的区别:持续交付2.0是敏捷的"实现引擎",解决"如何快速交付价值"而非"如何协作"。
与SRE的互补:SRE(站点可靠性工程)的Error Budget概念与持续部署的渐进发布结合,平衡速度与稳定性。
6. 实际应用建议
从小开始:先在一个团队试点双环模型,例如用1周时间完成一个用户故事的"探索-交付-验证"闭环。
工具链示例:
业务环:Jira+数据分析工具(如Amplitude)
技术环:GitHub Actions+Jenkins+Prometheus
领导层参与:通过可视化价值流图(Value Stream Mapping)暴露瓶颈,获得资源支持。
二、对于开发实习生的帮助
1. 立刻提升你的代码交付质量(技术验证环实操)
提交代码像发微信一样谨慎:
书中强调的**小批量提交(Small Batch Size)**能让你少挨骂。实习时养成习惯:
每次提交不超过3个文件变更(避免大规模冲突)
提交前本地跑单元测试(mvn test或npm test)
写清晰的提交信息(参考Conventional Commits)
git commit -m "feat(login): add SMS verification timeout"
学会用CI工具自查:
主动了解团队的Jenkins/GitLab CI配置,在本地模拟CI流程(比如用docker build验证能否构建)。
2. 让导师/同事觉得你“有灵性”(业务验证环意识)
问对问题:
不要只问“这个功能怎么实现”,而是尝试问:
“这个需求解决用户的什么痛点?”(业务验证环思维)
“上线后我们怎么知道它成功了?”(持续运营意识)
在PR里展示思考:
提交Pull Request时,除了代码差异,附上:
## 业务影响
- 会影响用户登录成功率(监控看板链接)
## 测试建议
- 特别注意国际手机号格式校验
3. 实习生最容易踩的坑与解法
“环境问题”背锅:
用书中提到的容器化开发环境自救:
FROM node:18
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]
用这个Dockerfile可100%复现生产环境。
“在我电脑上好使”:
学会用docker-compose或团队约定的Vagrant配置,避免环境差异。
4. 超车技巧:用持续交付思维写简历
普通实习生写法:
“参与了XX系统的开发”
你的写法:
“通过拆分数据库变更脚本+蓝绿部署方案,使功能上线回滚时间从1小时缩短至5分钟”
(体现了技术验证环的部署能力)
“配合产品用A/B测试验证登录页改版,转化率提升15%”
(体现了业务验证环意识)
5. 低成本学习路径
每天15分钟实践:
时间 行动项
周一 在本地跑通项目的单元测试
周二 研究CI流水线的失败邮件
周三 用git bisect定位某次提交引入的bug
实习生专属工具包:
Katacoda:交互式学习Docker/K8s
Postman Automated Testing:快速验证API契约
关键认知:持续交付能力是开发者的“基础体能”
就像运动员必须练核心力量,这些技能会让你:
比只会CRUD的实习生更容易通过试用期
在敏捷团队中更快获得重要任务分配
未来无论是走技术专家还是管理路线都有底层优势
三、高频出现的核心原则
1. "小步快跑"提交原则
原则:每次提交的代码变更必须小到可以随时回滚(书中强调的"Small Batches")。
高频场景:
修复Bug时忍不住"顺手"重构其他代码
开发新功能时攒了一周才提交
正确操作:
# 错误:一次性提交整个模块
git add src/features/user/
git commit -m "complete user management"# 正确:按逻辑拆分提交
git add src/features/user/api.js
git commit -m "feat(user): add createUser API"
git add src/features/user/validation.js
git commit -m "fix(user): handle email format validation"
实习生加分项:用git rebase -i整理提交历史后再推送。
2. "生产环境等价"原则
原则:开发环境必须无限接近生产环境(书中第4章环境治理)。
高频翻车点:
“本地跑得好好的,上线就报错”
数据库版本差异导致SQL执行失败
解决方案:
docker-compose.yml
services:app:build: .environment:DB_URL: "postgres://prod_user:password@db:5432/prod_db" # 故意和生产一致db:image: postgres:14.5 # 指定和生产相同的版本
快速验证:在本地用docker-compose run app pytest运行测试。
3. "测试是代码的刹车系统"原则
原则:没有自动化测试的代码等于蒙眼狂奔(书中测试金字塔实践)。
典型违规:
手动测试UI却忽略单元测试
测试代码复制粘贴导致维护困难
正确示例(Python):
# 错误:测试依赖UI操作
def test_login():open_browser()type_text(username_field, "test") # 脆弱的UI测试click(login_button)assert page_contains("Welcome")# 正确:单元测试业务逻辑
def test_login_success():user = authenticate(username="test", password="123")assert user.role == "member" # 核心逻辑验证
实习生技巧:用pytest --cov-report term-missing查看未覆盖的代码行。
4. "配置即代码"原则
原则:所有环境配置必须版本化(书中第6章基础设施即代码)。
常见错误:
直接修改服务器上的nginx.conf
部署文档写"找运维要数据库连接串"
正确做法:
# 生产环境数据库配置(terraform示例)
resource "aws_db_instance" "prod" {allocated_storage = 100 # 配置可追溯engine_version = "13.4"instance_class = "db.m5.large"
}
紧急情况:即使要临时修改,也要先git checkout -b hotfix-config再操作。
5. "快速失败"原则
原则:在流水线的最早阶段暴露问题(书中CI/CD流水线设计)。
反面教材:
代码合并后才跑耗时1小时的测试
部署到生产环境才发现依赖缺失
推荐流水线阶段:
# GitLab CI示例
stages:- lint # 立即发现代码风格问题(秒级)- unit-test # 核心单元测试(<5分钟)- integration # 集成测试(可并行)- deploy # 最后才部署
实习生避坑:在本地先运行npm run lint再推送代码。
6. "监控是第二测试套件"原则
原则:生产环境监控是最后的防御线(书中持续运营章节)。
新手常忽略:
只关注功能实现,不考虑日志输出
异常捕获后直接吞掉错误
如何落地这些原则?
从防御性编程开始:每次写代码时自问:
这个变更如何回滚?
怎么用自动化验证它?
出问题时日志能否定位?
利用IDE插件强化习惯:
SonarLint(实时代码质量检测)
GitLens(可视化代码变更历史)
Docker插件(右键直接运行容器)
观察团队痛点:如果发现:
经常为解决环境问题开会 → 推广Docker开发环境
发布后频繁回滚 → 建议增加集成测试阶段
相关文章:
【书籍】DeepSeek谈《持续交付2.0》
目录 一、深入理解1. 核心理念升级:从"自动化"到"双环模型"2. 数字化转型的五大核心能力3. 关键实践与案例4. 组织与文化变革5. 与其它框架的关系6. 实际应用建议 二、对于开发实习生的帮助1. 立刻提升你的代码交付质量(技术验证环实…...
Spring AOP 扫盲
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
银河麒麟v10(arm架构)部署Embedding模型bge-m3【简单版本】
硬件 服务器配置:鲲鹏2 * 920(32c) 4 * Atlas300I duo卡 参考文章 https://www.hiascend.com/developer/ascendhub/detail/07a016975cc341f3a5ae131f2b52399d 鲲鹏昇腾Atlas300Iduo部署Embedding模型和Rerank模型并连接Dify(自…...
如何通过流程管理优化企业运营?
流程管理的本质是“用确定性的规则应对不确定性的业务”。 那么,具体该如何通过流程管理来优化企业的运作呢?以下是一些关键步骤和思路,或许能给到一些启发。 1. 从流程梳理开始:摸清现状,找准问题 想要管理好企业的…...
ZYNQ笔记(四):AXI GPIO
版本:Vivado2020.2(Vitis) 任务:使用 AXI GPIO IP 核实现按键 KEY 控制 LED 亮灭(两个都在PL端) 一、介绍 AXI GPIO (Advanced eXtensible Interface General Purpose Input/Output) 是 Xilinx 提供的一个可…...
Java学习手册:JVM、JRE和JDK的关系
在Java生态系统中,JVM(Java虚拟机)、JRE(Java运行时环境)和JDK(Java开发工具包)是三个核心概念。它们共同构成了Java语言运行和开发的基础。理解它们之间的关系对于Java开发者来说至关重要。本文…...
Java 并发-newFixedThreadPool
前言 为什么选择使用多线程?一种场景是在数据和业务处理能力出现瓶颈时,而服务器性能又有空闲,通常是cpu空闲,这时使用多线程就能很好的解决问题,而又无需加硬件,实际使用中,线程池又是最为常用…...
C# task任务异步编程提高UI的响应性
方式1:async/await模式 private async void button1_Click(object sender, EventArgs e){try{var result await Task.Run(() > CalculateResult());label1.Text result.ToString();}catch (Exception ex){label1.Text $"Error: {ex.Message}";}}pri…...
Spring Bean生命周期执行流程详解
文章目录 一、什么是Spring Bean生命周期?工作流程图:二、Bean生命周期执行流程验证1.编写测试代码验证结果2.源码追溯Bean初始化回调过程 一、什么是Spring Bean生命周期? Spring Bean生命周期是指从Bean的创建到销毁的整个过程,…...
windows 安装 pygame( pycharm)
一、安装流程 1.查看python版本 2.检查是否安装pip 3.下载pygame安装文件 下载地址:https://pypi.org/project/pygame/#files 选择合适的版本(我选择的是 python3.7 windows 64bit): 4.使用pip安装pygame 将下载好的whl文件移动到…...
Envoy网关实例异常重启排查总结
一、事件背景 于10月24日凌晨业务租户有业务应用发版上线,中午收到pod连续5分钟重启严重告警,登录管理节点查看异常重启的应用网关pod日志,存在内核段错误报错信息导致进程终止并触发监控检查异常并重启; 该报错主要是访问的内存超出了系统…...
WinForm真入门(13)——ListBox控件详解
WinForm ListBox 详解与案例 一、核心概念 ListBox 是 Windows 窗体中用于展示可滚动列表项的控件,支持单选或多选操作,适用于需要用户从固定数据集中选择一项或多项的场景。 二、核心属性 属性说明Items管理列表项的集合,支持动…...
【Linux网络编程】UDP Echo Server的实现
本文专栏:Linux网络编程 目录 一,Socket编程基础 1,IP地址和端口号 端口号划分范围 理解端口号和进程ID 源端口号和目的端口号 理解Socket 2,传输层的典型代表 3,网络字节序 4,Socket编程接口 s…...
8.3.5 ToolStripContainer(工具栏容器)控件
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的 ToolStripContainer控件是一个容器,可以包含菜单和工具条、状态栏。 在设计窗体中放入一个ToolStripContainer࿱…...
代码随想录-06-二叉树-05.05 N叉树的层序遍历
N叉树的层序遍历 #模板题 题目描述 给定一个 N 叉树,返回其节点值的_层序遍历_。(即从左到右,逐层遍历)。 树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。 具体思路 …...
【NEPVR】《A Lightweight Palm Vein Recognition Algorithm NEPVR》
[1]马莉,刘子良,谭振林,等.一种轻量级掌静脉识别算法NEPVR[J].计算机技术与发展,2024,34(12):213-220.DOI:10.20165/j.cnki.ISSN1673-629X.2024.0248. 文章目录 1、背景2、相关工作3、创新点4、NEPVR 手掌静脉识别算法5、实验结果及分析6、总结 / 未来工作 1、背景 手掌静脉独…...
牟乃夏《ArcGIS Engine地理信息系统开发教程》学习笔记1
(适合GIS开发入门者,通俗解析核心知识点) 目录 一、ArcGIS Engine是什么? 二、ArcGIS Engine能做什么? 三、ArcGIS Engine与ArcObjects的区别 四、开发资源与学习路径 五、对象模型图(OMD)…...
架构师论文《论模型驱动软件开发方法在智能制造转型实践中的应用》
摘要: 本人现任某大型装备制造企业智能制造研究院首席架构师,主导集团级数字化工厂平台建设。面对多品种小批量生产模式下普遍存在的交付周期超预期(平均延期21天)、设备综合效率OEE不足65%的痛点,我司于2021年启动基…...
探索MCP.so:AI生态的创新枢纽
今天在研究MCP时发现了一个还不错的网站,分享给大家。后续会基于这些mcp servers做一些有趣的应用。 在人工智能飞速发展的当下,AI与各类工具、数据源的协同合作变得愈发关键。MCP.so这个平台,正悄然成为AI领域的重要枢纽,为众多开发者和AI爱好者打开了新的大门。 MCP,即…...
JVM底层详解
JVM底层详解 目录 JVM概述JVM内存模型垃圾回收机制类加载过程JIT编译JVM调优JVM监控与故障排查JVM与多线程JVM与性能优化JVM发展历程与未来JVM实战案例分析JVM高级特性JVM安全机制JVM与容器化 一、JVM概述 1.1 什么是JVM Java虚拟机(Java Virtual Machine&…...
多点:分布式升级助力新零售转型,成本节省超80% | OceanBase 案例
本文作者:多点数据库DBA团队 编者按:多点是零售行业数字(智)化的先行者,为全球企业提供创新的数字化解决方案。然而,在数字化转型的过程中,多点原有的数据库架构逐渐暴露出架构复杂、成本上升等…...
Java权限修饰符深度解析
Java权限修饰符深度解析与最佳实践 一、权限修饰符总览 Java提供四种访问控制修饰符,按访问范围从宽到窄排序如下: 修饰符类内部同包类不同包子类全局范围public✔️✔️✔️✔️protected✔️✔️✔️❌默认(无)✔️✔️❌❌pr…...
RocketMQ和kafka 的区别
一、数据可靠性与容错机制 数据可靠性 RocketMQ支持同步刷盘和同步复制,确保消息写入磁盘后才返回确认,单机可靠性高达10个9,即使操作系统崩溃也不会丢失数据159。而Kafka默认采用异步刷盘和异步复制,虽然吞吐量高,但极…...
分布式限流器框架 eval-rate-limiter
分布式限流器框架 eval-rate-limiter 文章目录 分布式限流器框架 eval-rate-limiter前言设计流程图 核心方法tryAcquire 获取通信证增加访问次数 incrementRequestCount生成分布式 key generateRateLimiterKey 测试测试代码结果Redis 客户端 前言 基于 redis 实现的分布式限流…...
使用Docker部署Java项目的完整指南
前言 Docker是一个轻量级的容器化平台,可将应用及其依赖打包成标准化单元,实现快速部署和环境隔离。本文以Spring Boot项目为例,演示如何通过Dockerfile部署Java应用。 准备工作 本地环境 安装Docker Desktop(官网下载࿰…...
机器学习数据需求与应用分析
监督学习、无监督学习和强化学习作为机器学习的核心范式,对数据条件的需求存在显著差异。以下是具体分析: 一、监督学习的数据条件 数据要求 监督学习需要带标签(labeled)的数据集,即每个输入样本都有对应的目标输出&a…...
【机器学习算法】基于python商品销量数据分析大屏可视化预测系统(完整系统源码+数据库+开发笔记+详细启动教程)✅
目录 一、项目背景 二、技术思路 三、算法介绍 四、项目创新点 五、开发技术介绍 六、项目展示 一、项目背景 本项目基于Python技术栈构建了"商品销量数据分析与预测系统",通过自动化爬取淘宝商品多维数据(价格、销量、评价、品类等&a…...
springboot集成springcloud vault读值示例
接上三篇 Vault---机密信息管理工具安装及常用示例 Vault机密管理工具集群配置示例 vault签发根证书、中间证书、ca证书流程记录 项目里打算把所有密码都放到vault里管理,vault提供了springcloud vault用来在springboot里连接vault,启动加载vault里的值放…...
BERT 模型是什么
BERT 模型是什么? BERT(Bidirectional Encoder Representations from Transformers)是一种基于Transformer架构的深度学习模型,由Google于2018年提出。它在自然语言处理领域取得了显著成就,成为众多NLP任务的基础。 …...
三元电池正极材料除杂工艺介绍
三元电池正极材料的除杂工艺对于提高电池性能、安全性和稳定性至关重要。以下是对三元电池正极材料除杂工艺的详细介绍: 物理除杂工艺 磁选 原理:利用磁场对磁性杂质的吸引作用实现分离。在三元电池正极材料生产中,常混入铁、钴、镍等磁性金…...
wx212基于ssm+vue+uniapp的科创微应用平台小程序
开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…...
Multi Agents Collaboration OS:数据与知识协同构建数据工作流自动化
1-背景 传统数据系统与业务数字化的开发与维护面临诸多挑战:行业知识获取壁垒高、需求变化快导致开发周期长、系统复杂度高以及人力与资源投入成本巨大。同时,用户在使用过程中也常遇到痛点:手动录入数据繁琐低效、数据分散于各模块难以整合…...
elemenPlus中,如何去掉el-input中 文本域 textarea自带的边框和角标
1、去掉角标 :deep(.el-textarea__inner) {resize: none !important; // 去除右下角图标 }2、去除边框,并自定义背景色 <el-inputref"textareaRef"v-model"tempContent":style"{--el-border-color: rgba(255,255,255,0.0),--el-input-…...
Excel 动态比较两列数据:实现灵活的数据验证
目录 动态比较两列数据的需求动态公式的实现使用INDIRECT和ROW函数公式解释应用 动态公式的优点 快速添加一列公式的技巧使用快捷键Ctrl D使用VBA宏自动化使用“表格”功能自动填充 实际应用场景数据验证动态报告数据清洗 注意事项总结 在数据处理和分析中,Excel 是…...
谷歌推出可免费使用的Firebase Studio:Gemini全栈AI开发利器
谷歌刚刚发布了Firebase Studio,这是其打造的一款沉浸式代码开发平台,旨在与Cursor、Lovable、Bolt和V0等工具竞争。如果你是一名网页开发者,可能只知道Firebase是谷歌的数据库工具。 但现在,它已远不止于此。 Firebase已发展成一个完整的生态系统,如今能帮助你从头到尾…...
spark(二)
本节课接上节课继续对于RDD进行学习,首先是对于创建RDD的不同方式,接着学习了RDD的三种转换算子:Value类型、双Value类型、Key-Value类型,以及各个转换算子的不同使用方式。 学习到如下的区别: map 与 mapPartitions…...
Fay 数字人部署环境需求
D:\ai\Fay>python main.py pygame 2.6.1 (SDL 2.28.4, Python 3.11.9) Hello from the pygame community. https://www.pygame.org/contribute.html [2025-04-11 00:10:16.7][系统] 注册命令... [2025-04-11 00:10:16.8][系统] restart 重启服务 [2025-04-11 00:10:16.8][…...
【Harmony】端云一体化(云函数)
一、云函数的概述 1、什么是云函数 官方解释 云函数是一项Serverless计算服务,提供FaaS(Function as a Service)能力,一方面云函数将开发测试的对象聚焦到函数级别,可以帮助您大幅简化应用开发与运维相关的事务&…...
利用大模型和聚类算法找出 Excel 文件中重复或相似度高的数据,并使用 FastAPI 进行封装的详细方案
以下是一个利用大模型和聚类算法找出 Excel 文件中重复或相似度高的数据,并使用 FastAPI 进行封装的详细方案: 方案流程 数据读取:从 Excel 文件中读取数据。文本向量化:使用大模型将文本数据转换为向量表示。聚类分析:运用聚类算法对向量进行分组,将相似度高的数据归为…...
通过远程桌面连接wsl2中安装的ubuntu24.04
要介绍的这种方式其实跟直接用wsl来执行命令差不多,是在终端去操作ubuntu。WSL2 默认只提供命令行界面,本文安装xrdp后通过windows远程桌面连接过去。 1、更新软件包列表 sudo apt update 确保你的软件包列表是最新的,否则可能找不到某些包…...
对接和使用国内稳定无水印的 Suno API
随着 AI 的应用日益广泛,各种 AI 程序已经融入我们的日常生活。从最早的写作,到医疗、教育,如今甚至扩展到了音乐领域。 Suno 是一个专注于高质量 AI 歌曲和音乐创作的平台。用户只需输入简单的文本提示词,便可以按照流派风格和歌…...
LeetCode算法题(Go语言实现)_38
我将按照您提供的文档结构为您整理二叉树最近公共祖先(LCA)问题的解决方案: 一、代码实现 type TreeNode struct {Val intLeft *TreeNodeRight *TreeNode }func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode {if root nil ||…...
Linux学习笔记 1
1.发展史 略...... 2.xshell的使用方法 2.1登录 ssh root公网地址 输入密码,用 uname -r 指令来鉴定是否登录成功。之后就可以进行命令行操作了。 alt enter 全屏、退出 设置多用户指令,新建用户 adduser 名字 passwd 密码 销毁用户…...
微信小程序跳4
formatMillisecondsTime: function(milliseconds, formatStr) { // 创建一个新的Date对象,传入毫秒值 const date new Date(milliseconds); // 获取年月日时分秒,并确保它们都是两位数 const year date.getFullYear(); const month (date.getMonth() …...
STM32单片机入门学习——第31节: [10-1] I2C通信协议
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.10 STM32开发板学习——第31节: [10-1] I2C通信协议 前言开发板说明引用解答和科普一…...
OpenCV 图形API(24)图像滤波-----双边滤波函数bilateralFilter()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 应用双边滤波到图像。 该函数对输入图像应用双边滤波,如 http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Fil…...
【图像处理基石】什么是影调?并用python实现一个哈苏色彩影调
影调是摄影语言的核心,通过控制明暗、虚实与色彩,可精准传达创作意图。实际选择需结合主题情感、光线条件及画面结构,灵活运用高调、低调或冷暖色调,以强化视觉表现力。 一、影调的定义 影调指画面中明暗、虚实、色彩的层次与对比…...
MySQL行列转换
创建一个sc表并插入数据 方法一: select distinct uid, (select score from sc where s.uiduid and course语文)语文, (select score from sc where s.uiduid and course数学)数学, (select score from sc where s.uiduid and course英语)英语 from sc s; 方法二: select * fro…...
cookie和session哪个生成的时间早
Cookie 和 Session 的出现时间都可以追溯到 Web 开发的早期阶段,但它们的生成顺序在实际应用中通常是先生成 Session,然后通过 Cookie 来存储 Session ID。 详细解释: Session 的生成过程 • 用户请求服务器: • 用户首次访问网…...