自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (4)
  • 收藏
  • 关注

原创 ES索引存储原理

ES索引存储原理不变性写到磁盘的倒序索引是不变的:自从写到磁盘就再也不变。 这会有很多好处: 不需要添加锁。不存在写操作,因此不存在多线程更改数据。 提高读性能。一旦索引被内核的文件系统做了Cache,绝大多数的读操作会直接从内存而不需要经过磁盘。 提升其他缓存(例如fiter cache)的性能。其他的缓存在该索引的生命周期内保持有效,减少磁盘I/O和计算消耗。 当然,索引

2017-08-06 14:36:54 37683

原创 nginx tcp模块安装

nginx tcp模块安装nginx版本 选择版本tcp_model https://github.com/yaoweibin/nginx_tcp_proxy_module初始 nginx 1.12 版本安装需要安装OpenSSl有网络:sudo apt-get install libssl-dev 下载OpenSSl https://www.openssl.org/source/安装

2017-08-06 14:19:26 2318

原创 Nginx+lua+mysql实时存日志

Nginx+lua+mysql实时存日志准备材料Nginx.1.12安装包下载mysql 自行安装Lua 相关包 LuaJIT 下载ngx_devel_kit 下载ngx_lua 下载pcre 下载lua_mysql 下载安装LuaJIT 安装tar zxf LuaJIT-2.0.5.tar.gzcd LuaJIT-2.0.5makemake install PREFIX=

2017-08-06 14:13:37 4304

原创 KNN算法

1、介绍KNN算法又称为k近邻分类(k-nearest neighbor classification)算法。KNN是一种监督类型的分类算法,通过计算新数据与训练数据特征值之间的距离,然后选取K(K>=1)个距离最近的邻居进行分类判断(投票法)或者回归。KNN算法的过程为: 1. 算距离:选择一种距离计算方式, 通过数据所有的特征计算新数据与已知类别数据集中的数据点的距离 2. 找邻居:按照距离递

2016-10-24 21:14:15 987

原创 HDFS的一些常问问题

为什么HDFS的blocksize是128M? 磁盘的块大小为512byte,HDFS的块大小为128Mb,主要原因是为了减少磁盘的寻道时间。一次寻道大约需要10ms,目前市面上的千兆网卡速度为100Mb/s,寻道时间应该只占传输时间的1%,我们需要设置一块的大小为100M,因此设置块的大小为128M。 HDFS不适合的场景 1)低延迟的访问 HDFS在高吞吐量的数据传输上面

2016-09-01 19:52:51 1621

原创 图着色问题

1、有m种颜色,对n个节点进行着色,相邻节点颜色不能相同,可以有多少种着色方法?回溯package com.wangyi;import java.util.Arrays;public class GraphColor { public static void main(String[] args) { // TODO Auto-generated method stub

2016-04-02 20:51:59 890

原创 无序数组O(n)时间找到排序后的两个相邻元素使得他们之间的差最大

1、基数排序,然后根据排序后的数组找到相差的最大值。public int maximumGap(int[] nums) { if (nums == null || nums.length < 2) { return 0; } // m is the maximal number in nums int m = nums[0]; for (int

2016-04-01 16:10:04 541

原创 数组中除一个元素外其他所有元素出现二或三次,找到只出现一次的元素

1、数组中除一个元素外其他所有元素出现二,找到只出现一次的那个元素。public int singleNumber(int[] nums) { int res = nums[0]; for (int i = 1; i < nums.length; i++) res = res ^ nums[i]; return res;

2016-04-01 10:13:39 3906

原创 将一棵二叉树按行输出

给定一个二叉树,按行从左到右输出一个树。例如按如下格式: 6 5 15 7 9 10 50 1、递归计算,感觉这种办法好傻public List<List<Integer>> levelOrder(TreeNode root) { if(root==null)return new ArrayList<List<Integer>>(); List<List<I

2016-03-31 11:47:30 591

原创 恢复一棵二叉查找树

二叉搜索树中有两个节点的值被相互交换,还原一个正常的二叉搜索树。二叉搜索树,中序遍历,每次遍历的值都会比上次遍历的值小。根据中序遍历的这个性质可以找到值错误的节点,用first表示上一次遍历的节点,用second表示当前遍历的节点,但是我们不能确定到底哪一个才是错误的节点,继续遍历,如果接下来没有发现错误的节点,则交换上次发现的两个错误节点即可。如果接下来又发现了错误的节点,则说明现在遍历的节点和f

2016-03-30 21:27:03 965

原创 判断一棵树是否是二叉查找树

判断一棵树是否是二叉查找树 利用该节点对应的最大值和最小值来判断该节点是否符合二叉查找树的性质。public boolean isValidBST(TreeNode root) { return isValidBST(root, null, null);}public boolean isValidBST(TreeNode root,Integer min, Integer max) {

2016-03-30 18:55:32 3052

原创 判断一个字符串是否是有其他两个字符串交错构成的(Interleaving String)

举个例子: s1 = “aabcc”, s2 = “dbbca”,如果 s3 = “aadbbcbcac”, return true. 如果 s3 = “aadbbbaccc”, return false.1、动态规划 public boolean isInterleave(String s1,String s2,String s3){ int s1len=s1.lengt

2016-03-30 17:56:16 1433

原创 二叉树的三种非递归遍历和morris遍历

1、先序遍历public static void printPreOrder(TreeNode node) { Queue<TreeNode> queue = new LinkedList<TreeNode>(); if (node == null) return; queue.offer(node); whil

2016-03-30 16:04:12 391

原创 打印一个含有重复元素数组的所有子集

打印一个含有重复元素数组的所有子集。例如:[1,2,2]的所有子集为[[],[1],[1,2],[1,2,2],[2],[2,2]]。1、递归求解List<List<Integer>> list=new ArrayList<List<Integer>>(); public List<List<Integer>> subsetsWithDup(int[] nums) { Lis

2016-03-30 11:37:28 1275

原创 在一个只包含0,1的二维数组中找到最大矩形的面积

1、用一个height数组表示从从上到下连续的1的高度。left,right表示当前矩形的边界。maxA = max(maxA,(right[j]-left[j])*height[j]); 例如: 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 0对第一行: l: 0 0 0 3 0 0 0 r: 7 7 7 4 7 7 7 对第二行: l: 0

2016-03-29 22:46:02 6706 2

原创 全排列问题

1、打印一个无重复元素数组的全排列public List<List<Integer>> permuteUnique(int[] nums) { List<List<Integer>> ans = new ArrayList<>(); if (nums==null || nums.length==0) { return ans; } permute(an

2016-03-28 21:56:48 402

原创 在一个字符串中查找另外一个字符串的全排列出现位置

1、在一个字符串中查找另外一个字符串任意的全排列出现位置。例如:A=”abcfsfcba”,B=”abc”,则返回{0,6}。//the des's character must be adjacent public static List<Integer> getIndex(String res,String des){ List<Integer> list=new Arr

2016-03-28 13:07:04 1738

原创 合并多个有序链表

1、维持一个最小堆,利用堆的性质每次从堆中取出一个最小值加入node中。import java.util.ArrayList;import java.util.List;public class MergeKList { public static void main(String[] args) { // TODO Auto-generated method stub

2016-03-27 15:27:03 984

原创 数组中找到2,3,n个数等于一个值

1、给定一个数组,找到数组中两个元素等于一个值。1.1、先排序,两个指针,一个指头一个指尾,遍历一遍即可找到,时间复杂度为O(nlgn)(排序的时间),空间复杂度为O(1)。1.2、利用hashmap存放当前元素对应的元素,遍历一次就可找到,时间复杂度为O(n),空间复杂度为O(n)。public static int[] getTwoSum(int []val,int target){

2016-03-26 21:07:54 541

原创 买卖股票收益最大问题

1、给定一个数组,代表每天股票的价格,买卖一次找到最大的收益。public int maxProfit(int[] prices) { if(prices==null||prices.length==0)return 0; int minVal=prices[0]; int maxProfit=0; for(int i=1;i<pric

2016-03-26 17:23:07 1974 1

原创 16年腾讯笔试模拟题

1、利用递归计算n位的格雷码greycode:二进制数据,相邻的两个元素只有一位不同public static List<String> getGreyCode(int n){ List<String> list=new ArrayList<String>(); if(n==0)return list; if(n==1){ li

2016-03-26 13:26:38 432

原创 查找有序旋转数组中的最小值

题目:给定一个有序数组,但是数组尾部的k个元素被移到了头部,查找该数组中的最小值。例如A={4,5,0,1,2},最小元素为0。1、假设数组中没有重复元素public int findMin(int[] nums) { if(nums.length==1)return nums[0]; int left=0,right=nums.length-1,mid;

2016-03-25 16:41:55 384

原创 查找数组中重复出现的元素

题目:给定一个长度为n+1的int数组,其内元素为1到n,数组中除一个元素外其他元素都只出现一次,求重复出现的元素。要求时间小于O(n^2),空间为O(1)。1、要求时间复杂度小于O(n^2),那么肯定存在一种算法时间复杂度为O(nlgn),想到二分查找。public static int findDuplicate(int[] nums) { if (nums.length == 0 ||

2016-03-25 15:24:02 2844 1

原创 给定一个数组,判断从开始能否走到结束,最多需要几步?

给定一个非负数组,数组中的元素代表从当前位置可以向后跳几步,求出从数组开始到末尾最少可以跳几次。例如:A = [2,3,1,1,4],则最少需要2步,2–>3–>4。 1、最直观,递归 public int jump(int[] nums) { if(nums.length==1)return 0; return getLen(nums,0);

2016-03-24 18:52:33 3423

原创 查找两个有序数组的中位数和第K小的数

数组中查找中位数1、将两个数组合合并并排序,查找中位数,时间复杂度为O((n+m)lg(m+n)),空间复杂度O(m+n)。2、分别比较两个数组的中位数,如果midA < midB,说明要查找的两个数在数组A的右半部分和数组B的左半部份。如果midA>midB,说明要查找的两个数在数组A的左半部分和数组B的右半部份。每次比较丢掉一半,时间复杂度为O(lg(m+n)),空间复杂度为O(1)。publi

2016-03-24 15:42:16 454

原创 一个无序整数数组中找到最长连续序列(Longest Consecutive Sequence)和两个元素使得相差最小

无序数组中查找最长连续序列: 1、最笨的方法,首先将无序数组排序,然后依次遍历查找最长连续序列。时间复杂度为O(nlgn),空间复杂度为O(1)。2、首先将元素存入HashSet,然后逐个遍历原数组。判断当前遍历的元素-1在不在set中,在就跳过,不在就以该元素为开始逐次+1,遍历是否在set中,记录最长的长度。时间复杂度为O(n),空间复杂度为O(n)。public class Solution

2016-03-24 11:04:20 5320 1

原创 Adnroid Toolbar 自定义Toolbar布局

默认调用系统的toolbar,分以下几个步骤:在布局文件中添加toolbar描述toolbar中menu的布局在代码中调用主布局文件:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"

2016-01-27 21:51:08 14873

原创 android animation解析

android的动画提供了旋转、移动、伸展和淡出等等效果 1、Alpha——淡入淡出 2、Scale——缩放 3、Rotate——旋转 4、Translate——移动 用java代码来实现动画效果如下: //1表示不透明,0表示透明(淡入淡出) AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0); //前四

2016-01-17 17:39:27 359

原创 C++文件操作

ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstream: 可同时读写操作的文件类 (由iostream引申而来) 一、打开文件 要通过一个流对象打开一个文件,我们使用它的成员函数open(): void open(const char* filename,int mode,int a

2015-12-24 16:07:43 357

转载 MPI Collective Communications

int MPI_Address(void * location, MPI_Aint * address)   得到给定位置在内存中的地址,将被废弃的函数,建议用MPI_Get_address取代int MPI_Allgather(void * sendbuff, int sendcount, MPI_Datatype sendtype, void * recvbuf, int * recvcoun

2015-10-11 17:35:12 961

原创 MPI_TYPE 相关方法

MPI_Type_extent(MPI_Datatype datatype,MPI_Aint extent) return the extent of a datatype. MPI_Type_size(MPI_Datatype datatype,int *size) return the total size,in bytes,of the entries in the type signa

2015-10-11 15:43:21 2026

转载 JAVA NIO之浅谈内存映射文件原理与DirectMemory

JAVA类库中的NIO包相对于IO 包来说有一个新功能是内存映射文件,日常编程中并不是经常用到,但是在处理大文件时是比较理想的提高效率的手段。本文我主要想结合操作系统中(OS)相关方面的知识介绍一下原理。 在传统的文件IO操作中,我们都是调用操作系统提供的底层标准IO系统调用函数 read()、write() ,此时调用此函数的进程(在JAVA中即java进程)由当前的用户态切换到内核态,

2015-09-22 20:09:49 642

原创 GC JVM垃圾回收

GC(Garbage Collector)就是JVM中自动内存管理机制的具体实现。在HotSpot中,GC的工作任务可以划分为两块,分别是内存的动态分配和垃圾回收。在进行内存动态分配之前,GC首先会对内存空间进行划分。目前几乎所有的GC都是采用分大收集算法进行垃圾回收的,所以Java堆区进一步细分的话,还可以划分为新生代(YoungGen)和老年代(OldGen),其中新生代还可以划分为Eden空间

2015-09-20 11:33:42 455

原创 JVM的内存分配原理

分配前的加载 当使用new关键字创建一个JAVA对象时,JVM首先会检查这个New指令的参数是否在常量池中定位到一个类的符号引用,然后检查与这个符号引用相对应的类是否已经成功经历过加载、解析和初始化等步骤。当类完成装载步骤之后,就已经完全可以确定出创建对象实例时所需要的内存空间大小,接下来JVM就会对其进行内存分配,以存储所生成的对象实例。 分配内存 基于分代的概念,Java的堆区还可以划分为

2015-09-20 10:28:51 1367

原创 剖析hotspot的launcher

Launcher是一种用于启动JVM进程的启动器,是一个封装了虚拟机的执行外壳,他负责装载JRE环境和Windows平台下的jvm.dll动态链接库(linux平台下则是libjvm.so。(并不是虚拟机的实现)在一个JVM的进程内部,只能执行一个指定的Java程序,也就是当执行 多个java程序时,就启动了多个JVM进程。Launcher是JVM的启动器 ,那么必然会由他负责调用HotSpot的核

2015-09-19 16:29:18 644

原创 Java 建造者模式

描述:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。“建造的内容”是由建造者实现,“建造的顺序”由指导者决定。 与抽象工厂的区别:Builder模式遵循一定的步骤一步一步的创建对象,这样一来,按照时间顺序创建对象就显得非常重要了。class

2015-09-13 11:29:23 355

转载 Java 享元模式

Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。Java中的String类型   在JAVA语言中,String类型就是使用了享元模式。String对象是final类型,对象一旦创建就不可改变。在JAVA中字符串常量都是存在常量池中的,JAVA

2015-09-13 10:59:50 328

原创 单例模式(多例,线程安全)

单例模式的本质是控制实例的个数,例如限制代码中的实例个数为确定的n个,一般情况下为1个。当然也要考虑到线程安全。

2015-09-12 20:09:17 1045

原创 MapReduce详细的工作流程(MapReduce2)

上一篇详细讲了MapReduce1的工作流程,这一篇主要讲基于YARN系统的MapReduce 2的工作流程。 对于大于4000个节点的集群来说,MapReduce1系统将会产生一个规模瓶颈,因此Yahoo在2010年开始设计下一代的MapReduce,因此产生了YARN。YARN通过把jobTracker的责任划分为几个独立的模块修复了MapReduce1的缺点。jobTracker需要管理jo

2015-07-03 15:42:18 2158 2

原创 MapReduce详细的工作流程(MapReduce1)

MapReduce详细的工作流程(MapReduce1)本文着重介绍MapReduce详细的工作流程,这些知识可以让你更深刻的理解Mapreduce,编写MapReduce项目。MapReduce Job运行剖析如果一个Job还没提交的话,可以通过运行submit()或者waitForCompletion()方法来运行一个MapReduce Job。在Hadoop 0.20及以上的版本中,mapr

2015-07-02 21:10:46 2181

数学之美扫描版

数学之美

2016-09-05

android mvp demo

详细信息请看博客 http://blog.csdn.net/guoyuguang0/article/details/45127631

2015-04-19

空空如也

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

TA关注的人

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