YeHongzhi's Blog 
  • 首页
  • 归档
  • 标签
  • 关于
  •     
通过WordCount学习MapReduce

通过WordCount学习MapReduce

文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary MapReduce介绍MapReduce主要分为两个部分,分别是map和reduce,采用的是“分而治之”的思想,Mapper负责“分”,把一个庞大的任务分成若干个小任务来进行处理,而Reduce则是负责对map阶段的结果进行汇总。 比如我们要统计一个很大的文本,里面每个单词出现的频率,也就是WordCount。怎么工作呢?请看下图: 在map阶段把input输入的文本拆成一个一个的单词,key是单词,value则是出现的次数。接着到Reduce阶段汇总,相同的key则次数加1。最后得到结果,输出到文件保存。 WordCount例子下面进入实战,怎么实现WordCount的功能呢? 创建项目首先我们得创建一个maven项目,依赖如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apac
 2022-03-01   大数据  hadoop 
学习大数据从安装hadoop开始

学习大数据从安装hadoop开始

文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 前言最近上手学习大数据,大数据当然离不开核心的Hadoop,所以首先要搭建一个Hadoop环境。我本机电脑配置不太高,又是学习阶段,所以就整个单机版的玩玩,下面记录一下步骤,希望对大家有所帮助。 前期准备 名称 版本 来源 虚拟机CentOS CentOS 7 略 JDK 1.8 Oracle官网 hadoop 3.2.2 hadoop官网 虚拟机安装,和JDK安装就不多说了,对于做Java开发的来说都是小菜一碟。 关闭防火墙要关闭防火墙首先得看开没开,查看防火墙状态,使用命令systemctl status firewalld.service。 得先用su root,切换到root,然后使用关闭防火墙命令systemctl status firewalld.service。关了之后在查看状态,如图所示已经关闭了。 但是如果重新开机还是会自动启动,所以要设置开机禁止防火墙。使用命令systemctl disable fi
 2022-01-02   大数据  hadoop 
不懂就学,什么是JWT?

不懂就学,什么是JWT?

文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 起源需要了解一门技术,首先从为什么产生开始说起是最好的。JWT主要用于用户登录鉴权,所以我们从最传统的session认证开始说起。 session认证众所周知,http协议本身是无状态的协议,那就意味着当有用户向系统使用账户名称和密码进行用户认证之后,下一次请求还要再一次用户认证才行。因为我们不能通过http协议知道是哪个用户发出的请求,所以如果要知道是哪个用户发出的请求,那就需要在服务器保存一份用户信息(保存至session),然后在认证成功后返回cookie值传递给浏览器,那么用户在下一次请求时就可以带上cookie值,服务器就可以识别是哪个用户发送的请求,是否已认证,是否登录过期等等。这就是传统的session认证方式。 session认证的缺点其实很明显,由于session是保存在服务器里,所以如果分布式部署应用的话,会出现session不能共享的问题,很难扩展。于是乎为了解决session共享的问题,又引入了redis,接着往下看。 t
 2021-12-23   JWT 
这波啊~这波是多环境配置

这波啊~这波是多环境配置

文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 前言一般来说,在日常开发中都会分多个环境,比如git代码分支会分为dev(开发)、release(测试)、pord(生产)等多个环境。可以说每个环境对应的配置信息(比如数据库、缓存、消息队列MQ等)都不相同。因此不同的环境肯定需要对应不同的配置文件。接下来学习一下怎么配置多环境的配置文件。 SpringBoot多环境配置因为SpringBoot做多环境配置比较简单,而且现在大部分项目基本都会使用SpringBoot,所以这里就介绍怎么用SpringBoot做多环境配置。 单文件版本单文件在实际中使用得并不多,不过也可以实现多环境配置,这里简单介绍一下。以application.yml配置文件举例,你要在一个配置文件里面配置多个环境的配置,肯定需要分割线将其隔开,所以SpringBoot就规定了使用---进行隔开每个环境。 spring: application: name: mydemo profiles: active:
 2021-12-23   Java 
Gateway服务网关之过滤器

Gateway服务网关之过滤器

文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 写在前面前一篇文章写了Gateway的Predicate(用于路由转发),那么这篇文章就介绍另一个主要的核心,那就是Filter(过滤器)。 过滤器有什么作用呢?工作流程是怎么样的呢?请看下图: 从图中很明显可以看出,在请求后端服务前后都需要经过Filter,于是乎Filter的作用就明确了,在PreFilter(请求前处理)可以做参数校验、流量监控、日志记录、修改请求内容等等,在PostFilter(请求后处理)可以做响应内容修改。 过滤器Filter分为局部和全局两种: 局部Filter(GatewayFilter的子类)是作用于单个路由。如果需要使用全局路由,需要配置Default Filters。 全局Filter(GlobalFilter的子类),不需要配置路由,系统初始化作用到所有路由上。 局部过滤器SpringCloud Gateway内置了很多路由过滤器,他们都是由GatewayFilter的工厂类产生。 AddReques
 2021-12-23   微服务  GateWay 
网关很重要,学一学Gateway

网关很重要,学一学Gateway

文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 介绍服务网关要认识一样东西,最好的方法是从为什么需要他开始说起。 按照现在主流使用微服务架构的特点,假设现在有A、B、C三个服务,假如这三个服务都需要做一些请求过滤和权限校验,请问怎么实现? 每个服务自己实现一遍。 写在一个公共的服务,然后让A、B、C服务引入公共服务的Maven依赖。 使用服务网关,所有客户端请求服务网关进行请求过滤和权限校验,然后再路由转发到A、B、C服务。 第一种方式显然是逆天的,这里不做讨论。第二种方法稍微聪明点,但是如果公共服务的逻辑发生改变,那么所有依赖公共服务的服务都需要重新打包部署才能生效。 所以显而易见,使用服务网关则解决了以上的问题,其他服务不需要加入什么依赖,只需要在网关配置一些参数,然后就能路由转发到对应的后端服务,如果需要请求过滤和权限检验的话,都可以在网关层实现,如果需要更新权限校验的逻辑,只需要网关层修改就可以,其他后端服务不需要修改。 接下来再介绍一下服务网关的功能,主要有: 路由转发 API
 2021-11-02   微服务  GateWay 
mybatis-plus多数据源解析

mybatis-plus多数据源解析

文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 写在前面上一篇文章大致介绍了dynamic-datasource的功能,用起来的确很方便,只需要一个@DS注解,加上一些简单的配置即可完成多数据源的切换。究竟是怎么做到的呢,底层是怎么实现呢?带着这个疑问,一起研究了一下源码。 由于框架本身功能点比较多,有很多小功能比如支持spel、正则表达式匹配,动态增删数据源这种功能的源码就不去细讲了。我们只关心核心的功能,就是多数据源的切换。 源码解析首先我们都记得,一开始需要引入spring-boot-starter: <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.3.0</version> </dep
 2021-11-02   源码解析  Mybatis-plus 
Mybatis-Plus整合多数据源,怎么玩?

Mybatis-Plus整合多数据源,怎么玩?

文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 提出问题在平时开发中,经常会遇到在一个项目里需要使用多个数据源的情况,比如有一部分数据在数据源A,另一部分数据在数据源B,业务需要把这两部分的数据做合并然后从接口返回。 又或者操作完数据源A后,需要切换数据源,操作数据源B。这样的需求,怎么实现? 解决问题其实在mybatis-plus就有相关的实现,是一个基于SpringBoot快速集成多数据源的启动器。 首先要搭建一个springBoot+Mybatis+Mybatis-Plus的项目,搭建项目就不演示了,比较简单。这里讲怎么使用多数据源,首先引入dynamic-datasource-spring-boot-starter。 <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifact
 2021-10-24   Mybatis-Plus 
Java基础不简单,泛型很重要!

Java基础不简单,泛型很重要!

文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 前言其实在开发中经常会看到泛型的使用,但是很多人对其也是一知半解,大概知道这是一个类似标签的东西。比如最常见的给集合定义泛型。 List<String> list = new ArrayList<>(); Map<String,Object> map = new HashMap<>(); 那么什么是泛型,为什么使用泛型,怎么使用泛型,接着往下看。 什么是泛型 Java泛型是J2SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter),这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。– 百度百科 这句话读起来有点拗口,但是我们要抓住他说的关键,参数化类型和可以用在类、接口和方法的创建中,我们知道泛型是在什么地方使用。 为什么使用泛型一般我在思考这种问题时,会反过来思考,假如没有泛型会怎么样? 我们以最简
 2021-10-24   Java基础 
重温并发知识从ThreadLocal开始

重温并发知识从ThreadLocal开始

文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 什么是ThreadLocalThreadLocal提供线程的局部变量,这种变量与普通变量的区别在于,每个访问这种变量的线程都有自己的、独立的变量副本。用于解决多线程间的数据隔离问题。 使用场景其实ThreadLocal在很多开源框架中都有应用: Spring中的事务管理器,比如TransactionSynchronizationManager等。 Mybatis中的ErrorContext类,使用ThreadLocal实现线程安全的单例。 存储session中的一些参数,比如用户信息等。 APIThreadLocal提供了4个常用方法: set()方法,设置当前线程中变量的副本。 get()方法,获取 ThreadLocal在当前线程中保存的变量副本。 remove()方法,清空当前线程中变量的副本。 initialValue()是一个 protected方法,一般是用来重写的,如果在没有set的时候就调用 get,会调用 initialV
 2021-09-25   并发编程 
123…8

搜索

Hexo Fluid
 总访问量 次   总访客数 人