Browsed by
标签:Git

敏捷过程中如何保证代码质量

敏捷过程中如何保证代码质量

閱讀本文約花費: 10 (分鐘)本文目录: 一、为什么要做代码质量分析 二、常见的代码质量分析工具 三、DevOps平台中的代码质量分析 四、DevOps平台中如何为代码质量提供保障 一、为什么要做代码质量分析 在软件开发过程中,当一个功能开发完成后,如何去保证代码是可用的、没问题的?一般情况下,基本都会有单元测试、每日构建、功能测试等环节来保证。但是,保证代码可用就够了吗?显然不是。 一个软件项目开发完一个版本会有下一个版本,会有新的需求,原来的功能也可能会变更。你写的代码可能会被别人使用,你也可能需要修改别人写的代码。如果只考虑代码的可用性,不考虑代码质量,那么后期遇到的问题其维护成本将会很高,不利于版本迭代。为了避免或减少维护和迭代成本,重视代码质量,做好代码质量分析和管控是最好的方式。 二、常见的代码质量分析工具 既然要做代码质量分析,那我们先看看常用的代码分析工具。 PMD: 注重检查源文件中的潜在问题,可以检查Java代码中是否有未使用的变量、私有方法,是否有空的try/catch、是否过于复杂的表达式等等。 CheckStyle:注重代码格式、代码规范,通过检查编码格式、命名约定、Javadoc、类设计等方面进行代码规范和风格的检查,从而有效约束开发人员更好地遵循代码编写规范,提供常见IDE的插件,如eclipse,IDEA等。 FindBugs:注重检测潜在的Bug…

Read More Read More

再有人问你分布式事务,把这篇扔给他

再有人问你分布式事务,把这篇扔给他

閱讀本文約花費: 24 (分鐘)前言 不知道你是否遇到过这样的情况,去小卖铺买东西,付了钱,但是店主因为处理了一些其他事,居然忘记你付了钱,又叫你重新付。又或者在网上购物明明已经扣款,但是却告诉我没有发生交易。这一系列情况都是因为没有事务导致的。这说明了事务在生活中的一些重要性。有了事务,你去小卖铺买东西,那就是一手交钱一手交货。有了事务,你去网上购物,扣款即产生订单交易。 事务的具体定义 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚。简单地说,事务提供一种“要么什么都不做,要么做全套(All or Nothing)”机制。 数据库本地事务 ACID 说到数据库事务就不得不说,数据库事务中的四大特性,ACID: A:原子性(Atomicity) 一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 就像你买东西要么交钱收货一起都执行,要么要是发不出货,就退钱。 C:一致性(Consistency) 事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。如果事务成功地完成,那么…

Read More Read More

我是如何一步一步监控公司MySQL的每一个操作?

我是如何一步一步监控公司MySQL的每一个操作?

閱讀本文約花費: 11 (分鐘)作为一个程序员,闲下来还是喜欢学习钻研一些新奇的技术,canal就成了很好的研究对象,一不小心就监控了公司MySQL的一举一动的 一、canal是个啥? canal是阿里开发的一款基于数据库增量日志解析,提供增量数据订阅与消费的框架,整个框架纯JAVA开发,目前仅支持Mysql和MariaDB(和mysql类似)。 那什么是数据库增量日志? MySQL的日志种类是比较多的,主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志。而MySQL数据库所发生的数据变更(DML(data manipulation language)数据操纵语言,也就是我们熟悉的增删改),都会以二进制日志(binary log)形式存储。 二、canal原理 在介绍canal原理之前,我们先来回顾一下MySQL主从同步的原理,这或许会让你更好的理解canal的工作机制。 1、MySQL主从同步原理: MySQL主从同步也叫读写分离,可以提升数据库的负载和容错能力,实现数据库的高可用 先来分析一张MySQL主从同步原理图: image 以上图片源自网络,如有侵权联系删除 master节点操作过程: 当master节点数据发生更改后(delete、update、insert,还是创建函数、存储过程等操作),向binary log中写入记录日志,这些记录又叫做二进制日志事件…

Read More Read More

使用Kubernetes实现高级调度技术

使用Kubernetes实现高级调度技术

閱讀本文約花費: 14 (分鐘)使用Kubernetes这样的高级容器编排工具的优势之一就是,它的调度程序非常灵活。这为用户提供了广泛的选择,可以用来指定将Pod分配给满足条件的特定工作站节点的环境,而不仅仅基于节点的可用资源。为了解释Kubernetes如何决定将pod放置在正确的主机上,我们可以看一下Kubernetes master及一些组件的简化图: 主API(kube-apiserver)是一种提供对集群需求和当前状态进行读/写的工具。像调度程序这样的组件可以使用主API检索当前状态信息,应用一些逻辑和计算,并使用有关所需状态的新信息更新API(例如,指定要将哪个节点安排到新pod,或者指定哪个pod应该移动到另一个节点)。另外,集群用户和管理员可以更新集群状态或通过Kubernetes仪表板查看它,该仪表板对外提供API。CI / CD管道还可以使用API创建新资源或修改现有资源。 其他调用api的主要角色是名为“kubelets”的代理节点,它在工作节点上管理容器运行状态(通常为Docker)。当Kubelet判断出要报告的主机预期状态与其实际状态之间存在差异时,它将启动或终止需要的容器以达到主API描述的目标状态。Kubelets经常查询API,或者观察它们的变化,这就是为什么Kubernetes对更新和更改的响应几乎是即时的。(几秒钟)。 正如我们所看到的,Kub…

Read More Read More

docker cheatsheet

docker cheatsheet

閱讀本文約花費: 1 (分鐘)Docker Cheat Sheet Build Build an image from the Dockerfile in the current directory and tag the image docker build -t myimage:1.0 . List all images that are locally stored with the Docker Engine docker image ls Delete an image from the local image store docker image rm alpine:3.4 Share Run Run a container from the Alpine version 3.9 https://www.docker.com/sites/default/files/d8/2019-09/docker-cheat-sheet.pdf List Of Docker Commands: Cheat Sheet Docker CheatSheet | Docker 配置与实践清单 https://cloud.tencent.com/developer/article/1395434 Docker CLI cheatsheet https://devhints.io/docker …

Read More Read More

Kubernetes(k8s)容器运行时(CRI)简介

Kubernetes(k8s)容器运行时(CRI)简介

閱讀本文約花費: 11 (分鐘)Kubernetes节点的底层由一个叫做“容器运行时”的软件进行支撑,它负责比如启停容器这样的事情。最广为人知的容器运行时当属Docker,但它不是唯一的。事实上,容器运行时这个领域发展迅速。为了使Kubernetes的扩展变得更容易,我们一直在打磨支持容器运行时的K8s插件API:容器运行时接口(Container Runtime Interface, CRI)。 CRI是什么? 每种容器运行时各有所长,许多用户都希望Kubernetes支持更多的运行时。在Kubernetes 1.5发布版里,我们引入了CRI–一个能让kubelet无需编译就可以支持多种容器运行时的插件接口。CRI包含了一组protocol buffers,gRPC API,相关的库,以及在活跃开发下的额外规范和工具。CRI目前是Alpha版本。 支持可替换的容器运行时在Kubernetes中概念中并非首次。在1.3发布版里,我们介绍了rktnetes项目,它可以让rkt容器引擎作为Docker容器运行时的一个备选。然而,不管是Docker还是Rkt都需要通过内部、不太稳定的接口直接集成到kubelet的源码中。这样的集成过程要求十分熟悉kubelet内部原理,并且还会在Kubernetes社区引发巨大的维护反响。这些因素都在为容器运行时的初期造成了巨大的困难。我们通过提供一个清…

Read More Read More

图解git原理与日常实用指南

图解git原理与日常实用指南

閱讀本文約花費: 25 (分鐘) 本文首先从了解版本控制系统开始介绍,深入git原理 ,接着介绍HEAD、branch、引用的本质以及push的本质 ,最后进行git操作,希望本文对您的学习有所帮助。 缘起 读了“扔物线”老师的小册《Git 原理详解及实用指南》感觉收获良多,于是想写点东西做一个总结,即加深自己的印象也希望能给社区小伙伴一点帮助,写的不对的地方还请多多指导。身为一个初入前端半年的菜鸟,由伊始的只知道git是用来托管代码的工具到逐步了解中央版本控制系统与分布式版本控制系统(git)的原理与区别;从之前只会基本的add、commit、pull、push操作到使用stash、merge、reset方便得不亦乐乎,都得益于对git原理的深入理解,逼话少说,咋们直接进入正题。前方长篇预警… 从了解版本控制系统开始 所谓版本控制,就是在文件修改的历程中保留修改历史,可以方便的撤销(如同文本编辑的撤销操作一般,只是版本控制会复杂的多)之前对文件的修改。一个版本控制系统的三个核心内容:版本控制(最基本的功能),主动提交(commit历史)和远程仓库(协同开发)。 中央式版本控制系统(VCS) 工作模型 1.主工程师搭好项目框架 2.在公司服务器创建一个远程仓库,并提交代码 3.其他人拉取代码,并行开发 4.每个人独立负责一个功能,开发完成提交代码 5.其他人随时拉取代码…

Read More Read More

小姐姐用动画图解 Git 命令,这也太秀了吧?

小姐姐用动画图解 Git 命令,这也太秀了吧?

閱讀本文約花費: 6 (分鐘) 本文主要挑选几个最简单的例子来讲解Git 实操基础,希望可以加深对具体 Git 命令的操作理解。本文来自于微信公众号GitHubDaily, Git 作为居家必备、团队协作之利器,自从 Linus Torvalds 发布这款工具后,便一直受到各路开发者的喜爱。 不过,尽管如此,小 G 还是经常能在公众号后台,看到有不少水友留言反馈,说 Git 里面太多干巴巴,看起来非常枯燥无味的命令行,一旦几天没用,就很容易就忘得一干二净,希望 GitHubDaily 能出一些与 Git 相关的辅助教程,或者比较有趣、对小白比较友好的学习方式。 emmm.. 作为有求必应的小 G,当然是选择尽可能满足大家的一切要求啦。 几天前,小 G 偶然在 Twitter 看到一篇文章:《CS Visualized: Useful Git Commands》。 作者是来自英属哥伦比亚的小姐姐 Lydia Hallie,在这篇文章里面,她通过生动形象的动画,以更加直观的方式,向开发者展示 Git 命令中的 merge、rebase、reset、revert、cherry-pick 等常用骚操作的具体原理。 接下来,小 G 会挑选几个最简单的例子,让你们看看这位小姐姐是如何用动画来进行展示的。 在开始之前,还是得先跟大家简单说一下,这篇文章不算是针对小白萌新的 Git 初级入门文章,…

Read More Read More

甲骨文:有史以来最伟大的25个Java应用程序

甲骨文:有史以来最伟大的25个Java应用程序

閱讀本文約花費: 22 (分鐘)作者 | Alexa Morales译者 | 刘雅梦策划 | TinaJava 的故事始于 1991 年,当时 Sun Microsystems 试图将其在计算机工作站市场的领先地位扩展到新兴且发展迅速的个人电子产品市场。几乎没有人预料到 Sun 即将创建的编程语言会使计算大众化,激发了一个全球范围的社区,并成为了一个由语言、运行时平台、SDK、开源项目以及许多工具组成的持久软件开发生态系统的平台。经过 James Gosling 领导的数年秘密开发之后,Sun 于 1995 年发布了具有里程碑意义的“一次编写,随处运行” 的 Java 平台,并将重点从最初的交互式电视系统设计转到了新兴的万维网应用程序上。在本世纪初,Java 就已经开始为从智能卡到太空飞行器的一切制作动画了。 如今,数以百万计的开发人员在使用 Java 编程,Java 仍然在以越来越快的步伐向前发展。在 Java 诞生 25 周年之际,Java Magazine(Oracle 的双月刊)联合 Oracle Java 开发团队,共同撰文回顾 Java 是如何塑造我们这个星球的。 以下是迄今为止,最具创意和影响力的 25 个 Java 应用程序, 包含了从 Wikipedia Search 到美国国家安全局的 Ghidra 等。这些应用包罗万象,覆盖了包括:太空探索、视频游戏…

Read More Read More

OpenStack 开发入门

OpenStack 开发入门

閱讀本文約花費: 5 (分鐘)什么是 OpenStack? 官方网站给出的定义是: OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface. 粗略翻译:OpenStack 是一个可以控制整个数据中心里大量的计算、存储和网络资源池的云操作系统,它通过一个既能赋予管理员控制资源的能力,也能让普通用户调配资源的可视化控制面板(Dashboard)来管理这一切。 Openstack 介绍 对开发者来说,我们需要知道的是,OpenStack 是由一系列开源组件构成的基础设施即服务(Infrastructure as a Service,简称IaaS)范畴的云平台解决方案,它让用户方便的构建和管理自己的云平台,它正在解决以及将要解决的主要问题就是如何自动管理物理主机上虚拟出来的虚拟机和虚拟资源。 虚拟资源…

Read More Read More