- 博客(148)
- 资源 (24)
- 收藏
- 关注
原创 《持续交付2.0系列九》从手动到自动之持续集成
持续集成是一种软件开发实践,团队成员频繁地将他们的工作成果集成到共享代码库中(通常每人每天至少提交一次),每次提交后自动触发包含自动化验证集的构建任务,以便尽早发现集成问题。尽早发现集成错误:代码集成越早,定位问题成本越低保持主干始终可构建:主干(main/master)永远是健康的、可发布的缩短反馈周期:开发者从提交到知道结果,越快越好持续集成是持续交付的发动机——它决定了交付的速度和质量六步提交法是团队纪律——检出→个人构建→提交→构建验证→验证→部署,每一步都不能跳过速度与质量不是二选一。
2026-07-30 20:00:00
229
原创 《持续交付2.0系列八》从混乱到秩序之分支策略
三大原则:分支越少越好、分支寿命越短越好、发布周期越短越好GitFlow:适合定期发布的传统项目,但集成风险高:极简主干开发,适合Web/SaaS产品的日发布:终极持续交付模式,需要完善的自动化支撑特性开关:是Trunk-Based开发的关键技术,控制功能可见性发布模式:项目制→发布火车→城际快线,频率越来越高。
2026-07-29 20:38:10
359
原创 《持续交付2.0系列七》部署流水线原则与工具设计
部署流水线是持续交付的核心——它串联了从代码到生产的整个链条五条设计原则:一次构建多次使用、与业务逻辑松耦合、并行化、快速反馈优先、重要反馈优先两条协作纪律:立即暂停原则(质量高于进度)、安全审计原则(所有操作可追溯)工具链三层架构:唯一受信源 → 部署流水线平台 → 基础支撑服务层四大基础服务:编译构建管理、自动化测试管理、软件部署管理、基础环境管理制品库是企业的"可信源",必须做到版本可追溯、生命周期可管理。
2026-07-21 01:00:00
343
原创 《持续交付2.0系列六》业务需求协作管理
持续交付不仅仅是技术团队的事。无论你的CI/CD流水线多么漂亮,如果需求本身定义不清、拆分不当、协作混乱,交付质量依然无从谈起。业务需求协作管理贯穿于整个软件产品版本周期,涉及业务人员、产品经理、运营人员、开发人员、测试人员、运维人员等所有角色。需求管理是连接"价值探索"与"快速验证"的桥梁——探索环告诉你"做什么",验证环告诉你"做得好不好",而第六章解决的是"怎么把要做的事说清楚、分明白、协作好"。DoD(Definition of Done)是第六章的重点内容之一。代码实现并通过审查。
2026-07-20 00:00:00
362
原创 《持续交付2.0系列五》软件系统架构
*“大系统小做”**是持续交付的架构基石——拆分是为了独立交付价值,不是为了技术炫技没有最好的架构,只有最适合的架构——微核、微服务、单体各有适用场景遗留系统改造首选绞杀者模式——风险最低、业务连续性最好技术债是业务需求——不还债的团队,最终会被债拖垮度量是为了改善——不是考核的鞭子,是改进的罗盘。
2026-07-18 17:00:00
667
原创 《持续交付2.0系列四》组织文化---从恐惧到信任
明确你想要什么。不是"我们要建立一个优秀的团队"这种空话,而是具体的行为和标准。示例目标:每次发布后24小时内必须有反馈数据价值观:快速学习比完美计划更重要把价值观翻译成具体行为。抽象价值观具体行为快速学习每周至少进行一次回顾会议心理安全事故后48小时内完成无责复盘持续改善每个迭代至少提出一项改进建议文化是持续交付2.0的地基。没有心理安全感和信任,再好的流程也只是形式主义。失败是学习的成本,不是耻辱。容忍失败的组织才能创新,创新才能持续交付价值。度量是为了改进,不是为了考核。
2026-07-18 12:00:00
496
原创 《持续交付2.0系列三》从假设到证据
验证环不是技术流程,而是业务验证工具。监测的核心是"验证假设是否成立",不是"服务器有没有挂"。三层指标体系缺一不可。关键指标告诉你"目标达成了吗",辅助指标告诉你"哪里出了问题",护栏指标告诉你"有没有造成新伤害"。决策比验证更重要。无论数据多好或多差,时间一到必须做出决策。犹豫不决比错误决策更浪费资源。
2026-07-17 13:00:00
624
原创 《持续交付2.0系列一》从技术交付到业务引领
探索环(价值探索)验证环(快速验证)核心问题我们该做什么?我们做得对不对/好不好?四个环节提问 → 锚定 → 共创 → 精炼构建 → 运行 → 监测 → 决策指导思想精益思想:消除浪费、拉动交付技术实践:自动化、数据驱动典型失败做了很多功能,没人用功能交付很快,但方向错了类比战略层:选对赛道战术层:跑得快交付的本质是传递业务价值,不是推送代码。技术能力只是基础,业务能力才是核心。双环模型缺一不可。探索环保证"做正确的事",验证环保证"正确地做事"。只快不对或对而不快,都是伪交付。
2026-07-15 22:11:20
412
原创 《持续交付2.0系列二》从用户噪音到精准假设
不要问"你要什么功能",要问"你为什么需要这个"。这是探索环的起点,也是最容易被跳过的一步。大多数团队拿到需求就直接跳到"怎么做",而跳过了"为什么要做"。层次问题示例目的表层需求“用户说要加个导出按钮”收集表面反馈深层动机“用户为什么要导出?他在导出后做什么?找到真实场景根本问题“用户的核心痛点是什么?导出是唯一解吗?定义真正要解决的问题实操技巧:连续问5个"为什么"。
2026-07-15 21:37:16
584
原创 从瀑布到DevOps,我们到底在解决什么问题
它是一组实践与方法论,核心目标是缩短系统变更从开发提交到部署上线的周期,同时保证部署的可靠性和系统的稳定性。它的核心升级点是:从“技术导向”转向“业务价值导向”,不再只关注“能不能快速发布”,更关注 “发布的东西有没有真正产生业务价值”。就像开小馆一样,与其花一年策划一个“完美”的菜单,不如先推几道招牌菜,听顾客说什么,边经营边调整。——用户的声音,永远比你的想象更靠谱。但乔梁老师在实践辅导中发现了一个普遍性问题:很多团队虽然实现了“随时发布”的能力,但发布出去的功能根本没有解决业务问题,甚至没人用。
2026-07-15 14:36:18
191
原创 Spring AI 系列(一):ChatModel 设计原理与源码分析
ChatModel 是 Spring AI 框架的核心抽象层,负责与大语言模型进行对话交互。它是整个 Spring AI 生态的基石组件——ChatClient、Agent、RAG、Function Calling 等所有高级功能都基于 ChatModel 构建。核心设计思想:将"与模型对话"这一行为抽象为接口,屏蔽不同厂商 API 的差异,让开发者用同一套 API 与任意模型交互。关键特性模型无关性:通过接口抽象,切换模型只需修改配置双模式支持:同步调用(一次性返回完整响应)和流式调用(逐步推送内容)
2026-07-15 08:03:35
451
原创 DevOps 全流程拆解:代码是怎么变成业务的
想象一下,以前我们发货是散装的:有的用纸箱,有的用木箱,有的直接堆在车上。到了客户那儿,很容易散架。现在,我们把 OA 系统的所有代码、配置文件、运行环境,全部打包进一个 Docker 镜像里。发布成功不是终点,运行稳定才是。让我们把刚才讲的串联起来,这就是 DevOps 的完整生命周期:mermaidgraph LRA[开发者提交代码] --> B(CI: 自动构建 & 测试)B – 通过 --> C[生成 Docker 镜像]C --> D(CD: 部署到测试环境)
2026-07-12 14:19:15
237
原创 如何将现有系统逐步优化成微服务设计
本文诞生于学习架构实践专栏后的深思以及总结,结合公司之前“大泥球”的架构风格,改造服务设计的思维。改造公司系统服务主要原因:1、代码类似“屎山”,牵一发而动全身,维护成本高,且迭代慢;2、业务数据均存放在一个数据库中,几百张数据表,也是在业务代码中随意Join关联表;
2024-06-21 21:39:27
1636
原创 从复用性角度阐述中台建设
企业级能力复用平台,简单直接明确定义,也符合这篇文章的主题。企业级:定义中台的范围;企业级侧重说明中台处理的问题在于企业级别,即至少多条业务线或者服务多个前台产品;因此,中台建设,一定需要跳出单条业务线,站在企业整体视角来审视业务全景,区分开了单系统的服务化与微服务;能力:定义中台主要承载的对象;不同企业的中台能力均不相同,可以满足用户不同层面的需求,即差异化竞争力;复用:定义中台的核心价值;复用,是中台更加关注的目标,也是业务驱动和用户驱动的;中台的衡量标准。
2024-06-20 22:07:35
1467
原创 分布式系统之衡量指标:性能、资源、可用性和可扩展性
性能、资源占用、可用性和可扩展性是分布式系统设计和评估中的四个重要指标。通过详细分析和监控这些指标,可以帮助我们优化系统设计,提高系统的整体性能和可靠性。在实际应用中,需要根据具体的业务需求和技术条件,选择最合适的策略,以平衡这些关键指标。
2024-06-19 18:10:45
2067
原创 【quarkus系列】Quarkus整合openapi之swagger
Quarkus入门项目启动完成之后,可以进入Quarkus DEV UI页面,如果没有了解的小伙伴,请移步。明显可以看到swagger的地址,点击便可以直接进入swagger-ui进行调试接口,是不是很方便呀~Quarkus也支持修改swagger访问路径。
2024-06-06 16:09:54
1145
原创 【quarkus系列】实战自定义注解实现策略模式分发
基于Quarkus自定义注解的语法格式,与java语法基本一致,毕竟遵循 MicroProfile 和 Jakarta EE 的规范。核心代码@Qualifier平台类型枚举@Getter//企微WEWORK(1, "企微"),//小红书RED_BOOK(2, "小红书"),;
2024-06-06 03:00:00
1326
原创 【quarks系列】基于Dockerfile构建native镜像
f Dockerfile用于指定要使用的Dockerfile。如果Dockerfile不在当前目录,需要提供完整路径。-t your_image_name用于指定构建的镜像名称。Dockerfile的文件名为Dockerfile。Dockerfile位于构建上下文的根目录中。构建镜像的时间比较长,需要等待一下,耐心呦~.表示Dockerfile所在的当前目录。实体类以及Controller层。引入lombok的依赖。
2024-06-05 15:10:17
799
原创 【docker】 /bin/sh: ./mvnw: No such file or directory解决方案.dockerignore被忽略
默认将所有文件忽略啦,所以dockerfile运行命令时,无法使用./mvnw命令。之前的文章也提过,quarkus原生包镜像需要依赖二进制文件,故target目录下文件需要排除。文件是用来指定在构建Docker镜像时应该忽略的文件和目录的配置文件。我们看一下项目生成时,默认dockerignore内容是什么。报错如下:解决方案很简单,但是容易让大家忽视的问题。大家都使用过.gitignore,原理是一样的。
2024-06-05 12:29:57
709
原创 【quarkus系列】解决native包反射问题java.util.NoSuchElementException之RegisterForReflection 注解
在使用 Quarkus 等框架时,反射机制可能是我们剥离spring框架之后做native包需要的解决问题。首先先了解讨论为什么原生包(native image)不支持传统的反射机制呢?扩展一下知识点,两者之间的区别。:反射允许 Java 程序在运行时动态地发现和使用类、方法和字段。这种动态性带来了极大的灵活性,但也有一些缺点,如性能开销和安全问题。:GraalVM 提供了一种将 Java 应用程序编译为原生可执行文件的能力,这种方式能够显著提高启动速度和减少内存占用。这是因为原生包在,而不是。
2024-05-28 21:36:59
1631
原创 【quarkus系列】构建可执行文件native image
选择 Quarkus Native Image 能够显著提升应用的性能和部署效率,特别适合云原生和微服务架构的应用场景。
2024-05-27 22:49:37
1939
原创 【quarkus系列】创建quarkus第一个应用程序
Quarkus 是一个设计用于 Kubernetes 和云原生环境的 Java 框架,具有快速启动时间、低内存消耗和强大的开发者体验。1、标识项目启动时用的端口号,配置文件application.properties中定义设置;2、标识项目运行环境,即dev,启动命令中设置quarkus:dev;从git克隆官网提供的快速启动项目,官网提供的组件demo(本篇可以先忽略)控制台出现以上日志,则表明启动运行成功。使用终端,输入以上命令,控制台输出。3、标识项目中使用的项目组件;项目使用的maven,
2024-05-27 22:16:08
1050
原创 docker实战之搭建MYSQL8.0主从同步
关于MYSQL主从同步的原理以及八股文这篇文章中就暂时不讲述啦,直接上干货,面对许多同学没有大量服务器,又想参与MYSQL集群实战过程中,提升技能,这篇实操技能你值得拥有~
2024-05-21 09:09:07
1890
1
原创 从医疗数字化转型谈何为中台
中台定义中台,从字面意思上理解,是位于前台和后台之间。但关于中台的定义也是百家杂谈,故小编参考网上两种阐述比较清晰的定义。一、中台的定义:中台就是“企业级能力复用平台”;企业级:定义中台的范围,区分开了单系统的服务化与微服务能力:定义了中台的主要承载对象,能力的抽象解释了各种各样中台的存在复用:定义了中台的核心价值,传统的平台化对于易复用性并没有给予足够的关注,中台的提出和兴起,让人们通过可复用性将目光更多的从平台内部转换到平台对于前台业务的支撑上平台:定义了中台的主要形式,区别于传统的应用
2022-04-13 21:28:02
1995
原创 【Kubernetes系列】Kubernetes组件介绍
概述kubernetes中文文档:https://kubernetes.io/zh/docs/home/kubernetes中文社区:https://www.kubernetes.org.cn/docskubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能:自我修复:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器;弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整;服务
2022-03-30 21:40:34
4065
原创 【kafka系列】kafka之生产者发送消息实践
一、准备工作进入实战之前先熟悉一下topic的相关命令,使用终端命令查询创建一个新topic,用于后期实战;特别注意:以下命令全部依据kafka文件目录中操作;如果尚未安装kafka,请移步《centos7系统安装kafka》查看操作主题命令参数命令:./bin/kafka-topics.sh日常工作中常用的命令如下表:参数描述–bootstrap-server <String: server toconnect to>连接的 Kafka Broker 主
2022-03-07 21:18:16
8925
原创 【docker系列】docker之部署springboot项目
目录一、项目依赖二、引入docker依赖三、项目打包四、编写Dockerfile文件五、构建镜像六、启动容器七、测试一、项目依赖本篇主题主要实战如何使用Docker部署springboot项目,那么首先保证服务器上已经安装完docker容器,如果尚未安装请移步《详解阿里云服务器安装docker》文章完成docker安装操作;以下直接搭建springboot项目;以下也是springboot项目中最基本的依赖项;因为我们想测试接口访问,故搭建的是一个web项目,那么我们提供一个controller层c
2022-02-28 22:33:54
2246
原创 【kubernetes系列】Pod篇实战操作
目录一、命令终端创建Pod查看Pod访问Pod中容器进入Pod内部删除Pod配置文件yaml创建二、Dashboard创建Pod创建多容器的Pod进入容器访问容器应用一、命令终端创建Pod命令格式kubectl run 自定义pod名字 --image=基础镜像示例[root@VM-4-8-centos kubernetes]# kubectl run my-nginx --image=nginxpod/my-nginx created查看Pod简单状态信息[root@VM-4-
2022-02-26 12:12:34
2942
2
原创 【kubernetes系列】master节点部署Pod处于Pending状态
目录一、绪论二、情景再现三、解决方案一、绪论产生问题的原因是master节点部署Pod,导致无法启动;问题描述:Warning FailedScheduling 40s (x28 over 28m) default-scheduler 0/1 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn’t tolerate.二、情景再现部署环境,k8s中的m
2022-02-26 09:07:46
1669
5
原创 【kubernetes系列之安装Dashboard】
目录一、安装dashboard二、集群网络模式三、查看 Dashboard 暴露外网端口四、访问dashboard五、创建账户,生成tokenkubernetes折腾了好久,终于把Dashboard安装成功,其过程踩坑、排错苦不堪言,网上的教程也是百家杂谈,哈哈~,小编也写一下关于图形化管理工具的杂谈,希望能尽快帮助小伙伴们出坑。轻松几步搞定一、安装dashboard注意:安装版本,可以前往GitHub上查询稳定发行版以及与kubernetes兼容;小编安装的最新版本V2.5.0,因为小编的kube
2022-02-25 21:55:52
4458
4
原创 【消息队列之rabbitmq】Rabbitmq之消息可靠性投递和ACK机制实战
目录一、绪论二、生产者2.1事务机制2.2confirm模式串行模式批量模式异步模式三、消费者3.1手动ACK一、绪论上篇文章介绍了rabbitmq的基本知识、交换机类型实战《【消息队列之rabbitmq】学习RabbitMQ必备品之一》这篇文章主要围绕着消息确认机制为中心,展开实战;接触过消息中间件的伙伴都知道,消息会存在以下问题:1、消息丢失问题和可靠性投递问题;2、消息如何保证顺序消费;3、消息如何保证幂等性问题,即重复消费问题等等…本文主要以Rabbitmq消息中间件解决问题一的实践,
2022-01-04 21:57:23
1975
1
原创 【消息队列之rabbitmq】学习RabbitMQ必备品之一
目录一、基础知识二、Rabbitmq消息发送模式1、简单队列2、工作队列3、发布/订阅4、路由模式5、主题模式三、RabbitMQ交换机类型1、Direct exchange2、Fanout exchange3、Topic exchange四、实战1、运行环境2、统一连接类3、简单队列消息模式4、发布/订阅消息模式---交换机fanout类型5、路由模式---交换机direct类型6、主题模式---交换机topic类型五、Rabbit Management1、connections管理2、channel管理
2021-12-19 17:19:56
2115
原创 【redis系列】redisTemplate缓存常用工具类
背景日常开发过程中,大家使用redis缓存基本上是家常便饭,但是代码中使用redisTemplate组件会略显得麻烦,使用时需要开发人员查阅官网文档,具体场景使用哪些方法,会花费相对的时间,故小编为提升开发效率,整理一些基本常用的交互缓存的方法,涉及redis相关的数据结构:String,List,Set,ZSet,应对大家日常开发足以。如果该类中缺失常用的方法,希望小伙伴们评论区留言,及时更新!!!工具类package com.anhuanjia.ehs.ahj.util;import lom
2021-12-07 22:00:36
994
原创 【elasticsearch系列】SpringBoot整合elasticsearch客户端
目录文档ElasticSearch Head实践踩坑点文档Elasticsearch: 权威指南Java REST Client可以跟着官网示例写demo工欲善其事必先利其器,对于ES数据的查看,首先先安装一个谷歌浏览器的插件ElasticSearch Head,便于大家后期确认测试数据是否成功;ElasticSearch Head谷歌浏览器左上角存在一个“应用”标签,进入谷歌的应用商店;搜索""安装成为扩展程序即可;然后打开,输入自己的ES服务地址,连接集群即可;插件安装好之后,进
2021-11-27 13:23:27
2125
原创 六步带你轻松安装MongoDB
目录一、下载二、解压缩三、重命名四、创建数据库和日志目录五、创建并配置mongodb.conf六、启动mongodb安装环境基于centos7版本。一、下载命令直接下载:wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.2.4.tgz二、解压缩命令:tar -zxvf mongodb-linux-x86_64-rhel70-3.2.4.tgz三、重命名命令:mv mongodb-linux-x86_64-rh
2021-11-14 16:26:59
1455
原创 【seata系列】centos服务器带你踩坑搭建seata以及解决MySQL8.0无法启动问题
目录准备配置registry.conffile.conf创建相关表和数据库启动踩坑启动准备通过github下载安装包:https://github.com/seata/seata/releases/tag/v1.3.0seate中文文档:http://seata.io/zh-cn/docs/overview/what-is-seata.html将下载的安装包上传到服务器,解压缩即可;配置进入conf目录,主要修改file.conf和registry.confregistry.conf由于小编
2021-09-29 22:08:00
4007
1
原创 【gateway系列】手把手教你gateway整合nacos注册中心
目录准备Gateway服务Member服务运行往期相关推荐:网关路由规则和nacos配置中心实战:一步步带你学习gateway路由规则实践nacos整合配置中心准备准备引入相关依赖:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>
2021-09-28 20:25:31
3733
原创 【gateway系列】一步步带你学习gateway路由规则实践
目录1、准备微服务项目gateway网关服务2、Path3、Query4、Method5、DateTime6、RemoteAddr7、Header1、准备微服务项目新创建一个springBoot项目作为微服务,简单一个demo,如下:@RestControllerpublic class MemberController { @RequestMapping("/query-demo") public String queryDemo(String name) {
2021-09-27 20:56:03
1986
原创 【kafka系列】centos7系统安装kafka
目录一、准备二、安装与配置三、配置文件详解四、运行1.启动zookeeper服务2.启动kafka服务3.创建topic4.查看topic5.产生消息:kafka-console-producer.sh6.消费消息:kafka-console-consumer.sh7.查看描述 Topic 信息8.删除topic一、准备确保服务器上已经搭建完成JDK,zookeeper服务;如果未搭建完成,请移步参考以下文章:安装zookeeper: https://blog.csdn.net/xuan_lu/ar
2021-09-25 19:53:17
3690
原创 【zookeeper系列】centos7安装zookeeper
目录1、准备2、安装与配置3、运行1、准备zookeeper官网地址:http://zookeeper.apache.org/releases.html下载安装方式使用wget命令行下载wget http://mirror.bit.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz采用下载安装包的方式:https://downloads.apache.org/zookeeper/stable/由于要安装在远程服务器上,故采用第
2021-09-25 18:13:41
3307
1
vs2010简单音频播放器
2018-06-23
Linux环境下Qt环境搭建和编程基础
2018-05-06
vs2010中CSocket类编程
2018-05-06
visual studio1. 实现网络文字聊天的基本功能,要求界面较为友好;
2018-05-06
多媒体数据库
2018-06-23
Qt GUI 文本编辑器
2018-05-06
QT画图工具的使用
2018-05-06
OpenGL 绘制立方体、茶壶、环面等稍复杂的图形
2018-06-23
实验五:定制开发自己的浏览器
2018-05-06
QT网络编程实践
2018-05-06
VMware-workstation-full-14.1.3-9474260.rar
2020-05-26
Qt GUI 组件使用 登录
2018-05-06
实验三:基于UDP的通信服务
2018-05-06
在View中显示“您好,我是XXX文本在View内自左向右循环滚动
2018-06-23
实验四:即时通信应用开发
2018-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅