Dubbo

年薪百万阿里架构师:给学习JAVA的同学一些建议(附学习路线图)

僤鯓⒐⒋嵵緔 提交于 2020-05-09 08:43:57
前言 作为一个程序员,技术不是唯一出路,但技术也是非常重要的,当前的就业竞争越来越激烈,只有不断的进阶新的知识我们才能够走的更远。 有不少朋友问,如何深入学习Java后端技术栈,今天分享一个,年薪百万阿里架构师整理出来的完整的Java成神路线图。 筑基阶段: 该阶段需要理解java底层虚拟机,并知道它们实现的原理。 JVM虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,连接池,线 程池……Java并发底层原理与源码实现,写框架必备的技术;java各种集合对象的实现原理,了解这些 可以让你在解决问题时选择合适的数据结构,高效的解决问题,Jdk的新特性 ,从jdk8一直到jdk13。 成长阶段: 该阶段需要熟练使用各种框架,并知道它们实现的原理。 熟练掌握各个框架使用原理,Spring一定要玩转,另外各热门主流框架,安全框架shiro、security 数据库Mysql、Oracle必须懂得你底层原理与性能调优,这样就可以更好的去使用像MongoDB、 redis、Hive等等数据库 拓展阶段: 该阶段需要熟练掌握响应式编程、网络编程、devops技术,并知道它们实现的原理。 spring webflux的底层原理与源码、响应式开发框架Akka的基本应用原理,像Tomcat、netty、nginx的底层原理源码、调优方案这些都是必须会的,另外还要掌握Linux

Java编程技术之浅析SPI服务发现机制

一笑奈何 提交于 2020-05-09 01:08:52
SPI服务发现机制 SPI是Java JDK内部提供的一种服务发现机制。 SPI->Service Provider Interface,服务提供接口,是Java JDK内置的一种服务发现机制 通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类 [⚠️注意事项]: 面向对象的设计里,一般推荐模块之间基于接口编程,模块之间不对实现类进行编码。如果涉及实现类就会违反可插拔的原则,针对于模块装配,Java SPI提供了为某个接口寻找服务的实现机制。 SPI规范 使用约定: [1].编写服务提供接口,可以是抽象接口和函数接口,JDK1.8之后推荐使用函数接口 [2].在jar包的META-INF/services/目录里创建一个以服务接口命名的文件。其实就是实现该服务接口的具体实现类。 提供一个目录: META-INF/services/ 放到ClassPath下面 [3].当外部程序装配这个模块的时候,就能通过该Jar包META-INF/services/配置文件找到具体的实现类名,并装载实例化,完成模块注入。 目录下放置一个配置文件: 文件名是需要拓展的接口全限定名称 文件内部为要实现的接口实现类 文件必须为UTF-8编码 [4].寻找服务接口实现,不用在代码中提供,而是利用JDK提供服务查找工具类:java.util

Java 开发手册 (阿里巴巴开发手册)

ε祈祈猫儿з 提交于 2020-05-08 19:01:05
Java 开发手册 版本号 制定团队 更新日期 备注 1.4.0 阿里巴巴集团技术团队 2018.5.20 增加设计规约(详尽版) 一、编程规约 (一) 命名风格 1. 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 反例:_name / __name / $name / name_ / name$ / name__ 2. 【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式 也要避免采用。 正例:alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文。 反例:DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3 3. 【强制】类名使用 UpperCamelCase 风格,但以下情形例外:DO / BO / DTO / VO / AO / PO / UID 等。 正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion 4. 【强制】方法名

喧哗的背后:Serverless 的概念及挑战

岁酱吖の 提交于 2020-05-08 16:17:56
作者 | 许晓斌 阿里云高级技术专家,目前负责阿里集团 Serverless 研发运维平台建设,《Maven 实战》作者,曾经是 Maven 中央仓库的维护者。 导读: 本文作者作为阿里集团 Serverless 研发运维平台负责人,从应用架构的角度去分析 Serverless 为何会让那么多人着迷,它的核心概念究竟是什么,并总结了一些落地 Serverless 必然会面临的问题。 前言 我曾在 《Serverless 的喧哗与骚动》 一文中对 Serverless 今天在行业中所处的状态做了一个比喻,这个比喻是这么说的: Serverless is like teenage sex: Everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they are doing it. 虽然距离写那篇文章已经过去了半年的时间,但是这种状态在我看来其实没有发生太大的变化,有很多的一线研发或者管理者对 Serverless 技术的理解是非常片面的,有些甚至是错误的。如果缺乏对应用架构演进的理解,缺乏对于云基础设施能力的理解,缺乏对风险的判断,盲目的上新技术可能不仅无法兑现业务价值,浪费精力

在Guns的工程网关服务调用用户服务

戏子无情 提交于 2020-05-08 15:23:43
1、结构如下如 guns-api: 公共接口 guns-gateway: 网关服务 (从guns-rest复制过来,依赖于guns-api) guns-user: 用户服务(从guns-rest复制过来,依赖于guns-api) 2、公共接口guns-api 定义了一个接口,里面有一个登陆方法 public interface UserAPI { boolean login(String username, String password); }    3、 用户服务guns-user 1) 部分配置参数如下 rest: auth-open: false #jwt鉴权机制是否开启(true或者false) sign-open: false #签名机制是否开启(true或false) server: port: 8083 #项目端口 spring: application: name: film-user dubbo: server: true registry: zookeeper://localhost:2181 protocol: name: dubbo port: 20881    2) 创建服务提供者 package com.stylefeng.guns.rest.modular.user; import com.alibaba.dubbo.config

服务器docker部署使用最新dubbo-admin(2)

99封情书 提交于 2020-05-08 12:32:38
下载最新dubbo-admin https://github.com/apache/dubbo-admin 1、执行打包 mvn clean package 2、上传 dubbo-admin-develop/dubbo-admin-distribution/target /dubbo-admin-0.2.0-SNAPSHOT.jar 到服务器 3、在 dubbo-admin-0.2.0-SNAPSHOT.jar 同级目录新增 Dockerfile 文件 FROM openjdk:8-jre LABEL maintainer="dev@dubbo.apache.org" COPY dubbo-admin-0.2.0-SNAPSHOT.jar /app.jar ENTRYPOINT ["java","-XX:+UnlockExperimentalVMOptions","-XX:+UseCGroupMemoryLimitForHeap","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] EXPOSE 8080 4、创建镜像 docker build -t dubbo-admin:0.2.0-SNAPSHOT . 5、运行 docker run -p 8089:8080 -dit --name my_dubbo

Jmeter学习笔记--dubbo接口调试

假装没事ソ 提交于 2020-05-08 04:01:35
1、jmeter安装插件: jmeter-plugins-dubbo 将下载的插件安装到jmeter的 \lib\ext 目录下(jmeter的默认下载的三方插件都是安装在这个目录下的) 2、安装完后启动jmeter(我使用的是5.1版本) 添加线程组---添加取样器(Dubbo Sample) 参数说明: Protocol: 注册协议,包括zookeeper、Redis等; Address: dubbo服务的IP:端口;当使用zk,address填入zk地址,集群地址使用","分隔;使用dubbo直连,address填写直连地址和服务端口; Group: 分组,没有可以不填 Interface:包名和接口名 ;插件很赞👍,不需要自己去找了,配置好服务的IP和端口,直接点击Get Provider list 按钮,就会把该服务下开发所有的包名加接口名还有方法名以列表的方式show出来,下拉选择自己要测试的接口就OK了 Method: 选择完前面的Interface后,method就可以选择该接口下的所有方法名 Protocol: 使用的dubbo协议,包括dubbo、webservice、memcached、redis,根据自己的协议类型选择对应的选项即可; Timeout: 请求超时时间(ms) Version: 版本;这里有坑,不同版本之间的调用可能会有问题,我直接没填版本号

商城项目(ssm+dubbo+nginx+mysql统合项目)总结(3)

大兔子大兔子 提交于 2020-05-08 03:32:51
我不会在这里贴代码和详细步骤什么的,我觉得就算我把它贴出来,你们照着步骤做还是会出很多问题,我推荐你们去看一下黑马的这个视频,我个人感觉很不错,一步一步走下来可以学到很多东西。另外,视频和相关文档的话,关注微信公众号 “Java面试通关手册” 回复 “资源分享第一波” 即可领取. 本节内容具体可参考黑马该项目第四天的教案 ,教案以及相关文档和资料都在分享的网盘里面,下载解压即可。 第三天学到的内容 1、商品类目选择功能的实现 实现之后的效果: 1.1 分析选择类目 1.2 搜索事件所在位置 成功找到 1.3展示商品分类列表,使用EasyUI的tree控件展示。 这里用到了异步树控件,可以去看一下jQuery EasyUI的API文档详细了解。我自己jQuery EasyUI掌握的不是很牢固。 初始化tree请求的url : /item/cat/list 参数: 初始化tree时只需要把第一级节点展示,子节点异步加载。 1.4代码编写 1.4.1 pojo层: 创建一个pojo来描述tree的节点信息,包含三个属性id、text、state。放到e3-common工程中。 public class EasyUITreeNode implements Serializable 1.4.2 Dao层 tb_item_cat 可以使用 逆向工程 生成的代码 1.4.3 Interface层

ShutdownHook

怎甘沉沦 提交于 2020-05-07 18:58:36
想象一下,如果你现在刚好在 word 上写需求文档,电脑突然重启。等待开机完成,你可能会发现写了一个小时文档没有保存,就这么没了。。。 一个正在运行 Java 应用如果突然将其停止,影响不止数据丢失,还会造成其他影响。比如: 请求丢失:内存队列中等待执行请求丢失 数据丢失:处于内存缓存中数据未持久化到磁盘 文件损坏:正在写的文件没有没有更新完成,导致文件损坏 业务中断:处理一半的业务被强行中断,如支付成功了,却没有更新到数据库中 服务未下线:上游服务依然往停止节点发送请求 所以在关闭服务之前,我们需要先做好善后工作,比如保存数据,清理资源,下线服务,然后才退出应用。这种有计划平滑的关闭应用相对直接停止应用,就显得非常『优雅』。 ps: 仔细品味,优雅停机这个词真好~ ShutdownHook Java 语言提供一种 ShutdownHook(钩子)进制,当 JVM 接受到系统的关闭通知之后,调用 ShutdownHook 内的方法,用以完成清理操作,从而平滑的退出应用。 ShutdownHook代码如下: Runtime.getRuntime().addShutdownHook(new Thread(() -> { System.out.println("关闭应用,释放资源"); })); Runtime.getRuntime().addShutdownHook(Thread)

阿里中间件研发三面面经:zookeeper+Redis+多线程+性能优化....

和自甴很熟 提交于 2020-05-07 14:40:02
我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer。这是我的面经,在这里分享给大家。 一面: 1 自我介绍 2 项目中做了什么,难点呢。 3 Java的线程池说一下,各个参数的作用,如何进行的。 4 Redis讲一下 5 分布式系统的全局id如何实现。用zookeeper如何实现的呢,机器号+时间戳即可。 6 分布式锁的方案,redis和zookeeper那个好,如果是集群部署,高并发情况下哪个性能更好。 7 kafka了解么,了解哪些消息队列。 8 想做业务还是研究。 9 然后出了一道题,linux的访问权限是rwx格式的。使用一个类支持访问权限的增删改查,并且注意使用的数据格式以及方法效率,规范。给了一个多小时写题。 耗时将近30分钟。 二面: 1 介绍你做的项目和其中的难点。 2 上次面试官问的问题,反射的作用是什么。 3 数据仓库,多线程和并发工具等。 4 私有云,docker和k8s等。 5 了解哪些中间件,dubbo,rocketmq,mycat等。 6 dubbo中的rpc如何实现。 7 自己实现rpc应该怎么做 9 dubbo的服务注册与发现。 10 听说我是非科班,于是问了些排序算法 耗时将近30分钟。 三面: 三面不是面试,而是笔试,耗时三个小时,考的是Java核心的基础。但是好像不能透题,就不说了。都挺有难度的。