自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Difffate的技术随笔

简洁为本。ps:好记性,不如烂笔头。

  • 博客(26)
  • 收藏
  • 关注

原创 Mockito 学习篇(三)

接上篇:Mockito 学习篇(二)import org.junit.Assert;import org.junit.Test;import org.junit.runner.RunWith;import org.mockito.Mock;import org.mockito.Mockito;import org.mockito.Spy;import org.mockito

2017-08-29 09:52:17 724

原创 Java 使用链表来实现队列功能

/** * 链表元素定义 * Create by zxb on 2017/8/27 */public class Element { private Element next; private T value; public Element getNext() { return next; } public void setN

2017-08-28 00:40:17 2392

原创 Mockito 学习篇(二)

接上篇:Mockito 学习篇(一)import org.junit.Test;import org.junit.runner.RunWith;import org.mockito.ArgumentCaptor;import org.mockito.Mock;import org.mockito.invocation.InvocationOnMock;import org.mocki

2017-08-27 16:37:33 1318

原创 Mockito 学习篇(一)

Mockito是单元测试的利器,对多种测试场景有良好的支持,因此有必要了解他是如何使用的。来,直接看下列代码示例:import org.junit.After;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.mockito.ArgumentMatcher

2017-08-26 18:07:44 1658

原创 同敏捷前辈聊天的一些记录

敏捷管理说到底还是项目管理,对人的管理,强调自管理;自管理是个主动的过程,团队成员是一体的,主动拉任务、主动找问题、主动要求做的更好;敏捷真正实践,需要大家有共同的项目目标,团队能达到自组织的状态;敏捷对人的要求很高,当时他们的团队几乎能达到互为B岗;可以把敏捷的实践方法融合到现在的工作中,但是不能简单的认为现在就是完整/实际意义上的敏捷了,因为现在面对的问题是,人员在项目中流动太

2017-08-26 17:41:39 346

原创 敏捷实践总结

按照Scrum角色来划分,总结敏捷实现的一些现状:①Product Owner(应该类似公司开发经理)同客户协商决定众多案子的优先级排序,可行性分析(Plan Meeting),根据开发同QA提供的估时提送计划,还有风险控制(发布是否可控),需要执行的user story转给Scrum Master。②Scrum Master(应该类似公司职能线组长),会制定每个案子实施的具体流程

2017-08-25 00:22:07 329

原创 Scrum 计划、站会、评审、回顾会议介绍

计划会议(Planning Meeting)参与者:整个团队,包括产品(Product Owner)、Scurm Master、Scrum Team(开发、QA)目的:Product Owner从Product Backlog中梳理出这期Sprint需要完成的Backlog,并与团队成员达成共识。注意区分userstory和backlog的区别,userstory可以是任何一个需求、想法,

2017-08-24 23:37:00 7343

原创 DevOps的三大原则

DevOps的三大原则:1、基础设施即代码(Infrastructure as Code)DeveOps的基础是将重复的事情使用自动化脚本或软件来实现,例如Docker(容器化)、Jenkins(持续集成)、Puppet(基础架构构建)、Vagrant(虚拟化平台)等2、持续交付(Continuous Delivery)持续交付是在生产环境发布可靠的软件并交付给用户使用。而持续部署

2017-08-24 22:36:24 29223 1

原创 单体应用对比微服务

说起微服务,首先要对比的是传统的单体应用。单体应用是最早的应用形态,不需要太关注整体性能,项目规模中小型时,开发和部署都挺方便。简单谈谈他的优缺点。单体应用优点:方便调试,代码都在一起;没有分布式开销,所有服务都在本地容器内;中小型项目可以快速迭代,不需要太多资源单体应用容易造成的问题:版本管理难:当项目规模变大时,代码容易产生冲突。稳定性差:局部服务有问题,可

2017-08-18 21:47:37 6795

原创 Java 使用线程池执行大数据量统计任务

最近需要对每周生成的日志表进行处理,并且输出结果到另一张表。日志表本身至少500万条记录。因此打算用多线程来处理数据。在使用线程池时,几个注意点:1、设置独立的线程名规则,区分自动生成的线程名;2、直接使用ThreadPoolExecutor,而不是借用Executors类生成;3、利用Future的阻塞特性来控制全部线程执行结束的时间点。代码参考: //1.计算

2017-08-13 20:51:14 8829

原创 数据库范式、事务、锁学习

数据库三大范式:1、第一范式:保证每列的原子性,不能再拆分,比如联系方式,能拆成用户名和手机,就不要合在一起;2、第二范式:保证每列都和主键关联;3、第三范式:保证每列都和主键直接相关,而不是间接相关,这个涉及到拆分字段到其他表,主表只显示其他表主键信息。--------------------------数据库事务:1、原子性:要么都执行,要么都不执行;2、一致性

2017-08-13 15:17:47 357

原创 Spring JdbcTemplate query查询结果转换对象

在使用JdbcTemplate的时候,可以使用query方法来查询指定的sql语句,来返回我们需要的结果。query提供了RowMapper接口,可以方便的将查询结果转换为对象。RowMapper常见的有2个实现类BeanPropertyRowMapper和EntityRowMapper。在使用上,位置是等价的。//BeanPropertyRowMapperList list = jdb

2017-08-13 00:28:44 10001 1

原创 Redis 批量删除键

在日常工作中,可能会遇到一些情况需要批量Redis中匹配的键,Redis本身并没有提供按照指定模式删除匹配的键的功能,可以删除一个,或者多个,在linux环境下,可以通过管道命令传递给Redis,但是在Window下,就不是很方便。当然还一种方法是我们自己写程序,找出这些键,然后一个个删除。这里要介绍的方式主要借助于Redis Desttop Manager和以及命名空间的概念。在指定Key的时候

2017-08-13 00:13:55 7117

原创 结对编程学习

结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)[1]。两个程序员经常互换角色。但是也可以采用owner/supporter模式,一个负责功能,另一个负责支持。实行步骤:1、结对组成;2、初始讨论(方案制定);

2017-08-12 21:36:11 306

原创 传统的项目经理和Scrum Master的区别

1、传统的项目经理扮演的角色是项目的领导者、决策者、计划者,他是负责达成项目商业目标的人。而Scrum Master扮演的是教练、引导者、训练者的角色,他负责Scrum流程在团队中能够正常实施和执行。2、传统的项目经理负责团队成员具体任务的分工,而Scrum强调的是团队的自组织,自我管理,Scrum Master很重要的内容是帮助每个人的能力提升,不负责实际工作内容。-------

2017-08-12 19:04:48 7874 1

原创 Java 简单判断限定字符的正则

判断答案是否是ABCD的正则:public class Test { public static void main(String[] args){ Pattern pattern = Pattern.compile("^[A-D]+$"); System.out.println(pattern.matcher("A").find());

2017-08-10 22:14:13 453

原创 Mysql 查询区分大小写的2种方式

第一种:SELECT * FROM AAA T WHERE BINARY T.CONTENT LIKE '%S%'第二种:SELECT * FROM AAA T WHERE T.CONTENT COLLATE utf8_bin LIKE '%S%'之前一直不怎么清楚核对(Collate)是做什么用的,里面有各种 "_bin"或者"_ci"结尾的词,现在才知道,原来 bin(bi

2017-08-09 22:59:48 3562

原创 Spring RedisTemplate 批量获取值的2种方式

1、利用mGetList keys = new ArrayList<>();//初始keysList list = this.redisTemplate.opsForValue().multiGet(keys);2、利用PipeLinefinal List keys = new ArrayListList list = this.redisTemplate.executePipel

2017-08-09 14:54:05 41909 6

原创 JVisualVM监视远程主机Tomcat运行情况

因为Tomcat本身是运行在JVM之上,JVisualVM支持监控Java进程的使用情况(如CPU,堆,线程、类等),所以可以使用JVisualVM来监视指定JVM上Tomcat运行情况。JVisualVM支持JMX的方式连接远程,但是需要修改下JAVA_OPTS。连接过程,我们可以配置简单的用户密码校验。会用到的参数包括-Dcom.sun.management.jmxremote  //

2017-08-06 22:53:34 550

原创 Linux AB工具 压力测试

JMeter比较适合做性能测试(模拟用户各种请求设置并发数,发起请求),而AB程序更适合做基准或者压力测试,来测试服务能扛住的最大压力。AB安装方式很简单,在Centos下,使用[root@centos02 conf]# yum intall -y httpd-tools输入ab -help,可以看到可用的参数[root@centos02 conf]# ab -help

2017-08-06 21:46:52 1941

原创 RabbitMQ学习01

1、根据配置,定义ConnectionFactory2、生产者需要定义 RabbitTemplate或RabbitMessageTempate3、消费者需要定义RabbitAdmin(初始queue、binding)4、设置MessageContainer(初始消息处理类、MessageListener、重试策略)5、启动消息处理其他参考:https://spring.

2017-08-05 19:26:15 186

原创 GitFlow工作流使用总结

1、开发新功能从dev拉feature;2、完成功能合并feature到dev,然后拉出release分支;3、release分支发布测试环境;4、在release上修复bug;5、完成release,代码合并到dev、master;6、在预生产发布master;7、预生产的Bug,从master拉出hotifx解决;8、解决完bug,合并hotfix到dev、mast

2017-08-05 11:59:39 679

原创 Git 不使用合并方式提交分支差异

场景是这样的,预生产使用master发布后,测出了Bug。然后修复时,当时比较急,就直接在master上修改,然后提交了master。事后觉得有问题,其他同事新建功能分支的话,会从dev中拉分支。如果他的功能和我的有关联,那么这从master提交的几次更改,就漏掉了,会导致他有问题,所以应该需要把这些差异项找出,然后重新提交dev。如果是普通分支,可以做分支合并。但是如果是master,要把他合到

2017-08-05 11:49:15 1126

原创 使用Jenkins构建Maven项目

1、选择新建Maven项目;2、添加项目名、描述;3、勾选丢弃旧的构建;4、勾选参数化构建过程,把分支名称单独处理;5、编辑源码管理块;6、编辑Build配置;7、编辑Post Steps,处理构建完成后做的事情,因为CI服务器是Windows服务器,所以添加Execute Windows batch command,这里的作用是将新的构建好的内容,

2017-08-05 11:18:34 4852

原创 IDEA GsonFormat插件 Json字符串自动生成实体类

安装不用说,plugins里搜索GsonFormat,install完重启IDEA。初始状态,一段json: { "id": 0, "title_hello": "aaa", "children": [ { "id": 9, "title_hel

2017-08-03 00:07:19 33726 2

原创 Bug记录、归纳

之前若干不要完全依赖WEB端/移动端,期待他们传正确的值;第三方接口调用是否捕获异常取决于业务有没有这个必要;不传有默认值或者是空值,不一定要要求前端一定传;接口考虑版本兼容处理,实在区别很大,可以升版本。----------------------------2017年8月1日新增字段,需要考虑关联影响,比如说一个模块加了一个新的字段,那么涉及的功能,比如复制,是否需要把新字段考虑...

2017-08-02 10:16:59 1774 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除