一、知识点小结
1.1 多态的特点:
- 变量的特点:
编译时看左边,运行时看左边。(变量没有多态性)
- 方法的特点:
成员方法(无static):编译时看左边,运行时看右边。
静态方法(static):编译时看左边,运行时看左边。(静态方法无多态性)
1.2 方法的参数传递
- 形参:
形式参数,指的是定义方法的时候,方法小括号中定义的参数。
- 实参:
实际参数,指的是调用方法的时候,传入小括号中的实际常量或变量。
注意:
方法参数为基本数据类型时,形参和实参之间为值传递,形参的改变不会影响实参。
方法参数为引用数据类型时,形参和实参之间为地址传递,形参的改变会影响实参。
1.3 HashMap和HashTable的区别?
- 不同点:
HashMap线程不安全,可以存储null的键和值,HashTable线程安全,不可以存储null的键和值。
- 相同点:
底层数据结构都是采取哈希表(数组+链表)实现的。
Hashtable JDK1.0,整个java的命名体系:JDK1.2
1.4 final,finally和finalize()的区别?
-
final:修饰类,方法,变量
-
finally:运用于处理异常中
-
finalize:Object类中的一个方法,当对象变成垃圾时,由GC调用该对象的此方法,回收资源
1.5 请求SSM请求乱码问题配置?
-
post:(在web.xml文件中配置如下属性)
<filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
-
get:(在pom.xml文件tomcat插件中配置如下属性)
<uriEncoding>UTF-8</uriEncoding> <useBodyEncodingForURI>true</useBodyEncodingForURI>
1.6 SpringMVC参数绑定?
-
request.getParameter()
-
一个简单类型(基本类型或者String类型). int id
-
多个简单类型. int id, String name, float price, String detail
-
封装一个简单的JavaBean, 即: Item类.
-
@RequestParam, 可以保证我们形参的名字随便写
-
封装复杂的JavaBean. 即: QueryVO#Item
-
封装数组. 版本一: Integer[] arr, 版本二: QueryVO#ids
-
封装集合. QueryVO#list
1.7 ECharts官网与下载地址
-
官网:https://echarts.baidu.com/
-
下载地址:https://echarts.baidu.com/download.html
1.8 Date格式
- yyyy年MM月dd日 HH:mm:ss
1.9 Linux操作
- 解压文件到指定位置:tar -zxvf xxxx.tar.gz -C 路径
- 时间同步:https://www.cnblogs.com/summerdata/p/10984724.html
- 杀掉80端口线程命令:fuser -k -n tcp 80
- 查看nginx进程:ps -ef | grep nginx
1.10 网络编程-网络通信三要素
- ip,端口号,传输协议(UDP,TCP)
1.11 HA机制的原理
- 单点故障:一个服务或者软件有多个模块,其中一个出现故障导致整体不可用
- 高可用:解决单点故障问题 让业务持续可用(namenode HA,resourcemanager HA)
- 主备集群:主节点(active)和备份(standby)节点,解决单点故障根本
- 容错failover:能够容忍错误的发生
- task的最大重试次数:4
- 容忍失败的task的比例:默认是0 . 意味着不管是maptask 还是reducetask 只要有一个task失败 整个MapReduce程序就是失败的
- task的超时时间:默认10分钟。 超时指的是task处于卡住锁住的状态 既没有输入数据也么有输出数据
1.12 yarn Scheduler调度策略
-
FIFO Scheduler:先进先出策略。 所有的程序根据提交的时间进行排队 先提交的先执行
缺点:前方的大job 会阻塞后续小job的执行
-
capacity Scheduler:容量调度。把整个集群的资源划分成不同的大小队列 大小job各自提交各自的队列
缺点:空闲队列产生资源浪费
-
fair Scheduler:公平调度。 动态根据job大小调整资源
缺点:动态调整都慢 需要等待。
1.13 hadoop常用操作
- 开启hdfs,yarn,history :start-dfs.sh,start-yarn.sh,mr-jobhistory-daemon.sh start historyserver
- 终止正在执行的job任务
- hadoop job -list 查询job编号
- hadoop job -kill job编号
1.14 Sql语句执行顺序
-
from
-
join
-
on
-
where
-
group by(开始使用select中的别名,后面的语句中都可以使用)
-
avg,sum(聚合函数)
-
having
-
select
-
distinct
-
order by
-
limit
1.15 Hive常用设置
-
设置本地模式:set hive.exec.mode.local.auto=true;
-
启动hive服务:
- nohup /export/servers/hive/bin/hive --service metastore &
- nohup /export/servers/hive/bin/hive --service hiveserver2 &
-
开启分桶和设置MapReduce个数:
set hive.enforce.bucketing = true;
set mapreduce.job.reduces=N;
-
sql写法:
需求:按照时间维度来统计独立访客及其产生的pv量(按照小时)
数据表:dw_weblog_detail
分组字段:时间维度(hour)、访客维度(remote_addr)
度量值:count()
1.16 在企业中如何选择文件格式和压缩算法
如果在hive中因为数据过多导致的磁盘空间被占用问题 在不改变数据前提下,可以使用不同的存储格式配合不同的算法优化存储空间。
推荐:存储格式 ORC 压缩算法:snappy。
--指定为snappy 压缩
STORED AS orc tblproperties (“orc.compress”=“SNAPPY”);
--不指定 有没有压缩呢? 有默认压缩 zlib压缩
STORED AS orc;
--指定为none 表示不压缩
STORED AS orc tblproperties (“orc.compress”=“NONE”);
扩展:如果企业中hive的数据都是二进制等格式的数据 或者是被压缩编码的数据。
insert 普通表 + select from;
1.17 shell脚本
-
每隔1s往文件中循环追加时间:while true;do date >> /root/logs/test.log;sleep 1;done
-
Impala-shell:
- refresh dbname.tablename增量刷新
- invalidate metadata全量刷新
-
zookeeper启动关闭脚本:
启动脚本 #!/bin/bash for host in ${hosts[*]} do ssh $host "source /etc/profile;/export/servers/zookeeper/bin/zkServer.sh start" done 关闭脚本 #!/bin/bash hosts=(node-1 node-2 node-3) for host in ${hosts[*]} do ssh $host "/export/servers/zookeeper/bin/zkServer.sh stop" done
-
kafka启动关闭脚本:
启动脚本 #!/bin/bash brokers="node-1 node-2 node-3" for broker in $brokers do ssh $broker "source /etc/profile;cd /export/servers/kafka_2.11-0.10.0.0;nohup bin/kafka-server-start.sh config/server.properties >/root/kafka.log 2>&1 &" echo "start $broker" done 关闭脚本: #!/bin/bash brokers="node-1 node-2 node-3" for broker in $brokers do ssh $broker "source /etc/profile;cd /export/servers/kafka_2.11-0.10.0.0;bin/kafka-server-stop.sh" done
1.18 安装flume注意事项
- 在conf/flume-env.sh 导入java环境变量,保证flume工作的时候一定可以正确的加载到环境变量
- 给flume-env.sh增加执行权限:chmod a+x flume-env.sh
1.19 Hive与Impala语法差异
-
hive支持:insert overwrite table t_test2 select * from t_test2 where id!=1;(使用overwrite删除id=1的数据)Impala可加可不加table。
-
group by 使用时,只能查询分组字段和聚合函数。
-
with t1 as (select * from itcast_t1),t2 as(select * from itcast_t2) select * from itcast_t3;
with 子句后边必须使用select语句,如果没有查询语句会报错;
后面的查询语句可以不使用with子句构建的临时表 -
Hive求同一列差值:select a.id,a.counter,b.counter-a.counter as counterDiffer from test1 a left join test1 b on a.id = b.id -1 order by a.id;
1.20 springboot学习地址:
https://blog.csdn.net/forezp/category_9268735.html
1.21 javaBean类转为Json
new ObjectMapper().writeValueAsString(userList);
1.22 java基础
-
进制转换
- 负数的二进制转换形式:绝对值二进制取反加一
- 负数二进制的最高位是一
-
常见编码:
- ACSII(美国):0:48,A:65,a:97
- 中文:GBK码表
- 万国码:Unicode
-
JAVA基本数据类型所占字节数是多少?
byte 1字节 short 2字节 int 4字节 long 8字节 char 2字节(C语言中是1字节) float 4字节 double 8字节 boolean false/true(理论上占用1bit,1/8字节,实际处理按1byte处理) 操作系统32位的时候,int 4字节,出于兼容性考虑,64位int也是4字节
二、问题汇总
2.1 idea连接mySQL遇见问题
Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' prope
解决地址:https://blog.csdn.net/liuqiker/article/details/102455077
2.2 WIN10安装MySql5.5最后一步未响应解决方法
https://blog.csdn.net/weixin_42738811/article/details/87298109
2.3 解决windows下nginx的安装使用及解决80端口被占用nginx不能启动的问题
https://blog.csdn.net/kevin860/article/details/82322522
2.4 解决Window上MapReduce运行IO异常解决
org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
https://blog.csdn.net/Bazingalqq/article/details/88014734
2.5 解决Sqoop从hdfs导出到mysql中文乱码解决过程中,MapReduce卡死问题
-
bin/sqoop export \ --connect "jdbc:mysql://node-1:3306/userdb?useUnicode=true&characterEncoding=utf-8" \ --username root \ --password root \ --table student \ --export-dir /student/
-
linux版本是my.cnf,一般会放在/etc/my.cnf,/etc/mysql/my.cnf
win下的是my.ini,一般会在安装目录的根目录 vi /etc/my.cnf -
按照链接修改my.cnf:
https://www.cnblogs.com/aljxy/p/3681338.html
2.6 Azkaban相关问题
-
Azkaban Flow Log无日志输出问题
- 加载初始化mysql没有execution_logs,execution_jobs表,查看create.execution_logs.sql建表语句,创建该表
- 会报error:1071,mysql字段设置太长,把name字段varchar改为240即可建表成功,解决无日志输出问题
-
动态传参中文乱码:用notepad++将.sh和.job文件的编码格式改为UTF-8编码
-
Azkaban 动态传参shell:
https://blog.csdn.net/Mask_V/article/details/84796876
-
启动azkaban:
-
先启动exec-server ,再启动web-server
-
激活executor
启动:bin/start-exec.sh
curl -G “node-2:$(<./executor.port)/executor?action=activate” && echo
Url:https://node-2:8443
-
-
azkaban邮箱发送(成功or失败)
-
注册邮箱,启用POP3/SMTP服务:https://www.cnblogs.com/feifeicui/p/8572985.html
-
修改web中的azkaban.properties 配置(修改完记得重启web)
mail.sender=hds6172@163.com mail.host=smtp.163.com mail.user=hds6172@163.com mail.password=TIETAMCMVOFCKCTF(如输入密码报错:535,则改用授权码)
- 在azkaban执行任务前,配置Notification,配置任务成功发送邮箱,任务失败发送邮箱
-
2.7 解决hadoop出现Warning: fs.defaultFS is not set异常
https://blog.csdn.net/xiapi3/article/details/95014633
2.8 Hue安装问题
-
KeyError: “Couldn’t get user id for user hue”
- hue安装到有mysql环境的节点
- 添加用户 hue
- useradd hue
- passwd hue
-
hue启动:build/env/bin/supervisor
页面访问 hue:http://node-1:8888/
2.9 oozie相关问题:
-
Oozie启动问题
Error: IO_ERROR : java.io.IOException: Error while connecting Oozie server bin/oozied.sh start 页面访问:http://node-1:11000/oozie/ 出现此问题是忘记启动historyserver服务,启动则解决该问题
-
Oozie邮箱设置
- 配置https://blog.csdn.net/u010770993/article/details/70312488
- 在hue中workflow中配置邮箱流程
2.10 安装nginx+lua时提示
./configure: error: ngx_http_lua_module requires the Lua library
解决方案:
(1)yum install lua-devel -y
(2)https://blog.csdn.net/ygm_linux/article/details/81584382
2.11 Centos7离线安装cdh5.15.1
- https://blog.csdn.net/qq_24817093/article/details/84138976
- Centos6在software里面
2.22 Redis相关问题
-
查看进程杀死:
ps -ef | grep redis| grep -v grep | awk '{print $2}'|xargs kill -9
-
redis安装gem install redis报错,执行curl -sSL https://get.rvm.io | bash -s stable,报错curl: (7) couldn’t connect to host:
手动官网安装ruby:https://blog.csdn.net/qq_36761831/article/details/105666960
2.23 kafka相关问题
-
kafka-eagel启动成功,访问web页面报错500
- http://node-1:8048/ke
- https://blog.csdn.net/weixin_45793819/article/details/105001763
- 修改配置文件时vim system-config.properties ,用自带的数据库,不用mysql的数据库
-
启动kafka(启动shell脚本1.17 shell脚本里面)
- kafka集群依赖于zk集群,一定要保证zk集群的可用
- 验证zk集群是否可用:bin/zkServer.sh status 一定要保证出现一个leader,其他的都是follower即可
- cd /export/servers/kafka_2.11-0.10.0.0;
- nohup bin/kafka-server-start.sh config/server.properties >/root/kafka.log 2>&1 &"