自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

if(true){ I love it }

留下积累的每一份知识

  • 博客(176)
  • 资源 (49)
  • 收藏
  • 关注

转载 美团技术团队 Quartz应用与集群原理分析

美团技术团队 Quartz应用与集群原理分析原文地址:http://www.icartype.com/?p=140一、问题背景美团CRM系统中每天有大量的后台任务需要调度执行,如构建索引、统计报表、周期同步数据等等,要求任务调度系统具备高可用性、负载均衡特性,可以管理并监控任务的执行流程,以保证任务的正确执行。二、历史方案美团CRM系统的任务调度模块经历了以下历史方案。1. Crontab+SQL每天晚上运行定时任务,通过SQL脚本+crontab方式执行,例如,#crm0 2 *

2018-03-21 14:40:24 1443

转载 使用 Redis 搭建电商秒杀系统

使用 Redis 搭建电商秒杀系统原文:https://help.aliyun.com/document_detail/63920.html 背景秒杀活动是绝大部分电商选择的低价促销、推广品牌的方式。不仅可以给平台带来用户量,还可以提高平台知名度。一个好的秒杀系统,可以提高平台系统的稳定性和公平性,获得更好的用户体验,提升平台的口碑,从而提升秒杀活动的最大价值。本文讨论云数据库 Redis 版缓存设计高并发的秒杀系统。秒杀的特征秒杀活动对稀缺或者特价的商品进行定时定量售卖,吸引成大量

2018-03-01 15:56:59 5466

转载 Spark性能优化:shuffle调优

Spark性能优化:shuffle调优 原文地址:https://www.iteblog.com/archives/1672.html《Spark性能优化:开发调优篇》《Spark性能优化:资源调优篇》《Spark性能优化:数据倾斜调优》《Spark性能优化:shuffle调优》文章目录1 shuffle调优1.1 调优概述1.2 ShuffleManager发展概述1.3 HashShuffle

2018-01-19 16:25:00 1806

转载 Spark性能优化:数据倾斜调优

Spark性能优化:数据倾斜调优 原文地址:https://www.iteblog.com/archives/1671.html《Spark性能优化:开发调优篇》《Spark性能优化:资源调优篇》《Spark性能优化:数据倾斜调优》《Spark性能优化:shuffle调优》文章目录1 前言2 数据倾斜调优2.1 调优概述2.2 数据倾斜发生时的现象2.3 数据倾斜发生的原理2.4 如何定位导致数据

2018-01-19 16:19:04 751

转载 Spark性能优化:资源调优篇

Spark性能优化:资源调优篇 原文地址:https://www.iteblog.com/archives/1659.html《Spark性能优化:开发调优篇》《Spark性能优化:资源调优篇》《Spark性能优化:数据倾斜调优》《Spark性能优化:shuffle调优》  在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为

2018-01-19 16:00:44 932

转载 Spark性能优化:开发调优篇

Spark性能优化:开发调优篇《Spark性能优化:开发调优篇》《Spark性能优化:资源调优篇》《Spark性能优化:数据倾斜调优》《Spark性能优化:shuffle调优》  在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学习、图计算等各种不同类型的计算操作,应用范围与前景非常广泛。  然而,通过Spark开发出高性能的大数据计算作业,并不是那么简单的。如果没有对Spark作业进

2018-01-19 15:43:24 790

转载 JDK7与JDK8中HashMap的实现

原文:https://my.oschina.net/hosee/blog/618953JDK7中的HashMapHashMap底层维护一个数组,数组中的每一项都是一个Entrytransient Entry[] table;我们向 HashMap 中所放置的对象实际上是存储在该数组当中; 而Map中的key,value则以Entry的形式存放在数组中static class EntryK,V> i

2018-01-18 20:47:11 382

转载 JDK1.7与JDK1.8中ConcurrentHashMap原理总结

原文:https://my.oschina.net/hosee/blog/675884并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力,但同时降低了对读一致性的要求(这点好像CAP理论啊 O(∩_∩)O)。ConcurrentHashMap的设计与实现非常精巧,大量的利用了volatile,final,CAS等loc

2018-01-18 20:37:10 2204

转载 Kafka深度解析

原文链接 http://www.jasongj.com/2015/01/02/Kafka深度解析背景介绍Kafka简介  Kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输同时支持离线数据处理和实时数据处

2018-01-02 10:37:45 481

原创 八.SpringBoot集成实例系列-持久化jpa

文章列表本系列将通过实例分别实现Springboot集成mybatis(mysql),mail,mongodb,cassandra,scheduler,redis,kafka,shiro,websocket。具体文章系列如下:一.SpringBoot集成实例系列-xml型单数据源mybatis二.SpringBoot集成实例系列-xml型多数据源mybatis三.SpringBoot集成实例系列-注解型单数据源mybatis四.SpringBoot集成实例系列-注解型多数据源mybatis五

2017-12-04 15:13:54 3220

转载 SQL优化:一篇文章说清楚Oracle Hint的正确使用姿势

SQL优化:一篇文章说清楚Oracle Hint的正确使用姿势作者介绍韩锋,宜信技术研发中心数据库架构师。精通多种关系型数据库,曾任职于当当网、TOM在线等公司,曾任多家公司首席DBA、数据库架构师等职,多年一线数据库架构、设计、开发经验。著有《SQL优化最佳实践》一书。原文地址:http://dbaplus.cn/news-10-669-1.html 一、提示(Hint)概述 1为什么引入Hint? Hint是Oracle数据库中很有特色的一个功能,是很多DBA优化中经常采用的一个手段

2017-11-14 11:00:26 610

原创 SpringMVC+Spring+mybatis+redis项目从零开始--Springmvc配置实现

一、SSM项目-Springmvc配置实现上几章我们简单介绍了SSM项目工程结构、SSM相关配置和集成Redis实现等,本章将实现Springmvc等相关配置,同时通过简单的文件上传、图片上传等实例。1.     Springmvc简介Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进

2017-10-19 14:58:41 9052 3

原创 SpringMVC+Spring+mybatis+redis项目从零开始--redis缓存策略和配置实现

三.SSM项目-redis缓存策略和配置实现 距离上两篇文章已过去蛮久了,为了响应各位网友的需求,最近把这个系列重新整理下。如有不足之处,请指正。本章将实现redis缓存策略和Spring集成redis配置。1. Redis简单介绍redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset --有序集合)和hash(哈希类型)。这些数据类型都支持pu

2017-10-19 14:34:21 26573 12

转载 缓存更新的套路

原文地址:https://coolshell.cn/articles/17416.html?spm=5176.100239.0.0.wgNzgk看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。

2017-10-16 18:31:43 589

原创 七.SpringBoot集成实例系列-多数据源mongodb+lombok(二)

文章列表本系列将通过实例分别实现Springboot集成mybatis(mysql),mail,mongodb,cassandra,scheduler,redis,kafka,shiro,websocket。具体文章系列如下:一.SpringBoot集成实例系列-xml型单数据源mybatis二.SpringBoot集成实例系列-xml型多数据源mybatis三.SpringBoot集成实例系列-注解型单数据源mybatis四.SpringBoot集成实例系列-注解型多数据源mybatis五

2017-10-15 11:10:13 4969

原创 七.SpringBoot集成实例系列-多数据源mongodb(一)

文章列表本系列将通过实例分别实现Springboot集成mybatis(mysql),mail,mongodb,cassandra,scheduler,redis,kafka,shiro,websocket。具体文章系列如下:一.SpringBoot集成实例系列-xml型单数据源mybatis二.SpringBoot集成实例系列-xml型多数据源mybatis三.SpringBoot集成实例系列-注解型单数据源mybatis四.SpringBoot集成实例系列-注解型多数据源mybatis五

2017-10-14 14:15:58 14982 1

原创 六.SpringBoot集成实例系列-单数据源mongodb(权限控制)

文章列表本系列将通过实例分别实现Springboot集成mybatis(mysql),mail,mongodb,cassandra,scheduler,redis,kafka,shiro,websocket。具体文章系列如下:一.SpringBoot集成实例系列-xml型单数据源mybatis二.SpringBoot集成实例系列-xml型多数据源mybatis三.SpringBoot集成实例系列-注解型单数据源mybatis四.SpringBoot集成实例系列-注解型多数据源mybatis五

2017-09-13 17:47:14 2289

原创 Oracle goldengate 实现mysql到kafka同步配置

一.oracle goldengate技术架构Oracle GoldenGate 实现原理是通过抽取源端的redo log 或者 archive log ,然后通过TCP/IP投递到目标端,最后解析还原应用到目标端,使目标端实现 同源端数据同步。图1-1 是Oracle GoldenGate 的技术架构。其中target接受的容器包含:kafka,hbase,hdfs,关系数据库等.二. 准备在实现oracle goldengate 同步配置前,小求认为你已安装了一下环境1. jdk配置

2017-08-18 10:17:57 4992 2

原创 五.SpringBoot集成实例系列-邮件email文章列表

文章列表本系列将通过实例分别实现Springboot集成mybatis(mysql),mail,mongodb,cassandra,scheduler,redis,kafka,shiro,websocket。具体文章系列如下:一.SpringBoot集成实例系列-xml型单数据源mybatis二.SpringBoot集成实例系列-xml型多数据源mybatis三.SpringBoot集成实例系列-注解型单数据源mybatis四.SpringBoot集成实例系列-注解型多数据源mybatis五

2017-07-29 16:43:10 3460

原创 四.SpringBoot集成实例系列-注解型多数据源mybatis

文章列表本系列将通过实例分别实现Springboot集成mybatis(mysql),mail,mongodb,cassandra,scheduler,redis,kafka,shiro,websocket。具体文章系列如下:一.SpringBoot集成实例系列-xml型单数据源mybatis二.SpringBoot集成实例系列-xml型多数据源mybatis三.SpringBoot集成实例系列-注解型单数据源mybatis四.SpringBoot集成实例系列-注解型多数据源mybatis五

2017-07-18 19:59:43 3120

原创 三.SpringBoot集成实例系列-注解型单数据源mybatis

文章列表本系列将通过实例分别实现Springboot集成mybatis(mysql),mail,mongodb,cassandra,scheduler,redis,kafka,shiro,websocket。具体文章系列如下:一.SpringBoot集成实例系列-xml型单数据源mybatis二.SpringBoot集成实例系列-xml型多数据源mybatis三.SpringBoot集成实例系列-注解型单数据源mybatis四.SpringBoot集成实例系列-注解型多数据源mybatis五

2017-07-18 19:15:10 1279

原创 spring-sparkstreaming-kafka10集成实现和疑难杂症解决

一.前期准备1.开发环境window7eclipsejdk1.82.linux环境zookeeper-3.4.8hadoop-2.6.4spark-1.6.0scala-2.10.6kafka_2.10-0.10.1.0各环境的安装和部署请自行准备。二.疑难杂症1. spark+scala+kafka版本要一致2. org.apache.sp

2017-07-10 19:54:30 7557 12

原创 二.SpringBoot集成实例系列-xml型多数据源mybatis

文章列表本系列将通过实例分别实现Springboot集成mybatis(mysql),mail,mongodb,cassandra,scheduler,redis,kafka,shiro,websocket。具体文章系列如下:SpringBoot集成实例系列-xml型单数据源mybatisSpringBoot集成实例系列-xml型多数据源mybatisSpringBoot集

2017-07-02 11:05:03 3297 1

原创 一. SpringBoot集成实例系列-xml型单数据源mybatis

文章列表本系列将通过实例分别实现Springboot集成mybatis(mysql),mail,mongodb,cassandra,scheduler,redis,kafka,shiro,websocket。具体文章系列如下:一.SpringBoot集成实例系列-xml型单数据源mybatis二.SpringBoot集成实例系列-xml型多数据源mybatis三.SpringBoot集成实例系列-注解型单数据源mybatis四.SpringBoot集成实例系列-注解型多数据源mybatis五.

2017-07-02 11:04:40 1974

原创 springboot配置文件大全

springboot配置文件详解# LOGGINGlogging.config= # Location of the logging configuration file. For instance `classpath:logback.xml` for Logbacklogging.exception-conversion-word=%wEx # Conversion word used when logging exceptions.logging.file= # Log file name.

2017-06-29 16:27:34 3819

原创 ORACLE实现Job定时计划任务

在ORACLE数据库操作中,有时候我们需要定时的执行某些存储过程。那oracle如何实现呢?从ORACLE 10.1版本开始,ORACLE开发了一个新的包DBMS_SCHEDULER。这个包就能帮解决我们的定时计划任务的问题。一. 新增job1. job创建实例BEGIN DBMS_SCHEDULER.CREATE_JOB(JOB_NAME => 'JOB_EXWH_BPARTNER_STATIC', JOB_TYPE => 'PLSQ

2017-06-29 15:05:12 1314

原创 Springboot+Mybatis+Maven+Oracle+Cassandra+事务(Aop)+定时任务实现

本文将通过示例介绍Springboot,mybatis,maven,oracle,cassandra,事务,定时任务等框架的集成,因此业务不会复杂,供学习使用。一.基础知识1. SpringbootSpring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application

2017-06-09 12:51:10 3930

转载 资深架构师教你一篇文看懂Hadoop

作者:陈 飚“昔我十年前,与君始相识”一瞬间Hadoop也到了要初中择校的年龄了。十年前还没有Hadoop,几年前国内IT圈里还不知道什么是Hadoop,而现在几乎所有大型企业的IT系统中有已经有了Hadoop的集群在运行了各式各样的任务。2006年项目成立的一开始,“Hadoop”这个单词只代表了两个组件——HDFS和MapReduce。到现在的10个年头,这个单词代表的是“核心”(即Core Hadoop项目)以及与之相关的一个不断成长的生态系统。这个和Linux非常类似,都是由一个核心和一个生态

2017-06-01 16:23:41 4721

原创 Spark Streaming+kafka订单实时统计实现

前几篇文章我们分别学习Spark RDD和PairRDD编程,本文小编将通过简单实例来加深对RDD的理解。一.前期准备开发环境:window7+eclipse+jdk1.7部署环境:linux+zookeeper+kafka+hadoop+spark本实例开发之前,默认已搭好了开发环境和部署环境,如果未搭建,可以参考本人相关大数据开发搭建博客。二.概念理解Spark Streaming 是Spark核心API的一个扩展,可以实现高吞吐量的、具备容错机制的实时流数据的处理。支持从多种数据源获取数据

2017-06-01 08:50:29 11717 3

原创 完美解决Spark应用日志级别设置

最近在研究Spark的相关知识,本地搭建了一个开发环境Windows7+Eclipse+JDK1.7。一. 日志效率原因开发时,控制台输出一大堆日志信息,严重影响查看日志效率。从控制台输出日志我们可以看出,应用程序是默认加载Spark-core包下面的log4j-defaults.properties日志文件。查看log4j-defaults.properties文件由上图可知,Spark-core包设置默认的日志级别为info,所以我们才看到一大堆日志信i息。那针对以上问题,在开发过程中我

2017-06-01 08:50:10 41262 4

原创 linux中sqoop实现hive数据导入到mysql

上一篇文章我们简单的介绍《http://blog.csdn.net/a123demi/article/details/72742553》,本文将简单介绍如何通过sqoop把hive数据导入到mysql。一. 前期准备实践本文内容,默认您已经安装和部署了hadoop,mysql,hive,sqoop等环境。如相关安装和部署有问题,可以参考《http://blog.csdn.net/a123demi/article/details/72742553》。二. sqoop实现hdfs文件导出2.1 hi

2017-06-01 08:48:21 10271

原创 linux中sqoop部署以及实现mysql数据导入hive

Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。下

2017-05-25 19:42:48 2388

原创 linux中hive安装和部署详解

一.前期准备1.1 hadoop版本:Hadoop 2.6.5安装:http://blog.csdn.net/a123demi/article/details/706529591.2 mysql版本:5.6.33 MySQL Community Server (GPL)1.3 mysql驱动包版本:mysql-connector-java-5.1.40-bin.jar1.4 hive安装包官网下载:apache-hive-2.1.1-bin.tar.gz二.hive安装2

2017-05-25 19:30:49 21265 2

转载 Apache kafka 工作原理介绍

消息队列消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上, 队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。在分布式计算环境中,为了集成分布式应用,开发者需要对异构网络环境下的分布式应用提供有效的通信手段。为了管理需要共享的信息,对应用提供公共的信息交换机制是重要的。常用的消息队列技术是 Message Queue。Message Queue 的通讯模式点对点通讯:点对点方式是最为

2017-05-24 09:22:42 782

原创 linux集成 kafka数据通过flume发送到hadoop

上一篇文章《 linux安装flume和集成kafka测试》,我们介绍了flume安装和集成数据到kafka,本篇文章我们将集成kafka,flume,hadoop,通过flume发送kafka数据到hadoop的hdfs文件。一.前期准备1.1 hadoop安装版本:Hadoop 2.6.5安装: linux hadoop完全分布式集群搭建图文详解1.2 zookeeper安装版本:zookeeper-3.4.9安装: linux zookeeper3.4.9集群搭建图文详解1.3

2017-05-23 16:08:23 4022

原创 linux安装flume和集成kafka测试

一.前期准备1.1 kafka+zookeeper集群环境以安装1.2 下载flume本文使用flume1.7下载地址:http://flume.apache.org/download.html二.配置flume2.1 上传flume#上传下载包至/opt/softwarecd /opt/softwarerz apache-flume-1.7.0-bin.tar.gz#解压tar -zxvf apache-flume-1.7.0-bin.tar.gz#复制apache-flume-1

2017-05-23 11:31:55 4335 1

原创 Spark学习—PairRDD编程

PairRDD:键值对RDD,其是Spark中转化操作常用的数据类型。上一篇文件《》我们就使用了PairRDD。PairRDD是很多程序的构成要素,因为他提供了并行操作或跨节点重新进行数据分组的操作接口。本文将结合Java示例讲解PairRDD相关接口操作。PairRDD创建 很多存储键值对的数据格式会在读取时直接返回其键值对数据组成的pair RDD,同时也可以调用map()函数来实现,传递的函数需要返回键值对。 对应Java创建PairRDD,由于Java没有自带的二元组类型,因此Spark的J

2017-05-16 13:29:22 2923

原创 Spark学习—统计文件单词出现次数

上一节我们简单介绍了RDD中转化和执行操作的用法,本节将通过一个具体的示例来加深对RDD的认识。一.需求统计本地文件中单词出现次数二.操作流程1.读取外部文件创建JavaRDD;2.通过flatMap转化操作切分字符串,获取单词新JavaRDD;3.通过mapToPair,以key为单词,value统一为1的键值JavaPairRDD;4.通过reduceByKey,累计叠加每个key,统计单词出现次数;三.代码实现四.下载代码代码地址:http://downlo

2017-05-12 11:36:26 7502 2

原创 Spark学习—RDD编程

RDD:弹性分布式数据集(ResilientDistributed Dataset),是Spark对数据的核心抽象。RDD其实是分布式的元素集合。当Spark对数据操作和转换时,会自动将RDD中的数据分发到集群,并将操作并行化执行。 Spark中的RDD是一个不可变的分布式对象集合。每个RDD都倍分为多个分区,这些分区运行在集群中的不同节点。RDD可以包含Python、Java、Scala中任意类型的对象,甚至可以包含用户自定义对象,本文主要通过Java实现相关示例。 Spark程序或shell会话

2017-05-09 14:13:41 4770

原创 大数据处理为何选择Spark,而不是Hadoop

一.基础知识1.SparkSpark是一个用来实现快速而通用的集群计算的平台。在速度方面,Spark扩展了广泛使用的MapReduce计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。Spark项目包含多个紧密集成的组件。Spark的核心是一个对由很多计算任务组成的、运行在多个工作机器或者是一个计算集群上的应用进行调度、分发以及监控的计算引擎。Spark的各个组件2.HadoopHadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布

2017-05-04 16:32:11 6502

maven-archetype-quickstart-1.1包

在新建maven工程时报错: Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart:RELEASE from any of the configured repositories. Could not resolve artifact Missing org.apache.maven.archetypes:maven-archetype-quickstart:pom:RELEASE 解决思路:在本地库中装载maven-archetype-quickstart

2015-12-05

Spring mvc+mybatis+maven+velocity+mysql整合实例

本篇文章将通过一个简单显示用户信息的实例整合Spring mvc+mybatis+Maven+velocity+mysql. 一、.Maven工程目录 二、Spring mvc + mybatis +maven实现 1.Mysql数据库表数据

2015-01-26

jackson实现实体类与json互转实例(包含日期格式)

在项目开发过程中,当客户端与服务器响应时,数据交互是必不可少的。然而通过Json实现数据交互成为我们开发中的一部分,进而Jackson为我们的Json转化提供了很好的机制。下面我将利用实例总结如何使用jackson. 一、准备 如果你需要使用jackson,你必须得导入相应的架包,有如下三个包 jackson-annotations;jackson-core;jackson-databind Maven引入依赖代码

2015-01-25

Maven利用Java service wrapper生成Windows服务

在项目的开发中,有时候需要将Java应用程序打包成Windows服务,我们就直接可以通过windows的服务来启动和关闭java程序了。 本博文将通过有两种方法实现该功能,手动创建法和Maven自动打包法。

2015-01-23

javafx_scenebuilder-2_0-windows

javafx界面开发工具,由于Oralce有时下载不了,方便大家下载

2015-01-22

Bmob移动后端云服务平台--Android从零开始--(三)Bmob数据操作((批量)增删改)

上篇文章简单的利用Bmob实现了用户注册与登录效果(http://blog.csdn.net/a123demi/article/details/42059621)。 在项目中,对数据的操作脱离不了增删改查。Bmob其实也一样,他对数据操作的增删改查做了很好的封装,以及其批量的处理。本文将重点讲解利用Bmob实现Android端与Bmob服务端的数据操作,实现增加、修改、删除以及他们的批量处理。

2014-12-24

Bmob移动后端云服务平台--Android从零开始--(二)android快速入门

上一篇博文我们简单介绍何为Bmob移动后端服务平台,以及其相关功能和优势。本文将利用Bmob快速实现简单例子,进一步了解它的强大之处。

2014-12-21

Android 自定义ListView实现底部分页刷新与顶部下拉刷新

Android 自定义ListView实现底部分页刷新与顶部下拉刷新 一.ListView 底部分页加载 整个底部分页加载,主要分一下几步: 1.加载底部自定义View; 2.响应OnScrollListener监听事件,onScroll方法记录最后可见的View Item以及整个totalItemCount。当onScrollStateChanged状态改变时, 当滑动到底端,并滑动状态为 SCROLL_STATE_IDLE,显示底部加载View,开始实现自定义加载接口; 3.当数据加载完成时,隐藏底部下拉View.

2014-11-11

Android 实现自定义多级树控件和全选与反选的效果

对于多级树的显示其实就是通过数据中各个节点的关系,通过不同的缩进来达到树的效果。而数据中主要要把握id,父节点pId,name的关系,来显示其效果。实例详细的实现的多级树和全选与反选的过程

2014-11-01

Android 实例实现自定义Camera和前后置摄像头切换以及图片缩小放大预览

而本博文将通过实例实现自定义Camera的功效。具体功能如下: 1.实现自定义Camera拍照; 2.实现前后置摄像头的切换; 3.实现Camera拍照后图片缩小显示以及正常预览; 4.实现Camera拍照后图片保存; 在具体实现代码之前,我们先来了解一下Android api对实现自定义Camera的介绍。 根据api的介绍,对于Camera应用可以简单总结以下几个步骤。 1.检查Camera是否存在,并在AndroidManifest.xml中赋予相关的权限; 2.创建一个继承于SurfaceView并实现SurfaceHolder接口的Camera Preview类; 3.在2的基础上新建一个Camera Preview布局文件; 4.设置一个拍照的监听事件,例如单击按钮事件等; 5.实现拍照,并保存拍照后的图片到设备; 6.释放Camera,以方便其他应用可以使用。

2014-10-12

Android 实例讲解添加本地图片和调用系统拍照图片

在项目的开发过程我们离不开图片 而有时候需要调用本地的图片 有时候需要调用拍照图片 同时实现拍照的方法有两种 一种是调用系统拍照功能 另一种是自定义拍照功能 而本博文目前只讲解第一种方法 第二种方法后期在加以讲解 添加本地图片和调用系统拍照图片主要是通过调用acitivity跳转startActivityForResult Intent intent int requestCode 方法和activity返回结果onActivityResult int requestCode int resultCode Intent data 方法来实现的 ">在项目的开发过程我们离不开图片 而有时候需要调用本地的图片 有时候需要调用拍照图片 同时实现拍照的方法有两种 一种是调用系统拍照功能 另一种是自定义拍照功能 而本博文目前只讲解第一种方法 第二种方法后 [更多]

2014-10-12

android-19源码包

android-19源码包,通过AttachSource源码,可以方便查看android源代码

2014-09-25

Android ViewPager实现圆点导航左右滑动和Fragment页面切换

并实例利用ViewPager,PagerAdapter和OnPageChangeListener实现圆点导航左右滑动效果,并实现了被滑动界面处理控件事件,同时通过Fragment实现两个页面切换效果

2014-09-22

Android 利用ViewPager实现类微信的左右滑动效果

Android利用ViewPager实现类微信的左右滑动效果,详细代码注解解析setOnPageChangeListener各参数意义以及使用方法

2014-09-19

Android 实例讲解 Spinner样式修改

对于android项目开发来说,常常会用到Spinner实现下拉框的效果。而对于Spinner加载适配器的方法有多种: 1.直接加载android自带的ArrayAdapter,SimpleAdapter; 2.自定义继承BaseAdapter的适配器。 对于适配器加载自定义的xml布局文件,修改该Spinner样式较简单,就是在定义的xml布局文件中修改显示的样式就可以。但对于加载android自带的xml布局文件,有时会出现不是项目所需要的效果。主要问题有下拉几个: 1.Spinner本身背景显示样式; 2.Spinner中文本框显示样式; 3.Spinner下拉菜单框显示样式;

2014-09-17

Android 实现用户列表信息滑动删除功能和选择删除功能

在项目开发过程中,常常需要对用户列表的信息进行删除的操作。Android中常用的删除操作方式有两种 ,一种就是类似微信的滑动出现删除按钮方式,还有一种是通过CheckBox进行选择,然后通过按钮进行删除的方式。本来的实例集成上述的两种操作方式来实现用户列表删除的效果。 设计思路:在适配器类MyAdapter一个滑动删除按钮显示或隐藏的Map,一个用于CheckBox是否选中的Map和一个与MainAcitivyt进行数据交互的接口ContentsDeleteListener,同时该接口包含两个方法,contentsDeleteSelect(int position, boolean isChecked)方法用于将选中或取消内容从选中List中加入或删除,contentDelete(int position)用于删除List中指定位置的列项。滑动的效果主要是通过当滑动的距离大于40时,显示滑动删除按钮,再执行删除操作时,将其他所有设置不可见,并设置CheckBox为不选中状态。

2014-08-13

Android 利用TimerTask实现ImageView图片播放效果

在项目开发中,往往 要用到图片播放的效果,今天就用TimerTask和ImageView是实现简单的图片播放效果。 其中,TimerTask和Timer结合一起使用,主要是利用TimerTask的迭代延时等时间段处理事件的机制。

2014-08-10

Android 利用ExpandableListView显示和查询仿QQ分组列表用户信息

在我们的项目开发过程中,经常会对用户的信息进行分组,即通过组来显示用户的信息,同时通过一定的查询条件来显示查询后的相关用户信息,并且通过颜色选择器来设置列表信息的背景颜色。

2014-07-11

Android 自定义preference组件

上篇博文代码实现了Android自带的preference组件,本文将通过实例讲解自定义preference组件。 主要通过以下几步来实现: 1.定义需要的layout布局res->layout->xml文件; 2.通过继承Preference类,来实现自定义preference组件类; 3.通过xml文件引用自定义preference组件,res->xml->xml文件; 下面通过实例来实现: 1.需求:本实例主要实现一个LinearLayout包含ImageView,Button,TextView,通过点击LinearLayout,ImageView,Button,TextView中显示相关的内容;

2014-06-29

Android Preference组件使用

Preference主要实现一些配置数据,一些我们上次点击选择的内容,我们希望在下次应用调起的时候依然有效,无须用户再一次进行配置或选择。Android提供preference这个键值对的方式来处理这种情况,自动保存这些数据,并立时生效,同时Android提供一种类似的layout的方式来进行Preference的布局。 Preference组件有ListPreference,EditTextPreference,CheckBoxPreference和SwitchPreference,相对于View中的ListView,EditText,CheckBox,Switch和RingtonePreference .

2014-06-28

开涛高可用高并发-亿级流量核心技术

第1部分概述 1 1 交易型系统设计的一些原则 2 1.1 高并发原则 3 1.1.1 无状态 3 1.1.2 拆分 3 1.1.3 服务化 4 1.1.4 消息队列 4 1.1.5 数据异构 6 1.1.6 缓存银弹 7 1.1.7 并发化 9 1.2 高可用原则 10 1.2.1 降级 10 1.2.2 限流 11 1.2.3 切流量 12 1.2.4 可回滚 12 1.3 业务设计原则 12 1.3.1 防重设计 13 1.3.2 幂等设计 13 1.3.3 流程可定义 13 1.3.4 状态与状态机 13 1.3.5 后台系统操作可反馈 14 1.3.6 后台系统审批化 14 1.3.7 文档和注释 14 1.3.8 备份 14 1.4 总结 14 第2部分高可用 17 2 负载均衡与反向代理 18 2.1 upstream配置 20 2.2 负载均衡算法 21 2.3 失败重试 23 2.4 健康检查 24 2.4.1 TCP心跳检查 24 2.4.2 HTTP心跳检查 25 2.5 其他配置 25 2.5.1 域名上游服务器 25 2.5.2 备份上游服务器 26 2.5.3 不可用上游服务器 26 2.6 长连接 26 2.7 HTTP反向代理示例 29 2.8 HTTP动态负载均衡 30 2.8.1 Consul+Consul-template 31 2.8.2 Consul+OpenResty 35 2.9 Nginx四层负载均衡 39 2.9.1 静态负载均衡 39 2.9.2 动态负载均衡 41 参考资料 42 3 隔离术 43 3.1 线程隔离 43 3.2 进程隔离 45 3.3 集群隔离 45 3.4 机房隔离 46 3.5 读写隔离 47 3.6 动静隔离 48 3.7 爬虫隔离 49 3.8 热点隔离 50 3.9 资源隔离 50 3.10 使用Hystrix实现隔离 51 3.10.1 Hystrix简介 51 3.10.2 隔离示例 52 3.11 基于Servlet 3实现请求隔离 56 3.11.1 请求解析和业务处理线程池分离 57 3.11.2 业务线程池隔离 58 3.11.3 业务线程池监控/运维/降级 58 3.11.4 如何使用Servlet 3异步化 59 3.11.5 一些Servlet 3异步化压测数据 64 4 限流详解 66 4.1 限流算法 67 4.1.1 令牌桶算法 67 4.1.2 漏桶算法 68 4.2 应用级限流 69 4.2.1 限流总并发/连接/请求数 69 4.2.2 限流总资源数 70 4.2.3 限流某个接口的总并发/请求数 70 4.2.4 限流某个接口的时间窗请求数 70 4.2.5 平滑限流某个接口的请求数 71 4.3 分布式限流 75 4.3.1 Redis+Lua实现 76 4.3.2 Nginx+Lua实现 77 4.4 接入层限流 78 4.4.1 ngx_http_limit_conn_module 78 4.4.2 ngx_http_limit_req_module 80 4.4.3 lua-resty-limit-traffic 88 4.5 节流 90 4.5.1 throttleFirst/throttleLast 90 4.5.2 throttleWithTimeout 91 参考资料 92 5 降级特技 93 5.1 降级预案 93 5.2 自动开关降级 95 5.2.1 超时降级 95 5.2.2 统计失败次数降级 95 5.2.3 故障降级 95 5.2.4 限流降级 95 5.3 人工开关降级 96 5.4 读服务降级 96 5.5 写服务降级 97 5.6 多级降级 98 5.7 配置中心 100 5.7.1 应用层API封装 100 5.7.2 配置文件实现开关配置 101 5.7.3 配置中心实现开关配置 102 5.8 使用Hystrix实现降级 106 5.9 使用Hystrix实现熔断 108 5.9.1 熔断机制实现 108 5.9.2 配置示例 112 5.9.3 采样统计 113 6 超时与重试机制 117 6.1 简介 117 6.2 代理层超时与重试 119 6.2.1 Nginx 119 6.2.2 Twemproxy 126 6.3 Web容器超时 127 6.4 中间件客户端超时与重试 127 6.5 数据库客户端超时 131 6.6 NoSQL客户端超时 134 6.7 业务超时 135 6.8 前端Ajax超时 135 6.9 总结 136 6.10 参考资料 137 7 回滚机制 139 7.1 事务回滚 139 7.2 代码库回滚 140 7.3 部署版本回滚 141 7.4 数据版本回滚 142 7.5 静态资源版本回滚 143 8 压测与预案 145 8.1 系统压测 145 8.1.1 线下压测 146 8.1.2 线上压测 146 8.2 系统优化和容灾 147 8.3 应急预案 148 第3部分高并发 153 9 应用级缓存 154 9.1 缓存简介 154 9.2 缓存命中率 155 9.3 缓存回收策略 155 9.3.1 基于空间 155 9.3.2 基于容量 155 9.3.3 基于时间 155 9.3.4 基于Java对象引用 156 9.3.5 回收算法 156 9.4 Java缓存类型 156 9.4.1 堆缓存 158 9.4.2 堆外缓存 162 9.4.3 磁盘缓存 162 9.4.4 分布式缓存 164 9.4.5 多级缓存 166 9.5 应用级缓存示例 167 9.5.1 多级缓存API封装 167 9.5.2 NULL Cache 170 9.5.3 强制获取最新数据 170 9.5.4 失败统计 171 9.5.5 延迟报警 171 9.6 缓存使用模式实践 172 9.6.1 Cache-Aside 173 9.6.2 Cache-As-SoR 174 9.6.3 Read-Through 174 9.6.4 Write-Through 176 9.6.5 Write-Behind 177 9.6.6 Copy Pattern 181 9.7 性能测试 181 9.8 参考资料 182 10 HTTP缓存 183 10.1 简介 183 10.2 HTTP缓存 184 10.2.1 Last-Modified 184 10.2.2 ETag 190 10.2.3 总结 192 10.3 HttpClient客户端缓存 192 10.3.1 主流程 195 10.3.2 清除无效缓存 195 10.3.3 查找缓存 196 10.3.4 缓存未命中 198 10.3.5 缓存命中 198 10.3.6 缓存内容陈旧需重新验证 202 10.3.7 缓存内容无效需重新执行请求 205 10.3.8 缓存响应 206 10.3.9 缓存头总结 207 10.4 Nginx HTTP缓存设置 208 10.4.1 expires 208 10.4.2 if-modified-since 209 10.4.3 nginx proxy_pass 209 10.5 Nginx代理层缓存 212 10.5.1 Nginx代理层缓存配置 212 10.5.2 清理缓存 215 10.6 一些经验 216 参考资料 217 11 多级缓存 218 11.1 多级缓存介绍 218 11.2 如何缓存数据 220 11.2.1 过期与不过期 220 11.2.2 维度化缓存与增量缓存 221 11.2.3 大Value缓存 221 11.2.4 热点缓存 221 11.3 分布式缓存与应用负载均衡 222 11.3.1 缓存分布式 222 11.3.2 应用负载均衡 222 11.4 热点数据与更新缓存 223 11.4.1 单机全量缓存+主从 223 11.4.2 分布式缓存+应用本地热点 224 11.5 更新缓存与原子性 225 11.6 缓存崩溃与快速修复 226 11.6.1 取模 226 11.6.2 一致性哈希 226 11.6.3 快速恢复 226 12 连接池线程池详解 227 12.1 数据库连接池 227 12.1.1 DBCP连接池配置 228 12.1.2 DBCP配置建议 233 12.1.3 数据库驱动超时实现 234 12.1.4 连接池使用的一些建议 235 12.2 HttpClient连接池 236 12.2.1 HttpClient 4.5.2配置 236 12.2.2 HttpClient连接池源码分析 240 12.2.3 HttpClient 4.2.3配置 241 12.2.4 问题示例 243 12.3 线程池 244 12.3.1 Java线程池 245 12.3.2 Tomcat线程池配置 248 13 异步并发实战 250 13.1 同步阻塞调用 251 13.2 异步Future 252 13.3 异步Callback 253 13.4 异步编排CompletableFuture 254 13.5 异步Web服务实现 257 13.6 请求缓存 259 13.7 请求合并 261 14 如何扩容 266 14.1 单体应用垂直扩容 267 14.2 单体应用水平扩容 267 14.3 应用拆分 268 14.4 数据库拆分 271 14.5 数据库分库分表示例 275 14.5.1 应用层还是中间件层 275 14.5.2 分库分表策略 277 14.5.3 使用sharding-jdbc分库分表 279 14.5.4 sharding-jdbc分库分表配置 279 14.5.5 使用sharding-jdbc读写分离 283 14.6 数据异构 284 14.6.1 查询维度异构 284 14.6.2 聚合数据异构 285 14.7 任务系统扩容 285 14.7.1 简单任务 285 14.7.2 分布式任务 287 14.7.3 Elastic-Job简介 287 14.7.4 Elastic-Job-Lite功能与架构 287 14.7.5 Elastic-Job-Lite示例 288 15 队列术 295 15.1 应用场景 295 15.2 缓冲队列 296 15.3 任务队列 297 15.4 消息队列 297 15.5 请求队列 299 15.6 数据总线队列 300 15.7 混合队列 301 15.8 其他队列 302 15.9 Disruptor+Redis队列 303 15.9.1 简介 303 15.9.2 XML配置 304 15.9.3 EventWorker 305 15.9.4 EventPublishThread 307 15.9.5 EventHandler 308 15.9.6 EventQueue 308 15.10 下单系统水平可扩展架构 311 15.10.1 下单服务 313 15.10.2 同步Worker 313 15.11 基于Canal实现数据异构 314 15.11.1 Mysql主从复制 315 15.11.2 Canal简介 316 15.11.3 Canal示例 318 第4部分案例 323 16 构建需求响应式亿级商品详情页 324 16.1 商品详情页是什么 324 16.2 商品详情页前端结构 325 16.3 我们的性能数据 327 16.4 单品页流量特点 327 16.5 单品页技术架构发展 327 16.5.1 架构1.0 328 16.5.2 架构2.0 328 16.5.3 架构3.0 330 16.6 详情页架构设计原则 332 16.6.1 数据闭环 332 16.6.2 数据维度化 333 16.6.3 拆分系统 334 16.6.4 Worker无状态化+任务化 334 16.6.5 异步化+并发化 335 16.6.6 多级缓存化 335 16.6.7 动态化 336 16.6.8 弹性化 336 16.6.9 降级开关 336 16.6.10 多机房多活 337 16.6.11 多种压测方案 338 16.7 遇到的一些坑和问题 339 16.7.1 SSD性能差 339 16.7.2 键值存储选型压测 340 16.7.3 数据量大时JIMDB同步不动 342 16.7.4 切换主从 342 16.7.5 分片配置 342 16.7.6 模板元数据存储HTML 342 16.7.7 库存接口访问量600w/分钟 343 16.7.8 微信接口调用量暴增 344 16.7.9 开启Nginx Proxy Cache性能不升反降 344 16.7.10 配送至读服务因依赖太多,响应时间偏慢 344 16.7.11 网络抖动时,返回502错误 346 16.7.12 机器流量太大 346 16.8 其他 347 17 京东商品详情页服务闭环实践 348 17.1 为什么需要统一服务 348 17.2 整体架构 349 17.3 一些架构思路和总结 350 17.3.1 两种读服务架构模式 351 17.3.2 本地缓存 352 17.3.3 多级缓存 353 17.3.4 统一入口/服务闭环 354 17.4 引入Nginx接入层 354 17.4.1 数据校验/过滤逻辑前置 354 17.4.2 缓存前置 355 17.4.3 业务逻辑前置 355 17.4.4 降级开关前置 355 17.4.5 AB测试 356 17.4.6 灰度发布/流量切换 356 17.4.7 监控服务质量 356 17.4.8 限流 356 17.5 前端业务逻辑后置 356 17.6 前端接口服务端聚合 357 17.7 服务隔离 359 18 使用OpenResty开发高性能Web应用 360 18.1 OpenResty简介 361 18.1.1 Nginx优点 361 18.1.2 Lua的优点 361 18.1.3 什么是ngx_lua 361 18.1.4 开发环境 362 18.1.5 OpenResty生态 362 18.1.6 场景 362 18.2 基于OpenResty的常用架构模式 363 18.2.1 负载均衡 363 18.2.2 单机闭环 364 18.2.3 分布式闭环 367 18.2.4 接入网关 368 18.2.5 核心接入Nginx功能 369 18.2.6 业务Nginx功能 369 18.2.7 Web应用 370 18.3 如何使用OpenResty开发Web应用 371 18.3.1 项目搭建 371 18.3.2 启停脚本 372 18.3.3 配置文件 372 18.3.4 nginx.conf配置文件 373 18.3.5 Nginx项目配置文件 373 18.3.6 业务代码 374 18.3.7 模板 374 18.3.8 公共Lua库 375 18.3.9 功能开发 375 18.4 基于OpenResty的常用功能总结 375 18.5 一些问题 376 19 应用数据静态化架构高性能单页Web应用 377 19.1 整体架构 378 19.1.1 CMS系统 379 19.1.2 前端展示系统 380 19.1.3 控制系统 380 19.2 数据和模板动态化 381 19.3 多版本机制 381 19.4 异常问题 382 20 使用OpenResty开发Web服务 383 20.1 架构 383 20.2 单DB架构 384 20.2.1 DB+Cache/数据库读写分离架构 384 20.2.2 OpenResty+Local Redis+Mysql集群架构 385 20.2.3 OpenResty+Redis集群+Mysql集群架构 386 20.3 实现 387 20.3.1 后台逻辑 388 20.3.2 前台逻辑 388 20.3.3 项目搭建 389 20.3.4 Redis+Twemproxy配置 389 20.3.5 Mysql+Atlas配置 390 20.3.6 Java+Tomcat安装 394 20.3.7 Java+Tomcat逻辑开发 395 20.3.8 Nginx+Lua逻辑开发 401 21 使用OpenResty开发商品详情页 405 21.1 技术选型 407 21.2 核心流程 408 21.3 项目搭建 408 21.4 数据存储实现 410 21.4.1 商品基本信息SSDB集群配置 410 21.4.2 商品介绍SSDB集群配置 413 21.4.3 其他信息Redis配置 417 21.4.4 集群测试 418 21.4.5 Twemproxy配置 419 21.5 动态服务实现 422 21.5.1 项目搭建 422 21.5.2 项目依赖 422 21.5.3 核心代码 423 21.5.4 基本信息服务 424 21.5.5 商品介绍服务 426 21.5.6 其他信息服务 426 21.5.7 辅助工具 427 21.5.8 web.xml配置 428 21.5.9 打WAR包 428 21.5.10 配置Tomcat 428 21.5.11 测试 429 21.5.12 Nginx配置 429 21.5.13 绑定hosts测试 430 21.6 前端展示实现 430 21.6.1 基础组件 430 21.6.2 商品介绍 432 21.6.4 前端展示 434 21.6.5 测试 442

2018-03-22

SSM框架web项目从零开始(spring mybatis mysql redis) 系列源码下载

SSM框架web项目从零开始(spring mybatis mysql redis)集成系列代码

2017-10-19

Redis-x64-3.0.504-windows

redis x64位windows版本

2017-06-20

Springboot+Mybatis+Maven+Oracle+Cassandra+事务(Aop)+定时任务实现

本文将通过示例介绍Springboot,mybatis,maven,oracle,cassandra,aop事务,定时任务等框架的集成,因此业务不会复杂,供学习使用。

2017-06-09

录音转文字与文字转录音完美工具-录音啦

录音啦,录音转文字,文字转录音,会议纪要,完美工具

2017-05-30

Spark学习---统计文件单词出现次数

上一节我们简单介绍了RDD中转化和执行操作的用法,本节将通过一个具体的示例来加深对RDD的认识。 一.需求 统计本地文件中单词出现次数 二.操作流程 1.读取外部文件创建JavaRDD; 2.通过flatMap转化操作切分字符串,获取单词新JavaRDD; 3.通过mapToPair,以key为单词,value统一为1的键值JavaPairRDD; 4.通过reduceByKey,累计叠加每个key,统计单词出现次数; 三.代码实现 四.下载代码

2017-05-12

Spark学习--RDD编码

RDD:弹性分布式数据集(ResilientDistributed Dataset),是Spark对数据的核心抽象。RDD其实是分布式的元素集合。当Spark对数据操作和转换时,会自动将RDD中的数据分发到集群,并将操作并行化执行。 Spark中的RDD是一个不可变的分布式对象集合。每个RDD都倍分为多个分区,这些分区运行在集群中的不同节点。RDD可以包含Python、Java、Scala中任意类型的对象,甚至可以包含用户自定义对象,本文主要通过Java实现相关示例。 Spark程序或shell会话工作流程 1. 从外部数据创建出输入RDD; 2. 使用诸如filter()等这样的转化操作对RDD进行转化,以定义新的RDD; 3. 告诉Spark对需要被重用的中间结果RDD执行persist()操作; 4. 使用诸如first()等这样的行动操作来触发一次并行计算,Spark会对计算进行优化后再执行。 一. 创建RDD Spark提供了两种创建RDD方式: 1. 读取外部数据集,如文件,hive数据库等; 2. 在驱动器程序中对一个集合进行并行化,如list,set等。 方法1是常用方法,其从外部存储中读取数据来创建RDD,如读取文件 方法1创建RDD 方法2其实使用较少,毕竟它需要把整个数据集先放在一台机器的内存中。实现也简单,就是把程序中一个已有集合传给SparkContext的parallelize()方法。二.RDD操作 方法2创建RDD 二. RDD操作 1. RDD支持两种操作: (1) 转化操作,RDD的转化操作是返回一个新的RDD的操作,比如map()和filter。 (2) 行动操作,RDD的行动操作则是向驱动器程序返回结果或把结果写入外部系统的操作,会触发实际的计算,比如count()和first()。 惰性求值:RDD的转化操作是惰性求值的,即在被调用行动操作之前Spark不会开始计算,相反,Spark会在内部记录下索要求执行的操作的相关信息。例如,当我们调用jsc.textFile()时,数据并没有读取进来,而是在必要时才会读取。Spark使用惰性求值,就可以把一些操作合并到一起来减少计算数据的步骤。 2. RDD的基本转化操作 函数名 目的 示例 结果 map() 将函数应用于RDD的每一元素, 将返回值构成新的RDD rdd.map(x=>x+1) {2,3,4,4} flatMap() 将函数应用于RDD的每一元素, 将返回的迭代器的所有内容构成新的RDD. 通常用于切分单词 rdd.flatMap(x=>x.to(3)) {1,2,3,2,3,3,3} filter() 返回一个由通过传给filter()的函数 的元素组成的RDD rdd.filter(x=>x!=1) {2,3,3} distinct() 去重 rdd.distinct() {1,2,3) sample(withReplacement, fraction,[seed]) 对RDD采用,以及是否替换 rdd.sample(false,0.5) 非确定的 对一个数据为{1,2,3,3}的RDD进行基本的RDD转化操作 函数名 目的 示例 结果 union() 生成一个包含两个RDD 中所有元素的RDD rdd.union(other) {1, 2, 3, 3, 4, 5} intersection() 求两个RDD 共同的元素的RDD rdd.intersection(other) {3} subtract() 移除一个RDD 中的内容(例如移除训练数据) rdd.subtract(other) {1, 2} cartesian() 与另一个RDD 的笛卡儿积 rdd.cartesian(other) {(1, 3), (1, 4), ...(3, 5)} 对数据分别为{1, 2,3}和{3, 4, 5}的RDD进行针对两个RDD的转化操作 3. RDD的基本执行操作 函数名 目的 示例 结果 collect() 返回RDD 中的所有元素 rdd.collect() {1, 2, 3, 3} count() RDD 中的元素个数 rdd.count() 4 countByValue() 各元素在RDD 中出现的次数 rdd.countByValue() {(1, 1),(2, 1),(3, 2)} take(num) 从RDD 中返回num 个元素 rdd.take(2) {1, 2} top(num) 从RDD 中返回最前面的num个元素 rdd.top(2) {3, 3} takeOrdered(num) (ordering) 从RDD 中按照提供的顺序返回最前面的num 个元素 rdd.takeOrdered(2)(myOrdering) {3, 3} takeSample(withReplacement, num, [seed]) 从RDD 中返回任意一些元素 rdd.takeSample(false, 1) 非确定的 reduce(func) 并行整合RDD 中所有数据(例如sum) rdd.reduce((x, y) => x + y) 9 fold(zero)(func) 和reduce() 一样, 但是需要提供初始值 注意:不重复元素加初始值,重复元素只加一个 rdd.fold(0)((x, y) => x + y) 9 aggregate(zeroValue) (seqOp, combOp) 和reduce() 相似, 但是通常返回不同类型的函数 注意:不重复元素加初始值,重复元素只加一个 rdd.aggregate((0, 0))((x, y) => (x._1 + y, x._2 + 1),(x, y) => (x._1 + y._1, x._2 + y._2)) (9,4) foreach(func) 对RDD 中的每个元素使用给定的函数 rdd.foreach(func) 无 对一个数据为{1, 2,3, 3}的RDD进行基本的RDD行动操作 4. 标准Java函数接口 在Java中,函数需要作为实现了Spark的org.apache,spark.api.java.function包中的任一函数接口的对象传递。 函数名 实现的方法 用途 Function<T, R> R call(T) 接收一个输入值并返回一个输出值,用于类似map() 和filter() 等操作中 Function2<T1, T2, R> R call(T1, T2) 接收两个输入值并返回一个输出值,用于类似aggregate()和fold() 等操作中 FlatMapFunction<T, R> Iterable<R> call(T) 接收一个输入值并返回任意个输出,用于类似flatMap()这样的操作中 标准Java函数接口 5. Java中针对专门类型的函数接口 函数名 等价函数 用途 DoubleFlatMapFunction<T> Function<T, Iterable<Double>> 用于flatMapToDouble,以生成DoubleRDD DoubleFunction<T> Function<T, Double> 用于mapToDouble,以生成DoubleRDD PairFlatMapFunction<T, K, V> Function<T, Iterable<Tuple2<K, V>>> 用于flatMapToPair,以生成PairRDD<K, V> PairFunction<T, K, V> Function<T, Tuple2<K, V>> 用于mapToPair, 以生成PairRDD<K, V> Java中针对专门类型的函数接口 三. 示例 本节将通过示例的方式验证第二节中相关的转化操作和行动操作。 转化和行动计算结果 代码地址: 参考文献: 王道远 《Spark 快速大数据分析》

2017-05-09

eclipse集成hadoop+spark+hive开发源码实例

windows系统下eclipse集成hadoop,spark,hive开发环境

2017-05-02

hadoop2.6.5中winutils+hadoop

windows系统开发hadoop包需要的winutils.exe和hadoop.dll文件

2017-05-02

SSM框架web项目从零开始---Spring mybatis mysql配置实现

上一章我们把SSM项目结构已搭建完毕,本章将实现Spring,mybatis,mysql等相关配置。 1. 外部架包依赖引入 外部依赖包引入可以根据相关包名从 网站:http://mvnrepository.com/ 获取依赖引入语句结构。 SSM项目详细依赖包请见ssm-parent中的pom.xml文件。 1.1 spring框架依赖包引入 spring-context spring-beans spring-jdbc spring aspects spring-webmvc 1.2 spring-mybatis依赖包引入 mybatis mybatis-spring 1.3 数据库依赖包引入 mysql-connector-java druid 1.4 redis依赖包引入 jedis 1.5 web相关依赖包引入 jstl servlet-api jsp-api Jackson-databind 1.6 其他日志和公共包依赖引入 slf4j-log4j12 junit commons-langs commons-io 2. 各项目间依赖关系以及架包引入 ssm-parent实现了所有外部依赖包引入 (1)ssm-commons 实现公共的组件,工具类等 (2)ssm-manager 实际业务管理工程,聚合工程, 其包含工程依赖(1) (3)ssm-manager-pojo (4)ssm-manager-mapper 依赖(3) (5)ssm-manager-service 依赖(3,4) (6)ssm-manager-controller 依赖(3,5) 3. Spring简单介绍 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。 轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 控制反转——Spring通过一种称作控制反转(IoC)的技术促进了低耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

2017-01-19

微信小程序--计算器demo

最近微信小程序很火,根据官网简单实现计算器功能,重在动手体验。 微信小程序官网:https://mp.weixin.qq.com/debug/wxadoc/dev/index.html 计算器功能:加减乘除+表达式计算 效果如下

2017-01-12

微信小程序--计算器demo实现

计算器相关加减乘除功能,重在体验小程序开发

2017-01-12

SQL Prompt破解软件和详解

Sql Prompt破解软件和破解方法详解

2016-08-27

Spring 实现远程访问详解——jms和activemq

前几章我们分别利用spring rmi、httpinvoker、httpclient、webservice技术实现不同服务器间的远程访问。本章我将通过spring jms和activemq实现单Web项目服务器间异步访问和多Web项目服务器间异步访问。 一. 简介 1. 什么是Apache ActiveMq Apache ActiveMq是最流行和最强大的开源消息和集成服务器。同时Apache ActiveMq是速度快,支持多种跨语言客户端和协议,同时配有易于使用的企业集成模式和优秀的特性,并且支持JMS1.1和J2EE1.4。具体特性见官网:http://activemq.apache.org/ 2. 什么是JMS JMS的全称是Java Message Service,即Java消息服务。它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息。把它应用到实际的业务需求中的话我们可以在特定的时候利用生产者生成一消息,并进行发送,对应的消费者在接收到对应的消息后去完成对应的业务逻辑。 JMS 支持两种消息传递模型: 点对点(point-to-point,简称 PTP) 发布/订阅(publish/subscribe,简称 pub/sub)。 这两种消息传递模型非常相似,但有以下区别: PTP 消息传递模型规定了一条消息只能传递给一个接收方。 采用javax.jms.Queue 表示。Spring配置类型destination-type="queue"。 Pub/sub 消息传递模型允许一条消息传递给多个接收方。采用javax.jms.Topic表示。Spring配置类型destination-type="topic"。 二. 单服务器异步访问 3. Spring 整合JMS和ActiveMq流程 1) 下载和部署ActiveMq服务器 2) Spring jms和activemq相关依赖引入 3) Spring整合activemq配置 4) 定义消息发布者(生产者) 5) 定义消息订阅者(消费者) 6) Spring mvc配置 7) 实例测试

2016-04-21

Spring 实现远程访问详解——webservice

Spring Web Services 是基于 Spring 框架的 Web 服务框架,主要侧重于基于文档驱动的Web服务,提供 SOAP 服务开发,允许通过多种方式创建 Web 服务。本章利用Apache CXF构建和开发webservice. 1. webservice远程访问流程 1) pom文件引入cxf和wsdl相关包依赖 2) 服务端创建webservice接口 3) 服务端实现webservice接口 4) 服务端配置暴露webservice接口 5) 客户端创建暴露的webservice接口 6) 客户端调用webservice接口

2016-04-19

Spring 实现远程访问详解——httpclient

上两章我们分别利用Spring rmi和httpinvoker实现的远程访问功能,具体见《》和《》。本章将通过apache httpclient实现远程访问。说得简单就是直接通过spring requestmapping即请求映射url访问远程服务。 1. 远程访问流程 1) 服务器在控制器定义远程访问请求映射路径 2) 客户端通过apache httpclient的 httppost方式访问远程服务 2. Httpclient方式具体实现 1) 服务器在控制器定义远程访问请求映射路径

2016-04-19

Spring 实现远程访问详解——httpinvoker

上文我们利用Spring rmi实现了Spring的远程访问(Spring 实现远程访问详解——rmi),本文主要讲解利用HttpInvoke实现远程访问。 Spring httpInvoker使用标准java序列化机制,通过Http暴露业务服务。如果你的参数和返回值是比较复杂的,通过httpInvoker有巨大的优势。 1. 远程访问流程 1) 服务端定义服务接口 2) 服务端实现服务接口 3) 暴露服务对象 4) 客户端定义暴露的服务端接口 5) 客户端配置服务参数 6) 客户端调用服务接口

2016-04-19

Spring 实现远程访问详解——rmi

Spring为各种远程访问技术提供集成工具类。Spring远程访问通过使用普通POJOs,能更容易的开发远程访问服务。目前,Spring远程访问的主要技术如下: 1. 远程调用RMI(Remote Method Invocation): 通过使用 RmiProxyFactoryBean 和 RmiServiceExporter,并且,Spring支持两个传统的RMI(使用 java.rmi.Remote接口和java.rmi.RemoteException)和通过RMI调用器实现的暴露远程调用(支持任何Java接口)。 2. Spring的HTTP调用器(Spring’s Http Invoker): Spring提供了一种特殊的允许通过HTTP进行Java串行化的远程调用策略,支持任意Java接口(就像RMI调用器)。相对应的支持类是 HttpInvokerProxyFactoryBean和 HttpInvokerServiceExporter。 3. Hessian: 通过 HessianProxyFactoryBean 和 HessianServiceExporter,可以使用Caucho提供的基于HTTP的轻量级二进制协议来透明地暴露服务。 4. Burlap: Burlap是Caucho的另外一个子项目,可以作为Hessian基于XML的替代方案。Spring提供了诸如 BurlapProxyFactoryBean 和 BurlapServiceExporter 的支持类。 5. JAX RPC: Spring通过JAX-RPC为远程Web服务提供支持(J2EE 1.4's web service API)。 6. JAX-WS:Spring通过JAX-WS为远程Web服务提供支持(the successor of JAX-RPC, as introduced in Java EE 5 and Java 6)。 7. JMS:远程访问通过类JmsInvokerServiceExporter和JmsInvokerProxyFactoryBean使用JMS的底层协议实现。 二. 远程访问------RMI 1. RMI远程访问基本流程 1). 服务端定义远程访问接口; 2). 服务端通过RmiServiceExporter暴露服务接口 3). 客户端定义与服务端已暴露的相同接口 4). 客户端通过RmiProxyFactoryBean调用服务接口

2016-04-18

Sigar 使用详解

一、 Sigar详细介绍 Sigar(System Information Gatherer And Reporter),是一个开源的工具,提供了跨平台的系统信息收集的API,核心由C语言实现的。 Sigar资料地址:https://support.hyperic.com/display/SIGAR/Home Sigar提供了一组轻便式接口来收集系统信息,主要信息包含: ● 系统内存,页面交换,cpu,平均负载,运行时间,登录信息; ● 每个进程占用的内存,cpu,帐号信息,状态,参数,环境,打开的文件; ● 文件系统监测和度量; ● 网络接口监测,配置信息和度量; ● TCP和UDP连接表; ● 网络路由表;

2016-02-18

maven-archetype-quickstart-1.1架包

在新建maven工程时报错: Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart:RELEASE from any of the configured repositories. Could not resolve artifact Missing org.apache.maven.archetypes:maven-archetype-quickstart:pom:RELEASE 原因:这是因为缺少:maven-archetype-quickstart依赖文件,只需要在本地库中装载maven-archetype-quickstart就能解决该问题。具体如下:

2015-12-05

空空如也

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

TA关注的人

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