`
myten
  • 浏览: 131966 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Julia之快速构建HTTP服务

阅读更多

Julia首先是个计算机编程语言,其次才是它宣称的面向科学计算的语言。

所以,计算机编程语言所必须的I/O肯定是要有的,文件的I/O下一篇文章讲,今天就讲网络I/O。

 

 先引入一段超级强大的官版HTTP代码

using Pkg
Pkg.add("HTTP")
using HTTP
HTTP.listen() do request::HTTP.Request
   @show request
   @show request.method
   @show HTTP.header(request, "Content-Type")
   @show HTTP.payload(request)
   println(typeof(request))
   try
       return HTTP.Response("Hello,Julia")
   catch
       return HTTP.Response(404, "Error: $e")
   end
end

 各位看官,这就是http服务了,只要运行这段代码,然后访问本地IP:8081就可以在浏览器里看到Hello,Julia了。

扶好自己的下巴,接着听我说,目前这个还欠缺路由映射的功能,MVC的功能。补全这些是不是就是 spring-julia-mvc框架了呢?当然还要有并发异步的能力。别的好像也就不差什么了。

至于怎么补全成为一个JuliaMVC框架,菜鸟自己海补去,高手明白就好,补不补全看兴趣了。

 

介绍完了HTTP,接下来说说Socket吧,还是上代码

using Sockets
@async begin
server = listen(2001)
  while true
     sock = accept(server)
     @async while true
       write(sock,readline(sock))
     end
  end
end

 上面代码就是一个Socket Server了,而且是多线程的,因为加了@async 这个神奇的关键字。这真的是个加分项,是个超级大胆且前卫的设计。很明显这段代码构建了一个很简单的应答服务器,客户端连接后,输入啥,服务器就返回啥。就是个Mirror Server。我们拿nc 测试一下。没有nc的,自己装去,不懂nc是啥的自己脑补去。

lybdeMacBook-Pro:~ lyb$ nc 127.0.0.1 2001
Hello,this is nc test
Hello,this is nc test

 如上测试,用nc连接后,输入Hello,this is nc test 回车,服务返回了同样的内容,到此就已经证明julia socket server成功了。至于要用socket做什么事情,那就要制定协议和编码咯。就像开头的HTTP,也就是在socket之上做了对HTTP协议的实现而已,不过我还是很佩服的,一个很年轻的语言,已经有人花功夫去开发周边了。我可没工夫,还是拿来主义好啊,当然了,要拿好的。

分享到:
评论

相关推荐

    各种刚体动力学和运动学算法的Julia实现_julia_代码_下载

    RigidBodyDynamics.jl 是纯 Julia 中的刚体动力学库。它的目标是用户友好和高性能,但在算法可以使用任何(合适的)标量类型的输入调用的意义上也是通用的。这意味着如果需要快速的数值动态评估,用户可以提供Float...

    matlab中inv的函数代码-node-julia:快速轻松地访问节点中嵌入的Julia

    快速轻松地访问嵌入在节点中的Julia。 安装 首先安装,然后 npm install node-julia 构建模块后,安装程序将在命令路径上的julia开头的几个标准位置搜索Julia。 假定julia lib目录位于julia可执行文件所在位置的标准...

    CP Merge (SimString)算法的 原生Julia实现

    CPMerge 算法的原生 Julia 实现,专为近似字符串匹配而设计。这个包对于需要从非常大的语料库(大量文本)中检索字符串/文本的自然语言处理任务特别有用。目前,该包支持基于字符和单词的 N-gram 特征生成,并且计划...

    MCHammer.jl:Julia 的蒙特卡罗模拟和业务分析工具

    该工具的灵感来自于Oracle Crystal Ball 和 Palisade @RISK等开创性工具,因为它们能够使用 Excel 功能和自动化快速构建和分析 Monte-Carlo 仿真模型。 尽管您可以使用几个简单的包在 Julia 中构建蒙特卡罗模拟,但...

    matlab心性代码-matlab-to-julia:将MATLAB源代码翻译成Julia。可以在这里访问:https://lakras.gi

    该项目的目标是构建一个易于使用的工具,将MATLAB源代码转换为Julia。 翻译器并不全面,但是它应该准确地翻译最常见的语句,从而消除了手工翻译代码的繁琐工作。 希望用户随后可以查看翻译后的Julia代码并可能进行较...

    QuEST_jl:量子精确仿真工具包的Julia包装器

    注意Julia1.6 Clang.jl当前不适用于...该软件包以类似于Matlab的快速原型科学计算语言软件包的形式提供了高性能量子电路模拟器。 安装 有两种构建Quest_jl的方法,具体取决于构建它的人。 专家版本适用于希望将QuE

    核递归最小二乘算法的Julia实现

    核递归最小二乘算法的 Julia 实现 KRLS 是一种快速高效的在线核回归算法。KRLS 一次处理一个样本的数据,并构建一个训练点字典,用于逼近函数。 Y. Engel、S. Mannor 和 R. Meir,“内核递归最小二乘算法”,IEEE ...

    轻量级Django.[美]Julia Elman(带详细书签).pdf

    快速构建原型是一门有用的创建和辅助网络应用的技术。我们要通过创建静态网站生成器协助维护团队项目的方式来检验该技术的效果。 第4章,构建REST API 。REST API 是创建丰富的、具有内容相关性的网络应用的重要部分...

    NNGraph.jl:Julia语言的深度学习库

    NNGraph.jl是一个Julia语言软件包,具有构造任意表达图的功能,该库可以在其中执行自动区分,类似于您在Theano for Python或Torch等中可以找到的那样。它对于创建任意神经网络很有用,并且是开发出来的着重于实现...

    深度学习框架mxnet源码

    这个可以使得快速构建一个神经网络,和自动求导。 更多binding 目前支持比较好的是python,马上会有julia和R 更加方便的多卡和多机运行 性能上更优。目前mxnet比cxxnet快40%,而且gpu内存使用少了一半。 目前mxnet还...

    Sublime-IJulia:Sublime Text 3 的 IJulia 前端

    IJulia 项目为 Julia 构建了一个 IPython 内核,以提供典型的 IPython 前端-后端功能,例如流行的笔记本、qtconsole 和常规终端。 Sublime-IJulia 通过在流行的文本编辑器 Sublime Text 中为 IJulia 后端内核提供...

    web-julia:小型网络组装项目,展示您可以使用它进行的操作

    Julia集 该存储库是一个项目,演示您可以使用wasm-bindgen使用webassembly制作快速动态网页的方法。 您可以使用build.sh进行构建。 该站点将在本地运行,只需在浏览器中键入“ ”即可对其进行测试。 先决条件: 与...

    juliadroid-app:JuliaDroid 应用程序,适用于 Android

    因为我不太喜欢移动应用程序,所以用 Java 编码的前景并不是我特别喜欢的,我需要快速构建一些东西,否则它永远不会发生。 当然,这意味着你需要在你的开发机器上安装 Intel XDK,如果你想破解这个应用程序 - 顺便...

    TrajectoryOptimization.jl:用Julia编写的快速轨迹优化库

    构建此程序包的目的是明确定义和评估轨迹优化问题。 尽管早期版本(v0.3之前的版本)也包含解决这些问题的方法,但现在将其留给实现TrajectoryOptimization.jl中定义的接口的单独程序包。 例如, 实现了以前包含在...

    Wavelets.jl:Julia包,用于快速离散小波变换和实用程序

    用于快速小波变换(通过滤波或提升的1-D,2-D,3-D)的软件包。 该软件包包括离散小波变换,逐列离散小波变换和小波包变换。 第一代小波使用滤波器组(周期性和正交)。 包括以下类型的过滤器:Haar,Daubechies,...

    Quake2.jl:用 Julia 和现代 OpenGL 编写的实验性 Quake 2 地图渲染器

    特征地图 (.bsp) 渲染每像素照明支持来自高度图的凹凸和视差效果要求 (仍在开发中 - 必须从源代码构建) 官方 Julia 包(可以使用Pkg.add()添加):非官方的 Julia 包(必须手动添加): (至少需要 OpenGL 3.x) ...

    SpectralKit.jl:Julia光谱方法的基础

    目的是为频谱算法提供简单,经过良好测试,健壮和快速的构建基块,可以轻松地将其组合成算法。 目前,程序包API尚处于试验阶段,可能会随时更改。 漂亮的图片 一些示例生成了该库。 圆圈标记值在极限处,需要时...

    matlab集成c代码-Sundials.jl:Julia包镜

    Matlab集成的c代码日di 介绍 Sundials.jl是与库连接的Julia软件包。 Sundials(C库和此程序包)提供以下内容: CVODES-用于ODE的集成和敏感性分析。...Julia函数是即时编译(JIT)的,因此也可以快速重

    KernelRecursiveLeastSquares.jl:内核递归最小二乘算法的 Julia 实现

    内核递归最小二乘算法的 Julia 实现 KRLS 是一种快速高效的在线核回归算法。 KRLS 一次处理一个样本,并构建一个训练点字典,用于逼近函数。 Y. Engel、S. Mannor 和 R. Meir,“内核递归最小二乘算法”,IEEE 信号...

    精灵手表今晚

    讨论:快速了解我们正在构建的内容讨论:快速浏览数据入门-创建应用首先,让我们创建一个新的Genie MVC应用程序。 我们将使用Genie的应用程序生成器,因此首先确保已安装Genie。 讨论:各种类型的Genie应用程序讨论...

Global site tag (gtag.js) - Google Analytics