首页 文章 精选 留言 我的

精选列表

搜索[Springboot],共4376篇文章
优秀的个人博客,低调大师

java B2B2C Springboot电子商城系统-消息队列之 RabbitMQ

常见的消息队列 需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 目前业界有四款常用的消息队列,它们分别是RabbitMQ、RocketMQ、ActiveMQ和Kafka。RabbitMQRabbitMQ在2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最流行的消息中间件之一。 RabbitMQ的主要特性有: 可靠性: RabbitMQ提供了多种技术可以让你在性能和可靠性之间进行权衡。这些技术包括持久性机制、投递确认、发布者证实和高可用性机制;灵活的路由:消息在到达队列前是通过交换机进行路由的。RabbitMQ为典型的路由逻辑提供了多种内置交换机类型。如果你有更复杂的路由需求,可以将这些交换机组合起来使用,你甚至可以实现自己的交换机类型,并且当做RabbitMQ的插件来使用;消息集群:在相同局域网中的多个RabbitMQ服务器可以聚合在一起,作为一个独立的逻辑代理来使用;队列高可用:队列可以在集群中的机器上进行镜像,以确保在硬件问题下还保证消息安全;多种协议的支持:RabbitMQ支持多种消息队列协议;多语言支持:RabbitMQ的服务器端用Erlang语言编写,其客户端支持基本所有编程语言;管理界面: RabbitMQ有一个易用的用户界面,使得用户可以监控和管理消息Broker的许多方面;跟踪机制:如果消息异常,RabbitMQ提供消息跟踪机制,使用者可以跟踪发现异常;插件机制:提供了许多插件,来从多方面进行扩展,也可以编写自己的插件; RabbitMQ的优点有: 由于erlang语言的特性,mq 性能较好,高并发;健壮、稳定、易用、跨平台、支持多种语言、文档齐全;有消息确认机制和持久化机制,可靠性高;高度可定制的路由;管理界面较丰富,在互联网公司也有较大规模的应用;社区活跃度高; RabbitMQ的缺点有: 尽管结合erlang语言本身的并发优势,性能较好,但是不利于做二次开发和维护;实现了代理架构,意味着消息在发送到客户端之前可以在中央节点上排队。此特性使得RabbitMQ易于使用和部署,但是使得其运行速度较慢,因为中央节点增加了延迟,消息封装后也比较大;需要学习比较复杂的接口和协议,学习和维护成本较高; 微服务javab2b商城系统_java商城源码100%开源适合2次开发,框架源码下载地址

优秀的个人博客,低调大师

java B2B2C Springboot多租户电子商城系统-Consul 介绍

1、Consul 是什么愿意了解源码的朋友直接企鹅求求:二一四七七七五六三三Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,采用 Go 语言开发。Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对。Consul 采用 Raft 一致性协议算法,来保证服务的高可用;使用 GOSSIP 协议管理成员和广播消息,并且支持 ACL 访问控制。 2、Consul 的使用场景Docker 实例的注册与配置共享与 Consul template 服务集成,动态生成 Nginx 和 HAProxy 等配置文件Spring-Cloud-Consul 服务发现和配置文件存储 3、Consul 的优势使用 Raft 算法来保证一致性, 比 ZooKeeper 的 Paxos 算法更简单直接。支持多数据中心,内外网的服务采用不同的端口进行监听。 ZooKeeper 和 etcd 均不提供多数据中心功能的支持。支持健康检查,etcd 不提供此功能。支持 http 和 dns 协议接口。ZooKeeper 的集成较为复杂,etcd 只支持 http 协议。官方提供 web 管理界面,etcd 无此功能。Consul 1.2 新增 Service Mesh 解决方案。 4、Consul、ZooKeeper、etcd、Eureka 比较代码结构图:资料和源码来源

优秀的个人博客,低调大师

SpringBoot2.0响应式编程系列(二)-函数式编程和lambda表达式

函数接口 方法引用 package lambda; import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; import java.util.function.IntUnaryOperator; class Dog { private String name = "哮天犬"; /** * 默认10斤狗粮 */ private int food = 10; public Dog() { } /** * 带参数的构造函数 * * @param name */ public Dog(String name) { this.name = name; } /** * 狗叫,静态方法 * * @param dog */ public static void bark(Dog dog) { System.out.println(dog + "叫了"); } /** * 吃狗粮 JDK * * 默认会把当前实例传入到非静态方法,参数名为this,位置是第一个; * * @param num * @return 还剩下多少斤 */ public int eat(int num) { System.out.println("吃了" + num + "斤狗粮"); this.food -= num; return this.food; } @Override public String toString() { return this.name; } } /** * @author shishusheng */ public class MethodRefrenceDemo { public static void main(String[] args) { Dog dog = new Dog(); dog.eat(3); // 方法引用 Consumer<String> consumer = System.out::println; consumer.accept("接受的数据"); // 静态方法的方法引用 Consumer<Dog> consumer2 = Dog::bark; consumer2.accept(dog); // 非静态方法,使用对象实例的方法引用 // Function<Integer, Integer> function = dog::eat; // UnaryOperator<Integer> function = dog::eat; IntUnaryOperator function = dog::eat; // dog置空,不影响下面的函数执行,因为java 参数是传值 dog = null; System.out.println("还剩下" + function.applyAsInt(2) + "斤"); // // // 使用类名来方法引用 // BiFunction<Dog, Integer, Integer> eatFunction = Dog::eat; // System.out.println("还剩下" + eatFunction.apply(dog, 2) + "斤"); // // // 构造函数的方法引用 // Supplier<Dog> supplier = Dog::new; // System.out.println("创建了新对象:" + supplier.get()); // // // 带参数的构造函数的方法引用 // Function<String, Dog> function2 = Dog::new; // System.out.println("创建了新对象:" + function2.apply("旺财")); // 测试java变量是传值还是穿引用 List<String> list = new ArrayList<>(); test(list); System.err.println(list); } private static void test(List<String> list) { list = null; } } 类型推断 image.png

优秀的个人博客,低调大师

SpringBoot 手写过滤器&加载第三方过滤器

如何手写一个过滤器呢。假设我现在需要一个计时过滤器,我想把每一次调用服务锁花费的时间打印到控制台,我该怎么做呢? 拦截机制有三种: 1. 过滤器(Filter)能拿到http请求,但是拿不到处理请求方法的信息。 2. 拦截器(Interceptor)既能拿到http请求信息,也能拿到处理请求方法的信息,但是拿不到方法的参数信息。 3. 切片(Aspect)能拿到方法的参数信息,但是拿不到http请求信息。 他们三个各有优缺点,需要根据自己的业务需求来选择最适合的拦截机制。 拦截机制图 好了下面开始正文。 本教程大概目录: 1. 手写过滤器 2. 加载第三方过滤器 好了,开始正文。 1. 手写过滤器 特别容易,继承Filter ,然后根据需求重写它的三个方法。 /** * TimeFilter 计时过滤器 * Created by Fant.J. */ @Component public class TimeFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("time filter init"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("time filter start"); long start = new Date().getTime(); filterChain.doFilter(servletRequest,servletResponse); System.out.println("耗时:"+(new Date().getTime() - start)); System.out.println("time filter finish"); } @Override public void destroy() { System.out.println("time filter destroy"); } } 其中 init方法是初始化方法,最先执行。 然后执行doFilter方法,熟悉servlet的应该都知道,它其实就是调用业务。 最后destroy方法,是最后执行的。 然后我们启动服务,随便调用一个controller,控制台打印如下: 2. 加载第三方过滤器 一般在开发的时候,我们可能用到第三方的过滤器,我们不可能在其源码上添加@Component注解。所以我们必须写一个配置类来引入它。 下面我们把上面的例子当作第三方过滤器,把TimeFilter类上面的@Component注解去掉。做一个模拟练习。 /** * 引入第三方过滤器 将其放入spring容器 * Created by Fant.J. */ @Configuration public class WebConfig { @Bean public FilterRegistrationBean timeFilter(){ //创建 过滤器注册bean FilterRegistrationBean registrationBean = new FilterRegistrationBean(); TimeFilter timeFilter = new TimeFilter(); registrationBean.setFilter(timeFilter); List urls = new ArrayList(); urls.add("/*"); //给所有请求加过滤器 //设置 有效url registrationBean.setUrlPatterns(urls); return registrationBean; } } 注意一定要去掉TimeFilter类上面的@Component注解,否则过滤器会失效。 介绍下我的所有文集: 流行框架 SpringCloudspringbootnginxredis 底层实现原理: Java NIO教程Java reflection 反射详解Java并发学习笔录Java Servlet教程jdbc组件详解Java NIO教程Java语言/版本 研究

优秀的个人博客,低调大师

基于SpringBoot和PostGIS的云南与缅甸的千里边境线实战

云南,这个位于中国西南边陲的省份,以其独特的地理位置和丰富的民族文化而闻名。作为中国连接东南亚和南亚的重要门户,云南拥有长达四千多公里的边境线,与缅甸、老挝和越南三国接壤。这条边境线不仅是中国对外开放的前沿,也是维护国家安全和地区稳定的关键地带。随着全球化的深入发展和区域合作的不断加强,云南边境线的战略地位日益凸显。云南的边境线总长达到4060公里,是中国边境线最长的省份之一。这条边境线没有天然物理屏障,地势错综复杂、犬牙交错,有的是山高林密、荆棘丛生,沼泽密布、河水湍急。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册