自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

随我的博客

菜鸟的日常学习记录,CSDN更新不勤,主要更新个人博客https://suiwo.xyz,我会不定期的将个人博客的文章copy到CSDN中。

  • 博客(104)
  • 收藏
  • 关注

原创 Flume初识

本文是尚硅谷Flume课程随手笔记,记录课程的一些实战的操作步骤一、安装Flume并实现一个简易端口监控实现监控端口案例,通过Flume来监听端口数据,并将数据打印到控制台1. 首先进入官网下载Flume源码包2. 修改flume-env.sh文件export JAVA_HOME=/opt/module/jdk1.8.0_1443. 添加配置文件创建Flume Agent配置文件flume-netcat-logger.conf# Name the components on.

2020-05-26 14:29:15 96

原创 Hive初识

一、 安装Hive并启动1. 下载源码包解压源码包后,配置hive-env.sh(a)配置 HADOOP_HOME 路径export HADOOP_HOME=${Hadoop的路径}(b)配置 HIVE_CONF_DIR 路径export HIVE_CONF_DIR=${Hive配置文件路径}2. 启动hadoop3. 启动Hive客户端调用bin/hive进入Hive的客户端启动Hive后会发现Hive源码包中多了derby.log和metastore_db这个就是Hive

2020-05-26 14:28:27 99

原创 YARN集群搭建

本文主要是记录集群搭建流程,具体细节较为简略一、YARN简介Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。二、集群规划主机名作用hadoop11NameNode & DataNode & NodeManager.

2020-05-24 22:45:02 116

原创 HDFS高可用集群搭建

环境CentOS 7JAVA 1.8Zookeeper 2.9.2Hadoop 3.4.14一、简单HDFS集群中存在的问题及解决办法如何解决NameNode的单节点问题多个NameNode备份原NameNode数据如何解决多个NameNode是集群脑裂问题使用QJM,QJM(Quorum Journal Manager)是Hadoop专门为Namenode共享存储开发的组件。其集群运行一组Journal Node,每个Journal 节点暴露一个简单的RPC接口,允许N.

2020-05-24 22:44:11 259

原创 汉诺塔问题总结

一、基本递归实现下面是普遍的汉诺塔问题的递归解法代码public class Hanoi{ public static void hanoi(int n, String x, String y, String z){ if (n == 1){ System.out.println(x + " -> " + z); }else { hanoi(n - 1, x, z, y); System

2020-05-24 22:38:57 400

原创 HBase中使用过滤器筛选数据

一、过滤器能干什么HBase为筛选数据提供了一组过滤器,通过过滤器可以在HBase中的数据的多个维度(行,列,数据版本)上进行对数据的筛选操作。通常来说,通过行键、列来筛选数据的应用场景较多。二、常见的过滤器基于行的过滤器PrefixFilter: 行的前缀匹配PageFilter: 基于行的分页基于列的过滤器ColumnPrefixFilter: 列前缀匹配FirstKeyOnlyFilter: 只返回每一行的第一列基于单元值的过滤器KeyOnlyFilt

2020-05-24 22:36:53 467

原创 使用Java操作HBase数据库

一、添加依赖首先我们在maven项目中添加下面两个依赖<!-- hbase依赖 --><dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>1.4.10</version></dependency><!-- 单元测试依赖 --

2020-05-24 22:36:05 220

原创 HBase伪分布式集群安装

一、下载HBase安装包为了防止HBase和Hadoop版本间冲突,可以在CDH上下载和Hadoop兼容的HBase版本,本次搭建选择的是hbase-1.2.0下载路径:http://archive.cloudera.com/cdh5/二、配置伪分布式环境HBase相关配置文件在/conf文件之下,我们需要修改的配置文件有hbase-env.sh和hbase-site.xml我们先将hadoop中的hdfs-site.xml和core-site.xml文件复制HBase的/conf目录之

2020-05-24 22:34:42 157

原创 hadoop伪分布式集群安装

一、下载hadoop安装包hadoop安装包分为apache官方以及CDH,具体区别在此不做介绍,本次搭建选择的是hadoop-2.6.0-cdh5.7.0版本下载路径http://archive.cloudera.com/cdh5/二、配置hadoophadoop相关配置文件在/etc目录下我们需要修改的文件有core-site.xml,hadoop-env.sh,hdfs-site.xml对hadoop-env.sh文件中的JAVA_HOME进行一下配置在hdfs-site.x

2020-05-24 22:33:49 67

原创 使用iTerm2和OhMyZsh实现一个强大终端

参考文章:https://blog.csdn.net/qianghaohao/article/details/79440961https://www.jianshu.com/p/9c3439cc3bdbhttps://www.jianshu.com/p/d194d29e488c?open_source=weibo_searchhttps://www.jianshu.com/p/a78845c3f476首先我们看一下最终效果一、下载iTerm2官网下载地址:https://www.iterm

2020-05-24 22:32:43 586

原创 Kafka初试

二、安装Kafka安装Java安装Zookeeper启动命令: zkServer.sh start停止命令: zkServer.sh stop安装Kafka启动命令: kafka-server-start.sh config/server.properties启动命令: kafka-server-stop.sh config/server.properties三、代码实践添加Maven依赖<dependency> <groupId>org

2020-05-24 22:30:19 49

原创 创建一个基于redis的id生成器

参考文章:https://blog.csdn.net/hengyunabc/article/details/44244951https://www.jianshu.com/p/955909e1bd71https://tech.meituan.com/2017/04/21/mt-leaf.html参考项目:https://github.com/hengyunabc/redis-id-generator值。evalsha教程:https://www.runoob.com/redis/scripti

2020-05-24 22:28:36 405

原创 手写SpringMVC,剑指优秀开源框架灵魂

由于Spring官方就是选择gradle作为自动化构建工具,所以我们在本次尝试中就按照spring的选择也是用gradle在整个项目中,我们一共包含两个模块framework模块用于首先实现我们springmvc的常见功能,test模块则是用来测试我们手写的模块是否正确项目链接:https://github.com/ZhangJia97/Mini-Spring下面是项目结构,只保留了我们用到的文件结构├── build.gradle├── framework│ ├── build.grad

2020-05-24 22:27:19 64

原创 Springboot集成mapstruct

一、什么是mapstructMapStruct是一个代码生成器的工具类,简化了不同的Java Bean之间映射的处理,所以映射指的就是从一个实体变化成一个实体。在实际项目中,我们经常会将PO转DTO、DTO转PO等一些实体间的转换。在转换时大部分属性都是相同的,只有少部分的不同,这时我们可以通过mapStruct的一些注解来匹配不同属性,可以让不同实体之间的转换变的简单。MapStruct官网...

2019-10-07 22:28:44 6177

原创 aop链式调用

多个aop如果叠加采用了责任链的模式使用ConcerteHandler实现类实现HandleProcess接口同时这个实现类又组合了这个接口,通过successor判断来进行链式调用首先我们新建一个Handlerpublic abstract class Handler { private Handler successor; public Handler get...

2019-10-07 22:26:53 120

原创 cglib动态代理

首先我们看一下如何实现cglib的动态代理cglib通过实现MethodInterceptor接口来实现动态代理public class DemoMethodInterceptor implements MethodInterceptor { @Override public Object intercept(Object o, Method method, Object[...

2019-10-07 22:25:56 50

原创 JDK动态代理解析

首先我们生成的时候调用了Proxy.newInstance()这个方法,这个方法会调用getProxyCLass0()方法,而getProxyCLass0()是从ProxyClassFactory中生成proxy代码,而ProxyClassFactory又是使用ProxyGenerator来生成的代码,然后生成的字节码,使用反射来new一个实例。整个调用大致就是 newInstance() -...

2019-10-07 22:24:54 56

原创 静态代理与动态代理

静态代理静态代理存在一些缺点,如每当要代理的方法越多,那你需要代理的方法也越多,这样可能会有很多的重复下面我们先实现以下静态代理的例子先创建一个接口public interface Subject { void request();}创建一个实现类public class RealSubject implements Subject { @Override ...

2019-10-07 22:24:12 72

原创 Stream流编程

外部迭代与内部迭代public class StreamDemo { public static void main(String[] args) { int[] nums = {1, 2, 3}; int res1 = 0; for(int i = 0; i < nums.length; i++){ res...

2019-10-07 22:23:31 97

原创 lambda表达式

什么是lambda表达式“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。下面是我们常见的命令式编程public class LambdaDemo {...

2019-10-07 22:21:48 58

原创 消费端限流、重回队列、TTL以及死信队列

什么是消费端的限流?假设一个场景,首先,我们Rabbitmq服务器有上万条未处理的消息,我们随便打开一个消费者客户端,会出现下面情况:巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多数据!RabbitMQ提供了一种qos (服务质量保证)功能,即在非自动确认消息的前提下,如果一定数目的消息(通过基于consume或者channel设置Qos的值)未被确认前,不进行消费新的消...

2019-10-07 22:20:38 83

原创 RabbitMQ生产端可靠性投递

对于消息的生产端的可靠投递,我们常见的解决方案有两种1.消息落库,对消息状态进行打标2.消息的延迟投递,做二次确认,回调检查1、消息落库,对消息状态进行打标上面图片为消息落库,对消息状态进行打标的常见步骤(状态0表示已发送,1表示已消费,2表示失败)首先将将要发送的数据持久化到BIZ数据库中,并且创建一个存储着消息状态的数据持久化到MSG数据库中。将数据发送至MQ。消费者接收...

2019-10-07 22:19:49 118

原创 如何保证消息消费的幂等性

幂等性概念及业界主流解决方案幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品使用约支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多扣钱了,流水记录也变成了两条...业界主流的幂等性操作:唯一ID + 指纹...

2019-10-07 22:17:24 87

原创 手写Spring框架

项目结构├── pom.xml├── spring-demo.iml├── src └── main ├── java │ └── xyz │ └── suiwo │ ├── action │ │ ├── controller │ ...

2019-08-13 11:41:57 318

原创 Springboot集成POI

本文比较简单。。。希望想真正使用的同学。。去看别人整理的吧。。。我怕这次整理比较乱。。影响大家阅读什么是POIApache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。添加依赖<dependency> <groupId>org.apache.poi</grou...

2019-08-13 11:41:03 7017

原创 Java遍历一个类的所有属性和值

今天在尝试使用Java反射来实现Java导出数据库数据到Excel中,然后在尝试获取类所有的属性的时候,由于对于反射的不熟练,然后找到了一篇博文,所以在此进行记录,以供未来参考,原博文地址:https://blog.csdn.net/ztx114/article/details/78274314private void bianLi(Object obj){ Field[] fiel...

2019-08-13 11:40:16 11635

原创 RabbitMQ事务以及confirm机制

本文是参考下面这篇博客然后进行复现浓缩后的总结https://www.cnblogs.com/vipstone/p/9350075.html正常情况下,如果消息经过交换器进入队列就可以完成消息的持久化,但如果消息在没有到达broker之前出现意外,那就造成消息丢失,有没有办法可以解决这个问题?RabbitMQ有两种方式来解决这个问题:通过AMQP提供的事务机制实现;使用发送者确认模式...

2019-08-13 11:39:43 489

原创 Redis与LRU

参考文章https://zhuanlan.zhihu.com/p/34133067https://blog.csdn.net/azurelaker/article/details/85045245https://www.bilibili.com/video/av45625512最近在使用redis,然后看到了redis与LRU相关的一些内容,再此对之前所看的一些博文进行总结一、什么是...

2019-08-13 11:38:59 5689

原创 Springboot集成RabbitMQ

一、什么是RabbitMQRabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。二、添加依赖<dependency> <groupId>org.springframework....

2019-08-13 11:38:03 74

原创 springboot集成Log4j2

前言:关于Log4j2,SLF4J,LogBack以及其他的一些日志框架的区别,建议大家可以先了解一下一、添加依赖<!--SpringBoot默认日志框架为LogBack所以我们需要将LogBack依赖移除--><dependency> <groupId>org.springframework.boot</groupId> &l...

2019-08-13 11:37:08 374

原创 springboot集成Redis

由于之前在项目中集成了身份验证以及权限功能,所以在请求操作时会有大量数据库读操作来获取用户的角色以及所拥有的权限,这对于数据库来说是一个巨大的性能开支,所以我打算尝试使用redis来减少数据库读写,而是使用缓存读写,本文是在看完集成Redis入门后所做的总结,所以对很多地方还有疑问,请大家酌情参考一、添加Redis依赖<dependency> <groupId>...

2019-08-13 11:36:07 1478

原创 springboot集成定时任务功能

参考文章:http://www.ityouknow.com/springboot/2016/12/02/spring-boot-scheduler.html1.集成pom包依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artif...

2019-08-13 11:35:06 612

原创 springboot集成多线程功能

参考文章https://segmentfault.com/a/1190000015766938https://blog.csdn.net/qq_34545192/article/details/80484780在平时我们写多线程可能更多是使用new Thread() 或者创建线程池来实现的,但是在阿里的java开发规范中要求不要自己直接创建新线程,而是通过线程池来实现的,恰好spring ...

2019-08-13 11:34:10 3770

原创 springboot集成Shiro

一、介绍Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。本文是使用Shiro + JWT(Json Web Token)实现的,对于jwt部分有疑问的可以参考之前jwt相关文章,本博文中的一部分函数使用的是JWT那一篇文章文章所写的...

2019-07-31 17:34:33 491

原创 如何使用JWT

参考博文:https://www.jianshu.com/p/576dbf44b2ae一、介绍Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服...

2019-07-31 17:33:30 296

原创 关于MySQL日期相关语句

1.MySQL按照时间范围进行查询的SQL语句# DATE_FORMAT(字段名, 格式化规则) startDate endDate指代查询范围select * from t_name where DATE_FORMAT(c_date, '%Y%m%d%H%i') between startDate and endDate;2.MySQL中的时间的加减(以加法为例)select date...

2019-07-31 17:32:30 264

原创 基于编程方式实现条件装配

本文主要讲通过编程方式来实现条件装配 —— @Condition首先我们添加判断类OnSystemPropertyCondition.javapackage xyz.suiwo.diveinspringboot.condition;import org.springframework.context.annotation.Condition;import org.springfr...

2019-07-31 17:31:32 120

原创 基于配置方式实现自定义条件装配

本文主要讲通过配置方式来实现自定义条件装配 —— @Profile我们尝试使用Profile实现两个计算服务,分别是Java7的for循环以及Java8的lambda表达式首先我们先新建一个计算服务接口CalculateService.javapackage xyz.suiwo.diveinspringboot.service;/** * @author suiwo * @t...

2019-07-31 17:29:18 150

原创 Java通过RMI实现手写RPC框架

参考视频:https://www.bilibili.com/video/av30168877/?p=3参考文章:https://blog.csdn.net/shan9liang/article/details/89950231.RPC与RMIRMI(remote method invocation,面向对象的远程方法调用)RPC(remote procedure call,远程过程调用)...

2019-07-31 17:27:44 280

原创 synchronized及其优化

参考博文:http://www.cnblogs.com/wade-luffy/p/5969418.htmlhttp://www.cnblogs.com/kniught-ice/p/5189997.htmlhttps://www.zhihu.com/question/270564693一、锁是什么?在java中对象都可以作为锁。普通同步方法:锁是当前实例对象。静态同步方法:锁是当...

2019-07-31 17:26:29 610

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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