自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Bob Liu的程序人生

万物之始,大道至简,衍化至繁

  • 博客(190)
  • 资源 (1)
  • 收藏
  • 关注

原创 博客近期暂停更新

近期告别了从业了12年的光通信行业,入职了一家券商的子公司,从事量化交易的研究与开发的工作,有很多新的东西需要学习,暂时没有时间更新博客,特此告知!

2018-02-03 21:14:33 355

原创 Java算法面试题(009) 毒酒问题

1000桶酒,其中1桶有毒。用小老鼠做实验,一旦吃了有毒的酒,一周后小老鼠毒性就会发作而亡。问如何在最短的时间内用最少的老鼠找到那桶有毒的酒?

2017-12-20 21:45:52 2581 1

原创 Java算法面试题(008) 字符串反转

本文列出了字符串反转的几种实现方式

2017-12-19 16:13:30 3445 2

原创 Java算法面试题(007) 蒙提霍尔问题(三门问题)

假设你正在参加一个游戏节目,你被要求在三扇门中选择一扇:其中一扇后面有一辆车;其余两扇后面则是山羊。你选择了一道门,假设是一号门,然后知道门后面有什么的主持人,开启了另一扇后面有山羊的门,假设是三号门。他然后问你:“你想选择二号门吗?”转换你的选择对你来说是一种优势吗?

2017-12-18 09:33:17 3145

原创 Java线程面试题(04) Java中进程与线程的真实区别

编程面试的一个常见问题是线程和进程之间有什么区别?那么它们之间的主要区别在于一个进程是一个正在执行一些代码的程序,而一个线程是这个进程中的一个独立的执行路径。一个进程可以有多个线程来完成独立的任务,例如一个用于从磁盘读取数据的线程,一个用于处理该数据的线程以及另一个用于通过网络发送该数据的线程。这种提高吞吐量和更好地利用CPU能力的技术也被称为多线程技术。从技术上讲,线程之间最显着的区别是地址空间和上下文切换。进程中的所有线程共享相同的地址空间,但进程有自己的地址空间。类似地,进程之间的上下文切换比线程之间

2017-12-17 13:12:07 1140

原创 Java算法面试题(006) 相遇问题(阿里)

本题来自阿里的面试,题目为:有A,B两个人在X轴上,分别在零点的两侧,你只能写go_left(每次往左走一步),go_right(每次往右走一步),if_zero(判断当前位置是不是零点),goto (程序的第几行),这四个语句的程序,给A、B执行一样的程序,让他们相遇。

2017-12-15 22:38:38 1198

原创 Linux高性能服务器诊断工具(01) mpstat命令 - 报告处理器相关统计信息

一般今天的计算机都支持多个处理器。即使笔记本电脑通常也是1个物理处理器,内置2个内核;笔者使用的HP服务器,已经可以支持2个物理处理器,每个处理器上可以达到14个内核(Xeon E5-2660v4 (2.0GHz/14-core))。在服务器端,更多的处理器或内核意味着更多的计算能力。但另一方面,也更耗电。你可能会发现一个情况,当你的CPU利用率很高,但你觉得你没有运行什么应用。

2017-12-14 21:31:17 616

原创 Java算法面试题(005) 求n边形周长的k等分点坐标(今日头条)

本题来自今天头条的笔试:有一个n边形(P0, P1, ..., Pn), 每一条边皆为垂直或水平线段。现给定数值k,以P0为起点将n边形的周长分为k段,每段的长度相等,请打印出k等分点的坐标(T0, T1, ..., Tk)的坐标。

2017-12-11 20:01:58 7841 5

原创 Java算法面试题(004) 实现一个算法来确定一个字符串是否具有所有唯一的字符

本文详细介绍了如何实现一个算法来确定一个字符串是否具有所有唯一的字符。

2017-11-29 17:26:27 2435

翻译 Java线程面试题(03) Java中的volatile如何工作? Java中的volatile关键字示例

什么是Java中的volatile变量以及何时使用Java中的volatile变量是一道Java面试中经常被问及的多线程访问问题。尽管许多程序员知道什么是volatile变量,但是他们在回答第二部分问题什么地方使用volatile变量时失败,因为大部分人对Java中volatile变量并没有一个清晰的理解和应用。在本教程中,我们将通过提供一个Java中volatile变量的简单示例来解决这个问题,并讨论在Java中使用volatile变量的一些情况。无论如何,Java中的volatile关键字被用作Java

2017-11-27 13:03:50 2478

原创 Java算法面试题(001) 如何使用循环和递归计算单链表的长度

本文为本博主翻译,未经允许,严禁转载。简介这是我第一次接受跨国投资银行面试时所问的经典编程问题之一。之后,这个问题在其他编程工作面试中也多次被问到。让这个问题有趣的是,与C ++开发人员相比,Java开发人员在数据结构方面并不是那么棒,这显然是因为这两种语言之间的根本区别。 C ++更多的是系统编程语言,而Java更多的是应用程序编程,也有一套丰富的Java API允许程序员跳过这种基本的

2017-11-23 08:43:10 3486

翻译 Java算法面试题(002) 如何通过一次迭代找到LinkedList的中间元素

Java和非Java程序员在电话面试中经常被问及如何仅一次遍历查找到LinkedList的中间元素。这个问题类似于检查回文或者计算阶乘,面试官有时也会要求编写代码。为了回答这个问题,候选人必须熟悉LinkedList数据结构,即在单LinkedList的情况下,链表的每个节点都包含数据和指针,它是下一个链表节点的地址,单链表的最后一个元素指向null。由于为了找到链表的中间元素,你需要找到LinkedList的长度,这需要对链表节点进行计数直到最后一个元素为止。让这个数据结构面试问题有趣的是,你需要在一次遍

2017-11-22 22:54:49 2465

翻译 Java算法面试题(003) 如何检查一个字符串是另外一个字符串的旋转字符串

编写一个程序来检查一个字符串是否是另一个字符串的旋转字符串是一个常见的编码问题,你将在编程工作面试中看到。一个字符串被认为是另一个字符串的旋转,如果它具有相同的长度,包含相同的字符,并且围绕其中一个字符旋转。例如,字符串“bcda”是“abcd”的旋转,但“bdca”不是字符串“abcd”的旋转。对这个有趣的问题最简单的解决方案之一是首先检查两个字符串是否具有相同的长度,如果不是一个字符串不能是另一个字符串的旋转。如果它们的长度相同,那么只需要通过连接第一个字符串和自己来创建另一个字符串,现在检查第二个字符

2017-11-22 21:00:30 2343

翻译 Java集合面试题(03) Java中HashMap和HashTable之间区别

虽然Hashtable和HashMap都是基于散列表的数据结构,并且都实现了Map接口,但它们的主要区别在于HashMap不是线程安全的,而Hashtable是线程安全的。这意味着你不能在没有同步的情况下在多线程Java应用程序中使用HashMap。另一个区别是HashMap允许一个空键和空值,但是Hashtable不允许空键或值。而且,HashTable的线程安全性是使用内部同步实现的,

2017-11-21 15:24:32 6426

翻译 Java线程面试题(02) Java线程中如何避免死锁

如何避免Java中的死锁?是多线程编程常见问题之一,在高级别的面试中经常被问及,并带来了大量的后续问题。尽管问题看起来很基本,但是一旦开始深入,大部分开发者都会陷入困境。面试问题从“什么是死锁?”开始。答案很简单,当有两个或更多的线程在等待对方释放锁并无限期地卡住时,这种情况就称为死锁。这只会发生在多线程的情况下。

2017-11-21 14:13:08 8831 1

翻译 Java线程面试题(01) Java中如何检查一个线程是否拥特定对象的锁

考虑一个场景,在运行时你必须找到一个Java线程是否对特定的对象加锁,例如,确认NewsReader线程是否持有NewsPaper对象的锁?如果这个问题出现在任何核心的Java面试中,那么我会自动假设可能有至少两个答案,一个是难以获得的原始答案,程序员想根据基本原理找出答案,而另一个可能是一些很少使用的Java API调用,顺便说一下,这实际上是在接受我最大的全球投资银行之一面试是被问到的问题。投资银行领域,特别是现金股票, 需要强大的核心Java和多线程技能来构建高性能,低延迟的Java应用程序,以处理每

2017-11-21 12:50:14 4769

翻译 Java集合面试题(02) Java中List和Set之间区别

Java中List和Set之间有什么区别是一个非常流行的Java集合面试问题,也是在Java中使用Collection类时要记住的一个重要的基本概念。 List和Set都是Java程序最重要的Collection类中的两个,以及各种Map实现。 List和Set的基本特征在Java的List和Set接口中被抽象出来,然后List和Set的各种实现都在相应接口之上增加了特定的特征。例如,Java中的ArrayList是由Array支持的List实现,而LinkedList是另一个像链接列表数据结构一样工作的L

2017-11-21 11:44:20 2399

翻译 Java集合面试题(01) Java中ArrayList和Vector之间的区别

ArrayList和Vector是java集合包中最常用的两个类,Vector和ArrayList之间的区别是第一轮或电话采访中最常见的java面试问题之一。虽然在我看来这是一个相当简单的问题,但是知道什么时候使用Vector ArrayList,或者如果你正在处理一个项目,这个问题很重要。在本文中,我们将介绍Java中Vector和ArrayList之间的一些基于点的区别,并试图理解这些差异背后

2017-11-21 10:18:22 1133

原创 数据可视化matplotlib(03) 绘制决策树

决策树的主要优点是直观易于理解,如果不能将其直观的显示出来,就无法发挥其优势。本文将使用matplotlib来绘制树形图,并讲解具体的代码实现。

2017-11-17 09:33:44 3296

原创 KNN算法的Python实现

邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。本文使用Numpy相关函数实现KNN核心算法。

2017-11-16 13:48:15 967

原创 数据可视化matplotlib(01) 图的选择

本文介绍了如何根据可视化目的及数据特点来选择合适类型的图进行可视化工作。

2017-11-15 12:06:12 845

原创 numpy中的ndarray与pandas的Series和DataFrame之间的相互转换

在数据分析中,经常涉及numpy中的ndarray对象与pandas的Series和DataFrame对象之间的转换,经常让大家产生困惑。本文将简单介绍这三种数据类型,并以股票信息为例,给出相关对象之间转换的具体示例。

2017-11-15 11:26:24 63364 1

转载 数学课堂 | 线性代数系列 -- 线性空间

线性空间和向量是线性代数中最基础的概念,任何学习理工科的人都绕不开的概念。“线性”中的“线”可以理解为实数线的“线”,只要我们用到实数的时候就涉及到了线性的概念。不夸张地讲,现实中的绝大多数数理概念都是线性的,即便不是,它在局部上也会有近似线性的结构。一般来讲,线性空间的定义基于一种叫做域 (field) 的代数结构。但是在实际应用中我们并不需要对一般性的域进行讨论,而只需要使用我们最熟悉的域 --- 实数RR。为了不给读者带来混淆,数学课堂线性代数课程都只基于实数域,而对一般性域感兴趣的读者可以自行参阅

2017-11-07 10:44:04 2712

转载 一只兔子帮你理解KNN

商业哲学家 Jim Rohn 说过一句话,“你,就是你最常接触的五个人的平均。”那么,在分析一个人时,我们不妨观察和他最亲密的几个人。同理的,在判定一个未知事物时,可以观察离它最近的几个样本,这就是 kNN(k最近邻)的方法。

2017-11-03 09:21:54 804

原创 TA-Lib在Win7系统上的安装

TA-Lib是多平台的开源金融技术分析库,可以对金融市场数据进行技术分析, 包括200种技术指标,支持蜡烛图模式的识别,并且支持多种多种编程语言接口。本文总结了在Windows系统上如何安装talib库, 作者使用的环境为Win7系统, Python版本2.7.13。

2017-10-29 15:30:06 2334

转载 JVM 调优系列之监控工具

本文介绍了JVM调优的相关工具,是分析线上内存泄露、某个进程突然cpu飙升、线程死锁、响应变慢等相关问题的利器。

2017-10-27 08:53:20 309

原创 如何选择机器学习的算法

本文非常简短,总结了机器学习实际应用中选择可用的算法需要考虑的因素,以及如何选择相应的算法.

2017-10-18 16:19:31 753

原创 MapReduce总结

MapReduce是一种可用于数据处理的编程模型。MapReduce程序本质上是并行运行的,优势在于处理大规模数据集。本文介绍了Hadoop MapReduce的架构,并结合具体例子介绍MapReduce的工作过程,以更深入的了解MapReduce。

2017-10-08 21:06:17 1544

原创 Amateras Modeler的配置与使用

Amateras Modeler是基于Eclipse的一款轻量级的UML和实体-联系图(entity-relationship diagram)编辑工具,支持类图、顺序图、活动图、用例图以及实体-联系图。它的前身是AmaterasUML和AmaterasERD。Amateras Modeler本身支持逆向工程,即根据已有源码生成UML图,这为我们分析源码提供有力支持。本文介绍了基于最新Amateras Modeler 1.1.0的配置与使用。

2017-10-07 21:54:24 2555

原创 HDFS(Hadoop Distributed File System)简介

本文简单介绍了HDFS的架构,并总结了HDFS的主要特性。

2017-10-04 22:50:13 4717

原创 Hive命令行介绍

$HIVE_HONE/bin/hive命令工具是与Hive服务交互的最常用的方式,是学习和熟悉Hive重要的工具。本文总结了Hive命令行的常见用法,能够帮助读者快速了解和学习Hive。

2017-10-03 17:33:57 1822

原创 Hive简介

本文介绍了Hive的起源,基本的功能特性,应用场景,并对Hive主要服务进行介绍,通过阅读本文,读者可以对Hive有基本的了解。

2017-10-03 14:32:10 1360

原创 Hive 2.2安装指南

通过自己安装部署Hadoop和Hive可以让用户更加清楚的知道这些工具是如何工作的,特别是对开发者来说。本文详细介绍了如何在Ubuntu系统上的安装部署Hive 2.2,这里使用的Hadoop版本为2.7.3。

2017-10-03 10:26:53 1338

原创 Hadoop简介

学习一种新的技术,在深入技术细节之前,首先需要了解这项技术的产生的背景,了解技术的总体框架。本文介绍了Hadoop基本概念、Hadoop重要模块、守护进程,以使读者能够对Hadoop有一个总体的认识。

2017-10-01 08:07:24 1184

原创 Hadoop配置文件简介

本文介绍了Hadoop 2.7.x常用的配置文件,并结合Hadoop的不同工作模式介绍其基本的配置。

2017-10-01 08:04:20 1364

原创 与HDFS命令交互时如何指定文件和目录确切位置的URI

本文介绍URI的基本格式,并结合Hadoop 2.7.x相关HDFS命令,讲解在与HDFS交互中如何指定文件和目录确切位置的URI。

2017-09-30 23:08:21 5391

原创 如何解决apt-get中Unmet dependencies问题

新安装的Ubuntu 16.04 TLS系统,由于apt-get upgrade过程中断,导致依赖损坏;安装新的包时,提示Unmet dependencies问题。本文记录了问题的排查方法及解决方案

2017-09-30 21:35:22 75618 7

原创 Ubuntu 16.04 TLS Samba配置

本文介绍了如何在Ubuntu 16.04 TLS系统上配置Samba,并在Windows系统中将共享目录作为指定驱动器挂。

2017-09-28 13:22:26 996

原创 Ubuntu 16.04如何禁用IPv6功能

本文介绍了在Ubuntu 16.04版本中如何禁用IPv6功能。

2017-09-24 18:41:27 18545

原创 如何解决Hadoop集群环境下DataNode无法连接NameNode问题

本文总结了在Hadoop集群环境下,DataNode无法连接NameNode的问题:2017-02-13 05:43:01,540 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to server: hadoop-master-vm/10.220.33.37:9000,重点在于问题的排除思路和方法。该问题出现的运行环境为Ubuntu 16.05 TLS, Hadoop 2.7.3环境下。

2017-09-22 23:02:42 8883

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除