自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Leeon的博客

所有的迷茫都是想得太多,做的太少,共勉!

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

写在前面:做供应链业务一年有余了,这一年里MQ帮我们解决了很多问题,在此做一些经验总结;另外,各个公司消息中间件提供的功能大同小异,最基础的推消息、下游异常重试机制应该是都具备的,本文所述也是建立在这样的能力基础上的~ 场景一:削峰填谷,降低响应时间,下游异常自动重试、保证成功 举例:对库存模...

2018-12-16 16:31:31 441 2

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

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

2018-04-10 00:03:40 3607 0

原创 MySQL InnoDB锁机制分享

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

2018-04-01 01:40:38 735 1

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

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

2018-06-21 22:00:37 3098 0

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

<?php /** * 判断二维数组中指定Key是否存在重复Value * @param array $arrInput 二维数组 * @param string $strKey 键名 * @return bool */ function hasRepeatedValue...

2018-05-13 14:59:31 1941 0

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

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

2018-05-13 14:55:38 9425 0

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

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

2018-03-30 17:12:22 2303 0

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

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

2018-03-30 17:09:16 1206 2

原创 expect实现自动登录脚本

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

2018-03-30 16:47:46 2115 0

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

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

2018-03-30 16:36:41 205 0

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

一、find指令——查找指令最常用参数:【-name】   根据名称查找【-iname】  根据名称查找,且忽略大小写差异最常用命令:【find 目录名 -name 文件或目录名】     根据文件名在指定目录下查找文件或目录【find 目录名 -iname 文件或目录名】    同上,-inam...

2017-12-03 18:39:19 553 1

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

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

2017-10-17 10:27:29 12689 2

原创 初识Redis与Memcached

一、Redis与Memcached区别(初识版): 1、Memcached只提供String一种value类型;而Redis除了支持String数据类型,同时还提供Hash、List、Set、Sorted Set等数据类型。 2、Memcached最大键长250个字符,键值最大容量1MB;Redi...

2017-09-12 23:01:23 547 0

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

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

2017-09-09 14:09:59 27218 0

原创 Shell、Bash,与终端配置文件

shell——命令解析器,也是一种程序设计语言 bash——是shell的具体实例,zsh、bash都是shell的实例在终端中可以通过【echo $SHELL】指令查看当前使用的shell实例,可以通过【chsh -s /bin/zsh】切换成zsh或其他shell实例。全局配置文件(都在/e...

2017-09-07 20:26:53 2346 0

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

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

2017-09-06 23:48:38 369 0

原创 回来了&继续加油

博客搬家:https://segmentfault.com/blog/leeonfancy 经历了一些变动,来到了一家『同城物流』公司做『新零售供应链』,运气不错,遇到非常棒的团队,有幸『从零到一』经历了几个大系统的设计研发,要学习的还很多很多,继续加油! 距离我上一篇博客将将近一年了...

2017-09-06 23:44:42 659 2

转载 UML类图中几种关系的总结

在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)          1. 泛化(Generalizat...

2016-10-07 10:44:55 1038 0

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

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

2016-10-04 11:49:29 3420 2

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

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

2016-10-03 19:11:50 8659 0

转载 Java远程方法调用RMI简介

Java远程方法调用RMI简介   Java RMI (Remote Method Invocation 远程方法调用)是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能力上,...

2016-09-26 21:56:51 624 0

转载 Java 内存区域和GC机制最详解

Java 内存区域和GC机制 目录 Java垃圾回收概况Java内存区域Java对象的访问方式Java内存分配机制Java GC机制垃圾收集器 Java垃圾回收概况   Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一...

2016-09-22 01:35:35 2052 0

原创 Java核心基础之容易被忽视的细节问题——异常处理

不管是工作还是面试,细节决定成败。 1、在try块中声明的变量是局部变量,在catch、finally、以及异常处理外都不能被访问。所以我们要把InputStream/OutputStream一类的变量声明在try块外,以方便在finally块中关闭连接。

2016-09-17 17:08:04 644 0

原创 IP、TCP、UDP首部详解

一、IP首部: 1、第一个4字节(也就是第一行): (1)版本号(Version),4位;用于标识IP协议版本,IPv4是0100,IPv6是0110,也就是二进制的4和6。 (2)首部长度(Internet Header Length),4位;用于标识首部的长度,单位为4字节,...

2016-09-16 11:02:32 14763 0

转载 基础才是王道——TCP/IP详解学习笔记 这位仁兄写得太好了

TCP/IP详解学习笔记 这位仁兄写得太好了 TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器 T...

2016-09-15 21:26:22 34387 0

原创 JavaWeb核心基础面试知识深度详解

一、Servlet是什么?JSP是什么?它们的联系与区别是什么? Servlet是Java编写的运行在Servlet容器的服务端程序,狭义的Servlet是指Servlet接口,广义的Servlet是指任何实现Servlet接口的类,我们一般理解的为后者。Servlet的作用是接收浏览器发给服务器...

2016-09-15 21:19:31 12740 0

转载 Java并发编程:CountDownLatch、CyclicBarrier和Semaphore

Java并发编程:CountDownLatch、CyclicBarrier和Semaphore(转载自海子的博客)   在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一...

2016-09-13 15:12:25 742 0

原创 Java多线程必须掌握的十个问题

在此列举的只是Java多线程最基础的知识,也是面试官最常问到的,先打牢基础,再去探讨底层原理或者高级用法,除了这十个问题,在此再推荐一些其他的资料: JVM底层又是如何实现synchronized的:http://www.open-open.com/lib/view/open13524315263...

2016-09-09 18:19:29 11116 1

转载 Java中断interrupt详解

interrupt简述 interrupt() 方法只是改变中断状态而已,它不会中断一个正在运行的线程。这一方法实际完成的是,给受阻塞的线程发出一个中断信号,这样受阻线程就得以退出阻塞的状态。 更确切的说,如果线程被Object.wait, Thread.join和Thread.sleep三...

2016-09-09 11:19:09 7917 1

原创 Java中如何正确而优雅的终止运行中的线程

Java中终止线程的方式主要有三种: 1、使用stop()方法,已被弃用。原因是:stop()是立即终止,会导致一些数据被到处理一部分就会被终止,而用户并不知道哪些数据被处理,哪些没有被处理,产生了不完整的“残疾”数据,不符合完整性,所以被废弃。So, forget it! 2、使用volat...

2016-09-09 10:42:21 16420 6

原创 单例模式三种模式,饿汉、饱汉、双重锁模式,实例及优劣详解

单例模式是一种很基础的设计模式,在面试时可能会被要求手写不同类型的单例模式代码,主要有三种模式: 1、饿汉模式: //饿汉模式,很饿很着急,所以类加载时即创建实例对象 public class Singleton1 { private static Singleton1 singleto...

2016-09-05 11:21:57 16631 2

原创 Spring原理初探

一、Spring的设计理念概述 Spring核心:Spring三大组件为Context、Bean、Core,核心为Bean,Bean对于Spring就相当于对象对于面向对象,其重要性可想而知。 Spring流行原因:解决了一个非常关键的问题,通过Spring,可以把对象之间的依赖交由配置文件管理,...

2016-09-04 23:29:49 797 2

原创 Java并发核心基础——线程池使用及底层实现机制详解

Java线程池概述: 从使用入手: java.util.concurrent.Executosr是线程池的静态工厂,我们通常使用它方便地生产各种类型的线程池,主要的方法有三种: 1、newSingleThreadExecutor()——创建一个单线程的线程池 2、newFixedThreadP...

2016-08-31 23:03:32 10899 1

原创 《Java虚拟机》必知必会——十四个问题总结(内存模型+GC)

一、Java概述 1、Java相较于PHP、C#、Ruby等一样很优秀的编程语言的优势是什么? (1)体系结构中立,跨平台性能优越。Java程序依赖于JVM运行,javac编译器编译Java程序为平台通用的字节码文件(.class),再由JVM与不同操作系统匹配,装载字节码并解释(也有...

2016-08-30 12:11:47 3471 0

原创 细节决定成败,浅析一些容易被忽视的Java关键字

一、default关键字 default关键字,并不是访问修饰符中的default(默认的访问权限,不加public、private、protected访问修饰符的情况自动使用,同一包下的类可以访问字段),而是Java8的新特性,default关键字是不能修饰字段的。 Java8以前的认知,J...

2016-08-28 22:38:38 1540 0

原创 Spring AOP四种实现方式Demo详解与相关知识探究

一、前言 在网络上看到一篇博客Spring实现AOP的4种方式,博主写的很通俗易懂,但排版实在抓狂,对于我这么一个对排版、代码格式有强迫症的人来说,实在是不能忍受~~~~(>_ 我亲手实现了一遍,重新整理,加上了一些不易关注到的细节、漏掉的知识,以及自己对AOP的一些理解,写成这篇博客。...

2016-08-27 18:19:05 25727 7

原创 MySQL性能优化——易实现的MySQL优化方案汇总

1、索引优化及索引失效情况汇总2、表结构优化小技巧3、临时表的优化4、其它优化技巧

2016-08-26 16:44:10 16618 1

原创 Java反射机制实例详解

一、前言 类其实也是一种对象,是java.lang.Class类的实例。编译阶段类信息会被编译成.class文件,在类加载阶段,类加载器把.class文件读入JVM内存,生成java.lang.Class对象(这时已经可以通过Class对象查看类信息了),再经过类的连接(验证、准备、解析)与类的...

2016-08-25 19:33:08 1161 0

原创 关于JVM一个容易被忽略的小问题

一个例子: public class A{ public static int a = 6; } 然后两次运行程序: 第一次: public class Test1{ public static void main(String[] args){ A a1 = new A(); a1....

2016-08-25 10:22:22 479 0

原创 Java定时框架Quartz实例详解与定时任务的Mongodb、Mysql持久化实现(三)Quartz持久化

就像我在上一篇中说的,把调度器信息存储在内存中非常的快也易于配置。但当调度器进程一旦被终止,所有的 Job 和 Trigger 的状态就丢失了。所以我们就需要把调度器信息持久化到数据库,在服务器重启时就可以自动启动终止的任务。Quartz不可能没有考虑到这个问题,可以通过引入Jar包与配置实现,并...

2016-08-12 23:18:29 4445 1

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