自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sam_Deep_Thinking

努力深入思考和总结

  • 博客(298)
  • 资源 (1)
  • 问答 (12)
  • 收藏
  • 关注

原创 DOD

概述最近做项目的时候,发生一个事情,我们把一个用户系统重构后上线了,采用代码重写,新DB的方式。但是上线不久,就陆续发现了一些BUG。定位后,才知道,是因为用户系统的上线,其实只是上线了一部分,并没有完整上线。另外这个跟老板心中认为的已上线是不同的。老板认为的已上线,就是整个用户系统都重构完毕,接入方对接完毕,完整的交付了。这里老板和员工对所谓的任务完成的理解,出现了不一致。为了避免这种情...

2019-06-28 12:17:40 2211

原创 Linux grep -v 命令排除输出

概述有时候,我们在线上查日志定位问题的时候,经常会使用cat xxxx.log |grep yyyy命令,如果grep的时候,想排除某些字段,那么可以如下操作:cat test.log | grep "login"|grep -v "deviceType"上面的命令的意思是:找出test.log中包含login信息的,且没有deviceType这个字段的。这个其实非常有用的,因为有些业...

2019-05-24 13:53:02 93012 3

原创 小程序access_token耗尽问题

概述前几天,产品经理紧急打我电话,说后台好些商品无法生成小程序码了,这些商品小程序码是需要紧急推到公众号文章里的,让我赶紧解决。我立马登录到后台操作了一下,果然报错了。但是由于报错信息只是:“操作失败”。啥都没有,简直醉了,只能用tail -f xxxx.log命令,看看具体的报错堆栈,发现是空指针错误,仔细看了一下代码,当access_token为空的时候,会走入到一段特有的逻辑,但是这段...

2019-05-19 19:41:59 8073 1

原创 Redis set集合操作

概述有时候我们需要判断一个key是否在Redis的集合中,可以选用SET,原因是有一个isMember操作,执行的效率比较高。常用的操作如下://添加 sadd test_set 10146558//删除 srem test_set 10144878//判断是否存在 sismember test_set 10146560//返回key里面的值SMEMBERS test_se...

2019-04-17 00:57:03 2390 6

原创 git打tag标签

概述有时候上线一个版本后,出现故障了,需要紧急回顾,如果公司内部还没有成熟的代码回滚平台,那么可以使用打tag的方式,为上一个已经在线上运行的版本,打个标签。具体操作如下:打taggit tag -a master_2019_04_16 -m "412迭代" push taggit push origin master_2019_04_16想看一下刚刚打好的标签,可以使用...

2019-04-17 00:49:17 4547

原创 Redis查看明文

概述有时候使用redis-cli命令登录进去Redis后,使用get命令查找key对应的值时,展现的值不明确,其实使用redis-cli时,指定一个--raw即可。redis-cli -h 127.0.0.1 -p 6333 -a 'aaa' --raw...

2019-04-17 00:42:54 1509 1

原创 Redis批量删除指定前缀的key对应的值

概述今天遇到一个故障,需要批量删除有指定前缀的Redis key的值。原先是使用redis-cli登录进去进行操作,居然不行,得跳到外面才能执行。具体命令如下:redis-cli -h 127.0.0.1 -p 6333 -a '123' keys "user:test:*"|xargs redis-cli -h 127.0.0.1 -p 6333 -a '123' del借助xargs...

2019-04-17 00:38:33 13508 5

原创 Intellij IDEA alt+7 和ctrl+alt+h结合找代码

idea alt+7 和ctrl+alt+h结合找代码

2019-04-14 13:37:09 6574

原创 紧急大项目的应付手法

1、事先分析通用的功能,例如内容流的。2、功能必须部分提测。3、如何分配自己都不熟悉的任务;4、尽量将任务交出去,相信队友。tl需要关注更多的东西;5、任务切割如何做到大小合适,分配对人,而且冲突小。6、任务优先级;7、...

2019-04-14 12:11:58 1752 2

原创 2019年4月10日-自己的技术博客访问量到达一百万

概述从2015年7月开始在CSDN平台上写技术博客,历经近4年的时候,博客访问量终于到达一百万了,先给自己点个赞。写博客是非常耗时耗精力的,如果没有一定的意志力,真心很难坚持下去。当然能坚持下来,得到的好处也是非常多的。下面根据自己的亲身体会,总结几点。博客文章可以看成自己的资料库,里面存放了平时的积累和心得,除了日后查找资料方便外,随着自己的认知不断提高,还可以不断的修改之前的文章,将...

2019-04-10 21:51:45 945 4

原创 JDK 8利用分组统计从List找出重复元素

概述对于List中有重复元素的,也可以利用JDK 8的流来完成。 public static void main(String[] args) { List<String> parameterList = Arrays.asList("1","2","2","3","3&qu

2019-03-10 18:11:52 12626 4

原创 CSDN 2018博客之星,需要您投上宝贵的一票

概述在CSDN的技术博客,持续的写了三年了,通过写博客,自己也学习到非常多东西,别人也可以通过我的博客学到一些东西。最近本人参与了CSDN 2018年度的博客之星竞选,劳烦大家为我投上宝贵的一票。请投: 054 Sam 哥哥 。投票地址是:CSDN 2018博客之星投票...

2018-12-29 10:47:27 2620

原创 尽量避免bug的一些手法

尽量避免bug的手法

2018-12-28 11:43:32 8796 55

原创 遇到的一个缓存穿透故障

概述在昨天下午,在做业务系统每日巡检的时候,发现营销系统的日志里,出现了209次ERROR,内容如下:获取商品详情优惠券出错,request:{“productId”:123456,“shopId”:123456,“userId”:123456}获取商品详情优惠券出错,request:{“productId”:123456,“shopId”:123456,“userId”:123456}...

2018-12-27 12:26:20 1838 8

原创 缓存时间小技巧-随机打散

概述之前在营销系统里,开发了一个接口,用于在商品详情页里显示优惠券,方便用户在商详里看到优惠券和领取优惠券。由于商详的访问量比较大,因此显示优惠券的接口必须加上缓存。缓存时间设计原先优惠券缓存时间是固定设置为5分钟,但是5分钟过后,就会集体失效,因此便使用一个随机数工具,将缓存时间随机生成。例如:以秒为单位,在240-360这个范围内产生随机数,作为缓存的时间,这样就可以避免优惠券在缓...

2018-12-26 14:23:28 2852

原创 下单接口剥离秒杀和拼团逻辑

概述

2018-12-24 19:14:26 3160 1

原创 Spring Boot bootstrap.yml外置

概述有时候我们是需要将bootstrap.yml文件的外置的,也即是说,在spring boot应用启动后,不直接使用jar包里面的bootstrap.yml文件,而是读取某个目录下的bootstrap.yml文件,然后进行覆盖。注意在spring boot 2.0之前的版本,得使用如下参数:spring.config.location完整配置如下:nohup java $JAVA_...

2018-12-13 18:30:25 12806 7

原创 awk将文件某个列按照逗号分隔

概述当我们在处理线上故障的时候,经常会从数据库表查询出某个列。select product_id from order where user_id = 111;查询出来的结果形式如下:12345这个时候,我们通常会以product_id in (1,2,3,4,5)的形式去查找商品表,找出商品的详细信息。那么如何得到这个(1,2,3,4,5)呢。一种简单的做法就是利用...

2018-11-30 12:31:36 9895 3

原创 坑,代码没发布成功导致的故障

概述最近自己负责的营销系统,上线了一个新功能,才上线了一个小时,就有客服报障说,本来不能使用的优惠券现在变成可用了。这个是非常严重的故障,因为每下一单,公司就得损失一点钱。俺赶紧让客服把商品链接发出来,我自己上去看看是否真这么回事,奇怪了,我自己购买这个商品的时候,优惠券不能用呀。为了进一步证实,赶紧让另外两个测试人员也参与购买,结果出乎意料:优惠券是一会能用,一会不能用没办法了,只...

2018-11-29 09:47:31 435 1

原创 写给测试人员的远程debug和异常断点设置

概述我曾经在优秀互联网高级测试工程师应该具备的能力一文中提过:测试人员能发现问题,还能定位问题,而且能给研发解释得清楚定位问题并不是那么简单,尤其是在没有日志和异常的信息的情况下。对于不具备开发能力的部分测试人员来说,就更加难。这个时候,我们可以借助一些小技巧,来帮忙查找问题的原因。一种是远程debug,另外一种是异常断点。远程debug远程debug提供这样一种能力:可以...

2018-11-27 09:41:40 2299 2

原创 awk神器呀

概述在之前写过一篇一条慢SQL导致购物车服务无法使用的文章,由于购物车是入口,出了故障,自然都不是小问题。这不,老板说要统计一下影响面。如果没有成熟的业务监控和统计工具,干这种活,只能用最原始的查日志的方式。本来我想把日志下载下来,写段JAVA代码分析一下,谁知日志文件居然有3个g,除了下载慢,用JAVA分析起来也慢。果断放弃,换用江湖人称日志内容查找神器的awk大哥出来帮忙。找出添加购...

2018-11-22 10:39:23 1383 7

原创 设计要做到扩展性强还挺难的

从营销工具-【满减活动】谈代码设计扩展性

2018-11-21 10:47:40 3391 10

原创 JDK 8 list分组获取第一个元素

概述在JDK8 List分组一文中介绍了JDK 8如何对list进行分组,但是没有提到如何在分组后,获取每个分组的第一个元素。其实这个也很简单,代码如下:package test;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.serializer.SerializerFeature;import java...

2018-11-16 00:02:31 21645 1

原创 搜索框出现故障-又是一个通宵的晚上

搜索框出现故障-又是一个通宵的晚上概述每年的电商双11,都是注定要通宵的。流量一大,什么问题都可能发生。果然,今年的双11又是一个连续通宵的节奏。小程序前端界面的搜索框出故障了,一片空白顿时保障群里,保障消息铺天盖地,都在说搜索框用不了。顿时哥的头发感觉瞬间都是直的了,太紧张太害怕了。定位问题电商的搜索,一般都是要借助大数据的,由专门的大数据团队提供接口输出数据。因此这里首先...

2018-11-11 17:58:16 6742 11

原创 JDK8 List分组

概述对List进行分组是日常开发中,经常遇到的,在JDK 8中对List按照某个属性分组的代码,超级简单。package test;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.serializer.SerializerFeature;import java.util.ArrayList;import ...

2018-11-10 21:57:48 43371 2

原创 JDK 8 List获取属性列表

概述在JDK 1.8里,可以使用如下代码获取List元素对象中某个属性的列表。import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;public class ListGroupTest { public static void main(String[] args...

2018-11-10 21:06:36 7296 2

原创 shell查找文件显示行号和对应区间的内容

概述有时候我们需要一个文件大小不断变化的日志文件里,找寻一些错误信息。这个时候我们可以用如下的小技巧,找出错误日志的内容。CAT的时候显示行号cat -n cart.log | grep "支付失败"SED找到错误日志的内容sed -n '1000,2000p' cart.log由于我们通过CAT命令已经知道行号了,只需要使用SED,输入一个行号的大概范围,就可以详细的展示...

2018-11-10 18:34:30 3610

原创 【Java微服务】一书第一章关键语句

概述最近读了【Java微服务】一书,只有第一章看的比较认真,其他章节,如果对微服务已经有些了解的,可以大概浏览器一下就行。事实上,这本书写的最好的就是第一章。下面把第一章中我觉得比较重要的语句摘录下来。重要语句可扩展性随着整体式应用程序所有的部件都被打包在一起,它在扩展时是庞大的,需要扩展一切。例如,在餐馆订座应用程序中,即使你想要只扩展餐桌预定服务,也要扩展整个应用程序,而不...

2018-11-10 15:25:19 1138

转载 淘宝大秒系统设计详解

概述偶然从博客园读到了一篇关于秒杀设计的文章:淘宝大秒系统设计详解 真心写的不错,读完后,了解到一些之前未想过的方案。也推荐大家读一读。...

2018-11-09 12:36:17 993

原创 设置超时时间真的很重要

概述在一条慢SQL导致购物车服务无法使用一文中,提到了客户端调用购物车服务的时候,超时了。如果当时客户端没有设置超时时间的话,会在客户端中产生级联故障。先用一张图来说明一下。聚合层除了调用购物车微服务,还调用了营销系统微服务。如果购物车服务的接口响应时间很慢,而客户端聚合层调用购物车服务时,又没有设置超时时间,那么将占有大量的连接,如果请求购物车服务的请求量比较大,瞬间就会把连接占用完,直...

2018-11-09 10:10:03 16555 1

原创 一条慢SQL导致购物车服务无法使用

概述今天一大早就紧张兮兮的,因为要处理一个大故障:【购物车服务无法使用了】,这个故障直接导致前端添加购物车、获取用户购物车列表等操作都失败了。购物车是入口,一旦出现问题,影响极其严重。临时处理购物车服务所有接口,是有打印响应时间的,发现比平时慢了很多。由于情况已是十万火急了,我只能先重启购物车,缓冲一下,然后利用这段缓冲时间,赶紧定位问题。问题定位之前对购物车应用基于Sprin...

2018-11-08 14:37:49 12912 96

原创 一次判断失误的反思

概述最近想把下单接口中耦合的营销逻辑剥离掉,不然每次修改营销工具或者新增营销工具的时候,下单接口都得改动,下单接口本身就非常复杂了,每次改动都得小心翼翼,深怕出错,从而影响下单。公司的营销工具非常多,像砍价、满减、优惠券、拼团、秒杀等。那么到底是将全部营销逻辑一次性剥离还是一个一个来呢?当时老板的建议是,一个一个来,降低风险。但是我没有听从,理由是:营销逻辑应该有专门的营销系统负责,提供...

2018-11-07 10:14:07 727 4

原创 Window安装Netbeans9

概述Netbeans 9 最近发布了,虽然我平时是使用Intellij IDEA的,但是还是迫不及待的想看看最新版的Netbeans。其实Netbeans用的好的话,是比Eclipse强大很多的,下面介绍一下如何在Window上安装Netbeans。下载网址Netbeans下载你可以选择下载源代码包,然后自己构建,也可以直接使用ZIP包。本文用的是ZIP安装的。点击红色部分下载Z...

2018-11-01 11:05:54 4261 4

原创 SpringBoot Controller Post接口单元测试

概述在日常的开发中,我们一般会定义一个service层,用于实现业务逻辑,并且针对service层会有与之对应的齐全的覆盖率高的单元测试。而对于controller层,一般不怎么做单元测试,因为主要的核心业务逻辑都在service层里,controller层只是做转发,调用service层接口而已。但是还是建议使用单元测试简单的将controller的方法跑一下,看看转发和数据转换的代码是否能...

2018-10-31 09:49:32 19688

转载 转载酷壳-技术人员的发展之路

转载酷壳上的一篇文章:技术人员的发展之路,其中对我影响最大的一个段落是:2、去真正的创业公司去顶尖公司和去创业公司在某些时候并不冲突。不过,这里我想讲的是,一个技术能力强的人在大公司可能会被埋没掉。因为大公司业务成功后,成功的公司在招聘各种高级技术人才都不会成为问题,于是少你一个不少,多你一个不多。成功的公司其整个技术体系已经完成,Legacy的问题也比较多,所以,可以供你发挥的余地不大...

2018-10-28 13:56:09 527

原创 下单接口调优实战,性能提高10倍

概述最近公司的下单接口有些慢,老板担心无法支撑双11,想让我优化一把,但是前提是不允许大改,因为下单接口太复杂了,如果改动太大,怕有风险。另外开发成本和测试成本也非常大。对于这种有挑战性的任务,我向来是非常喜欢的,因为在解决问题的过程中,可以学习到很多东西。当时我只是知道下单接口慢,但是没人告诉我慢在哪里,也即是说,哪些瓶颈导致下单接口慢了。其实没人知道也没关系的,因为我们可以通过压测...

2018-10-19 12:15:13 8829 25

原创 优秀互联网高级测试工程师应该具备的能力

优秀互联网高级测试工程师应该具备的能力概述在之前写的互联网高级测试工程师至少具备的能力一文中,提到了测试工程师至少具备的能力,但是并没有提到优秀测试工程师应该具备的能力,下文简单的谈一谈。当然这些全部都是我的个人理解。能发现问题,还能定位问题,而且能给研发解释得清楚在实际的工作中,你可能会遇到很多测试人员在测试功能模块的时候,一遇到问题,马上就来找开发,由开发来定位问题。测试人员发...

2018-10-18 12:28:23 6906 7

原创 SpringCloud Edgware.SR3版本-Ribbon的timeout设置

概述Spring Cloud中,客户端的负载均衡使用的是Ribbon,Ribbon的超时时间默认很短,需要进行调整。Spring Cloud版本Edgware.SR3Ribbon timeout设置Ribbon的默认timeout时间是1秒,这个可以在RibbonClientConfiguration类中看到。public class RibbonClientConfigu...

2018-10-17 10:39:08 3438 1

原创 线上单台Eureka升级到3台Eureka高可用

概述由于前段时间,公司业务发展快,接了太多的业务需求了,没有时间把Eureka搞成高可用的,先用一台Eureka应付。当时由于流量还不大,不会出现问题。但是最近一个月,流量逐渐增大,老板担心万一单台Eureka挂了,服务会用不了。让我赶紧升级成3台Eureka,并两两注册,做到高可用。下面就把升级的过程说一下。未升级前单台Eureka上,只有购物车这个服务提供方,共两台。升级步骤...

2018-10-11 08:53:01 2810

原创 DDD领域驱动设计资料

概述之前我写过一篇Spring Cloud工程模块划分文章,里面提到可以用DDD来划分模块和组织代码,但是对此我也没有仔细研究过,最近有点想在小的项目里尝试一下DDD,故研究了很多文章,下面列出我觉得写的不错的文章。资料领域驱动设计在互联网业务开发中的实践(美团)阿里盒马领域驱动设计实践斑斓(DDD大神的个人博客)...

2018-09-30 10:20:54 1302

空空如也

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

TA关注的人

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