-
SpringCloud系列Gateway:路由匹配规则
环境搭建主要分三个项目Product-service(端口8890):商品服务Order-service(端口8891):订单服务Gateway-server(端口8892):网关核心概念路由(Route):路由是网关最基础的部分,路由信息ID、目标URI、一组断言和一组过滤器组成,如果断言为真,说明请求的URI和配置匹配。断言(Predicate):Spring Cloud ...
-
SpringCloud系列Gateway:过滤器总结
今天带大家看一下Spring Cloud Gateway的过滤器过滤器分类Spring Cloud Gateway根据作用范围划分为GatewayFilter和GlobalFilter,二者的区别如下GatewayFilter:网关过滤器,需要通过spring.cloud.routes.filters配置在具体的路由下,只作用在当前特定路由上,也可以通过配置spring.clo...
-
阿里开源的分布式事务框架 Seata
1. Seata 概述Seata 是 Simple Extensible Autonomous Transaction Architecture 的简写,由 feascar 改名而来。Seata 是阿里开源的分布式事务框架,属于二阶段提交模式。目前github上已经有 12267 颗星了,也很活跃,最新的提交时间很多都是几天前。首先我们回顾一下在单体应用中,例如一个业务调用了3...
-
SpringCloud微服务架构实战:商家权限体系设计及开发
商家管理后台与sso设计在本文的电商平台实例中,商家是这个平台的主角,商家管理后台是专门为这个主角提供的一个安全可靠的操作平台。在商家管理后台中,商家可以进行商品管理、订单管理、物流管理、会员管理、评价管理等各个方面的管理工作。这些管理功能及其服务功能分别由不同的微服务项目实现,并通过不同的应用进行部署。现在我们要做的,就是将这些分布在不同应用中的管理功能,组成一个具有相同访问...
-
springboot 基于数据库的乐观锁实现
何谓悲观锁与乐观锁悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和Reentr...
-
搭建百万连接服务,使用netty完成websocke的推送
(一)使用websocket① 介绍webSocket协议是基于TCP的一种新的网络协议。他的出现实现了网络和浏览器全双工通信,允许服务器主动发送信息给客户端。客户端 给 服务器发消息是半双工,服务器给客户端也发送消息就是全双工。多客户端多语言多浏览器支持:浏览器,php,Java,ruby,nginx,python,Tomcat,erlang,.net等等。专栏从0开始学会k...
-
SpringCloud微服务开发实战:如何进行微服务的拆分?
如何进行微服务的拆分在前面介绍了基于Spring Boot来快速实现一个“天气预报”应用。虽然没有使用太多的代码,但已经实现了数据采集、数据缓存、提供天气查询等诸多的功能,这也是Spring Boot是快速实现企业级应用开发的利器的原因。Spring Boot让企业级应用开发变得不再困难!很显然,这个“天气预报”应用是一个单块架构的应用。它表面看上去很强大(集成了数据采集、数据...
-
分布式高并发服务三种常用限流方案简介
服务限流场景在高并发大流量系统中,由于并发大造成服务资源不足,负载过高,进而引发致一系列问题,这里的流量一般都是突发性的,由于系统准备不足,很难短期扩容来应对 ,进行限流是最常用的手段,所以说限流也是服务稳定性治理重要的手段。限流可能发生在多个层面:用户网络层:突发的流量场景如热点事件流量(秒杀事件、热门抢购,微博热搜),恶意刷流,竞对爬虫等。内部应用层:上游服务的异常调用,脚...
-
Element UI 框架中表单数据的验证方式
前言Element UI 框架中的表单验证使用 async-validator(异步校验)第三方库实现,该库在 GitHub的地址是 https://github.com/yiminghe/async-validator,至今在 GitHub 上已经有了 5.1+的 star,是多 款 前 端 框 架 使 用 的 表 单 验 证 机 制 。 该 库 在 npm 中 的 API ...
-
Vue Router 4.0正式发布!焕然一新
今天,Vue Router 4 正式发布稳定版本。在经历了 14 个 Alpha,13 个 Beta 和 6 个 RC 版本之后,Vue Router v4 闪亮登场,为你带来了 TypeScript 集成、新功能以及对现代应用程序的一致性改进,已经准备好成为 Vue3 新应用的最佳伴侣。将近 2 年的时间,大约 1500 次提交,15 个RFC[1],无数的心血……以及许多用...
-
Redis持久化问题定位与优化技巧
今天主要分享继Redis持久化方式RDB、AOF之后的一些常用的Redis问题定位于优化方式。这里主要CPU、内存、磁盘在三个维度去分析问题! Fork操作当Redis做RDB或AOF重写时,一个必不可少的操作就是执行fork操作创建子进程,对于大多数操作系统来说fork是个重量级操作虽然fork创建的子进程不需要拷贝父进程的物理内存空间,但是会复制父进程的空间内存页表。例如对...
-
Elasticsearch6.5中文文档-引入查询语言
Elasticsearch提供了一种JSON样式的可用于执行查询的特定领域语言。被称为DSL查询。这种查询语言非常全面,乍一看可能令人生畏,但实际学习查询的最佳方法是从一些基础示例开始。回到上一个示例,我们执行了以下查询:GET /bank/_search { "query": { "match_all": {} } }剖析以上内容,query部分告诉我们查询定义是什么,m...
-
什么是悲观锁和乐观锁?
思维导图文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary悲观锁悲观锁是平时开发中经常用到的一种锁,比如ReentrantLock和synchronized等就是这种思想的体现,它总是假设别的线程在拿线程的时候都会修改数据,所以每次拿到数据的时候都会上锁,这样别的线程想拿这个数据就会被阻塞。如图所示...
-
运用拦截器与注解,在SpringBoot中实现自定义权限认证
权限的认证框架很多,比如Shiro与SpringSecurity。今天使用拦截器与注解的方式,实现一个自定义的权限认证。目前,系统中需要两种角色,分别是平台管理员与普通用户,他们各自拥有不同的权限。在真正开始他们的操作之前,系统要求先登录。(1)第一次登陆系统后,之后利用Cookie与Session来标识用户。先写好Cookie与Session的工具类备用CookieUtil...
-
HttpClient的两种重试机制
本文基于 HttpClient 4.5.13使用 http 请求外部服务时,由于网络或者服务本身的不稳定性,经常需要重试。重试当然可以通过手撸代码实现,但更好的方式是通过现有的机制去实现。 HttpClient 中支持两种重试:异常重试。服务不可用重试。异常重试HttpClient 执行时会抛出两种异常:java.io.IOException ClientProtocolExc...
-
搞懂Java本地事务和分布式事务
什么是事务事务的概述是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元);事务的特性事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。原子性(atomicity):事务是一个不可分割的工作单位,事务中包括的诸操作要么都做...
-
Springboot过滤器和拦截器详解及使用场景
一、过滤器和拦截器的区别1、过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。2、拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的,spring的功能可以被拦截器使用,在拦截器里注入一个service,可以调用业务逻辑。而过...
-
大牛教大家如何用SpringBoot技术快速实现天气预报系统
从一个天气预报系统讲起本节通过Spring Boot技术快速实现一个天气预报系统。通过这个系统,一方面可以了解Spring Boot的全面用法,为后续创建微服务应用打下基础;另一方面,该系统会作为本节进行微服务架构改造的非常好的起点。下面以前面创建的hello-world应用作为基础进行改造,成为新的应用micro-weather-basic。开发环境为了演示本例,需要采用如下...
-
腾讯牛逼!终于开源了自家的 JDK——Kona
是的,继阿里 2019/03 开源基于 OpenJDK 的长期支持版本 Alibaba Dragonwell 之后,腾讯也发布了自家的开源免费的 JDK 版本——Tencent Kona,必须替小马哥宣传一波。看了下 Github 腾讯开源版 JDK 的发布记录:最早是在 2019/11/04 这天发布的 Tencent Kona v8.0.0 版本,没错,最近栈长村里通网了,...
-
wamp最大连接数问题的简单解决方法
wampserver是一个比较容易上手的php服务器软件,但wamp人多了(在线人数上了500) 就会比较卡,而这时服务器负载还远远没有达到,CPU50% 内存60%整了好久都没个结果,偶然看到一篇教程,发现原来是连接数限制的问题,修改了之后就速度飞快了。打开apache2文件夹 下的conf文件夹 修改httpd.conf随便在任意一行位置插入ThreadsPerChild ...
-
Java 8时间类,越用越香
为什么会在Jdk8中加入很多时间类非线程安全java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一。Date date = new Date(); for (int i = 0; i < 100; i++) { new Thread(new Runnable() { ...
-
Redis两种持久化机制RDB和AOF详解(面试常问,工作常用)
redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File)。在这里假设你已经了解了redis的基础语法,某字母网站都有很好的教程,可以去看。基本使用的文章就不写了,都是一些常用的命令。下面针对这两种方式来介绍...
-
深入理解Mysql数据存储
前言本文内容Mysql 数据文件说明Mysql 数据逻辑存储架构Mysql 表空间,主要是系统表空间和独立表空间Mysql 数据类型时区对 datetime 和 timestamp 影响,java 中 LocalDatetime 保存时,时间和预期不符的原因分析和解决办法varchar(n) 和 char(n) 保存时,n 能取多少,n 的含义。一行数据中 varchar 能存...
-
不会吧,居然现在还没有人知道JDBC的核心API吗?
一、常用JDBC API在java.sql包中包含体现JDBC基本功能的若干接口和类:1.Driver 接口:代表驱动程序2.DriverManager 类:驱动程序管理员3.Connection 接口:代表数据库连接4.Statement 、PreparedStatement、CallableStatement 接口:代表数据库操作对象5.ResultSet 接口:代表结果集...
-
Java 实现6种负载均衡算法
1、完全随机算法缺点:所有服务器的访问概率都是相同的。package com.example.demo.core.random; import java.util.Arrays; import java.util.List; import java.util.Random; /** * 负载均衡算法 * 完全随机算法 */ public class RandomS...
-
通过OpenResty实现nginx动态拉黑IP
前面提到过,nginx在项目中的作用。其实还有很多高级模块功能,例如今天我们利用OpenResty来防止一些IP恶意攻击。OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。官方地址:http:/...
-
物联网关键技术:消息队列
消息队列MQ连接物联网与后端系统(业务应用、数据分析)大量的设备接入物联网平台后,会产生各种类型的事件和数据,对接到后端的各种服务,包括计算和存储。消息队列可以起到异步通信、应用解藕、削峰平谷的作用,是物联网平台不可缺少的组成部分。EMQ的解决方案:IoT Broker可直接对接消息队列服务消息队列技术选型传统J2EE企业信息系统中要引入消息队列MQ实现异步消息机制,最早大家都...
-
入驻了WX的平台服务商,可以免费申请小程序啦
最近没那么忙了,就重新捡起了之前搁置了很久的项目。由于项目需要用到小程序,重新申请个吧,项目还没带来盈利,就要给WX贡献三百大洋的认证费,很是不爽。后来了解到WX的第三方服务平台可以免认证费帮客户创建小程序,程序员出身的我们,天生就是爱折腾。一顿操作猛如虎,自己的服务商申请终于审核通过了接下来就是各种接口对接和调试了,不得不说WX的文档真够烂的,没办法,谁让我们要用人家呢。硬着...
-
Vue+BootStrapV4,构建响应式、移动优先项目——BootstrapVue
介绍BootStrap是世界上最受欢迎的构建响应式移动优先网站的框架,Vue是当前最流行的前端框架之一,BootstrapVue则是将两者相结合,使用BootstrapVue,可以使用Vue.js和前端CSS库--Bootstrap v4在Web上构建响应式,移动优先项目。BootstrapVue具有超过40个插件和超过75个自定义组件,为Vue.js提供了最全面的Bootst...
-
将最新Chromium浏览器集成到.NET应用程序中
DotNetBrowser是一个.NET库,允许将基于Chromium的WPF和WinForms组件嵌入到.NET应用程序中,以显示使用HTML5,CSS3,JavaScript,Silverlight等构建的现代网页。DotNetBrowser更新至v2.3版本,Chromium更新至84版本,允许从JavaScript访问和修改属性的值,增加拖放事件拦截和IDataObje...