自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (1)
  • 收藏
  • 关注

原创 java RMI原理解析

RMI,远程方法调用(Remote Method Invocation)是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。RMI是非常容易使用的,但是它非常的强大。  RMI的基础是接口,RMI构架基于一个重要的原理:定义接口和定义接口的具体实现是分开的。下面我们通过具体的例子,建立一个简单的远程计算服务和使用它的客户程序一个正常工作的RMI系统由下

2013-11-29 15:56:19 1009

原创 javah

javah - C 头文件和 stub 文件生成器javah 从 Java 类生成 C 头文件和 C 源文件。这些文件提供了连接胶合,使 Java 和 C 代码可进行交互。 用法:javah [选项] 其中 [选项] 包括:         -help                 输出此帮助消息并退出           -classpath      用于装入类的路

2013-11-29 15:13:43 824

原创 常用算法复杂度比较

下面是不同排序算法的时间复杂度,你可以去wiki看一下这些算法的基本思想。AlgorithmAverage TimeWorst TimeSpace冒泡排序n^2n^21选择排序n^2n^21Counting Sortn+kn+kn+kInsertion sortn^2n^2 

2013-11-29 11:35:12 947

原创 编程面试的10大算法概念汇总

以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念。由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍。本文将从Java的角度看问题,包含下面的这些概念:1. 字符串2. 链表3. 树4. 图5. 排序6. 递归 vs. 迭代7. 动态规划8. 位操作9. 概率问题10. 排列组合1. 字符串如果IDE没

2013-11-29 11:04:11 628

原创 动态规划算法基本原理

动态规划一般也只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。简单地说,问题能够分解成子问题来解决。动态规划算法分以下4个步骤:1.描述最优解的结构2.递归定义最优解的值3.按自底向上的方式计算最优解的值   //此3步构成动态规划解的基础。4.由计算出的结果构造一个最优解。 

2013-11-28 23:09:47 5461

原创 java之Semaphore

Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。比如在Windows下可以设置共享文件的最大客户端访问个数。Semap

2013-11-28 21:50:39 558

原创 Hadoop ObjectWritable类的实现浅析

针对Java基本类型、字符串、枚举、Writable、空值、Writable的其他子类,ObjectWritable提供了一个封装,适用于字段需要使用多种类型。ObjectWritable可应用于Hadoop远程过程调用(将在第4章介绍)中参数的序列化和反序列化;ObjectWritable的另一个典型应用是在需要序列化不同类型的对象到某一个字段,如在一个SequenceFile的值中保存不同类型

2013-11-28 21:34:15 2047

原创 处理海量数据常用算法

分而治之/hash映射 + hash统计 + 堆/快速/归并排序;双层桶划分Bloom filter/Bitmap;Trie树/数据库/倒排索引;外排序;分布式处理之Hadoop/Mapreduce

2013-11-28 09:56:41 843

原创 java concurrent包浅析

在JDK 1.4以下只有Vector和Hashtable是线程安全的集合(也称并发容器,Collections.synchronized*系列也可以看作是线程安全的实现)。从JDK 5开始增加了线程安全的Map接口ConcurrentMap和线程安全的队列BlockingQueue(尽管Queue也是同时期引入的新的集合,但是规范并没有规定一定是线程安全的,事实上一些实现也不是线程安全的,比如Pr

2013-11-27 22:50:31 686

原创 java中的FileFilter接口如何使用

public File[] listFiles(FileFilter filter)返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。除了返回数组中的路径名必须满足过滤器外,此方法的行为与 listFiles() 方法相同。如果给定filter 为 null,则接受所有路径名。否则,当且仅当在路径名上调用过滤器的 FileFilter.accept(

2013-11-26 22:39:35 3121

原创 java实现字符串的匹配

假设我们有一个一定个数的字母组成字串,我给每个字母分配一个素数,从2开始,往后类推。这样A将会是2,B将会是3,C将会是5,等等。现在我遍历第一个字串,把每个字母代表的素数相乘。你最终会得到一个很大的整数,对吧?    然后——轮询第二个字符串,用每个字母除它。如果除的结果有余数,这说明有不匹配的字母。如果整个过程中没有余数,你应该知道它是第一个字串恰好的子集了。思路总结如下:1.定义

2013-11-25 09:38:38 1949

原创 java杨氏矩阵查找算法

在一个m行n列二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。定位法,时间复杂度O(m+n)。首先直接定位到最右上角的元素,再配以二分查找,比要找的数(6)大就往左走,比要找数(6)的小就往下走,直到找到要找的数字(6)为止,如下图所示 代码如下pac

2013-11-23 20:13:25 1076

原创 java线性时间寻找第k小元素

package contcurrentandalgorithm;import java.util.Random;/** * * @author Administrator * zyyjiao@mail.ustc.edu.cn */public class SelectKMinAndMax {    public static void main(String[] a

2013-11-23 15:01:29 1863

原创 java谢尔排序

选择排序的优化 package contcurrentandalgorithm;/** * * @author Administrator * zyyjiao@mail.ustc.edu.cn */public class ShellSort {    public static void main(String[] args) {        int a

2013-11-23 11:39:46 813

原创 java双向划分的快速排序

双向划分避免所有元素都相等时候的最坏情况package contcurrentandalgorithm;/** * * @author Administrator * zyyjiao@mail.ustc.edu.cn */public class Sort3 {    public static void main(String[] args) {       

2013-11-23 11:15:38 999

转载 hadoop1.2.1+zookeeper-3.4.5+hbase-0.94.1集群安装

一,环境:1,主机规划:集群中包括3个节点:hadoop01为Master,其余为Salve,节点之间局域网连接,可以相互ping通。机器名称IP地址hadoop01192.168.1.31hadoop02192.168.1.32hadoop03192.1

2013-11-22 23:05:23 1248

原创 Thread.yield()

api中解释: 暂停当前正在执行的线程对象,并执行其他线程。    注意:这里的其他也包含当前线程,所以会出现以下结果。 package concurent;/** * * @author Administrator * zyyjiao@mail.ustc.edu.cn */public class Test extends Thread {    pu

2013-11-22 21:45:46 808

原创 java快速排序

O(nlog(n)时间和O(logn)的栈空间package contcurrentandalgorithm;/** * * @author Administrator * zyyjiao@mail.ustc.edu.cn */public class QSort {    public static void main(String[] args) {  

2013-11-22 15:04:20 625

原创 java 插入排序

插入排序         要找到合适的位置,需要判断前一个元素比t小而后一个元素比t大。然后将t插入正确位置。         比较a[j-1]  跟 a[j] 的关系很关键package contcurrentandalgorithm;/** * * @author Administrator * zyyjiao@mail.ustc.edu.cn */pu

2013-11-22 14:47:59 681

原创 java并发里常用的注解Annotation

Java并发编程中,用到了一些专门为并发编程准备的 Annotation。主要包括三类:1、类 Annotation(注解)就像名字一样,这些注解是针对类的。主有要以下三个:@Immutable@ThreadSafe@NotThreadSafe@ThreadSafe 是表示这个类是线程安全的。具体是否真安全,那要看实现者怎么实现的了,反正打上这个标签只是表示一下。不线程

2013-11-21 21:58:06 1147

原创 URIs, URLs, and URNs

首先,URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。而URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。而URN,uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:java-ne

2013-11-21 19:45:51 921

原创 java实现最大子序列问题——————性能最优的算法

问题:求一维数组中连续子向量的最大和。       例如:{3,4,-2,-9,-10,8,-1,22}则最大连续子向量的和 为 8+(-1)+22=29 package xiancheng;/** * * @author Administrator zyyjiao@mail.ustc.edu.cn */public class Scan {    pu

2013-11-21 15:09:09 946

原创 Java 中使用内存映射文件需要考虑的 10 个问题

java中的内存映射IO和内存映射文件是什么?内存映射文件非常特别,它允许Java程序直接从内存中读取文件内容,通过将整个或部分文件映射到内存,由操作系统来处理加载请求和写入文件,应用只需要和内存打交道,这使得IO操作非常快。加载内存映射文件所使用的内存在Java堆区之外。Java编程语言支持内存映射文件,通过java.nio包和MappedByteBuffer 可以从内存直接读写文件。

2013-11-21 08:54:37 976

原创 NIO.2 Path和Java已有的File类

java7 提供了两个方法  可以实现Path和File之间的转换   1.java.io.File类里新增了toPath()方法  马上就可以把已有的File转换为Path  2.Path类里有个toFile()方法  马上就可以把已有的Path转换为File

2013-11-20 22:00:57 1123

原创 java里怎么解决文件系统的软连接问题

问题:假设在*nix系统里/usr/log目录下    你想找log1.txt   但是  其实/usr/log只是一个指向/application/log的一个软连接  那里才是存放日志文件的位置   怎么解决???  答案:要得到准确的位置就要去掉冗余的信息  在java7里  要弄明白文件的位置  首先可以使用normalize()方法去掉Path的冗余信息 Path  no

2013-11-20 21:56:30 6022 1

原创 java7新特性--------final重抛

try{    doSomethingWhichMightThrowIOException();    doSomeThingWhichMightThrowSQLException()}catch(final  Exception e){......throw e}final表明抛出的异常就是实际遇到的异常  这就是final重抛   这样就不会抛出笼统的异常了  避免

2013-11-20 21:30:31 1386

原创 jmap命令的使用

1、介绍打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。使用方法 jmap -histo pid。如果连用SHELL jmap -histo pid>a.log可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。jmap -d

2013-11-20 17:12:46 965

原创 TCP链接定位消息的方法

1.定长的消息:通信双方发送的消息是定长的2.基于定界符:消息的结束由唯一的标志给出、3.显示长度:在具体的消息前面添加一个固定的长度

2013-11-20 15:59:43 973

原创 java几种常见的动态代理的原理及其实现

代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为两种。 静态代理:由

2013-11-20 10:49:07 5337

原创 实现争抢cpu的调度的算法

1、队列方式,先来先服务。不管是什么任务来了都要按照队列排队先来后到。2、时间片轮转,这也是最古老的cpu调度算法。设定一个时间片,每个任务使用cpu的时间不能超过这个时间。如果超过了这个时间就把任务暂停保存状态,放到队列尾部继续等待执行。3、优先级方式:给任务设定优先级,有优先级的先执行,没有优先级的就等待执行。    这三种算法都有优缺点,实际操作系统是结合多种算法,保证优先级的能

2013-11-20 09:28:59 1995

原创 单线程与多线程的比较

假设有100个数据要处理   下面分别采用单线程和多线程进行来对比分析  说明采用多线程的好处单线程的代码如下package xiancheng;import java.util.Vector;/** * * @author Administrator * zyyjiao@mail.ustc.edu.cn */public class OneMain {  

2013-11-20 09:24:17 1823

原创 ubuntu12.04安装R语言

#sudo gedit  /etc/apt/sources.list添加#deb http://mirrors.ustc.edu.cn/CRAN/bin/linux/ubuntu/ precise/#sudo apt-get update#sudo apt-get install r-base#sudo apt-get install r-base-dev

2013-11-19 21:40:48 1150 1

原创 org.apache.hadoop.io.compress源码解读

/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements.  See the NOTICE file * distributed with this work for additional information * regardi

2013-11-19 17:01:29 1148

转载 用Maven构建Mahout项目

Hadoop家族系列文章 ,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括,YARN, Hcatalog, Oozie, Cassandra, Hama, Whirr, Flume, Bigtop, Crunch, Hue等。 从2

2013-11-19 10:54:53 1246

原创 mahout learning 代码示例

Introductionpackage mia.recommender.ch02;//=分析导入包可以看出mahout的包分为主要类以及它们的实现类=import org.apache.mahout.cf.taste.impl.model.file.*;import org.apache.mahout.cf.taste.impl.neighborhood.*;import org.

2013-11-19 10:10:58 1049

原创 R学习总结

数值型:整形、单精度实型、双精度实型字符型复数型逻辑型缺失的数据默认是NAInf表示+∞    -Inf表示-∞Nan表示不是数字的值可以通过函数mode()知道对象的类型可以通过函数length()知道对象的长度                                                                  数据对象及类型

2013-11-18 22:17:39 1523

原创 java7 、Fork/Join 框架原理

Fork/Join框架中的”工作窃取(Work stealing)”Fork/Join框架在java.util.concurrent包中加入了两个主要的类:* ForkJoinPool* ForkJoinTaskForkJoinPool类是ForkJoinTask实例的执行者,ForkJoinPool的主要任务就是”工作窃取”,其线程尝试发现和执行其他任务创建的子任务。ForkJo

2013-11-18 20:49:56 2098

原创 CountDownLatch

CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。主要方法public CountDownLatch(int count);public void countDown();对记数器减一public void await() throws InterruptedException上记数器到0之前一直等待

2013-11-18 19:43:35 839

翻译 mahout之协调推荐----------------(二)

协同过滤 —— Collaborative Filtering协同过滤简单来说就是根据目标用户的行为特征,为他发现一个兴趣相投、拥有共同经验的群体,然后根据群体的喜好来为目标用户过滤可能感兴趣的内容。协同过滤推荐 —— Collaborative Filtering Recommend协同过滤推荐是基于一组喜好相同的用户进行推荐。它是基于这样的一种假设:为一用户找到他真正感兴趣的内

2013-11-14 21:51:03 931

翻译 Mahout推荐算法基础

Mahout主要推荐算法  Mahout推荐算法分为以下几大类GenericUserBasedRecommender算法:1.基于用户的相似度2.相近的用户定义与数量特点:1.易于理解2.用户数较少时计算速度快 GenericItemBasedRecommender算法:1.基于item的相似度特点:1.item较少时就算速度更快2.

2013-11-14 21:46:36 1237

高级数据库课后答案

这是课后答案,没有必要在上课讲这些东西了,作为助教也就是抄答案的,所以大家下载了以后直接自己看,效果会更好,欢迎下载

2013-11-26

空空如也

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

TA关注的人

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