自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

想作会飞的鱼的博客

以大多数人的努力程度之低,根本轮不到拼天赋!

  • 博客(269)
  • 收藏
  • 关注

原创 基于Hadoop的好友推荐系统项目综述

一、好友推荐系统项目概述1、项目介绍该系统利用基于密度的新型聚类算法,对给定用户基于好友推荐。本系统的开发IDE采用eclipse,使用maven构建项目,数据库选用Mysql,后台技术采用Struts2+Hibernate+Spring的架构,前端使用Easyui+Ajax的技术实现前后端的数据交互,算法的主要计算任务用Hadoop Mapreduce来完成。综合来说,本系统面临的主要挑战如下:

2017-07-15 14:06:30 11969 6

原创 走向云计算系列文章总索引

0、注意:本系列文章均没有涉及相关环境和系统的搭建,关于环境搭建还请参考其他资料。1、走向云计算之Hadoop基本介绍及生态系统2、走向云计算之HDFS详解3、走向云计算之Hadoop YARN的基本原理和运行流程4、走向云计算之MapReduce原理和运行流程详解5、走向云计算之MapReduce应用案例详解6、走向云计算之MapReduce的代码辅助优化和改善7、走向云计算之HBase的基本原理

2017-06-24 15:13:34 668

原创 商城项目基本介绍

主要技术后端技术:spring、SpringMVC、Mybatis前端技术:JSP、JSTL、jQuery、Ajax、EasyUI、KindEditor(富文本编辑器)、CSS+DIV缓存技术:Redis(缓存服务器)消息队列:RabbitMQ搜索技术:Solr(搜索)远程调用技术:httpclient(调用系统服务)数据库:MySQL服务器: Nginx(web服务器)和tomca

2017-06-02 20:33:45 44728 9

原创 java设计模式之综述

一、什么是设计模式设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描

2017-03-21 11:33:19 451

原创 JDK动态代理的实现和原理解析(基于JDK1.7)

一、什么是代理代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。详细介绍请参考:java设计模式之代理模式。为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委

2017-08-29 20:18:17 6820 8

原创 LinkedHashMap源码剖析(基于JDK1.7)

一、LinkedHashMap简介LinkedHashMap是HashMap的一个子类,它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用LinkedHashMap。 LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变(扩容时映射顺序会重

2017-08-24 11:31:18 846

原创 HashMap源码解析(基于JDK1.7)

一、HashMap简介哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理就是基于此。那么什么是哈希表呢? 在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O

2017-08-23 17:15:45 6721 5

原创 LinkedList源码解析(基于JDK1.7)

一、LinkedList简介LinkedList的内部实现是双向链表,它继承了AbstractSequentialList,实现了List, Deque, Cloneable, Java.io.Serializable接口,因此LinkdeList本身支持就支持双端队列操作。LinkedList可以存储所有元素(包括 null)。LinkedList可以用作堆栈、队列或双端队列的实现。其内部链表的实

2017-08-23 11:04:20 520

原创 ArrayList源码解析(基于JDK1.7)

一、ArrayList简介ArrayList是可以动态增长和缩减的索引序列,它是基于数组实现的List类。ArrayList的用法和Vector向类似,但是Vector是一个较老的集合,具有很多缺点,不建议使用。另外,ArrayList和Vector的区别是:ArrayList是线程不安全的,当多条线程访问同一个ArrayList集合时,程序需要手动保证该集合的同步性,而Vector则是线程安全的。

2017-08-22 21:37:15 825 1

原创 Java网络编程:TCP的socket编程

一、Java中的网络编程协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构、交换方式、包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP协议族有IP协议、TCP协议和UDP协议。现在TCP/IP协议族中的主要socket类型为流套接字(使用TCP协议)和数据报套接字(使用UDP协议)。TCP协议提供面向连接的服务,通过它建立的是可靠地连接。Java为TCP协议提供了两个类:So

2017-08-18 17:02:53 3067 2

原创 多线程交替打印ABC的多种实现方法

一、题目描述建立三个线程A、B、C,A线程打印10次字母A,B线程打印10次字母B,C线程打印10次字母C,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印。二、Synchronized同步法1、基本思路使用同步块和wait、notify的方法控制三个线程的执行次序。具体方法如下:从大的方向上来讲,该问题为三线程间的同步唤醒操作,主要的目的就是ThreadA->Thre

2017-08-17 16:43:12 45091 25

原创 深入理解Session和cookie原理

一、概述Session 与 Cookie 的作用都是为了保持访问用户与后端服务器的交互状态。它们有各自的优点,也有各自的缺陷,然而具有讽刺意味的是它们的优点和它们的使用场景又是矛盾的。例如,使用 Cookie 来传递信息时,随着 Cookie 个数的增多和访问量的增加,它占用的网络带宽也很大,试想假如 Cookie 占用 200 个字节,如果一天的 PV 有几亿,它要占用多少带宽?所以有大访问量的时

2017-08-11 17:14:46 5534 1

转载 Servlet工作原理解析

转载自:http://www.cnblogs.com/wade-luffy/p/5936234.htmlWeb 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础。要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servlet 容器的关系有点像枪和子弹的关系,枪是为子弹而生,而子弹又让枪有了杀伤力。虽然它

2017-08-11 15:31:14 695

原创 JavaWeb的编码问题深入分析

一、为什么要进行编码编码问题一直困扰着程序开发人员,尤其是在 Java 中更加明显,因为 Java 是跨平台的语言,在不同平台的编码之间的切换较多。要对Java Web项目进行编码原因如下: 1、在计算机中存储信息的最小单位是1个字节,即8个bit,所以能表示的字符范围是0~255个。 2、电脑需要表示的符号(例如各国语言字符)太多(总数超过255)、所以无法用1个字节完全表示需要的符号。 要

2017-08-11 10:44:20 446

原创 Java设计模式的常见应用场景

一、Java I/O中的设计模式1、适配器模式适配器模式就是把一个类的接口变换成客户端所能接受的另一种接口,从而使两个接口不匹配而无法在一起工作的两个类能够在一起工作。通常被用在一个项目需要引用一些开源框架来一起工作时,这些框架的内部都有一些关于环境信息的接口,需要从外部引入,但是外部的接口不一定能匹配,在这种情况下,就需要适配器模式来转换接口。 Java的I/O类库中有许多这样的需求,如将字

2017-08-10 16:20:23 46449 6

原创 Mybatis中Mapper动态代理的实现原理

一、概述我们知道,Mybatis实现增删改查需要进行XML的配置,其基本的配置如下:<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

2017-07-28 10:42:19 25073 8

原创 Java NIO学习二

一、NIO的异步方式异步 I/O 是一种 没有阻塞地 读写数据的方法。通常,在代码进行 read() 调用时,代码会阻塞直至有可供读取的数据。同样,write() 调用将会阻塞直至数据能够写入。另一方面,异步 I/O 调用不会阻塞。相反您将注册对特定 I/O 事件的兴趣,包括可读的数据的到达、新的套接字连接,等等,而在发生这样的事件时,系统将会告诉您。异步 I/O 的一个优势在于,它允许您同时根据大

2017-07-25 14:59:32 306

原创 Java NIO学习一

一、NIO概述NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。 NIO主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector。传统IO基于字节流和字符流进行操作,而NIO基于Channel和Buffer(缓冲区)进行操作,数据总是从通道读取到缓冲区中,或者从

2017-07-24 22:59:40 368

原创 Java中的浅克隆和深克隆

一、为什么要实现克隆为什么需要克隆对象?直接new一个对象不行吗? 首先我们需要明白克隆的对象可能不是新建出来的对象,它包含一些已经修改过的属性(比如修改成员变量的值),而new出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的“状态”就靠clone方法了。 那么我把这个对象的临时属性一个一个的赋值给我新new的对象不也行嘛?可以是可以,但是过程十分繁琐。 而且我们常

2017-07-24 16:29:18 330

原创 Java的序列化和反序列化

一、什么是序列化简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周

2017-07-24 15:47:38 415

原创 数据库的隔离级别以及悲观锁和乐观锁详解

一、事务四大属性分别是原子性、一致性、隔离性、持久性。1、原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。2、一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。举例来说,假

2017-07-17 21:17:42 10380 3

原创 堆结构和堆排序的Java实现

一、什么是堆堆是一棵顺序存储的完全二叉树。关于完全二叉树的定义,其实十分简单。我们都知道满二叉树,也就是所有非叶子结点的节点必有左右两个子节点的树。对于一个完全二叉树而言,如果按照从上到下、从左到右的顺序遍历这棵树,如果遍历的顺序和其对应的满二叉树(把非满的节点用一个预设值填满)完全一致的话,那么这棵树就是完全二叉树。一个通俗的描述就是:一棵树除了最后一层之外的其他每一层都被完全填充,并且所有

2017-07-17 14:16:24 307

原创 Java中父类和子类中的方法调用和参数传递探讨

有这样一段程序,看看它会输出什么结果public class Test { public static void main(String [] args){ System.out.println(new B().getValue()); } static class A{ protected int value;

2017-07-16 00:56:10 10849

原创 Hadoop好友推荐系统-推荐结果查询

一、前端展示1、jsp页面page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+req

2017-07-14 09:44:26 1421 2

原创 Hadoop好友推荐系统-聚类中心及占比查看

一、前端展示1、jsp页面input class="easyui-validatebox" type="text" id="group_input_id" data-options="required:true" style="width:300px" value="WEB-INF/classes/centervector.dat" />

2017-07-14 09:42:34 810

原创 Hadoop好友推荐系统-组别数据入库

一、前端展现1、jsp页面 table> tr> td>label for="name">分类数据路径:label> td> td>input class="easyui-validatebox" type="text"

2017-07-14 09:41:21 550

原创 Hadoop好友推荐系统-执行分类算法

一、前端展示1、jsp页面 table> tr> td>label for="name">输入路径:label>td> td>input class="easyui-validatebox" type="text" i

2017-07-14 09:40:27 1172

原创 Hadoop好友推荐系统-寻找聚类中心

一、前端展示1、jsp页面 table> tr> td>label for="name">局部密度阈值:label> td> td>input class="easyui-validatebox" type="text" i

2017-07-14 09:38:59 753

原创 Hadoop好友推荐系统-画出决策图

一、前端展示1、jsp页面 div style="margin:10px 0 40px 0;">div> div style="padding:20px 20px;"> div style="padding-left: 30px;font-size: 15px;padding-top:10px;">br> 此页面用于寻找聚类中心,看图找到聚类中心的范

2017-07-13 09:36:33 2207

原创 Hadoop好友推荐系统-执行聚类算法

一、执行聚类算法1、前端展示jsp页面form id="formid" method="post"> table> tr> td>label for="name">输入路径:label>td> td>input class="easyui-vali

2017-07-13 09:35:29 1172

原创 Hadoop好友推荐系统-寻找最佳DC

一、寻找最佳DC1、前端展示jsp页面div style="padding-left: 30px;font-size: 20px;padding-top:10px;"> table> tr> td>label for="name">输入路径:label> td>

2017-07-13 09:33:25 795

原创 Hadoop好友推荐系统-用户距离计算

一、用户距离计算1、前端展示jsp页面 table> tr> td>label for="name">输入路径:label> td> td>input class="easyui-validatebox" type="text"

2017-07-13 09:32:25 898

原创 Hadoop好友推荐系统-数据库过滤数据到HDFS

数据库过滤数据到HDFS1、前端展示jsp页面 table> tr> td>label for="name">输出路径:label> td> td>input class="easyui-validatebox" type="text"

2017-07-13 09:31:44 814

原创 Hadoop好友推荐系统-去重后的数据存入数据库

一、去重后的数据存入数据库1、前端展示jsp页面table> tr> td>label for="name">输入路径:label>td> td>input class="easyui-validatebox" type="text"

2017-07-12 21:51:46 976

原创 Hadoop好友推荐系统-原始数据去重操作(包含MapReduce任务监控)

MapReduce任务实时监控实现1、前端展示jsp页面当我们启动一个MapReduce任务后,后台会自动打开一个监控页面,其jsp页面如下: table> tr> td>label for="name">所有任务个数:label>td> td>input class="ea

2017-07-12 21:50:10 2060 2

原创 Hadoop好友推荐系统-HDFS的文件上传和下载

文件上传到HDFS的实现1、前端展示jsp页面 table> tr> td>label for="name">输入路径:label> td> td>input class="easyui-validatebox" type="text"

2017-07-12 21:48:58 1196 1

原创 Hadoop好友推荐系统-数据表的初始化

数据表的初始化数据表的初始化action层:/** * 初始化表 */public void initialTable(){ boolean initRet = false; if("LoginUser".equals(tableName)){//初始登录表 initRet=dBService.insertLoginUser(); }

2017-07-12 21:47:54 985

原创 Hadoop好友推荐系统-项目架构搭建和用户登陆的实现

项目总目录:基于Hadoop的好友推荐系统项目综述一、创建Maven项目创建一个Maven web项目(即war项目),引入依赖如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:

2017-07-12 21:23:35 2484

原创 基于密度的聚类算法(Clustering by fast search and find of density peaksd)

一、概述“Clustering by fast search and find of density peaks”(下面简称CFDP)是在《Science》期刊上发表的的一篇论文,论文中提出了一种非常巧妙的聚类算法-基于密度的聚类算法。虽然文章出来后遭到了许多人的质疑,但是作为一个小白,该算法的思想是非常值得学习的。新聚类算法的基本思想很新颖,且简单明快,值得学习。下面将对该算法的基本原理进行介绍,

2017-07-11 15:54:12 19884 6

原创 K-Means算法的Hadoop实现

一、MapReduce实现K-Means算法的基本流程1、Map每读取一条数据就与所有选定的中心做对比,求出该条记录对应的中心,然后以中心的ID为Key,该条数据为value将数据输出。2,利用reduce的归并功能将相同的Key归并到一起(因为map把中心的ID作为key,所以在reduce端时数据已经按照各自的中心分好了组,这是MapReduce框架自动完成的),集中与该Key对应的数

2017-07-09 19:47:18 5354 2

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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