java akka main方法结束 不退出_摸得着的Scala越不过的AKKA

自从开始学写文后,总有种责任感催促自己去记录,记录些新鲜的玩意儿。无奈能力有限,其实想象中的我应该是一天一更的,毕竟有“每日科研”的完美设想,但是现实中的确实一周一更都困难!831c0a95270595c939f603553cba02b0.png,毕竟还是要诚实的记录自己真正能够掌握的内容。

随着年龄的增长,阅读已经成为一种障碍,尤其是对本人这种存在阅读障碍症状的患者,很难极具耐性地、完整地读完一段文字,更多的还是要依靠关键词和想象来完善接收到的信息。典型的记性不好,又没有耐心!但最近我发现了一种新的方法,特别有助于增加耐性,以及平复情绪,这就是撸代码了。强烈建议开展成为一种新型的心理疗法,应用去医学的心理治疗和康复中,另外,老年大学也应该开展下程序语言这门课程,让老同志们白天撸撸代码,打发时光,晚上跳跳广场舞缓解颈椎,也没准会成为新时代养老的一种风向标。91f2439d4cec2b0e1bbe5a0690b28ef2.png

来,回到主题,为什么会遇见Scala呢?主要还是因为手欠,点了个大数据的公众号,其实也不赖我,公众号科研毕竟是个不小的势头2667da9349bf33d9463435c0ee35802e.png,了解点信息也不是什么坏事!91f2439d4cec2b0e1bbe5a0690b28ef2.png,在一则介绍大数据工程师基础技术的文章中,我发现scala最为一门编程语言赫然在列,这让我很迷惑,瞬间就陷入自我怀疑阶段了,scala是门语言呀?我应该没有记错啊?难道是个框架?这怎么可能?于是立刻百度了下,果然Scala是门变成语言,我没有记错的。15d5cdb0449f36653eb92dd5d230ba0d.png

那么问题来了,为什么提到一套大数据技术,里面涉及了很多优秀的框架,就像耳熟能详的Hadoop,Flink,Spark等等,一门编程语言为什么会受到如此高的礼遇呢?要知道程序员的世界,任何语言都可以,我们的工作说白了就是优雅的与计算机沟通,我说的它能懂,它展现的是我需要的,这就恰如其分了,因此,绑定语言这种事情就很不科学了。

于是去网上逛了一圈,大部分贴子都明晃晃的晒出标题,大体意思都是“我为什么放弃scala,go才是最好的选择!”之类的2667da9349bf33d9463435c0ee35802e.png。不可自拔的跟着圣战了一波,很多帖子都说到,scala的学习曲线问题,爬坡确实是个难度!后来把go语言和scala语言都看了下,就是差点丢弃scala的时候,突然想起了大数据发展了这么长的时间,难道意识不到这个问题吗?

首先,对于任何一门程序语言,在程序员面前都不存在学习曲线问题,这个我是深信不疑的,存在的问题只有一个就是老板给不给钱,有钱能不能让鬼推磨我不知道,但是有钱绝对可以让程序员变成鬼,所以学习曲线神马的都是小白的理解!有一种观点我想还是比较合理的,这种观点认为scala是基于jvm的,现有的很多微服务开发,更多的是在docker上的,一旦大量编排发生,jvm带来的开销就是一种损失。大型的项目我也没弄过41745608bfb80826ba5b6f4fb1e8f6e5.png,不过说的合情合理的!对了还有一种观点是说scala的编译很慢,这个我服了,确实很慢!

正当我也准备放弃scala转而拥抱go的时候,突然还想起了一个老话题,就是“生态”,如果现有大数据框架更多的是基于scala开发,或者对scala更加友好,那么无疑这才是最核心的问题。纵使scala有百般缺点,但是世界离不开它!91f2439d4cec2b0e1bbe5a0690b28ef2.png,对,说的就是你看不惯它,但是又无法干掉它!91f2439d4cec2b0e1bbe5a0690b28ef2.png,后来咨询了下好朋友发现还真差不多是这么回事!比如,若是自我封装,那么框架后期升级怎么维护,工作量有多大,价值意义何在?如果有瓶颈,那讲不了了,但是这后期的代价也需要进行评估,基本属于牵一发动全身!所以公司会更倾向配合维护生态的!

说了这么多,那最初那位用scala去搞事情的人岂不是罪人?于是我亲自体验了一下scala,撸了些代码!一句话总结就是一时scala一时爽,一直scala一直爽!也许是这次选择了vim编写的缘故,总之身心愉悦!

这次,测试了之前想写的一个小程序,情况是这个样子的,原计划写个用户管理的程序,发现好久没设计程序了,思路不好,总感觉不清晰,没有科学的参考性,后来感觉写个元数据库的也应该是个不错的想法,以后想怎样改动表都可以在元数据库中进行维护,再开发新内容的时候就可以直接通过元数据库直接生成了,但这次肯定是没啥价值了因为要是管理和生成的表太少,就是在浪费生命啊!总之先来一版再说别的,毕竟代码写起来才是刚需!

5ad79a8e4fb9cb14b8c29a577157bccd.png

大体的功能就是这样了,先创建一套元数据库,然后将数据库基本信息录入元数据库,最后读取元数据自动创建应用表。

首先,搭建开发环境,我的选择是jdk1.6+,scala,vim的组合,其实开始用的是openjdk,正常的编译是没有问题的,但是后面AKKA的缘故,没办法又切换回jdk了,不想用jdk的原因,就是java被oracle收购后出了一堆新条款,不是我心中那个java了。这次没有选择IDE的原因,主要是由于我的电脑无力支撑了,文本的编辑更适合现在的配置,说起来这次还有点小骄傲,当时学习java的时候都是直接eclipse的,这次脱离了IDE才是最爽的。

其实代码没啥说的,scala对数据库的访问,主要还是依赖java的JDBC,不得不说,这方面感觉要比go语言舒服得多,毕竟备靠大树好乘凉嘛!这里晒几个图,体会一下用vim的感觉有多爽149c110fcec607ba39879530f5a4a2e6.png

94b5096cd6f32b6d477e9fb8913bc188.png

这个是初始化元数据库的部分。

59f6e830c20e392468c1362d66860bf1.png

这个是对元数据判断的部分。

d3b607390568be818a10f9fab862f83f.png

这个是数据库访问的部分,数据库选定sqlite,主要是单机其它也带不起来。bdb8262a5f024dabbfc55eb256d1a28f.png

当然,从代码中也能开出,程序的编写思路和其它面向对象,或者面向过程语言没啥区别,现在也只能说是开始接触阶段,更多的还是要通过项目进行系统的训练的,这里介绍个编译点,这个点我实验了一天才搞懂怎样对scala程序进行组织编译,毕竟没用IDE这个过程还是不能省的,直接上图,源码的目录结构如下:

2d685c5f2d3cd0080db0fdb9b82b23a2.png

sqldb.db就是我用的数据文件了,application与tools分别是两个包,目的就是将这两个包编译到一起,编译过程如下图:

602f75451e935267c0cdbfdb4cc75266.png

scalac是scala语言的编译器,最终编译好的程序会放入bin目录内,-classpath指定了编译用到的程序包。

程序的执行过程如下:

622d9202cbf392a5ac88fa5bcbf028ee.png这里application.main.cpliu.MyMain就是我的主程序所在的包了。至此,编译基本完成。

c8593a836b91f4b5975ba1c24a095e66.png

这里数据库中填充了10000条数据,顺便测试了下性能,其实不咋地!当然顺序插入的,这个性能也可以理解了!e468668aaed3d6b5bcbfae19aaf3c384.png

程序写到这里可以说,基本的开发环境搭建是没有问题的,但是并没有发挥scala的优势,其主要原因,scala中的伴生对象并没有深入的研究,scala采用了object来做单例模式的伴生,这样会衍生出更戏剧性的设计模式,感觉这种灵活性也是相对难掌握的。

那么为什么题目会说,越不过的AKKA呢,AKKA项目的优越性,在于高并发的处理,是一种新的并行理念,几乎是种设计哲学,每个actor都独立的保护状态,行为逻辑,彼此沟通使用信息,这和真实的人类生存环境更接近!这种并行、并发的好处在于消除了传统线程中并行的锁问题,让并发,并行,真正的自由自在,更适合多核机器的发展。所以说掌握了scala的第一步其实就是先要有能力征服AKKA,于是,下定决心,实验了几天,毫无疑问失败了!831c0a95270595c939f603553cba02b0.png,必须承认对于小白来讲,scala的学习曲线还是有点高的!

为什么实验AKKA会失败呢?先是从IDE说起,AKKA的官网上,并未找到开发的软件包,虽然提供了源程序,但是并未编译,实验了一下编译,太慢了,我电脑反正不行,谁爱行就行吧!实际上,查看了AKKA官网上的介绍,可以知道AKKA更愿意推荐Maven的资源库,直接配置Maven去下载,而我的搭建方式并不合拍,于是只能找到AKKA官方事例中的引用包,借来用一用,虽然编译通过,但是新问题出现,个人认为关于AKKA的教程并不完好,写法很多,真正掌握还是需要系统梳理的,不能系统梳理自然不能搞清楚调试原理,反过来对AKKA理解到位了,对scala语言本身也有更深刻的理解,最好还是求助些教材,这样才能事半功倍!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值