13 Sam哥哥

我要认证

喜欢研究和思考关于管理、领导力,流程、文化、人、效率,沟通、成本、执行的东西,因为这些因素跟【能否把事情真正做好】强相关。

等级
TA的排名 1k+

项目被毙掉了,对上管理没做好

概述最近产品部门提了一个购物车需求,由于涉及到前后端改动很大,项目排了一个多月,但是项目进行到一半的时候,被老板毙掉了。原因是:占用太多资源,但是项目又不是业务方急需要的,产出的价值很低。可以理解为,下属做的东西,不是老板要的,在老板眼中,业务部门急着要的才是最应该先做的,那个是痛点。另外,有些决定也不是随便就能定的。一般来说,老板的视野,掌握的上下文信息是比下属要多很多的,因此平时一定要及时做好向上沟通,沟通的方式可以有如下几种:项目例会,可以一个星期一次,把当前正在做的和下个阶段要做的项

2020-08-23 21:11:50

最近常用的处理线上大故障的方法

概述最近处理了好几个线上紧急大故障,累积了一些经验,在这里简单总结一下。处理手法出现了线上大故障了,先分析出现了线上大故障了,第一个要想的事情是,线下解决问题,而不是在线上解决问题。出现问题了,一定先想办法止血。最快的止血办法是:回滚代码。如果10分钟内,知道具体是哪个服务出问题,就回滚这个服务以及依赖的服务。如果不知道哪个服务或者环节出问题,那就需要来个大回滚,将所有的服务全部回滚,如果前端小程序刚好依赖新接口,那也需要跟着回滚。...

2020-08-21 22:28:28

用了一个很蠢的方法定位服务不可用原因

概述哎,最近的一次上线,业务功能点很少,本以为稳稳的,肯定没事,谁知晚上十点半刚上完线,服务突然自动重启了,运维人员认为风险极高,回滚了。运维这么一快速回滚,没有dump出堆栈信息,研发这边定位问题,也只能靠日志了。下面将定位问题的整个过程简单重现一下。定位过程公司用的是spring cloud+k8s体系,会使用到存活探针,探测失败的话,会重启pod,当时通过阿里的arms,发现了full gc次数非常多,导致服务都无法响应了。因此想跟运维要一份gc日志和core jump文件,分析一把,但是

2020-08-18 21:15:29

功能模块提测前要做的几件事

概述在项目管理流程中,有几个关键阶段:需求阶段、开发阶段、测试阶段、上线阶段每个阶段都非常重要,且越前面的阶段

2020-08-02 18:25:56

对自己开发的模块要认真负责

概述在平时开发系统功能模块的时候,有些开发人员可能认为功能模块按时提测、按时上线就算"认真负责"了,可以不用管了。其实做到这些还是远远不够的,因为真正考验你对自己做的模块是否认真负责,是在上线后。假设你开发的模块在今天上线,隔天就出了问题,老大来个连环问:老大:问题影响面有多广?我:?老大:能回滚吗?我:?老大:是接口性能问题还是功能性问题?怎么监控没有报警?好吧,只能硬着头皮解决问题,然后上线,请求参数和报错的上下文日志发一下我:。。。。。。忘记打了老大:。。。。上面还只是一个小小

2020-07-13 13:22:40

项目推动的心得

概述最近给公司互联网部门做了一个【项目推进】的分享,效果还不错,重新梳理一下重点内容,分享给大家。项目阶段项目启动阶段项目计划阶段项目执行阶段项目监控阶段项目收尾阶段项目启动阶段项目启动会目的:为啥要做,背景初衷是啥,有啥价值;项目发起者的预期:质量/范围/时间,极端情况下如何排序里程碑计划: pmo要关心里程碑计划全员同步,明确目标,减少后续沟通成本。资源/干系人指定项目/技术负责人:获得公开授权的有效方式(临时主导者)不配合:目标理解不一致、大家都

2020-07-05 09:02:41

第三方支付问题小结

概述记得2019年,微信支付出过一个故障,用户发起支付给了钱后,微信一直不回调,导致使用了微信支付的商家的订单都成了未支付状态了,如果业务系统设计的不好,那瞬间就会有大量的客诉出现。像下面的对话场景,我相信当时肯定非常的多:用户:我支付了好几次了,你说你没收到?别开玩笑了。商家:我这边真的没收钱。然后心想:这家伙不会是想吃霸王餐吧?虽然像微信和支付宝这样的大牌支付平台,出大故障的几率比较少,但是也不得不防。下面列举几个支付问题以及对应的解决思路。第三方支付平台无法支付以微信为例子,像

2020-07-05 08:08:55

利用DB实现分布式锁的思路

概述以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域和SystemB域这几个JAVA应用,可能同时修改同一份库存数据。如果不做协调的话,就会有脏数据出现。对于跨JAVA进程的线程协调,可以借助外部环境,例如DB或者Redis。下文介绍一下如何使用DB来实现分布式锁...

2018-03-05 15:06:42

Python基础学习-函数

Python基础学习-函数

2019-12-07 12:22:18

Spring RabbitMQ Channel理解

有了TCP连接后,为何还需要channel,是基于什么场景呢?channel的性能又如何呢?

2019-12-06 21:30:35

研发Owner的职责

概述技术组长或者PMO,可能在同一个上线周期里,需要跟多个项目,有时候会跟不过来,这个时候可以指派一个owner,分担一些压力。owner定义owner是临时授予的小组长,负责主导某个项目某个端(后端或者前端)的整体工作。owner具体职责,主要是关注技术侧的,非技术侧的,由PMO跟进。且这里说的owner,是指单端的owner,例如:后端侧owner,前端侧owner。对内...

2019-12-06 12:29:01

简单说一下业务接口自动化测试

概述在创业公司里,项目都比较赶,测试人员也是疲于测试功能模块,基本没空去写什么自动化测试,以提升回归测试的效率。但一个必须承认的事实便是,依赖测试人员去做全面回归测试,保证质量,是不可取的,因为难度太大,成本太高。因此自动化测试还是要做一些的,具体如何着手呢,下文说一下我这边的做法。注意:本文主要描述一下业务接口自动化测试的方案,至于GUI自动化测试和压力自动化测试不在本文的讨论范围内。...

2019-12-06 11:49:35

说一说单体应用的不良影响

1、业务耦合一个单体应用后,多人在上面开发代码,各种代码冲突,提交后,各种编译不通过,启动不起来,严重影响了开发效率;2、不好做水平扩展;3、一个小的功能点改动后,需要整体上线;4、由于功能耦合多了,单体应用启动的时间变的很长,无法做到快速启动和发布,想我们这边的一个大应用,16台机器,滚动发布的时候,需要16分钟。5、...

2019-12-03 15:47:49

关于日志打印

概述关于日志打印

2019-12-02 16:42:02

线上应用遇到了oom killer

概述在2019年10月21日,公司的一个后台应用中【生成营销活动数据】的操作,执行到一半突然不执行了,导致部分活动数据没生成,运营人员对此怨声载道的,因为影响了他们的运营效率了,要求我们技术人员尽快解决。定位过程首先是从日志入手,分析线程执行。...

2019-10-30 09:56:02

socket.accept后,会产生新端口吗?

概述前段时间,组内的一个小伙伴问了俺一个问题:调用socket.accept方法,建立连接后,服务器端会为其创建一个新端口吗?客户端与服务端成功建立连接后,客户端这边肯定是需要开启一个新的端口的,而服务端其实只需要一个监听端口就行,不用每个新连接一来,就创建一个新的端口。如上图,客户端跟服务端,建立了两个连接,连接1和连接2,端口分别是59989和59990,而服务端的监听端口是8...

2019-09-29 16:43:46

RabbitMQ使用场景简单介绍

概述Rabbit MQ的使用场景非常多,典型的场景主要分为下面几种:跨系统的异步通信基于pub/sub模型的事件驱动削峰下面主要是讲自己以前用过MQ的场景,简要的介绍一下。秒杀订单之削峰sec-kill-order独立集群的职责有三个:接收所有瞬时涌入的秒杀请求,并以先进先出的方式将请求保存到队列里,将请求排队,起到削峰的作用;提供拉取数据接口,给秒杀业务处理层使用...

2019-09-15 18:29:37

Spring Boot RabbitMq 并发与限流

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

2019-09-09 12:51:25

Spring Boot Controller层测试

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

2019-09-07 09:47:28

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:38:14

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 签到达人
    签到达人
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 推荐红人
    推荐红人
    发布高质量Blink获得高赞和评论,进入推荐栏目即可获得
  • 精彩红人
    精彩红人
    发布高质量Blink获得高赞和评论,进入精彩栏目即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。