- 博客(22)
- 收藏
- 关注
原创 Hadoop和spark中的区别
Hadoop:在MapReduce中,步骤包括map,shuffle,reduce,其中combine和partition是函数。combine作用是将map后产生的键值对中,相同key的合并,产生新的键值对作为reduce的输入。而partition的作用是根据key将键值对划分给对应的reduce。shuffle包括combine和partition。kvbuffer环在到达临界数据后...
2018-07-20 20:47:55 337
原创 hadoop 求平均值遇到带问题
具体程序就不写了,主要面对的问题有这么几个:1.由于结果要输出打印,所以最后输出value的类型为Text,而非doubleWritable;2.我写了个mapper输出键值对的value类型为intwritable,即用来保存求和的加数,在reduce函数中通过for循环来计算项数,这样再通过除法求平均值就是不能跑出结果,难道所有引入的数值必须是从mapper中得到的?不该吧,太玄幻了。...
2018-05-24 20:27:30 359
原创 ubuntu16.04安装细节
具体步骤大家可以网上找,我说下很容易出问题的点。我是在win10系统下装的Ubuntu16.04.先是BIOS中确保secure boot是disabled,我这边是默认的,然后在启动顺序上将USB调到最高优先级。再分配分区时,将绿了的磁盘压缩变黑就OK了。还有很坑的一点是USB安装时,boot中USB的格式调成UEFI。最后在Ubuntu下的分区,先分逻辑分区,最后分主区明天配置docker,难...
2018-05-18 20:11:04 180
原创 模拟面试
这算是朋友给我试着面试,这之后就试试big data好了。如果依着别人的路走的话,的确没啥创新的。还不如路子野一点。宽度小点,深度扩展。问题:提供了1000亿个64bit的数字,找出出现次数大于三次的数字,并排序。解答:这个问题首先被数字吸引住。1000亿,64bit,那提供的数据非常大。常规单机一定处理不了。数据总的大小为1000*10^8*64bit=6400Gb=800GB.需要有800GB...
2018-05-16 21:16:17 152
原创 MySQL必知必会读书笔记
光看书没啥用,大家还是要多敲代码,实验楼进行巩固还是很不错的。导入sql数据,语句需使用source。我在用source语句时,将绝对路径补全路径中\在Windows中要改成/最好将关键字用大写输入,数据用小写输入DESCRIBE可用来表示SHOW COLUMNS FROMSQL语句中,所有的空格都被忽略了有时很奇怪,两句语句明明一样但是就是错误,第二次能成功LIMIT 4 OFFSET 3和LI...
2018-04-11 22:16:03 138
原创 再读thinking in java -- 第十七章 容器深入研究(二)
Map中任何键必须有个equals方法,保证键的唯一性。若键被用于HashMap,则必须实现HashCode方法。用于TreeMap必须实现Comparable。LinkedHashMap散列化所有元素,但遍历时,返回插入顺序。反射实例:利用类型标签Class<t>,type(type是Class对象),type.getConstructor(Class对象),再用得到的对象.newI...
2018-03-30 16:37:06 148
原创 再读thinking in java -- 第十七章 容器深入研究(一)
填充容器可通过Collections.nCopies()和Collection.fill(),都采用单对象。fill()只能替换已有元素,不能添加新元素,可用Generator解决(利用泛型)。addAll方法是所有Collection子类的一部分。LinkedHashSet维护的是保持了插入顺序的列表。用Generator填充,即覆盖了next()调用iterator()一般返回一个匿名类的It...
2018-03-30 11:36:01 167
原创 再读thinking in java -- 第十六章 数组
数组实在编译期检查,来防止插入错误类型和抽取不当的类型。不能实例化具有参数化类型的数组:eg Peel<Banana>[] peels = new Peel<Banana>[10];//不合法但却可以创建该类型的数组引用。java有两种方法提供比较功能: 1、实现Comparator接口的compare() 方法; 2、实现Comparable接口的compar...
2018-03-27 23:26:43 157
原创 再读thinking in java -- 第十五章 泛型(三)
一个类不能实现同一个泛型的两种接口,因为存在擦除。使用带泛型参数的转型或instanceof不会有任何效果。402页的代码中,T被擦除到它的第一个边界,默认情况下是Object,因此pop()方法实际上是将Object转型为Object。这里转型其实只是为了符合返回类型T的要求。对于转型其实无效。即使将返回类型改写为Object,最后得到的返回类型也是String。自己后面补充了代码:public...
2018-03-27 20:55:32 176
原创 再读thinking in java -- 第十五章 泛型(二)
泛型变量的使用时在编译之前检查的。ArrayList<String> array1 = new ArrayList();ArrayList array2 = new ArrayList<String>();前者和泛型一致,后者无泛型作用。new ArrayList()只是在内存中开辟了空间。可以存储任意对象。而设计类型检查的是它的引用,因为array2中没用使用泛型引用,所...
2018-03-27 20:54:27 158
原创 再读thinking in java -- 第十五章 泛型(一)
题外话:终于到了泛型这一章,这一章真是看的我头皮发麻,神志不清。很多自己得出的结论在几页之后就完全推翻了。这里写的总结不一定对,很多只是看了别人的博客以及自己推测的结果,而且文中会有部分东西连我自己也没理清楚。看到一半我就去打游戏了,真的废。将一组对象直接打包存储于其中一个单一对象,这样的对象叫做元组。允许读取其中元素,不允许存放新的对象。元组可以具有任意长度,且其中的对象可以是任意不同的类型。在...
2018-03-27 19:36:36 208
原创 再读thinking in java -- 第十四章 类型信息
RTTI表示运行时识别一个 对象的类别。从容器中去除,元素会自动从Object转换到容器参数类型(运行时转变)。对于具体的类型可以用多态来实现。Class对象(包含了与类有关的信息)表示了类型信息在运行时的内容。每编写并编译一个心累就会产生一个Class对象(被保存到.class文件中)。生成Class对象需要JVM调用称为类加载器的子系统(包含一条类加载链)。所有的类都在第一次使用时,动态加载到...
2018-03-23 10:41:02 218
原创 再读thinking in java -- 第十三章 字符串
String对象是不可变的。每个看起来修改String值的方法实际上都创建了一个全新的String对象。String对象具有只读性,所以指向它的任何引用都不可能改变它的值。若要在toString方法中使用循环,最好自己创建一个StringBuilder对象,用它来构造最终结果。用String的话会不停创建StringBuilder,所以效率低下。若想打印对象地址,可在toString方法中添加su...
2018-03-23 10:09:45 185
原创 再读thinking in java -- 第十二章 通过异常处理错误
异常情况就是指阻止当前方法或作用域继续执行的问题。异常的一般顺序:1、抛出异常;2、创建异常;3、当前执行路径停止,抛出异常对象的引用;4、执行异常处理程序标准异常类都有两个构造器:默认构造器和接收字符串的构造器异常处理模型理论上有两种:终止模型和恢复模型。实际上都用终止模型自定义异常类需从已有的异常类继承。对异常类而言最重要的部分是类名。Exception继承自Throwable类。当异常类写了...
2018-03-21 10:29:48 200
原创 再读thinking in java 第十一章 持有对象
这一章讲了很多api,没仔细看,有些东西也没看到位,难受。通过使用泛型,看可以在编译期防止将错误类型的对象放到容器中。toString方法默认打印类名加上对象散列码。容器可分为:1、Collection:独立元素的序列。List按插入顺序保存元素,Set不能有重复元素,Queue按规则确定对象产生顺序; 2、Map:一组成对的“键值对”对象若用Array.asList(数组)产生的list对...
2018-03-20 11:01:39 171
原创 再读thinking in java -- 第十章 内部类
直接创建外部类不会创建出内部类。内部类对象内访问外围类对象的所有成员,而不需要任何特殊条件,还拥有外围类的所有元素的访问权。在内部类若要生成对外围类对象的引用,可使用外围类的名字后紧跟 .this。创建内部类对象的操作:1、外部类函数返回; 2、外部类对象.new 内部类类名若内部类非static,则在拥有外部类对象之前,不可能创建内部类对象在方法作用域内创建一个完整的类叫做局部内部类。在方...
2018-03-20 09:56:57 121
原创 再读thinking in java -- 第八章 多态 & 第九章 接口
第八章 多态:多态的作用是消除类型之间的耦合关系。将一个方法调用同一个方法主体关联起来被称作绑定。若在程序执行前进行绑定叫前期绑定。解决前期绑定的问题(对于不同子类相同方法调用产生的疑惑)是通过后期绑定(运行时,根据对象的类型进行绑定)实现的。也被称作动态绑定或者运行时绑定。java除了static和final方法外,都是后期绑定的。只有非private方法才能被覆盖。private方法被自动认定...
2018-03-19 10:34:08 126
原创 再读thinking in java -- 第七章 复用类
每个非基本类型对象都有一个toString方法。创建一个类总是在继承(要么继承其他类,要么继承object)每个类都可以拥有一个main方法用于测试。java用super关键字表示父类。调用父类方法:super.function();当创建一个导出类对象时,该对象包含了一个基类的子对象。该子对象被包装在导出类对象内部。基类在导出类构造器访问它之前就完成初始化。没有默认构造器或者想用一个带参的基类构...
2018-03-16 20:48:41 198
原创 再读thinking in java -- 第六章 访问权限
第六章 访问权限访问权限从最大到最小:public、protected、包访问权限、private编译单元即java源代码,是 .java文件,最多只能有一个public类,可能没有public类。类名同文件名同名。编译一个.java文件,会输出文件中每个类名同名的.class文件。类库是一组类文件。每个文件都有一个public类以及任意个非public类。每个文件都有一个构件,若希望这些构件从属...
2018-03-16 20:08:47 179
原创 再读thinking in java -- 第五章 初始化与清理
当类中有多个构造器,在其中一个构造器内可用this()调用其他的构造器,但是只能调用一个,且要放到构造器内部开始处。除构造器外,编译器禁止其他方法调用构造器(new除外)static方法就是没有this的方法。static方法内部不能调用非静态方法(反过来可以)。垃圾回收器只能释放经由new分配的内存。对于非new出来的对象获得的“特殊”内存区域它不知道如何释放。为解决这种情况,java允许类中定...
2018-03-15 19:42:05 227
原创 再读thinking in Java -- 第三章 操作符 &amp; 第四章 控制执行流程
第三章 操作符在最底层,Java数据通过使用操作符来操作基本类型存储实际的数值,而非引用,所以赋值后变量修改不影响原值。e.g. int a = b; 改变a不影响b的值的大小。但如果目标是对象的话将会有影响(别名现象)移位操作符只可用来处理整数类型。左移:低位补零; 有符号右移:若为正,左补零;若为负,左补一; 无符号右移:>>>右移高位插0三元操作符:boole...
2018-03-15 00:40:15 136
原创 再读thinking in java -- 第二章 一切都是对象
5个存储数据的区域:1、寄存器:最快的存储区。位于处理器内部,数量有限,按需分配,不能直接控制2、堆栈:位于通用RAM(随机访问存储器),通过堆栈指针访问。对战指针下移,分配新的内存;上移,释放内存。创建程序时,需知道存储在堆栈区所有项的生命周期。引用存放在堆栈区。3、堆:一种通用的内存(位于RAM区),存放对象,不需知道数据在堆中的存活时间。4、常量存储:放在程序代码内部,可放在rom。5、非R...
2018-03-14 20:09:27 130
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人