Spring Cloud

深入解析Java中的ArrayList

痴心易碎 提交于 2020-12-20 16:33:01
一、概述 ArrayList底层使用的是数组。是List的可变数组实现,这里的可变是针对List而言,而不是底层数组。 数组有自身的特点,不变性,一旦数组被初始化,那么其长度就固定了,不可被改变。这就导致了ArrayList中的一个重要特性:扩容。 二、源码解析 2.1 声明 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable {/*...*/} 可以看到ArrayList类实现了四个接口: List:支持List接口中提供的方法 RandomAccess:支持快速随机访问 有关RandomAccess可见:Java集合系列-RandomAccess Cloneable:支持对象克隆功能 有关Cloneable可见:Java基础系列-浅拷贝和深拷贝 Serializable:支持序列化功能 有关Serializable可见:Java基础系列-序列化与反序列化 还继承自AbstractList抽象类,这个抽象类是List的抽象实现,实现了一些List中的公共方法。 2.2 字段解析 public class ArrayList<E> extends AbstractList<E> implements

资深架构师谈论Java 枚举

拜拜、爱过 提交于 2020-12-20 09:01:17
概念 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性。 在Java中,被 enum 关键字修饰的类型就是枚举类型。形式如下: enum Color { RED, GREEN, BLUE } 如果枚举不添加任何方法,枚举值默认为从0开始的有序数值。以 Color 枚举类型举例,它的枚举常量依次为 RED:0,GREEN:1,BLUE:2。 枚举的好处 :可以将常量组织起来,统一进行管理。 枚举的典型应用场景 :错误码、状态机等。 枚举类型的本质 尽管 enum 看起来像是一种新的数据类型,事实上,enum是一种受限制的类,并且具有自己的方法。 创建enum时,编译器会为你生成一个相关的类,这个类继承自 java.lang.Enum。 java.lang.Enum类声明 public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable { ... } 枚举的方法 在enum中,提供了一些基本方法: values() :返回 enum 实例的数组,而且该数组中的元素严格保持在 enum 中声明时的顺序。 name() :返回实例名。 ordinal() :返回实例声明时的次序,从0开始。 getDeclaringClass() :返回实例所属的

JNPF低代码开发平台——SpringCloud微服务解决框架

微笑、不失礼 提交于 2020-12-20 04:08:03
JNPF低代码开发平台总体介绍 JNPF低代码开发平台 是由引迈信息完全自主研发的专业的前后端分离java低代码快速开发平台, JNPF含盖SpringBoot+ SpringCloud 的所有必要的核心功能,JNPF的目标是更轻量级、更快速、更全面、更低代码量、更易于学习和使用的前后端分离的开发平台,可以实现无代码快速开发服务。 JNPF通过建立数据模型和代码生成器功能可以快速的实现80%的java开发工作,JNPF本身已含有无代码开发模式,包含了web开发、app开发、报表开发、大屏开发、门户开发等等。有基于代码生成器的低代码开发,有web、app、流程表单等核心开发功能.JNPF持续集成了多种原生组件:导入导出、电子签章、邮件收发、知识管理、文件预览、二维码生成、订单管理、项目管理等等。 适用业务场景 作为前后端分离项目,为大型分布式架构、弹性计算架构、微服务架构、多端化服务打下坚实的基础。 手机移动端APP、各种平台的小程序等一站式多端开发平台。 各种企业业务系统的基础开发框架(OA、CRM、ERP、HR、MES)。 后端采用 SpringCloud ,适合有意从传统架构转型微服务架构的企业。 主体业务功能 拖拉、可视化设计表单 所见即所得的表单设计方式,通过简单的拖拽控件及数据绑定设置即可完成表单设计工作。设计出来的所有表单都是标准的表单,具有良好的互操作性和可扩展性

Eureka 源码分析之 Eureka Client

梦想的初衷 提交于 2020-12-19 03:56:21
简介 Eureka是一种基于REST(Representational State Transfer)的服务,主要用于AWS云,用于定位服务,以实现中间层服务器的负载平衡和故障转移。我们将此服务称为Eureka Server。Eureka还附带了一个基于Java的客户端组件Eureka Client,它使与服务的交互变得更加容易。客户端还有一个内置的负载均衡器,可以进行基本的循环负载均衡。在Netflix,一个更复杂的负载均衡器包含Eureka基于流量,资源使用,错误条件等多种因素提供加权负载平衡,以提供卓越的弹性。 先看一张 github 上 Netflix Eureka 的一架构图,如下: 从图可以看出在这个体系中,有2个角色,即Eureka Server和Eureka Client。而Eureka Client又分为Applicaton Service和Application Client,即服务提供者何服务消费者。 每个区域有一个Eureka集群,并且每个区域至少有一个eureka服务器可以处理区域故障,以防服务器瘫痪。 Eureka Client 在 Eureka Server 注册,然后 Eureka Client 每30秒向 Eureka Server 发送一次心跳来更新一次租约。如果 Eureka Client 无法续订租约几次,则会在大约90秒内 Eureka

阿里巴巴为什么要用Spring框架?Dubbo不香么?

◇◆丶佛笑我妖孽 提交于 2020-12-18 14:05:17
2000年,对于Java来说,那时正是EJB流行的时代,大部分Java程序员和公司都在使用EJB进行开发,很少有人会去思考EJB中存在的缺点。Rod Johnson觉得EJB太过臃肿,并不是所有项目都需要使用这种大型框架, 提出了一个基于普通Java类和以及利用“依赖注入”的更简单的解决方案。 如果说 Java 工程师,有什么一定要“死磕”拿下的东西,那一定是 Spring 无疑了。 众所周知,Spring 无论在 Java 生态系统,还是在就业市场, Spring Boot、Spring Framework、Spring Data、Spring Cloud、Spring Security、Spring Session等都是Spring Framework 的基石,面试出镜率之高,无出其右。 Spring Framework相当于一栋高楼大厦的地基,是整个Spring生态中的基础。不管是灵活便捷的Spring Boot、还是微服务中的王者Spring Cloud,它们都依赖并且需要Spring Framework。 所以,我也建议大家, 如果想把Spring Boot或Spring Cloud彻底的学会,那么请务必先学Spring Framework。 实际上,对于Java程序员日常开发中经常所使用的@Service,@Component,@Bean等等,包括@Autowired、

SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)

本秂侑毒 提交于 2020-12-18 10:45:29
一、spring cloud简介 鉴于《史上最简单的Spring Cloud教程》很受读者欢迎,再次我特意升级了一下版本,目前支持的版本为Spring Boot版本2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE。 Finchley版本的官方文档如下: http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。另外说明spring cloud是基于springboot的,所以需要开发中对springboot有一定的了解,如果不了解的话可以看这篇文章: 2小时学会springboot 。另外对于“微服务架构” 不了解的话,可以通过搜索引擎搜索“微服务架构”了解下。 二、创建服务注册中心 在这里,我还是采用Eureka作为服务注册与发现的组件,至于Consul 之后会出文章详细介绍。 2.1 首先创建一个maven主工程。 首先创建一个主Maven工程,在其pom文件引入依赖,spring Boot版本为2.0.3.RELEASE

基于SpringCloud的IPFS私有云

给你一囗甜甜゛ 提交于 2020-12-18 08:58:11
基于SpringCloud的IPFS私有云,主要解决文件存储分发问题,不考虑挖矿,支持内网部署和多区域集群部署,(北京、上海、广州、香港、北美、欧洲)组网 支持全内网隔离部署 内网快速搭建私有文件存储服务,能快速部署、快速访问、无限扩容、自动分发、自动备份,支持内网部署和多跨区域组网部署 主要应用场景 文件上传同步 本地启动ipfs-client后,调用它的接口上传文件(本地上传文件不占用外网),其它外网节点可(ipfs cat Qm...)获取文件内容(p2p,速度更快) 接口数据校验 上传的文件生成的cid是通过内容签名生成的,不同系统可通过cid校验数据是否被修改,因为在本地生成cid,不会被劫持,第三方拿到cid后再获取文件内容 CDN文件分发 多区域启用网关,各子区域上传的文件,会自动同步其它区域,暴露一个区域的下载地址,即可获取文件 模块简单介绍 ipfs-client 分布式客户端,单独启动,自动组网,内网启动一台即可快速调用ipfs相关的API接口,快速进行文件上传下载, 文件上传后会自动分发到ipfs机器,上传接口会返回文件的cid,同时在client端保存一份'文件名'+'.ipfs'的文件,里面的内容是该文件的全网唯一CID编码,通过该编码可以 在任意集群的节点进行文件下载、查看等操作 ipfs-gateway 网关,需要多区域组网的可启动

SpringCloud之Eureka集群

家住魔仙堡 提交于 2020-12-18 06:56:25
  前面我们介绍了SpringCloud注册中心Eureka,但是存在一个单点故障的问题,一个注册中心远远不能满足实际的生产环境,现在我们介绍一下如何搭建一个Eureka集群。 一:集群环境搭建   我们先建两个注册中心工程,一个叫eureka_register_master,一个叫eureka_register_salve。master的端口是7998,salve的端口是7999。   eureka_register_master的配置文件application.properties如下: server.port= 7998 eureka.client.register -with-eureka= false eureka.client.fetch -registry= false spring.application.name =eureka- server eureka.instance.hostname = master eureka.client.service -url.defaultZone=http: // salve:7999/eureka   eureka_register_salve的配置文件application.properties如下: server.port= 7998 eureka.client.register -with-eureka=

springcloud学习二

僤鯓⒐⒋嵵緔 提交于 2020-12-14 22:35:41
Spring Cloud资料整理 https://www.cnblogs.com/xiaojunbo/p/7090742.html https://www.cnblogs.com/cmyxn/p/7704319.html Spring Cloud自己整理了一个demo可以点击下面链接下载 https://pan.baidu.com/s/1TaplV9XJMLXGMSNf3z9jMg 来源: oschina 链接: https://my.oschina.net/u/3855429/blog/4355664

程序员如何避免陷入内卷?

℡╲_俬逩灬. 提交于 2020-12-14 13:32:55
作者 | xiangzhihong8 责编 | 王晓曼 出品 | CSDN 博客 内卷(involution)是近两年流行起来的一个名词,用来指带人类社会在一个发展阶段达到某种确定的形式后,停滞不前或无法转化为另一种高级模式的现象,现在很多人用它来指代非理性的内部竞争或“被自愿”竞争。 内卷化最早出现在美国人类学家格尔茨的著作《农业的内卷化:印度尼西亚生态变迁的过程》一书中,书中描述的是这样一种状态:该地区水稻田是有限的,你不断增加劳动力并不能导致产量的增长,到最后你增加的人力越多,所有人的生活状态反而变得越差。 聊到内卷,其实IT行业也是一个⽐较容易出现内卷的⾏业。几年,十多年前,当IT行业作为一个新兴行业的时候,还是属于朝阳行业,但随着近几年越来越多的人涌入IT行业,一些细分的技术栈出现了一些内卷的现象,如客户端开发和后台Java开发。 所以,很多程序员常常会自嘲自己是工具人、IT民工。其实这话也没错,很多时候我们并不会不知道项目的缘起、也可能不知道曾经的过程,我们只是按照老板和产品经理的要求去一步一步实现产品。并且,产品的需求一直处于变化的状态,今天老板和客户是这个需求,明天又变成那个需求,而作为程序员就不得不每天去研究新技术。 再加上行业一直在变,浪潮之巅的企业一直在变换,流行的技术一直在变,热门的商业模式也一直在变,这样的后果就是对程序员的评判标准