在实习期间同学问的问题的总结

11.15
在控制台输出使用Scanner会比较慢,可以使用System.in.read(),再添加到数组里
11.16
1、为什么float,long定义的变量需要加f和L,int,short等不加??
答:因为float定义的如果后不加f会默认为double类型,会产生编译错误,而long
    应为整数默认是int类型,向下转换不回丢失精度,向上装换回丢失精度 ,而
    short,byte底层都是int类型所以不需要加尾缀  
2、移位运算的问题
   4>>>2的结果
3、float f=2f;
   long  l=13718361739913764646L;
   f=l;
输出的结果会把定义的long类型的常量的后几位数字失去,但是这不是丢失数据,而是
精度的丢失,因为超过了float类型的长度
11.21
4、成员变量存在堆内存还是栈内存??
   静态成员变量存在方法区里的,不是堆内存也不是栈内存
5、档把一个类定义在另一个类里面在创建对象时会产生错误
No enclosing instance of type Computers is accessible.
Must qualify the allocation with an enclosing instance of type Computers (e.g. x.new A() where x is an instance of Computers).
此时两种解决办法:
(1)把类定义在另一个类的外面
(2)在创建对象时在new Computers(). new Computer();
其中 Computers()为外部类,new Computer()为内部类
11.22
6、成员变量放在堆内存中,创建的对象也存在堆内存中,那成员变量存在创建的对象里,还是在堆内存里?
答:成员变量会在创建对象后才会被复制,每个对象都有一个成员变量,当创建了
一个对象时,对象所在的堆内存里都有一个块来单独存储成员变量
7、this储存的当前对象的起始地,如果一个类里面只有一个没有保存起始地址的对象和一个方法f(),那么这个时候f()是否可以认为是this.f();如果是,this代表什么?
答:this此时依然会传递对象的起始地址,而且不需要接受地址,创建对象就再也访问不到对象了
    因此创建的对象马上就会成为垃圾,我们的目的就是为了调用构造器,所以创
    建对象后,也不需要通过引用访问对象了。
11.23
8、程序出错,在做计算创建对象的个数时,把构造器放在了main方法里,错误提示
   public Access()需要;
9、在另一个类中调用另一个类的主方法
   因为主方法中定义的是String类型的数组没有对数组进行赋值,所以在调用的
   时候需要为null值,例如:t.main(null);
11、在一个类中的方法里,创建了对象,并给构造器传参数这样是错误的,因为类中
    中有它的属性和行为,当在类中方法创建对象并传参数的话,相当于又作用于了
    类本身,所以不会输出结果
11.25
12.为什么接口里面的成员变量一定要声明为 public static final 的呢?哈哈哈哈
   答:因为接口的目的就是为了被继承,声明为public就可以被其他所有类访问得到了。由于接口不能创建对象,所以接口中的成员变量不能通过对象名访问到,这样的话,一旦某个类实现了多个接口 并且多个接口中又恰巧有同名的成员变量的话,就没办法区分了,可是如果把成员变量声明成static的话,就可以通过接口名.变量名去访问了,就可以区分了。又正是因为成员变量被声明成static了,所以必须要同时声明成final。是这样的,一旦static的成员变量被多个子类型所继承,如果不是final,某一个子类型在自己的类里改变了这一变量的话,这个变量又是被所有子类型的所有成员所共享的,那么所有类型中的这个static成员变量就都要跟着变,那就麻烦了。为了避免这种情况,就要再把这个类型也声明成final的。
11.30
13.为什么String s = new String("abc");String s2 = new String("abc");s.equals(s2)为true而StringBuilder sb = new StringBuilder("abc");StringBuilder sb2 =new StringBuilder("abc");sb.equals(sb2);是false
答:因为String类重写了equals方法,只要两个String字符序列相当就为true,而StringBuilder里面没有继承equals方法,Object类中的equals比较严格,此时StringBuilder是非可变类,会创建两个对象,所以为false。
14.为什么直接输出数组(没有遍历)输出的是地址,而StringBuilder里创建的字符串输出的却是所定义的字符串呢?
答:
12.1
15、为什么在Scanner类里面的useDelimiter方法不能用*作为分隔?
   答:因为useDelimiter方法是使用正则表达式,而*是正则表达式的一种特殊符号,所以不能直接使用,如果要使用*作为分隔可以使用转义字符进行转义,\\*
12.2
16、为什么子类继承父类要调用父类的构造器?
 答:因为子类继承了父类,会用到父类中的成员变量,而子类不能对父类中的成员变量进行初始化,只有调用父类的构造器才能对父类中的成员变量进行初始化。
12.05
17、为什么List创建的对象要指向ArrayList?
答:因为List是接口,而ArrayList是实现,实现List接口的有ArrayList,LinkedList,Vector等,所以用哪一个就直接new一个接口实现
18、为什么Integer integer=i.next();System.out.println(i.next());输出的结果是1,3,5,7,9,而注释掉前一条语句就是输出全部的元素?
答:因为第一个元素为0时,next()方法获得元素并指向下一个元素,此时第二个元素就是System里面的获取,然后又指向下一个元素又给了integer,然后再System里面的next()得到的再给它,然后再指向下一个元素,所以输出的结果是跳着输出的。
19、Comparable里面的compareTo方法,为什么return no-o.no就可以输出顺序了?
答:因为是通过lambda表达式输出传递的,而对于Compartor方法也是一样
12.06
同学对昨天的作业有些不明白,Iterator<Person> it = list.iterator();此处的参数类型为自定义的Person类型,在Person p = (Person)it.next();此处可以不加Person的转换类型,但是如果在上一条语句中没有定义参数类型,第二条语句必须加Person
12.08
20、static x=1; static y=2; 如何验证先分配空间在赋值就是输出x=0???
答:分开写,先声明static int x;再声明static int y;此时输出x和y,然后再分别给x和y赋值,x=1;y=2;
21、为什么反射中Class<?>用?而不用T???
答:T还是表示类的类型,而?表示对类的未知,T还是具有一定的局限性,所以还是要用?
12.09
22、jvm虚拟机的启动是单线程的还是多线程的?????
答:是多线程的。原因是垃圾回收线程也要先启动,否则很容易会出现内存溢出。现在的垃圾回收线程加上前面的主线程,最低启动了两个线程,所以,jvm的启动其实是多线程的。
23、 Thread类要重写run()方法,为什么呢????
 答: 不是类中的所有代码都需要被线程执行的。而这个时候,为了区分哪些代码能够被线程执行,java提供了Thread类中的run()用来包含那些被线程执行的代码。
24、run()和start()的区别?
        // run():仅仅是封装被线程执行的代码,直接调用是普通方法
        // start():首先启动了线程,然后再由jvm去调用该线程的run()方法。
24、为什么wait(),notify(),notifyAll()等方法都定义在Object类中
    因为这些方法的调用是依赖于锁对象的,而同步代码块的锁对象是任意锁。
    而Object代码任意的对象,所以,定义在这里面。
25、sleep()和wait()方法的区别
    sleep():必须指时间;不释放锁。
    wait():可以不指定时间,也可以指定时间;释放锁。
12.13
26、在cmd命令行下安装mysql时,使用mysqld --initialize-insecure不回输入密码
27、在已有的字段中加入注释
答:
28、在表中删除某一个确定的数值
答:
29、在写入数据的时候怎么换行写入?
答:例如:a.write("\r\n4444");就可以换行写入
12.19
30、在作业中同学用IO流BufferedWriter写入数据时因为是字符流所以获取id时,因为id是int类型所以获取不到,所以获取时要在后面加上""(附图)
31、直接创建一个String sql=""里面为sql语句,如果用StringBuffer创建对象,即使使用append方法追加了相应的sql语句也不可以直接使用,所以使用以下方法来实现
            String sql1=new String(bu);
            st.executeUpdate(sql1);
刚才说的stringbuilder转换成string
String(StringBuffer buffer):根据StringBuffer对象来创建对应的string对象。
String(StringBuilder builder):根据StringBuilder对象来创建对应的string对象。
String类提供了大量构造器来创建对象
12.21
32、在学生完成用ajax实现数据库的链接在页面上显示出来的作业时,在浏览器上总是不可以从html跳转到servlet服务器上展示出来数据库内容,并且数据库也连接不上,是因为在html中同学写的代码中有一个if-else if条件判断,当使用这个的时候就导致这样的结果,如果把else后面的if去掉就可以实现了
33、ajax中$.get("/Ajax", "user=" + user, function(v)的get里面第一个/ajax表示的是servlet里面的webservlet的地址,指向的是servlet
34、在使用过滤流时要注意,如果在servlet里面写UTF-8,需要request.setCharacterEncoding("UTF-8");写在获取字段(如:String user = request.getParameter("user");
        String password = request.getParameter("password");)的前面,不然输出的就会是乱码
12.26
35、安装linux出现的问题解决办法
方法一:
Vmware安装时出现未能启动vmware authorization service服务

在安装VM的时候出现这个问题,按照一般的方法去找到服务里面的VMware authorization service进行手动启动不行的时候,就应该去找到windows management instrumentation服务,因为是基于这个服务启动的。如果这个服务不能启动或者文件损坏,可以去网上找到修复并且自动启动这个服务的.bat文件。

* Win7下 Windows Management Instrumentation 服务无法启动 解决办法:

1.以管理员身份运行cmd.exe

2.sc config Winmgmt depend= RpcSs
方法二:
首先确保自己的电脑主机开启了支持虚拟化技术。具体实现根据自己笔记本的型号配置。
按住 F2 进入 bios 设置界面,首先看到的是 main(概要)选项卡,选择进入 Advanced 高级
——CPU Configuration 处理器设置;
找到 Intel Virtualization Technology 英特尔虚拟化技术 选项,设置为 Enabled 开启,再
F10 保存退出即可
12.27
36、什么时候可以标志是调用了tostring方法??
答:在输出引用类型时(创建的对象也是引用类型)就会调用Object里面的tostring方法
12.29
37、vi编辑器中查找替换点亮关键字使用:/you如果取消点亮就用:nohl
38、为什么Arrays.toString(y)输出的就是相应的值,而使用数组y.toString()输出的就是哈希码?
答:因为Arrays里面有toString方法所以会直接调用,而y虽然是数组但是没有重写里面的toString方法所以输出的就是哈希码
1.5
39、hadoop集群搭建可以正常启动,但是执行shall脚本文件时总报错(WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable)是因为hadoop本地依赖库有问题。要么是没有,要么是版本不匹配。在网上找到几个方法链接(http://blog.sina.com.cn/s/blog_4eca88390102vn86.html)
1.9
40、我想将一个RDD中的任意两条信息做一些计算应该怎么做?
RDD是遇到这样的错误org.apache.spark.SparkException: RDD transformations and actions can only be invoked by the driver, not inside of other transformations; for example, rdd1.map(x => rdd2.values.count() * x) is invalid because the values transformation and count action cannot be performed inside of the rdd1.map transformation. For more information, see SPARK-5063.怎么解决??错误意思(他的意思是说当你使用transformation算子的时候里面不能用action算子)
答:你用  cartesian方法把两个RDD合并成一个然后对合并的RDD做和的运算,假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。假设我的RDD是3条信息,那经过cartesian方法就会生成9个键值对(1,1)...(3,3)的形式了是吗?也就能进行之后的计算了
41、spark的groupby算子怎么按两个字段分组??
答:val x = hpxx.map(line => line.split("-")).groupBy(m => m(1) + m(2))
1.10
42、安装mysql时,会因为启动多个mysql进程而报错,可以 ps -qa | grep -i mysql,然后kill -9 mysql相应的进程,并将错误提示中提到的相应文件夹等删除掉


2017、02、07
1、hive中的特殊分隔符$是属于特殊分隔符的,所以要用\\进行转义
2、 转化UNIX时间戳(从1970-01-0100:00:00 UTC到指定时间的秒数)到当前时区的时间格式
举例:
Hive> select from_unixtime(1323308943,'yyyyMMdd') from dual;
20111208
3、usermod 是相对于用户来说的,改变某一个用户的组时是相当于替换,gpasswd是相对于组来说的改变某一用户所属的组时相当于移动
2.21
4、运行有共同好友的案例时,会出现角标越界的异常,产生的原因是因为在所输入的文件中最后一行含有空格或是第一行含有空格
5、安装zookeeper时,每个节点都可以正常启动zookeeper,但是查看zookeeper状态时却报出没有运行,此时需要杀死zookeeper相应的进程,然后再重新启动一次
6、安装zookeeper时有时会出现权限不够的问题,此时需要看是那个文件,大部分是设置myid的所在的文件,解决办法是删除此文件再重新创建,或是把相应有权限的文件修改一下权限即可
3.2
7、在把hbase上的表导到hive上使用select * from test.customer;时报错
FAILED: SemanticException Unable to determine if hdfs://host001:9000/data/test.db/customeris encrypted: java.lang.IllegalArgumentException: Wrong FS: hdfs://host001:9000/data/test.db/customer, expected: hdfs://hadoop-ha
原因:
出现该错误是因为原先hive中表的位置为:hdfs://host001:9000  
而配置hdfs HA 后,hive表的位置变为: hdfs://hadoop-ha
在hive中记录的表的位置还是原先的hdfs://host001:9000   与现在的位置不符,就出现报错了。
解决方法:
进入到hive的bin 目录下
然后 ./metatool  -listFSRoot     #查看当前hive记录中表的位置
最后修正位置./metatool  -updateLocation hdfs://hadoop-ha hdfs://host001:9000    #修正位置
8、hadoop中edits文件大量堆积怎么合并??
答:dfs.namenode.num.extra.edits.retained这个参数默认是100,改小一些就好了














  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值