面试
文章平均质量分 86
爱玛士
这个作者很懒,什么都没留下…
展开
-
如果面试官问你CAS,你还这么答,可能就要回去等通知了
前言大家好,我是JAVA高级开发之路,一个总在为粉丝解决面试题的程序员。最近有几个粉丝说在面试面试中遇到了CAS的问题,连着几次面试都没有让面试官满意,区区CAS底层源码,怎能难倒咱们这届程序员们呢?都支棱起来,跟我一起来搞定CAS底层源码。什么是CASCAS的全称是Compare-And-Swap,它是CPU并发原语。它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的CAS并发原语体现在Java语言中就是sun.misc.Unsafe类的各个方法原创 2021-12-17 17:34:14 · 611 阅读 · 0 评论 -
刷爆LeetCode 字节技术官亲码算法面试进阶神技太香了
数据结构与算法正赶上金三银四,说到数据结构与算法这个词,肯定有不少人会眉头一皱。也不知从什么时候开始,以字节为主的一大波公司面试开始了对算法的连环拷问。如果事前没有系统地刷一波题的话,算法这一关还是比较难过的。有人欢喜有人愁,对此挺多刚毕业的应届生表示,算法这东西好像并不是他们的拦路虎。相对于一些年龄稍大的程序员仅仅在做题这方面确实是抵不过20出头的小伙子,我们的优势主要工作经验,与项目经验,算法这一方面倒成了我们的短板。如何补齐这一短板?现在不管是面试还是工作,大势所趋之下,算法都原创 2021-12-10 16:04:15 · 537 阅读 · 0 评论 -
分布式事务(2PC/3PC/TCC 最终一致性详解)
在分布式系统中,我们一般会根据业务对服务进行划分,这就会存在一些服务间的调用关系,所以普通的本地事务是满足不了我们的要求了,需要引入分布式事务来实现我们的一致性的要求。这里对事务进行一个简单的介绍:同学A给同学B转250块钱,系统首先从同学A的银行卡扣除250块钱,如果上述这个步骤成功了,但是系统往同学B的银行卡上转250块钱的时候失败了,那么就会造成数据对不上的情况了。在这种情况下我们就需要引入事务,保证转钱这两步操作要么同时成功要么同时失败,成功的情况就是同学B银行卡也收到了钱,失败的情况是回滚原创 2021-02-25 13:48:08 · 1127 阅读 · 1 评论 -
面试官:小伙子我们先来详细的好好聊一聊NIO的三大组件
NIO是啥?NIO是Java从JDK1.4开始引入的一系列改进版输入输出处理手段,也就是New IO,简称NIO,也有说法叫NonBlocking IO,是同步非阻塞式的IO模型,准确地说它支持阻塞非阻塞两种模式。本篇主要介绍NIO提供的三大组件的概念及使用:Buffer,Channel,Selector。BufferBuffer可以理解为是一个容器,用于存储数据,本质是个数组,存储的元素类型是基本类型。无论是发送还是读取Channel中的数据,都必须先置入Buffer。java.n原创 2021-02-25 13:47:36 · 362 阅读 · 1 评论 -
弯道超车!阿里甩出Spring Security宝典我粉了
前言据有关数据表明Spring Security在Java应用安全领域已经慢慢成为首先被推崇的安全解决方案。虽然它在Java应用安全领域所占比重越来越大,但大多数开发者面对Spring Security这样的“庞然大物”时无从入手,也因为对其不够了解而在实际项目中不敢轻易采用。如何学?怎么把它引入到项目里?已经是每一个开发人员需要考虑的问题。为了能带大家进入Spring Security的新世界,也本着好东西就是要拿出来分享的原则!今天互联网雷锋(小编我)就把从阿里一位老哥手上得到的Spring S原创 2021-02-25 13:47:05 · 313 阅读 · 0 评论 -
大白话揭秘搞好就能“年薪百万”的SpringCloud微服务
微服务基本概念架构的演变为什么会有微服务?假如回到10年前,一天张三入职了电商企业—并夕夕商城。公司初创,人比较少,公司网站的用户也很少,公司只有一个工程师项目架构比较简单1.单体架构没有想到的是,公司业务越来越好,网站用户量越来越大,单体架构的问题就暴露出来了,随着访问量增加,项目经常宕机问题:架构简单 难以抗住高并发于是,招人。对并夕夕商城进行升级优化。分析升级的方向:数据库 和 应用代码要放在不同的服务器上增加应用负载能力【集群】.原创 2021-02-25 13:46:34 · 539 阅读 · 0 评论 -
MySQL详解:索引的介绍和原理分析
索引的定义MySQL官方对索引的定义为:索引(Index)是协助MySQL高效获取数据的数据结构。本质上,索引的目的是为了提高查询效率,通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。可以类比银行的保险柜,比如你要找归属你的保险柜子。如果没有索引,你需要拿着钥匙,一个个的保险柜的试过去才能找到属于你的保险柜。但是如果有了索引,而且保险柜能够以物理分区的方式存在在对应的区域,同时你可以根据钥原创 2021-02-25 13:45:33 · 341 阅读 · 1 评论 -
优秀!阿里甩出GC面试小册,仅7天Github获赞96.9K
Java垃圾回收我们都知道Java在运行时内存分为了五个部分:程序计数器、虚拟机栈、本地方法栈、堆、方法区。其中程序计数器、虚拟机栈、本地方法栈所占用的内存是不需要垃圾收集的,这三个区域的内存随着线程生,随着线程死,我们需要关注的其实只有堆和方法区这两块内存的垃圾收集。这时候就需要用到GC技术了。对于垃圾回收概念,它一出现常常伴随着一连串的问题:GC具体做了什么? 哪些内存需要回收? 什么时候回收? 怎么回收? 垃圾回收算法&垃圾回收器有哪些? ......如果你是一个新手,原创 2021-02-25 13:45:00 · 335 阅读 · 0 评论 -
趣谈哈希表优化:从规避 Hash 冲突到利⽤ Hash 冲突
导读: 本文从哈希表传统设计与解决思路入手,深入浅出地引出新的设计思路:从尽量规避哈希冲突,转向了利⽤合适的哈希冲突概率来优化计算和存储效率。新的哈希表设计表明 SIMD 指令的并⾏化处理能⼒的有效应⽤能⼤幅度提升哈希表对哈希冲突的容忍能⼒,进⽽提升查询的速度,并且能帮助哈希表进⾏极致的存储空间压缩。1 背景哈希表是⼀种查找性能⾮常优异的数据结构,它在计算机系统中存在着⼴泛的应⽤。尽管哈希表理论上 的查找时间复杂度是 O(1),但不同的哈希表在实现上仍然存在巨⼤的性能差异,因⽽⼯程师们对更...原创 2021-02-25 13:44:25 · 308 阅读 · 0 评论 -
聊聊MySQL架构演进:从主从复制到分库分表
背景业务飞速发展导致数据规模急速膨胀,单机的数据库已经无法满足互联网业务的发展。传统的将数据集中存储单一数据结节的方案,在容量、性能、可用性和可维护性方面已经难以满足互联网海量数据的场景。从容量方面考虑,单机数据库容量有限,难以扩容。从性能方面来说,由于关系型数据库大多数采用B+树类型索引,在数据量超过一定的阈值后,索引的深度增加导致对磁盘的随机IO次数增加,进而导致性能问题。从可用性方面来说,服务通常设计成无状态的,这必然导致系统的存储压力都集中在数据库层面,而单一的数据节点,或者简单原创 2021-02-25 13:43:44 · 422 阅读 · 0 评论 -
JVM又曾放过谁,垃圾终将被回收
背景在Java中有一个很重要的概念,即一切皆对象。所谓对象,就是将现实中的事物抽象出来,进而可以通过继承、实现和组合的方式把万事万物都给容纳,所以理解对象的概念在学习Java(包括所有的面向对象的语言)的过程中至关重要。当我们在程序中需要使用某个对象的时候,它就是爷爷,即使采用反射的方法也得把它创建出来;当我们不需要它的时候,它就是个垃圾,即使它能逃过新生代,在老年代也要依然追杀你。今天,我们要学习的是JVM如何处理垃圾(对象),在学习之前,我们先思考以下几个问题:对象的生存周期有哪些阶段?原创 2021-02-25 13:43:13 · 308 阅读 · 0 评论 -
直击面试!阿里技术官手码12W字面试小册在Github上爆火
Java面试临近金三银四,想必有不少老哥已经在为面试做准备了。大家想必也知道现在面试就是看项目经验+基本技术+个人潜力(也就是值不值得培养)。总之就是每一次面试都是对我们能力的检验(无论是软实力还是硬实力)。软实力其实就是简历包装,自我介绍,与面试官交谈技巧等等;所谓硬实力就是我们所掌握的技术情况了。所以每次面试之前需要做好充分的准备,切不可临时抱佛脚。技术基础打好后,面试前算题巩固也是必不可少的!借此机会,LZ为大家带来了一份近期在Github上爆火的阿里面试小册。小册分别从软实力跟硬实力两方面入原创 2021-02-25 13:42:32 · 319 阅读 · 0 评论 -
干货满满,从一个案例学习k8s基本架构
前言Kubernetes(简称K8S,K和S之间有8个字母)是用于自动部署,扩展和管理容器化应用程序的开源系统。它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes 源自Google15年的生产环境的运维经验,同时凝聚了社区的最佳创意和实践。一、基础组件在服务器我已经使用kubadm搭建的k8s集群(若想深入学习,一定先搭建一套k8s集群哦),一主(master)一从(slave)。系统创建的Pod都在namespace为kube-system中,我们可以看到k8s集原创 2021-02-21 15:22:02 · 734 阅读 · 0 评论 -
什么?编译了三个版本Tomcat源码后,我才发现这个bug
背景一产品是基于多模块开发的 SpringBoot 项目,发布时导出多个 war 包部署在同一个 Tomcat 。模块有五六个,发布时最大的问题就是每个包都很大,主要是各个模块的 WEB-INF/lib 下包含大量相同 jar ,因此有必要将公共包摘出来放到 Tomcat 的共享目录下。然而,在捣鼓了两天后,我对 Tomcat 的多应用部署时共享公共包的能力产生了怀疑。理论上,同一个 Tomcat 下部署多个应用时,可以将所有共享 jar 放在 shared/lib 目录下,然后配置 shared.转载 2021-02-21 15:04:12 · 335 阅读 · 0 评论 -
系统的数据一致性到底是在说什么?我到今天才算真明白了
作为一名程序员,你是不是经常在很多场景,例如看博客、聊天吹水等等时候听到这样一个词"系统数据一致性",是不是有时候感觉到了迷糊,不知道这个"系统数据一致性"到底是在说什么?其实,你可能只是不明白这个词,但是你肯定在实际工作中发现、解决过这样的问题。单体架构下系统数据一致性问题在传统的系统应用中,一般都是使用单体架构来构建系统的。即所有的功能模块都放在一起实现,打成一个WAR包部署在Tomcat中,数据一般存放在关系型数据库中,如MySQL数据库。前面我说过即使这种单体架构的系..原创 2021-02-21 15:03:31 · 1060 阅读 · 1 评论 -
又被“教育”了,Java中那些让我傻傻分不清楚的7个小细节
前言最近我们通过sonar扫描代码的时候,发现了很多问题。除了常规的bug和安全漏洞之外,还有几处方法用法错误,引起了我极大的兴趣。我为什么会对这几个方法这么感兴趣呢?因为它们极具迷惑性,可能会让我们傻傻分不清楚。1. replace会替换所有字符?很多时候我们在使用字符串时,想把字符串比如:ATYSDFA*Y中的字符A替换成字符B,第一个想到的可能是使用replace方法。如果想把所有的A都替换成B,很显然可以用replaceAll方法,因为非常直观,光从方法名就能猜出它的用途。那么问原创 2021-02-21 15:02:59 · 307 阅读 · 1 评论 -
追根溯源,有点意思,关于MySQL更新“丢失”问题
人生苦短,不如养狗一、问题现场趁着这几天过节,复盘了一下去年的一些历史遗留问题,其中有这样一个关于数据库的小问题让我忍不住翻出来又回味了一下,下面就让我们一起品味品味。首先,先来看下问题现场,操作数据库的执行流程如下图: 这里对原有的业务逻辑进行简化,简化后的代码实现如下:public void finishSubTask(SubTask subTask){ // 进行子任务状态更新 subTaskService.updateFinish(subTask);..原创 2021-02-21 15:01:36 · 440 阅读 · 0 评论 -
一次并发插入死锁带来的“教训”,我才清楚这些MySQL锁知识
最近遇到一个由于唯一性索引,导致并发插入产生死锁的场景,在分析死锁产生的原因时,发现这一块还挺有意思的,涉及到MySql中不少的知识点,特此总结记录一下。一、MySql常见的锁谈到mysql的锁,可以说的就比较多了,比如行锁、表锁、页锁、元数据锁等,当然我们这里没打算把所有的都细列出来,我们这里主要针对行锁、gap锁进行拓展,以方便分析第二节中,为什么并发插入同样的数据会产生死锁的问题0. 锁分类我们最常说的锁,可以区分为共享锁(S)和排它锁(X),在mysql的innodb引擎中.原创 2021-02-21 15:01:04 · 954 阅读 · 0 评论 -
不怕面试再问HashMap,一次彻底地梳理(原理+手写实现)
前言朋友们又见面了,你是不是还在面试时被面试官问懵HashMap?不会手写实现一个简单HashMap?看完这篇文章你再不会算我输!提示:以下是本篇文章正文内容,案例仅供参考一、HashMap介绍1.HashMap是什么?基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap类与Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 此实现假定哈.原创 2021-02-21 15:00:25 · 373 阅读 · 0 评论 -
面试又被问懵了吗?不如把ThreadLocal拆开了揉碎看看
前言1.为什么用 ThreadLocal?所谓并发,就是有限资源需要应对远超资源的访问。解决问题的方法,要么增加资源应对访问;要么增加资源的利用率。 所以,相信这年头做开发的多多少少,都会那么几个“线程二三招”、“用锁五六式”。 那所带来的就是多线程访问下的并发安全问题。 共享变量的访问域跨越了原始的单线程,进入了千家万户的线程眼里。谁都可以用,谁都可以改,那不就打起来了吗? 因此,防止并发问题的最好办法,就是不要多线程访问(这科技水平倒退二十年~)。ThreadLocal 顾名思义,将一个变量限制原创 2021-02-21 14:59:45 · 212 阅读 · 0 评论 -
微服务架构开发实战:基于容器的部署与发布微服务,30K有望了
基于容器的部署与发布微服务在微服务架构系统中包含了大量的服务,并且服务之间存在复杂的依赖关系,以拓扑的形式运行并相互协作,如果部署的时候采取方式来解决整体的依赖、配置通信的协议和地址等,那么重新部署到新环境的成本会非常高。而容器技术提供了一种将所有的服务能够迅速快捷地重新部署的方案,并且可以根据需求进行横向的扩展,且保证高可用性,在出现问题的时候可以自动重启或者启动备份服务。虚拟化技术所谓虚拟化技术就是将事物从一种形式转变成另一种形式,最常用的虚拟化技术有操作系统中内存的虚拟化,实际运.原创 2021-02-06 22:42:04 · 466 阅读 · 0 评论 -
20年资深架构师整理分享架构解密:从分布式到微服务第2版文档
前言本文凝聚了作者多年架构经验,内容覆盖网络、分布式、微服务、存储、计算等。深入浅出地讲解了云原生、Kubernetes和Service Mesh等热门技术,并详细剖析其原理,值得每个IT人士阅读。不论你是有十几年研发经验及架构经验的IT老手,还是刚入门系统架构的IT新手,本文都能对你理解分布式架构和微服务架构大有助益。希望大家能够仔仔细细的阅读,不断地品读文中的精华,把它慢慢吸收掉,转化为自己的东西,并且能够灵活运用到工作中去,不断地提升自己的技术深度和宽度,希望本文能够得到大家.原创 2021-02-06 22:41:33 · 757 阅读 · 0 评论 -
微服务的部署与发布:持续交付与持续部署微服务
持续交付与持续部署微服务持续集成(Continuous Integration)与持续交付(Continuous Delivery )、持续部署(ContinuousDeployment)作为敏捷开发实践,可以及早发现、解决问题,从而更早地将产品交付给客户。及早地从客户那里得到反馈,就可以及早地对产品进行修复和完善,交付更加完美的产品给客户,最终形成了良好的可以持续的闭环。什么是持续交付与持续部署持续集成是持续交付和持续部署的基础。持续集成使得整个开发团队保持一致,消除了集成所引起的问.原创 2021-02-06 22:41:03 · 764 阅读 · 0 评论 -
SpringCloud微服务部署与发布:部署微服务面临的挑战
微服务的部署与发布:部署微服务将面临的挑战当单块架构被划分成微服务之后,随着微服务数量的增多,毫无疑问,将会面临比单块架构更复杂的问题。部署微服务将面临的问题部署微服务将会面临以下问题。1.运维负担对传统的单块架构系统来说,产品通常只有一个发布包,升级、部署系统往往只需要部署这个发布包即可。现在,面临着这么多的微服务,显然运维的负担要比之前更重了。对于运维工程师来说,部署的服务呈指数上升,传统的手工部署方式往往已经不能适应日益增长的服务运维需求。⒉服务间的依赖在一个微服.原创 2021-02-06 22:39:46 · 542 阅读 · 0 评论 -
牛皮!终于有人把HTTP/2核心教程文档给整理完毕了,快来学
前言HTTP/2,简称h2,是万维网(World Wide Web)所使用的HTTP网络协议的一个重大修订版本,其目的是提升加载Web内容时的感知性能。HTTP/2的应用在不断增多,因为越来越多的网站管理员意识到,他们可以借此花很小的成本来提高他们网站的感知性能。我们每天都在使用h2一 它支撑了若干最流行的网站,如Facebook、 Twitter、 Google和Wikipedia——但很多人并不了解它。我们的目标是讲解h2的原理及其性能优势,这样你就可以充分利用它。如今互联.原创 2021-02-06 22:39:08 · 379 阅读 · 0 评论 -
微服务架构开发实战:如何集成Zuul和实现API网关?
如何集成 Zuul本节将基于Zuul来实现API网关。作为Spring Cloud 的一部分,集成Zuul会变得非常简单。Zuul简介路由是微服务架构中必需的一部分,如“”可能映射到Web程序上、“/api/users”可能映射到用户服务上、“/api/shop”可能映射到商品服务商。通过路由,让不同的服务都集中到统一的入口上来,这就是API网关的作用。Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器。Zuul 功能如下。认证。 压力测试。 金丝雀测试。 动原创 2021-02-06 22:38:34 · 344 阅读 · 0 评论 -
阿里资深架构师耗费三年终于把Netty进阶之路文档给整理完了
前言Netty将Java NIO接口封装,提供了全异步编程方式,是各大Java项目的网络应用开发必备神器。在本文中,将Netty学习者咨询的相关问题,进行了归纳和总结,以问题案例做牵引,通过对案例进行剖析,讲解问题背后的原理,并结合Netty源码分析,让读者能够真正掌握Netty,在实际工作中少犯错。本文中的案例涵盖了Netty 的启动和停止、内存、并发多线程、性能、可靠性、安全等方面,囊括了Netty绝大多数常用的功能及容易让人犯错的地方。在案例的分析过程中,还穿插讲解了Netty的问题定位思原创 2021-02-06 22:37:52 · 375 阅读 · 0 评论 -
微服务架构开发实战:API网关意义和常见API网关的实现方式
API网关意义API网关旨在用一套单一且统一的API入口点,来组合一个或多个内部API。API网关定位为应用系统服务接口的网关,区别于网络技术的网关,但是原理是一样的。API网关统一服务入口,可方便实现对平台众多服务接口进行管控,如对访问服务的身份认证、防报文重放与防数据篡改、功能调用的业务鉴权,以及响应数据的脱敏、流量与并发控制,甚至基于API调用的计量或计费等。API并不能适用于所有场景在基于微服务的架构设计中,往往包含多个服务,这些服务并不能适用于所有场景。例如,在一个面向PC的Web原创 2021-02-06 22:37:13 · 1038 阅读 · 0 评论 -
SpringCloud架构开发实战:实现服务负载均衡及高可用
实现服务的负载均衡及高可用在前面我们重新实现了微服务,其中天气数据采集微服务、天气预报微服务都重新采用了Feign技术,以便通过应用的名称来访问外部RESTful服务。结合Eureka部署实例,就能实现微服务的负载均衡及高可用。天气预报系统的微服务截至目前,天气预报系统的最新版本微服务共有以下4个。msa-weather-collection-cureka-feign:基于msa-weather-collection-cureka和Feign实现的天气数据采集微服务。msa-w.原创 2021-02-06 22:36:08 · 373 阅读 · 0 评论 -
SpringBoot外化配置源码解析:Profile处理实现
基于Profile 的处理实现在日常使用中我们可以通过配置 spring.profiles.active 指定一组不同环境的配置文件,比如application-dev.properties、application-test.properties、application-prod.properties。那么,profile 是如何被加载使用的呢?本节带大家重点分析一下 ConfigFileApplicationListener 类中基于 profile 的文件加载处理逻辑。在 ConfigFileA原创 2021-02-05 22:51:15 · 474 阅读 · 0 评论 -
SpringBootWeb应用源码解析:遗失的web.xmI
SpringBootWeb应用源码解析在 Spring 及 Spring Boot 的使用过程中,应用最广泛的当属 Web 应用,而 Web 应用又往往部署在像 Tomcat 这样的 Servlet 容器中。本章将带领大家学习 Spring Boot 中 Web 应用的整合以及在此过程中与直接使用 Spring 的差别。遗失的web.xmI提到 Spring 的 Web 应用,我们首先想到的可能是 Spring MVC 框架和 web.xmI 等配置文件。而 Spring MVC 又是围绕原创 2021-02-05 22:50:44 · 283 阅读 · 0 评论 -
20年IT老民工苦心编撰成超大流量分布式系统架构解决方案文档
前言本文融入了作者及其团队实践中的思考、心得与方法,可以帮助大家解决大型网站架构演变过程中遇到的诸多难题。本文的所有内容,并不是对架构理论的泛泛而谈,而是云集技术架构从 0 到 1 演变的宝贵实践经验。我崇尚技术,也推崇技术,业务能够推动技术迅速成长,技术反过来也能推动业务加速增长。我从本书的内容中感受到:超大流量分布式系统的架构必然是简单和清晰的,是需要不断PDCA(计划、执行、查验与行动)的,也在不断的迭代、演进中。相信,本文所呈现的宝贵实战经验对大家大有裨益,会为大家的实际工.原创 2021-02-05 22:50:12 · 383 阅读 · 0 评论 -
终于有大牛把Spring微服务架构设计第2版文档给整理完毕了
前言微服务是一种架构风格和模式:将复杂系统拆解为协同工作的小型服务,以此构建大型业务服务。微服务是自治、自包含且可独立部署的服务。当今世界上的许多企业将微服务作为默认的架构标准来构建面向服务的大型企业级应用。作为一种编程框架,Spring框架在开发者社区流行很多年了。使用SpringBoot不再需要重量级应用容器,并且它还支持部署轻量级无服务器应用。Spring Cloud结合了Netflix的许多OSS开源组件,提供了一个运行和管理大型微服务架构的生态系统;还支持负载均衡、服务注册、服务监控和原创 2021-02-05 22:49:15 · 347 阅读 · 0 评论 -
SpringCloud实战:NetflixRibbon的使用
服务间通信:Spring Cloud Netflix Ribbon和 Spring Cloud OpenFeign一个大型的系统由多个微服务模块组成,我们一般可以通过内部接口调用的形式(服务A提供一个接口,服务B通过HTTP请求调用服务A的接口)实现各模块之间的通信。为了简化开发,SpringCloud集成了Spring Cloud Netflix Ribbon和Spring Cloud OpenFeign,两个组件都支持通过HTTP请求不同的服务。举个例子,用户模块和评论模块,当查询评论列表时需要原创 2021-02-05 22:48:26 · 830 阅读 · 0 评论 -
springcloud实战:服务间通信——OpenFeign
Spring Cloud OpenFeignSpring Cloud OpenFeign是一个声明式的 HTTP客户端,它简化了HTTP客户端的开发,使编写Web服务的客户端变得更容易。使用Spring Cloud OpenFeign,只需要创建一个接口并注解,就能很容易地调用各服务提供的HTTP接口。Spring Cloud OpenFeign基于OpenFeign实现,它除了提供声明式的 HTTP客户端外,还整合了Spring Cloud Hystrix,能够轻松实现熔断器模型。Spr.原创 2021-02-05 22:47:56 · 530 阅读 · 0 评论 -
Swagger 3.0 天天刷屏,真的香吗?
前言最近频繁被Swagger 3.0刷屏,官方表示这是一个突破性的变更,有很多的亮点,我还真不太相信,今天来带大家尝尝鲜,看看这碗汤到底鲜不鲜....官方文档如何说?Swagger 3.0有何改动?官方文档总结如下几点:删除了对springfox-swagger2的依赖 删除所有@EnableSwagger2...注解 添加了springfox-boot-starter依赖项 移除了guava等第三方依赖姑且看到这里,各位初始感觉如何?既然人家更新出来了,咱不能不捧.原创 2021-02-05 22:46:41 · 804 阅读 · 0 评论 -
MySQL递归查询上下级菜单
正文在传统的后台管理系统里面经常会需要展示多级菜单关系,今天我们来学一下如何使用一条SQL语句展示多级菜单。现在我们有一张corpinfo单位表,里面有一个belong字段指向上级单位,首先来看一下现在表里有什么数据:SELECTuid,ubelongFROMcorpinfo现在是类似下面这样的一个三级菜单,uid为1的是我们的顶级菜单,ubelog为0。现在我们想实现传入一个 uid ,把当前 uid 和其下级单位的 uid 都展示出来,当然我们可以使用代码...原创 2021-02-05 22:46:07 · 1712 阅读 · 0 评论 -
不讲武德!Alibaba微服务线上架构笔记,从实战到源码精讲
Spring Cloud Alibaba 是由阿里巴巴于 2018 年 11 正式开源的微服务开发一站式解决方案,经过近两年的发展,现已成为 Spring Cloud 生态中最活跃、开发体验最好的实现。最近,Spring Cloud Alibaba 官方再次对周边的工具进行了升级,和 Cloud Toolkit 深度集成,提供了工程创建、代码编写、一键部署和问题诊断等一系列开发者提效工具。随着Spring CloudAlibaba的诞生,很多的开发人员在学习中都苦于没有系统的学习笔记资料,这份学习手册希原创 2021-02-05 22:45:33 · 275 阅读 · 0 评论 -
简直不可思议,竟然还有人不会查看GC垃圾回收日志?
日志的重要性,不需要过多强调了。通过日志,我们可以发现程序可能有内存(泄露)问题。本文从案例出发,具体介绍这些日志信息,以期帮助大家更好地了解垃圾回收的运行情况。还是先上图,看看本文的主要内容:我们先来看个案例,代码如下:/***打印垃圾回收日志案例*参数设置:-XX:+PrintGCDetails*@author田维常*@version1.0*@date2020/11/98:22*/publicclassPrintGCDetailsDemo{...原创 2021-02-05 22:45:01 · 332 阅读 · 0 评论 -
这三年被分布式坑惨了,曝光十大坑
本篇主要内容如下:主要内容前言我们都在讨论分布式,特别是面试的时候,不管是招初级软件工程师还是高级,都会要求懂分布式,甚至要求用过。传得沸沸扬扬的分布式到底是什么东东,有什么优势?借用火影忍术风遁·螺旋手里剑看过火影的同学肯定知道漩涡鸣人的招牌忍术:多重影分身之术。这个术有一个特别厉害的地方,过程和心得:多个分身的感受和经历都是相通的。比如 A 分身去找卡卡西(鸣人的老师)请教问题,那么其他分身也会知道 A 分身问的什么问题。 漩涡鸣人有另外一个超级厉害的忍..原创 2021-02-04 23:11:57 · 426 阅读 · 2 评论