`
文章列表

ALS学习算法

一、矩阵分解模型。 用户对物品的打分行为可以表示成一个评分矩阵A(m*n),表示m个用户对n各物品的打分情况。如下图所示: 其中,A(i,j)表示用户user i对物品item j的打分。但是,用户不会对所以物品打分,图中?表示用户没有打分的情况,所以这个矩阵A很多元素都是空的,我们称其为“缺失值(missing value)”。在推荐系统中,我们希望得到用户对所有物品的打分情况,如果用户没有对一个物品打分,那么就需要预测用户是否会对该物品打分,以及会打多少分。这就是所谓的“矩阵补全(填空)”。 ALS 的核心就是下面这个假设:打分矩阵A是近似低秩的。换句话说,一个 

中文乱码问题

    博客分类:
  • JAVA
  new String(word.getBytes("ISO-8859-1"), "UTF-8");    

Canal概述

背景    早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日 ...
对于现在流行的深度学习,保持学习精神是必要的——程序员尤其是架构师永远都要对核心技术和关键算法保持关注和敏感,必要时要动手写一写掌握下来,先不用关心什么时候用到——用不用是政治问题,会不会写是技术问 ...
网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备......)。 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现"API First"的设计思想。RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。   一、协议 API与用户的通信协议,总是使用HTTPs协议。 二、域名 应该尽量将API部署在专用域名之下。 https://api.example.com

线程池与阻塞队列

    博客分类:
  • JAVA
前言     上一篇文章中我们将ThreadPoolExecutor进行了深入的学习和介绍,实际上我们在项目中应用的时候很少有直接应用ThreadPoolExecutor来创建线程池的,在jdk的api中 有这么一句话“但是,强烈建议程序员使用较为方便的 Executors 工厂方法Executors.newCachedThreadPool()(无界线程池,可以进行自动线程回收)、 Executors.newFixedThreadPool(int)(固定大小线程池)和 Executors.newSingleThreadExecutor()(单个后台线程),它们均为大多数使用场景预定义了设置 ...
1.Hadoop的序列化格式介绍:Writable   要了解和编写MR实现排序必须要知道的第一个知识点就是Writable相关的接口和类,这些是HADOOP自己的序列化格式。更 多的可能是要关注他的Subinterfaces:WritableComparable<T>。他是继承Writable和 Comparable<T>接口,继而WritableComparable<T>的实现除了具有序列化特性,更重要的是具有了 比较的特性,而比较的特性在MapReduce里是很重要的,因为MR中有个基于键的排序过程,所以可以作为键的类型必须具有 Comparab ...
      Hive的数据分为表数据和元数据,表数据是Hive中表格(table)具有的数据;而元数据是用来存储表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。下面分别来介绍。   一、Hive的数据存储   在让你真正明白什么是hive 博文中我们提到Hive是基于Hadoop分布式文件系统的,它的数据存储在Hadoop分布式文件系统中。Hive本身是没有专门的数据存储格式,也没 有为数据建立索引,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据。所以往Hive表里面导入数据只是简单的将数 据移动到表所在的目录中(如 ...
mysql各个存储引擎概述:innodb存储引擎:[/color][/b] 面向oltp(online transaction processing)、行锁、支持外键、非锁定读、默认采用repeaable级别(可重复读)通过next-keylocking策略避免幻读、插入缓冲、二次写、自适应哈希索引、预读myisam存储引擎:不支持事务、表锁、全文索引、适合olap(在线分析处理),其中myd:放数据文件,myi:放索引文件ndb存储引擎:集群存储引擎,share nothing,可提高可用性memory存储引擎:数据存放在内存中,表锁,并发性能差,默认使用哈希索引archive存储引擎:只 ...
在开始这篇blog之前应该先了解几个概念: 临界区:     保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么 在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到用原子方式操 作共享资源的目的。 互斥量:     互斥量跟临界区很相似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了任何情况下此共享资源都不会同时被多个线程所访问。当前占据资源的线程在任务处理完后应将拥有的互斥对象交出,以便其 ...

Zookeeper原理

1 Zookeeper的基本概念 1.1 角色 Zookeeper中的角色主要有以下三类,如下表所示: 系统模型如图所示: 1.2 设计目的 1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。 2 .可靠性 ...

JVM内存模型

    博客分类:
  • JAVA
JVM运行时的内存结构图: 直接内存:     直接内存并不是jvm运行时数据区的一部分,所建议它不受jvm内存总大小的限制。个人理解直接内存就是物理机可用的内存空间。 程序计数器:     程序计数器是每一个线程所独有的一个很小的内存区域,并不是多线程所共享的共享区域。它可以被看成是字节码指令执行的指针,线程的分支,循环,跳转,异常处理,线程恢复等功能都要依赖这个计数器来完成。如果当前线程正在执行的是一个java方法,那么程序计数器指向这个字节码指令的地址,如果当前执行的是一个本地方法,则程序计数器的指向为空。 java虚拟机栈:     与程序计数器一样,java虚拟机栈也是线程私有的, ...

Storm简介

诞 生   在2011年Storm开源之前,由于Hadoop的火红,整个业界都在喋喋不休地谈论大数据。Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据。但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂。   有需求也就有创造,在Hadoop基本奠定了大数据霸主地位的时候,很多的开源项目都是以弥补Hadoop的实时性为目标而被创造出来。而在这个节骨眼上Storm横空出世了。   Storm带着流式计算的标签华丽丽滴出场了,看看它的一些卖点: 分布式系统:可横向拓展,现在的项目不带个分布式特性都不好意思开源。 运维简单:Stor ...
1.CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 Web SSO )。CAS 开始于 2001 年, 并在 2004 年 12 月正式成为 JA-SIG 的一个项目。 1.2.  主要特性

Kafka存储模型

    博客分类:
  • JAVA
引言   Kafka中的Message是以topic为基本单位组织的,不同的 topic之间是相互独立的。每个topic又可以分成几个不同的partition(每个topic有几个partition是在创建topic时指定 的),每个partition存储一部分Message。借用官方的一张图,可以直观地看到topic和partition的关系。   partition是以文件的形式存储在文件系统中,比如,创建了一个名 为page_visits的topic,其有5个partition,那么在Kafka的数据目录中(由配置文件中的log.dirs指定的)中就有这样 5个目录: page ...
Global site tag (gtag.js) - Google Analytics