![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 65
INC随我
这个作者很懒,什么都没留下…
展开
-
MR学习总结
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。原创 2023-01-08 14:23:04 · 141 阅读 · 0 评论 -
Flume自定义Sink
Sink 是完全事务性的。在从Channel 批量删除数据之前,每个Sink用Channel启动一 个事务。批量事件一旦成功写出到存储系统或下一个Flume Agent,Sink就利用 Channel提交事务。事务一旦被提交,该Channel从自己的内部缓冲区删除事件。Sink 组件目的地包括hdfs、logger、avro、file、HBase、solr等。官方提供的 Sink 类型已经很多,但是有时候并不能满足实际开发当中的需求,此时我们就需要根据实际需求自定义某些Sink。原创 2023-01-08 14:21:25 · 224 阅读 · 0 评论 -
Flume自定义Source
Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种 格式的日志数据,包括 avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy。官方提供的 source 类型已经很多,但是有时候并不能 满足实际开发当中的需求,此时我们就需要根据实际需求自定义某些 source。原创 2023-01-08 14:18:18 · 257 阅读 · 1 评论 -
Springboot集成mapstruct
一、什么是mapstructMapStruct是一个代码生成器的工具类,简化了不同的Java Bean之间映射的处理,所以映射指的就是从一个实体变化成一个实体。在实际项目中,我们经常会将PO转DTO、DTO转PO等一些实体间的转换。在转换时大部分属性都是相同的,只有少部分的不同,这时我们可以通过mapStruct的一些注解来匹配不同属性,可以让不同实体之间的转换变的简单。MapStruct官网...原创 2019-10-07 22:28:44 · 9058 阅读 · 0 评论 -
Springboot集成RabbitMQ
一、什么是RabbitMQRabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。二、添加依赖<dependency> <groupId>org.springframework....原创 2019-08-13 11:38:03 · 146 阅读 · 0 评论 -
springboot集成Log4j2
前言:关于Log4j2,SLF4J,LogBack以及其他的一些日志框架的区别,建议大家可以先了解一下一、添加依赖<!--SpringBoot默认日志框架为LogBack所以我们需要将LogBack依赖移除--><dependency> <groupId>org.springframework.boot</groupId> &l...原创 2019-08-13 11:37:08 · 493 阅读 · 0 评论 -
springboot集成Redis
由于之前在项目中集成了身份验证以及权限功能,所以在请求操作时会有大量数据库读操作来获取用户的角色以及所拥有的权限,这对于数据库来说是一个巨大的性能开支,所以我打算尝试使用redis来减少数据库读写,而是使用缓存读写,本文是在看完集成Redis入门后所做的总结,所以对很多地方还有疑问,请大家酌情参考一、添加Redis依赖<dependency> <groupId>...原创 2019-08-13 11:36:07 · 1663 阅读 · 0 评论 -
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 · 778 阅读 · 0 评论 -
springboot集成多线程功能
参考文章https://segmentfault.com/a/1190000015766938https://blog.csdn.net/qq_34545192/article/details/80484780在平时我们写多线程可能更多是使用new Thread() 或者创建线程池来实现的,但是在阿里的java开发规范中要求不要自己直接创建新线程,而是通过线程池来实现的,恰好spring ...原创 2019-08-13 11:34:10 · 4913 阅读 · 0 评论 -
springboot集成Shiro
一、介绍Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。本文是使用Shiro + JWT(Json Web Token)实现的,对于jwt部分有疑问的可以参考之前jwt相关文章,本博文中的一部分函数使用的是JWT那一篇文章文章所写的...原创 2019-07-31 17:34:33 · 2148 阅读 · 0 评论 -
如何使用JWT
参考博文:https://www.jianshu.com/p/576dbf44b2ae一、介绍Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服...原创 2019-07-31 17:33:30 · 902 阅读 · 0 评论 -
Java遍历一个类的所有属性和值
今天在尝试使用Java反射来实现Java导出数据库数据到Excel中,然后在尝试获取类所有的属性的时候,由于对于反射的不熟练,然后找到了一篇博文,所以在此进行记录,以供未来参考,原博文地址:https://blog.csdn.net/ztx114/article/details/78274314private void bianLi(Object obj){ Field[] fiel...原创 2019-08-13 11:40:16 · 15936 阅读 · 0 评论 -
Springboot集成POI
本文比较简单。。。希望想真正使用的同学。。去看别人整理的吧。。。我怕这次整理比较乱。。影响大家阅读什么是POIApache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。添加依赖<dependency> <groupId>org.apache.poi</grou...原创 2019-08-13 11:41:03 · 8447 阅读 · 0 评论 -
手写Spring框架
项目结构├── pom.xml├── spring-demo.iml├── src └── main ├── java │ └── xyz │ └── suiwo │ ├── action │ │ ├── controller │ ...原创 2019-08-13 11:41:57 · 406 阅读 · 0 评论 -
lambda表达式
什么是lambda表达式“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。下面是我们常见的命令式编程public class LambdaDemo {...原创 2019-10-07 22:21:48 · 128 阅读 · 0 评论 -
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 · 250 阅读 · 0 评论 -
静态代理与动态代理
静态代理静态代理存在一些缺点,如每当要代理的方法越多,那你需要代理的方法也越多,这样可能会有很多的重复下面我们先实现以下静态代理的例子先创建一个接口public interface Subject { void request();}创建一个实现类public class RealSubject implements Subject { @Override ...原创 2019-10-07 22:24:12 · 131 阅读 · 0 评论 -
JDK动态代理解析
首先我们生成的时候调用了Proxy.newInstance()这个方法,这个方法会调用getProxyCLass0()方法,而getProxyCLass0()是从ProxyClassFactory中生成proxy代码,而ProxyClassFactory又是使用ProxyGenerator来生成的代码,然后生成的字节码,使用反射来new一个实例。整个调用大致就是 newInstance() -...原创 2019-10-07 22:24:54 · 128 阅读 · 0 评论 -
cglib动态代理
首先我们看一下如何实现cglib的动态代理cglib通过实现MethodInterceptor接口来实现动态代理public class DemoMethodInterceptor implements MethodInterceptor { @Override public Object intercept(Object o, Method method, Object[...原创 2019-10-07 22:25:56 · 139 阅读 · 0 评论 -
aop链式调用
多个aop如果叠加采用了责任链的模式使用ConcerteHandler实现类实现HandleProcess接口同时这个实现类又组合了这个接口,通过successor判断来进行链式调用首先我们新建一个Handlerpublic abstract class Handler { private Handler successor; public Handler get...原创 2019-10-07 22:26:53 · 294 阅读 · 0 评论 -
基于编程方式实现条件装配
本文主要讲通过编程方式来实现条件装配 —— @Condition首先我们添加判断类OnSystemPropertyCondition.javapackage xyz.suiwo.diveinspringboot.condition;import org.springframework.context.annotation.Condition;import org.springfr...原创 2019-07-31 17:31:32 · 172 阅读 · 0 评论 -
基于配置方式实现自定义条件装配
本文主要讲通过配置方式来实现自定义条件装配 —— @Profile我们尝试使用Profile实现两个计算服务,分别是Java7的for循环以及Java8的lambda表达式首先我们先新建一个计算服务接口CalculateService.javapackage xyz.suiwo.diveinspringboot.service;/** * @author suiwo * @t...原创 2019-07-31 17:29:18 · 245 阅读 · 0 评论 -
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 · 411 阅读 · 0 评论 -
java异常处理 Exception,error,运行时异常和一般异常有何异同
在java中,异常对象都是派生于Throwable类的一个实例。如果java内置的异常类不能够满足需求,用户还可以创建自己的异常类。Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。Exception 和 Error 体现了 Java ...原创 2019-06-05 18:38:44 · 797 阅读 · 0 评论 -
final,finally,finalize的区别
final,finally,finalize的区别1.简单区别:final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。中等区别:final:java中的关...原创 2019-06-05 18:37:35 · 5762 阅读 · 0 评论 -
面向对象的特征:继承封装和多态
面向对象的特征:继承、封装和多态封装是指将某事物的属性和行为包装到对象中,这个对象只对外公布需要公开的属性和行为,而这个公布也是可以有选择性的公布给其它对象。在java中能使用private、protected、public三种修饰符或不用(即默认defalut)对外部对象访问该对象的属性和行为进行限制。继承是子对象可以继承父对象的属性和行为,亦即父对象拥有的属性和行为,其子对象也就拥有了...原创 2019-06-05 18:36:35 · 2272 阅读 · 1 评论 -
Springboot集成Swagger2
Springboot集成Swagger2一、介绍:Swagger是一个功能强大且易于使用的API开发人员工具套件,适用于团队和个人,支持从整个API生命周期(从设计和文档到测试和部署)的开发。Swagger由开源,免费和商用工具组成,允许任何人,从技术工程师到街头智能产品经理,构建每个人都喜欢的令人惊叹的API。Swagger最初是作为2010年设计RESTful API的简单开源规范...原创 2018-11-14 20:52:33 · 156 阅读 · 0 评论 -
Swagger报错:java.lang.NumberFormatException: For input string: ""
使用Swagger和Springfox,我们编写了REST API,我们编写了更多可访问的API。当您运行该应用程序时,您可能会遇到一个奇怪的异常,如下所示:java.lang.NumberFormatException: For input string: ""这似乎是一个错误,所以你可以忽略那个。如果它让您烦恼,您可以随时更改该文件的日志记录级别,就像他们在该问题中提出的那样。您也可以在a...原创 2018-11-15 14:10:36 · 2229 阅读 · 0 评论 -
算法与数据结构设计周作业——大整数运算器
这次的算法与数据结构设计周作业题目比较简单,一个是求众数与重数,另一个题目则为大整数运算器,由于图形化界面不是硬性要求,所以项目不使用GUI,而是直接在命令行运行,具体题目如下:众数问题给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数,S中重数最大的元素称为众数。例如,S={1, 2 ,2 ,2 ,3 ,5},S的众数是2,该众数的重数为3。要求对于给定的由...原创 2018-11-13 22:36:50 · 1798 阅读 · 0 评论 -
LeetCode:29. 两数相除(Java)
29. 两数相除(Java)参考文章:https://blog.csdn.net/qq_31442743/article/details/81181554给定两个整数,被除数 dividend和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend除以除数 divisor得到的商。示例 1:输入: dividend = 10, divisor...原创 2018-10-23 20:34:05 · 2180 阅读 · 2 评论 -
深入理解Java的接口和抽象类
一.抽象类在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:abstract void fun();抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。下面要注意一个问题:在《J...原创 2019-06-05 18:40:46 · 312 阅读 · 0 评论 -
Springboot集成WebSocket功能
Springboot集成WebSocket功能由于MT管理器论坛需要添加聊天功能,在网上搜了很多,最后发现了websocket可以用于实时通信和聊天室功能,然后看了慕课上的一个网课,跟着他做出来了一个demo,下面就来看一下什么是websocket吧在菜鸟教程中的解释是这样的WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocke...原创 2019-06-05 18:42:40 · 3658 阅读 · 2 评论 -
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 · 1009 阅读 · 0 评论 -
synchronized,lock和volatile的区别
参考文章:https://www.jianshu.com/p/2344a3e68ca9https://cloud.tencent.com/developer/article/13693581、synchronizedJava语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。当两个并发线程访问同一个对象object中的...原创 2019-07-31 17:24:55 · 2036 阅读 · 0 评论 -
Java中Lock接口解析
本文非原创,为转载文章,原文链接:https://www.jianshu.com/p/2344a3e68ca9一、Locksynchronized是Java语言的关键字,是内置特性,而ReentrantLock是一个类(实现Lock接口的类),通过该类可以实现线程的同步。Lock是一个接口,源码很简单,主要是声明了四个方法:public interface Lock { void ...转载 2019-07-31 17:23:44 · 778 阅读 · 1 评论 -
常见面试题的基础总结(JVM篇)
由于这些内容都是比较早之前进行的整理的,所以有的部分是参考了他人的博文,但是由于是之前找的,所以具体的博文链接找不到了,如果原博主看到这个文章或者有人知道其中部分内容的原博文,请与我联系,我将加上原链接,谢谢1、为什么Java一次编译,到处可运行因为只需要将java文件编译成字节码文件,在运行平台只要有JVM虚拟机就可以运行。这样Java在不同的平台也不需要重新编译,只需要虚拟机把字节...原创 2019-07-31 17:21:11 · 146 阅读 · 0 评论 -
常见面试题的基础总结(Java多线程篇)
由于这些内容都是比较早之前进行的整理的,所以有的部分是参考了他人的博文,但是由于是之前找的,所以具体的博文链接找不到了,如果原博主看到这个文章或者有人知道其中部分内容的原博文,请与我联系,我将加上原链接,谢谢1、进程和线程的区别运行一个程序会产生一个进程,进程包括至少一个线程每个进程对应一个JVM实例,多个线程则是共享JVM的堆Java采用单线程编程模型,程序会自动创建主线程主线...原创 2019-06-13 11:36:39 · 192 阅读 · 0 评论 -
常见面试题的基础总结(JavaGC篇)
由于这些内容都是比较早之前进行的整理的,所以有的部分是参考了他人的博文,但是由于是之前找的,所以具体的博文链接找不到了,如果原博主看到这个文章或者有人知道其中部分内容的原博文,请与我联系,我将加上原链接,谢谢1、Java的垃圾回收判断对象是否为垃圾有两种算法。引用计数算法,本算法就是通过引用计数器来统计,当被引用+1,完成引用-1.任何对象实例引用为0时就可以当做垃圾收集,优点是执行效...原创 2019-06-13 11:34:42 · 1016 阅读 · 0 评论 -
重温Java反射机制
本文主要是为了实战Java反射,简单工厂只是一个背景,故对简单工厂模式不做解释了。1、首先先做个一个使用了简单工厂模式的demo。Fruit是一个接口,里面含有一个get()方法package SimpleFactory;public interface Fruit { public void get();}2、Apple与Banana为两个实现了Fruit的接口,其...原创 2019-06-13 11:27:49 · 101 阅读 · 0 评论 -
前后端通过Json传数据,并将Json转化成实体类
今天尝试着用thymeleaf写马上就要使用的计算机基础知识大赛的比赛系统,然后卡在如何将多个对象通过form表单发送给后端,最后没有找到比较好的办法,只能使用js将需要发送的数据转化成Json然后使用ajax发送请求。然后在后台在将数据转化成实体类首先我们的实体类如下:package com.njupt.sacc.cbkc.problem.entity;public class Pr...原创 2019-06-05 18:46:22 · 13239 阅读 · 3 评论