自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SQY0809的博客

欢迎关注公众号:麒麟改bug,领取金三银四面试真题总结

  • 博客(336)
  • 收藏
  • 关注

原创 一文带你通过Sentinel源码,读懂微服务限流底层原理!

前言限流是保障服务高可用的方式之一,尤其是在微服务架构中,对接口或资源进行限流可以有效地保障服务的可用性和稳定性。之前的项目中使用的限流措施主要是Guava的RateLimiter。RateLimiter是基于令牌桶流控算法,使用非常简单,但是功能相对比较少。而现在,我们有了一种新的选择,阿里提供的 Sentinel。Sentinel 是阿里巴巴提供的一种限流、熔断中间件,与RateLimiter相比,Sentinel提供了丰富的限流、熔断功能。它支持控制台配置限流、熔断规则,支持集群限流,并可以将

2021-07-31 21:29:36 826

转载 哔哩哔哩三面:如何用Jenkins来实现微服务架构下的自动化部署?

前言在微服务架构中,随着服务越来越多,服务的打包部署就会成为一个相当麻烦的事情。比如说我的mall-swarm项目目前就有8个服务需要部署,有没有什么办法让我们部署一次之后,只要点击执行就可以自动部署呢?当然有!下面我们使用Jenkins来完成一个微服务架构中的自动化部署工作。执行脚本准备首先我们先把需要远程执行的脚本准备好。脚本文件都存放在了mall-swarm项目的/document/sh目录下:上传脚本前在IDEA中修改所有脚本文件的换行符格式为LF,否则脚本会无法执行;微服务学习

2021-07-30 15:21:09 408

原创 VIPKID面试官:说说SpringCloud微服务架构在互联网的优势!

高并发微服务架构设计作为一个 IT 从业人员,我们经常会碰到类似于下面的一些问题:单个项目巨大而沉重,难以维护。系统稳定性得不到更有效的保证。怎样才能持续地提升系统的性能。怎样才能快速地响应需求的变更,并且系统更新不会引起任何抖动。怎样才能更好地适应系统规模化的扩张。针对上面这些问题,我们无时无刻不在努力地进行各种各样的尝试和探索,寻求更好的解决方案,或者使用更先进的技术。目前来看,在互联网环境之中产生的微服务架构设计是一个比较理想的解决方案。Java学习笔记共享地址:spring c

2021-07-29 17:28:19 550

原创 当数据库遇到分布式两者会擦出怎样的火花!

当数据库遇到分布式数据库通常有着完善的事务支持,但是局限于单机的存储和性能,于是就出现了各种分布式解决方案。最近读了《Designing Data-Intensive Applications》这本书,所以做一个总结,供大家做个参考,有什么不对的请大家指正,一起讨论。Java学习笔记共享地址:MySQL学习笔记500多页数据模型数据模型可以说软件开发中最重要的部分,因为影响着我们的思考方式、解题思路以及代码的编写方式。多数应用使用层层叠加的数据模型进行构建,对于每层数据模型的关键问题是:它如何用低一

2021-07-28 17:38:50 220

原创 字节跳动内部Java技术岗‘面试真题’泄露,冒死发布!

前言时间过的好快呀,转眼马上到了金九银十,又是一年跳槽面试季,最近有很多网友都在求大厂面试题,希望可以提前准好面试,如果不准备充分的面试,完全是浪费时间,更是对自己的不负责。所以小编在这里给大家准备了一套Java技术岗面试真题,综合了今年上半年粉丝去阿里、字节、蚂蚁等互联网大厂的面试总结+小编整理的一起分享给大家,希望可以帮助大家,祝大家求职顺利。一、Java基础专题面试二、Java并发专题面试三、Java框架专题面试四、Java性能调优专题面试五、分布式专题面试六、数据库专题面试七、微服

2021-07-27 19:35:14 3476

原创 每日优鲜三面:在Spring Cloud实战中,如何用服务链路追踪Sleuth?

服务链路追踪:Spring Cloud Sleuth我们知道,微服务之间通过网络进行通信,但在我们提供服务的同时,不能保证网络一定是畅通的。相反地,网络是很脆弱的,网络资源也有限,因此我们有必要追踪每个网络请求,了解它们经过了哪些微服务,延迟多少,每个请求所耗费的时间等。只有这样能更好地分析系统瓶颈,解决系统问题。在Spring Cloud 中,我们可以使用Spring Cloud Sleuth组件来实现微服务追踪。Java学习笔记共享地址:spring cloud面试真题笔记。Spring Clo

2021-07-26 17:20:56 209

原创 一文就能看懂的Nginx操作详解,你还在查漏补缺吗!

安装 nginx下载 nginx 的压缩包文件到根目录,yum update #更新系统软件cd /wget nginx.org/download/nginx-1.17.2.tar.gz解压 tar.gz 压缩包文件,进去 nginx-1.17.2tar -xzvf nginx-1.17.2.tar.gzcd nginx-1.17.2进入文件夹后进行配置检查./configure通过安装前的配置检查,发现有报错。检查中发现一些依赖库没有找到,这时候需要先安装 nginx 的一些依赖

2021-07-25 16:09:12 1001 1

原创 火花思维三面:说说Redis分布式锁是如何实现的!

前言近来,分布式的问题被广泛提及,比如分布式事务、分布式框架、ZooKeeper、SpringCloud等等。本文先回顾锁的概念,再介绍分布式锁,以及如何用Redis来实现分布式锁。一、锁的基本了解首先,回顾一下我们工作学习中的锁的概念。为什么要先讲锁再讲分布式锁呢?我们都清楚,锁的作用是要解决多线程对共享资源的访问而产生的线程安全问题,而在平时生活中用到锁的情况其实并不多,可能有些朋友对锁的概念和一些基本的使用不是很清楚,所以我们先看锁,再深入介绍分布式锁。Redis分布式锁面试题答案地址:R

2021-07-23 15:38:47 190

原创 熬了一通宵!你竟然都没有弄懂陌陌面试官问的Java虚拟机内存?

前言什么叫运行时数据区呢,看下图就知道了,今天的重点就围绕这张图讲。一、运行时数据区1、程序计数器(寄存器)当前线程所执行的字节码行号指示器字节码解释器工作依赖计数器控制完成通过执行线程行号记录,让线程轮流切换各条线程之间计数器互不影响线程私有,生命周期与线程相同,随JVM启动而生,JVM关闭而死Java学习笔记共享地址:JVM虚拟机面试题答案解析线程执行Java方法时,记录其正在执行的虚拟机字节码指令地址线程执行Nativan方法时,计数器记录为空(Undefined)唯一在Jav

2021-07-22 15:13:20 154

原创 工作这么多年!很多人竟然不知道线程池的创建方式有7种?

前言根据摩尔定律所说:集成电路上可容纳的晶体管数量每 18 个月翻一番,因此 CPU 上的晶体管数量会越来越多。但随着时间的推移,集成电路上可容纳的晶体管数量已趋向饱和,摩尔定律也渐渐失效,因此多核 CPU 逐渐变为主流,与之相对应的多线程编程也开始变得普及和流行起来,这当然也是很久之前的事了,对于现在而言多线程编程已经成为程序员必备的职业技能了,那接下来我们就来盘一盘“线程池”这个多线程编程中最重要的话题。什么是线程池?线程池(ThreadPool)是一种基于池化思想管理和使用线程的机制。它是将多

2021-07-21 19:50:45 192

原创 好未来面试官:说说强引用、软引用、弱引用、幻象引用有什么区别?

前言在Java语言中,除了原始数据类型的变量,其他所有都是所谓的引用类型,指向各种不同的对象,理解引用对于掌握Java对象生命周期和JVM内部相关机制非常有帮助。今天我要问你的问题是,强引用、软引用、弱引用、幻象引用有什么区别?具体使用场景是什么?Java学习笔记共享地址:Java核心知识点200多页学习笔记不同的引用类型,主要体现的是对象不同的可达性(reachable)状态和对垃圾收集的影响。强引用就是我们最常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还“活着”,垃圾收集器不

2021-07-20 17:13:45 147

转载 一文带你看透Zookeeper中的ZAB协议!

前言ZAB 协议是为分布式协调服务ZooKeeper专门设计的一种支持崩溃恢复的一致性协议。基于该协议,ZooKeeper 实现了一种主从模式的系统架构来保持集群中各个副本之间的数据一致性。今天主要看看这个zab协议的工作原理。Java中间件面试真题 +学习笔记一、什么是ZAB协议话说在分布式系统中一般都要使用主从系统架构模型,指的是一台leader服务器负责外部客户端的写请求。然后其他的都是follower服务器负责读。leader服务器将客户端的写操作数据同步到所有的follower节点中。

2021-07-19 20:35:41 243

原创 房天下面试官:说说你理解的Spring IOC容器!

一. 什么是IoC1. 什么是耦合和内聚耦合指的就是模块之间的依赖关系。模块间的依赖越多,则表示耦合度越高,相应的维护成本就越高。内聚指的是模块内功能之间的联系。模块内功能的联系越紧密,则表示内聚度越高,模块的职责也就越单一。所以在程序开发中应该尽量的降低耦合,提高内聚。也就是设计原则中的开闭原则和单一职责原则。2. 工厂模式工厂模式就是用来解决程序间耦合的一种设计模式。可以把所有要创建的对象放在工厂的一个集合里,当需要使用这个对象的时候,直接从工厂里面取出来用就行。工厂模式的优点:一

2021-07-18 19:41:04 185

转载 完美世界面试官:说一下公平锁和非公平锁的区别?

前言上次我们提到了乐观锁和悲观锁,那我们知道锁的类型还有很多种,我们今天简单聊一下,公平锁和非公平锁两口子,以及他们在我们代码中的实践。正文开始聊之前,我先大概说一下他们两者的定义,帮大家回顾或者认识一下。公平锁:多个线程按照申请锁的顺序去获得锁,线程会直接进入队列去排队,永远都是队列的第一位才能得到锁。优点:所有的线程都能得到资源,不会饿死在队列中。缺点:吞吐量会下降很多,队列里面除了第一个线程,其他的线程都会阻塞,cpu唤醒阻塞线程的开销会很大。非公平锁:多个线程去获取锁的时候,会直接

2021-07-17 20:20:14 144

原创 RabbitMQ架构面试题答不出来怎么办!大佬手绘架构图带你分分钟搞懂!

基础为什么使用 MQ?1、削峰:在某个模块接收到超过最大承受的并发量时,可以通过 MQ 排队来使这些削减同一时刻处理的消息量。减小并发量。2、解耦:在发送 MQ 处理业务时,可以使业务代码与当前的代码解耦,便于维护和拓展。3、异步:异步使得在调用 MQ 后可以去处理其他操作,在 MQ 执行完后会自动反馈结果。MQ缺点1、复杂性提高,引入了其他问题。如消息丢失、重复消费、消息顺序执行等。这些解决方案下面会说到。2、宕机后不可用。可以创建集群来解决。几种 MQ 实现总结ActiveMQ:老牌的

2021-07-15 21:22:19 272

原创 3分钟带你玩转MySQL体系结构和查询原理!

前言数据库在我们工作中是常用的工具,公司的重要业务信息大部分都会存储在数据库中。因此,对于开发人员或运维人员来说,掌握数据库基本原理是必要的技能。无论你使用的是何种数据库,了解数据库的体系架构是非常必要的。“知此知彼,方能百战百胜”。下面小编就带你来了解MySQL的体系架构。首先我们得明确MySQL的体系架构主要是数据库和数据库实例组成的,在了解MySQL的实质之前,先来了解以下的概念。MySQL是一种单进程多线程的数据库,而数据库实例则是以一个进程的方式在系统中体现出来的。MySQL的文件

2021-07-14 19:41:38 401

原创 易车面试官:说说MySQL内存结构、索引、集群、底层原理!

MYSQL内部模块[Connection Pool] (授权、线程复用、连接限制、内存检测等)=>[SQL Interface] (DML、DDL、Views等) [Parser] (Query Translation、Object privilege) [Optimizer] (Access Paths、 统计分析) [Caches & Buffers]=>[Pluggable Storage Engines]复制代码一条SQL执行过程先看看一条查询SQLM

2021-07-13 16:24:21 294

原创 一文带你深入剖析Spring IOC 实现原理

IOC是什么IOC是“Inversion of Control”的缩写,翻译过来就是“控制反转”。我们先不深究其在Spring中的含义,先从字面上进行分析。打个比方来说:结婚前你的工资完全由你来支配,想怎么花就怎么花。结婚后变了,你的钱要上交给你媳妇了,你想花的时候得申请。此时你对工资的控制转变了,由原来的你控制,变成了你媳妇控制。这就是“控制反转”,本来属于你控制的事情,交由别人来控制,而你只在需要的时候进行获取就可以了。Spring全家桶地址:Spring最新全家桶资料集锦相信通过这个比喻大家对

2021-07-12 16:42:32 8992 2

原创 Elasticsearch你竟然不知道!这么多家知名大厂在用它!

前言国内现在有大量的公司都在使用 Elasticsearch,包括携程、滴滴、今日头条、饿了么、360安全、小米、vivo等诸多知名公司。除了搜索之外,结合Kibana、Logstash、Beats,Elastic Stack还被广泛运用在大数据近实时分析领域,包括日志分析、指标监控、信息安全等多个领域。它可以帮助你探索海量结构化、非结构化数据,按需创建可视化报表,对监控数据设置报警阈值,甚至通过使用机器学习技术,自动识别异常状况。一、京东到家订单中心 Elasticsearch 演进历程京东到家

2021-07-09 12:34:43 260

转载 汽车之家三面:Linux操作系统里一个进程最多可以创建多少个线程?

前言昨天有位读者**被坑了,**问了我这么个问题:大致意思就是,他看了一个面经,说虚拟内存是 2G 大小,然后他看了我的图解系统 PDF 里说虚拟内存是 4G,然后他就懵逼了。其实他看这个面经很有问题,没有说明是什么操作系统,以及是多少位操作系统。因为不同的操作系统和不同位数的操作系统,虚拟内存可能是不一样多。Windows 系统我不了解,我就说说 Linux 系统。Linux面试真题答案地址:Linux面试题(2021最新版)在 Linux 操作系统中,虚拟地址空间的内部又被分为内核空间

2021-07-08 14:49:28 245

原创 Elasticsearch你竟然不知道!这么多家知名大厂在用它!

前言国内现在有大量的公司都在使用 Elasticsearch,包括携程、滴滴、今日头条、饿了么、360安全、小米、vivo等诸多知名公司。除了搜索之外,结合Kibana、Logstash、Beats,Elastic Stack还被广泛运用在大数据近实时分析领域,包括日志分析、指标监控、信息安全等多个领域。它可以帮助你探索海量结构化、非结构化数据,按需创建可视化报表,对监控数据设置报警阈值,甚至通过使用机器学习技术,自动识别异常状况。一、京东到家订单中心 Elasticsearch 演进历程京东到家

2021-07-07 15:05:49 429

原创 一文带你深入了解IOC启动原理

1. IOC概述1.1 是什么?两个概念:控制反转,依赖注入**来看一下传统的干活方式:**在对象单一职责原则的基础上,一个对象很少有不依赖其他对象而完成自己的工作,所以这个时候就会出现对象之间的依赖。而体现在我们的开发中,就是需要什么对象的时候,就创建什么对象,此时对象创建的控制权在我们自己手里。当对象创建的太多的时候,就会出现一个对象更改,就得更改所有依赖它的对象,耦合性大。自主性体现的同时也出现了对象耦合严重的情况。这个时候,我们就会思考,能不能我们在用的时候直接拿到这个对象去用,而将创建对

2021-07-06 14:17:05 479 1

原创 猎豹移动面试官:如何通过布隆过滤器防止缓存击穿

为什么引入我们的业务中经常会遇到穿库的问题,通常可以通过缓存解决。如果数据维度比较多,结果数据集合比较大时,缓存的效果就不明显了。因此为了解决穿库的问题,我们引入Bloom Filter。Redis实战学习笔记地址:Redis核心思维导图+Redis实战学习笔记适合的场景数据库防止穿库 Google Bigtable,Apache HBase和Apache Cassandra以及Postgresql 使用BloomFilter来减少不存在的行或列的磁盘查找。避免代价高昂的磁盘查找会大大提高数据库

2021-07-05 19:03:22 211 1

转载 用友二面:如何设计一个高可用、高并发秒杀系统

前言如今的互联网已经在海量服务领域有了很成熟的理论,因此自己也很庆幸,能够从 0 到 1 完整践行海量服务。微视春节项目中的集卡瓜分活动,是一个典型的秒杀场景,自己参与其中,分享一些心得和总结。秒杀系统的难点友好的用户体验用户不能接受破窗的体验,例如:系统超时、系统错误的提示,或者直接 404 页面瞬时高并发流量的挑战木桶短板理论,整个系统的瓶颈往往都在 DB,如何设计出高并发、高可用系统?Redis实战学习笔记地址:300多页Redis实战学习笔记如何设计上图是一个典型的互联网业务

2021-07-04 14:12:18 343

原创 万字长文,带你深入理解Java虚拟机!

前言根据《Java虚拟机规范》的规定,Class文件格式采用一种类似于C语言结构体的伪结构来存储数据,这种伪结构中只有两种数据类型:“无符号数”和“表”。字节码指令Java字节码指令就是Java虚拟机能够听得懂、可执行的指令,可以说是Jvm层面的汇编语言,或者说是Java代码的最小执行单元。javac命令会将Java源文件编译成字节码文件,即.class文件,其中就包含了大量的字节码指令。Java虚拟机采用面向操作数栈而不是面向寄存器的架构(这两种架构的执行过程、区别和影响将在第8章中探讨),所以

2021-07-02 14:01:36 638

原创 小米面试官:说说Spring源码里面的Bean的生命周期!

1. Bean的实例化概述前一篇分析了BeanDefinition的封装过程,最终将beanName与BeanDefinition以一对一映射关系放到beanDefinitionMap容器中,这一篇重点分析如何利用bean的定义信息BeanDefinition实例化bean。Spring学习笔记地址:Spring核心170多页学习笔记2. 流程概览其实bean的实例化过程比较复杂,中间细节很多,为了抓住重点,先将核心流程梳理出来,主要包含以下几个流程:step1: 通过反射创建实例;step2

2021-07-01 15:01:01 161

转载 苏宁易购三面:写一个脚本获取Linux系统CPU的详细信息,并说出原理!

一、脚本今天主要分享一个shell脚本,用来获取linux系统CPU、内存、磁盘IO等信息。#!/bin/bash# 获取要监控的本地服务器IP地址IP=`ifconfig | grep inet | grep -vE 'inet6|127.0.0.1' | awk '{print $2}'`echo "IP地址:"$IP # 获取cpu总核数

2021-06-30 15:40:43 260

转载 分布式系统CAP理论:CAP原则只能满足其中两项!

前言我们学习分布式系统,就一定听说过CAP定理,尤其在学习分布式事务时,都是以这个定理作为开场。这个定理起源于柏克莱加州大学的计算机科学家埃里克·布鲁尔在2000年的分布式计算原则研讨会上提出的一个猜想。 在2002年,麻省理工学院的赛斯·吉尔伯特和南希·林奇发表了布鲁尔猜想的证明,使之成为一个定理。读者福利:Java分布式中间件学习笔记共享。定理讨论了在两个互相矛盾的请求到达彼此连接不通的两个不同的分布式节点的时候的处理方案。CAP针对对象先上个图上图中,是我们常见的系统设计,web服务集

2021-06-29 14:24:34 1679 1

原创 58同城面试官:Java常用的主流框架,及其运用你能说说吗?

前言一个java框架大概学习一到两个月就能比较熟练地使用它了,但是想要精通一个框架就需要熟悉它的各种底层原理及工作机制,这就不是一两个月的事情了,需要你坚持不懈地学习才能大成。学习java框架一定要一边做实践一边学习理论,将知识运用到实践,由于Java是面向对象语言,需要理解很多抽象概念,也有人把学习Java的过程称作为学习“抽象”的过程。实践的作用一方面是锻炼动手能力,另一方面是通过实践建立概念的“知识框架模型”。Java的主要框架一、SpringMVCSpring Web MVC是一种基于Ja

2021-06-28 15:25:55 157

原创 竟然还有人认为Redis只有get set那样简单!

Redis五种数据类型及应用场景Redis有五种数据类型,即 string,list,hash,set,zset(sort set),我想这点只要稍微对Redis有点了解的小伙伴都应该清楚。下面,我们就来讨论下这五种数据类型的应用场景,Redis实战学习笔记,不了解Redis的可以先阅读一下!string这个类型相信是大家最熟悉的了,但是千万不要小瞧它,它可以做很多事情,也可以牵出一系列的问题。我们先从最简单的入手:localhost:6379> set coderbear helloOK

2021-06-27 15:56:56 198

原创 一篇文章带你读懂Spring如何解决循环依赖!

什么是循环依赖?当多个Bean相互依赖时则构成了循环依赖,例如A,B两个Bean。其中A中存在属性B,B中存在属性A,当Spring在实例化A时发现A中存在属性B,就去实例化B,实例化B时又发现存在属性A,一直在循环注入依赖,导致循环依赖问题出现。Spring全家桶学习笔记+大厂面试真题共享!Spring是怎么解决循环依赖的?Spring中会通过各种Bean中间状态来达到Bean还未实例化完成时提前将Bean提前注入到依赖Bean的属性中,假设说Bean有三种状态分别是青年态(一级缓存)、胚胎态(二

2021-06-25 14:12:54 103

原创 新浪网面试官:说说Java并发编程中CountDownLatch原理与应用

前言控制并发流程的工具类,作用就是帮助我们程序员更容易的让线程之间合作,让线程之间相互配合来满足业务逻辑。比如让线程A等待线程B执行完毕后再执行等合作策略。控制并发流程的工具类主要有:简介背景CountDownLatch是在Java1.5被引入,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、ConcurrenthashMap和BlockingQueue。在java.util.cucurrent包下。概念CountDownLatch是一个同步计数器,他允许

2021-06-24 21:40:40 166

原创 360四面:说说Spring Boot程序启动中Netty异步架构的原理!

前言对于高性能的 RPC 框架,Netty 作为异步通信框架,几乎成为必备品。例如,Dubbo 框架中通信组件,还有 RocketMQ 中生产者和消费者的通信,都使用了 Netty。今天,我们来看看 Netty 的基本架构和原理。Spring Boot实战学习笔记Netty 的特点与 NIONetty 是一个异步的、基于事件驱动的网络应用框架,它可以用来开发高性能服务端和客户端。以前编写网络调用程序的时候,我们都会在客户端创建一个 Socket,通过这个 Socket 连接到服务端。服务端根据这

2021-06-23 20:42:31 1446

原创 字节二面:说说你对Spring boot加载web容器tomcat流程源码的理解!

前言spring boot 加载web容器tomcat流程源码分析我本地的springboot版本是2.5.1,后面的分析都是基于这个版本<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.1</

2021-06-22 21:17:02 118

原创 滴滴四面:常见的8种排序算法你最擅长哪些?它们的算法思想是?

冒泡排序要点冒泡排序是一种交换排序。什么是交换排序呢?交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。算法思想它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。读者福利:大厂java面试题真题集锦这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,故名。假设有一个大小为 N 的无序序列。冒泡排序就是要每趟排序过程中通过两

2021-06-21 20:37:41 291

原创 Keep三面:如何用Spring Security实现前后端分离?

前言Spring Security网络上很多前后端分离的示例很多都不是完全的前后分离,而且大家实现的方式各不相同,有的是靠自己写拦截器去自己校验权限的,有的页面是使用themleaf来实现的不是真正的前后分离,看的越多对Spring Security越来越疑惑,此篇文章要用最简单的示例实现出真正的前后端完全分离的权限校验实现,spring全家桶共享,总结了大厂面试真题,资深架构师学习笔记等。1. pom.xml主要依赖是spring-boot-starter-security和jwt。<de

2021-06-19 15:21:41 205

原创 编程写判断还在用if?试试规则执行器是不是用的更顺手!

前言近日在公司领到一个小需求,需要对之前已有的试用用户申请规则进行拓展。我们的场景大概如下所示:Java核心学习笔记+面试真题实战共享!按照上述的条件我们可以得出的结论是:咱们的主要流程主要是基于 and 或者 or 的关系。如果有一个不匹配的话,其实咱们后续的流程是不用执行的,就是需要具备一个短路的功能。对于目前的现状来说,我如果在原有的基础上来改,只要稍微注意一下解决需求不是很大的问题,但是说后面可维护性非常差。后面经过权衡过后,我还是决定将这个部分进行重构一下。规则执行器针对这

2021-06-18 16:12:47 110

原创 利用Spring Boot轻松实现动态定时器开发!

前言传统定时器是硬编码。但是有的时候业务上需要不断地调整问题描述我们开发了一个定闹钟的功能。这个功能肯定是定时器开发。但是这就存在一个问题这个定时是动态的。那么我们如何实现呢?Spring Boot核心学习笔记共享。简介定时器在开发中真的算是一种福利了。通过定时器我们省去了很多人力。我们通过定时器将一些繁琐定期的事情通过代码去完成。在Java开发中我们通过Timer类可以简单实现定时器功能。既然是springboot课程今天我们就来看看srpingboot整合定时器的事情传统定时器

2021-06-17 15:22:58 1769 2

原创 Java工程师设计bug导致数据被删除,公司竟让他背锅赔9万元!

前言程某某(1989年出生)于2017年4月27日入职爱狄特公司,双方签有劳动合同及保密协议。程某某担任Java工程师,合同期限自2017年4月27日至2020年4月26日,每月15日之前爱狄特公司支付程某某上个自然月工资,月薪为13000元。2019年3月程某某月薪调至14000元。2019年11月6日爱狄特公司以程某某严重违反公司规章制度,依据相关规定将程某某予以辞退。爱狄特公司为证明因程某某工作失误,导致1101中国邮政大数据平台河南租户删除事故,系重大事故,给公司造成重大损失,公司依规定将程某

2021-06-16 20:03:35 423

原创 携程四面:说说Lambda表达式的演化过程!

前言能够使用Lambda的依据是必须有相应的函数接口(函数接口,是指内部只有一个抽象方法的接口)。 这一点跟Java是强类型语言吻合,也就是说你并不能在代码的任何地方任性的写Lambda表达式。实际上Lambda的类型就是对应函数接口的类型。Lambda表达式另一个依据是类型推断机制(重点),在上下文信息足够的情况下,编译器可以推断出参数表的类型,而不需要显式指名。读者福利:Java核心学习笔记+2021最新大厂面试真题共享!一、演化过程A.基础类的准备package com.os.model;

2021-06-12 15:04:44 149

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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