Dubbo

太赞了!腾讯T3-3架构师整理了5000页的Java学习手册免费开放下载

最后都变了- 提交于 2020-04-30 17:52:42
写在前面 今天整理了一套 5000 页的 Java 学习手册,,新鲜出炉,分享给大家!此手册内容专注 Java技术,包括 JavaWeb,SSM,Linux,Spring Boot,MyBatis,MySQL,Nginx,Git,GitHub,Servlet,IDEA,多线程,集合,JVM,DeBug, Dubbo,Redis,算法,面试题等相关内容。 领取方式 1.首先转发文章+关注楼主 2.然后私信回复关键字【电子书】即可获得【5000页的Java学习手册】的免费领取方式 手册部分内容展示 IDEA相关内容(195页) IDEA 全称IntelliJ IDEA,是用于java语言开发的集成环境(也可用于其他语言),IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。 Spring Boot教程(81页) Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development

IDEA 中 30 秒生成 Spring Cloud Alibaba 工程

最后都变了- 提交于 2020-04-30 17:49:23
作者 | 图恩 阿里云技术专家 如果你想使用 Spring Cloud Alibaba,那么你遇到的第一个问题一定是如何快速的创建一个脚手架工程。 近日, 阿里巴巴发布了 Spring 的国内脚手架定制版 Aliyun Java Initializer ,因为全中文界面和流畅速度,被广大开发者热传。Spring 脚手架为开发者提供了丰富的可选组件,并且可以选择多种打包方式,大大方便了开发人员的使用。Web 端 Spring 脚手架可以帮助用户快速上手,但很多开发者也面临一个问题:在 Web 版本 Spring 脚手架生成工程最终要导入 IDE 中,开发者需要进行 IDE 切换,在一定程度上,增加了开发时间。 无需切换 IDE 为了更加贴近用户开发场景,提高开发效率,让开发者无需从 IDE 切换出去,通过插件功能 30 秒直接生成 Spring Cloud Alibaba 工程,自动导入。我们在本地 IDE 插件 Alibaba Cloud Toolit 中提供了与 Spring 脚手架定制版 Aliyun Java Initializer一样的功能,让你无需切换,30 秒一键生成 Spring Cloud Alibaba 工程。 Cloud Toolkit 四步创建 Spring Cloud Alibaba 框架 如果还没有安装过 Cloud Toolkit,可以在 IDEA

腾讯T3-3级架构师吐血整理的5000页Java学习手册PDF,收藏学习!

非 Y 不嫁゛ 提交于 2020-04-30 14:42:27
写在前面 今天整理了一套 5000 页的 Java 学习手册,,新鲜出炉,分享给大家!此手册内容专注 Java技术,包括 JavaWeb,SSM,Linux,Spring Boot,MyBatis,MySQL,Nginx,Git,GitHub,Servlet,IDEA,多线程,集合,JVM,DeBug, Dubbo,Redis,算法,面试题等相关内容。 领取方式 1.首先转发文章+关注楼主 2.然后加我VX【tkzl6666】即可获得【5000页的Java学习手册】的免费领取方式 手册部分内容展示 IDEA相关内容(195页) IDEA 全称IntelliJ IDEA,是用于java语言开发的集成环境(也可用于其他语言),IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。 Spring Boot教程(81页) Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development

接口测试总结分享(http与rpc)

流过昼夜 提交于 2020-04-30 11:46:12
       接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 一、了解一下HTTP与RPC   1. HTTP(HyperText Transfer Protocol)     说明:超文本传输协议,是互联网上应用最为广泛的一种网络协议。     优点:就是简单、直接、开发方便,利用现成的http协议进行传输。     流程图:        2. RPC(Remote Procedure Call)     说明:远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。     优点:提升系统可扩展性,传输效率更快,安全性更高。     流程图:      二、HTTP接口测试   常见请求类型: post(增)、get(查)、put(改)、delete(删)等。   1)get型接口     格式: 请求数参数写在网址后面,用"?"连接,多个参数之间用"&"连接。如:https://api.douban.com/v2/book/search?q='',这是一个豆瓣查询图书信息的开发api,q='',单引号里就是查询的参数,   如查询《小王子》这本书的信息,则q='小王子'

把Tomcat讲解的如此透彻,阿里架构师的这份PDF真的太强了

爱⌒轻易说出口 提交于 2020-04-30 08:29:37
在目前流行的互联网架构中,对一个应用来说,Tomcat是首,SSM是中,JVM是尾,我们通常对于SSM是比较了解的,而忽略了收尾,而Tomcat在目前的网络编程中是举足轻重的,但是我们其实对Tomcat中很多原理性的东西不太了解,如果能够掌握Tomcat的原理,那么是非常有用的,比如: 如果我们能弄清楚Tomcat和Socket、Tcp之间的关系,我们就能明白Tomcat为什么会出现端口冲突。 如果我们能准确的知道Tomcat中部署一个项目的N种方式,那么就能在工作中更加得心应手。 Tomcat中热部署和热加载的区别是什么,到底是如何实现的,弄明白实现原理,能很大程度上提高Tomcat的运行效率。 Tomcat到底是如何处理一个请求的?这对于针对Tomcat的性能调优是必备的。 目前Spring Boot和Dubbo等框架中都是使用的内嵌Tomcat,那么一个内嵌的Tomcat到底是如何运行的? Tomcat的架构设计其实非常优秀的,如果能明白Tomcat为什么要那么设计,那么对于Tomcat的原理和自己的架构设计思维都能有很大提升。 JSP虽然过时,但是它的底层实现原理和思路依然保存着,那么Tomcat中到底是如何实现JSP功能的? 所以,对于Tomcat,正是因为足够强大和优秀才容易被我们忽视。工欲善其事必先利其器,如果我们能真正掌握Tomcat的底层原理,那么将会有很大收获。

SpringBoot微服务电商项目开发实战 --- Redis缓存雪崩、缓存穿透、缓存击穿防范

荒凉一梦 提交于 2020-04-29 18:15:58
最近已经推出了好几篇SpringBoot+Dubbo+Redis+Kafka实现电商的文章,今天再次回到分布式微服务项目中来,在开始写今天的系列五文章之前,我先回顾下前面的内容。 系列(一): 主要说了使用IDEA对SpringBoot项目的创建,SpringBoot架构下Web项目Maven的基本依赖及实现。 系列(二): 主要讲了Maven父子级项目创建依赖、分环境部署配置及服务端口号统一配置,Dubbo的集成接入、服务层(提供者)分模块实现,提供者(四个)和消费者(一个)的配置及服务调用,微服务落地实现。 系列(三): 开始讲了项目及依赖的版本号统一配置管理(子模块和第三方依赖Jar),数据库的连接配置及Redis接入、分布式缓存实现。 系列(四): 接口安全实现(防恶意请求、数据篡改等),过滤器配置及签名、token检验拦截、Aop签名实现、防SQL注入等。 学而时习之,不亦说乎。作为我本次推出的系列文章,目的很简单,就是旨意帮助那些不懂分布式开发微服务落地的小伙伴们。目前的IT市场,分布式开发微服务落地已成为主流。SpringBoot,Dubbo,Zookeeper,Redis,Kafka,SpringCloud等也是面试中常问的话题,如果你想在这个行业混下去,这些已经是你必须要学的基础技术知识了,接下来我会根据我近两年的分布式微服务开发经验推出更多的文章

dubbo超时异常

徘徊边缘 提交于 2020-04-29 18:11:39
dubbo超时异常 在调用dubbo服务时经常看到如下错误: Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. 源码分析 客户端调用远程服务时,本地会生成一个DefaultFuture,调用DefaultFuture.get()获取远程服务返回的结构,此方法获取锁,调用await方法,此时当前线程进入等待队列,此线程会有两种结果过:要么超时,抛出TimeOutException;如果被唤醒,则返回rpc的结果。 而这里的报错很明显是由于等待服务端返回结果时客户端超时异常,查看源码如下: public class DefaultFuture implements ResponseFuture { private static final Logger logger = LoggerFactory.getLogger(DefaultFuture.class); private static final Map<Long, Channel> CHANNELS = new ConcurrentHashMap<Long, Channel>(); private static final Map<Long,

缓存穿透、缓存击穿、缓存雪崩及其解决方案

爷,独闯天下 提交于 2020-04-29 13:13:22
###前言:缓存的使用场景 设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。 1.缓存穿透   缓存穿透是指查询一个一定不存在的数据,因为缓存中也无该数据的信息,则会直接去数据库层进行查询,从系统层面来看像是穿透了缓存层直接达到db,从而称为缓存穿透,没有了缓存层的保护,这种查询一定不存在的数据对系统来说可能是一种危险,如果有人恶意用这种一定不存在的数据来频繁请求系统(准确的说是攻击系统),请求都会到达数据库层导致db瘫痪从而引起系统故障。 解决方案 在缓存使用的场景中,缓存KEY值失效的风暴(单个KEY值失效,PUT时间较长,导致穿透缓存落到DB上,对DB造成压力)。可以采用 布隆过滤器 、单独设置个缓存区域存储空值,对要查询的key进行预先校验 、缓存降级等方法。 缓存穿透业内的解决方案已经比较成熟,主要常用的有以下几种: bloom filter:类似于哈希表的一种算法,用所有可能的查询条件生成一个bitmap,在进行数据库查询之前会使用这个bitmap进行过滤,如果不在其中则直接过滤,从而减轻数据库层面的压力。 guava中有实现BloomFilter算法 。 空值缓存:一种比较简单的解决办法,在第一次查询完不存在的数据后,将该key与对应的空值也放入缓存中,只不过设定为较短的失效时间,例如几分钟,这样则可以应对短时间的大量的该key攻击

IDEA 中 30 秒生成 Spring Cloud Alibaba 工程

拥有回忆 提交于 2020-04-29 12:33:24
作者 | 图恩 阿里云技术专家 如果你想使用 Spring Cloud Alibaba,那么你遇到的第一个问题一定是如何快速的创建一个脚手架工程。 近日, 阿里巴巴发布了 Spring 的国内脚手架定制版 Aliyun Java Initializer ,因为全中文界面和流畅速度,被广大开发者热传。Spring 脚手架为开发者提供了丰富的可选组件,并且可以选择多种打包方式,大大方便了开发人员的使用。Web 端 Spring 脚手架可以帮助用户快速上手,但很多开发者也面临一个问题:在 Web 版本 Spring 脚手架生成工程最终要导入 IDE 中,开发者需要进行 IDE 切换,在一定程度上,增加了开发时间。 无需切换 IDE 为了更加贴近用户开发场景,提高开发效率,让开发者无需从 IDE 切换出去,通过插件功能 30 秒直接生成 Spring Cloud Alibaba 工程,自动导入。我们在本地 IDE 插件 Alibaba Cloud Toolit 中提供了与 Spring 脚手架定制版 Aliyun Java Initializer一样的功能,让你无需切换,30 秒一键生成 Spring Cloud Alibaba 工程。 Cloud Toolkit 四步创建 Spring Cloud Alibaba 框架 如果还没有安装过 Cloud Toolkit,可以在 IDEA

Java 线程池 8 大拒绝策略,面试必问!

不想你离开。 提交于 2020-04-28 20:56:21
来源:KL博客 www.kailing.pub/article/index/arcid/255.html 前言 谈到java的线程池最熟悉的莫过于ExecutorService接口了,jdk1.5新增的java.util.concurrent包下的这个api,大大的简化了多线程代码的开发。而不论你用FixedThreadPool还是CachedThreadPool其背后实现都是ThreadPoolExecutor。 ThreadPoolExecutor是一个典型的缓存池化设计的产物,因为池子有大小,当池子体积不够承载时,就涉及到拒绝策略。JDK中已经预设了4种线程池拒绝策略,下面结合场景详细聊聊这些策略的使用场景,以及我们还能扩展哪些拒绝策略。 池化设计思想 池话设计应该不是一个新名词。我们常见的如java线程池、jdbc连接池、redis连接池等就是这类设计的代表实现。 这种设计会初始预设资源,解决的问题就是抵消每次获取资源的消耗,如创建线程的开销,获取远程连接的开销等。就好比你去食堂打饭,打饭的大妈会先把饭盛好几份放那里,你来了就直接拿着饭盒加菜即可,不用再临时又盛饭又打菜,效率就高了。 除了初始化资源,池化设计还包括如下这些特征:池子的初始值、池子的活跃值、池子的最大值等,这些特征可以直接映射到java线程池和数据库连接池的成员属性中。推荐阅读: 教你如何监控 Java