6 leeon_l

尚未进行身份认证

我要认证

一个人如何被定义取决于他如何面对那些身不由己的环境,你希望成为一个什么样的人?随波逐流还是成为自己?不管你在做什么,全力投入且保持坚强……马拉松还在继续!

等级
TA的排名 3k+

供应链业务MQ应用场景经验总结

写在前面:做供应链业务一年有余了,这一年里MQ帮我们解决了很多问题,在此做一些经验总结;另外,各个公司消息中间件提供的功能大同小异,最基础的推消息、下游异常重试机制应该是都具备的,本文所述也是建立在这样的能力基础上的~场景一:削峰填谷,降低响应时间,下游异常自动重试、保证成功举例:对库存模块而言,入库是一个增量操作,当通过了数据校验之后就理应执行成功,但入库操作常常伴有复杂的写库逻辑及乐观...

2018-12-16 16:31:31

正则匹配所有括号中的内容&PHP实现

正则表达式:(?<=【)[^】]+ 注:以匹配中文括号中内容为例,如果匹配非中文括号,则需要在括号前增加转义符PHP实现示例:<?php $strSubject = "abc【111】abc【222】abc【333】abc"; $strPattern = "/(?<=【)[^】]+/"; $arrMatches

2018-06-21 22:00:37

PHP获取二维数组中指定Key的重复Value

<?php/** * 判断二维数组中指定Key是否存在重复Value * @param array $arrInput 二维数组 * @param string $strKey 键名 * @return bool */function hasRepeatedValues($arrInput, $strKey){ //参数校验 if (!is_array($a...

2018-05-13 14:59:31

PHP三种数组合并方式区别示例

一、写在前面目前工作中接触到的PHP数组合并方式主要有三种:1、+操作符2、array_merge()3、array_merge_recursive()它们的区别主要体现在对于相关键名(数字键名、字符串键名)的处理方式,下面本文将以两个实际例子来体现~二、相同字符串键<?php$arrFirst=["first_key"=>1...

2018-05-13 14:55:38

PHP实现Redis单据锁,防止并发重复写入

一、写在前面: 在整个供应链系统中,会有很多种单据(采购单、入库单、到货单、运单等等),在涉及写单据数据的接口时(增删改操作),即使前端做了相关限制,还是有可能因为网络或异常操作产生并发重复调用的情况,导致对相同单据做相同的处理;为了防止这种情况对系统造成异常影响,我们通过Redis实现了一个简单的单据锁,每个请求需先获取锁才能执行业务逻辑,执行结束后才会释放锁;保证了同一单据的并发重复操作...

2018-04-10 00:03:40

MySQL InnoDB锁机制分享

写在前面:在设计新零售供应链wms(仓库管理系统)库存模块时,为了防止并发情况对库存的影响,查阅了一些资料,对InnoDB锁机制有了更全面的了解,在此做出分享,如有疏漏望不吝指正,愿共同进步!(此篇为1.0版本,后续随理解深入,会逐步迭代完善~)博客搬家:https://segmentfault.com/a/1190000014133576一、为什么要加锁 锁机制用于管理对共享...

2018-04-01 01:40:38

Mysql 【order by 不唯一字段】与【limit】混用的坑

背景: 分页查询排序后的数据,是一个非常常见的业务场景;但当使用不唯一的字段排序时,分两页查询的数据可能出现同一条数据,并丢失数据!示例: 同样的查询条件,offset不同,竟然取到了同一条数据?!原因解析(取自Mysql官方文档): 上面官方文档里面有提到如果你将Limit row_count与order by混用,mysql会找到排序的row_count行后立马返回,而不...

2018-03-30 17:12:22

通过实际业务场景理解后端接口的幂等性

写在前面:之前在设计接口时因经验尚浅,并未过多考虑幂等性,但这两天出现的一个线上问题让我认识到了某些情况下接口幂等性的重要性;非幂等场景: 服务A将单据A信息通过RPC远程过程调用传给下游服务B接口(非幂等接口)用于生成关联单据B,服务B接口会校验是否已经接收过单据A,如果已接收过,会报错『重复的单据』,如果未接收过,则生产关联单据B并写库,将结果返回服务A,服务A收到结果后修改此单据状态,...

2018-03-30 17:09:16

expect实现自动登录脚本

写在前面:目前在公司是一人一台虚拟机,大多数工作都要在虚拟机上完成,为此每天要执行很多次【ssh xxx@xxxxxx】指令登录虚拟机;有很多方式解决这个问题,如使用xshell、secureCRT等工具记录常用的连接,我就写了一个简单的脚本实现一键登录~login.sh脚本内容如下:#!/usr/bin/expectspawn ssh xxx@xxxxxxexpect "*passw...

2018-03-30 16:47:46

RD基本功——Vi基础与最常用指令

写在前面:作为常年与服务器、Linux打交道的后端开发RD,基本的vi操作是一定要运用非常熟练的;本篇文章就记录了一些日常工作中最常用的的指令,希望能和大家共同学习共同进步;一、vi与vim的区别 vim是vi的升级版本,它兼容vi的所有指令,并提供一些新特性,如以不同颜色标识语法等;(之后会总结一些vim的常用功能~)二、vi的三种模式 模式 功能 一般模式...

2018-03-30 16:36:41

平时工作中一定会用到的Linux指令(一)

一、find指令——查找指令最常用参数:【-name】   根据名称查找【-iname】  根据名称查找,且忽略大小写差异最常用命令:【find 目录名 -name 文件或目录名】     根据文件名在指定目录下查找文件或目录【find 目录名 -iname 文件或目录名】    同上,-iname参数可忽略大小写差异二、grep指令——强大的文本搜索工具最常用参数:【-i】   忽略关键字大小写...

2017-12-03 18:39:19

Nginx——location常见配置指令,alias、root、proxy_pass

1、【alias】——别名配置,用于访问文件系统,在匹配到location配置的URL路径后,指向【alias】配置的路径。如:location/test/ {    alias/first/second/img/; }即:请求/test/1.jpg(省略了协议与域名),将会返回文件/first/second/img/1.jpg。2、【root】—

2017-10-17 10:27:29

初识Redis与Memcached

一、Redis与Memcached区别(初识版):1、Memcached只提供String一种value类型;而Redis除了支持String数据类型,同时还提供Hash、List、Set、Sorted Set等数据类型。2、Memcached最大键长250个字符,键值最大容量1MB;Redis一个键值对的最大容量512MB。3、Memcached是纯Cache,所有数据全部保存在内存

2017-09-12 23:01:23

亲测GO环境搭建,理解go build、go install、go get

前言:秉承着作为一个新人,要有着“指哪打哪”的觉悟。在老大的需求下,顶上前端的空缺先干阵子前端。当然,在工作之余还是要好好朝着既定的方向努力的,实习结束后还了电脑,这次毕业再来换了新Mac,重新搭下Go的环境,顺便好好总结下,以后随着学习的深入,也会持续更新。GO下载:GO语言中文网下载:https://studygolang.com/dlMac下直接通过brewinstat

2017-09-09 14:09:59

Shell、Bash,与终端配置文件

shell——命令解析器,也是一种程序设计语言 bash——是shell的具体实例,zsh、bash都是shell的实例在终端中可以通过【echo $SHELL】指令查看当前使用的shell实例,可以通过【chsh -s /bin/zsh】切换成zsh或其他shell实例。全局配置文件(都在/etc/目录下,etc为environment config缩写):/etc/profile(不推荐修改

2017-09-07 20:26:53

Git撤销修改场景及对应指令详解

本文原则:开门见山、简明扼要,希望能给大家学习工作提供帮助!场景一:撤销工作区的修改(未执行git add)指令:git checkout 【目录或文件名】实例:1、修改了test.txt文档,git status 会出现如下提示:2、git checkout test.txt,无提示3、git statu

2017-09-06 23:48:38

回来了&继续加油

博客搬家:https://segmentfault.com/blog/leeonfancy经历了一些变动,来到了一家『同城物流』公司做『新零售供应链』,运气不错,遇到非常棒的团队,有幸『从零到一』经历了几个大系统的设计研发,要学习的还很多很多,继续加油!距离我上一篇博客将将近一年了吧……这一年我游历了很多地方,经历了很多事,博客也因为懒、因为忙放下了许久。现在毕业了,和女友来到...

2017-09-06 23:44:42

UML类图中几种关系的总结

在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)         1. 泛化(Generalization)        【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特

2016-10-07 10:44:55

多线程编程(二)——面试题,每个线程只打印一种字符,多个线程协同顺序打印n次字符串(求大神的其他实现方案)

(这个是欢聚时刻(YY)的笔试题,在笔试的时候没有写出来,后来自己写了出来,希望大神能给出更优秀的解决方案……ps:现在面试官总有面试时问笔试编程题思路的习惯,呵呵)题目简述:输入一个字符串以及打印次数,为每一个字符创建一个线程,这个线程只负责打印一种字符,多线程循环打印字符串。效果如下:废话不多说直接上代码:public class 笔试题 { //标识

2016-10-04 11:49:29

多线程编程(一)——写一个简单的死锁

(整个九月忙着找工作,好多收获,好多遗憾,最终结局还可以接受,技术路还很远,再接再厉!面去哪儿网时,写惯了算法的我突然让写了几个多线程编程,有点蒙蔽,最近好好整理一下)死锁发生的原因:1、系统资源有限2、进程或线程推进顺序不恰当3、资源分配不当死锁发生的四个条件:1、互斥条件:一份资源每次只能被一个进程或线程使用(在Java中一般体现为,一个对象锁只能被一个线程持有)2

2016-10-03 19:11:50

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!