Spring Cloud

Java 泛型,你了解类型擦除吗?

空扰寡人 提交于 2020-08-16 07:14:43
作者:frank909 https://blog.csdn.net/briblue/article/details/76736356 泛型,一个孤独的守门者。 大家可能会有疑问,我为什么叫做泛型是一个守门者。这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇。泛型是 Java 中一个很小巧的概念,但同时也是一个很容易让人迷惑的知识点,它让人迷惑的地方在于它的许多表现有点违反直觉。 文章开始的地方,先给大家奉上一道经典的测试题。 List<String> l1 = new ArrayList<String>(); List<Integer> l2 = new ArrayList<Integer>(); System.out.println(l1.getClass() == l2.getClass()); 请问,上面代码最终结果输出的是什么?不了解泛型的和很熟悉泛型的同学应该能够答出来,而对泛型有所了解,但是了解不深入的同学可能会答错。 正确答案是 true。 上面的代码中涉及到了泛型,而输出的结果缘由是类型擦除。先好好说说泛型。 泛型是什么? 泛型的英文是 generics,generic 的意思是通用,而翻译成中文,泛应该意为广泛,型是类型。所以泛型就是能广泛适用的类型。 但泛型还有一种较为准确的说法就是为了参数化类型

零基础学习IT技术哪个编程语言好?为什么说首选Java

眉间皱痕 提交于 2020-08-16 06:11:27
我国对java工程师人才的需求数量还将持续增加,工作起点高,薪资待遇好,职业寿命长中国软业行业的快速发展让人们看到了IT的未来,二是java这种语言的应用广泛性使得人才缺口越来越大,就业和薪资有着其他行业无法比拟的优势java语言是目前全球的IT行业最常用的一种编程方式,大部分企业应用程序和手机软件都是用java开发的。 影响大家做出选择的原因可能只是因为听说Java前景好、在编程语言排行榜上一直位于前三等等之类的原因。但是作为一门编程语言,Java具体好在哪里,大家似乎并不怎么关心,那么今天我就来告诉你为什么Java是编程初学者的首选: Java是一个面向对象的编程语言,容易理解。它略去了多重加载、指针等难以理解的概念。并且实现了自动垃圾回收,大大简化了程序设计。跨平台是Java最大的优势。Java运行在JVM(Java虚拟机)上,在任何平台只要安装了JVM。Java就可以运行。它架构在操作系统之上,屏蔽了底层的差异。真正实现了“Write once,run anywhere”。 Java中没有指针,这样就没有办法直接访问内存了。另外Java也不容易出现内存泄露。Java内置对多线程的支持,可以方便地在程序中实现多线程的功能。不像其他不支持多线程的语言,需要调用操作系统的多线程功能才能完成多线程的实现。 大型企业级应用,主要使用JAVA EEE,比如大型企业管理系统,最典型的就是

一个 Java 方法,最多能定义多少参数?

随声附和 提交于 2020-08-16 02:00:40
在 JVM 中,一个 Java 方法,最多能定义多少参数呢?这是一个很无聊的问题,即使能定义一万个,十万个,谁又会真的去这么做呢。 但是作为一个 coder,最重要的不就是好奇心吗,没有好奇心,和一条咸鱼又有什么区别呢?本文作者就是这样一位充满好奇心的 coder。 我最近给我的 QuickTheories 分支添加了一个接口: @FunctionalInterface public interface QuadFunction<A, B, C, D, E> { E apply(A a, B b, C c, D d); } 让我好奇的是这个方法能有多少个类型参数。到目前为止,我敢说,Java 语言规范并没有谈及这个问题。 对于实现定义的限制可能是什么,我有两个猜测: 编译器会设置一个可预测的限制,如 255 或 65535。 编译器的紧急行为会由于实现细节(堆栈溢出或同样不可预测/不相关的东西)而设置意外的限制。 我不想在源代码上测试我那点可怜的 C++技巧,所以我决定只测试编译器做了什么。我写了一个 Python 脚本,它使用二进制搜索找到最少的致错类型参数。完整的脚本放在 Github repo ( https://github.com/hyperpape/java-max-type-params ) 中。 脚本地址: https://github.com/hyperpape

微服务开发手册之GRPC

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-16 01:48:20
GRPC是一个高性能、通用的开源RPC框架,基于HTTP/2协议标准和Protobuf序列化协议开发,支持众多的开发语言。 @[TOC] 1 简介 在GRPC框架中,客户端可以像调用本地对象一样直接调用位于不同机器的服务端方法,如此我们就可以非常方便的创建一些分布式的应用服务。 在服务端,我们实现了所定义的服务和可供远程调用的方法,运行一个gRPC server来处理客户端的请求;在客户端,gRPC实现了一个stub(可以简单理解为一个client),其提供跟服务端相同的方法。 gRPC使用protocol buffers作为接口描述语言(IDL)以及底层的信息交换格式,一般情况下推荐使用 proto3因为其能够支持更多的语言,并减少一些兼容性的问题。 由于gRPC涉及到几个比较重要的技术点http2、protobuf,正是这几个技术点才使得gRPC得到广泛应用,这里也顺带讲一下这几个技术点 1.1 http2 HTTP/2是最新的HTTP协议,提高了资源访问效率。通过本篇科普小文,可以了解HTTP/2协议的概念以及优势。 HTTP/2也被称为HTTP 2.0,相对于HTTP 1.1新增多路复用、压缩HTTP头、划分请求优先级、服务端推送等特性,解决了在HTTP 1.1中一直存在的问题,优化了请求性能,同时兼容了HTTP 1.1的语义。 2015年,HTTP/2 发布。HTTP

Spring Boot 2.3 新特配置文件属性跟踪

戏子无情 提交于 2020-08-15 23:05:02
背景 当我们使用 spring boot 在多环境打包,配置属性在不同环境的值不同,如下: spring: profiles: active: @project.profile@ #根据maven 动态配置profile --- spring: profiles: dev demo: lengleng_dev --- spring: profiles: prd demo: lengleng_prd 或者使用 spring cloud 配置中心 (nacos/config)等 再有就是 应用配置的同一个属性,值的来源可能来自 配置文件、环境变量、启动参数 等等。 很多情况由于 如上配置的复杂性,应用在读取配置的时候,并不是我们预期的值 ,比如我们想使用是配置文件 dev 环境的值,却被环境变量的 或者其他的数据覆盖等,这些往往只有等我们运行时,输出日志才能发现错误原因。 解决方案 spring boot 2.3 Actuator 提供 /actuator/configprops 端点 (之前版本也有此端点,但是行为发生变化了 /actuator/env 保持一致 ),提供对配置文件属性跟踪功能, 方便我们在 spring boot 应用中,实时的获取配置文件实际加载值 。 如何使用 引入 actuator 依赖 <dependency> <groupId>org

Nginx + Spring Boot 实现负载均衡

筅森魡賤 提交于 2020-08-15 21:31:44
前言 本篇文章主要介绍的是 Nginx 如何实现负载均衡。 负载均衡介绍 在介绍 Nginx 的负载均衡实现之前,先简单的说下负载均衡的分类,主要分为 硬件负载均衡和软件负载均衡 ,硬件负载均衡是使用专门的软件和硬件相结合的设备,设备商会提供完整成熟的解决方案,比如 F5,在数据的稳定性以及安全性来说非常可靠,但是相比软件而言造价会更加昂贵;软件的负载均衡以 Nginx 这类软件为主,实现的一种消息队列分发机制。 简单来说所谓的负载均衡就是把很多请求进行分流,将他们分配到不同的服务器去处理。比如我有 3 个服务器,分别为 A、B、C,然后使用 Nginx 进行负载均衡,使用轮询策略,此时如果收到了 9 个请求,那么会均匀的将这 9 个请求分发给 A、B、Cf 服务器,每一个服务器处理 3 个请求,这样的话我们可以利用多台机器集群的特性减少单个服务器的压力。 Nginx 实现负载均衡的示例图: 负债均衡 负载均衡策略 NGINX 开源支持四种负载平衡方法,而 NGINX Plus 又增加了两种方法。 1.Round Robin: 对所有的请求进行轮询发送请求,默认的分配方式。 nginx.conf 配置示例: upstream xuwujing { server www.panchengming.com; server www.panchengming2.com; } 注

芋艿-springcloud gateway

倖福魔咒の 提交于 2020-08-15 20:18:27
http://www.iocoder.cn/Spring-Cloud/Spring-Cloud-Gateway/?github springcloud gateway 官方文档 https://cloud.spring.io/spring-cloud-gateway/reference/html/#gatewayfilter-factories Spring Cloud Gateway 2.1.0 中文官网文档 https://cloud.tencent.com/developer/article/1403887 来源: oschina 链接: https://my.oschina.net/u/3847203/blog/4469627

gateway欺人太甚!

戏子无情 提交于 2020-08-15 18:09:09
需求: 通过gateway来转义请求参数中的html标签的“<”、“>”等,来防止xss攻击 版本: springbootVersion:2.1.6RELASE springCloudGatewayVersion:2.1.2RELASE 因为gateway版本不同所以获取请求参数的方式也不同,这个版本的gateway是通过webflux来处理参数的,什么是 webflux 请点击查看,这里就不过多赘述了 对于gateway的过滤器有很多种实现方式,根据具体的业务需求来选定最便捷、最简单的处理方式 这里是我自定义gatewayfilter过滤器代码实现: 此代码只处理了两种contentType是:application/json和application/json;charset=UTF-8 对于contentType是multipart/form-data没有处理这是缺陷,如有好的处理方式请留言,大家一起学习一起进步 import lombok.extern.slf4j.Slf4j; import org.owasp.esapi.ESAPI; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter

阿里云MSE 2.0重磅发布,乘风破浪加速企业微服务化进程

最后都变了- 提交于 2020-08-15 17:49:04
发布会传送门 点击了解产品详情 众所周知,注册中心和配置中心是Spring Cloud 和Dubbo 等微服务架构中的重要组件,往往采用 ZooKeeper/Nacos/Eureka/Apollo 等开源方案自建,但因其依赖复杂、变更频繁,往往给客户带来的较高的建设和运维成本,同时,在 Hbase、Spark或Kafka 等大数据的环境下,会依赖 ZooKeeper 进行分布式系统的协调,此时,基于云上的托管服务,可以极大的降低运维复杂度,并提高应用可用性。相比开源自建,微服务引擎MSE 通过提供的云上监控和运维能力、多机房和多区域容灾能力、自动宕机恢复能力,实现了99.9%的可用性保障,此外,MSE提供了多打25项的开源优化,提升了注册和配置中心的易用性和性能。3分钟便能完成接入,每月最低50.16元,更是从操作和价格上降低了企业的接入成本。 据微服务引擎MSE产品经理子墚介绍,“我们除了提供注册和配置中心的托管能力,还围绕困扰开发者微服务治理过程遇到的各类运维难题,提供了包括金丝雀发布、离群实例摘除、服务鉴权、无损下线、限流降级和全链路流控的高阶微服务治理能力,极大的降低了微服务的运维难度,其组件型的产品理念还帮助客户实现了云上应用的自主可控。“目前,已有包括陆德科技、吉递换电、趣练习、企迈云商等来自出行、物联网、在线教育、新零售等行业的客户正通过 MSE 来提升运维效率