编程
文章平均质量分 75
爱玛士
这个作者很懒,什么都没留下…
展开
-
分布式事务(2PC/3PC/TCC 最终一致性详解)
在分布式系统中,我们一般会根据业务对服务进行划分,这就会存在一些服务间的调用关系,所以普通的本地事务是满足不了我们的要求了,需要引入分布式事务来实现我们的一致性的要求。这里对事务进行一个简单的介绍:同学A给同学B转250块钱,系统首先从同学A的银行卡扣除250块钱,如果上述这个步骤成功了,但是系统往同学B的银行卡上转250块钱的时候失败了,那么就会造成数据对不上的情况了。在这种情况下我们就需要引入事务,保证转钱这两步操作要么同时成功要么同时失败,成功的情况就是同学B银行卡也收到了钱,失败的情况是回滚原创 2021-02-25 13:48:08 · 1100 阅读 · 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 · 348 阅读 · 1 评论 -
弯道超车!阿里甩出Spring Security宝典我粉了
前言据有关数据表明Spring Security在Java应用安全领域已经慢慢成为首先被推崇的安全解决方案。虽然它在Java应用安全领域所占比重越来越大,但大多数开发者面对Spring Security这样的“庞然大物”时无从入手,也因为对其不够了解而在实际项目中不敢轻易采用。如何学?怎么把它引入到项目里?已经是每一个开发人员需要考虑的问题。为了能带大家进入Spring Security的新世界,也本着好东西就是要拿出来分享的原则!今天互联网雷锋(小编我)就把从阿里一位老哥手上得到的Spring S原创 2021-02-25 13:47:05 · 303 阅读 · 0 评论 -
大白话揭秘搞好就能“年薪百万”的SpringCloud微服务
微服务基本概念架构的演变为什么会有微服务?假如回到10年前,一天张三入职了电商企业—并夕夕商城。公司初创,人比较少,公司网站的用户也很少,公司只有一个工程师项目架构比较简单1.单体架构没有想到的是,公司业务越来越好,网站用户量越来越大,单体架构的问题就暴露出来了,随着访问量增加,项目经常宕机问题:架构简单 难以抗住高并发于是,招人。对并夕夕商城进行升级优化。分析升级的方向:数据库 和 应用代码要放在不同的服务器上增加应用负载能力【集群】.原创 2021-02-25 13:46:34 · 524 阅读 · 0 评论 -
MySQL详解:索引的介绍和原理分析
索引的定义MySQL官方对索引的定义为:索引(Index)是协助MySQL高效获取数据的数据结构。本质上,索引的目的是为了提高查询效率,通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。可以类比银行的保险柜,比如你要找归属你的保险柜子。如果没有索引,你需要拿着钥匙,一个个的保险柜的试过去才能找到属于你的保险柜。但是如果有了索引,而且保险柜能够以物理分区的方式存在在对应的区域,同时你可以根据钥原创 2021-02-25 13:45:33 · 325 阅读 · 1 评论 -
SpringBoot接口幂等性实现的4种方案,真的够用了
一、什么是幂等性幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。在计算机编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。二、什么是接口幂等性在HTTP/1.1中,对幂等性进行了定义。它描述了一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外),即第一次请原创 2021-02-21 15:04:56 · 617 阅读 · 0 评论 -
阿里Java一面:volatile原理分析,你确定你能答出来
介绍使用 volatile 修饰的变量是线程共享的全局变量,是轻量级锁的一种表现形式,因为不需要线程上线文切换和调度这些操作,效率杠杠的,但是不能保证原子性,并发场景下要小心使用,比如:多个线程同时执行 i++ 是有问题的。volatile 的 Demo 代码:/** * 单例模式(懒汉式) * @date:2020 年 7 月 14 日 上午 9:48:24 */public class Singleton { public static volatile Singleton原创 2021-02-04 23:06:20 · 365 阅读 · 1 评论 -
面试官:CAS和AQS底层原理了解?我:一篇文章堵住你的嘴
CAS(Compare And Swap)原理分析字面意思是比较和交换,先看看下面场景(A 和 B 线程同时执行下面的代码):int i = 10; //代码 1i = 20; //代码 2场景 1:A 线程执行代码 1 和代码 2,然后 B 线程执行代码 1 和代码 2,CAS 成功。场景 2:A 线程执行代码 1,此时 B 线程执行代码 1 和代码 2,A 线程执行代码 2,CAS 不成功,为什么呢?因为 A 线程执行代码 1 时候会旧值(i 的内存地址的值 10)原创 2021-02-04 23:05:42 · 748 阅读 · 1 评论 -
阿里Java三面:分布式延时任务方案解析,万字长文一篇点通你
前言在开发中,往往会遇到一些关于延时任务的需求。例如生成订单30分钟未支付,则自动取消 生成订单60秒后,给用户发短信对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下几点区别定时任务有明确的触发时间,延时任务没有 定时任务有执行周期,而延时任务在某事件触发后一段时间内执行,没有执行周期 定时任务一般执行的是批处理操作是多个任务,而延时任务一般是单个任务下面,我们以判断订单是否超时为例,进行方案分析原创 2021-02-04 23:05:07 · 427 阅读 · 0 评论 -
SpringCloud Alibaba之Seata分布式事务
分布式事务基础事务事务指的就是一个操作单元,在这个操作单元中的所有操作最终要保持一致的行为,要么所有操作都成功,要么所有的操作都被撤销。简单地说,事务提供一种“要么什么都不做,要么做全套”机制。本地事务本地事物其实可以认为是数据库提供的事务机制。说到数据库事务就不得不说,数据库事务中的四大特性:A:原子性(Atomicity),一个事务中的所有操作,要么全部完成,要么全部不完成 C:一致性(Consistency),在一个事务执行之前和执行之后数据库都必须处于一致性状态 I:隔离性(原创 2021-02-04 23:04:31 · 478 阅读 · 0 评论 -
硬核!我花5小时肝出这篇Redis缓存解决方案,带你起飞
写在前面对于缓存穿透,雪崩相信很多小伙伴都有听过,不管是工作中还是面试都热点问题,本文重点带大家分析这些问题,各位看官请往下看!一、缓存穿透1. 什么是缓存穿透?为了缓解持久层数据库的压力,在服务器和存储层之间添加了一层缓存;一个简单的正常请求:当客户端发起请求时,服务器响应处理,会先从redis缓存层查询客户端需要的请求数据,如果缓存层有缓存的数据,会将数据返回给服务器,服务器再返回给客户端;如果缓存层中没有客户端需要的数据,则会去底层存储层查找,再返回给服务器;缓存穿..原创 2021-02-04 23:03:52 · 256 阅读 · 0 评论 -
腾讯技术官手撸笔记,全新演绎“Kafka部署实战”,已开源
导言我们知道,当下流行的MQ非常多,不过很多公司在技术选型上还是选择使用Kafka。与其他主流MQ进行对比,我们会发现Kafka最大的优点就是吞吐量高。实际上Kafka是高吞吐低延迟的高并发、高性能的消息中间件,配置良好的Kafka集群甚至可以做到每秒几十万、上百万的超高并发写入。除此之外,在热招的Java架构师岗位面试中,Kafka相关的面试题被面试官问到的几率也是非常大的,所以拥有一定年限的开发者,搞懂Kafka是很有必要的。那么怎么才能有效且快速学习Kafka呢?大佬的笔记必不可少:原创 2021-02-03 22:50:18 · 314 阅读 · 1 评论 -
13W字!腾讯高工手写“Netty速成手册”,3天能走向实战
前言在java界,netty无疑是开发网络应用的拿手菜。你不需要太多关注复杂的nio模型和底层网络的细节,使用其丰富的接口,可以很容易的实现复杂的通讯功能。作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty构建,比如RPC框架、zookeeper等。由此可见,掌握Netty技术对于开发人员来说是非常重要的。为了让更多的开发人员学习好Netty,特此公布:腾讯高工手写的13万字的“Nett...原创 2021-02-03 22:41:27 · 307 阅读 · 0 评论 -
不可置信!SQL 优化终于干掉了“distinct”
sql 优化之多表联合查询干掉 “distinct” 去重关键字在我提交了代码的时候,架构师给我指出我这个sql这样写会有问题。因为在分库分表的时候,是不支持子查询的。所以需要把多表的子查询的 sql 结构进行优化。是不是挺恐怖的;(此处为了脱敏,我把相关的 sql 关键词都给打码掉了)这个 sql 的执行步骤如下: 1、查询出来 d 表中的某个 id 字段包含多个 id 值的所有的数据(因为此表是 1-n 的关系,所以需要去重,仅需要拿到不重复的 id 才可以继续下一...原创 2021-02-03 22:39:39 · 552 阅读 · 0 评论 -
fastjson:我哭了,差点被几个“漏洞”毁了一世英名
01、前世今生我是 fastjson,是个地地道道的杭州土著,但我始终怀揣着一颗走向全世界的雄心。这不,我在 GitHub 上的简介都换成了英文,国际范十足吧?如果你的英语功底没有我家老板 666 的话,我可以简单地翻译下(说人话,不装逼)。我是阿里巴巴开源的一款 JSON 解析库,可以将 Java 对象序列化成 JSON 字符串,同时也可以将 JSON 字符串反序列化为 Java 对象。我提供了服务器端和安卓客户端两种解析工具,性能表现还不错。 我提供了便捷的方式来进...原创 2021-02-03 22:39:01 · 382 阅读 · 0 评论 -
面试被问公平锁和非公平锁,我竟用“排队打饭”解释得清清楚楚
简介有个小伙伴最近咨询我,前段时间他被面试官问了synchronized是公平锁还是非公平锁?当时就蒙圈了,最后面试结果可想而知,今天我们就用一个通俗的案例加上代码来说明公平锁和非公平锁。其实公平锁这个概念是JUC工具包才有的,比如ReentrantLock才有公平锁的概念,这篇文章我们结合生活中的实例用2段代码说明ReentrantLock公平锁和非公平锁,以及证明synchronized是非公平锁的,希望对小伙伴们有帮助。公平锁、非公平锁概念公平锁:举一个简单例子,有五个同学每天必须排队去打原创 2021-02-03 22:38:23 · 264 阅读 · 0 评论 -
哈?Redis百万数据为何上生产后凭空消失?恍然大悟了
为何不见了?先来说说场景:项目在上生产之前,我们已经把所需要的数据提前加入到redis当中,因为在生产环境中,rbd和aof持久化是需要两个同时打开的,而redis默认只打开了rbd。为啥要两个都打开呀?rdb 丢失数据较多,但是在恢复数据比较快,aof 丢失的数据较少,但是恢复慢。 所以,在生产环境,一般都会全部打开。怎么丢失的?我们在转移到生产服务器上之后,就要检查和修改各项配置,而redis就是其中一个。由于redis.conf文件默认只开启了rbd持久化,需要把aof持久化打原创 2021-02-03 22:35:24 · 246 阅读 · 0 评论 -
我今天才知道,原来TCP为了保证可靠传输做了这么多
前言本节内容有点多,不过关于 TCP 的话,除了三四次握手就是可靠传输了,高频重点知识点,大家还是搞清楚比较好。1.TCP 可靠传输概览首先解释一下,什么是可靠传输:可靠传输就是保证接收方收到的字节流和发送方发出的字节流是完全一样的。网络层是没有可靠传输机制的,尽自己最大的努力进行交付。而传输层使用 TCP 实现可靠传输,TCP 保证可靠传输的机制有如下几种:1)校验和 Checksum(稍作了解即可) 2)序列号和确认应答机制(重要) 3)重传机制(重要) 4)流量控制(滑动窗口原创 2021-02-03 22:34:46 · 511 阅读 · 1 评论 -
不是吧,你还只会用@Service注册Bean吗?
前言众所周知,在我们平时的开发中,Spring这个框架已经环绕了整个项目,不是说我们不能不用Spring,而是这样做的代价太大了。每次面试,总是会问道Spring IOC、AOP、事务等等,今天这篇的话是猛男我刚工作碰到的一个面试真题,可怜我那时只知道@Service。然后就回去等通知了,到现在还没有给我通知。另外的话,今天这篇会讲几种注入方式,至于原理好哥哥们就先别想了(别打我脸就行),这随便拿一个出来都得讲源码讲一遍,主要需要依赖的东西优点多,所以找个机会将Spring IOC 那一块的源码弄出原创 2021-02-03 22:33:38 · 522 阅读 · 0 评论 -
自定义SpringBoot默认MVC配置?好几个坑,避一避
前言前些天,在项目实践过程中出现了一个奇怪的状况,Spring Boot 的参数绑定失效了。而起因只是因为同事把参数上的 @RequestParam 注解去掉了。我们都知道,如果参数名称和 Controller 的方法名相同时,根本不需要 @RequestParam 注解的,Spring Boot 会自动帮我们完成参数的绑定。但为什么自动绑定机制失效了呢?本篇文章会为大家揭开谜底,在此过程中也会全面讲解如何在 Spring Boot 项目中自定义配置 WebMvc,以及这其中的很多坑。Sp...原创 2021-02-03 22:33:05 · 431 阅读 · 0 评论 -
Spring源码解读:一个单例Bean的生命周期
在以前梳理SpringBean创建的源码的时候有说过,画一张其涉及的接口的流程图,现在补上这个坑。同时以前主要是重点关注Spring的代码逻辑(导致我自己现在去看也不是很能看下去)。在这个重读系列,我们从其的整体结构出发,如果不是特别的重要的逻辑,我们就不关注里面的一些细节逻辑。一、DefaultListableBeanFactory1、结构SpringMVC的Bean容器的实现核心类就是这个DefaultListableBeanFactory,然后我们来看下其的层次结构 其继承.原创 2021-02-02 22:51:56 · 458 阅读 · 0 评论 -
不是吧?为了加快速度,Redis竟做了这么“疯狂”的设计
前言列表对象是 Redis 中 5 种基础数据类型之一,在 Redis 3.2 版本之前,列表对象底层存储结构有两种:linkedlist(双端列表)和 ziplist(压缩列表),而在 Redis 3.2 版本之后,列表对象底层存储结构只有一种:quicklist(快速列表),难道通过精心设计的 ziplist 最终被 Redis 抛弃了吗?列表对象同字符串对象一样,列表对象到底使用哪一种数据结构来进行存储也是通过编码来进行区分:编码属性描述object encoding命令返回值OBJ_原创 2021-02-02 22:51:13 · 216 阅读 · 0 评论 -
注意,不能错过的CAS+volatile实现同步代码块
前言:最近看到有人说可以使用CAS + volatile实现同步代码块。心想,确实是可以实现的呀!因为 AbstractQueuedSynchronizer(简称 AQS)内部就是通过 CAS + volatile(修饰同步标志位state) 实现的同步代码块。并且ReentrantLock就是基于AQS原理来实现同步代码块的;ReentrantLock源码学习和了解AQS原理可以参考:带你探索ReentrantLock源码的快乐今天,咱们就通过 CAS + volatile 实现一..原创 2021-02-02 22:50:43 · 446 阅读 · 0 评论 -
你不得不知道的,详细完整的对象实例化过程
对象的实例化过程需要做哪些工作呢?首先Java是一门面向对象的语言,类是对所属于一类的所有对象的抽象,对象的所有结构化信息都定义在了类中,因此对象的创建需要根据类中定义的类型信息,也就是类所对应的class二进制字节流,所以这就涉及到了类的加载与初始化。其次,对象大多存储在堆内存中,这就涉及到内存的分配。除此之外,还有变量的初始化零值,对象头的设置,在栈中创建对象的引用等等,本文我们来一起详细的分析一下对象的完整实例化过程。1、整体流程从整天上来看对象的整个实例化过程如下图所示:为了故.原创 2021-02-02 22:50:03 · 354 阅读 · 0 评论 -
大型电商平台设计实例:创建REST API、WebUI微服务
合理划分微服务微服务架构设计的首要任务就是合理划分微服务,即围绕业务功能创建微服务项目。在划分微服务时,有关微服务粗细粒度的考量,建议在平台创建的初始阶段使用粗粒度的方法,按业务功能进行划分。随着业务的发展及其运营的情况,再依据发展规模考虑是否继续细分。下面,我们将使用水平划分法和垂直划分法两种方法相结合的方式创建微服务。一方面,在水平方向上,根据业务功能划分微服务,并把这次划分所创建的微服务称为 RESTAPI 微服务。 RESTAPI 微服务负责业务功能的行为设计,主要完成数据管理方面的工作,并原创 2021-02-01 23:12:51 · 412 阅读 · 0 评论 -
大型电商平台设计实例:电商平台项目工程、数据库选型、代码库
电商平台微服务体系架构经过一系列的微服务设计,下面使用一张维导图完整表示这个电商平台的微服务架构设计模型,如图 3-6示。这是一个为简单的电商平台微服务架构设计模型,并且使用了粗粒度的微服务划分方法划分微服务,但是这已经可以划分出二十几个微服务了,如果再结合使用多副本的方式进行部署,那么一个电商平台至少要运行四十几个微服务。电商平台微服务项目工程从3.6 节的设计模型中,可以组建出如表 3-1 所示的电商平台的各个微服务工程。经过工程的组建,电商平台的二十几个微服...原创 2021-02-01 23:08:04 · 887 阅读 · 0 评论 -
SpringCloud微服务架构实战:开发环境的准备
开发环境准备有关 Java 开发环境的准备,除 JDK IDE 外,还需要准备另外一些工具或服务,以方便进行代码管理、开发调试等一些常用操作,具体如下:Java SDK IntelliJ IDEA Git Consul MySQL 及其客户端 MongoDB 及其客户端 Redis RabbitMQ选择 JDK 的版本JDK 需要使用 1.8 或以上版本,读者可根据自己的操作系统,从 网选择相关的安装包下载使用。本文实例都是基于 JDK 1.8 开发的,并且开发完成.原创 2021-02-01 23:07:02 · 417 阅读 · 0 评论 -
SpringCloud微服务架构实战:类目管理微服务开发
类目管理微服务开发从本章开始,我们将根据电商平台的各个实例项目进行具体的微服务开发,主要包括类目管理、库存管理、订单管理等。在这几个实例项目中,我们将根据项目本身的特点,使用不同的数据库进行开发。对于类目管理来说,我们将使用二级分类设计,即数据实体之间存在一定的关联关系,因此最好的选择就是使用Spring Data JPA进行开发。Spring Data JPA是Spring Boot开发框架中一个默认推荐使用的数据库开发方法,同时,JPA 也是领域驱动设计的一种具体应用。本章的项目工程可以通过本文原创 2021-02-01 23:05:48 · 407 阅读 · 0 评论 -
SpringCloud微服务架构实战库存管理与分布式文件系统
库存管理与分布式文件系统在电商平台的库存管理系统设计中,将涉及商品和本地图库的管理,这里我们将使用另一种数据开发框架 MyBatis进行数据库访问方面的设计,还将实现与分布式文件系统的对接使用。本章实例的项目工程是一个商品微服务项目goods-microservice,可以从本文提供的源代码中下载,或者在IDEA中通过Git检出:检出代码后,请获取本实例使用的分支V2.1。本项目包含以下几个模块: goods-object:公共对象设计。 goods-restapi:库存管理微服务API应用原创 2021-02-01 23:04:17 · 676 阅读 · 0 评论 -
SpringCloud微服务架构实战使用分布式文件系统DFS
使用分布式文件系统 DFS微服务应用使用分布式方式进行部署,并且有可能随时随地部署多个副本,所以必须有一个独立的文件系统来管理用户上传和使用的资源文件,包括图片和视频等。在模块goods-web 的设计中,我们是使用FastDFS这个轻量级的分布式文件系统来设计的。如果使用云服务商提供的对象存储服务来设计,如OSS服务等,则可以参照服务提供商的使用说明,并结合本实例进行设计。下面针对库存管理中,商品创建和编辑时使用的图片,实现在FastDFS上进行存储和管理的设计。有关FastDFS的安装、原创 2021-02-01 23:02:47 · 731 阅读 · 0 评论 -
学完阿里P8推荐的实时流计算系统设计与实现PDF,终入淘宝
前言本文将带领大家透过现象看本质,掌握高性能、高并发、实时系统设计与权衡之道;高度抽象出实时流计算系统的技术支撑、架构模式、编程模式、系统实现与协同系统,并从零编写一个分布式实时流计算系统!本文总结了实时流计算系统的通用架构模式。通过从无到有构建一个流计算编程框架,让读者了解流计算应用计算的任务类型,学会解决计算过程遇到的各种问题和难点。本文希望让读者领会Java程序开发中“流”这种编程方式的优势和乐趣所在。另外,通过将单节点流计算应用扩展为分布式集群,让读者理解分布式系统的架.原创 2021-02-01 23:01:27 · 589 阅读 · 0 评论 -
springcloud微服务架构实战:商家管理微服务设计
商家管理微服务设计商家管理微服务是一个独立的RESTAPI应用,这个应用通过接口服务对外提供商家信息管理、商家权限管理和菜单资源管理等方面的功能。商家管理微服务开发在merchant-restapi模块中实现,有关这一类型模块的依赖引用、配置、启动程序的设计等,可以参考前面章节中有关RESTAPI微服务开发中的相关说明,不再重复。商家管理微服务将直接调用权限管理模型的领域服务,在调用之前,我们可以对领域服务层进行一个单元测试,以验证领域服务层的程序正确性。同时,也可以通过单元测试生成一个管理员用原创 2021-01-30 22:35:12 · 348 阅读 · 1 评论 -
微服务架构实战:商家管理后台与sso设计:SSO设计
SSO设计Spring Security是一个功能强大、可定制的身份验证和访问控制框架.Spring Security OAuth2是一个基于Spring框架支持第三方应用授权的工具组件。通过使用Spring Security OAuth2,我们可以在商家后台中进行单点登录(SSO)设计,从而为多个微服务应用的系统集成,使用统一的安全控制管理。SSO设计分为服务端和客户端两大部分。SSO服务端为每个应用提供了统一的访问控制和授权认证服务,是一个Web UI微服务应用,在模块merchant-sso中原创 2021-01-30 22:33:44 · 544 阅读 · 0 评论 -
微服务架构实战:商家管理后台与sso设计,SSO客户端设计
SSO客户端设计下面通过模块merchant-security对 SSO客户端安全认证部分的实现进行封装,以便各个接入SSO的客户端应用进行引用。安全认证的项目管理配置SSO客户端安全认证的项目管理使用了如下所示的依赖配置:<dependencies><dependency><groupId>com.demo</groupId><artifactId>merchant-client</artifactId&g.原创 2021-01-30 22:32:25 · 517 阅读 · 0 评论 -
平台管理后台与商家菜单资源管理:平台管理后台数据服务设计
平台管理后台与商家菜单资源管理平台管理后台是为电商平台的运营方提供服务的,它主要包含商家管理和一些公共配置管理的功能。在商家管理的设计中,包括商家的注册、审核、商家用户的权限管理和菜单资源管理等功能。除一些公共管理功能的设计外,平台管理后台本身也有安全控制管理的设计。平台管理后台的项目工程为manage-microservice,完整的源代码可以从本书源代码中下载。本章实例代码的分支为V2.1,检出请注意更新。平台管理后台的开发主要包含两大部分内容,一部分是管理后台本身的访问控制管理设计,另一部原创 2021-01-30 22:31:43 · 751 阅读 · 0 评论 -
平台管理后台与商家菜单资源管理:平台管理后台的访问控制设计
平台管理后台的访问控制设计这里的访问控制设计使用了Spring Secutiry来实现,这些内容与第10章SSO设计中的访问控制部分的实现方法相差不多,不同之处在于这里并不需要OAuth 2,而对权限管理的设计也使用了一种更为简便的方法来实现。下面略过一些相同的地方,只针对不同点进行说明。这些设计都是在模块manage-web 中实现的。在访问控制中使用操作员创建一个MyUserDetails类,实现Spring Secutiry的UserDetails,从而导入Operators用户.原创 2021-01-30 22:26:48 · 322 阅读 · 0 评论 -
终于学完阿里P8架构师多年实战经验总结分享微服务之道实战文档
前言在程序员的世界里,新概念、新技术层出不穷,诚如庄子所言:“吾生也有涯,而知也无涯,以有涯随无涯,殆已!”把学习新技术当作一种乐趣,掌握其精髓,并应用到日常的开发工作中,提高开发效率,构建出更酷、更符合用户需求的产品,是一件很快乐的事。高级软件架构师多年实战经验的结晶,多位专家联袂推荐!手把手带你体会从微服务的设计、实现到运维的全过程。涵盖了微服务度量的概念、设计,实现、聚合分析、展示和报警,以及如何通过度量来推动服务的改进和完善本文从一开始接触微服务到熟练应用度量驱动开发方法,.原创 2021-01-30 22:26:12 · 392 阅读 · 1 评论 -
平台管理后台与商家菜单资源管理:商家的注册管理设计
商家的注册管理设计对商家的注册管理设计主要是通过调用商家服务的REST API实现的。在注册一个商家时,除创建一个商家对象外,还必须为商家创建一个用户,这样商家才能使用这个用户登录商家管理后台。在商家的查询对象设计中增加两个字段,用来表示商家所属用户的简要信息,代码如下所示:public class MerchantQo extends PageQo implements Serializable {private Long id;private String name;private原创 2021-01-30 22:25:36 · 370 阅读 · 0 评论 -
80W美团架构师7年心血终成轻量级框架SSM整合开发实战文档
前言Spring + Spring MVC + MyBatis(简称:SSM框架)在Java Web开发领域中占据着十分重要的地位,一路走来已十余载,作为目前流行的轻量级J2EE框架,其在保留了经典Java EE应用架构高度可扩展性和高度可维护性的基础上,降低了Java EE应用的技术和部署成本,对于大部分企业应用是第一首选。因此掌握并学会使用SSM框架进行项目开发,成为Java Web开发人员必备技能之一。本文将带大家从原理到实践,详解Spring 5+SpringMVC 5+MyB.原创 2021-01-30 22:25:02 · 248 阅读 · 0 评论 -
平台管理后台与商家菜单资源管理:商家权限及其菜单资源管理设计
商家权限及其菜单资源管理设计在商家的菜单体系中,我们设计了一个三级菜单,分别为分类、模块和资源。其中,分类菜单是顶级菜单,表示一个微服务应用;模块菜单是一个二级菜单,表示一个应用功能(实体)的主页;资源菜单是三级菜单,表示一个实体的增删改查中某一个具体的操作的权限。在平台管理后台中,必须对这些菜单进行统一管理。下面就对各个菜单的管理及其设计分别加以说明。分类菜单管理设计分类菜单是一个顶级菜单,它所连接的是一个Web微服务应用,如库存管理、订单管理等,所以顶级菜单只在SSO首页中进行展示。原创 2021-01-30 22:24:24 · 690 阅读 · 0 评论