4 cool_summer_moon

尚未进行身份认证

我要认证

最近在把博客里面的内容进行系统的整理,平常比较懒,没怎么写博客,趁最近有时间,做一个系统的整理,进行查漏补缺,如有不正确的望大家指正,笔者每个例子都经过测试,力争不误人子弟。

等级
TA的排名 3w+

深入理解HTTP——开篇

前言两个月没有写文章了,一个原因是入职新公司,确实有点忙,另外一个是没有找到合适的主题,想着马上金九银十了, 总得收获点果实,这次准备摘一串大葡萄,HTTP系列的内容确实有点多,下面将列一个提纲:1、web基础...

2020-09-01 21:38:58

排序算法之基数排序【Java版】

引言本篇是排序算法的最后一篇,基数排序,桶排序的升级版。1、算法步骤1、首先对一组数据按照个位上的数字进行桶排序2、然后对这组数据继续按照十位上的数字进行桶排序3、依次循环至这组数据的最大数位置上,排序就完成了。2、时间复杂度平均时间复杂度O(n + k)3、算法实现public class RadixSort { public static void main(String[] args) { int[] numbers = {12,2,24,30,6,16};

2020-07-04 19:56:16

排序算法之桶排序【Java版】

引言本篇是排序算法的第八篇,桶排序,桶排序是计数排序的升级版。1、算法步骤1、设定一个基准,将待排序的数字按照一定范围,从小到大的平均分在N个桶中,此时桶已经排好序,桶中的元素还未排序;2、将桶中的元素进行排序。3、将每个桶按照从小到大的编号,依次取出里面的元素放入到待排序数组中,排序完成。2、时间复杂度平均时间复杂度O(n + k)3、算法实现public class BucketSort { public static void main(String[] args) {

2020-06-23 12:00:50

设计模式——命令模式

引言网上有很多介绍设计模式系列的优秀文章,看懂不一定是真懂,能写出来,说出个1、2、3点才算是真的懂了,如果能灵活的应用到工作中才算是真的熟练。1、模式场景电视机遥控器,按开、关键就可以控制电视的开启和关闭。2、模式结构Command: 抽象命令类(模拟场景中开、关键命令抽象类)ConcreteCommand: 具体命令类(模拟场景中的开、关命令)Invoker: 调用者(模拟场景中的遥控器)Receiver: 接收者(模拟场景中的电视机)3、示例代码3.1、抽象命令类publi

2020-06-22 18:06:31

设计模式——代理模式

引言网上有很多介绍设计模式系列的优秀文章,看懂不一定是真懂,能写出来,说出个1、2、3点才算是真的懂了,如果能灵活的应用到工作中才算是真的熟练。1、模式场景记录不同的动物,比如小狗、小猫吃饭、睡觉、玩耍的时间。2、模式结构Subject: 抽象角色(模拟场景中的动物)Proxy: 代理角色(模拟场景中的动物代理)RealSubject: 真实角色(模拟场景中的小狗、小猫)3、示例代码3.1、抽象角色public interface Animal { void eat() t

2020-06-21 21:45:04

设计模式——外观模式

引言网上有很多介绍设计模式系列的优秀文章,看懂不一定是真懂,能写出来,说出个1、2、3点才算是真的懂了,如果能灵活的应用到工作中才算是真的熟练。1、模式场景餐馆里面只要跟接待员说:来一份鱼香肉丝。服务员会把这道菜端到你面前,至于中间的下单、烹饪、上菜等细节,我们并不关心。2、模式结构Facade: 外观角色(模拟场景中的接待员)SubSystem:子系统角色(模拟场景中下单、烹饪、上菜服务)3、示例代码3.1、外观角色public class Receptionist { pri

2020-06-21 18:11:19

设计模式——桥接模式

引言网上有很多介绍设计模式系列的优秀文章,看懂不一定是真懂,能写出来,说出个1、2、3点才算是真的懂了,如果能灵活的应用到工作中才算是真的熟练。1、模式场景现在需要开发一个跨平台的视频播放器,在Linux、Windows平台上面都能播放Mp4、AVL格式的视频。2、模式结构CoolSummerMoonPlayer:抽象类(模拟场景中视频播放器)LinuxPlayer、WindowsPlayer:扩充抽象类(模拟场景中Linux、Windows平台)Media:实现类接口(模拟场景中播放器格式

2020-06-21 11:37:57

设计模式——适配器模式

引言网上有很多介绍设计模式系列的优秀文章,看懂不一定是真懂,能写出来,说出个1、2、3点才算是真的懂了,如果能灵活的应用到工作中才算是真的熟练。1、模式场景手机充电器的数据线有typec、usb等类型,我们分别模拟一个usb适配器和typec的适配器。2、模式结构目标抽象类 Target(对应模拟场景中的充电器)适配器类 Adapter(对应模拟场景中usb适配器、typec适配器)适配者类 Adaptee(对应模拟场景中usb、typec数据线)客户类 Client(对应模拟场景中手机充

2020-06-20 22:34:55

设计模式——单例模式

引言网上有很多介绍设计模式系列的优秀文章,看懂不一定是真懂,能写出来,说出个1、2、3点才算是真的懂了,如果能灵活的应用到工作中才算是真的熟练。1、模式场景定义系统中一个唯一的ID生成器。2、模式结构Singleton:单例定义一个类只有一个实例,该实例向整个系统提供服务。3、示例代码3.1、单例public class IDSingleton { private AtomicLong atomicLong = new AtomicLong(0); private sta

2020-06-20 17:58:08

设计模式——建造者模式

引言网上有很多介绍设计模式系列的优秀文章,看懂不一定是真懂,能写出来,说出个1、2、3点才算是真的懂了,如果能灵活的应用到工作中才算是真的熟练。1、模式场景汽车的构造是复杂的,整车包括车架、车轮、发动机等。消费者无需关心汽车的构造细节,只需告诉厂商想要奔驰还是宝马,提车的时候,就可以提取相应的车。2、模式结构1、Builder:抽象建造者定义构造的类型和流程,对应模式场景中车的组装过程。2、ConcreteBuilder:具体建造者定义具体构造流程的实现,对应模式场景中奔驰车、宝马车组装过程

2020-06-20 11:44:08

设计模式——工厂模式

引言网上有很多介绍设计模式系列的优秀文章,看懂不一定是真懂,能写出来,说出个1、2、3点才算是真的懂了,如果能灵活的应用到工作中才算是真的熟练。1、模式场景我们上学的时候经常去文具店买笔,现在需要买铅笔、钢笔、彩笔,有一种选择是分别去铅笔专卖店,钢笔专卖店,彩笔专卖店买到对应的笔。2、模式结构1、抽象产品类:Product(对应模式场景中的笔)抽象产品是所有实例公有的父类接口。2、具体产品类:ConcreteProduct(对应模式场景中具体的铅笔、钢笔、彩笔等)实现抽象产品类的具体产品类实

2020-06-19 20:31:54

设计模式——简单工厂模式

引言网上有很多介绍设计模式系列的优秀文章,看懂不一定是真懂,能写出来,说出个1、2、3点才算是真的懂了,如果能灵活的应用到工作中才算是真的熟练,博主写这个系列主要是加深自己的理解,如有错误的地方,请大家留言指正。1、模式场景我们上学的时候经常去文具店买笔,进店之后,我们只需要说出笔的类型:铅笔、钢笔、彩笔等,售货员就递给我们需要的笔。2、模式结构1、工厂类:Factory(对应模式场景中的售货员)工厂类负责创建所有实例的内部逻辑。2、抽象产品类:Product(对应模式场景中的笔)抽象产品是

2020-06-19 16:51:43

排序算法之计数排序【Java版】

引言本篇是排序算法的第七篇,计数排序。1、算法步骤1、将待排序的数组里的值,作为新数组中的下标;2、新数组下标中对应的值重复的计数累加;3、最后新数组中下标有值的依次放到数组中(下标本身已经排好序了)。2、时间复杂度平均时间复杂度O(n + k)3、算法实现public class CountSort { public static void main(String[] args) { int[] numbers = {12,2,24,30,6,16};

2020-06-18 17:45:47

支付的那些事——经验篇

引言本篇是本次支付系列的一个终篇,是博主就目前的支付经验一个总结,如果后期博主能有幸接触到大型支付公司的架构和有更深层次的理解,可能会继续更新本系列。1、银行卡签约1.1、支付通道优先级第三方支付平台稳定性参差不齐,稳定点的价格会贵点,便宜的可能会有各种意想不到的坑等着你,傲娇点的支付通道会要求最低交易量。设置支付通道的优先级,就是在支付通道关闭后,系统自动的切换备选支付通道。1.2、银行卡签约次数第三方支付平台的收费标准是签约成功一次就收费一次,同一张银行卡同一个支付通道的也要收费。因此,系统

2020-06-14 10:21:12

排序算法之快速排序【Java版】

引言上一篇介绍的归并算法是一种分治思想,本篇的快速排序也是一种分治思想,这个分治思想真的值得好好感悟下,排序不仅仅是一种算法,最重要的是体会这种思想!1、算法步骤1、从待排序的序列中找一个数,作为本次比较的基准。2、将比基准小的放到基准前面,比基准大的放到基准后面。3、重复上述操作,直到排序完成。2、时间复杂度平均时间复杂度O(n log n)3、算法实现public class QuickSort { public static void main(String[] args)

2020-06-13 10:18:57

支付的那些事——数据库篇

引言最近在投简历了,怕入职新公司,没时间总结了,想着这个系列还是要写完,虽然也没几个人看吧,但是,还是要有始有终,留给有缘人。1、支付渠道支付渠道也叫支付通道,我们都知道鸡蛋不能放在一个篮子里面,所以我们的支付渠道也是多个的,保证业务少受支付通道的影响。一个支付通道停了,可以切换其它支付通道,如何切换平稳过渡,成本最低,将在下一篇经验篇中介绍。支付渠道表主要字段:渠道名称、渠道编码、商户号、公钥、私钥、异步回调地址、渠道状态、版本号(乐观锁)2、银行卡签约用户银行卡签约成功,第三方支付才能根据

2020-06-10 17:48:48

排序算法之归并排序【Java版】

引言本篇是排序算法的第五篇,归并排序。1、算法步骤归并算法采用分治策略,如下图(图片来自网络):从上图可以看出算法步骤是:1、先将待排序序列用二分法形式递归的分开。2、再将分开的数据排序后递归的合并。2、时间复杂度平均时间复杂度O(n log n)3、算法实现public class MergeSort { public static void main(String[] args) { int[] numbers = {12,2,24,30,6,16};

2020-06-09 20:59:02

排序算法之希尔排序【Java版】

引言本篇是排序算法的第三篇,希尔排序,是插入排序的一个更高效的改进版。1、算法步骤1、对需要排序的数列,按照不同的步长进行分组;2、对分组的数列进行组内排序;3、然后继续减小步长,重复1、2操作,当步长为1的时候,排序就完成了。下图是网上找的,下面的d表示间隔,也叫做增量,相同颜色的是一组:2、时间复杂度平均时间复杂度O(n log n),最好情况O(n log2^22 n)3、算法实现public class ShellSort { public static void m

2020-06-08 21:53:31

支付的那些事——领域模型篇

引言前一篇文章中,我们有了一些重要的支付概念,本篇我们先建立领域模型(也称业务模型),技术是服务于业务的,开发人员都明白为什么我这里要强调这个,业务没搞明白,吭哧吭哧的开发,多半被项目经理唾沫淹死。1、业务关系商户需要在第三方支付平台注册,并开通相关的代付、代扣协议。用户需要先操作银行卡签约,签约完成才能进行后续的支付、查询、退款操作。商户作为中间层处理,也需要有用户的几种基本操作。商户还需完成和第三方支付平台的对账,通常都是以天为单位进行对账。对账无误,则当日资金结算完毕。疑问解答:

2020-06-07 17:56:18

排序算法之插入排序【Java版】

引言本篇是排序算法的第三篇,插入排序。1、算法步骤以需要排序的数组中第一位为基准点,从后面顺序选取一个数字,与前面的依次进行比较。如果结果小于被比较数字,则将被比较数字后移,并继续与之前的数字比较,直到大于被比数字,然后插入。2、时间复杂度平均时间复杂度O(n2n^2n2),最好情况O(n)3、算法实现public class InsertSort { public static void main(String[] args) { int[] numbers

2020-06-07 11:44:00

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 原力探索 · S
    原力探索 · S
    在《原力计划【第二季】》打卡挑战活动中,发布 12 篇原创文章参与活动的博主,即可获得此勋章。(本次活动结束后统一统计发放)