![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
desperado0726
这个作者很懒,什么都没留下…
展开
-
双层flume,中间件kafka,采集到hdfs并按日期分文件夹
1.架构要采集的日志位于hadoop102和hadoop103两个节点上,采集数据到kafka中,这是第一层flume。再从Kafka采集到hdfs中,这是第二层flume。2.第一层flume自定义拦截器,过滤非json数据import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import org.apache.flume.Context;import org.apache.flume.Event;原创 2021-05-08 00:12:56 · 1667 阅读 · 4 评论 -
题目:分析每个用户每次会话的行为轨迹(半小时内算一次会话,并按时间顺序给序号)
题目描述分析每个用户每次会话的行为轨迹(半小时内算一次会话,并按时间顺序给序号)import java.text.SimpleDateFormatimport java.util.UUIDobject Test01 { case class User(var uid: String, var id: String, var time: Long, var link: String) def main(args: Array[String]): Unit = { v.原创 2021-04-22 00:35:44 · 300 阅读 · 0 评论 -
scala高阶函数练习题10题
1、定义一个高阶函数,按照指定的规则对集合里面的每个元素进行操作比如: Array(“spark”,“hello”,“java”,“hadoop”)规则: 对集合中每个元素进行操作,得到集合每个元素的长度object Test01 { def main(args: Array[String]): Unit = { val list = Array("spark", "hello", "java", "hadoop") //完整写法 val fun = (s: String原创 2021-04-14 20:40:04 · 1778 阅读 · 1 评论 -
非静态内部类通过new和反射创建实例对象分析
public class Outer { class Inner{ { System.out.println("inner"); } } @Test public void test() throws Exception { //直接new 可以// new Inner(); //通过父类new 可以// Outer outer = new Oute原创 2021-03-12 16:59:27 · 196 阅读 · 0 评论 -
Hadoop中的TextInputFormat切片的源码分析
Hadoop中的TextInputFormat切片的源码分析查看TextInputFormat发现并没有切片方法查看TextInputFormat的父类FileInputFormat切片方法源码public List<InputSplit> getSplits(JobContext job) throws IOException { StopWatch sw = new StopWatch().start(); long minSize = Math.max(getF原创 2021-03-10 19:43:06 · 108 阅读 · 0 评论 -
Hadoop常用配置参数说明
Hadoop常用配置参数说明core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xmlcore-site.xml参数默认值说明fs.defaultFSfile:///指定HDFS中NameNode的地址hadoop.tmp.dir/tmp/hadoop-${user.name}指定Hadoop运行时产生文件的存储目录hadoop.http.staticuser.userdr.who通过web界面操作hdfs的原创 2021-03-05 10:29:38 · 522 阅读 · 1 评论 -
堆排序
思想堆排序的基本思想是:将待排序序列构造成一个大顶堆此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余 n-1 个元素重新构造成一个堆,这样会得到 n 个元素的次小值。如此反复执行,便能得到一个有序序列了。图解1.步骤一 构造初始堆。将给定无序序列构造成一个大顶堆(一般升序采用大顶堆,降序采用小顶堆)。原始的数组 [4, 6, 8, 5, 9]2.此时我们从最后一个非叶子结点开始(叶结点自然不用调整,第一个非叶子结点arr.length/原创 2021-02-01 21:42:59 · 325 阅读 · 0 评论 -
泛型练习给任意对象数组排序
案例:声明泛型方法,可以给任意对象数组按照元素的自然排序实现从小到大排序,用冒泡排序实现 @Test public void test01() { Integer[] arr1 = {1, 2, 8, 6, 14, 3, 64, 13}; String[] arr2 = {"a", "u", "c", "x", "v"}; sort(arr1); sort(arr2); System.out.println(Arra原创 2021-02-01 19:14:36 · 384 阅读 · 0 评论 -
单向链表的反转的三种方式
单向链表的反转的三种方式单链表的反转有三种实现方法遍历法(结构清晰易懂,时间复杂度低)递归法(代码简洁,但时间复杂度高,尤其是在链表长度超过12000之后)内置类法(代码简洁,使用内置LinkedList类)1.遍历法(关键代码) static Node reverse(Node head) { if(head == null){ return null; } Node pre = null; Node cur = hea原创 2021-01-28 23:28:02 · 1639 阅读 · 0 评论 -
字符编码问题(GBK,UTF-8,ISO8859-1)
字符编码问题(GBK,UTF-8,ISO8859-1)public class Test22 { /* * GBK,UTF-8,ISO8859-1所有的字符编码都向下兼容ASCII码 */ public static void main(String[] args) throws Exception { String str = "中国"; System.out.println(str.getBytes("ISO8859-1").leng原创 2021-01-28 10:01:28 · 126 阅读 · 0 评论 -
二分查找 + 插值查找 + 斐波那契(黄金分割法)查找
三种查找算法二分查找插值查找斐波那契(黄金分割法)查找二分查找思路代码实现public class BinarySearch { public static void main(String[] args) { int array[] = { 1, 8, 10, 89,1000,1000,1234}; //int value = binarySearch(array,1000,0,array.length-1); List list = b原创 2021-01-21 22:17:12 · 138 阅读 · 1 评论 -
基数排序实现
基数排序介绍1基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或 bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用;2基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法;3基数排序(Radix Sort)是桶排序的扩展;思想可参考https://www.bilibili.com/video/BV1wa4y177rX?from=search&原创 2021-01-21 15:40:39 · 129 阅读 · 2 评论 -
归并排序代码实现
思路归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。代码实现public class MergeSort { public static void main(String[] args) { int[] array = { 8, 4, 5, 7, 1,原创 2021-01-21 14:00:31 · 460 阅读 · 0 评论 -
JAVA快速排序的实现
JAVA快速排序的实现public class QuickSort { public static void main(String[] args) { int[] array = {19,97,9,17,1,8,19}; quickSort(array,0,array.length-1); for (int i : array) { System.out.print(i+" "); } Sys原创 2021-01-20 21:30:32 · 58 阅读 · 0 评论 -
多态分析打印结果题(this,实例初始化方法,属性与多态无关)
分析打印结果(考核知识点:this,实例初始化方法,属性与多态无关)public class Test02 { public static void main(String[] args) { // 1.Father f = new Son();首先要先初始化父类属性,调用父类构造方法; // 2.父类构造方法中有this.print();此时这个this是子类的,所以调用子类的print()方法; // 因为此时子类还未被初始化,所以子类的x为默认值0;打印出Son.x = 0 /原创 2021-01-19 17:14:15 · 161 阅读 · 0 评论 -
用递归回溯解决八皇后问题
思想理论上应该创建一个二维数组来表示棋盘,但是实际上可以通过算法,用一个一维数组即可解决问题. arr[8] = {0 , 4, 7, 5, 2, 6, 1, 3}arr 下标表示第几行,即第几个皇后;arr[i] = val , val 表示第 i+1个皇后,放在第 i+1行的第 val+1 列;代码实现// 递归解决八皇后问题public class EightQueen { int maxSize = 8; int[] array = new int[maxSize];原创 2021-01-15 19:41:14 · 70 阅读 · 0 评论 -
逆波兰表达式计算器的实现
思路代码实现import java.util.ArrayList;import java.util.Stack;public class PolandNotation { public static void main(String[] args) { // 中缀表达式->后缀表达式 // 1.将中缀表达式放到一个list String infixExpression = "((15+5)+(20+10))*2+10"; // = 1原创 2021-01-14 15:41:43 · 88 阅读 · 0 评论 -
用数组模拟栈,写一个中缀计算器,计算“50*20+6-200/4+3*5-6/2+3“的结果
思路代码实现// 写一个计算器public class CalculatorDemo { public static void main(String[] args) { String expression = "50*20+6-200/4+3*5-6/2+3"; // =971 Stack2 numStack = new Stack2(10); Stack2 operaStack = new Stack2(10); int n原创 2021-01-14 10:44:10 · 114 阅读 · 0 评论 -
只用一个两级的for循环打印菱形
如何只用一个两级的for循环打印如下图菱形// 要一次性打印出改菱形需要想办法让队列A转化为队列B// 队列A: 1 2 3 4 5 6 7 8 9// 队列B: 1 2 3 4 5 4 3 2 1// 若队列共有n个数,要求第i个对应的队列B的值// 得出(n+1)/2-abs((n+1)/2-i)// 具体代码如下public class Test09 { public static void main(String[] args) { System.out原创 2021-01-12 20:21:23 · 84 阅读 · 0 评论 -
java中list和数组的相互转换的多种方式
java中list和数组的相互转换1. 数组->list方法一:使用for循环把数组元素加进list方法二:直接使用Arrays工具类下的asList()方法方法三:用ArrayList的构造方法和Arrays工具类下的asList()方法方法四:使用Collections.addAll()方法五:使用Stream中的Collector收集器2. list->数组l方法一:使用for循...原创 2020-03-22 01:41:16 · 312 阅读 · 0 评论 -
Vue快速入门,写一个简单的0-10的计数器
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document<...原创 2020-03-14 00:49:39 · 399 阅读 · 0 评论 -
生成部门树的方法
import com.google.common.collect.ArrayListMultimap;import com.google.common.collect.Lists;import com.google.common.collect.Multimap;import com.kang.dto.DeptLevelDto;import com.kang.mapper.SysDeptM...原创 2020-02-27 23:37:40 · 313 阅读 · 0 评论 -
Spring 中@NotNull, @NotEmpty和@NotBlank之间的区别是什么?
摘自:https://www.cnblogs.com/Terry-Wu/p/8134732.html三者的区别@NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0)。 @NotEmpty://CharSequence, Collection, Map 和 Array 对象不能是 null 并...原创 2020-02-27 18:49:23 · 165 阅读 · 0 评论 -
关于MySQL8的URL和Driver的写法
1.旧版本,MySQL Connector/J 5.x 版本的连接方式:url = jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf8driver = com.mysql.jdbc.Driver2、MySQL 8.x新版本,MySQL Connector/J 6.x之后 的连接方式:url...原创 2020-02-27 11:55:33 · 12822 阅读 · 0 评论 -
【shiro-2】自定义Realm
创建MyRealmimport com.kang.model.User;import org.apache.shiro.authc.*;import org.apache.shiro.authz.AuthorizationInfo;import org.apache.shiro.authz.SimpleAuthorizationInfo;import org.apache.shiro.r...原创 2020-02-25 12:05:33 · 89 阅读 · 0 评论 -
【shiro-1】shiro简单入门案例
1.Shiro简介Apache Shiro 是 Java 的一个安全框架。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与Web应用集成、缓存等。2 .Shiro系统架构和应用代码直接交互的对象是 Subject ,Shiro的对外API核心就是 Subject ;其每个API的含义:Subject(主体)代表了当前用户 所有 Subject都绑定到SecurityM...原创 2020-02-24 23:38:19 · 192 阅读 · 0 评论 -
JAVA多线程同步的几种方法(以售票为例)
JAVA多线程同步的几种方法1.同步代码块2.同步方法3.同步锁1.同步代码块//多窗口卖100张电影票public class Ticket implements Runnable{ private int tickets=100; //锁对象,随意对象,只要保证唯一即可 private Object obj=new Object(); @Override public void...原创 2020-01-29 22:13:49 · 678 阅读 · 1 评论