敏捷开发

是找茬?还是装B?阿里面试每轮必问的“Spring Boot”意义何在?

瘦欲@ 提交于 2021-01-18 17:00:28
如今微服务如日中天,Spring Boot作为构建Spring Cloud全家桶的基础框架,早已经成长为后端的主流技术了,同时它也是Java工程师面试必问的知识点。 这一点呢,我是深有体会,因为每天都有大量读者都会在小编后台给我留言,说希望多分享一些SpringBoot相关的内容,每天也有大量学员检索SpringBoot相关的视频以及学习资料。 所以,今天小编就来给大家带来一波福利!在这篇文章我会推荐一些优质的 Spring Boot 实战书籍 (Spring Boot实战派以及Spring Boot2实战之旅) 帮助大家深入学习 Spring Boot。文章质量的话,大家可以放心。同时,小编还专门为大家准备了一份突击金三银四的面试必备宝典,有想要获取的小伙伴在文末有领取方式!! 废话不多说,我们直奔主题: Spring Boot实战派 入门篇(1~3章) 基础篇(4~6章) 进阶篇(7~13章) 文章重点 Spring Boot 进阶 本章首先介绍AOP、loC、Servlet容器;然后深入讲解自动配置原理、自定义 Starter、自定义注解:最后讲解异常的处理,以及如何进行单元测试 用ORM操作 SQL数据库 集成安全框架,实现安全认证和授权 集成NoSQL数据库,实现搜索引擎 集成Redis,实现高并发 本章首先介绍Redis的原理、概念、数据类型

红灯区:DevOps 建设的思考和实践

旧时模样 提交于 2021-01-17 06:07:49
点击关注“ 有赞coder ” 获取更多技术干货哦~ 作者:费解 团队:效能改进 背景 众所周知,在丰田精益生产中,核心观念包含对人的尊重、消除浪费、持续改善,只有这样,企业才能保持良性运转,竞争力才会提升。而具体的浪费场景,被总结为「制造过剩、等待、搬运、库存、加工、额外动作、次品」七种,后来又增加了「管理」的浪费。 笔者所在效能改进团队,一直致力于精益的实践,从降本增效的角度,来提升有赞软件研发的效能,以应对这个充满不确定性时代的变化的冲击。而彼时的软件研发,从过程管理的角度,已将「项目制」普及到团队之中并持续发挥作用,但从工程实践的角度,虽然各部门都有一些基础设施,但仅为本部门服务,整体处于萌芽阶段,需要有一条主线将各独立的孤岛串接起来,发挥协同的价值。 一、工程实践的现状 1.1 技术债 有赞作为一家初创公司,首要任务是在市场竞争中活下来,所以在技术沉淀方面,于某段时期内处于被动局面,由业务裹挟着往前狂奔,是可以理解的,而且是必须经历的。但可以预见的是,长此以往,就会积累大量的技术债,而且会随着系统复杂度的上升,技术债所带来的研发成本会快速增加,直到它变成一堆无人敢碰的遗留功能。 从精益浪费的视角看,处理技术债就是一种「额外动作」,它是每次研发中一项绕不开的工作,但除了耗费大量人力物力和时间之外,并不产生任何价值。我们亟需掌握目前有多少技术债、风险如何、处理成本如何

Devops下的接口全生命周期质量建设

南笙酒味 提交于 2021-01-16 09:24:26
什么是devops?随着时间的推移,devops的定义也在不断的演进。对于其定义可能出现千人千面,但从核心观点,整体业界还是保持着一致的认识。DevOps不是单一的技术或者工具,甚至不只是一个流程,他包含应用设计、敏捷开发、持续交付和监控运维等一系列流程,涉及到企业文化、团队协作流程等多个方面,它可以被理解为一系列可以高速、高质量进行软件开发的工具链。 结合软件生产全生命周期来看,devops落地实践的 核心目标是缩短开发周期,提高部署频率和更可靠的发布。 DevOps的诞生源于企业要适应这个瞬息万变的市场,能够做到持续交付。正如《持续交付2.0》作者在书中精炼的2个环:价值探索和快速验证。 快速验证环的 两个核心关键是质量与速度 它会要求以最可靠的质量和最快的速度,交付最小可行方案,可靠地收集真实反馈,来形成这样的闭环。对于质量来讲一个核心的实践就是质量内建,有一个公认的事实。那就是在整个持续交付全生命周期过程中,缺陷越滞后发现,所需要的成本就越高。质量内建就是要从生产过程中的第一个环节开始,就要注重产出物的质量,并且在每个环节中都要去开展质量保障活动,这就要求在软件全生命周期参与的各个角色都需要实时的对软件的质量负责。确保软件在交付到下一个环节前有了基础的质量保障。其核心目的就是减少因为质量问题导致的返工,避免浪费大量人力成本。 速度

『互联网架构』软件架构-软件环境的持续发布管理(上)

生来就可爱ヽ(ⅴ<●) 提交于 2021-01-14 16:30:14
这次就走到软件的最后一站,哈哈,就是把软件给发布部署到服务器上。其实在部署的过程中,尤其现在微服务架构的盛行,软件本身喜欢用什么敏捷开发,导致持续发布的困难也是相当的大,原来不管项目怎么整,只要最后把项目部署好,可以正常的访问这个项目就部署好了。但是一旦把项目拆的很散,拆的很多个服务的时候,这时候想部署起来真的不是一个简单的事情。需要使用科学的方法和经验把这个事情搞定。 大规模系统发布所面临的问题 尤其现在很多领导都喜欢敏捷开发,敏捷开发就导致本来要一个星期开发的功能,他给你说2天。为什么要2天,敏捷开发就是快,敏捷开发本身就是有问题的。 现在很多公司是如何发布的。多久发布一次。 身边的几种情况 1.自己打包,给领导一说就直接发布了。领导说什么时候上就什么时候发布。 2.告诉运维人员项目git的位置,通知运维上线运维拉取,运维人员发布到生产环境。(如果项目几百,几十个,告诉运维,运维需要多大体积的团队啊) 3.每天都有小更新,每天都在发布。 4.项目发布用了jenkins工具,通过它进行自动化的构建发布。 说说身边的发布中存在的问题 1.本来问题没有的,参数写错了。 2.依赖的项目没有发布,自己先发布了 3.依赖版本的项目本身不在本次发布,结果自身项目依赖那个项目的功能 4.运维人员把测试环境的代码发布到生产环境了 回滚导致的事故 回滚,一般很难做到如果单纯是代码级别的还好说

20165312 2017-2018-2《Java程序设计》课程总结

断了今生、忘了曾经 提交于 2021-01-13 22:02:44
20165312 2017-2018-2《Java程序设计》课程总结 每周作业链接汇总 预备作业1 :我期望的师生关系 预备作业2 :C语言基础调查和java学习展望 预备作业3 :Linux安装与学习 第一周学习总结 :学习教材第一章内容,了解Java基础知识;学习使用JDK调试程序和Git上传码云 第二周学习总结 :学习教材第二、三章内容,掌握基本数据类型和java流程控制方法(分支、循环) 第三周学习总结 :学习教材第四章内容,掌握有关“类”的知识 第四周学习总结 :学习教材第五、六章内容,掌握有关继承、接口的知识 第五周学习总结 :学习教材第七、十章内容,掌握内部类与异常类、输入流与输出流的知识 第六周学习总结 :学习教材第八、十五章内容,掌握有关String类和链表、堆栈的知识点 第七周学习总结 :学习教材第十一章内容,掌握有关数据库的知识点 结对编程——四则运算week1 :实现一个命令行程序,要求:自动生成小学四则运算题目(加、减、乘、除)并测试结果的正确性 第八周学习总结 :学习教材第十二章内容,掌握java多线程机制 结对编程——四则预算week2 :在第一周的基础上,实现真分数的加减乘除运算 第九周学习总结 :学习教材第十三章内容,学习网络编程的相关知识(服务器和客户端) 《Java程序设计》课程总结 我认为写的最好的一篇博客是 预备作业3

接口测试用例设计

笑着哭i 提交于 2021-01-13 16:01:07
接口测试概述 定义 API testing is a type of software testing that involves testing application programming interfaces (APIs) directly and as part of integration testing to determine if they meet expectations for functionality, reliability, performance, and security. Since APIs lack a GUI, API testing is performed at the message layer.[2] API testing is now considered critical for automating testing because APIs now serve as the primary interface to application logic and because GUI tests are difficult to maintain with the short release cycles and frequent changes commonly used with Agile software

敏捷的目的(方向)错了以后……

你说的曾经没有我的故事 提交于 2021-01-10 00:34:10
Scrum之类的框架非常适合解决业务问题,并且公司不断过渡到敏捷以实现目标。但是,如果他们忘记了敏捷只是一种方法论(一种实现目标的手段)而不是目标本身,就会出现问题。 斯科特-邓恩(Scott Dunn)写了一篇很棒的文章,讲述了与 管理层突然"变得敏捷"的决策 有关的陷阱(和恐惧)。它反映出它是一个简单的实现方式(如更换供应商),而不是一个需要在观念上进行重大改变的框架,这是一种错觉。 "亚马逊正在这样做。" 这些都是很好的指标,表明企业尚未明确定义为什么要使用敏捷,以及"为什么?" 与公司合作过渡到敏捷或教学 认证的Scrum课程 时,这是我首先要提出的问题之一。 我经常得到诸如以下的答案: 我们想迅速适应变化 我们要不断改进 我们想更定期地交付 从表面上看,这些听起来像是伟大的目标,并且与我们从敏捷方法学中期望的结果一致。 但是,即使你没有明确定义目标,但即使听起来不错的目标也会引起问题和挫败感。 你怎么知道你选择了正确的目标? 假设我的朋友告诉我他想在未来12个月内再赚10万美元。我可能会鼓励他对这个目标进行压力测试,看看这是否是他真正想要的。 " 五个为什么" 是一种发现问题的根本原因的公知方法,它也可以很好地发现追求目标的根本动机。 如果我问我的朋友为什么他要这10万美元,他可能会回答说这是为了改善自己的地位,或者他说他想彻底改造自己的房屋。 如果我们再加上一个"为什么

Java 测试驱动开发--“井字游戏” 游戏实战

≯℡__Kan透↙ 提交于 2021-01-09 10:42:49
TDD 介绍 TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的核心实践,但不只适用于XP(Extreme Programming),同样可以适用于其他开发方法和过程。 -- 百度百科 <br> ### 准备工具 TDD只是一种开发模式,它并没有用到新的技术。 Java : 因为它是主流的编程语言,应用广泛,相关实践也非常多。 IntelliJ-IDEA : Java 主流IDE(集成开发工具)。 JUnit : Java 主流单元测试框架,当然,你选择 TestNG 也是完全可以的。 Gradle : 构建工具。 <br> #### TDD 开发模式 <font color="red">“ 红灯 -- 绿灯 -- 重构 ”</font> 流程是TDD的基石。 这个过程就像打乒乓球,快速的在测试代码和实现代码之间切换。 TDD 开的过程: 每次只考虑一个需求。首先编写一个测试,看看它是否未通过;然后编写实现这个测试的代码,运行所有测试并验证它们是否全部通过;最后,通过重构改进代码。不断重复这个过程,直到成功实现所有需求。 <br> ### 需求 本系列实战 “ 井字游戏 ”

软件测试从业者的35岁怎么办?

我的梦境 提交于 2021-01-03 07:45:51
你肯定经常在会议室看到这样的场景: 线上出了 Bug 召集会议复盘,开发指责测试没测出来,没把好质量关; 测试抱怨开发不做单元测试,要不早发现了。 结果往往是大家写个改进报告, 测试保证添加相关测试用例并补充到回归测试集,开发承诺以后做好自测, 提交了事。 你应该做什么样的测试人? 但这样,真的对工作改进或者测试人员成长有帮助吗? 或者可以说公司真的需要你这样的测试么? 在这个 5G 时代,“快”是唯一的标准,软件研发的交付也要快,对业务来说做到持续集成、持续交付,才能满足需求。 之前看了一个 统计 ,在 2018 年初全球已有 91% 的软件开发采用了敏捷开发,而现在已经 2020 年了,国内有更多的企业采用了敏捷开发模式, 但遗憾的是,真正理解“敏捷”的初心和目标的管理者和测试人寥寥无几。 很多时候,你不知道什么是 BDD(行为驱动开发),但却在使用 BDD 的自动化测试框架; 也不知道看板和敏捷的关系,但每天都在公司的项目管理工具里,处理电子看板上的测试任务。 大部分测试人知道敏捷测试,也有敏捷测试的意识。 但受限于自身的理解和企业的使用,也就不了了之了。 敏捷测试本身涉及很多东西,它包含了人员、组织、技术、方法、流程和工具等各个方面。 敏捷测试的思想和方法到底是什么? 很遗憾,这件事情我也苦恼了一下, 因为市面上基本没有一套严谨的中文教材可以给我答案。 直到我看到了

如何面对焦虑:测试人的35岁怎么办?

核能气质少年 提交于 2021-01-03 07:36:37
你肯定经常在会议室看到这样的场景: 线上出了 Bug 召集会议复盘,开发指责测试没测出来,没把好质量关; 测试抱怨开发不做单元测试,要不早发现了。 结果往往是大家写个改进报告,测试保证添加相关测试用例并补充到回归测试集,开发承诺以后做好自测,提交了事。 你应该做什么样的测试人? 但这样,真的对工作改进或者测试人员成长有帮助吗? 或者可以说公司真的需要你这样的测试么? 在这个 5G 时代,“快”是唯一的标准,软件研发的交付也要快,对业务来说做到持续集成、持续交付,才能满足需求。 之前看了一个 统计 ,在 2018 年初全球已有 91% 的软件开发采用了敏捷开发,而现在已经 2020 年了,国内有更多的企业采用了敏捷开发模式, 但遗憾的是,真正理解“敏捷”的初心和目标的管理者和测试人寥寥无几。 很多时候,你不知道什么是 BDD(行为驱动开发),但却在使用 BDD 的自动化测试框架; 也不知道看板和敏捷的关系,但每天都在公司的项目管理工具里,处理电子看板上的测试任务。 大部分测试人知道敏捷测试,也有敏捷测试的意识。 但受限于自身的理解和企业的使用,也就不了了之了。 敏捷测试本身涉及很多东西,它包含了人员、组织、技术、方法、流程和工具等各个方面。 敏捷测试的思想和方法到底是什么? 很遗憾,这件事情我也苦恼了一下, 因为市面上基本没有一套严谨的中文教材可以给我答案。 直到我看到了