
面试笔试相关
文章平均质量分 86
Xeon-Shao
这个作者很懒,什么都没留下…
展开
-
简说设计模式——桥接模式
桥接模式是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变,是一种结构型设计模式。Bridge模式是基于类的最小设计原则,通过使用封装,聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(abstract)和行为特点(Implementation)分离出来,从而可以保证各个部分的独立性和功能扩展性。转载 2025-01-22 16:52:23 · 80 阅读 · 0 评论 -
为何重写equals方法就得重写hashCode方法
也就是说即使我们输入了两个字面量完全相同的s1与s2,由于他们的地址值不同,得到的哈希值也不同,结果导致的是这个查出来的p节点始终为null(0号红色框处),也就是会执行操作–创建一个新的节点。Object类中的equals方法区分两个对象的做法是比较地址值,即使用“==”。通过源码我们能看到,String对象在调用equals方法比较另一个对象时,除了认定相同地址值的两个对象相等以外,还认定对应着的每个字符都相等的两个String对象也相等,即使这两个String对象的地址值不同(即属于两个对象)。转载 2023-04-11 11:38:47 · 154 阅读 · 0 评论 -
不允许方法被重写的方式包括哪些?
不允许方法被重写的方式包括哪些?原创 2022-06-17 14:37:16 · 989 阅读 · 0 评论 -
HTTP的长连接和短连接通俗解释以及应用场景
目录1.以前的误解2.一个疑问第一个问题是,是不是只要设置Connection为keep-alive就算是长连接了?第二个问题是,我们平时用的是不是长连接?第三个问题,也是LZ之前最想不明白的问题,那就是我们这种普通的Web应用(比如博客园,我的个人博客这种)用长连接有啥好处?需不需要关掉长连接而使用短连接?长轮询和短轮询长短轮询和长短连接的区别什么时候用长连接,短连接?长连接与短连接区别:以前的误解很久之前就听说过长连接的说法,而且还知道HTTP1.0协转载 2022-04-01 10:31:31 · 558 阅读 · 0 评论 -
关于SPARK_WORKER_MEMORY和SPARK_MEM
在spark中最容易混淆的是各种内存关系。本篇讲述一下SPARK_WORKER_MEMORY和SPARK_MEM。SPARK_WORKER_MEMORY是计算节点worker所能支配的内存,各个节点可以根据实际物理内存的大小,通过配置conf/spark-env.sh来分配内存给该节点的worker进程使用。在spark standalone集群中,如果各节点的物理配置不一样,co转载 2017-09-16 10:36:35 · 4095 阅读 · 0 评论 -
[Spark] - HashPartitioner & RangePartitioner 区别
Spark RDD的宽依赖中存在Shuffle过程,Spark的Shuffle过程同MapReduce,也依赖于Partitioner数据分区器,Partitioner类的代码依赖结构主要如下所示:主要是HashPartitioner和RangePartitioner两个类,分别用于根据RDD中key的hashcode值进行分区以及根据范围进行数据分区一、Partition转载 2017-09-16 19:11:55 · 2538 阅读 · 0 评论 -
[Spark]Could not locate executable null\bin\winutils.exe in the Hadoop binaries
这里集群环境不同,但遇到的问题及解决办法其实一样,时间有限,就不详细修改了。我主要是在Windows本地运行Spark程序出现该错误。本文转自http://www.cnblogs.com/hyl8218/p/5492450.html,所有权力归原作者所有。在已经搭建好的集群环境Centos6.6+Hadoop2.7+Hbase0.98+Spark1.3.1下,在Win7系统Inte转载 2017-09-16 19:14:05 · 776 阅读 · 0 评论 -
Spark数据本地性
分布式计算系统的精粹在于移动计算而非移动数据,但是在实际的计算过程中,总存在着移动数据的情况,除非是在集群的所有节点上都保存数据的副本。移动数据,将数据从一个节点移动到另一个节点进行计算,不但消耗了网络IO,也消耗了磁盘IO,降低了整个计算的效率。为了提高数据的本地性,除了优化算法(也就是修改spark内存,难度有点高),就是合理设置数据的副本。设置数据的副本,这需要通过配置参数并长期观察运行状态转载 2016-12-28 16:54:57 · 1233 阅读 · 0 评论 -
RDD Join 性能调优
阅读本篇博文时,请先理解RDD的描述及作业调度:[《深入理解Spark 2.1 Core (一):RDD的原理与源码分析 》](http://blog.csdn.net/u011239443/article/details/53894611#t16)Join数据是我们在Spark操作中的很重要的一部分。Spark Core 和Spark SQL的基本类型都支持join操作。虽然join很常转载 2017-09-16 19:29:50 · 516 阅读 · 0 评论 -
Java多线程的三种实现方式(重点看Collable接口实现方式)
1、通过继承Thread类来实现多线程 在继承Thread类之后,一定要重写类的run方法,在run方法中的就是线程执行体,在run方法中,直接使用this可以获取当前线程,直接调用getName()方法可以获得当前线程的名称,多线程的名称一般为Thread-n。而在主方法中,需要调用Thread.currentThread()方法来获取当前线程。需要注意的是,主转载 2017-09-24 21:22:03 · 1355 阅读 · 0 评论 -
Collections.sort()和Arrays.sort()排序算法选择
今天面试的时候,被问到Collections.sort();和Arrays.sort();两个方法的排序算法实现,我只记得一个是快速排序一个是归并排序,但是刚刚看到没那么简单。Arrays.sort()先来看看Arrays.sort();,一点进这个方法会看到是这样子的public static void sort(int[] a) { DualPivotQuickso转载 2017-09-15 20:26:33 · 652 阅读 · 0 评论 -
【算法导论33】跳跃表(Skip list)原理与java实现
Skip list是一个用于有序元素序列快速搜索的数据结构,由美国计算机科学家William Pugh发明于1989年。它的效率和红黑树以及 AVL 树不相上下,但实现起来比较容易。作者William Pugh是这样介绍Skip list的: Skip lists are a probabilistic data structure that seem likely to supplant b转载 2017-09-15 19:49:21 · 595 阅读 · 0 评论 -
HashMap解决hash冲突的方法
在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样。当程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例:HashMap m=new HashMap(); m.put("a", "rrr1"); m.put("b", "tt9"); m.put("转载 2017-09-15 19:06:54 · 407 阅读 · 0 评论 -
K-Means聚类算法原理
K-Means算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛。K-Means算法有大量的变体,本文就从最传统的K-Means算法讲起,在其基础上讲述K-Means的优化变体方法。包括初始化优化K-Means++, 距离计算优化elkan K-Means算法和大数据情况下的优化Mini Batch K-Means算法。1. K-Means原理初探 K转载 2017-09-15 16:32:54 · 546 阅读 · 0 评论 -
#include<bits/stdc++.h>包含C++的全部头文件
#include包含C++的所有头文件参考博客:http://blog.kuoe0.tw/posts/2014/01/31/install-gnu-gcc-on-os-x-and-use-the-header-bits-stdcplusplus-h-and-policy-based-data-structure做CF看见别人用这个函数,然后就能直接用vector,set,strin转载 2017-09-15 16:06:48 · 1142 阅读 · 0 评论 -
堆排序 Heap Sort
堆排序 Heap Sort 堆排序是一种选择排序,其时间复杂度为O(nlogn)。堆的定义 n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。 情形1:ki 2i 且ki 2i+1 (最小化堆或小顶堆) 情形2:ki >= k2i 且ki >= k2i+1 (最大化堆或大顶堆) 其中i=1,2,…,n/2向下取整;转载 2017-04-07 14:21:08 · 492 阅读 · 0 评论 -
纸牌博弈问题
题目:有一个整型数组A,代表数值不同的纸牌排成一条线。玩家a和玩家b依次拿走每张纸牌,规定玩家a先拿,玩家b后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家a和玩家b都绝顶聪明,他们总会采用最优策略。请返回最后获胜者的分数。给定纸牌序列A及序列的大小n,请返回最后分数较高者得分数(相同则返回任意一个分数)。测试样例:[1,2,100,4],4返回:101解析:a和b都是转载 2017-09-14 14:42:21 · 390 阅读 · 0 评论 -
Spark自定义分区(Partitioner)
我们都知道Spark内部提供了HashPartitioner和RangePartitioner两种分区策略(这两种分区的代码解析可以参见:《Spark分区器HashPartitioner和RangePartitioner代码详解》),这两种分区策略在很多情况下都适合我们的场景。但是有些情况下,Spark内部不能符合咱们的需求,这时候我们就可以自定义分区策略。为此,Spark提供了相应的接口,我们只转载 2017-09-16 19:33:55 · 801 阅读 · 0 评论 -
Spark面对OOM问题的解决方法及优化总结
转载请保持完整性并注明来源链接: http://blog.csdn.net/yhb315279058/article/details/51035631 Spark中的OOM问题不外乎以下两种情况map执行中内存溢出shuffle后内存溢出 map执行中内存溢出代表了所有map类型的操作,包括:flatMap,filter,mapPatitions等。shuffle后转载 2017-09-16 19:58:20 · 397 阅读 · 0 评论 -
对称加密和非对称加密大概介绍和区别
什么是对称加密技术?对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密也就是密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,而且对计算机功能要求也没有那么高对称加密算法在电子商务交易过程中存在几个...转载 2019-05-23 14:43:54 · 1764 阅读 · 0 评论 -
使用Java线程并发库实现两个线程交替打印的线程题
背景:是这样的今天在地铁上浏览了以下网页,看到网上一朋友问了一个多线程的问题。晚上闲着没事就决定把它实现出来。题目: 1.开启两个线程,一个线程打印A~Z,两一个线程打印1~52的数据。 2.实现交替打印,输出结果为12A34B...........5152Z. 3.请用多线程方式实现。 这种只有两个线程交替打印数据的题目其实相对还是比较简单的,如果转载 2017-11-01 16:47:17 · 814 阅读 · 0 评论 -
java中有哪些锁
这个问题在我看了一遍后尽然无法回答,说明自己对于锁的概念了解的不够。于是再次翻看了一下书里的内容,突然有点打开脑门的感觉。看来确实是要学习的最好方式是要带着问题去学,并且解决问题。在java中锁主要两类:内部锁synchronized和显示锁java.util.concurrent.locks.Lock。但细细想这貌似总结的也不太对。应该是由java内置的锁和concurrent实现的一系列锁转载 2017-11-01 16:31:22 · 1220 阅读 · 0 评论 -
Flume监控几种方式
Flume主要有以下集中监控方式:1.JMX监控配置 {$FLUME_HOME}/flume-env.shcd $FLUME_HOMEvi flume-env.shJAVA_OPTS="-Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.su转载 2017-11-08 10:16:47 · 3350 阅读 · 0 评论 -
哪些情况下sql索引会失效
面试时被问到这个问题,记录笔记,免得被面试的人鄙视!!索引什么时候不会生效,以下集中情况会导致索引失效:1.条件中用or,即使其中有条件带索引,也不会使用索引查询(这就是查询尽量不要用or的原因,用in吧)注意:使用or,又想索引生效,只能将or条件中的每个列都加上索引2.对于多列索引,不是使用的第一部分,则不会使用索引。3.like的模糊查询以%开头,索引失效转载 2017-10-22 15:36:34 · 10433 阅读 · 2 评论 -
你必须知道的几种java容器(集合类)
一、基本概念Java容器类类库的用途是“持有对象”,并将其划分为两个不同的概念:1)Collection:一个独立元素的序列,这些元素都服从一条或者多条规则。 List必须按照插入的顺序保存元素,而set不能有重复的元素。Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序相同)。 2)Map:一组成对的“键值对”对象,允许你使用键来查找值。|Collec转载 2017-10-12 16:46:46 · 1337 阅读 · 0 评论 -
JAVA中定时器的使用
在JAVA中实现定时器功能要用的二个类是Timer,TimerTask Timer类是用来执行任务的类,它接受一个TimerTask做参数Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data),2:在某个固定的时间之后(int delay).这两种方式都可以指定任务执行的频率,本文有二个例子,一个是简单的一个是用了内转载 2017-10-12 10:14:03 · 1108 阅读 · 0 评论 -
Kryo为什么比Hessian快
Kryo 是一个快速高效的Java对象图形序列化框架,它原生支持java,且在java的序列化上甚至优于google著名的序列化框架protobuf。由于protobuf需要编写Schema文件(.proto),且需静态编译。故选择与Kryo类似的序列化框架Hessian作为比较来了解一下Kryo为什么这么快。序列化的过程中主要有3个指标:1、对象序列化后的大小一个对象会被转载 2017-10-11 08:48:45 · 4228 阅读 · 0 评论 -
JAVA JDK1.5-1.9新特性
1.51.自动装箱与拆箱:2.枚举(常用来设计单例模式)3.静态导入4.可变参数5.内省1.61.Web服务元数据2.脚本语言支持3.JTable的排序和过滤4.更简单,更强大的JAX-WS5.轻量级Http Server6.嵌入式数据库 Derby1.71,switch中可以使用字串了2.运用List tempList转载 2017-10-17 21:29:03 · 375 阅读 · 0 评论 -
hashmap冲突的解决方法以及原理分析
HashMap冲突问题看这个就行了在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样。当程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例:HashMap m=new HashMap(); m.put("a", "rrr1"); m.put("b",转载 2017-09-26 21:50:36 · 622 阅读 · 0 评论 -
动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
1、先科普下最长公共子序列 & 最长公共子串的区别:找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。而最长公共子序列则并不要求连续。2、最长公共子串其实这是一个序贯决策问题,可以用动态规划来求解。我们采用一个二维矩阵来记录中间的结果。这个二维矩阵怎么构造呢?直接举个例子吧:"bab"和"caba"(当然我们现在一眼就可以看出来最长公共子串是"ba"或"ab")转载 2017-09-26 21:38:24 · 735 阅读 · 0 评论 -
OJ系统里用BufferedReader提高效率
在OJ系统中做编程题时,如果从System.in读入的数据非常大的时候,使用Scanner非常影响效率,可能导致最终代码超时,所以最好改用原创 2017-09-09 10:05:42 · 929 阅读 · 0 评论 -
单例模式的5种实现方式,以及在多线程环境下5种创建单例模式的效率
这段时间从头温习设计模式。记载下来,以便自己复习,也分享给大家。[java] view plain copypackage com.iter.devbox.singleton; /** * 饿汉式 * @author Shearer * */ public class SingletonDemo转载 2017-09-17 10:17:09 · 835 阅读 · 0 评论 -
字符串匹配之KMP算法详解
kmp算法又称“看毛片”算法,是一个效率非常高的字符串匹配算法。不过由于其难以理解,所以在很长的一段时间内一直没有搞懂。虽然网上有很多资料,但是鲜见好的博客能简单明了地将其讲清楚。在此,综合网上比较好的几个博客(参见最后),尽自己的努力争取将kmp算法思想和实现讲清楚。kmp算法完成的任务是:给定两个字符串O和f,长度分别为n和m,判断f是否在O中出现,如果出现则返回出现的位置。常规方法是转载 2017-05-20 16:48:29 · 431 阅读 · 0 评论 -
java语言复制数组的四种方法
来源于牛客网的一道选择题:Java语言的下面几种数组复制方法中,哪个效率最高?A.for循环逐一复制B.System.arraycopyC.System.copyofD.使用clone方法效率:System.arraycopy > clone > Arrays.copyOf > for循环1、System.arraycopy的转载 2017-05-05 16:28:26 · 542 阅读 · 0 评论 -
c++中vector的用法详解
vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: 1.文件包含: 首先在程序开头处加上#include以包含所需要的类文件vector 还有一定要加上using name转载 2017-05-05 10:44:19 · 647 阅读 · 0 评论 -
Java判断一个数是不是素数
[java] view plaincopyimport java.util.Scanner; //质数又称素数,是指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数 public class PrimeNumber { public static void main(String[] args) {转载 2014-09-17 23:06:53 · 5676 阅读 · 0 评论 -
Java求两个数的最大公约数
辗转相除法. 当两个数都较大时,采用辗转相除法比较方便.其方法是: 以小数除大数,如果能整除,那么小数就是所求的最大公约数.否则就用余数来除刚才的除数;再用这新除法的余数去除刚才的余数.依此类推,直到一个除法能够整除,这时作为除数的数就是所求的最大公约数. 例如:求4453和5767的最大公约数时,可作如下除法. 5767÷4453=1余1314转载 2014-09-17 23:04:31 · 10000 阅读 · 1 评论 -
交换两个变量的值,不使用第三个变量的四种法方法
通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下:int a,b;a=10; b=15;int t;t=a; a=b; b=t;这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法)。转载 2014-09-17 22:51:02 · 1159 阅读 · 0 评论 -
forward和redirect的区别
1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.2.从数据共享来说 forward:转发页面和转载 2014-09-25 15:32:32 · 635 阅读 · 0 评论 -
设计模式--缺省适配模式
我们知道,如果一个类要实现某一个接口,则必须实现该接口的全部方法我们举例说明本科生读书的例子,本科生必须读完读四年修满所有的学分后,参加论文答辩后即可毕业.我们定义一个本科生读书学习的接口Study。Java代码 interface Study { public void StudyGrade1(); public void St转载 2014-09-25 16:17:19 · 864 阅读 · 0 评论