- 博客(48)
- 收藏
- 关注
原创 快速排序复习
网上抄来抄去的博客乱七八糟的太多了,标准的写法,实现一个partition函数和一个sort函数。partition函数负责寻找每次的分割点,sort函数负责递归调用左右分段。partition函数需要传入一个初始选定的轴心下标,将其交换到数组末尾, 锚定一个分组下标(初始从最左边开始) 然后从数组左边到 [末尾-1] 的所有数字可以遍历一次来进行分组, 碰到比轴心值小的,就和锚定值交换,锚定下标往右移动,最后返回锚定的下标。上层sort函数对返回的锚定下标进行左右分组的sort,就完成
2021-08-01 15:57:16 174
原创 Leetcode 138 和 Java的深拷贝
今天做到leetcode的138题,题目是返回一个拥有随机指针的链表的深拷贝。由于我是用Java做的,先深入复习一下Java的对象拷贝机制。Java类型和浅拷贝Java的类型分为值类型和引用类型。其中值类型包括所有的基本类型,char, boolean, int, double, float, long, short, byte。其他的类、接口、枚举和数组等都是引用类型。...
2020-01-30 19:24:20 395
原创 Bloom Filter (布隆过滤器) 介绍以及简单的Java实现
定义布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。从简单的定义可以看出,使用布隆过滤器目的是为了优化元素查找的性能,不过布隆过滤器提升的是得到这个元素(key)的存在性的性能。...
2020-01-01 18:09:03 1027 4
原创 Java获取Cookie特殊字符处理
今天在工作中遇到一个问题,用request对象getCookies的时候,发现如果Cookie的value里面带有一些特殊字符,是会在request中就被过滤掉,从而缺失特殊字符后面的内容。去查了一下,是因为RFC规范中规定了Cookie中不允许带有一些特殊字符,例如这一串:{ '\t', ' ', '\"', '(', ')', ',', ':', ';', '', '=', '>',
2016-07-13 23:11:27 4161 2
原创 Mongodb上一次非正常关闭后修复
rm -rf /data/mongodb/data/puf_sfap/mongod.lockrm -rf /data/mongodb/data/puf_sfap/WiredTiger.lock/data/mongodb/bin/mongod --repair -f /data/mongodb/config/mongod.conf -nojournal --repairpath /data/mo
2016-04-07 12:03:20 3643 1
原创 搭mongodb+zookeeper+kafka环境
先说最简单的mongodb1.解压mongodb的包2.启动命令为 ./bin/mongod --config ./config/mongod.conf需要主意的点:修改mongod.conf中的内容与mongodb文件的解压目录(*path)要匹配systemLog: destination: file path: /home/mongodb/log/mongod.l
2016-01-26 15:06:30 4517
原创 《算法导论》代码搬运工--堆排序
最近买了本中文版的《算法导论》,打算系统的看一下基础的算法,并尽量的实现一下书上的代码例子。书很厚,内容很多,有简单的也有难懂的,所以打算开一个新的系列,长期不定时的加入新的内容,就叫《算法导论》代码搬运工系列。代码基本都是用java实现的,实现语言并不重要,java和C的语法差别也并不大。这一篇来搬运一个基础的排序算法:堆排序。堆排序:顾名思义,就是用堆来实现排序的功能,那么在堆排序之前
2015-10-12 10:52:56 1206
原创 BitMap算法
对大量数据(超过内存上限的数据)的排序,典型的有外部排序,但是如果对不重复数据排序,还可以用bitmap算法。bitmap算法的思想就是用一个整型的32位中的每一位去记录一个数,所以,每一个整型可以记录32个数,这样可以大大的节省空间,更加官方的解释有很多博客都有记载,更可以参考《编程珠玑》。这里贴一下java的代码,都使用位运算。public class Bitmap { sta
2015-09-23 12:38:30 927
原创 二叉树系列--层序遍历(java实现)
记录两道题目:第一题:计算二叉树的深度,两行递归即可搞定。public static int level(Node root) { if (root == null) return 0; return level(root.left) + 1 > level(root.right) + 1 ? level(root.left) + 1 : level(root.rig
2015-09-19 19:52:02 6423
原创 非递归遍历二叉树--java实现
经典数据结构--二叉树的遍历递归遍历二叉树只有三行代码,特别容易理解且特别容易实现,但是非递归就没有那么的一目了然,不过其实就是把递归的做法平铺开来而已。下面来看每一种顺序的做法。先序遍历:也就是先访问根节点,再左孩子,再右孩子。如何做呢,用手在纸上画一颗简单的二叉树,你会发现,先序遍历的顺序就是从根节点开始,一直访问左孩子,直到叶子(无孩子),然后访问这个叶子的父亲的右孩子(可能是子二叉
2015-09-17 17:35:46 606
原创 java的四种引用
很多详细的东西在网上都可以找到,因为这个问题在面试中被提到过,所以特此做一个简单的笔记。java中有四种引用的方法(按照从强到弱):第一种:强引用,也就是一般的对象引用。特点是不管在什么时候,此引用的对象都不会被垃圾回收,JVM会在堆满的时候抛异常,也不会回收。。。第二种:软引用,使用格式:SoftRefrence o = new SoftRefrence(); 只要内存空间足够,就不
2015-09-05 22:53:53 620
原创 网易校园招聘java面试经历
之前投过阿里,无奈缺乏实战经验,算法能力也不够出众,面试的时候没什么可说的被刷。这次被通知过了电话面试,所以就去了现场面。这是我第一次过了所有轮的技术面最后面了HR面的经历,所以对我挺有意义的,所以想写下来。先说说之前的电话面吧,接到电话的时候我刚刚坐飞机在浦东机场降落,所以跟面试官约了第二天上午,第二天上午电话准时响起。网易的电面不像阿里的一样会有较长的前戏,当时阿里电面跟我聊了很多我研
2015-09-01 10:39:44 6583 7
原创 Tomcat能够在eclipse里启动,但是不能访问首页的问题
今天在使用eclipse的时候发现一个问题,就是我在eclipse里面已经启动了tomcat,部署上去的项目也可以启动,但是就是没法访问tomcat的首页,端口等等都没有问题。后来查到解决方案,在这里记录一下:1.进入控制台(console)标签旁边的服务器标签(server)2.双击已经存在的server3.把里面server locations这个选项卡里面 specify t
2015-07-13 15:22:24 745
原创 MongoDB中对象反序列化的一个小问题
今天在mongoDB存取对象数据的时候,碰到一个小问题:对象的某一个字段类型是抽象类或者接口,在存入的时候没有问题,但是在读取的时候,由于没有具体类的信息,无法完成对象的重新构建,就会报错:Can not construct instance of com.bp.samples.json.generics.xxx, problem: abstract types either need to
2015-07-07 16:13:09 4607 1
原创 leetcode:Isomorphic Strings (java)
记录一道hashtable的题,用两次互相的字符(s[i])到字符(t[i])映射记录,然后按照映射还原比较就可以判断是否相同,开始以为只有字母,后来发现是ascii码表长度的alphabet才可以~public static boolean isIsomorphic(String s, String t) { char[] alph1 = new char[128];
2015-05-05 12:23:43 800
原创 leetcode: Reverse Linked List(java)
哎呀,糟了,leetcode又有easy题了,好久没上,直接在网站上A了。题目就是把一个链表倒过来。。。public ListNode reverseList(ListNode head) { if(head == null)return null; ListNode preNode = null; ListNode curNo
2015-05-05 11:49:55 724
原创 leetcode: Remove Linked List Elements(java)
Remove all elements from a linked list of integers that have value val.ExampleGiven: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6Return: 1 --> 2 --> 3 --> 4 --> 5Credits:Special than
2015-04-24 14:42:59 806
原创 leetcode: Happy Number
题意:Write an algorithm to determine if a number is "happy".A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of th
2015-04-22 12:38:04 1070
原创 leetcode:Path Sum II
又一道DFS题,题意如下:Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.For example:Given the below binary tree and sum = 22, 5
2015-04-08 01:51:55 525
原创 leetcode:Populating Next Right Pointers in Each Node
一道DFS的题目,题意如下:Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.An example is the root-to-leaf path 1->2->3 which represents the number 1
2015-04-08 00:55:29 514
转载 Java类生命周期详解--转载
最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前国内java方面的教材大多只是告诉你“怎样做”,但至于“为什么这样做”却不多说,所以造成大家在基础和原理方面的知识比较匮乏,所以笔者今天就斗胆来讲一下这个问题,权当抛砖引玉,希望对在这个问题上有疑惑的朋友有所帮助,文中有说的不对的地方,也
2015-03-29 15:44:28 494
原创 重载和重写
长话短说。重载(overloading):相同的函数名,必须具有不同的参数列表,返回值可同可不同。最常见的是同一个类的不同参数列表的构造函数。重写(overriding):也称覆盖。必须具有相同的函数名和参数列表以及返回值,改变方法体。最常见的就是子类覆盖父类方法,使用子类实例调用方法时,调用的是子类的方法。
2015-03-21 00:06:19 567
原创 JAVA的抽象类与接口
首先用我自己的理解,来描述一下我对java中的接口(狭义上的)和抽象类的理解。先来看接口,形如:public interface IncrementTool { public int increment(int a);}在接口中,我们定义方法的名称、参数列表和返回类型,但是没有方法的实现。然后我们可以写一些类去实现这个接口:public class Increment1 imp
2015-03-09 23:49:39 491
原创 Spring配置web.xml文件时遇到的问题
Could not open ServletContext resource [/WEB-INF/petstore-servlet.xml]这是我第一次试验spring第一个页面跳转时候碰到的问题,其实一个拼写错误的问题,在xml中 petstore org.springframework.web.servlet.DispatcherServlet
2015-02-28 21:38:35 674
转载 哈希的原理
哈希的原理和代价 哈希表和哈希函数是大学数据结构中的课程,实际开发中我们经常用到Hashtable这种结构,当遇到键-值对存储,采用Hashtable比ArrayList查找的性能高。为什么呢?我们在享受高性能的同时,需要付出什么代价(这几天看红顶商人胡雪岩,经典台词:在你享受这之前,必须受别人吃不了的苦,忍受别人受不了的屈辱),那么使用Hashtable是否就是一桩无本万
2015-02-26 14:24:58 811
原创 leetcode: Triangle
题意:Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.For example, given the following triangle[ [2], [3
2015-02-16 00:20:08 555
原创 leetcode majority element
题目:Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is non-empty and the majority
2015-02-14 20:33:08 474
原创 java中String的相等判断(==和equals())详解
以前只是一直用equal来判断字符串变量是不是和某个定值相等,知道这样比较稳妥,但是我想有必要说说清楚这其中的原理。首先,引入java常量池的概念,也就是编译的时候,常量们会被确定在.class文件中,虽然String不是8种java常量之一,是一种对象,但是如果用如下的赋值,还是会成为常量。比如:String str1 = "cityu";String str2 = "cityu"
2015-02-12 14:59:41 22700 4
转载 小问题记录:JAVA String.split
引用其他博主的一片博文,学习一下split的用法:原文地址http://yangzb.iteye.com/blog/1824761在java.lang包中有String.split()方法,返回是一个数组。 1、“.”和“|”都是转义字符,必须得加"\\"; 如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用Strin
2015-02-12 14:47:37 535
转载 NIO入门详解
NIO 入门JDK 1.4 中引入的新输入输出 (NIO) 库在标准 Java 代码中提供了高速的、面向块的 I/O。本实用教程从高级概念到底层的编程细节,非常详细地介绍了 NIO 库。您将学到诸如缓冲区和通道这样的关键 I/O 元素的知识,并考察更新后的库中的标准 I/O 是如何工作的。您还将了解只能通过 NIO 来完成的工作,如异步 I/O 和直接缓冲区。
2015-02-11 16:54:41 884
原创 JAVA多线程
什么SOCKET,RMI都不想说了,我只想说,多线程如果发现有的线程好像被阻塞了,那么赶快调试一下,很有可能你根本就只启动了一个线程。而原因很有可能就是,我今天碰到的问题:在new线程的时候,千万不要用实名变量,一定要用匿名变量去run或者start,不然就只有一个线程会启动。别问我怎么知道的T T。
2015-02-11 01:31:59 474
转载 github版本库使用详细教程(命令行及图形界面版)
Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目前,包括 Rubinius和Merb在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用。如前所述,作为一个分布式的版本控制系统,在Git中并
2015-02-05 10:50:31 955
原创 leetcode unique BST
Given n, how many structurally unique BST's (binary search trees) that store values 1...n?For example,Given n = 3, there are a total of 5 unique BST's. 1 3 3 2 1 \
2015-02-03 13:40:55 840
原创 动态规划 最大子数组
这是一个经典的动态规划问题,之前一直懵懵懂懂,今日看了不少解释和理解,终于看到了一种让我彻底理解的方法。首先,问题是,求一个给定数组的一个连续子数组,和最大,给定数组的元素可正可负。既然是动态规划,就是不放假设已知当前最优解,求接下来的最优解。有一件很容易理解的事情,就是------- 一个数加上一个正数,会变大,一个数加上一个负数,会变小。在这里,这个被加上去的数,就是当前已经得
2015-01-30 16:17:42 962
原创 最长回文子串 leetcode 05 DP解法
找出最长回文子串,马上想到了用DP,用 dp[ i ][ j ] = 1表示s[ i ]----s[ j ]是一个回文串 dp[ i ][ j ] = 0就表示s[ i ]---[ j ]为非回文,方程可以表示为 if(s[ i ]==s[ j ]) dp[ i ][ j ] = dp[ i+1 ][ j-1 ],其实也可以明确为,前一个子串是回文串的,当前才继续做判断,否则直接不管,可
2015-01-26 14:44:17 1528
原创 OpenCV图像匹配 (image retrieval)理论篇
前段时间,非常不幸的在wap面试中没有做出第二题,题目太简单了,我都不好意思在这里说,只是当时太紧张了,脑子有点短路,时间太短,直接
2014-11-24 22:43:22 2504 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人