自定义博客皮肤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

努力深入思考和总结

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

原创 Spring Boot RabbitMq 并发与限流

概述电商中秒杀请求,属于瞬间大流量,同一时刻会有大量的请求涌入到系统中,可能导致系统挂掉。应付这种瞬间大流量的其中一种方式,便是利用消息队列。1、利用消息队列先进先出的特性,将请求进行削峰;2、控制好消费端的消费速度,进行必要的限流。在消费端,要做到上面提到的第2点,在Spring Boot RabbitMQ中只需要利用@RabbitListener`注解,做一些简单配置就可以了。...

2019-09-09 14:16:14 10863 6

原创 Spring Boot Controller层测试

概述对业务Service层的代码进行详尽的单元测试是非常必要的,但也不能忽视Controller层的测试,毕竟Controller层的接口输出都是给前端用的,且Controller层拿到业务Service层的返回结果后,通常也会做一些业务处理或者转换的问题,以适配前端的展示需求。目前参与的项目,都是基于Spring Boot的,下面就简单介绍一下如何基于Spring Boot 2' 和 J...

2019-09-07 11:52:59 3559

原创 Git log修改时间格式

概述我们经常会使用git log去查看提交记录,但是默认展示的提交时间是如下格式的:Date: Thu Aug 29 19:15:05 2019 +0800不太容易看懂,因此最好使用如下的命令,讲提交时间格式化一下:git config --global log.date format:’%Y-%m-%d %H:%M:%S’执行成功后,再执行git log命令,就可以看到格...

2019-09-04 11:40:42 5733 2

原创 Spring Boot下使用RabbitMQ

概述本文主要一下在JAVA 中使用Rabbit MQ的三种方式:– 原始方式– 结合Spring– 结合Spring Boot下面将使用逐步演进的方式来讲解JAVA下如何使用Rabbit MQ的发布订阅模式。最原始的方式本文的DEMO是用Window版本的Rabbit MQ的,具体的安装方式,可以参考:Win10下安装erlangwin10下安装rabbitmq我们先...

2019-09-01 23:16:47 756

原创 无论多紧急,预发布一定要走查一下

概述2019年6月28日晚上,bug群里的客服抛出了一个问题,订单结算页无法切换收货地址了,由于订单结算页离下单非常近了,如果出问题,会直接影响下单,也就影响了公司收入。由于618大促时,没发任何版本,而这个问题是大促结束后,发版本后才出现的,因此火速联系相关人士排查问题,最后通过日志发现,新版本的地址接口,增加了部分参数必填的校验,而这个地址接口的调用入口是有三个的,其中一个入口并没有传入参...

2019-06-30 15:18:59 923 4

原创 敏捷中的双周迭代导致的恶性循环

迭代式敏捷开发,别随便玩。

2019-06-30 14:31:18 5665

原创 学以致用,解决系统问题的人才算牛人

概述在公司里,你肯定会看到部分程序员,一直在研究技术,像算法、新技术、底层知识等,给人的印象就是,他挺牛的,懂挺多底层知识的,但是如果他的这些技能,没有用于解决公司系统问题,那么在老板眼中,他不是牛人。学以致用,能把学到的知识,用于解决公司实际存在的系统问题,带来了实际的价值的,才算牛人。平时多思考当前情况下,团队的问题、流程的问题、测试的问题,业务的问题,梳理出来,看看当前自己掌握的...

2019-06-30 13:56:08 1074 2

原创 DOD

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

2019-06-28 12:17:40 2231

原创 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 93109 3

原创 小程序access_token耗尽问题

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

2019-05-19 19:41:59 8147 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 2414 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 4557

原创 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 1524 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 13516 5

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

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

2019-04-14 13:37:09 6618

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

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

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

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

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

2019-04-10 21:51:45 956 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 12660 4

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

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

2018-12-29 10:47:27 2635

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

尽量避免bug的手法

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

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

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

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

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

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

2018-12-26 14:23:28 2887

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

概述

2018-12-24 19:14:26 3182 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 12837 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 9923 3

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

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

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

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

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

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

原创 awk神器呀

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

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

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

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

2018-11-21 10:47:40 3412 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 21655 1

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

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

2018-11-11 17:58:16 6765 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 43390 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 7310 2

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

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

2018-11-10 18:34:30 3626

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

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

2018-11-10 15:25:19 1147

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

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

2018-11-09 12:36:17 1003

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

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

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

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

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

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

原创 一次判断失误的反思

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

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

原创 Window安装Netbeans9

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

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

空空如也

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

TA关注的人

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