编译时看左边,运行时看左边。(变量没有多态性)
方法的特点:成员方法(无static):编译时看左边,运行时看右边。
静态方法(static):编译时看左边,运行时看左边。(静态方法无多态性)
形式参数,指的是定义方法的时候,方法小括号中定义的参数。
实参: 实际参数,指的是调用方法的时候,传入小括号中的实际常量或变量。
注意:
方法参数为基本数据类型时,形参和实参之间为值传递,形参的改变不会影响实参。
方法参数为引用数据类型时,形参和实参之间为地址传递,形参的改变会影响实参。
HashMap线程不安全,可以存储null的键和值,HashTable线程安全,不可以存储null的键和值。
相同点: 底层数据结构都是采取哈希表(数组+链表)实现的。
Hashtable JDK1.0,整个java的命名体系:JDK1.2
final:修饰类,方法,变量
finally:运用于处理异常中
finalize:Object类中的一个方法,当对象变成垃圾时,由GC调用该对象的此方法,回收资源
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>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
官网:https://echarts.baidu.com/
下载地址:https://echarts.baidu.com/download.html
FIFO Scheduler:先进先出策略。 所有的程序根据提交的时间进行排队 先提交的先执行
缺点:前方的大job 会阻塞后续小job的执行
capacity Scheduler:容量调度。把整个集群的资源划分成不同的大小队列 大小job各自提交各自的队列
缺点:空闲队列产生资源浪费
fair Scheduler:公平调度。 动态根据job大小调整资源
缺点:动态调整都慢 需要等待。
from
join
on
where
group by(开始使用select中的别名,后面的语句中都可以使用)
avg,sum(聚合函数)
having
select
distinct
order by
limit
设置本地模式: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()
如果在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;
每隔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" donekafka启动关闭脚本:
启动脚本 #!/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" donehive支持: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;
https://blog.csdn.net/forezp/category_9268735.html
进制转换
负数的二进制转换形式:绝对值二进制取反加一负数二进制的最高位是一常见编码:
ACSII(美国):0:48,A:65,a:97中文:GBK码表万国码:UnicodeJAVA基本数据类型所占字节数是多少?
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字节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
动态传参中文乱码:用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,配置任务成功发送邮箱,任务失败发送邮箱https://blog.csdn.net/xiapi3/article/details/95014633
KeyError: “Couldn’t get user id for user hue”
hue安装到有mysql环境的节点添加用户 hue useradd huepasswd huehue启动:build/env/bin/supervisor
页面访问 hue:http://node-1:8888/
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中配置邮箱流程查看进程杀死:
ps -ef | grep redis| grep -v grep | awk '{print $2}'|xargs kill -9redis安装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
启动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 &"