自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 dubbo的集群容错和负载均衡机制

Dubbo提供了4种负载均衡机制: 权重随机算法:RandomLoadBalance 最少活跃调用数算法:LeastActiveLoadBalance 一致性哈希算法:ConsistentHashLoadBalance 加权轮询算法:RoundRobinLoadBalance dubbo mock配置 基于服务降级 dubbo自身是支持mock服务的,在reference标签里,有一个参数mock,该参数有四个值,false,default,true,或者Mock类的类名。 分别代表如下含..

2021-01-04 13:38:10 266

原创 springcloud feign

springcloud feign 源码流程图

2020-11-05 10:25:42 266 1

原创 springcloud ribbon

Spring cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它是基于Netflix的Riboon实现的。Ribbon是客户端负载均衡器,这有别语例如Nginx服务端负载均衡器。Ribbon本身提供了不通负载均衡策略使用不通的应用场景。bibbon负载均衡源码流程图如下 ...

2020-11-04 18:12:55 229

原创 手写springboot starter

starter会把所有用到的依赖都给包含进来,避免了开发者自己去引入依赖所带来的麻烦。 虽然不同的starter实现起来各有差异,但是他们基本上都会使用到两个相同的内容:ConfigurationProperties和AutoConfiguration。 Starters 是一组可以让你很方便在应用增加的依赖关系描述符的集合。或者可以这样理解,平时我们开发的时候很多情况下都会有一个模块依赖另一个模块,这个时候我们一般都是采用 maven 的模块依赖,进行模块的依赖 pom 依赖 ..

2020-10-29 10:41:44 211

原创 elasticsearch服务器 上创建索引库

1 构建工程 2public class HtmlBean { private int id; private String title; private String content; private String url; public int getId() { return id; } public void setId(int id) {...

2020-10-26 22:36:24 288

原创 搭建elasticsearch服务器

1 lucene简介 1.1 什么是lucene Lucene是一个全文搜索框架,而不是应用产品。因此它并不像http://www.baidu.com/或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。 Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Ela.

2020-10-18 14:53:43 756

原创 spring中bean的生命周期以及初始化过程 以及IOC AOP 2.0版本

在之前1.0版本做了优化处理之后,对AOP做了详细补充以及底层 源码的实现。 spring 中是我们常见的bean bean的生命周期以及初始化过程 Spring ioc(控制反转) 1ClassPathXmlApplicationContext类 容器加载配置文件bean.xml 文件 通过构造方法 2AbstractApplicationContext 在这个类中初始化refresh()方法 调用obtainFreshBeanFactory() 加...

2020-09-28 22:41:26 510

原创 Spark 操作hive

spark 读取hive数据 在 hive的目录下 启动hive 服务hive --service metastore object CreateDateFrameFromHive { def main(args: Array[String]):Unit = { val spark = SparkSession.builder().appName("CreateDataFrameFromHive").enableHiveSuppo...

2020-09-24 22:34:34 444

原创 Zookeeper watcher源码底层分析

Zookeeper的Watcher机制 Zookeeper提供了数据的发布/订阅功能,多个订阅者可同时监听某一特定主题对象,当该主题对象的自身状态发生变化时(例如节点内容改变、节点下的子节点列表改变等),会实时、主动通知所有订阅者。 watcher架构 Watcher实现由三个部分组成: Zookeeper服务端; Zookeeper客户端; 客户端的ZKWatchManager对象; 客户端首先将Watcher注册到服务端,同时将Watcher对象保存到客户端的Watch管理器中。当ZooK

2020-09-23 17:54:28 270

原创 Zookeeper 选举底层分析

zookeeper入口类 QuorumPeerConfig 解析zookeeper conf 文件下的 zoo.cfg配置文件 涉及到网络通信 (1选举 多个zk节点之间的通信,2 客户端请求(应用程序连接到zkserver) 3 leader follower 之间的数据同步) 进入 loadDataBase() 加载数据 cnxnFactory.start()(暴露端口给别人访问) 通信 startLeaderElection() 选举机制 NIOServer...

2020-09-22 18:00:33 207

原创 基于zookeeper ApI 操作实例

zooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 1 首先启动本地zookeeper 2 构建zookeeper案例 public class ZookeepperDemo { public static void main(String[] args) throws Exception { .

2020-09-17 15:18:13 234

原创 Jmap

jmap作为jvm 的使用方式 查看内存使用情况 jstack 查看线程使用情况 查看内存使用情况, 导出dump文件 启动jvisualvm 监控

2020-09-11 16:03:23 711

原创 基于Netty版本的RPC框架

netty是由JBOSS提供的一个java开源框架,现为Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。 也就是说,Netty 是一个基于NIO的客户、服务器端的编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化和流线化了网络应用的编程开发过程,例如:基于TCP和UDP的socket服务开发。 1 构建工程 目录 api pub...

2020-09-02 13:46:33 265

原创 Spark 资源调度和任务调度源码分析图

spark 资源调度和任务调度源码分析

2020-09-01 10:02:22 230

原创 手写mini版本tomcat

搭建工程 netty http包下的 GpRequest GpResponse GpServlet 类 public class GpRequest { private String method; private String url; public GpRequest(InputStream inputStream) { //拿到http协议的内容 String content =""; byte [] bu...

2020-08-31 18:01:32 291

原创 Spark 任务调度

park 资源调度和任务调度源码分析

2020-08-29 21:30:28 124

原创 Spark宽窄依赖之间的案例

1 正常spark 算子之间的转换关系 def main(args: Array[String]):Unit = { val conf =new SparkConf() conf.setAppName("day03") conf.setMaster("local") val sc =new SparkContext(conf) sc.setLogLevel("error"); val rdd1 = sc.parallelize(List[Strin...

2020-08-27 21:47:00 301

原创 spark 任务提交模式

spark 任务提交模式

2020-08-20 22:20:32 156

原创 搭建spark集群

SPARK(计算引擎) Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法 Spark 是在S..

2020-08-16 22:12:50 208

原创 dubbo服务消费

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册) 前面讲到服务发布 这里主主要讲dubbo消费端 主体流程如下: ReferenceConfig 类中

2020-07-02 17:37:01 247

原创 dubbo服务发布 2.0版本

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册) 前面讲到dubbo spi机制 这篇主要将如何发布服务 配置文件 DubboBeanDefin..

2020-07-01 17:41:15 522

原创 spring中bean的生命周期以及初始化过程 细化版

spring 中是我们常见的bean bean的生命周期以及初始化过程 Spring ioc(控制反转) 1ClassPathXmlApplicationContext类 容器加载配置文件bean.xml 文件 通过构造方法 2AbstractApplicationContext 在这个类中初始化refresh()方法 调用obtainFreshBeanFactory() 加载loadBeanDefinitions()方法 加载配置文件路径 XmlB...

2020-06-22 10:33:49 579

原创 手写springmvc 2.0版本

springmvc 2.0版本在之前的基础上 添加了模板引擎的配置,添加了 aop 配置 实现了springmvc 和 springaop的动态分离 工程结构如下 由于工程代码多这里不过多展示 具体参见源码 随后会放在github上、参考地址 https://github.com/wxwSmile/springdemo 演示效果如下 ...

2020-06-17 11:04:51 227

原创 搭建sqoop 工程

Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。 1 搭建步骤: 2 修改配置环境变量 3 将mysql 中的数据导入到hadoop hdfs 上 在 dirsqoop 新建文件option 执行命令 执行结果

2020-06-14 21:02:22 151

原创 springmvc 手绘时序图

springmvc 时序图

2020-06-10 10:04:13 284

原创 手写springmvc 框架1.0版

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建Web应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等。 springmvc工作流程图 搭建项目 pom 依赖 项目启动配置jet..

2020-06-03 15:41:09 204

原创 如何搭建Flume日志收集框架

Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。 当前Flume有两个版本Flume 0.9X版本的统称Flume-og,Flume1.X版本的统称Flume-ng。由于Flume-ng经过重大重构,与Flume-og有很大不同,使用时请注意区分。 具体可以参考官网http://flume.apache.org/ ..

2020-05-25 22:02:34 303

原创 springcloud eureka 源码解读

springcloud 作为微服务框架 eureka作为注册中心 f注解 EnableEurekaServer 1 通过@Import({EurekaServerMarkerConfiguration.class}) 找到EurekaServerAutoConfiguration InstanceRegistry 作为注册类 2EurekaClientAutoConfiguration 加载Eureka配置信息 获取yml的配置信息 默认的心跳检测是 30s 3 拉取注...

2020-05-20 09:58:50 271

原创 手写jedis mini版

上篇文章中讲到redis 并且如何搭建redis集群参考链接 这篇讲如何更加深入了解jedis源码并手写jedis新建工程 包 api (操作redis) connection(连接通道) protocol(传输协议) package api; import connection.Connection; import protocol.Protocol; import java.io.IOException; //api操作层 public class Client { ...

2020-05-12 22:47:46 253

原创 java 创建Excel工具

一 导入对应的excel jar包 import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; 二 动态创建excel public class CreateExcelUtil { /** * 将list集合转成Excel文件 * @param l...

2020-05-11 17:44:36 271

原创 搭建redis集群

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。” 搭建一个redis.

2020-05-10 22:51:54 137

原创 Tomcat性能优化

tomcat是常用的web容器,tomcat架构 两大核心组件 Connector组件:连接器,主要负责Tomcat与客户端的通讯 Container组件:Servlet容器 一个请求的处理流程 httpConnector就是链接器 httpProcessor是具体的处理类 Container是容器(servlet) 下载源码(8.0版本):http://mir...

2020-05-06 11:52:35 175

原创 简单rpc 框架的实现

RPC(Romote Procedure Call):远程过程调用,允许一台计算机程序远程调用另外一台计算机的子程序,不用关心底层,网络通信,在socket基础上实现,比socket需要更多资源。 先看demo实现 如下 分为client端和server端 Client实现如下: 接口 package com.gupao.rmi.Demo.rpcClient; p...

2020-04-30 16:04:56 176

原创 Java 中的tcp协议

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793[1]定义。 建立2个类TcpServerTcpClient public class TcpServer { public static void main(String[] args)throws IOException...

2020-04-29 17:25:25 477

原创 Java 中的网络传输模型

Java中的网络传输模型通常是七层 网络传输通常分为 应用层 :为应用程序提供服务 表示层 : 数据格式转化 数据加密 会话层 :建立连接 管理和维护会话 传输层 :建立管理和维护端对端的连接 网络层 :IP地址及路由选择 链路层 :提供介质访问和路由管理 物理层 :物理传输 下面主要是基于Tcp协议 控制传输协议 Tcp的三次握手 建立Tcp的三次握手主要建...

2020-04-29 14:13:46 322

原创 Java中的常见设计原则

Java中设计原则分6大类 分别是 1 单一职责原则 :一个类只负责一个项目原则,不要参与其他类功能进来 2 里氏替换原则 : 子类可以扩展父类的功能,但是不要修改父类原有的功能 3 依赖倒置原则: 面向接口编程 4 接口隔离原则:设计接口功能尽量细粒度 最小功能单元 5 迪米特法则:降低耦合 (局部变量不要引入新的类) 6 开闭原则:对外扩展 对修改关闭 ...

2020-04-28 17:05:09 173

原创 dubbo种spi机制

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)...

2020-04-26 18:52:44 191

原创 spring中bean的生命周期以及初始化过程

1ClassPathXmlApplicationContext类 容器加载配置文件bean.xml 文件 通过构造方法 2AbstractApplicationContext 在这个类中初始化refresh()方法 3 在finishBeanFactoryInitialization() 中完成bean的 初始化 AbstractAutowireCapableB...

2020-04-26 14:44:18 542

原创 Spring aop的具体实现

spring源码框架中用到了很多ioc aop现在具体对aop 的实现、aop更多的运用于日志类的切面编程 1 定义一个切面类 @Aspect public class LogAspect { @Before("pointCut()") public void start() { System.out.println("开始执行start() 方法"); } @...

2020-04-23 14:59:22 142

原创 Java手动版线程池实现

线程池是我们常用的对象主要用于在开发中减少频繁创建对象减少cpu 等资源的性能损耗 下面简单的实现一个线程池的实现 定义一个线程池的实现类MyThreadPool 具体代码如下: public class MyThreadPool { //默认初始化线程数 private static int WORK_NUM =5; //默认队列任务数 privat...

2020-04-20 18:05:31 282

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除