- 博客(72)
- 资源 (1)
- 收藏
- 关注
原创 几个关于MapReduce的小例子
文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary写在前面上一篇文章通过写一个WordCount学习了MapReduce的入门操作,那么这篇文章继续通过多一些例子来学习MapReduce。下面介绍几种比较常见的操作:排序,去重,求和,求平均数,TopK查询(查询排名前K名的记录)排序其实MapReduce会默认对Key进行升序自然排序,这显然是远远不够用的,下面我举个例子,输入的file1内容如下:1,256.
2022-03-06 23:49:26
7872
原创 SpringBoot多环境配置怎么玩?
文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary前言一般来说,在日常开发中都会分多个环境,比如git代码分支会分为dev(开发)、release(测试)、pord(生产)等多个环境。可以说每个环境对应的配置信息(比如数据库、缓存、消息队列MQ等)都不相同。因此不同的环境肯定需要对应不同的配置文件。接下来学习一下怎么配置多环境的配置文件。SpringBoot多环境配置因为SpringBoot做多环境配置比较简单.
2021-11-14 23:55:42
2908
1
原创 服务网关Gateway之过滤器
文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary写在前面前一篇文章写了Gateway的Predicate(用于路由转发),那么这篇文章就介绍另一个主要的核心,那就是Filter(过滤器)。过滤器有什么作用呢?工作流程是怎么样的呢?请看下图:从图中很明显可以看出,在请求后端服务前后都需要经过Filter,于是乎Filter的作用就明确了,在PreFilter(请求前处理)可以做参数校验、流量监控、日志记录、修.
2021-11-07 20:10:11
1931
原创 网关服务很重要,学一学Gateway
文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary介绍服务网关要认识一样东西,最好的方法是从为什么需要他开始说起。按照现在主流使用微服务架构的特点,假设现在有A、B、C三个服务,假如这三个服务都需要做一些请求过滤和权限校验,请问怎么实现?每个服务自己实现一遍。写在一个公共的服务,然后让A、B、C服务引入公共服务的Maven依赖。使用服务网关,所有客户端请求服务网关进行请求过滤和权限校验,然后再路由转发到A.
2021-11-02 22:41:54
637
原创 Mybatis-Plus多数据源解析
文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary写在前面上一篇文章大致介绍了dynamic-datasource的功能,用起来的确很方便,只需要一个@DS注解,加上一些简单的配置即可完成多数据源的切换。究竟是怎么做到的呢,底层是怎么实现呢?带着这个疑问,一起研究了一下源码。由于框架本身功能点比较多,有很多小功能比如支持spel、正则表达式匹配,动态增删数据源这种功能的源码就不去细讲了。我们只关心核心的功能,就是.
2021-10-24 23:42:01
2910
原创 Mybatis-Plus整合多数据源
文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary提出问题在平时开发中,经常会遇到在一个项目里需要使用多个数据源的情况,比如有一部分数据在数据源A,另一部分数据在数据源B,业务需要把这两部分的数据做合并然后从接口返回。又或者操作完数据源A后,需要切换数据源,操作数据源B。这样的需求,怎么实现?解决问题其实在mybatis-plus就有相关的实现,是一个基于SpringBoot快速集成多数据源的启动器。首先要.
2021-10-20 23:04:05
1153
原创 Java基础不简单,泛型很重要!
文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary前言其实在开发中经常会看到泛型的使用,但是很多人对其也是一知半解,大概知道这是一个类似标签的东西。比如最常见的给集合定义泛型。List<String> list = new ArrayList<>();Map<String,Object> map = new HashMap<>();那么什么是泛型,为什么使用泛.
2021-10-20 23:02:12
398
原创 ThreadLocal底层原理是什么?
文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary什么是ThreadLocalThreadLocal提供线程的局部变量,这种变量与普通变量的区别在于,每个访问这种变量的线程都有自己的、独立的变量副本。用于解决多线程间的数据隔离问题。使用场景其实ThreadLocal在很多开源框架中都有应用:Spring中的事务管理器,比如TransactionSynchronizationManager等。Mybatis中的E.
2021-08-15 20:06:56
780
原创 Mybatis-Plus,BaseMapper源码分析
抛出疑问Mybatis-plus的确能让我们写少很多重复代码,非常好用。那么其中最方便的就是Mapper接口继承BaseMapper就能获得增删改查的这个功能。那么这个功能的底层代码,究竟是怎么实现的呢?原生Mybatis配置的原理毕竟Mybatis-plus是Mybatis的加强,所以Mybatis-plus肯定是基于Mybatis原来的机制来扩展的,沿着这个思路,我们先搞清楚一个问题,就是原生的mapper.xml文件最后是怎么跟对应的Mapper接口产生联系的。既然是配置,那么在Mybatis
2021-08-04 00:08:47
2508
2
原创 Mybatis-Plus,真香!
前言mybatis相信都不陌生,目前互联网公司大部分都使用mybatis作为持久层框架,无他,因为可以直接在xml文件中编写SQL语句操作数据库,灵活。但是我们在使用的时候,也会发现有很多增删改查的SQL是每个表都会有的基本操作,如果每个表都写一套增删改查的SQL显然是非常耗时耗力的。于是乎,就有了mybatis-plus这个框架。正如官网所说,mybatis-plus是为简化开发而生。mybatis-plus有以下特点:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。只需简单配置,
2021-07-05 23:36:14
1609
13
原创 Java基础不简单,谈谈hashCode()和equals()
文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary写在前面其实很早我就注意到阿里巴巴Java开发规范有一句话:只要重写 equals,就必须重写 hashCode。我想很多人都会问为什么,所谓知其然知其所以然,对待知识不单止知道结论还得知道原因。hashCode方法hashCode()方法的作用是获取哈希码,返回的是一个int整数学过数据结构的都知道,哈希码的作用是确定对象在哈希表的索引下标。比如HashSe.
2021-06-15 00:11:03
1638
5
原创 谈谈MySQL索引如何提高数据库查询效率
文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary前言我们都知道当查询数据库变慢时,需要建索引去优化。但是只知道索引能优化显然是不够的,我们更应该知道索引的原理,因为不是加了索引就一定会提升性能。那么接下来就一起探索MYSQL索引的原理吧。什么是索引索引其实是一种能高效帮助MYSQL获取数据的数据结构,通常保存在磁盘文件中,好比一本书的目录,能加快数据库的查询速度。除此之外,索引是有序的,所以也能提高数据的排序效率。.
2021-05-30 21:22:42
670
3
原创 谈谈对MySQL的MVCC机制的理解
文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary前言无论是上一篇文章讲的事务隔离级别,还是之前讲的undo log日志,其实都涉及到MVCC机制,那么什么是MVCC机制,它的作用是什么,下面就让我们带着问题一起学习吧。什么是MVCCMVCC全称是多版本并发控制 (Multi-Version Concurrency Control),只有在InnoDB引擎下存在。MVCC机制的作用其实就是避免同一个数据在不同事务之间.
2021-04-25 23:31:54
615
1
原创 什么是脏读、不可重复读、幻读?
文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary脏读、不可重复读、幻读在现代关系型数据库中,事务机制是非常重要的,假如在多个事务并发操作数据库时,如果没有有效的机制进行避免就会导致出现脏读,不可重复读,幻读。脏读1、在事务A执行过程中,事务A对数据资源进行了修改,事务B读取了事务A修改后的数据。2、由于某些原因,事务A并没有完成提交,发生了RollBack操作,则事务B读取的数据就是脏数据。这种读取到另一个事务.
2021-04-18 23:54:56
769
原创 超详细的Sentinel入门
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
2021-04-05 15:38:45
1341
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人