V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lohiecan
V2EX  ›  推广

编程语言在线运行代码是如何实现的?

  •  
  •   lohiecan · 2020-04-06 18:22:11 +08:00 · 4036 次点击
    这是一个创建于 1691 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在线运行代码, 比如 http://jsrun.net 就是支持非常多种语言的支持。

    他们是把用户提交上来的代码保存到一个文件里面, 如果是 c 语言就要先进行编译,然后再执行可执行文件,然后再发执行结果返加到用户看到的网页上面, 比如 http://c.jsrun.net 就是 c 语言的在线代码运行。

    其中的过程其实非常复杂, 但是 JSRUN 的在线执行非常的快, 主要是用了 超高速 SSD 增加文件读写能力, 这种 SSD 一般需要 3GB/s 以上的读写速度才可以。

    另外还要解决的安全性问题, 用户如果提交上来的是死循环,那么直接机器就卡死了。 如果提交上来的代码是删除整个硬盘,那么服务器就完蛋了。 中间要作非常的多的识别 来排除恶意代码的运行。

    JSRUN 是非常好的一个网站,在国内已经是大龙头了, 建议你直接使用他们的服务就可以了。 做这些工作需要大量的精力维护,不建议再重复造轮子。

    25 条回复    2020-04-08 12:44:20 +08:00
    xiri
        1
    xiri  
       2020-04-06 18:46:45 +08:00   ❤️ 8
    你这个广告打的有点不用心啊,至少换给 id 吧,首页上还能看到你的另一个帖子“我做了一个在线运行代码的网站叫 JSRUN, 大家有兴趣吗?”呢
    renmu
        2
    renmu  
       2020-04-06 18:50:16 +08:00 via Android
    自问自答 23333
    myqoo
        3
    myqoo  
       2020-04-06 18:51:44 +08:00
    不错,可以用来挖门罗币
    lohiecan
        4
    lohiecan  
    OP
       2020-04-06 20:40:03 +08:00
    @xiri 哈哈哈,我就是想增加一些点击量
    liuxey
        5
    liuxey  
       2020-04-06 20:46:46 +08:00
    恭喜用户 -1
    zhuzhibin
        6
    zhuzhibin  
       2020-04-06 21:17:46 +08:00 via iPhone
    老哥看了你的广告 我不再用 jsrun 了嘻嘻
    Nugine0
        7
    Nugine0  
       2020-04-06 21:20:13 +08:00 via Android
    道理我都懂,在线执行速度和 SSD 有啥关系?
    sunnywqf
        8
    sunnywqf  
       2020-04-06 22:12:49 +08:00
    死循环,删库都已经拦截了,不知道还有什么其他的可以玩玩的?
    yafoo
        9
    yafoo  
       2020-04-06 23:09:27 +08:00 via Android
    支持,老早就收藏了。不过这广告打的确实不用心
    just1
        10
    just1  
       2020-04-06 23:12:22 +08:00
    报一个 bug 吧,首页的项目鼠标放预览图上会出现三个按钮,鼠标移到按钮上,预览图上方的白色遮罩会一直闪烁
    lhx2008
        11
    lhx2008  
       2020-04-06 23:16:48 +08:00 via Android
    就是 docker 呗
    supercaizehua
        12
    supercaizehua  
       2020-04-07 01:23:42 +08:00
    建议发到广告节点
    fengshils
        13
    fengshils  
       2020-04-07 07:31:23 +08:00 via Android
    恭喜用户 -1
    daimiaopeng
        14
    daimiaopeng  
       2020-04-07 09:06:00 +08:00
    已报警
    lohiecan
        15
    lohiecan  
    OP
       2020-04-07 11:23:16 +08:00 via Android
    @zhuzhibin 悲伤 +1
    lohiecan
        16
    lohiecan  
    OP
       2020-04-07 11:24:57 +08:00 via Android
    @Nugine0 主要工作量是磁盘读写的操作,io 性能影响整体速度
    lohiecan
        17
    lohiecan  
    OP
       2020-04-07 11:25:13 +08:00 via Android
    @liuxey 悲伤 +1
    lohiecan
        18
    lohiecan  
    OP
       2020-04-07 11:25:23 +08:00 via Android
    @liuxey 悲伤 +2
    lohiecan
        19
    lohiecan  
    OP
       2020-04-07 11:26:24 +08:00 via Android
    @yafoo 这些支持 哈哈哈
    lohiecan
        20
    lohiecan  
    OP
       2020-04-07 11:27:18 +08:00 via Android
    @just1 嗯嗯 谢谢,我这就去改良一下
    deplives
        21
    deplives  
       2020-04-07 15:45:54 +08:00
    看了下个人记录,emmm 把广告打得这么清新脱俗的我倒是第一次见
    Eugene1024
        22
    Eugene1024  
       2020-04-07 16:36:44 +08:00
    话说是如何解决把不同的代码发送到不同的编译器里面去运行呢
    lohiecan
        23
    lohiecan  
    OP
       2020-04-07 22:39:47 +08:00
    @deplives 谢谢老哥夸赞
    lohiecan
        24
    lohiecan  
    OP
       2020-04-07 22:40:15 +08:00
    @Eugene1024 这个简单,调用不同编译器就可以了
    noparking188
        25
    noparking188  
       2020-04-08 12:44:20 +08:00
    我竟然觉得这广告打的有点可爱
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1034 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 19:37 · PVG 03:37 · LAX 11:37 · JFK 14:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.