MongoDB是一种文本式数据库.与传统的关系式数据库最大不同是MongoDB没有标准的格式要求,即没有schema,合适高效处理当今由互联网+商业产生的多元多态数据.MongoDB也是一种分布式数据库,充分具备大数据处理能力和高可用性.MongoDB提供了scala终端驱动mongo-scala-driver,我们就介绍一下MongoDB数据库和通过scala来进行数据操作编程. 与关系数据库相似,MongoDB结构为Database->Collection->Document.Collec…
scalikeJDBC可以通过配置文件来设置连接池及全局系统参数.对配置文件的解析是通过TypesafeConfig工具库实现的.默认加载classpath下的application.conf,application.json和application.properties文件.作为尝试,我们可以在resource/application.conf文件里进行h2和mysql数据库的JDBC驱动参数定义: # JDBC settings db { h2 { driver="org.h2.Driver…
再有两天就进入2018了,想想还是要准备一下明年的工作方向.回想当初开始学习函数式编程时的主要目的是想设计一套标准API給那些习惯了OOP方式开发商业应用软件的程序员们,使他们能用一种接近传统数据库软件编程的方式来实现多线程,并行运算,分布式的数据处理应用程序,前提是这种编程方式不需要对函数式编程语言.多线程软件编程以及集群环境下的分布式软件编程方式有很高的经验要求.前面试着发布了一个基于scalaz-stream-fs2的数据处理工具开源项目.该项目基本实现了多线程的数据库数据并行处理,能充分…
简单来说:JDBC是一种开放标准的跨编程语言.跨数据库类型编程API.各类型数据库产品厂商都会按它的标准要求来提供针对自身产品的JDBC驱动程序.最主要的这是一套成熟的工具,在编程人员中使用很普及.既然我们的目标是开发一套标准的大数据系统集成API,那么采用JDBC系统数据接口可以沿用业内丰富的技术资源.覆盖更多类型用户的编程需要,以及降低使用门槛.对于scala编程语言来讲,ScalikeJDBC是一套最合适满足我们下面开发要求的工具库,因为它可以用最简单易用的方式来实现JDBC的基本功能.…
ScalikeJDBC在覆盖JDBC基本功能上是比较完整的,而且实现这些功能的方式比较简洁,运算效率方面自然会稍高一筹了.理论上用ScalikeJDBC作为一种JDBC-Engine还是比较理想的:让它处于各种JDBC工具库和数据库实例之间接收JDBC运算指令然后连接目标数据库进行相关运算后返回结果.一般来说,各种JDBC工具库如ORM,FRM软件通过各自的DSL在复杂的数据库表关系环境内进行数据管理编程,最终产生相关的SQL语句即(prepared)statement+parameters传递…
现代信息系统应该是避不开大数据处理的.作为一个通用的系统集成工具也必须具备大数据存储和读取能力.cassandra是一种分布式的数据库,具备了分布式数据库高可用性(high-availability)特性,对于一个实时大型分布式集成系统来说是核心支柱.与传统的关系数据库对比,cassandra从数据存储结构.读取方式等可以说是皆然不同的.如:cassandra库表设计是反范式的(denormalized).表结构设计是反过来根据query要求设计的,等等.幸运的是自版本3.0后cassandra…
akka在alpakka工具包里提供了对cassandra数据库的streaming功能.简单来讲就是用一个CQL-statement读取cassandra数据并产生akka-stream的Source.这是一个支持reactive-stream协议的流: object CassandraSource { /** * Scala API: creates a [[CassandraSourceStage]] from a given statement. */ def apply(stmt: S…
MongoDB是一种文件型数据库,对数据格式没有硬性要求,所以可以实现灵活多变的数据存储和读取.MongoDB又是一种分布式数据库,与传统关系数据库不同的是,分布式数据库不支持table-join,所以在设计数据库表结构方面与关系数据库有很大的不同.分布式数据库有一套与传统观念不同的数据模式,在设计库表结构时必须从满足各种数据抽取的需要为主要目的.关系数据库设计要求遵循范式模式(normalization)库表结构,在抽取数据时再通过table-join联结关系表.因为分布式数据库不支持tabl…
在akka-alpakka工具包里也提供了对MongoDB的stream-connector,能针对MongoDB数据库进行streaming操作.这个MongoDB-connector里包含了MongoSource,MongoFlow,MongoSink.我们只使用MongoSource,其它两个我们直接用mapAsyc来创造.下面是MongoSource的定义: object MongoSource { def apply(query: Observable[Document]): Sour…
作为一种通用的数据库编程引擎,用Streaming来应对海量数据的处理是必备功能.同样,我们还是通过一种Context传递产生流的要求.因为StreamingContext比较简单,而且还涉及到数据抽取函数extractor的传递,所以我们分开来定义: case class JDBCQueryContext[M]( dbName: Symbol, statement: String, parameters: Seq[Any] = Nil, fetchSize: Int = , autoCommi…
在上一篇博文里我们把JDBC-Engine的读取操作部分分离出来进行了讨论,在这篇准备把更新Update部分功能介绍一下.当然,JDBC-Engine的功能是基于ScalikeJDBC的,所有的操作和属性都包嵌在SQL这个类型中: /** * SQL abstraction. * * @param statement SQL template * @param rawParameters parameters * @param f extractor function * @tparam A r…
根据上篇关于MongoDB-Engine的功能设计方案,我们将在这篇讨论里进行功能实现和测试.下面是具体的功能实现代码:基本上是直接调用Mongo-scala的对应函数,需要注意的是java类型和scala类型之间的相互转换: object MGOEngine { import MGOContext._ import MGOCommands._ import MGOAdmins._ def mgoExecute[T](ctx: MGOContext)(implicit client: Mongo…
为了让前面规划的互联网+数据平台能有效对电子商务数据进行管理及实现大数据统计功能,必须在平台上再增加一个MongDB-Engine:数据平台用户通过传入一种Context来指示MongoDB-Engine运算.与前面JDBC-Engine和Cassandra-Engine通过文本式传递指令不同的是:MangoDB没有一套像SQL或CQL这样的文本式编程语言.但MangoDB基本上都是通过Bson类型的参数进行运算的,Bson是个java interface: /** * An interface…
在前面几篇关于数据库引擎的讨论里很多的运算函数都返回了scala.Future类型的结果,因为我以为这样就可以很方便的实现了non-blocking效果.无论任何复杂的数据处理操作,只要把它们包在一个Future{...}里扔给系统运算就算完事不理了,马上可以把关注放到编程的其它部分了.在3月17日的深圳scala用户meetup里我做了个关于scala函数式编程的分享,里面我提到现在使用最多的函数组件就是scala.Future了.我想这应该在scala用户群里是个比较普遍的现象:大家都认为这…
版权所有,引用请注明出处:<<http://www.cnblogs.com/dragon/p/5203663.html >> 本文所用示例下载FlowChart.zip 一个用Netron开发的实际应用请看:发布一个免费开源软件-- PAD流程图绘制软件PADFlowChart Netron 2.2原版代码下载 一.      概述 Netron是一个开源的图形开发库,它还有一个轻量级的版本叫NetronLight,本文不讨论NetronLight. 在NetronGraphLib…
本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 (5)Ceph 与 OpenStack 集成的实现 (6)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (7)Ceph 的基本操作和常见故障排除方法 1 Pool(池) Pool 的概念前面讲过了,Ceph 支持丰富的对 Pool 的操作,主要的包括: 列表.创建和删除 pool cep…
本系列文章着重学习和研究OpenStack Swift,包括环境搭建.原理.架构.监控和性能等. (1)OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置 (2)原理.架构和性能 (3)监控 1. 架构 1.1 总体架构 Swift 的总体架构非常的清晰和独立: # 分层(Tier) 组件(Service) 功能(Function) 特性 部署考量 1 访问层(Access Tier) Load Balancer 硬件(比如F5)或者软件(比如HAPro…
理解 OpenStack + Ceph 系列文章: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 (5)Ceph 与 OpenStack 集成的实现 (6)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (7)Ceph 的基本操作和常见故障排除方法 1. Glance 与 Ceph RBD 集成 1.1 代码 Kilo 版本中,glance-store 代码被从 glance 代码中分离出来了,地址在 https:…
本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 (5)Ceph 与 OpenStack 集成的实现 (6)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (7)Ceph 的基本操作和常见故障排除方法 Ceph 作为一个统一的分布式存储,其一大特色是提供了丰富的编程接口.我们来看看下面这张经典的图: 其中,librados 是 Ceph…
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分配和 SR-IOV (5)libvirt 介绍 (6)Nova 通过 libvirt 管理 QEMU/KVM 虚机 (7)快照 (snapshot) (8)迁移 (migration) 1. Libvirt 是什么 为什么需要Libvirt? Hypervisor 比如 qemu-kvm 的命令行虚…
***********************************************声明***********************************************************************  原创作品,出自 "深蓝的blog" 博客.欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/39803995 *******…
一.创建 SSMVCAnnoDemo 项目 点击菜单,选择“File -> New Project” 创建新项目.选择使用 archetype 中的 maven-quickstart 模版创建. 输入对应的项目坐标GroupId 和 ArtifactId 之后在项目名称中填入项目名称,这里我填的 ProjectName 和上文的 ArtifactId 相同,都是 SuperDemo. 点击确定后,等待 Maven 帮我们构建好项目的目录结构.当控制台显示 BUILD SUCCESS 就表示初始化…
一.创建 SSMVCAnnoDemo 项目 点击菜单,选择“File -> New Project” 创建新项目.选择使用 archetype 中的 maven-webapp 模版创建. 输入对应的项目坐标GroupId 和 ArtifactId 之后在项目名称中填入项目名称,这里我填的 ProjectName 和上文的 ArtifactId 相同,都是 SSMVCAnnoDemo. 点击确定后,等待 Maven 帮我们构建好项目的目录结构.当控制台显示 BUILD SUCCESS 就表示初始化…
一.创建 SSMDemo 项目 点击菜单,选择“File -> New Project” 创建新项目.选择使用 archetype 中的 maven-webapp 模版创建. 输入对应的项目坐标GroupId 和 ArtifactId. 之后在项目名称中填入项目名称,这里我填的 ProjectName 和上文的 ArtifactId 相同,都是 SSMDemo. 点击确定后,等待 Maven 帮我们构建好项目的目录结构.当控制台显示 BUILD SUCCESS 就表示初始化完成了. 初始化完成后…
背景: 基于之前两篇文章<Spring(三):Spring整合Hibernate>.<Spring(四):Spring整合Hibernate,之后整合Struts2>,了解了如何整合SSH的过程,但还不知道整合后在项目中该怎么开发使用,本文主要讲解的是基于SSH实现Employee信息查询功能的使用. 新建Employee,Department实体类,并添加对应类的hibernate实体配置文件 新建包com.dx.ssh.entities,在该包下创建Employee.Depar…
目录: Reactor(反应堆)和Proactor(前摄器) <I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor> <[转]第8章 前摄器(Proactor):用于为异步事件多路分离和分派处理器的对象行为模式> <Java NIO系列教程(八)JDK AIO编程>-- java AIO的proactor模式 <Java NIO系列教程(七) selector原理 Epoll版的Selector>--java NIO的Reac…
本文是晚辈对net/http包的一点浅显的理解,文中如有错误的地方请前辈们指出,以免误导! 转摘本文也请注明出处:Go语言备忘录(3):net/http包的使用模式和源码解析,多谢!  目录: 一.http包的3个关键类型 二.HTTP服务器的使用模式 三.HTTP服务器的执行过程 四.重定向 五.客户端的实现   一.http包的3个关键类型:Handler接口:所有请求的处理器.路由ServeMux都满足该接口: type Handler interface { ServeHTTP(Resp…
01. 了解集群架构服务器组成 基本架构组成:(用于让用户进行访问) # 前端服务部分: 1)顾客-用户 是一个访问者,请求访问网站页面 2)保安-防火墙设备 对访问架构用户进行策略控制,正常访问网站用户,可以放行进入:非法人员(黑客)访问网站,禁止进入 3)对讲机-交换机(外网) 提供架构中服务器相互通讯交流的需求(提供外部人员访问) 4)迎宾人员-负载均衡服务器 对用户的访问请求进行调度处理 5)服务员-网站web服务器 对用户的请求进行响应处理 # 后端服务部分: 1)对讲机-交互机(内网…
基本概念 操作系统中 heap 和 stack 的区别 heap是堆,stack是栈,是两种不同的数据结构.堆是队列优先,先进先出:栈是先进后出. 在java多线程中,每个线程都有自己的栈:不同的线程共享一个堆. 在java内存中,栈中存放的大多数是方法的参数.局部变量,调用完后立即释放空间:堆中存放的是由new创建的对象和数组,生命周期由JVM的垃圾回收算法决定. 什么是基于注解的切面实现 首先说切面编程:为了方便,将一些公共的类似的地方抽取出来,开发时只需要关注具体业务,这个公共类似的东西就…
本片文章续<Spring Boot 入门(九):集成Quartz定时任务>.本文主要基于redis实现了mybatis二级缓存.较redis缓存,mybaits自带缓存存在缺点(自行谷歌).本文是基于docker安装redis主从模式. 1.redis安装 (1)首先安装redis集群模式,建立redis目录,并编写主从模式docker-compose.yml文件 version: '3.1' services: master: image: redis container_name: red…