Go语言中文网 为您找到相关结果 19

golang-otto JS解释器

otto是一个Go语言实现的JavaScript 解释器 otto是一个Go语言实现的JavaScript的语法分析器和解释器 1 2 3 import( "github.com/robertkrimen/otto" ) 在虚拟机中运行一些代码 1 2 3 4 5 vm := otto.New() vm.Run(` abc = 2+ 2; console.log("The value of abc is " + abc);// 4 `) 从虚拟机中获取一些值 1 2 3 value, err := vm.Get("abc") value, _ := value.ToInteger() } 设置一个数字变量 1 2 3 4 5 vm.Set("def", 11) vm.Run(` consol...阅读全文

博文 2015-11-17 02:00:03 shuanger_

moonmq: 用go实现的高性能message queue

介绍 moonmq是一个用go实现的高性能消息队列系统,后续准备用于我们消息推送服务以及各个后台的异步任务。 在设计上面,moonmq主要借鉴了rabbitmq以及rocketmq相关的思想,但是做了很多减法,毕竟我不是要设计成一个非常通用的mq。 名词解释 publisher,消息生产者consumer,消息消费者broker,消息中转站queue,消息存储队列 publisher给一个命名的queue发送消息msg,broker负责将msg存放在queue里面。 consumer可以关注自己感兴趣的queue,这样当queue里面有消息的时候,broker就会将该消息推送给该consumer。 推拉模型 在rocketmq里面,支持的是pull msg,而rabbitmq则是支持push...阅读全文

博文 2015-06-18 18:07:58 siddontang

Erlang .vs. Golang

最近研究了一阵子 Erlang , 他有20岁,而 Golang 才 5岁。 Erlang 是纯解释性的,动态的,没有数据类型的, 属于 lisp 语言家族。 而 Golang 是纯编译的, 静态的,严格数据类型的,属于 C语言家族。 Erlang 最早祭起“并发编程”的大旗,是 “并发导向”(Current Orient )的语言,强调并发运行的成员; 而 Golang 对“并发” 强调的 成员之间的通道 chan 。各有所长吧。
不过, 我 还真的不喜欢 lisp 风格, 非常不适应; 而 Golang 的 C风格则让人人通体舒泰。
Golang 的门槛相对很低, 学习曲线也极平滑。 相对比而言, Golang 的优越不是一星半点 ...阅读全文

【干货】Gisp 解释器 Golang 辅助开发工具

Gisp 是一个提供给 golang 使用的 Lisp 类 DSL 解释器。在 Lisp 的基本语法基础上,针对 go 环境稍作了一点语法糖。主要目标是提供一个尽可能便于与 golang 互操作的微型DSL工具。 简介 Gisp用go语言编写,是一个DSL 解释器,这个 DSL 基本上就是 LIsp 的基础语法,针对go程序的互操作需要稍微做了一点扩展。它的主要设计目标是尽可能方便的在 go 程序中调用 gisp 解释器,执行 dsl。 我们的项目,目前后台主要用 golang 开发。开发过程中,golang 确实达到了我们期待的易用、易维护。但是有几个具体的问题阻碍了我们更好的使用它。这是我们开发一个内嵌解释器的基本动机。我们希望用这种方式提升编程效率,更快的推进工作。 golang 使用...阅读全文

博文 2014-10-25 01:00:01 mengyidan1988

golang解释器go-shell

## 简介 ``` 一款 golang的解释器,在golang的基础上添加了一些特性: 1、通过repl方式/脚本方式执行go 2、添加了shell语法糖,可以在go中直接使用shell 目前非linux系统不支持import ``` ## demo ![](https://github.com/f-shixiong/go-shell/blob/master/samples/go-shell_1.gif?raw=true) ## 其他 > 目前尚处于测试阶段,感兴趣的同学可以加我qq 94440624...阅读全文

开源项目 2019-02-25 18:39:46

Golang实现微型数学运算解释器

原文链接 :[https://ashan.org/archives/942](https://ashan.org/archives/942) 对于一般的解释器来说,通常需要三个步骤: 1. 词法分析 1. 语法分析 1. 指令执行 这篇文章所介绍的小型数学解释器则没有这么复杂的过程,原因在于语法设计及其简单。我们来看一下最终的使用效果。最终打包的可执行文件名称为mc。 ``` linux ~ $ ./mc Fatal error: no input file linux ~ $ ``` 当没有任何参数输入时候,工具会提示错误。如果添加了对应代码文件,即可正常执行,如下: ``` linux ~ $ ./mc t.m 112 45 3015 ...阅读全文

python哪种解释器好用?初级python

Python是一门解释器语言,代码想运行,必须通过解释器执行,Python存在多种解释器,分别基于不同语言开发,每个解释器有不同的特点,但都能正常运行Python代码,以下是常用的五种Python解释器: **CPython** 当从Python官方网站下载并安装好Python2.7后,就直接获得了一个官方版本的解释器:Cpython,这个解释器是用C语言开发的,所以叫CPython,在命名行下运行python,就是启动CPython解释器,CPython是使用最广的Python解释器。 **IPython** IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是...阅读全文

压测工具如何选择? ab、locust、Jmeter、go压测工具【单台机器100w连接压测实战】

本文介绍压测是什么,解释压测的专属名词,教大家如何压测。介绍市面上的常见压测工具(ab、locust、Jmeter、go实现的压测工具、云压测),对比这些压测工具,教大家如何选择一款适合自己的压测工具,本文还有两个压测实战项目: 单台机器对HTTP短连接 QPS 1W+ 的压测实战 单台机器100W长连接的压测实战 目录 1、项目说明 1.1 go-stress-testing 1.2 项目体验 2、压测 2.1 压测是什么 2.2 为什么要压测 2.3 压测名词解释 2.3.1 压测类型解释 2.3.2 压测名词解释 2.3.3 机器性能指标解释 2.3.4 访问指标解释 3.4 如何计算压测指标 3、常见的压测工具 3.1 ab 3.2 locust 3.3 Jmeter 3.4 云压测...阅读全文

博文 2019-08-28 13:02:37 link1st

golang项目代码重构(一)

刚入行,果断重构了第一个项目 把功能匆匆忙忙地实现了,前后端分离的意思就是,得抓紧把接口功能实现了,以免影响别人的进度。回头一看,代码跟屎一样。果断重构! 重构 重新组织package,把功能抽象成三个主package,route --> service --> curds。路由层,处理请求参数层,数据库 curd层,使用elasticsearch,所以还有search。包之间的关系更加清晰了,也避免了之前包循环导入的问题 优化package内数据的可见性。golang根据名称首字母的大小写来控制可见性。在实现功能的过程中都是大写,以防别的包需要用到。写完之后自然需要将不导出的部分改成小写。 重命名。好的代码可以自己解释自己,注释是在代码无法解释自己的时候无奈的选择。《代码整洁之道》如是说。...阅读全文

博文 2018-12-18 19:34:45 Mandelbrot_Kobe

字节跳动开源Go结构体标签表达式解释器,成请求参数校验的杀手锏

go-tagexpr 是一个由字节跳动开源的 Golang 结构体标签表达式解释器。它主要应用于各种场景的请求参数校验,且性能高效,成为参数校验的杀手锏。 主要特性: 支持各种常用运算符 支持访问数组、切片、字典的成员 支持访问当前结构中任意字段 支持访问嵌套字段、非导出字段等 内置 len、sprintf、regexp 函数 支持单表达式与多表达式两种定义模式 提供了参数校验子包 看一个参数校验的小例子: package validator_test import ( "fmt" "github.com/bytedance/go-tagexpr/validator" ) func Example() { var vd = validator.New("vd") type InfoReque...阅读全文

博文 2019-01-30 01:34:42 henrylee2cn

ubuntu No module named 'apt_pkg'

我们在使用 ubuntu 的时候会经常用 apt-get install 安装一些软件或者依赖包。 但是很多时候我们使用 apt-get install 的时候找不到软件,这是因为我们没有配置好安装的源,所以我们就会使用 sudo add-apt-repository 来添加安装源,但是今天在用上面的命令来添加 Golang 的下载源的时候就报了一个错误。 No module named 'apt_pkg' 为什么会报错 首先造成这个错误的原因是我以前做 python 开发的时候修改了系统里面的 : 系统最初 python3 -> 链接文件是指向 /usr/bin/python3.5 但是我需要使用 python3.6 所以我下载了新版本的 python3.6 但是我们在使用那个添加源的命令...阅读全文

博文 2019-04-01 21:34:39 _AlphaBaby_

美美的小程序开发之路--20190331

类和继承 在面向对象的编程语言中存在“类”的概念,类就表示数据的类型,比如说People类;继承是指某个类是由另一个类派生出来的。生成的新类是子类,被继承的类是父类。 JS中的“var” 在某一类编程语言中会采用动态类型,是指编码时不要求指定变量类型,实际的变量类型由编译器/解释器在加载程序时动态分配。在JavaScript中用var声明变量,用let声明常量。 nil,null和undefined 通常声明变量的步骤为var a_varible = null;这里表示变量a_varible的值初始化时是空的,即null;在某些语言中是nil,比如Objective-C,Golang。有时声明变量也可以写成var a_varible,在JavaScript中,此时的变量值是undefined...阅读全文

博文 2019-04-01 18:34:41 原鸣清