随笔分类 -  Scala

上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页
JVM编程语言
摘要:上节我们探讨了通过scalaz-stream-fs2来驱动一套数据处理流程,用fs2的Pipe类型来实现对数据流的逐行操作。本篇讨论准备在上节讨论的基础上对数据流的流动和元素操作进行优化完善。如数据流动中增加诸如next、skip、eof功能、内容控制中增加对行元素的append、insert、up 阅读全文
posted @ 2017-01-19 10:51 雪川大虫 阅读(374) 评论(0) 推荐(0)
摘要:在上节讨论里我们介绍了数据行流式操作的设想,主要目的是把后台数据库的数据载入前端内存再拆分为强类型的数据行,这样我们可以对每行数据进行使用和处理。形象点描述就是对内存里的一个数据流(data-stream)进行逐行操作。我们在上节用foreach模拟了一个流控来示范数据行的操作处理。在这节我们讨论一 阅读全文
posted @ 2017-01-12 17:58 雪川大虫 阅读(385) 评论(0) 推荐(0)
摘要:在上一集的讨论里我们介绍并实现了强类型返回结果行。使用强类型主要的目的是当我们把后端数据库SQL批次操作搬到内存里转变成数据流式按行操作时能更方便、准确、高效地选定数据字段。在上集讨论示范里我们用集合的foreach方式模拟了一个最简单的数据流,并把从数据库里批次读取的数据集转换成一串连续的数据行来 阅读全文
posted @ 2016-12-31 12:23 雪川大虫 阅读(541) 评论(0) 推荐(0)
摘要:FunDA的特点之一是以数据流方式提供逐行数据操作支持。这项功能解决了FRM如Slick数据操作以SQL批次模式为主所产生的问题。为了实现安全高效的数据行操作,我们必须把FRM产生的Query结果集转变成一种强类型的结果集,也就是可以字段名称进行操作的数据行类型结果集。在前面的一篇讨论中我们介绍了通 阅读全文
posted @ 2016-12-27 17:17 雪川大虫 阅读(921) 评论(1) 推荐(0)
摘要:大数据、多核CPU驱动了函数式编程模式的兴起。因为函数式编程更适合多线程、复杂、安全的大型软件编程。但是,对许多有应用软件开发经验的编程者来说,函数式编程模式是一种全新的、甚至抽象的概念,可能需要很长时间的学习、积累才能完全掌握和适应。对一些不算FP编程专家的人来说,如何用他们习惯的方式来使用现成的 阅读全文
posted @ 2016-12-20 09:56 雪川大虫 阅读(555) 评论(0) 推荐(0)
摘要:在Slick官方文档中描述:连接后台数据库后,需要通过定义Projection,即def * 来进行具体库表列column的选择和排序。通过Projection我们可以选择库表中部分列、也可以增加一些自定义列computed column。具体来说Projection提供了数据库表列与Scala值的 阅读全文
posted @ 2016-12-14 10:01 雪川大虫 阅读(1096) 评论(1) 推荐(1)
摘要:在上期讨论中我们介绍了Scala Macros,它可以说是工具库编程人员不可或缺的编程手段,可以实现编译器在编译源代码时对源代码进行的修改、扩展和替换,如此可以对用户屏蔽工具库复杂的内部细节,使他们可以用简单的声明方式,通过编译器自动产生铺垫代码来实现工具库中各种复杂的类型、对象及方法函数的构建。虽 阅读全文
posted @ 2016-12-06 12:30 雪川大虫 阅读(1082) 评论(0) 推荐(2)
摘要:Scala Macros对scala函数库编程人员来说是一项不可或缺的编程工具,可以通过它来解决一些用普通编程或者类层次编程(type level programming)都无法解决的问题,这是因为Scala Macros可以直接对程序进行修改。Scala Macros的工作原理是在程序编译时按照编 阅读全文
posted @ 2016-11-29 09:27 雪川大虫 阅读(3646) 评论(0) 推荐(0)
摘要:反射reflection是程序对自身的检查、验证甚至代码修改功能。反射可以通过它的Reify功能来实时自动构建生成静态的Scala实例如:类(class)、方法(method)、表达式(expression)等。或者动态跟踪当前程序运算事件如:方法运算(method invocation)、字段引用 阅读全文
posted @ 2016-10-28 09:38 雪川大虫 阅读(2486) 评论(0) 推荐(0)
摘要:通过一段时间的学习和了解以及前面几篇关于Slick的讨论后对Slick这个函数式数据库编程工具有了些具体的了解。回顾我学习Slick的目的,产生了许多想法,觉着应该从实际的工作应用角度把我对Slick目前能够达到的目的以及在现有功能优势和特点下如何进一步改进才能正真符合IT系统对数据库程序编程和运行 阅读全文
posted @ 2016-10-14 13:55 雪川大虫 阅读(1736) 评论(0) 推荐(2)
摘要:前面几篇介绍里尝试了一些Slick的功能和使用方式,看来基本可以满足用scala语言进行数据库操作编程的要求,而且有些代码可以通过函数式编程模式来实现。我想,如果把Slick当作数据库操作编程主要方式的话,可能需要先制定一套比较规范的模式来应付日常开发(也要考虑团队开发)、测试和维护。首先从项目结构 阅读全文
posted @ 2016-10-04 12:52 雪川大虫 阅读(2427) 评论(0) 推荐(2)
摘要:我在上期讨论里已经成功的创建了一个简单的Slick项目,然后又尝试使用了一些最基本的功能。Slick是一个FRM(Functional Relational Mapper),是为fp编程提供的scala SQL Query集成环境,可以让编程人员在scala编程语言里用函数式编程模式来实现对数据库操 阅读全文
posted @ 2016-09-30 09:38 雪川大虫 阅读(2591) 评论(0) 推荐(1)
摘要:看完Slick官方网站上关于Slick3.1.1技术文档后决定开始动手建一个项目来尝试一下Slick功能的具体使用方法。我把这个过程中的一些了解和想法记录下来和大家一起分享。首先我用IntelliJ-Idea创建了一个scala项目。下一步就是如何选择数据库了。Slick是集成jdbc的更高层的Qu 阅读全文
posted @ 2016-09-23 08:03 雪川大虫 阅读(4181) 评论(0) 推荐(2)
摘要:Slick (Scala language-integrated connection kit)是scala的一个FRM(Functional Relational Mapper),即函数式的关系数据库编程工具库。Slick的主要目的是使关系数据库能更容易、更自然的融入函数式编程模式,它可以使使用者 阅读全文
posted @ 2016-09-21 11:05 雪川大虫 阅读(7258) 评论(1) 推荐(2)
摘要:在前面的几篇关于Free编程的讨论示范中我们均使用了基础类型的运算结果。但在实际应用中因为需要考虑运算中出现异常的情况,常常会需要到更高阶复杂的运算结果类型如Option、Xor等。因为Monad无法实现组合(monad do not compose),我们如何在for-comprehension中 阅读全文
posted @ 2016-09-13 09:03 雪川大虫 阅读(801) 评论(0) 推荐(0)
摘要:在上一节我们讨论了通过Coproduct来实现DSL组合:用一些功能简单的基础DSL组合成符合大型多复杂功能应用的DSL。但是我们发现:cats在处理多层递归Coproduct结构时会出现编译问题。再就是Free编程是一个繁复的工作,容易出错,造成编程效率的低下。由于Free编程目前是函数式编程的主 阅读全文
posted @ 2016-09-09 08:10 雪川大虫 阅读(838) 评论(0) 推荐(0)
摘要:上篇我们介绍了Free类型可以作为一种嵌入式编程语言DSL在函数式编程中对某种特定功能需求进行描述。一个完整的应用可能会涉及多样的关联功能,但如果我们为每个应用都设计一套DSL的话,那么在我们的函数式编程中将会不断重复的功能相似的DSL。我们应该秉承函数式编程的核心思想:函数组合(compositi 阅读全文
posted @ 2016-09-08 09:21 雪川大虫 阅读(859) 评论(0) 推荐(2)
摘要:cats是scala的一个新的函数式编程工具库,其设计原理基本继承了scalaz:大家都是haskell typeclass的scala版实现。当然,cats在scalaz的基础上从实现细节、库组织结构和调用方式上进行了一些优化,所以对用户来说:cats的基础数据类型、数据结构在功能上与scalaz 阅读全文
posted @ 2016-09-06 10:01 雪川大虫 阅读(2380) 评论(0) 推荐(0)
摘要:scalaz-stream-fs2是一种函数式的数据流编程工具。fs2的类型款式是:Stream[F[_],O],F[_]代表一种运算模式,O代表Stream数据元素的类型。实际上F就是一种延迟运算机制:F中间包含的类型如F[A]的A是一个可能会产生副作用不纯代码(impure code)的运算结果 阅读全文
posted @ 2016-08-31 11:34 雪川大虫 阅读(689) 评论(0) 推荐(1)
摘要:从表面上来看,Stream代表一连串无穷数据元素。一连串的意思是元素有固定的排列顺序,所以对元素的运算也必须按照顺序来:完成了前面的运算再跟着进行下一个元素的运算。这样来看,Stream应该不是很好的并行运算工具。但是,fs2所支持的并行运算方式不是以数据元素而是以Stream为运算单位的:fs2 阅读全文
posted @ 2016-08-30 07:59 雪川大虫 阅读(588) 评论(0) 推荐(0)

上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页