iphone中了腾讯大王卡多久发货货

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
二、基于事件的Actor1、基于事件的Actor不会为每个Actor分配线程,它们运行一个线程上。一个Actor在一个线程上运行完成后,该线程可供其它Actor使用。2、实现方法:使用scala.actors.Actor类的actor方法来创建Actor。 Actor在定义后完成后立即启动,无须另外调用start()访求进行启动。[java]&Actor是构建在普通java线程之上的,每个actor都必须得到自己的线程,这样每个act方法才能有机会运行。但是线程会消耗内存,当许多Actor开始执行时,可能会造成内存不足。而scala为了节约线程,提供一个叫做react的方法。react带一个偏函数,scala执行完react方法后抛出异常,然后这个线程就可以被其它Actor使用。如下是上面两个示例的react实现:[java]&[java]&
阅读(366)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'scala Actor 初探',
blogAbstract:'参考:
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}2011年4月 Java大版内专家分月排行榜第二2010年8月 Java大版内专家分月排行榜第二2010年5月 Java大版内专家分月排行榜第二2008年2月 Java大版内专家分月排行榜第二2007年7月 Java大版内专家分月排行榜第二
2011年2月 Java大版内专家分月排行榜第三2010年9月 Java大版内专家分月排行榜第三2008年9月 Java大版内专家分月排行榜第三2008年1月 Java大版内专家分月排行榜第三2007年11月 Java大版内专家分月排行榜第三2007年9月 Java大版内专家分月排行榜第三
2011年4月 Java大版内专家分月排行榜第二2010年8月 Java大版内专家分月排行榜第二2010年5月 Java大版内专家分月排行榜第二2008年2月 Java大版内专家分月排行榜第二2007年7月 Java大版内专家分月排行榜第二
2011年2月 Java大版内专家分月排行榜第三2010年9月 Java大版内专家分月排行榜第三2008年9月 Java大版内专家分月排行榜第三2008年1月 Java大版内专家分月排行榜第三2007年11月 Java大版内专家分月排行榜第三2007年9月 Java大版内专家分月排行榜第三
2011年10月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。&&&&用Scala写的akka actor简单demo
&用Scala写的akka actor简单demo
用Scala写的akka actor简单demo,已经打包成SBT程序,因为上传大小限制依赖包没上传,用户安装了sbt后只需要执行update命令即可
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
开发技术下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
用Scala写的akka actor简单demo
所需积分:2
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
用Scala写的akka actor简单demo
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员Scala中的Actor入门笔记
1、中的并发思想与Scala中的并发编程思想
2、Scala中Actor的两种创建方式、Actor中的receive偏函数在进行模式匹配时与传统模式匹配的区别、receive具体的实现过程
3、Scala中的原生线程(即主线程)所在的Actor的获取方式、基于Actor的Case class的消息传递和Actor模型认知以及相应的优化方式
4、线程重用的概念以及线程重用的方式
1、Java中的并发编程思想与Scala中的并发编程思想
Java中的并发编程:
①Java中的并发编程基本上满足了事件之间相互独立,但是事件能够同时发生的场景的需要。
②Java中的并发编程是基于共享数据和加锁的一种机制,即会有一个共享的数据,然后有若干个线程去访问这个共享的数据(主要是对这个共享的数据进行修改),同时Java利用加锁的机制(即synchronized)来确保同一时间只有一个线程对我们的共享数据进行访问,进而保证共享数据的一致性。
③Java中的并发编程存在资源争夺和死锁等多种问题,因此程序越大问题越麻烦。
Scala中的并发编程:
①Scala中的并发编程思想与Java中的并发编程思想完全不一样,Scala中的Actor是一种不共享数据,依赖于消息传递的一种并发编程模式, 避免了死锁、资源争夺等情况。在具体实现的过程中,Scala中的Actor会不断的循环自己的邮箱,并通过receive偏函数进行消息的模式匹配并进行相应的处理。
②如果Actor A和 Actor B要相互沟通的话,首先A要给B传递一个消息,B会有一个收件箱,然后B会不断的循环自己的收件箱, 若看见A发过来的消息,B就会解析A的消息并执行,处理完之后就有可能将处理的结果通过邮件的方式发送给A。
实例程序1:
class A implements Runnable {
private int tickets = 1000;
//共享数据
public void run() {
while(true){
synchronized(this){ //加锁的机制
if(tickets & 0){
System.out.println(Thread.currentThread().getName()+&正在售第:&+tickets+&张票!&);
tickets --;
public class App
public static void main(String[] args) {
A aa = new A();
Thread t1 = new Thread(aa);
Thread t2 = new Thread(aa);
t1.setName(&窗口1&);
t2.setName(&窗口2&);
t1.start();
t2.start();
实例程序2:
class S extends Actor
override def act() =
for(i&- 1 to 100)
println(&Futher is:&+i)
object App
def main(args: Array[String]): Unit =
val s1 = new S()
s1.start()
val aa = actor
for(i&- 1 to 100)
println(&RichFuther is:&+i)
2、Scala中Actor的两种创建方式、Actor中的receive偏函数在进行模式匹配时与传统模式匹配的区别、receive具体的实现过程
①Scala中Actor的两种创建方式:
继承Actor,并实现act()方法;通过工具方法act来创建。匿名的Actor在创建的过程中将会自动启动,但是第一种方式必须要通过调用start()方法才会启动。虽然匿名的Actor与实名的Actor工作原理一样,但是Scala当中更倾向于使用匿名的Actor 。
②在scala的模式匹配当中,我们一般用不同的case匹配备选项,如果没有相应case的话,程序就会抛出异常; 但是在scala当中,偏函数receive在进行模式匹配的时候,如果没有相应case的话,程序不会抛出异常,而是悄悄的忽略掉这个消息。
③actor中receive偏函数具体的运行机制:偏函数receiv首先会通过isDefinedAt这个方法判断收件箱中的消息是否符合定义(打算处理),如果是的话, 它才会将这个消息交给我们偏函数中的apply方法进行模式匹配进行处理,如果这个消息不打算处理(false)的话,偏函数receive则会忽略掉这个消息。
3、Scala中的原生线程(即主线程)所在的Actor的获取方式、基于Actor的Case class的消息传递和Actor模型认知以及相应的优化方式
①Scala中的原生线程(即主线程)可以看做是一个Actor,当它需要接受并处理消息的时候,直接调用Actor伴生对象的self方法即可返回一个Actor实例对象,然后通过Actor实例对象的receive偏函数就可以进行消息的模式匹配并进行相应的处理。
②Scala中的case class与case object有两种功能:消息传递与模式匹配。在声明case class的过程中,若在扩展的属性前面没有加修饰符var与val,默认的修饰符为val,意味着在消息传递的过程中的属性是不可变的,因此特别适合消息传递。在Scala的Actor当中,case class与case object常与Actor进行结合使用。
③Actor的模型(大概图示:)
为了避免Actor接受到的消息无法匹配到receive偏函数中的case备选项,进而导致Actor的邮箱被一些无关的信息占满,一般情况下,我们会在receive偏函数中加一个case _备选项,使得receive方法可以处理掉邮箱中收到的所有消息,进而避免邮箱被无关的消息占满。
④不同Actor之间可以进行消息通信,Spark不同之间的通信大部分都是通过Akka的方式,而Akka是基于Scala中的Actor。
实例程序1:
4、线程重用的概念以及线程重用的方式
①所谓线程重用就是一个线程执行完毕之后,这个线程并没有立即被销毁、回收,而是可以继续被使用。
②在Java当中,所谓执行一个线程,就是执行本线程所对应的run方法,若run方法里面的代码执行完毕,这个线程就会结束,此时线程默认就会得到回收(销毁),因此为了使线程得到重用,即不被销毁、回收,我们常常将run方法里面的代码块加上一个循环。
③在Java当中,线程重用的具体方式是run方法里面的代码加上循环,在Scala当中,线程重用的方式就是Actor通过while(true)或者loop循环不断的关联自己的邮箱,使自己的邮箱不断的处于循环状态。
实例程序1:
如有问题,欢迎大家留言指正!
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'我为什么想并且要学习 Scala
我的图书馆
我为什么想并且要学习 Scala
【数盟致力于成为最卓越的数据科学社区,聚焦于大数据、分析挖掘、数据可视化领域,业务范围:线下活动、在线课程、猎头服务、项目对接】作者:abbey&为什么学习函数式编程&在阅读DDD巨著《Patterns, Principles, and Practices of Domain-Driven Design》的过程中,Scott在第5章提到了使用函数式编程语言配合贫血模型去实践DDD的一种思路,这激发了我的无限遐想。在软件开发领域,我们已经拥有了许多的抽象方法论和大量的实现技术。但我个人认为,这一切归根结底,都是人类思维在软件开发领域的具体表达方式。而人类在认识和分析软件所要解决的业务领域问题时,思考的内容不外乎由两个部分组成:『业务流程』与『业务规则』。前者,回答了业务活动中先做什么后做什么的问题;后者,则回答了遇到什么情况时应该怎么做的问题。两者结合后,得到我们需要的业务结果,或者叫作“实现业务目标”。&再想想目前学习和掌握的面向对象的一系列方法,又是如何将上述思维结果映射到软件中去的呢?我认为是这样的:&对于业务流程,我们将其表达为若干对象之间的合作,比如UML里序列图的对象与消息,进而具化为具体的类及其职责,比如类及其若干业务方法。对于业务规则,我们将其表达为若干的判断逻辑,比如UML流程图里的判断分支,进而具化为业务方法里的if-else语句,或者再复杂一点,表达为工厂、策略等设计模式的实际运用。&然后,我认为,对于复杂业务规则的梳理,可以象数学归纳法一样进行演绎:假设一个函数y=f(x),给定x的定义域,确定y的值域。特别是在排列组合等方面的一些问题,也经常采用递归的方式来解决。所以,从这个角度讲,函数式编程更贴近人类思维习惯,所以让我自然而然地把目光转向了它。&为什么选择Scala&在选择具体的函数式编程语言时,我首先想到的是它最好是同时能支持面向对象编程的。因为即便LISP作为函数式编程语言的先祖,诞生已长达半个世纪,但单纯的函数式编程语言与面向对象编程语言相比,在抽象领域概念、组合系统模块、实现信息隐蔽等方面存在一定的差距,所以一直没有成为软件开发的主流。&信息隐蔽原理:在西安电子科大蔡希尧与陈平老师于1993年合作出版的《面向对象技术》一书中是这样描述的:把需求和求解的方法分离;把相关信息——数据结构和算法,集中在一个模块之中,和其他模块隔离,它们不能随便访问这个模块内部的信息。&其次,由于我的语言路线是从Pascal → C → C
→ C#,所以我希望能选择一种风格近似于C、强类型的函数式编程语言。在比较了F#、R、ErLang等几种常见的函数式编程语言之后,我最终选择了Scala。&Scala有何优势&注:以下内容,节选翻译或参考自《Programming in Scala》第1章、第3章,《Programming Scala》第6章,不算完整意义上的个人心得。&函数式编程的优势&纯的函数是没有副作用的。无论何时何地,对于一个函数y=f(x),给定x必定得到y,不会因此产生二义结果。因此无论对于代码测试还是并发,由于给定输入必定得到预期输出,而不受其他因素干扰,所以能有效减少Bug产生。在函数式编程里,大量使用immutable的值。这意味着函数运算的结果总会创建一个新的实例,避免了通常并发环境下为防止数据共享冲突而采取的保护机制。尽管这需要额外的Copy操作,但Scala针对性地提供了高效的Copy实现,以及延迟计算等弥补机制。函数是一等公民。函数作为表达式的一部分,可以借由函数之间的嵌套、组合,实现复杂的判断逻辑。&Scala语言本身的优势&Scala是面向对象与函数式编程的混合语言,所以能有效结合二者的优点。Scala属于Java生态圈,可以在JVM平台上与Java一起编译运行,所以许多Java的框架、工具都可以直接应用于Scala语言编写的项目。Scala视一切数据类型皆为对象,且支持闭包、lambda、by-name参数等特性,语法简洁明快。Scala使用Actor作为并发模型,与Akka框架自然契合。这是一种区别于传统的、基于数据共享、以锁为主要机制的并发模型,其特点在于以Actor为基本单位、没有数据共享、基于消息传递实现Actor之间的协作,因此可以有效避免死锁、减少竞争。最后,如果有朝一日要转向大数据领域,有Spark这样的大型框架作为支撑。知乎:与 Hadoop 对比,如何看待 Spark 技术?&Scala对实践DDD有何意义&说了那么多,我的根本目的还是要将Scala作为实现DDD的主要武器。那么试想一下,Scala在我们实现DDD的过程中能有哪些帮助呢?我暂且胡侃乱诌如下:表示值对象、领域事件等元素更直观。值对象、领域事件在DDD里都应该是immutable的,以往多采取POCO形式表示,现在改用Scala里的val以及case class表示,在语法层面就直观地表明是不可修改的。在类的方法层面实现CQRS时有语法支持。用Scala里的Function(返回类型为非Unit)对应CQRS里的Query,保证类的方法没有副作用;用Procedure(返回类型为Unit)对应CQRS里的Command,明确表明这一类方法会产生修改状态等副作用。这同样从语法层面就能对二者进行明确区分。模式匹配丰富了函数操作。除了正则表达式,Scala形式多样的模式匹配语法,为提取数据、完成数据分组聚合等运算、实现逻辑判断提供了强大支持。比如定义def sum_count(ints:Seq[Int) = (ints.sum, ints.size)这样一个函数后,我们可以这样调用,以得到一个1至6的整数序列的整数值合计,及该序列的尺寸: val(sum, count) = sum_count(List(1, 2, 3, 4, 5, 6))。为实现DSL提供有力支持。Scala自带有解析框架,加上灵活的函数语法支持,要自己实现一套DSL及其相应的语法解析器将不再困难。比如在配置文件里这样的一条配置语句,表示退休条件为年龄达到60周岁或者工龄届满30年:retire = (Age &= 60) || (ServiceLength &= 30)。以往的方式是自己写一个语法解析器,把这条文本转换成相应的Specification对象,然后扔给聚合去使用。现在有了Scala的帮助,就使编写语法解析器这一环节的工作量大大减少。合理的高阶函数设计,使规则编写得到简化。比如打折规则、费用报销规则,以往可能需要若干层的if-else嵌套,现在则将通过高阶函数得到大幅简化。对此,我强烈推荐刘光聪先生的视频Refactoring to Functions,你会在刘先生的重构过程中发现高阶函数的强大。Actor为高效并发打下基础。Actor内部完全自治,自带用于存储消息的mailbox,与其他Actor只能通过消息进行交互,每个Actor都是并发的一个基本单位。这些特点,非常适合于采取Event Sourcing方式实现的DDD。每个聚合都好比一个Actor,在聚合内部始终保持数据的强一致性,而在聚合之间交互的领域事件则好比Actor之间的消息,聚合之间借由领域事件和Saga保证数据的最终一致性。Trait成为AOP利器。Trait是Scala的另一大特色,它就象AOP织入一样,能动态地给某个类型注入方法或者结构。比如配合类Circuit和with后面那4个Trait的定义,val circuit = new Circuit with Adders with Multiplexers with Flipflops with MultiCoreProcessors这样就创建了一个带有加法器、乘法器、触发器和多核处理器的元件。隐式实现为类型扩展提供支持。对应C#里的静态扩展方法,Scala通过implicit为实现数据类型的方法扩展提供了便捷,成为Trait之外的另一个功能扩展手段。能降低常见BDD框架的学习成本。尽管这一点可能比较牵强,但我正在努力摸索如何将BDD与DDD结合,而常见的Cucumber、Spock等一些BDD框架,其语法与Scala比较相近,所以我才有如此一说。&有哪些Scala学习资料&以下是我目前主要的学习资料,并衷心欢迎各位留言补充。&书籍Programming in Scala:由Scala语言的设计师Martin Odersky编写,循序渐进,配合了大量实例,入门必读吧。Programming Scala:视角与上面那本有点不一样,没有Scala语言基础会感觉很困难,适合掌握了基本语法后温故而知新。&在线文档与视频Scala 官方文档:Scala的官网,作为寻找资料的出发点是不错的。Scala 课堂:中文版的Scala基本语法在线课堂。Scala Synatax Primer:由Jim McBeath整理的Scala语法概要,可以当字典用。The Neophyte’s Guide to Scala:很出名的一个Scala入门指南,以Scala中的提取器Extractor作为实例开始。Scala 初学指南:这是上面那本指南的中译本。Effective Scala:中文版的Scala高效编程SBT中文入门指南:Scala Build Tool&社区Scala 中文社区:不算活跃,原因你懂的。Scala User:Scala入门者聚集地,没有Stack Overflow那么严格,但也需要点爬墙的身手。&SDK及IDEJava SE:先装这个Scala SDK:再装这个SBT:然后装这个IntelliJ IDEA:最后装这个,就能比较方便地开始Scala编程了&写在最后&最近读的书很多也很杂,DDD、BDD、Scala、Cucumber以及Java基础等等都有涉及,真恨不得一口吃成个大胖子。由于时间和精力有限,所以现在知识消化很成问题,迟迟没有进入学以致用的环节,只能先这样纸上谈兵了,好歹先把自己在学习过程中的一些思考、看到的好东西先记载下来,以备将来之需。原文链接:/topics/134?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io&
发表评论:
TA的最新馆藏[转]&[转]&[转]&

我要回帖

更多关于 小米商城多久发货 的文章

 

随机推荐