Akka边学边写(2)-- Echo Server】的更多相关文章

EchoServer 上篇文章里,我们用Akka写了一个简单的HelloWorld样例,对Akka(以及Actor模式)有了初步的认识.本文将用Akka写一个EchoServer,看看在Actor的世界里,怎样使用TCP协议. Github项目 照例.EchoServer的代码被放在了Github上.EchoServer比HelloWorld略微复杂一点,一共同拥有三个类.例如以下图所看到的: Main 这次先从主类入手: main()方法的第一行创建了一个Actor系统,名字为mySystem…
前面几篇文章用Akka写了HelloWorld和EchoServer,为了更进一步学习Akka,本文将会实现一个非常小的RPG游戏server:MiniRPG. 游戏逻辑 由于是迷你RPG,所以逻辑非常easy.server能够处理四种操作:创建玩家.给玩家加经验.升级.查询玩家信息.以下是Player类的代码(Getters和Setters省略): public class Player { private int id; private String name; private int ex…
Akka Akka是什么呢?直接引用Akka站点上面的描写叙述吧: Akka is a toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on the JVM. 反正我认为Akka是比較难上手的,并且文档对于新手来说,也不太友好.本文会用Akka写一个Hello World程序,从这个程序入手,介绍Akka的一些基本概念. he…
Akka的IO层设计能够參考这篇文档,本文简介一下ByteString的设计. Immutable消息 Actor之间是通过消息沟通的.但为了避免同步问题,消息必须是Immutable. 因此.Akka无法使用byte[]或ByteBuffer.而是设计了ByteString来表示二进制数据.理解这一点非常重要,由于ByteString是不可变的.所以ByteString的非常多看似改动状态的方法实际上都是返回一个新的ByteString实例. 假设对String或BigInteger等Java…
1.创建Maven工程 1.1 父节点的pom.xml代码(root pom文件) 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLo…
再学 socket 之非阻塞 Server 本文是基于 python2.7 实现,运行于 Mac 系统下 本篇文章是上一篇初探 socket 的续集, 上一篇文章介绍了:如何建立起一个基本的 socket 连接.TCP 和 UDP 的概念.socket 常用参数和方法 Socket 是用来通信.传输数据的对象,上一篇已经研究了如果进行基本的通行和传输数据.因为,在这个互 联网爆发的时代,做为 Server 的 socket 要同时接收很多的请求. 通过阅读:地址,强烈推荐阅读原文. 整理了下面的…
[z]https://www.felix021.com/blog/read.php?2068 花了两天的时间在libevent上,想总结下,就以写简单tutorial的方式吧,貌似没有一篇简单的说明,让人马上就能上手用的. 首先给出官方文档吧: http://libevent.org ,首页有个Programming with Libevent,里面是一节一节的介绍libevent,但是感觉信息量太大了,而且还是英文的-.-(当然,如果想好好用libevent,看看还是很有必要的),还有个Ref…
下面假定已经学习过基本的socket编程(socket, bind, listen, accept, connect, recv, send, close),并且对异步/callback有基本的认识. 基本的socket编程是阻塞/同步的,每个操作除非已经完成或者出错才会返回,这样对于每一个请求,要使用一个线程或者单独的进程去处理,系统资源没法支撑大量的请求.Posix定义了可以使用异步的select系统调用,但是因为其采用了轮询的方式来判断某个fd是否变成active,效率不高o(n).于是各…
1. UDP简介 UDP 和TCP 的区别包括 1. 面向字节流和面向报文 2. TCP必须要建立连接后才能进行数据交换,但是UDP则并没有连接的建立和释放过程.面向字节流说明,tcp报文段(segment)是没有边界的,当服务器发送多个报文段到客户端时,客户端可能会把着多个报文段合并成一个报文段进行接收.但是对于UDP来说,数据是通过报文段进行传输的. 如果说TCP协议可以用打电话去比喻,那么UDP协议可以用邮箱来形容.用邮箱传递信息时,虽然有丢失的可能性.但是用户1发送的信件和用户2接受的信…
当标签上写了runat="server" 后,<%%>就会无效 //这是错误的写法 <input type="hidden" runat="server" id="hid_url" value="<%=url %>" /> //正确写法应该是去掉 runat="server",这样才能正常的使用<%%>来绑定数据 <input typ…
set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo ALTER TRIGGER [insertReplyToic] ON [dbo].[bbsReplyTopic] AFTER insertAS BEGIN --SET NOCOUNT ON; -- Insert statements for trigger here declare @uid int,@topicId int,@Rcontent nvarchar(max),@Rtime datetime,@c…
如何把标准cout 输出到 自己写的web server 如何把标准cout 输出到 自己写的web server 如何把标准cout 输出到 自己写的web server cgi的功能? 有时间实现下?…
研究了3周吧,本来打算用pthreads+event扩展的,结果event扩展太原始了,太多函数了,实在不知道怎么在外部随时发送数据给客户端,所以改用libevent, 改用libevent之后花了2个小时就运行起来了. 当然并不敢说稳定,而且有个地方用了一个"适应"bug的地方,避免bug 两个扩展都从pecl.php.net下载就可以了, 安装,不想写了,16:25了还没吃早饭 午饭 上代码,欢迎讨论: 我的QQ群: PHPer&Webgame&移动开发,群号:95…
在前面几篇讨论里我们都提到过:Akka-http是一项系统集成工具库.它是以数据交换的形式进行系统集成的.所以,Akka-http的核心功能应该是数据交换的实现了:应该能通过某种公开的数据格式和传输标准比较方便的实现包括异类系统之间通过网上进行的数据交换.覆盖包括:数据编码.发送和数据接收.解析全过程.Akka-http提供了许多网上传输标准数据的概括模型以及数据类型转换方法,可以使编程人员很方便的构建网上往来的Request和Response.但是,现实中的数据交换远远不止针对request和…
1. TCP Server The server’s job is to set up an endpoint for clients to connect to and passively wait for connections. The typical TCP server goes through two steps: 1. Construct a TcpListener instance, specifying the local address and port, and call…
背景 最近处理一个 bug 很有意思,有客户反馈某个配置文件解析失败了,出错的那行的内容就只有一个字母 a. 最开始以为是谁改动了处理的脚本,但要到了问题代码中的脚本,比较发现跟库上是一样的. 又经过一番查找,才发现原来是脚本中的一行 echo 引入的. 问题代码 出问题的那行 bash 脚本是这样, echo 一个字符串到某配置文件中. echo [partition] >> xxx.config 这行平平无奇的代码在大多数人的环境下,确实是正常运行的,但某些情况下会出 bug,那就是当运行…
说明:我是先上手做一些简单的例子,然后在尝试的过程中理解Django的原理,笔记也是按这个思路来的. 一.Django结构与基本文件介绍 1. django-admin.py 工程管理工具,主要用于创建项目和app等.例:django-admin.py startproject project_example会创建一个名为project_example的工程,目录结构如下:|-- project_example|    |--project_example|        |-- __init_…
常有人困惑php的socket服务,现在有libevent和多线程了,但是我还是整一个select的 <?php $addr = '0.0.0.0'; $port = 1234; $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); if (!socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)) { echo 'Unable to set option on socket: '. s…
1.An abstract IPC service.  IPC calls take a single {@link Writable} as a parameter, and return a {@link Writable} as their value.  A service runs on a port and is defined by a parameter class and a value class. 2.共有5个内部类ExceptionsHandler,Call,Listen…
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <uv.h> #define DEFAULT_PORT 7000#define DEFAULT_BACKLOG 128 uv_loop_t *loop;struct sockaddr_in addr; void alloc_buffer(uv_handle_t *handle, size_t suggested_size, uv_…
①第一个网页 <h2>英雄联盟(电子竞技类游戏)</h2> <p><b>(英雄联盟)</b>(简称lol)是由美国<i>Roit Games</i>开发,中国大陆地区由腾讯游戏运营的网络游戏.</p> <p><b>(英雄联盟)</b>除了即时战略.团队作战外,还拥有一百多位特色各异的英雄,丰富的地图及玩法.自动匹配的战网平台.包括天赋树.召唤师系统.符文等元素.[<in…
Envoy Proxy 动态API的使用总结 Envoy Proxy和其它L4/L7反向搭理工具最大的区别就是原生支持动态配置. 首先来看一下Envoy的大致架构 从上图可以简单理解:Listener负责接受外部的请求,然后经过Filter/Router处理之后,在转发到具体的Cluster. 其中Listener,Router,Cluster和Host地址都是可以动态配置的,配置这些数据的服务就称之为X Discovery Services,简称XDS. 本文主要描述如何编写XDS Serve…
打开仪表盘添加角色和功能向导 下一步 等待安装完成 打开iis 新建站点 点击 选一个目录作为 ftp文件服务器的存储路径 后面就和iis 创建站点一样了 匿名就不需要密码 就可以访问基本需要特定的账号才能访问 授权访问 选择所有人  也可以指定的用户组  在对权限 选择是读取还是写入 点击完成 让后找到授权隔离 如下选择 点击应用 接下来打开ftp服务器的物理路径  建立一个叫LocalUser 文件 在windows+r cmd 打开  记住用管理员权限打开我们要添加用户 net user…
简评:我们已经从「Python Socket 编程概览」了解了 socket API 的概述以及客户端和服务器的通信方式,接下来让我们创建第一个客户端和服务器,我们将从一个简单的实现开始,服务器将简单地回显它接收到客户端的任何内容.本文将详细解释服务器部分的代码. 下面是服务器代码保存到 echo-server.py文件: #!/usr/bin/env python3 import socket HOST = '127.0.0.1' # Standard loopback interface a…
import requests import pymssql url = 'https://v1.cn-abs.com/ajax/ChartMarketHandler.ashx' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36' } # 每个交易场所每一年的发行金…
socket通信机制 文件加载机制 手抄代码 test\\2017…
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域的工作原理.今天这篇文章对JavaScript作用域和作用域链简单的介绍,希望能帮助大家更好的学习JavaScript. JavaScript作用域 任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期.在JavaScript中,变量的作用域有全局作用域和局部作用域两种. 1.全局作用域(Global Scope…
Netty用户指南 一.前言 1.问题 当今世界我们需要使用通用的软件或库与其他组件进行通信,例如使用HTTP客户端从服务器中获取信息,或通过网络服务调用一个远程的方法.然而通用的协议及其实现通常不具备较好的伸缩性.所以问题看起来是我们怎么不使用通用的HTTP服务器去传输大文件.e-mail.实事数据.多媒体数据等.我们需要的是针对特定问题而进行优化的协议实现.例如我们可能需要重新实现一个HTTP服务器来与AJAX的客户端进行通信.另外一种情况是需要处理历史遗留的协议保证与旧的系统兼容.这些例子…
  写在前面  ​ 大家好,我是作者尼恩.目前和几个小伙伴一起,组织了一个高并发的实战社群[疯狂创客圈].正在开始 高并发.亿级流程的 IM 聊天程序 学习和实战,此文是:   疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之 -30    Spring Netty 整合实战 疯狂创客圈 死磕Netty 系列之11 主要介绍的是SpringBoot整合Netty.在使用Netty之前,建议先了解Netty的基本原理,请参阅疯狂创客圈. 这里仅仅是使用Netty的第一步,这里介绍一个最简…
  在本篇博文中我将介绍如何写一个Web Server.博文中大部分资料我是参考的这篇文章(http://www.linuxhowtos.org/C_C++/socket.htm),英文不错的同学可以参考这篇文章. 进程间通信  在操作系统中,进行通信的实际上是进程而不是程序,进程可以被认为是运行在端系统中的程序.当进程运行在相同的端系统的时候,他们使用进程间通信机制相互通信.进程间相互通信的规则是由端系统上的的操作系统确定的. 客户机和服务器进程  网络应用程序是由成对的进程组成,这些进程通过…