java
文章平均质量分 69
sanfendi
这个作者很懒,什么都没留下…
展开
-
空格字符串匹配
最近做中文分词的程序,其中分出来空格的字符串,想着用正则表达式匹配一下,再将其去除,但是用的"\\s+","\\s*"等都不行,最后在论坛上求助,得到了解决办法。public static boolean isNull(String str) { if (null == str || "".equals(str)) { return true;原创 2013-11-29 22:58:09 · 1485 阅读 · 0 评论 -
数据结构之优先级队列、堆及堆排序
优先级队列是一个抽象数据类型,它提供删除插入、最大(最小)关键字值数据项的方法,其主要目的是对极值提供便利的访问。优先级队列可以用有序数组来实现,也可以用队列来实现。堆,是一种树,由其实现优先级队列的插入删除操作的时间复杂度都是O(logN)。堆是有如下特点的二叉树:1.是完全二叉树。即,除了树的最后一层节点不是满的,其他的每一层都必须是满的。2.堆中的每一个节点都满足堆的原创 2014-03-06 08:48:19 · 2520 阅读 · 0 评论 -
数据结构之哈希表的java实现
哈希表是一种数据结构,提供快速的插入和查找功能。哈希表基于数组存储数据,因此能在O(1)时间内定位数据。关键字值通过哈希函数映射为数组下标。缺点就是数组创建后容量固定,如果数据较多需要不断扩展其长度。如何将关键字转换为数组下标?这个操作是通过哈希函数完成的。比如,下面就是一个简单的哈希函数,int hash(int key){return key % array.length;//通过原创 2014-03-06 08:46:12 · 5656 阅读 · 0 评论 -
最小二乘法线性回归函数编码实现
以前在统计学的学习中,有回归分析,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析,最小二乘法可根据给定的数据拟合出一条近似的直线。package cn.zhf.test;/** * 最小二乘法 线性回归 y = a*x + b * * b = sum( y ) / n - a * sum( x ) / n * * a =原创 2014-03-10 10:19:51 · 2216 阅读 · 0 评论 -
用Jsoup做“爬虫”
Jsoup是一个开源的解析html的类库,非常好用,亦可用来获取html源文件。利用Jsoup也可以轻松将一个网站全部抓取下来。我的思路是这样的:1.抓取网站的导航页面,将导航链接解析出来存好。2.顺着导航链接获取导航分类的页面数。3.抓取分类页面并解析具体文章链接。4.抓取具体文章页面并解析内容。这样要求目标站点结构清晰,分类明确。下面是一个简单示例:package原创 2014-03-10 10:50:21 · 2382 阅读 · 0 评论 -
基于朴素贝叶斯的垃圾邮件检测
package cn.zhf.test;import java.io.*;import java.util.*;public class SpamMailDetection { public static final String BASE_PATH = "C:\\Users\\zhf\\Desktop\\mail"; public static final String原创 2014-03-10 09:15:21 · 3851 阅读 · 2 评论 -
数据结构之图的Java实现
图G由两个集合V和E组成,记为:G=(V,E),其中:V是顶点的有穷非空集合,E是V中顶点偶对(称为边)的有穷集。通常,也将图G的顶点集和边集分别记为V(G)和E(G)。E(G)可以是空集。若E(G)为空,则图G只有顶点而没有边。图有两种存储结构:邻接矩阵和邻接表。邻接矩阵:用邻接矩阵表示顶点间的相邻关系, 用一个顺序表来存储顶点信息。邻接表:类似于树的孩子链表表示法。对于图G中的每个顶点vi,该原创 2014-03-10 09:59:30 · 5929 阅读 · 0 评论 -
哈夫曼编码
package cn.zhf.test;import java.util.Comparator;import java.util.NoSuchElementException;public class HuffmanTree { final int SIZE = 256; public static void main(String[] args) {原创 2014-03-10 10:04:17 · 1608 阅读 · 0 评论 -
汉诺塔问题的递归实现
汉诺塔是根据一个传说形成的一个问题:有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:每次只能移动一个圆盘;大盘不能叠在小盘上面。提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须遵循上述两条规则。package cn.zhf.test;public class HanoiTower原创 2014-03-10 10:32:32 · 2170 阅读 · 0 评论 -
java 中的Map存取对象
先创建一个类,其中有文本和计数两个属性。package cn.zhf.test;public class Word { private String text; private int count; /** * @return text */ public String getText() { return text; } /** * @param text セ原创 2013-11-22 19:44:24 · 3880 阅读 · 0 评论 -
数据结构之链表的Java实现
链表:一种离散存储数据的方式,每一个数据块包含一个数据和对下一个数据的引用,首结点无前驱,末结点无后继。链表不按顺序存储,所以插入和删除操作效率很高(O(1)),仅需要改变一两个引用值,不需要移动和复制数据,但是查找效率很低,因为要遍历整个链表。链表是一种自我指示数据类型,因为它包含指向另一个相同类型的数据的指针(链接)。使用链表存储数据的另一个优点就是需要多少内存就有多少,而数组的大小在创建时就原创 2014-03-05 09:47:49 · 1864 阅读 · 0 评论 -
数据结构之二叉树的Java实现
树由边连接的节点构成。节点一般代表实体数据,如代表某一类数据。windows文件系统就可以看成是一棵树,比如C盘下有一些文件夹,这些文件夹下面又分别有一些文件夹,这样的关系其实就是一棵树。根:树顶端的节点称为树的根,一棵树只有一个根。父节点:每一个节点(除了根)都有一条边向上连接到另一个节点,上面的这个节点就称为下面节点的父节点。子节点:与父节点相反。子树:每个节点都可以作为子树的原创 2014-03-05 10:23:06 · 2019 阅读 · 0 评论 -
DataSource和JNDI
JDBC API 为连接池提供了一个客户端和一个服务器端的接口。 客户端接口是 javax.sql.DataSource, 通常就是应用代码用来请求一个缓冲了的数据库连接的东西。 服务器接口是javax.sql.ConnectionPoolDataSource, 通常是大多数应用服务器和 MysqlSQL JDBC 驱动打交道的接口。初始化连接池DataSource的代码:原创 2014-02-26 21:53:44 · 3671 阅读 · 0 评论 -
冒泡排序
现实生活中很多地方都用到了排序,比如全班成绩排名,在人数、次数都较少的情况下,完全可以手动排序。在上中小学时候,经常帮老师批阅试卷并进行整理,最后需要排名次登分数。为了快速完成工作,一般我是这样做的,将所有试卷分别放在几张桌子上成一览,从中找出分数最低的作为第一张,找出第二低的放其上,直到全部回收完毕。这样的速度是很快的,但是我的试卷也小,最高不超过72张。如果按照冒泡排序的做法来做的话,就应原创 2014-02-28 09:19:06 · 1398 阅读 · 0 评论 -
插入排序
插入排序:从待排序数组中,取出第一个数,认为其就是一个有序的数组;取第二个数,与第一个比较,若小于第一个,则交换;取第三个数,依次与前两数比较…直到排序完成。总结来说就是:取出下一个元素,在已经排序的元素序列中从后向前扫描,比较大小并交换位置。package cn.zhf.sort;public class InsertSort { public static int[] inser原创 2014-02-28 09:23:39 · 1438 阅读 · 0 评论 -
选择排序
选择排序:首先选取一个最小值作为比较的基准,一般选择第一个元素,作为排序结果的第一位,然后依次从未排序的数组中取出元素与之比较,若比其小则交换位置,并将基准更新,否则不作任何操作。由上可看出,选择排序对于已是正确顺序的数组,交换0次,对于逆序的数组,则交换n-1次。下面是Java实现的选择排序:package cn.zhf.sort; public class SelectSort {原创 2014-02-28 09:20:40 · 1296 阅读 · 0 评论 -
快速排序
快速排序:采用分而治之的策略。1.先从数组中取出一个数作为基准数。2.一趟排序之后,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。package cn.zhf.sort;public class QuickSort { public static void main(String[] args) {原创 2014-02-28 09:21:59 · 1401 阅读 · 0 评论 -
数据结构之双向链表的Java实现
单链表只能从前往后遍历,如果链表的长度较大,遍历到链表后半部分的时候想要往前查找,就只能回到开头,重新遍历了。双向链表提供了这个能力,即允许前向遍历,也允许后向遍历整个链表。原因是双向链表的每个节点都有两个指向其他节点的引用。但这也是其缺点,因为在插入、删除的时候需要处理四个链接点的引用, 占用的空间也大了一些。如将头节点和尾节点链接起来,即成为双向循环链表。下面是java代码:原创 2014-03-05 10:21:16 · 2143 阅读 · 0 评论 -
数据结构之栈的java实现
栈:一种仅允许在一端进行插入和删除操作的线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来),允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表(LIFO,原创 2014-03-05 09:01:01 · 1534 阅读 · 0 评论 -
数据结构之队列的java实现
队列在计算机术语中使用queue,和list(排)其实是一个意思。队列也是一种数据结构,类似于栈,只是与栈相反,在队列中最先插入的数据也最先被移除,即先进先出(FIFO,First In First Out)。队列可以理解成排队,比如,食堂窗口排的队,越在前面的,越早得到服务而先离开。在银行大厅的排号的机器也许就用了队列这个数据结构。在打印的时候,有“添加到队列”的选项,队列应用是很广泛的。队原创 2014-03-05 09:06:47 · 2355 阅读 · 0 评论 -
用Java向MySQL中插入HTML代码
最近想把爬虫抓取到的网页数据插入的数据库中保存以便方便处理,但是无奈一直就是插入失败。最后研究发现,其实就是一个简单的双引号问题,只要把双引号转义,就可以插入到数据库中。 比如,网页上的一段链接是这样写的:xxx;我们只要处理其中的这一段就可以了:"http://csdn.net/zh";这一段用字符串表示就是这样: String str = "\"http://csdn.ne原创 2014-03-25 09:02:56 · 4758 阅读 · 0 评论