自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(257)
  • 收藏
  • 关注

原创 几行代码实现简单的网络象棋游戏,看看Java大牛是怎么做到的?

游戏规则:1.将/帅:不能出田字格,不能走斜线,只能前进后退向左向右,每次只走一格; 2.士/仕:不能出田字格,只能走斜线,每次只走一格; 3.象/相:只能走田字格,中间防止蹩脚,不能有棋;4.马:只能走日,(这个比较麻烦,且看下图标识)5.车:车只能走直线,这个很好理解,不细说了; 6.炮: 情况一:纯走路—->中间和目的地都不能有棋 情况二:吃棋—–>中间要有一颗棋,目标也有棋,且是敌方的棋,毕竟不能自己吃自己哈7.卒/兵: 河这边:只能前...

2020-07-02 15:31:04 15004 70

原创 如果面试官问你CAS,你还这么答,可能就要回去等通知了

前言大家好,我是JAVA高级开发之路,一个总在为粉丝解决面试题的程序员。最近有几个粉丝说在面试面试中遇到了CAS的问题,连着几次面试都没有让面试官满意,区区CAS底层源码,怎能难倒咱们这届程序员们呢?都支棱起来,跟我一起来搞定CAS底层源码。什么是CASCAS的全称是Compare-And-Swap,它是CPU并发原语。它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的CAS并发原语体现在Java语言中就是sun.misc.Unsafe类的各个方法

2021-12-17 17:34:14 606

原创 刷爆LeetCode 字节技术官亲码算法面试进阶神技太香了

数据结构与算法正赶上金三银四,说到数据结构与算法这个词,肯定有不少人会眉头一皱。也不知从什么时候开始,以字节为主的一大波公司面试开始了对算法的连环拷问。如果事前没有系统地刷一波题的话,算法这一关还是比较难过的。有人欢喜有人愁,对此挺多刚毕业的应届生表示,算法这东西好像并不是他们的拦路虎。相对于一些年龄稍大的程序员仅仅在做题这方面确实是抵不过20出头的小伙子,我们的优势主要工作经验,与项目经验,算法这一方面倒成了我们的短板。如何补齐这一短板?现在不管是面试还是工作,大势所趋之下,算法都

2021-12-10 16:04:15 531

原创 答应我不要再用Xshell了 这个新开源的终端工具酷炫又好用

我工作中用得最多的工具之一就是「终端连接工具」了,因为经常和 Linux 服务器打交道,经常在上面跑代码、排查系统问题等等。Windows 系统最常用的就是 Xshell 这款终端工具了,但是它只能用于非商业用途,也就是说如果在公司用的话,公司就得掏钱了,当然不是大公司的话,也不会有人查你用盗版的问题。另外,如果你想和 Linux 服务器传输文件的话,还得再下载个 Xftp,挺费事,而且 Xshell 没有支持 macOS。那有没有一个,集成了文件传输功能,又支持多个系统,且是免费的终端工具呢?

2021-12-06 20:30:07 1988 2

原创 分布式事务(2PC/3PC/TCC 最终一致性详解)

在分布式系统中,我们一般会根据业务对服务进行划分,这就会存在一些服务间的调用关系,所以普通的本地事务是满足不了我们的要求了,需要引入分布式事务来实现我们的一致性的要求。这里对事务进行一个简单的介绍:同学A给同学B转250块钱,系统首先从同学A的银行卡扣除250块钱,如果上述这个步骤成功了,但是系统往同学B的银行卡上转250块钱的时候失败了,那么就会造成数据对不上的情况了。在这种情况下我们就需要引入事务,保证转钱这两步操作要么同时成功要么同时失败,成功的情况就是同学B银行卡也收到了钱,失败的情况是回滚

2021-02-25 13:48:08 1121 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 360 1

原创 弯道超车!阿里甩出Spring Security宝典我粉了

前言据有关数据表明Spring Security在Java应用安全领域已经慢慢成为首先被推崇的安全解决方案。虽然它在Java应用安全领域所占比重越来越大,但大多数开发者面对Spring Security这样的“庞然大物”时无从入手,也因为对其不够了解而在实际项目中不敢轻易采用。如何学?怎么把它引入到项目里?已经是每一个开发人员需要考虑的问题。为了能带大家进入Spring Security的新世界,也本着好东西就是要拿出来分享的原则!今天互联网雷锋(小编我)就把从阿里一位老哥手上得到的Spring S

2021-02-25 13:47:05 312

原创 大白话揭秘搞好就能“年薪百万”的SpringCloud微服务

微服务基本概念架构的演变为什么会有微服务?假如回到10年前,一天张三入职了电商企业—并夕夕商城。公司初创,人比较少,公司网站的用户也很少,公司只有一个工程师项目架构比较简单1.单体架构没有想到的是,公司业务越来越好,网站用户量越来越大,单体架构的问题就暴露出来了,随着访问量增加,项目经常宕机问题:架构简单 难以抗住高并发于是,招人。对并夕夕商城进行升级优化。分析升级的方向:数据库 和 应用代码要放在不同的服务器上增加应用负载能力【集群】.

2021-02-25 13:46:34 537

原创 MySQL详解:索引的介绍和原理分析

索引的定义MySQL官方对索引的定义为:索引(Index)是协助MySQL高效获取数据的数据结构。本质上,索引的目的是为了提高查询效率,通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。可以类比银行的保险柜,比如你要找归属你的保险柜子。如果没有索引,你需要拿着钥匙,一个个的保险柜的试过去才能找到属于你的保险柜。但是如果有了索引,而且保险柜能够以物理分区的方式存在在对应的区域,同时你可以根据钥

2021-02-25 13:45:33 340 1

原创 优秀!阿里甩出GC面试小册,仅7天Github获赞96.9K

Java垃圾回收我们都知道Java在运行时内存分为了五个部分:程序计数器、虚拟机栈、本地方法栈、堆、方法区。其中程序计数器、虚拟机栈、本地方法栈所占用的内存是不需要垃圾收集的,这三个区域的内存随着线程生,随着线程死,我们需要关注的其实只有堆和方法区这两块内存的垃圾收集。这时候就需要用到GC技术了。对于垃圾回收概念,它一出现常常伴随着一连串的问题:GC具体做了什么? 哪些内存需要回收? 什么时候回收? 怎么回收? 垃圾回收算法&垃圾回收器有哪些? ......如果你是一个新手,

2021-02-25 13:45:00 334

原创 趣谈哈希表优化:从规避 Hash 冲突到利⽤ Hash 冲突

导读: 本文从哈希表传统设计与解决思路入手,深入浅出地引出新的设计思路:从尽量规避哈希冲突,转向了利⽤合适的哈希冲突概率来优化计算和存储效率。新的哈希表设计表明 SIMD 指令的并⾏化处理能⼒的有效应⽤能⼤幅度提升哈希表对哈希冲突的容忍能⼒,进⽽提升查询的速度,并且能帮助哈希表进⾏极致的存储空间压缩。1 背景哈希表是⼀种查找性能⾮常优异的数据结构,它在计算机系统中存在着⼴泛的应⽤。尽管哈希表理论上 的查找时间复杂度是 O(1),但不同的哈希表在实现上仍然存在巨⼤的性能差异,因⽽⼯程师们对更...

2021-02-25 13:44:25 307

原创 聊聊MySQL架构演进:从主从复制到分库分表

背景业务飞速发展导致数据规模急速膨胀,单机的数据库已经无法满足互联网业务的发展。传统的将数据集中存储单一数据结节的方案,在容量、性能、可用性和可维护性方面已经难以满足互联网海量数据的场景。从容量方面考虑,单机数据库容量有限,难以扩容。从性能方面来说,由于关系型数据库大多数采用B+树类型索引,在数据量超过一定的阈值后,索引的深度增加导致对磁盘的随机IO次数增加,进而导致性能问题。从可用性方面来说,服务通常设计成无状态的,这必然导致系统的存储压力都集中在数据库层面,而单一的数据节点,或者简单

2021-02-25 13:43:44 420

原创 JVM又曾放过谁,垃圾终将被回收

背景在Java中有一个很重要的概念,即一切皆对象。所谓对象,就是将现实中的事物抽象出来,进而可以通过继承、实现和组合的方式把万事万物都给容纳,所以理解对象的概念在学习Java(包括所有的面向对象的语言)的过程中至关重要。当我们在程序中需要使用某个对象的时候,它就是爷爷,即使采用反射的方法也得把它创建出来;当我们不需要它的时候,它就是个垃圾,即使它能逃过新生代,在老年代也要依然追杀你。今天,我们要学习的是JVM如何处理垃圾(对象),在学习之前,我们先思考以下几个问题:对象的生存周期有哪些阶段?

2021-02-25 13:43:13 307

原创 直击面试!阿里技术官手码12W字面试小册在Github上爆火

Java面试临近金三银四,想必有不少老哥已经在为面试做准备了。大家想必也知道现在面试就是看项目经验+基本技术+个人潜力(也就是值不值得培养)。总之就是每一次面试都是对我们能力的检验(无论是软实力还是硬实力)。软实力其实就是简历包装,自我介绍,与面试官交谈技巧等等;所谓硬实力就是我们所掌握的技术情况了。所以每次面试之前需要做好充分的准备,切不可临时抱佛脚。技术基础打好后,面试前算题巩固也是必不可少的!借此机会,LZ为大家带来了一份近期在Github上爆火的阿里面试小册。小册分别从软实力跟硬实力两方面入

2021-02-25 13:42:32 318

原创 干货满满,从一个案例学习k8s基本架构

前言Kubernetes(简称K8S,K和S之间有8个字母)是用于自动部署,扩展和管理容器化应用程序的开源系统。它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes 源自Google15年的生产环境的运维经验,同时凝聚了社区的最佳创意和实践。一、基础组件在服务器我已经使用kubadm搭建的k8s集群(若想深入学习,一定先搭建一套k8s集群哦),一主(master)一从(slave)。系统创建的Pod都在namespace为kube-system中,我们可以看到k8s集

2021-02-21 15:22:02 732

原创 SpringBoot接口幂等性实现的4种方案,真的够用了

一、什么是幂等性幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。在计算机编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。二、什么是接口幂等性在HTTP/1.1中,对幂等性进行了定义。它描述了一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外),即第一次请

2021-02-21 15:04:56 627

转载 什么?编译了三个版本Tomcat源码后,我才发现这个bug

背景一产品是基于多模块开发的 SpringBoot 项目,发布时导出多个 war 包部署在同一个 Tomcat 。模块有五六个,发布时最大的问题就是每个包都很大,主要是各个模块的 WEB-INF/lib 下包含大量相同 jar ,因此有必要将公共包摘出来放到 Tomcat 的共享目录下。然而,在捣鼓了两天后,我对 Tomcat 的多应用部署时共享公共包的能力产生了怀疑。理论上,同一个 Tomcat 下部署多个应用时,可以将所有共享 jar 放在 shared/lib 目录下,然后配置 shared.

2021-02-21 15:04:12 332

原创 系统的数据一致性到底是在说什么?我到今天才算真明白了

作为一名程序员,你是不是经常在很多场景,例如看博客、聊天吹水等等时候听到这样一个词"系统数据一致性",是不是有时候感觉到了迷糊,不知道这个"系统数据一致性"到底是在说什么?其实,你可能只是不明白这个词,但是你肯定在实际工作中发现、解决过这样的问题。单体架构下系统数据一致性问题在传统的系统应用中,一般都是使用单体架构来构建系统的。即所有的功能模块都放在一起实现,打成一个WAR包部署在Tomcat中,数据一般存放在关系型数据库中,如MySQL数据库。前面我说过即使这种单体架构的系..

2021-02-21 15:03:31 1056 1

原创 又被“教育”了,Java中那些让我傻傻分不清楚的7个小细节

前言最近我们通过sonar扫描代码的时候,发现了很多问题。除了常规的bug和安全漏洞之外,还有几处方法用法错误,引起了我极大的兴趣。我为什么会对这几个方法这么感兴趣呢?因为它们极具迷惑性,可能会让我们傻傻分不清楚。1. replace会替换所有字符?很多时候我们在使用字符串时,想把字符串比如:ATYSDFA*Y中的字符A替换成字符B,第一个想到的可能是使用replace方法。如果想把所有的A都替换成B,很显然可以用replaceAll方法,因为非常直观,光从方法名就能猜出它的用途。那么问

2021-02-21 15:02:59 306 1

原创 追根溯源,有点意思,关于MySQL更新“丢失”问题

人生苦短,不如养狗一、问题现场趁着这几天过节,复盘了一下去年的一些历史遗留问题,其中有这样一个关于数据库的小问题让我忍不住翻出来又回味了一下,下面就让我们一起品味品味。首先,先来看下问题现场,操作数据库的执行流程如下图:   这里对原有的业务逻辑进行简化,简化后的代码实现如下:public void finishSubTask(SubTask subTask){ // 进行子任务状态更新 subTaskService.updateFinish(subTask);..

2021-02-21 15:01:36 438

原创 一次并发插入死锁带来的“教训”,我才清楚这些MySQL锁知识

最近遇到一个由于唯一性索引,导致并发插入产生死锁的场景,在分析死锁产生的原因时,发现这一块还挺有意思的,涉及到MySql中不少的知识点,特此总结记录一下。一、MySql常见的锁谈到mysql的锁,可以说的就比较多了,比如行锁、表锁、页锁、元数据锁等,当然我们这里没打算把所有的都细列出来,我们这里主要针对行锁、gap锁进行拓展,以方便分析第二节中,为什么并发插入同样的数据会产生死锁的问题0. 锁分类我们最常说的锁,可以区分为共享锁(S)和排它锁(X),在mysql的innodb引擎中.

2021-02-21 15:01:04 953

原创 不怕面试再问HashMap,一次彻底地梳理(原理+手写实现)

前言朋友们又见面了,你是不是还在面试时被面试官问懵HashMap?不会手写实现一个简单HashMap?看完这篇文章你再不会算我输!提示:以下是本篇文章正文内容,案例仅供参考一、HashMap介绍1.HashMap是什么?基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap类与Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 此实现假定哈.

2021-02-21 15:00:25 371

原创 面试又被问懵了吗?不如把ThreadLocal拆开了揉碎看看

前言1.为什么用 ThreadLocal?所谓并发,就是有限资源需要应对远超资源的访问。解决问题的方法,要么增加资源应对访问;要么增加资源的利用率。 所以,相信这年头做开发的多多少少,都会那么几个“线程二三招”、“用锁五六式”。 那所带来的就是多线程访问下的并发安全问题。 共享变量的访问域跨越了原始的单线程,进入了千家万户的线程眼里。谁都可以用,谁都可以改,那不就打起来了吗? 因此,防止并发问题的最好办法,就是不要多线程访问(这科技水平倒退二十年~)。ThreadLocal 顾名思义,将一个变量限制

2021-02-21 14:59:45 211

原创 微服务架构开发实战:基于容器的部署与发布微服务,30K有望了

基于容器的部署与发布微服务在微服务架构系统中包含了大量的服务,并且服务之间存在复杂的依赖关系,以拓扑的形式运行并相互协作,如果部署的时候采取方式来解决整体的依赖、配置通信的协议和地址等,那么重新部署到新环境的成本会非常高。而容器技术提供了一种将所有的服务能够迅速快捷地重新部署的方案,并且可以根据需求进行横向的扩展,且保证高可用性,在出现问题的时候可以自动重启或者启动备份服务。虚拟化技术所谓虚拟化技术就是将事物从一种形式转变成另一种形式,最常用的虚拟化技术有操作系统中内存的虚拟化,实际运.

2021-02-06 22:42:04 461

原创 20年资深架构师整理分享架构解密:从分布式到微服务第2版文档

前言本文凝聚了作者多年架构经验,内容覆盖网络、分布式、微服务、存储、计算等。深入浅出地讲解了云原生、Kubernetes和Service Mesh等热门技术,并详细剖析其原理,值得每个IT人士阅读。不论你是有十几年研发经验及架构经验的IT老手,还是刚入门系统架构的IT新手,本文都能对你理解分布式架构和微服务架构大有助益。希望大家能够仔仔细细的阅读,不断地品读文中的精华,把它慢慢吸收掉,转化为自己的东西,并且能够灵活运用到工作中去,不断地提升自己的技术深度和宽度,希望本文能够得到大家.

2021-02-06 22:41:33 751

原创 微服务的部署与发布:持续交付与持续部署微服务

持续交付与持续部署微服务持续集成(Continuous Integration)与持续交付(Continuous Delivery )、持续部署(ContinuousDeployment)作为敏捷开发实践,可以及早发现、解决问题,从而更早地将产品交付给客户。及早地从客户那里得到反馈,就可以及早地对产品进行修复和完善,交付更加完美的产品给客户,最终形成了良好的可以持续的闭环。什么是持续交付与持续部署持续集成是持续交付和持续部署的基础。持续集成使得整个开发团队保持一致,消除了集成所引起的问.

2021-02-06 22:41:03 762

原创 SpringCloud微服务部署与发布:部署微服务面临的挑战

微服务的部署与发布:部署微服务将面临的挑战当单块架构被划分成微服务之后,随着微服务数量的增多,毫无疑问,将会面临比单块架构更复杂的问题。部署微服务将面临的问题部署微服务将会面临以下问题。1.运维负担对传统的单块架构系统来说,产品通常只有一个发布包,升级、部署系统往往只需要部署这个发布包即可。现在,面临着这么多的微服务,显然运维的负担要比之前更重了。对于运维工程师来说,部署的服务呈指数上升,传统的手工部署方式往往已经不能适应日益增长的服务运维需求。⒉服务间的依赖在一个微服.

2021-02-06 22:39:46 539

原创 牛皮!终于有人把HTTP/2核心教程文档给整理完毕了,快来学

前言HTTP/2,简称h2,是万维网(World Wide Web)所使用的HTTP网络协议的一个重大修订版本,其目的是提升加载Web内容时的感知性能。HTTP/2的应用在不断增多,因为越来越多的网站管理员意识到,他们可以借此花很小的成本来提高他们网站的感知性能。我们每天都在使用h2一 它支撑了若干最流行的网站,如Facebook、 Twitter、 Google和Wikipedia——但很多人并不了解它。我们的目标是讲解h2的原理及其性能优势,这样你就可以充分利用它。如今互联.

2021-02-06 22:39:08 376

原创 微服务架构开发实战:如何集成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 342

原创 阿里资深架构师耗费三年终于把Netty进阶之路文档给整理完了

前言Netty将Java NIO接口封装,提供了全异步编程方式,是各大Java项目的网络应用开发必备神器。在本文中,将Netty学习者咨询的相关问题,进行了归纳和总结,以问题案例做牵引,通过对案例进行剖析,讲解问题背后的原理,并结合Netty源码分析,让读者能够真正掌握Netty,在实际工作中少犯错。本文中的案例涵盖了Netty 的启动和停止、内存、并发多线程、性能、可靠性、安全等方面,囊括了Netty绝大多数常用的功能及容易让人犯错的地方。在案例的分析过程中,还穿插讲解了Netty的问题定位思

2021-02-06 22:37:52 374

原创 微服务架构开发实战:API网关意义和常见API网关的实现方式

API网关意义API网关旨在用一套单一且统一的API入口点,来组合一个或多个内部API。API网关定位为应用系统服务接口的网关,区别于网络技术的网关,但是原理是一样的。API网关统一服务入口,可方便实现对平台众多服务接口进行管控,如对访问服务的身份认证、防报文重放与防数据篡改、功能调用的业务鉴权,以及响应数据的脱敏、流量与并发控制,甚至基于API调用的计量或计费等。API并不能适用于所有场景在基于微服务的架构设计中,往往包含多个服务,这些服务并不能适用于所有场景。例如,在一个面向PC的Web

2021-02-06 22:37:13 1036

原创 SpringCloud架构开发实战:实现服务负载均衡及高可用

实现服务的负载均衡及高可用在前面我们重新实现了微服务,其中天气数据采集微服务、天气预报微服务都重新采用了Feign技术,以便通过应用的名称来访问外部RESTful服务。结合Eureka部署实例,就能实现微服务的负载均衡及高可用。天气预报系统的微服务截至目前,天气预报系统的最新版本微服务共有以下4个。msa-weather-collection-cureka-feign:基于msa-weather-collection-cureka和Feign实现的天气数据采集微服务。msa-w.

2021-02-06 22:36:08 372

原创 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 469

原创 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 281

原创 20年IT老民工苦心编撰成超大流量分布式系统架构解决方案文档

前言本文融入了作者及其团队实践中的思考、心得与方法,可以帮助大家解决大型网站架构演变过程中遇到的诸多难题。本文的所有内容,并不是对架构理论的泛泛而谈,而是云集技术架构从 0 到 1 演变的宝贵实践经验。我崇尚技术,也推崇技术,业务能够推动技术迅速成长,技术反过来也能推动业务加速增长。我从本书的内容中感受到:超大流量分布式系统的架构必然是简单和清晰的,是需要不断PDCA(计划、执行、查验与行动)的,也在不断的迭代、演进中。相信,本文所呈现的宝贵实战经验对大家大有裨益,会为大家的实际工.

2021-02-05 22:50:12 381

原创 终于有大牛把Spring微服务架构设计第2版文档给整理完毕了

前言微服务是一种架构风格和模式:将复杂系统拆解为协同工作的小型服务,以此构建大型业务服务。微服务是自治、自包含且可独立部署的服务。当今世界上的许多企业将微服务作为默认的架构标准来构建面向服务的大型企业级应用。作为一种编程框架,Spring框架在开发者社区流行很多年了。使用SpringBoot不再需要重量级应用容器,并且它还支持部署轻量级无服务器应用。Spring Cloud结合了Netflix的许多OSS开源组件,提供了一个运行和管理大型微服务架构的生态系统;还支持负载均衡、服务注册、服务监控和

2021-02-05 22:49:15 343

原创 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 827

原创 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 528

原创 Swagger 3.0 天天刷屏,真的香吗?

前言最近频繁被Swagger 3.0刷屏,官方表示这是一个突破性的变更,有很多的亮点,我还真不太相信,今天来带大家尝尝鲜,看看这碗汤到底鲜不鲜....官方文档如何说?Swagger 3.0有何改动?官方文档总结如下几点:删除了对springfox-swagger2的依赖 删除所有@EnableSwagger2...注解 添加了springfox-boot-starter依赖项 移除了guava等第三方依赖姑且看到这里,各位初始感觉如何?既然人家更新出来了,咱不能不捧.

2021-02-05 22:46:41 803

原创 MySQL递归查询上下级菜单

正文在传统的后台管理系统里面经常会需要展示多级菜单关系,今天我们来学一下如何使用一条SQL语句展示多级菜单。现在我们有一张corpinfo单位表,里面有一个belong字段指向上级单位,首先来看一下现在表里有什么数据:SELECTuid,ubelongFROMcorpinfo现在是类似下面这样的一个三级菜单,uid为1的是我们的顶级菜单,ubelog为0。现在我们想实现传入一个 uid ,把当前 uid 和其下级单位的 uid 都展示出来,当然我们可以使用代码...

2021-02-05 22:46:07 1709

空空如也

空空如也

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

TA关注的人

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