一、介绍过滤器模式,顾名思义,从名字上就可以看出主要用于过滤对象,实现起来也很简单!从设计的角度看,过滤器模式涉及到三个角色:抽象过滤器角色:主要定义过滤器的行为;具体滤器角色:实现或者继承抽象过滤器,完善具体算法;客户端:客户类提出使用具体类的请求;话不多说,代码直接撸起来~二、示例下面,我们以班级同学为例,过滤出满足要求的同学,实现过程如下!先创建一个数据实体类Person,如下:数据实...
2022-09-21 10:43:46 5638浏览 0点赞 0回复 0收藏
授权机制,当我们说到这个问题的时候,大家对它的第一印象是在哪个地方呢?是不是曾经某培训机构教授的SSO单点登录的,是的没错,而这种SSO的单点登录在当年的培训机构中,使用的就是Session共享,也就是用Redis做中间模拟Session,但是授权机制真的有这么简单么?接下来阿粉就来强势对比一下关于授权机制了。CookieSession认证授权CookieSession认证机制就是为一次请求认证在服务端创建一个Session对象,同时在客户端的浏览器...
2022-09-21 10:43:35 5394浏览 0点赞 0回复 0收藏
一、介绍什么是责任链模式?(ChainofResponsibilityPattern),简单的说,为请求者和接受者之间创建一条对象处理链路,避免请求发送者与接收者耦合在一起!例如,如下图:从设计的角度看,责任链模式涉及到四个角色:请求角色:可以是外部的请求或者内部的请求,最终体现就是一个请求数据体;抽象处理器角色:定义处理的一些基本的规范;具体处理器角色:实现或者继承抽象处理器,完成具体的计算任务;接着角色:用于接受请求...
2022-09-21 10:43:21 5070浏览 0点赞 0回复 0收藏
阿粉的一个小学妹最近刚从某个小互联网公司跳槽,然后最近面试的挺多的,一个不善言语的小姑娘,技术还是OK的,本来之前是做UI的,但是时间长了,感觉没太大意思,所以就开始学了后端,然后从原有公司慢慢的转为了后端开发人,也就是我们所说的“程序猿”,最近面试给阿粉谈了谈她的面试经验。阿粉比较印象深刻的一句话就是,我给你画个图,你看一下,这是对面试官说的,事情是什么样子的呢?你了解Redis穿透和雪崩么?为什么这...
2022-09-21 10:43:01 4376浏览 0点赞 0回复 0收藏
前言首先说下我们为什么需要分布式ID,以及分布式ID是用来解决什么问题的。当我们的项目还处于单体架构的时候,我们使用数据库的自增ID就可以解决很多数据标识问题。但是随着我们的业务发展我们的架构就会逐渐演变成分布式架构,那么这个时候再使用数据的自增ID就不行了,因为一个业务的数据可能会放在好几个数据库里面,此时我们就需要一个分布式ID用来标识一条数据,因此我们需要一个分布式ID的生成服务。那么分布式ID的服务...
2022-09-21 10:42:42 6403浏览 0点赞 0回复 0收藏
Hello大家好,我是阿粉,在了解什么是Serveless架构之前,我们先看下传统的项目发布和部署的流程是什么样子的。物理机最初的时候每个公司如果想发布自己的应用,则需要建设自己的机房,然后购买服务器主机,组装路由器交换机和网络,网络通了过后还要安装Linux系统以及安装各种软件,最后将开发完成的Java项目打包放到Tomact容器里面或者以Jar包的形式运行起来对外服务。这个过程好一点的公司是...
2022-09-21 10:42:24 3557浏览 0点赞 0回复 0收藏
阿粉的小学弟最近开始了面试,毕竟也算是工作过一两年的人,现在面试也都开始造飞机了,小学弟开始在面试官面前疯狂造飞机了,也不知道这个飞机好不好用,而开始造飞机的这块内容,就是关于Redis的,而面试官问Redis的最多的问题,就是如何保证你的Redis和MySQL数据的一致性?接下来我们分别分几种情况来考虑一下这个问题吧。Redis和MySQL搭配使用在什么地方?缓存量大但又不常变化的数据也就是说,当我们在使用Redis和MySQL的...
2022-09-21 10:42:04 4711浏览 0点赞 0回复 0收藏
一、介绍在上篇文章中,我们详细的介绍了kafka的架构模型,在集群环境中,kafka可以通过设置分区数来加快数据的消费速度。光知道理论还不行,我们得真真切切的实践起来才行!下面,我将结合生产环境的真实案例,以SpringBoot技术框架为基础,向大家介绍kafka的使用以及如何实现数据高吞吐!二、程序实践最近,公司大数据团队每天凌晨会将客户的订单数据进行统计计算,然后把业绩数据推送给我们,以便销售人员每天能看到...
2022-09-21 10:41:12 8206浏览 0点赞 0回复 0收藏
大家都知道传统的BIO网络模型有各种各样的缺点,于是就有了关于NIO网络模型的出现,更多的人也都开始喜欢使用Netty这种框架来进行开发,而摒弃了传统的BIO的模型,今天阿粉就给大家说一下为什么这么多人对BIO网络模型这么的头疼。BIOBIO网络模型实际上就是使用传统的JavaIO编程,相关联的类和接口都在java.io下。BIO模型到底是个什么玩意?BIO(blockingIO)同步阻塞,我们看这个翻译,blockingIO,实际上就能看出来,就是阻塞,当...
2022-09-21 10:40:50 4482浏览 0点赞 0回复 0收藏
前几天,阿粉给大家说了关于Activiti的使用,后台就有好友私信阿粉说,这些表都不知道是什么意思,不行呀,看不明白呀,于是阿粉就打算再这次给大家讲一下关于Activiti的这些表中的字段都是表示的什么意思。Activiti的表表说明actgebytearray通用数据actgeproperty流程引擎数据acthiactinst历史节点表acthiattachment历史附件表acthicomment历史意见表acthidetail历史详情acthiidentitylink历史流程人员acthiprocinst历史流程实...
2022-09-21 10:39:21 6936浏览 0点赞 0回复 0收藏
一、介绍在实际的软件系统开发过程中,由于业务的需求,在代码层面实现数据的脱敏还是远远不够的,往往还需要在数据库层面针对某些关键性的敏感信息,例如:身份证号、银行卡号、手机号、工资等信息进行加密存储,实现真正意义的数据混淆脱敏,以满足信息安全的需要。那在实际的研发过程中,我们如何实践呢?二、方案实践在此,提供三套方案以供大家选择。•通过SQL函数实现加解密•对SQL进行解析拦截,实现数据加解密•自定义...
2022-09-16 11:05:10 4843浏览 0点赞 0回复 0收藏
前言上篇文章《为什么大公司都要做流量治理?》跟大家聊了下做流量治理的真正目的是什么。如果你要开发一个流量治理的平台或者一个限流的框架,那么必不可少的就是要选择一种合适的限流算法。本篇文章就跟大家聊聊目前常用的限流算法有哪些。计数器计数器是最简单,最直接明了的限流算法。说白了就是进行数字累加操作,也就是count++这你总能看懂吧!单机限流可以直接使用LongAdder或者AtomicLong这些原子类进行计数操作即可。...
2022-09-16 11:04:52 4487浏览 0点赞 0回复 0收藏
一、背景实际的业务开发过程中,我们经常需要对用户的隐私数据进行脱敏处理,所谓脱敏处理其实就是将数据进行混淆隐藏,例如下图,将用户的手机号、地址等数据信息,采用进行隐藏,以免泄露个人隐私信息。如果需要脱敏的数据范围很小很小,甚至就是指定的字段,一般的处理方式也很简单,就是写一个隐藏方法即可实现数据脱敏。如果是需求很少的情况下,采用这种方式实现没太大问题,好维护!但如果是类似上面那种很多位置的数据...
2022-09-16 11:04:37 1.1w浏览 0点赞 0回复 0收藏
一、背景在上篇文章中,小编有详细的介绍了序列化和反序列化的玩法,以及一些常见的坑点。但是,高端的玩家往往不会仅限于此,熟悉接口开发的同学一定知道,能将数据对象很轻松的实现多平台之间的通信、对象持久化存储,序列化和反序列化是一种非常有效的手段,例如如下应用场景,对象必须100%实现序列化。•DUBBO:对象传输必须要实现序列化•RMI:Java的一组拥护开发分布式应用程序API,实现了不同操作系统之间程序的方法调用...
2022-09-16 11:04:14 7052浏览 0点赞 0回复 0收藏
一、介绍我们常说的发布订阅设计模式,也叫观察者模式,也就是事件监听机制,观察者模式订阅了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当这个主题对象发生改变时,会通知所有的观察者对象,使他们能够自动的更新自己!一个软件系统要求某个对象在发生变化时,某些其他的对象作出相应的改变,能做到这点的设计方案有很多,但观察者模式是满足这一要求的各种设计方案中最重要的一种。从整体来看,观察者...
2022-09-16 11:03:41 5000浏览 0点赞 0回复 0收藏
工厂模式(FactoryPattern)是Java中最常用的设计模式之一,今天我们一起来彻底解析一下它。一、介绍从名称上,顾名思义就是创建产品,按类别分为简单工厂模式、工厂方法模式、抽象工厂模式,主要功能都是帮助我们把对象的实例化操作单独抽取出来,优化系统架构,增强系统的扩展性。下面,我们一起来看看各个模式的使用方式。二、简单工厂模式简单工厂模式,对象创建管理方式最为简单,因为其仅仅简单的对不同类对象的创建进行...
2022-09-16 11:03:22 5462浏览 0点赞 0回复 0收藏
前言前几天,指北君有一个朋友小王在面试过程中被吊打了。当时的情况是这样的。面试官:SpringBoot中最重要的注解是什么?你能讲讲为什么最重要吗?小王:SpringBootApplication,这个注解最重要吧。SpringBootApplication注解能够实现Spring组件自动化配置,组件扫描。面试官:那SpringBootApplication注解是怎么实现SpringBoot的自动配置功能呢?小王心想大事不妙,还真没有看过这块源码。支支吾吾回答不上,只好回家等通知了...
2022-09-16 11:03:02 5560浏览 0点赞 0回复 0收藏
前言在平时的API开发过程中,总会遇到一些错误异常没有捕捉到的情况。那有的小伙伴可能会想,这还不简单么,我在API最外层加一个try...catch不就完事了。哈哈哈,没错。这种方法简单粗暴。指北君曾经也是这么干的,但是你转过来想一想,你会在每一个API入口,都去做try...catch吗?这样不是代码非常丑陋的。小伙伴开始思考,突然灵光一现,说我们实现一个AOP来做这事不就完了。没错,使用AOP来实现是最佳的选择。现在指北君就给...
2022-09-16 11:01:19 6643浏览 0点赞 0回复 0收藏
阿粉有点惊叹最近的面试题,因为从之前的基础的面试题,到之后的一些涉及到分布式和微服务的面试题,再到现在的线程池的一些面试题,反正不同的面试官,就有不同的针对方向,可能现在的面试官比较想考验你的多方面的能力吧,而最近,一个读者就反馈给了阿粉说,面试官全程就从线程这块入手,整的自己有点尴尬,但是好在有惊无险的入职了,我们来看看面试官都问了什么内容?进程和线程的概念,你能说一下自己的理解么?这个问题...
2022-09-07 15:17:09 4921浏览 0点赞 0回复 0收藏
我们都知道在遇到一些单线程处理很慢的场景,往往我们会采用多线程的方式进行处理,从而缩短处理时间提升性能。往往这个时候我们就会想到Java中JUC包中为我们提供的线程池创建方法,如下所示,通过JDK自带的Executors类中的几个静态方法,创建我们需要的线程池,再通过ExecutorService的带返回值的submit()或者不带返回值的execute()方式来异步处理业务逻辑。ExecutorServiceexecutorService0Executors.newFixedThreadPool(10);...
2022-09-07 15:16:58 4557浏览 0点赞 0回复 0收藏