随着需求迭代,团队代码量逐渐增多,熵增崭露头角。临近月底,我打开部分程序,再做一次代码走查。 ✅两点之间直线最短我在做代码走查的时候,发现一个service方法里有这么一段代码ListplatOrderList=platOrderService.selectByOrderIds(Lists.newArrayList(bankOrder.getOrderId()));if(CollectionUtils.isEmpty(platOrderList)){throwBizException.build("服务商未落单");}paymentReq.setOrigTransNo(platOrderLis
1.什么是爬虫?根据百度百科的定义,网络爬虫,又称为网页蜘蛛,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。人们如今的生活,大都离不开网络,发一条微信,电子支付买一杯奶茶,刷一条微博,等等,都依赖于网络的便携性。但是,互联网茁壮成长的同时,海量的信息每天也会以指数级增长的方式充斥到网络环境中,那么如何快速高效地找到我们需要的信息,成为了很关键的功能,于是搜索引擎诞生了。搜索引擎替我们把很多网络信息做了筛选,当我们查询某项内容时,搜索引擎可以计算出一个排名,来展现查询相关的内容。那么面对海量的信息,搜索引擎就是利用爬虫对数据进行了整合和筛选操作,为人们在网络海洋中快速挖掘有用的信息提
1.什么是爬虫?根据百度百科的定义,网络爬虫,又称为网页蜘蛛,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。人们如今的生活,大都离不开网络,发一条微信,电子支付买一杯奶茶,刷一条微博,等等,都依赖于网络的便携性。但是,互联网茁壮成长的同时,海量的信息每天也会以指数级增长的方式充斥到网络环境中,那么如何快速高效地找到我们需要的信息,成为了很关键的功能,于是搜索引擎诞生了。搜索引擎替我们把很多网络信息做了筛选,当我们查询某项内容时,搜索引擎可以计算出一个排名,来展现查询相关的内容。那么面对海量的信息,搜索引擎就是利用爬虫对数据进行了整合和筛选操作,为人们在网络海洋中快速挖掘有用的信息提
:is()你是否曾经写过下方这样冗余的CSS选择器:.activea,.activebutton,.activelabel{color:steelblue;}其实上面这段代码可以这样写:.active:is(a,button,label){color:steelblue;}看~是不是简洁了很多!是的,你可以使用:is()对选择器的任何部分进行分组,例如,你可以对如下代码:.sectionh2,.asideh2,.navh2{color:steelblue;}进行转换::is(.section,.aside,.nav)h2{color:steelblue;}但是:is()不仅对父选择器和子选择器
:is()你是否曾经写过下方这样冗余的CSS选择器:.activea,.activebutton,.activelabel{color:steelblue;}其实上面这段代码可以这样写:.active:is(a,button,label){color:steelblue;}看~是不是简洁了很多!是的,你可以使用:is()对选择器的任何部分进行分组,例如,你可以对如下代码:.sectionh2,.asideh2,.navh2{color:steelblue;}进行转换::is(.section,.aside,.nav)h2{color:steelblue;}但是:is()不仅对父选择器和子选择器
HashMap设计原理与实现(下篇)200行带你写自己的HashMap!!!我们在上篇文章哈希表的设计原理当中已经大体说明了哈希表的实现原理,在这篇文章当中我们将自己动手实现我们自己的HashMap,完整的代码在文章末尾。在本篇文章当中主要通过线性探测法,从最基本的数组再到HashMap当中节点的设计,一步一步的实现一个能够实现Key、Value映射的容器,写出我们自己的哈希表MyHashMap,让可以具备HashMap最常见的两个功能,put和get方法。我们的数组当中应该存储什么样数据?在上篇哈希表的设计原理当中我们已经仔细说明,在HashMap当中我们是使用数组去存储具体的数据的,那么在
HashMap设计原理与实现(下篇)200行带你写自己的HashMap!!!我们在上篇文章哈希表的设计原理当中已经大体说明了哈希表的实现原理,在这篇文章当中我们将自己动手实现我们自己的HashMap,完整的代码在文章末尾。在本篇文章当中主要通过线性探测法,从最基本的数组再到HashMap当中节点的设计,一步一步的实现一个能够实现Key、Value映射的容器,写出我们自己的哈希表MyHashMap,让可以具备HashMap最常见的两个功能,put和get方法。我们的数组当中应该存储什么样数据?在上篇哈希表的设计原理当中我们已经仔细说明,在HashMap当中我们是使用数组去存储具体的数据的,那么在
哈喽,大家好,我是了不起。之前写过关于ApachePulsar的简单示例,用来了解如何使用Pulsar这个新生代的消息队列中间件,但是如果想要在项目中使用,还会欠缺很多,最明显的就是集成复杂,如果你用过其他消息中间件,比如Kafka、RabbitMq,只需要简单的引入jar,就可以通过注解+配置快速集成到项目中。开始一个PulsarStarter既然已经了解了 ApachePulsar,又认识了 spring-boot-starter,今天不妨来看下如何写一个pulsar-spring-boot-starter模块。目标写一个完整的类似kafka-spring-boot-starter(spr
哈喽,大家好,我是了不起。之前写过关于ApachePulsar的简单示例,用来了解如何使用Pulsar这个新生代的消息队列中间件,但是如果想要在项目中使用,还会欠缺很多,最明显的就是集成复杂,如果你用过其他消息中间件,比如Kafka、RabbitMq,只需要简单的引入jar,就可以通过注解+配置快速集成到项目中。开始一个PulsarStarter既然已经了解了 ApachePulsar,又认识了 spring-boot-starter,今天不妨来看下如何写一个pulsar-spring-boot-starter模块。目标写一个完整的类似kafka-spring-boot-starter(spr
什么是sidecar?边车sidecar,直译为边车。如上图所示,边车就是加装在摩托车旁来达到拓展功能的目的,比如行驶更加稳定,可以拉更多的人和货物,坐在边车上的人可以给驾驶员指路等。边车模式通过给应用服务加装一个“边车”来达到控制和逻辑的分离的目的。对于微服务来讲,我们可以用边车模式来做诸如日志收集、服务注册、服务发现、限流、鉴权等不需要业务服务实现的控制面板能力。通常和边车模式比较的就是像spring-cloud那样的sdk模式,像上面提到的这些能力都通过sdk实现。image.png这两种实现模式各有优劣,sidecar模式会引入额外的性能损耗以及延时,但传统的sdk模式会让代码变得臃肿