ApiPost 前后端协作开发神器 Postman+Swagger+Mock+Websocket的完美替代品 ApiPost =Postman+Swagger+Mock+Websocket,前端、后端、测试同时编辑,内容实时同步。15 人以下的团队和个人完全免费,针对高校和培训机构也是完全免费的,企业也可以根据需要进行私有化部署。
主流数据库/国产数据库有哪些 如何适配国产数据库 主流数据库介绍Relational DBMS基于关系模型的数据库,关系模型折射现实世界中的实体关系,将现实世界中各种实体及实体之间的关系通过关系模型表达出来,最大特点就是事务的一致性。Key-value Stores一种非关系数据库,它使用简单的键值方法来存储数据,具有极高的并发读写性能。Document Stores一种非关系数据库,可以在海量的数据中快速的查询数据。通常数据表示为 JSON 文档,因为开发人员将其数据模型视为文档更为直观。Time Series DBMS一种非关系数
springboot+proguard+maven 实现代码混淆 看这一篇就够了 使用 proguard 混淆代码只能增加阅读和理解的难度, 并不能百分百保证代码安全。常用的应用场景是项目需要部署到客户机器上,一定程度上防止代码泄露。proguard 简介ProGuard 是一个混淆代码的开源项目,它的主要作用是混淆代码,ProGuard 包括以下 4 个功能:压缩(Shrink):检测并移除代码中无用的类、字段、方法和特性(Attribute)优化(Optimize):对字节码进行优化,移除无用的指令混淆(Obfuscate):使用 a,b,c,d 这样简短而.
「springboot 2.x 系列」再用 @Async 创建线程以后就不用来了 在很久很久之前,我有一段痛苦的记忆。那种被故障所驱使的感觉,在我脑海里久久无法驱散。原因无它,有小伙伴开启了线程池的暴力使用模式。没错,就是下面这篇文章。夺命故障 ! 炸出了投资人!我有必要简单的复述一下。其主要原因,就是开发人员,在每一次方法调用里,都创建了一个单独的线程池去处理。这样的话,如果请求量一增加,整个操作系统的压力就会耗尽,最终所有的业务都无法响应。我一直认为这是一个非常偶发的低级错误,发生频率非常的低。但随着这样的故障越来越多,xjjdog 认识到这是一个普遍的现象。以异步性能优
「springcloud 2021 系列」RocketMQ 如何快速实现微服务消息机制 RocketMQ 介绍详解了解可以查看如下文档:rocketmq 基础知识RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,广泛应用于多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、移动应用、手游、视频、物联网、车联网等。具有以下特点:能够保证严格的消息顺序提供丰富的消息拉取模式高效的订阅者水平扩展能力实时的消息订阅机制亿级消息堆积能力如何选择 RocketMQ
「springcloud 2021 系列」Spring Cloud Gateway + OAuth2 + JWT 实现统一认证与鉴权 通过认证服务进行统一认证,然后通过网关来统一校验认证和鉴权。将采用 Nacos 作为注册中心,Gateway 作为网关,使用 nimbus-jose-jwt JWT 库操作 JWT 令牌理论介绍Spring Security 是强大的且容易定制的,基于 Spring 开发的实现认证登录与资源授权的应用安全框架SpringSecurity 的核心功能:Authentication:身份认证,用户登陆的验证(解决你是谁的问题)Authorization:访问授权,授权系统资源的访问权限(解
「springcloud 2021 系列」Seata 彻底解决分布式事务问题 分布式事务单体应用单体应用中,一个业务操作需要调用三个模块完成,此时数据的一致性由本地事务来保证。微服务应用随着业务需求的变化,单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用独立的数据源,业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没法保证。在微服务架构中由于全局数据一致性没法保证产生的问题就是分布式事务问题。简单来说,一次业务操作需要操作多个数据源或需要进行远程调用,就会产生分布式事务问题。Seata 简
「springcloud 2021 系列」openfeign结合nacos进行声明式服务调用 源码地址:https://github.com/langyastudio/langya-tech/tree/master/spring-cloud从 SpringCloud 2020 版本开始 ribbon 默认被 移除,替代品为 spring-cloud-loadbalancer工作流程openFeign 服务调用(spring cloud 2020 开始使用 spring-cloud-loadbalancer 作为负载均衡组件)如何接入通过修改官方示例 nacos-discovery-
「springcloud 2021 系列」Spring Boot Admin 最简单的微服务应用监控 源码地址:https://github.com/langyastudio/langya-tech/tree/master/spring-cloudSpring Boot Admin 简介SpringBoot 应用可以通过 Actuator 来暴露应用运行过程中的各项指标,Spring Boot Admin 通过这些指标来监控SpringBoot 应用,然后通过图形化界面呈现出来。Spring Boot Admin 不仅可以监控单体应用,还可以和 Spring Cloud的注册中心相结合来监控微服务应用。
「springcloud 2021 系列」gateway新一代API网关服务 Spring 在因 Netflix 开源流产事件后,在不断的更换 Netflix 相关的组件,比如:Eureka、Zuul、Feign、Ribbon 等,Zuul 的替代产品就是 SpringCloud Gateway,这是 Spring 团队研发的网关组件,可以实现安全认证、限流、重试、支持长连接等新特性。背景说明如果有三个服务 account-service,product-service,order-service。现在有客户端 WEB应用 或 APP应用 需要访问后端服务获取数据那么就需要在客户
「springcloud 2021 系列」nacos配置管理 这样用就对了 源码地址:https://github.com/langyastudio/langya-tech/tree/master/spring-cloud服务配置Nacos Config 主要通过 dataId 和 group 来唯一确定一条配置,Nacos Client 从 Nacos Server 端获取数据时,调用的是此接口 ConfigService.getConfig(String dataId, String group, long timeoutMs)。group 默认为 DEFAULT_GR
「springcloud 2021 系列」nacos服务注册与发现 看这一篇就够了 Nacos 官方文档Nacos 简介Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理:如 Kubernetes Service、gRPC & Dubbo RPC Service、Spring Cloud RESTful ServiceNacos 具有如下特性:服务发现和服务健康监测支持基于 DNS 和基于 RPC 的服务发现,支持对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请
「springcloud 2021 系列」sentinel实现熔断与限流 原来这么简单 Sentinel 简介随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。特性丰富的应用场景:承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀,可以实时熔断下游不可用应用完备的实时监控:同时提供实时的监控功能。可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况广泛的开源生态:提供开箱即用的与
「springcloud 2021 系列」Spring Cloud Alibaba 介绍 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加少量注解和配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。https://github.com/alibaba/spring-cloud-alibaba/wiki主要功能
「springboot 2.x 系列」filter 过滤器如何正确使用 Filter vs Interceptor vs Listener过滤器(Filter)当你有一堆东西的时候,你只希望 选择 符合你要求的某一些东西。定义这些要求的工具,就是过滤器拦截器(Interceptor)在一个流程正在进行的时候,你希望 干预 它的进展,甚至终止它,这是拦截器做的事情监听器(Listener)当一个事件发生的时候,你希望获得这个事件发生的详细 信息,而并不想干预这个事件本身的进程,这就要用到监听器FilterRegistrationBean在 Spri
「springboot 2.x 系列」如何使用缓存缓解数据库压力 源码:https://github.com/langyastudio/langya-tech/tree/springboot/cacheMySQL 查询缓存来自:https://mp.weixin.qq.com/s/LZBctWNWi3qehb-dgUCmxQMySQL 的 QueryCache 缓存的是 SQL 语句文本以及对应的结果集。QueryCache 版本里程:4.0 推出5.6 默认禁用5.7 deprecated8.0 RemovedQueryCache 介绍M.
Java Annotation注解总结 使用注解注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释”。注解则可以被编译器打包进入class文件,是一种用作标注的“元数据”。注解类型从JVM的角度看,注解本身对代码逻辑没有任何影响,如何使用注解完全由工具决定。Java的注解可以分为三类:第一类是由编译器使用的注解,例如:@Override:让编译器检查该方法是否正确地实现了覆写@SuppressWarnings:告诉编译器忽略此处代码产生的警告这类注解不会被编译进入.class文件,它们在编译后就被编译器扔掉了。第
Java Reflection反射机制 一篇就懂了 反射是为了解决在运行期,对某个实例一无所知的情况下,如何调用其方法反射机制优缺点:优点可以让咱们的代码更加灵活、为各种框架提供开箱即用的功能提供了便利缺点让我们在运行时有了分析操作类的能力,这同样也增加了安全问题。比如可以无视泛型参数的安全检查(泛型参数的安全检查发生在编译时)。另外,反射的性能也要稍差点,不过,对于框架来说实际是影响不大的。Java Reflection: Why is it so slow?应用场景像咱们平时大部分时候都是在写业务代码,很少会接触到直接使用反.
Java IO流学习总结(1万字) 序列化 vs 反序列化如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。简单来说:序列化: 将数据结构或对象转换成二进制字节流的过程反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程对于 Java 这种面向对象编程语言来说,我们序列化的都是对象(Object)也就是实例化后的类(Class),但是在 C++这种半面向对象的语言中,struct(结构体)定义的是数据结构类型,而 class 对应
Java Generics泛型 看这一篇就够了 Java使用擦拭法实现泛型,编译器内部永远把所有类型T视为Object处理使用泛型Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型就是编写模板代码来适应任意类型泛型的好处是使用时不必对类型进行强制转换,它通过编译器对类型进行检查注意泛型的继承关系:可以把ArrayList向上转型为List(T不能变!),但不能把Li.