mac软件设置启动快捷键

Linux系统设置了非常多的软件系统快捷键。例如在Ubuntu系统中可以按ctrl + shift + t 启动用户终端。但是Mac系统并没有提供这些软件启动的快捷键。如下介绍一个方法可以为Mac的任意软件设置启动快捷键。

阅读全文

InputStream读取问题

最近写了一个项目,需要将HTTP请求的数据读取到一个byte数组中。我的写法如下:

1
2
3
4
5
6
7
8
9
10
11
//下面这段代码想做到的功能大概是:先获取inputStream中数据内容的大小。然后实例化一个数组。最后将所有的数据内容读取到这个数组之中。
try (InputStream inputStream = httpResponse.getEntity().getContent()) {
int size = inputStream.available();
byte[] dataContent = new byte[size];
inputStream.read(dataContent);
return dataContent;
} catch (Exception e) {
logger.error("download qrcode cause exception", e);
}

阅读全文

Linux恢复误删除的文件

使用过Linux的同学,一定都有过错误使用rm -rf命令的经过。一旦使用错误就会将宝贵的资源删除掉。如果后续的处理不当将会造成不可恢复的后果。本文将浅析Linux文件删除的原理,并提供一个简单的方法恢复被删除的文件。

阅读全文

解决Mac电脑端口被占用

在日常开发过程中经常遇到端口被占用的情况。这种情况的一般解决思路是:首先找到找到本端口占用的进程的进程号,然后杀掉该进程号对应的进程。Ubuntu/Centos/RedHat等Linux操作系统下一般采用如下的方法。

阅读全文

百度无法爬取Github Pages静态网站解决方案

在Github Pages上面托管了自己的静态博客,经过一段时间的运行发现自己网站的流量基本都是来自与谷歌、必应、搜狗等等搜索引擎,确没有百度的搜索引擎的流量,最后谷歌一下发现原因是:

阅读全文

Guava学习教程之4-Guava集合之间转换

我们常常会遇到集合之间的转换,例如:List集合转换成Map的集合,Map的集合转换为List的集合。通常情况下我们都需要进行集合的遍历,然后进行转换,这个实现略low,包括甲骨文公司自己也认识到了这个问题,所以在Java8中引入了流机制来实现非遍历的转换。Java8一下版本的JDK我们可以使用Guava来实现非遍历的集合转换。

阅读全文

Java日志框架之Logback详解

Java的日志系统经过了漫长的发展,最后确认为slf4j加logback的结构。充分证明了logback的生命力。

阅读全文

Guava学习教程之3-Predict,Predicts,Function,Functions函数详解

Guava提供了一些接口和类,提供了一种类似函数式的编程风格。这个有一定的吸引力,但是远远没有Java8中lamada表达式配合函数式编程来的爽,而且Guava提供的这些接口的主要功能并不是在使用函数式编程风格,而是一下的使用方式。这些类/接口主要有:

阅读全文

Python连接Hive详细教程

最近一段时间,做一些分析运营相关的工作,和hive打的交道比较多。每次需要看数据的时候都需要写一个SQL去验证一下,有的时候甚至不知道表结构,但是hive并不像MySQL那样使用方便。目前我司使用hive查询只有两个入口:

  • 通过公司的HUE管理页面,这个是推荐的方法,但是有一个问题,每一张表都需要申请。很麻烦,而且我们部门审批hive表的那个XXX太XXX了,申请比较困难。

阅读全文

Guava学习教程之2-字符串各种操作详解

在本系列的第一篇文章当中,我们介绍了如何使用Guava来简化Map类的操作。本文将继续承接上文的内容。来分享Guava为字符串操作带来的便利。

阅读全文

Guava学习教程之1-Map操作详解

在一开始接触guava的时候我是抵触的。当时这样觉得:相比C++,Java的运行速度有点慢,那么Guava是基于Java封装的运行速度肯定比Java慢,所以不应该使用Java。现在回头来看当时的想法真的有点可笑,真是应了一句话:凡是你排斥的就是你要学习的。下面写几个Guava的优点:

阅读全文

netcat 实现不同服务器机器传输文件详解

在日常的开发过程中经常会遇到这种需求:将服务器一上的某个文件拷贝到服务器二机器上。因为服务器的机器都只能和堡垒机(跳板机)通信,所以最开始的做法都是通过scp先将服务器一的文件拷贝到跳板机,然后在将跳板机的文件传递到服务器二,这种做法很原始低效。在一次无意中被一位大神看到,给我介绍了NetCat工具。从此便对齐爱不释手。

阅读全文

UEFI GPT vs BIOS MBR 详解

上周回家给岳父买了个台式机,然后在家里组装了一下,发现操作系统默认安装的是win8,怕他们不会使用,所以就打算重装一个win7的系统。本来觉得是小菜一碟的事情,安装的时候提示磁盘是GPT格式的,晚上搜索了一下需要将GPT格式的磁盘转换成MBR的格式就好了。在没有弄清状况的情况下,就直接下载了一个磁盘分区工具,对磁盘进行转换,结果整块磁盘被格式化了。然后一直弄到了凌晨4点,才把系统搞好,本文就结合自己的实战。讲解一下GPT VS MBR 以及 UEFI VS BIOS

阅读全文

常用排序面试算法精选总结

常见的几种排序算法按照是否需要进行两个元素的比较可以分为两类:

  • 比较排序 。比较排序的时间复杂度的下限是:O(n*lgn)常见的比较排序算法有(冒泡排序、选择排序、快速排序、插入排序、堆排序、归并排序)
  • 非比较排序 。非比较排序的数据输入有一定的要求。比如:输入数据是在某一范围内的整数。这类输入数据的排序时间复杂度可以突破O(n*lgn)的下界。达到O(n)。(常见的非比较排序有:基数排序、计数排序、shell排序)
    如下的内容将给我各个排序算法的源代码。并对其进行对比分析。

阅读全文

Java命令学习系列5——jstack详解

本系列的前面四篇文件从面到点,逐层介绍了如果分析生产环境Java进程的运行状态,其中第一篇jps介绍了如何找到所需要的Java进程,第二篇jinfo介绍了如何查看Java进程的配置信息,第三篇jmap介绍了如何查看Java内存对象信息,以及堆内存信息,第四篇jstat介绍了如何分析Java进程的GC信息和JIT信息。本文将承接上文内容,利用jstack工具深入分析Java进程内的线程详细信息。

阅读全文