Amp

【DevCloud · 敏捷智库】如何拆分用户故事

£可爱£侵袭症+ 提交于 2020-08-07 21:11:37
提起用户故事拆分,我们听得最多的就是INVEST原则(关于INVEST原则可以参考文章 “用户故事等于需求说明”——你一定没有写好用户故事 ),但很多人面临的问题是拿到一个较大的用户故事时,该如何拆分才能使得它满足Small的原则呢?接下来,就和大家一起讨论一下如何拆分用户故事。 首先,拆分可以参考以下流程:评估待拆分用户故事-按方法拆分-评估拆分结果。(文末有彩蛋,不要错过) 评估待拆分用户故事 拆分前,我们需要知道手中的用户故事是否需要拆分,就是目前是否已经符合了Small的原则。我们推荐一个用户故事在1-2天内能完成,最多不超过3天,则符合Small原则。有些地方给出的说法是1/5-1/10团队速率,这个算法和你每个迭代天数以及团队成员数有关系,所以我个人还是喜欢简单的说,1-2个工作日能完成算Small。在这种情况下如果你的用户故事已经符合了INVEST其他原则的话,那就没必要拆成多个用户故事了,因为再拆就增加了管理成本(这里不包括拆成多个task,task可以再多拆分的)。 好,当你已经根据上面评估了用户故事,发现依旧需要拆分的话,那么可以按下面方法进行拆分。 按方法拆分 目前业界比较好的方法是Richard Lawrence的方法,原文请参考https://agileforall.com/patterns-for-splitting-user-stories/

mybatis xml执行多条语句

点点圈 提交于 2020-08-07 19:34:27
Mysql: 数据连接开启多条语句处理 在url后面加入allowMultiQueries=true url: jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&allowMultiQueries=true` //每条sql以分号结束 <delete id="delete"> delete from table1 where id = 1; delete from table2 where id = 2; <delete> ORACLE: //每条sql以分号结束,end也是分号结束 <delete id = "delete"> begin delete from table1 where id = 1; delete from table2 where id = 2; end; <delete> 来源: oschina 链接: https://my.oschina.net/Javaxiaoxiu/blog/4331386

618 Tech Talk| 2692 亿狂欢背后 只需这8步就可做好大促备战

坚强是说给别人听的谎言 提交于 2020-08-07 19:31:12
云妹导读: 本文是京东智联云云产品研发部专家架构师,云数据库研发负责人,《MariaDB原理与实现》作者张成远为大家分享的关于京东618大促前期技术人的“备战”手册。同时,内容中也提到了京东智联云在支持整个京东集团大促活动的成长之路。希望大家可以通过这篇内容,有所获益。 从2012年毕业加入京东起,到现在已近8年。在这8年里,见证了太多的变化:从最初各业务各自维护中间件、缓存到今天的云上统一按需分配;从每逢上线就要求运维同学帮忙到现在研发可以自主一键上线;从用物理机线上部署业务到如今拥有全球最大的docker集群;从当初的.net、SQL Server、Oracle切换到Java、MySQL时代。在这个过程中京东基础设施系统从几乎零基础到如今涵盖人工智能、云计算、物联网、大数据等多种前沿技术的京东智联云,承载了包括京东零售、京东物流等在内的数千个业务系统。 在刚刚落幕的第 17 个京东 618 大促中,京东智联云作为京东 618 的技术基石,起到了极其重要的保障作用。618大促作为京东创立的的电商活动,经历过这些年的发展,已经变成整个电商领域的盛大节日。我们也在多次的大促备战工作中,积累了丰富的经验,本篇文章我就和大家聊一聊关于618大促备战的支持工作。 早些年时候,考虑到采购机器需要一定周期,通常每年第一个季度就会开始评估当年618大促的业务量,等到四五月份机器到位以后

Integer的数值比较

99封情书 提交于 2020-08-07 19:28:48
如果比较两个 数值相等 的Integer类型的整数,我们可能会发现,用“==”比较( 首先你必须明确“==”比较的是地址 ),有的时候返回true,而有的时候,返回false。比如: Integer i = 128; Integer j = 128; System.out.println(i == j);//返回false Integer m = 127; Integer n = 127; System.out.println(m == n);//返回true 为什么会出现这种请况呢,因为Integer i = 128;这种方式赋值,会调用valueOf方法。我们发现这里做了一些关于IntegerCache的操作。让我们先看下valueOf的源码: public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } IntegerCache源码: private static class IntegerCache { static final int

填报表怎么跟踪用户操作,记录日志?

谁都会走 提交于 2020-08-07 19:10:49
大多数报表工具中填报一般只能做基本的数据增删改操作,不提供记录用户操作的功能,但基本都提供了提交的接口方法,可供二次开发修改。 实现思路: 在数据库中新增一张操作日志表,用于保存操作的用户信息。 通过代码自定义方法向数据库插入数据。 其中,自定义方法所做处理如下: 首先,获取当前报表数据库链接,并记录被操作填报表的初始状态保存至对象 A 中; 然后,在操作提交入库前再次截取 web 页面的数据状态保存至对象 B 中; 最后,通过 for 循环对比对象 A、B 找出被操作的记录,并将该记录与当前操作人、操作时间插入操作日志表中。 这样虽可以实现,但处理起来还是比较繁琐。而润乾报表这块处理就简单多了,不需要大量写代码,只需使用脚本内置的函数,找出新旧对象的差异,对应更新到数据库表或者文件中即可。 详细设置可参考: 填报表值数据留痕 数据采集录入填报时如何只更新当前修改行 来源: oschina 链接: https://my.oschina.net/u/3651044/blog/4298462

【融职培训】Web前端学习 第11章 微信开发2 微信登录

随声附和 提交于 2020-08-07 15:33:00
一、概述 在web开发中,我们经常会让网站接入微信登录功能,这样用户免于注册账号,网站开发人员也可以更为方便地获取到用户信息。 微信登录可以分为两种情况,一种是网站的扫码登录,另一种是在微信浏览器中直接登录,本节我们就讲解如何在自己的网站上接入微信登录功能。 一、网站扫码登录置流程 开发文档 具体的开发流程官方文档已经给出了详细的说明,但是文档更关注的是严谨和全面,本节的内容更倾向于简单易懂。下面介绍一下扫码登录的开发流程。 首先我们要有一个注册并认证的微信开放平台账号(认证要300元人民币)。注册和认证成功之后,如下图所示进入【网站应用】。首次进入之后下方是空白,需要点击【创建网站应用】。然后根据提示加入自己的网站,下图为加入完成后的效果。 点击【查看】可以看到详细内容,【接口信息】需要申请,申请通过之后才可以开通。 开通之后,就可以调用开放平台的接口实现微信登录功能了。 二、调用接口实现扫码登录。 网站微信扫码登录流程 网站跳转到以下链接:注意连接中的两个参数 appid:微信开发平台提供的appid redirect_url:用户扫码登陆后跳转的地址 https: // open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope

第七章-排序 选择排序

五迷三道 提交于 2020-08-07 15:13:31
#include <stdio.h> #include "tool.h" /* 选择排序算法: 1.从第一个元素开始,从后续待排序序列中选择最小的元素放在第一个位置 2.然后第二个元素,从后续待排序序列中选择最小的元素放在第二个位置 3.依次类推 算法复杂度:O(N^2) */ void simpleSelctionSort(int a[],int len) { int minIndex; int i, j; for (i = 0; i < len-1; i++) { minIndex = i; for (j = i + 1; j < len; j++) { if (a[j] < a[minIndex]) { minIndex = j; } } if (minIndex != i) { swap(&a[i], &a[minIndex]); } } } int main() { int a[10] = { 9,1,8,5,7,6,4,3,10,2 }; int len = sizeof(a) / sizeof(a[0]); printf("排序前: "); printfArray(a, len); simpleSelctionSort(a, len); printf("排序前: "); printfArray(a, len); return 0; } 来源: oschina 链接:

Linux nohup命令详解,终端关闭程序依然可以在执行!

安稳与你 提交于 2020-08-07 15:04:26
大家好,我是良许。 在工作中,我们很经常跑一个很重要的程序,有时候这个程序需要跑好几个小时,甚至需要几天,这个时候如果我们退出终端,或者网络不好连接中断,那么程序就会被中止。而这个情况肯定不是我们想看到的,我们希望即使终端关闭,程序依然可以在跑。 这时我们就可以使用 nohup 这个命令。 nohup 命令是英语词组 no hangup 的缩写,意思是 不挂断 ,也就是指程序不退出。这个命令会使程序忽略 HUP 信号,保证程序能够正常进行。 HUP 信号有些人可能比较陌生,它是在终端被中止的时候向它所关联的进程所发出的信号,进程收到这个信号后就会中止运行。所以如果你不希望进程被这个信号干掉的话,就可以忽略这个信号。而 nohup 命令做的就是这个事情。 本文我们将详细介绍 nohup 命令的具体用法。 nohup命令基本语法 nohup 命令的基本语法如下: $ nohup command arguments 或者: $ nohup options 如果你想要得到更多关于 nohup 的用法介绍,可以查看它的帮助页面: $ nohup --help 如果你需要查看它的版本号,可以使用 --version 选项。 $ nohup --version 使用nohup命令启动一个程序 如果你需要运行一个程序,即使对应的 Shell 被退出后依然保持运行,可以这样使用 nohup

C语言探索之旅 | 第二部分第二课:进击的指针,C语言的王牌!

▼魔方 西西 提交于 2020-08-07 13:25:52
>作者 谢恩铭,公众号「程序员联盟」(微信号:coderhub)。 转载请注明出处。 原文: https://www.jianshu.com/p/e5e685b67501 > 《C语言探索之旅》 全系列 内容简介 前言 棘手的问题 内存,地址的问题 指针的使用 传递指针给函数 谁说“棘手的问题”了? 总结 第二部分第三课预告 1. 前言 上一课是 C语言探索之旅 | 第二部分第一课:模块化编程 。 终于来到了这一刻(课)。是的,这一课我们就来学习《C语言探索之旅》的重头戏中的重头戏: 指针 ! >* 如果把这个系列课程比作寻宝之旅的话,那么指针就是最贵重的那个宝藏。 >* 如果把 C语言比作一棵佳美的葡萄树,那么指针就是那累累硕果; >* 如果把 C语言比作太阳系,那么指针就是我们美丽的地球; >* 如果把 C语言比作人的一生,那么指针就是令人神往的爱情; >* 如果一定要在这份爱上加一个期限,我希望是一万年... “不好意思,又跑题了~” 总而言之,言而总之,一起来享用这份精心烹制的指针大餐吧! 在开始这一课前,请深吸一口气,因为这一课可能不会像之前那些课一般“悠哉”了。 指针也许是 C语言设计最出彩的地方了,也是精华部分。如果没有了指针,C语言也会黯然失色。 可能你觉得我有点夸大其词,但是在 C语言的编程中,指针是随处可见的,使用很广泛,所以我们不得不来吃掉这个“烫手山芋”。

云小课 | 磁盘容量不够用?小课教你来扩容!

旧时模样 提交于 2020-08-07 13:17:19
摘要: 当已有云硬盘容量不足时,可以扩容云硬盘,扩容云硬盘分为在“正在使用”状态扩容和“可用”状态扩容两种,扩容结束后需要扩展分区和文件系统。我们一起来看下具体怎么操作吧! 很多朋友在使用云服务时会面临 “云硬盘容量不够”的困扰,目前常用的解决方法有三种: 创建一块新的云硬盘,并挂载给云服务器。 扩容原有云硬盘容量。系统盘和数据盘均支持扩容。 清理云硬盘的空间。 打个比方帮助大家理解三者的区别: 你在北京五道口有一套两室一厅的房子(想想是不是有点小激动?),突然你想让父母搬来一起住方便照顾。新建云硬盘相当于在五道口再买一套房子,但是不能时刻照顾到二老;清理云硬盘就是把你家的小储物间打扫出来让二老住进去;扩容云硬盘就是把现在的房子变成三室一厅。这么一比,最巴适的方法还是扩容云硬盘撒~ 系统盘扩容上限是2TB,数据盘扩容上限是32 TB,大家扩容时按需进行,保护钱包。 注意:云硬盘只支持扩容,不支持缩容。 (牢牢记住,别问为啥) 好了,正式进入主题!扩容云硬盘一共分为三步: 查看云硬盘状态-扩容云硬盘-扩展磁盘分区和文件系统 前提条件 已经通过CBR或者快照功能备份数据。扩容云硬盘不会清空数据,备份数据目的是防止误操作造成数据丢失。 第一步:查看云硬盘状态 登录华为云管理控制台。 单击服务列表,选择“存储 > 云硬盘”。 进入“云硬盘”页面,查看想要扩容的云硬盘的状态。 状态为“可用”