在没有为Actor作配置的情况下,每一个ActorSystem将有一个缺省的派发器。该缺省派发器可以被配置,默认是使用指定的default-executor的一个Dispatcher
Akka Dispatcher应用
配置文件
application.conf
内容
1 | DispatcherExample{ |
在没有为Actor作配置的情况下,每一个ActorSystem将有一个缺省的派发器。该缺省派发器可以被配置,默认是使用指定的default-executor的一个Dispatcher
application.conf
内容
1 | DispatcherExample{ |
Akka是用scala编写的actor模型框架。它在使用中不需要锁和多线程,每个Actor在独立空间中进行数据操作,Actor之间并不直接通信,而是通过了消息来相互沟通,每一个Actor都把它要做的事情都封装在了它的内部,操作都是异步进行的。
理论上来讲,每一个Actor都拥有属于自己的轻量级线程,保护它不会被系统中的其他部分影响.因此,我们在编写Actor时,就不用担心并发的问题, 通过Actor能够简化锁以及线程管理.
它可以用于高并发、分布式场景,需要注意的是,Akka消息的传递不保证绝对可靠投递,当然这带来了好处是整个实现简单.
Actor具有以下的特性
介绍Akka-Cluster
前 需要先说一下Akka-Remoting
.
Akka-Remoting
一种ActorSystem之间Actor对Actor点对点的沟通协议.通过Akka-Remoting来实现一个ActorSystem中的一个Actor与另一个ActorSystem中的另一个Actor之间的沟通.在Remoting功能之后,Akka又发展了集群Cluster功能.Akka-Cluster
是基于Akka-Remoting之上的新一代分布式运算环境,所以Remoting已经成为了Akka-Cluster的内部支持功能,在生产环境中的分布式运算应该尽量使用Akka-Cluster; Akka-Cluster可以在一部物理机或一组网络连接的服务器上搭建部署.
简单来说Akka-Cluster将多个JVM连接整合起来,实现消息地址的透明化和统一化使用管理,集成一体化的消息驱动系统.最终目的是能够把一个大型程序分割成多个子程序,然后部署到很多JVM上去实现程序的分布式并行运算.更重要的是:Cluster的构建过程与Actor编程没有牵连,当Cluster把多个ActorSystem集合成一个统一系统后,我们可以用在单一ActorSystem里编程的习惯方式编写分布式运算程序.由于在单一机器上就可以配置多个节点形成一个集群,我们开发的分布式程序可以在单机或多机群上运行,不同的只是如何部署和配置集群环境.
本篇集合Akka应用-分布式计算应用展示在Spring项目中做分布式计算.
1 | [root@localhost spring-akka ]$ tree akka-task |
由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session。 Session是保存在服务端的,有一个唯一标识。在大型的网站,一般会有专门的Session服务器集群,这个时候 Session 信息都是放在内存的。
思考一下服务端如何识别特定的客户?这个时候Cookie就登场了。每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。 实际上大多数的应用都是用 Cookie 来实现Session跟踪的,第一次创建Session的时候,服务端会在HTTP协议中告诉客户端, 需要在 Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,我就知道你是谁了。 有人问,如果客户端的浏览器禁用了 Cookie 怎么办?一般这种情况下,会使用一种叫做URL重写的技术来进行会话跟踪, 即每次HTTP交互,URL后面都会被附加上一个诸如 sid=xxxxx 这样的参数,服务端据此来识别用户。
Cookie其实还可以用在一些方便用户的场景下,设想你某次登陆过一个网站,下次登录的时候不想再次输入账号了,怎么办? 这个信息可以写到Cookie里面,访问网站的时候,网站页面的脚本可以读取这个信息,就自动帮你把用户名给填了,能够方便一下用户。 这也是Cookie名称的由来,给用户的一点甜头。
Weex 是一套简单易用的跨平台开发方案,能以web的开发体验构建高性能、可扩展的native应用,出自阿里团队.
安装前置条件: Weex安装前需要安装Node环境,点此下载
1 | [elonsu@localhost Elonsu ]$ node -v |
npm 是一个 JavaScript 包管理工具,它可以让开发者轻松共享和重用代码。
1 | [elonsu@localhost Elonsu ]$ npm install -g week-toolkit |
国内开发者可以考虑使用淘宝的npm镜像cnpm安装weex-toolkit
1 | [elonsu@localhost Elonsu ]$ sudo npm install -g cnpm |
安装结束后你可以直接使用weex
命令验证是否安装成功,它会显示weex命令行工具各参数:
1 | [elonsu@localhost Elonsu ]$ weex |
java.util.date和java.time.LocalDateTime格式化
1 | /** |
React用于web应用开发,ReactNative采用React方式进行移动应用开发.
ReactNative采用React预发,用于进行JavaScript跨终端应用开发,既拥有原生Native的交互体验,又能够保留React的开发效率.使用灵活的Html和Css布局,使用React语法构建组件,然后同时运行在Ios和Android平台上.
Mac下安装Homebrew(非必须)
安装操作
1 | /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" |
建议不定时的更新
1 | [elonsu@localhost ~]$ brew update && brew upgrade |
安装NodeJs
安装react前需要保证已经安装了nodeJs,下载地址:https://nodejs.org/en/
1 | [elonsu@localhost ~]$ brew install node |
mac系统安装react-native
1 | [elonsu@localhost ~ ]$ node --version |
安装Watchman和Flow,监控文件变化和类型检查的。
1 | [elonsu@localhost ~ ]$ brew install watchman |
React是一个用于构建用户界面的JavaScript库。
React主要用于构建UI,其本事不是一个MVC框架,只是是MVC中的V(视图)。
React起源于Facebook的开源项目,诞生之初用来架设Instagram网站。
声明式设计 − React采用声明范式,可以轻松描述应用。
高效 − React通过对DOM的模拟,最大限度地减少与DOM的交互。
灵活 − React可以与已知的库或框架很好地配合。
JSX − JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但我们建议使用它。
组件 − 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。
单向响应的数据流 − React 实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。
CountDownLatch是一个同步辅助类,这个类能够使一个线程等待其他线程完成各自的工作后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后再执行。
CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。
1 | @Test |