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

xxl-job定时任务golang执行器 xxl-job-executor-go

# xxl-job-executor-go 很多公司java与go开发共存,java中有xxl-job做为任务调度引擎,为此也出现了go执行器(客户端),使用起来比较简单: # 支持 ``` 1.执行器注册 2.耗时任务取消 3.任务注册,像写http.Handler一样方便 4.任务panic处理 5.阻塞策略处理 6.任务完成支持返回执行备注 7.任务超时取消 (单位:秒,0为不限制) 8.失败重试次数(在参数param中,目前由任务自行处理) 9.日志查看(未完成) ``` ## Example ``` package main import ( xxl "github.com/xxl-job/xxl-job-executor-g...阅读全文

go 学习笔记之有意思的变量和不安分的常量

首先希望学习 Go 语言的爱好者至少拥有其他语言的编程经验,如果是完全零基础的小白用户,本教程可能并不适合阅读或尝试阅读看看,系列笔记的目标是站在其他语言的角度学习新的语言,理解 Go 语言,进而写出真正的 Go 程序. 编程语言中一般都有变量和常量的概念,对于学习新语言也是一样,变量指的是不同编程语言的特殊之处,而常量就是编程语言的共同点. 学习 Go 语言时尽可能站在宏观角度上分析变量,而常量可能一笑而过或者编程语言不够丰富,所谓的常量其实也是变量,不管怎么样现在让我们开始 Go 语言的学习之旅吧,本教程涉及到的源码已托管于 github,如需获取源码,请直接访问 https://github.com/snowdreams1006/learn-go 编写第一个 Hello World 程...阅读全文

博文 2019-08-12 19:03:47 雪之梦技术驿站

Go项目(二)、toolbar和Material Design风格的选择

一、问题的出现: 使用google文档的写法,使用的material design风格只能在android L上面显示,sdk版本低于21的模拟器出现崩溃,所以为了能够在低版本的手机上显示同样的效果,我们使用toolbar进行显示。 二、原来使用于5.0的风格的写法(在自定义的theme中item会有android:这个命名空间的前缀) 三、使用toolbar的写法(一般在自定义的theme中没有android:这个命名空间的前缀) 具体的详细的操作可以看这篇博文 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $nu...阅读全文

博文 2016-05-04 22:00:03 HNAer_RadAsm

centos7下搭建ngrok服务器进行内网穿透

以下以阿里云centos7服务器为例,并且已经安装好git、golang 一、下载ngrok cd /data/wwwroot git clone https://github.com/tutumcloud/ngrok.git 二、生成ngrok使用的https证书 cd /data/wwwroot/ngrok NGROK_DOMAIN="ngrok.test.com" openssl genrsa -out base.key 2048 openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem openssl genrsa -out server.key 20...阅读全文

博文 2018-12-10 16:34:45 王乐城愚人云端

mqant框架概述

mqant经过4个月的发展,目前已在github上获得了300多的star,相信在大家的努力下mqant将在未来更加光彩 现如今只有多进程的架构才能达到支撑较多在线用户,降低服务器压力,降低单点故障所带来的影响等要求,因此一个真正高可扩展的游戏运行架构必须是多进程的。 然而在游戏的开发和运营也是按步骤阶段性进行的,尤其是现如今服务器硬件设备配置也越来越高的前提下,在游戏刚开始运营时单台服务器就足够支撑了,况且多进程部署所带来的运维成本也相对较高。 mqant的设计思想是在能用单台服务器时能让充分挖掘服务器的性能,而在需要多进程时再通过简单的配置就可以实现分布式部署。 mqant游戏服务器的运行架构 mqant服务器是按模块来划分功能模块的,例如 用户管理,在线聊天,战斗平台等等都应该划分为独...阅读全文

博文 2017-07-29 17:05:04 liangdas

Goquery爬虫工具

Goquery安装使用 http://blog.studygolang.com/2015/04/go-jquery-goquery/ Goquery需要手动安装,可以直接去github上下载,也可以通过go get github.com/PuerkitoBio/goquery获取 Goquery的爬虫功能依赖 net/html 包,好像是被墙了,需要去 https://github.com/golang/net 下载zip包,You can also manually git clone the repository to $GOPATH/src/golang.org/x/net.记得要把 net-master 改成net 如果出现 dial tcp no such host,记得先ping...阅读全文

博文 2018-11-25 19:34:40 黄靠谱

初步了解RESTful(二)—————认知RESTful API

**1**.Request和Response RESTful API的开发和使用,无非是客户端向服务器发请求(request),以及服务器对客户端作出回应(response)。客户端会给予GET方法向服务器发送请求获取资源,基于PUT或PATCH方法向服务器发送更新数据的请求,服务API设置时也应该要按照相应规范来处理对应的请求,这点现在应该成为所有RESTful API的开发者的共识。这里我们来简单说一下常见的响应码: 当GET、PUT和PATCH请求成功时,要返回对应的数据,及状态码200,即SUCCESS; 当POST创建数据成功时,要返回创建成功的数据,及状态码201,即CREATED; 当DELETE删除数据成功时,不返回数据,状态码要返回204.即NO CONTENT; 当GET...阅读全文

博文 2018-02-04 22:06:24 yinshidaoshi

go IOTA常量计数器1期

iota是golang语言的常量计数器,只能在常量的表达式中使用。 iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。 举例如下: 1、iota只能在常量的表达式中使用。 fmt.Println(iota) 编译错误: undefined: iota 2、每次 const 出现时,都会让 iota 初始化为0. const a = iota // a=0 const ( b = iota //b=0 c //c=1 ) 3、自定义类型 自增长常量经常包含一个自定义枚举类型,允许你依靠编译器完成自增设置。 type Stere...阅读全文

博文 2018-07-15 21:34:44 WalkingInTheAir

go学习笔记-init函数执行顺序分析

`golang`中有个神奇的函数`init`,该函数会在所有程序执行开始前被调用,每个包可以包含多个`init`函数,所有被编辑器识别到的`init`函数都会在`main`函数执行前被调用。通常被用来注册一个程序需要使用的依赖,如`mysql`注册,配置文件加载等。 ###### 在main包的使用 ``` package main import "fmt" func main() { fmt.Println("这里是mian") } func init() { fmt.Println("这里是Init1") } func init() { fmt.Println("这里是Init2") } //输出结果 这里是Init1 这里是Init2 这里是main ``` 一个很简单的示例,可以看到...阅读全文

博文 2020-01-14 22:48:05 rundaisc

google go 语言介绍(三)

编译 Go是一门编译形的语言。现在提供了两个编译器。Gccgo是使用GCC作为后端的编译器。另外针对不同的系统架构还提供了一套编译器:64位x86系统使用6g;32位x86系统使用8g等等,这些 编译器编译速度相当快,但是效率比Gccgo慢。这些编译器有更稳定的系统,虽然gccgo正在迎头赶上。 下面是如何使用6g编译并运行我们的程序 $ 6g helloworld.go # compile; object goes into helloworld.6 $ 6l helloworld.6 # link; output goes into 6.out $ 6.out Hello, world; or Καλημέρα κόσμε; or こんにちは 世界 $ 使用gccgo看起来更像传统的方式...阅读全文

博文 2014-10-04 19:26:18 fffvvvzz

数据线性分类器 Lineargo

* L2-正规化分类 * L2-SVM线性损耗,L1-SVM线性损耗和logistic回归(LR) * L1-正规化分类(版本1.4) * L2-SVM线性损耗和logistic回归(LR) * L2-支持正规化向量回归(版本1.9) * L2-SVR线性损耗和L1-SVR线性损耗。 安装: 这个软件包依赖LIBLINEAR2.1+和Go 1.6+。请通过自制软件或操作系统上的其他软件包管理器先安装这些:

brew update
brew info liblinear # make sure your formula will install version h...阅读全文

Magpie语法解析器

![magpie.png](https://static.studygolang.com/190309/bee595ae20a1263b40799b3b632cb3b0.png) ## Magpie语法解析器 Magpie是一个用`go`语言写的语法解析器,支持class, linq, sql, net, http, fmt, json等。还包含一个实时语法高亮的REPL。 ## 例子 ```csharp class Linq { static fn TestSimpleLinq() { //Prepare Data Source let ingredients = [ {Name: "...阅读全文

我们采访了阿里云云数据库SQL Server的产品经理,他说了解这四个问题就可以了

摘要: 2017年杭州云栖大会,阿里云宣布云数据库支持SQL Server 2016,阿里云云数据库家族又新添一名成员,进一步丰富了阿里云云数据库产品家族,在大会期间,我们采访了阿里云云数据库产品经理胜通,听他为我们解析云数据库SQL Server 2016版。 ​ 为什么推出SQL Server 2012/2016 Web基础版 SQL Server版本更新近些年非常快,阿里云数据库作为云服务商,针对新版本提供支持服务于云上客户是推出2016基础版的主要原因,Web版高性价比优势是它作为云数据库SQL Server首选版本,所以我们优先推出SQL Server 2012/2016 Web基础版。 SQL Server 2012/2016 Web基础版适合哪类用户使用?有什么优点? ...阅读全文

vim-go更新小记

自从上一次配置好Mac上的Golang Vim开发环境,基本上就没怎么动过。近两年过去了,Go已经升级到了1.7版本,Vim-go截至目前也已经演化到了1.8版本了。社区的积极关注和使用,让Vim-go的作者Fatih Arslan备受鼓舞,于是近一年来,积极为vim-go添加新功能,发布新版本,并编写了vim-go的详细tutorial。这让我动了更新Vim-go版本的念头,于是就有了本篇内容。 已经记不得当初第一次配置vim-go时,vim-go的版本号是多少了。经过近两年的发展,vim-go已然正式成为Vim下Go开发环境的标准Plugin了。Go从当年的1.4升级到1.7,相关工具也跟着一起升级,比如oracle变成了guru,名字都换了。支持go的编辑器也逐渐增多并日益成熟,从最初...阅读全文

博文 2016-10-10 03:59:47 bigwhite

把 Gisp 转换成 Go AST Gimpy

[Gisp](https://github.com/jcla1/gisp) 是一个编译器,把 Gisp 转换成 Go AST。Gimpy 是简单的叠加,能更容易从 Gisp 中访问 Go stdlib。主要的,是为了执行类型断言,因为所有 Gisp 的值都是 core.Any (or interface{})。 ## 安装

go get github.com/eatonphil/gimpy
cd <go-path>/github.com/jcla1/gisp
go buildecho $(pwd) >> ~/.bashrc
. ~/.bashrc<...阅读全文

开源项目 2016-09-07 16:07:39 eatonphil

go语言安装与设置

windows下安装: 包下载路径:http://golangtc.com/download 使用前需要dos执行 set GOROOT= set GOOS=mingw set GOARCH=386 set PATH=/bin 编译执行test.go文件需要执行 8g test.go //编译生成test.8 8l test.8 //连接生成8.exe 8 //执行8.exe example: package main import “fmt” func main() { fmt.Print(“Hello, World\n”) } 中文支持需要保证go文件采用utf-8格式存放,且没有BOM字符 1、dos执行chcp 65001 //修改代码页为utf-8,否则无法通过编译 2、修改dos...阅读全文

博文 2016-04-26 21:00:05 xueyingqi

为了让开发者写MaxCompute SQL更爽,DataWorks 增强SQL 编辑器功能

摘要: 众所周知,数据开发和分析的同学每天都要花大量时间写MaxCompute SQL;Dataworks作为数据开发的IDE直接影响着大家的开发效率,这次新上线的Dataworks我们在编辑体验上做了很多工作,在前端实现MaxCompute SQL和编辑器参数等扩展语法的AST解析,并实现更好更智能的代 众所周知,数据开发和分析的同学每天都要花大量时间写MaxCompute SQL;Dataworks作为数据开发的IDE直接影响着大家的开发效率,这次新上线的Dataworks我们在编辑体验上做了很多工作,在前端实现MaxCompute SQL和编辑器参数等扩展语法的AST解析,并实现更好更智能的代码提示,更快速的响应,帮助大家提升开发效率; 首先show几张美图: ![图...阅读全文

Go语言编程-语法

Go注释 //单行注释 /* */多行注释 Go的内置关键字 default select defer go goto fallthrough range package(包) import(导包) return (返回) var(声明全局变量) type(一般类型声明) struct(结构) interface(接口) func(方法) map(map类型) switch case if else for continue break const(定义常量) chan(通道,用于多个服务器之间的通道,用于并发) Go基本类型 bool:布尔型 1字节,取值:true,false, 不可以用数字代表 int/uint:整型 根据运行平台可能是32或64bit int8/uint8:8位整型 ...阅读全文

博文 2016-02-15 05:00:00 u013355724

Nginx缓存引发的跨域惨案

1. 前言贵金属wap版直播间上线后,偶尔有用户反馈,在进入wap直播间的时候,出现空白页面,但是重新刷新又可以正常显示了。我们曾一度认为是网络请求异常或兼容问题,直到开发PC版直播间,在进行调试中,同样遇到了“白屏”问题,才引起了足够重视,并进行了问题跟踪与分析。现在跟大家分享一下,这种偶然现象出现的原因。 我们的直播间落地页在fa.163.com 系统,而直播间内容,是通过 向直播间系统 qz.fa.163.com 发起Ajax请求获取的。在出现“白屏”的时候,可以通过浏览器的调试窗口,可以看到出现下面的报错: 2. 问题分析从上述错误提示文案中可以看到,问题首先和 跨域 有关。 何为跨域 从字面上理解为“跨域名”,浏览器不能执行其他网站的脚本,然而,跨域不仅仅局限于域名这一项。只要协议...阅读全文

博文 2017-08-03 06:20:58 网易乐得技术团队

GO错误

SQL Server 应用程序可将多条 Transact-SQL 语句作为一个批处理发给 SQL Server 去执行。在此批处理中的语句编译成一个执行计划。程序员在 SQL Server 实用工具中执行特定语句,或生成 Transact-SQL 语句脚本在 SQL Server 实用工具中运行,用 GO 来标识批处理的结束。 如果基于 DB-Library、ODBC 或 OLE DB APIs 的应用程序试图执行 GO 命令时会收到语法错误。SQL Server 实用工具永远不会向服务器发送 GO 命令...阅读全文

静态 Web 服务器 Ran

Ran 是用 Go 语言开发的一个简单的静态 Web 服务器。 主要特性: * 目录列表 * 自动对内容进行 gzip 压缩 * 摘要认证 * 访问日志 * 自定义 404 错误页面 依赖: * [github.com/abbot/go-http-auth](https://github.com/abbot/go-http-auth) * [github.com/oxtoacart/bpool](https://github.com/oxtoacart/bpool) * [github.com/m3ng9i/go-utils/http](https://github.com/m3ng9i/go-utils) * [github.com/m3ng9i/go-utils/l...阅读全文

开源项目 2015-10-02 16:00:00 m3ng9i

我们采访了阿里云云数据库SQL Server的产品经理,他说了解这四个问题就可以了

摘要: 2017年杭州云栖大会,阿里云宣布云数据库支持SQL Server 2016,阿里云云数据库家族又新添一名成员,进一步丰富了阿里云云数据库产品家族,在大会期间,我们采访了阿里云云数据库产品经理胜通,听他为我们解析云数据库SQL Server 2016版。 为什么推出SQL Server 2012/2016 Web基础版SQL Server版本更新近些年非常快,阿里云数据库作为云服务商,针对新版本提供支持服务于云上客户是推出2016基础版的主要原因,Web版高性价比优势是它作为云数据库SQL Server首选版本,所以我们优先推出SQL Server 2012/2016 Web基础版。SQL Server 2012/2016 Web基础版适合哪类用户使用?有什么优点? SQ...阅读全文

[翻译]编译器(8)-抽象语法树

文在此。 ————翻译分隔线———— 编译器(8)-抽象语法树 第一部分:介绍 第二部分:编译、转译和解释 第三部分:编译器设计概览 第四部分:语言设计概述 第五部分:Calc 1 语言规格说明书 第六部分:标识符 第七部分:扫描 在构建解析器之前,首先应当谈谈如何处理目标数据。 需要用某种抽象数据类型来保存所有需要解析的数据。树形数据结构很好的满足了我们的需求。这个树描述了编程语言的语法结构,它被很恰当的叫做抽象语法树(AST)。 AST 树形数据结构总是从一个根开始,我们的也是一样。通常,在一个成熟的编译器中,你通常会有一个代表包或程序的对象。在我们的例子中,我们只有一个文件,因此我们将有一个叫做 File 的对象。 这个对象的其他部分可以在我们的语法蓝图中找到。再次提醒,回顾我们创建语...阅读全文

博文 2017-01-07 11:00:12 mikespook

本地跨域请求服务器调试

在网页开发的过程中,时常需要进行跨域请求,去测试服务器请求数据。 跨域限制是浏览器行为,不是服务器行为 要理解和解决跨域问题,需要深刻理解-跨域限制是浏览器行为,不是服务器行为。这也是为什么跨域通过postman这类工具来直接请求服务器接口数据,而在网页中通过js就不可以的原因,因为js运行在浏览器,当js运行的环境url和请求的接口数据的url不同域,并且服务器没有允许跨域请求时,浏览器就会认为这个请求是不安全的,就会限制请求。 理解了跨域限制是浏览器行为,不是服务器行为的原理后,就很容易解决跨域问题了。有两种方法: 1、 服务器端后台代码进行特殊设置,允许客户端进行跨域请求 java private void enableCORS(Request request, Response re...阅读全文

现代垃圾收集策略 —— Go 的 GC 策略

![ ](https://raw.githubusercontent.com/studygolang/gctt-images2/master/modern-garbage-collection/gc.jpeg) 在 [Hacker News](https://news.ycombinator.com/item?id=13218550) 和 [Reddit](https://www.reddit.com/r/golang/comments/5j7phw/modern_garbage_collection/) 你可以找到相关讨论 我最近看过很多文章,它们以令我困扰的方式推广 Go 语言最新的垃圾收集器。其中一些文章来自 Go 官方项目本身。他们声称这意味着 GC 技术已经有根本性的突破。 [这是...阅读全文

博文 2019-09-09 22:34:49 TomatoAres

athens

墙太高风太大google的包不让下 最近在用 grpc 的时候从 google.golang.org 上死活下不下来。只能找找骚操作了 代理 通过设置 GOPROXY 通过代理来下载 常用公共代理有 https://gocenter.io 和 https://proxy.golang.org # 本次 go get 使用代理 $ GOPROXY=https://goproxy.io go get google.golang.org/grpc # 设置永久代理 $ export GOPROXY=https://goproxy.io athens 使用 https://goproxy.io 这样的公共 go module 代理可以解决墙外依赖的下载问题。但是如果我们依赖的包在私有仓库(比如自建的...阅读全文

博文 2019-07-01 23:32:42 阿duang_638a

Go 中值接收器构造器的探讨

在 Go 中,当涉及到面向对象编程,会有许多的前期工作需要做,以至于许多刚从其它语言迁移到 Go 的程序员会将那些语言中的一些概念带到 Go 中。对象构造器就是这么一个存在于许多其它语言中而无法在 Go 中找到的概念。 ## 为什么需要构造器 在 Go 中,有些对象需要初始化,比如 channel 和 slice 这两个很容易想到的例子。这个初始化的过程通过调用 `make` 函数来执行。 > make 这个内置函数为且仅为 slice, map 以及 chan 类型的对象分配以及初始化。和 new 一样,函数的第一个参数是一个类型而不是值。与 new 不同的是,make 函数返回的是与参数一样的类型而不是参数类型的指针。 当然我们还需要默认参数,所以在 Go 中分配本身并不是我们需要构造函...阅读全文

博文 2018-04-12 21:26:35 killernova

利用 GoLand 和 Mozilla rr 项目来调试

调试器。传统上,它们被用来发现复杂的 bug 并解释它们是如何发生的。但是,如果您无法解释为什么在步骤之间会发生一些更改,该怎么办呢?这就是典型调试器无法帮助您的地方,因为它们通常只会让您继续执行。 正如我们在前一篇文章中所看到的,虽然可以使用[核心转储](https://blog.gopheracademy.com/advent-2018/postmortem-debugging-delve/),但它们并不总是告诉您应用程序中发生的事情的全部情况。 输入可逆的调试器。这些调试器不仅允许您在执行过程中逐步前进,还允许您返回并有效地撤消步骤之间的所有操作。 Go 调试器 [Delve](https://github.com/go-delve/delve) 通过使用 [Mozilla 的 rr ...阅读全文

[提问]golang写的读取服务器端返回值无法显示,但telnet去服务器端能正常返回数据

如题,是哪里有问题吗? 代码: package main import ( "bufio" "fmt" "net" ) func main() { conn, err := net.Dial("tcp4", "192.168.55.4:9830") if err != nil { panic(err) } fmt.Fprintf(conn, "SHAKEHAND:::5::;\r\n") data, err := bufio.NewReader(conn).ReadString('\n') if err != nil { panic(err) } fmt.Printf("%#v\n", data) } ...阅读全文

goroutine请求http服务器时很快就阻塞,请问什么原因,或者如何定位问题?

###goroutine请求http服务器时很快就阻塞,请问什么原因,或者如何定位问题? 在做一个设备管理的功能,通过访问http服务器的REST ful接口确定设备是否在线,30s访问1000个设备,目前写的方案大致如下 其中看到goroutine的数量并不是很高,但很快程序就不动了,cpu,内存也并没有占用过高 ```golang package main import ( "fmt" "net/http" "runtime" "time" ) func a() { b() //..... } var bb = 0 func b() { fmt.Printf("b:%d\n", bb) bb++ resp, ...阅读全文

理解 Go 语言中的指针和内存分配

在 Go 语言官方文档中,你可以找到很多关于指针和内存分配的重要信息。以下是该文档的链接:[Go 语言官方文档之指针](http://golang.org/doc/faq#Pointers) 首先我们需要理解的是,所有在 Go 语言中的值都有其不同变量来表示。不同类型表示的变量决定了我们如何使用它来操纵内存。这篇文章阐述了更多关于 Go 语言中的变量类型:[理解 Go 中的类型](https://studygolang.com/articles/13976) 在 Go 中,我们可以创建一个变量作为 “值” 本身,也可以创建一个变量作为某个 “值” 的地址。当变量的 “值” 是地址时,我们就称该变量为指针。 在下图中,有一个名为 myVariable 的变量。myVariable 的“值”是指...阅读全文

博文 2018-12-31 23:05:42 CNbluer

Web工作方式

文地址:https://golangcaff.com/docs/build-web-application-with-golang/031-web-working-mode/245 我们平时浏览网页的时候, 会打开浏览器,输入网址后按下回车键,然后就会显示出你想要浏览的内容。在这个看似简单的用户行为背后,到底隐藏了些什么呢? 对于普通的上网过程,系统其实是这样做的:浏览器本身是一个客户端,当你输入 URL 的时候,首先浏览器会去请求 DNS 服务器,通过 DNS 获取相应的域名对应的 IP,然后通过 IP 地址找到 IP 对应的服务器后,要求建立 TCP 连接,等浏览器发送完 HTTP Request(请求)包后,服务器接收到请求包之后才开始处理请求包,服务器调用自身服务,返回 HTTP R...阅读全文

博文 2019-01-28 11:34:52 raincoffee

golang的channel剖析

概述 为了并发的goroutines之间的通讯,golang使用了管道channel。你可以通过一个goroutines向channel发送数据,然后从另一个goroutine接收它 通常我们会使用make来创建channel ----- make(chan valType , [size])。 写入 channel c<- 读取channel <-c 分类 一 无缓冲 make创建时忽略第二个参数即可创建无缓冲channel实例如下: // csdnTest.go package main import ( "fmt" "time" ) func main() { messages := make(chan string) go func() { messages <- "hello" }...阅读全文

博文 2016-11-22 04:00:06 wslzwps00321

gof23行为类模式(golang版)

命令模式 image 命令模式是一个高内聚的模式,其定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排除或者记录请求日志,可以提供命令的撤销和恢复功能。 命令模式包含如下角色: Command: 抽象命令类 需要执行的所有命令得出在这里声明。 ConcreteCommand: 具体命令类 负责实现在Command角色中定义的接口 Invoker: 调用者 开始执行命令的角色,它会调用在Command角色中定义的接口。 Receiver: 接收者 该角色就是干活的角色,命令传递到这里是应该被执行的 命令模式的优点 类间解耦 调用者角色与接收者角色之间没有任何依赖关系,调用者实现功能时只须调用Command抽象类的execute方法就可以,不需要了解到底是哪个接收者执...阅读全文

博文 2018-12-08 23:35:40 五月花号区块链联盟

我的Go语言学习之旅八:创建一个简单的WEB服务器

因为一直在做WEB程序,所以更关注WEB界的发展,这里就用GO做了一个简单的WEB服务器,直接看例子吧 package main import ( "fmt" "net/http" ) // Default Request Handler func defaultHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "

Hello World %s!

", r.URL.Path[1:]) } func getHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "

Hello World Every Guys!

"...阅读全文

博文 2016-02-02 23:00:00 w_yunlong

关于Go语言在服务端做Restful接口和socket通信

请到我的个人博客看golang rest相关文章 http://xiaorui.cc关于Go语言在服务端做Restful接口和socket通信已经转到: http://xiaorui.cc/2014/10/25/%E5%85%B3%E4%BA%8Ego%E8%AF%AD%E8%A8%80%E5%9C%A8%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%81%9Arestful%E6%8E%A5%E5%8F%A3%E5%92%8Csocket%E9%80%9A%E4%BF%A1/下图即是REST的架构图:当REST架构的约束条件作为一个整体应用时,将生成一个可以扩展到大量客户端的应用程序。它还降低了客户端和服务器之间的交互延迟。统一界面简化了整个系统架构,改进了子系统之间交互的可...阅读全文

博文 2017-02-09 16:42:01 rfyiamcool

AST解析基础: 如何写一个简单的html语法分析库

前言 虚拟语法树(Abstract Syntax Tree, AST)是解释器/编译器进行语法分析的基础, 也是众多前端编译工具的基础工具, 比如webpack, postcss, less等. 对于ECMAScript, 由于前端轮子众多, 人力过于充足, 早已经被人们玩腻了. 光是语法分析器就有uglify, acorn, bablyon, typescript, esprima等等若干种. 并且也有了AST的社区标准: ESTree. 这篇文章主要介绍如何去写一个AST解析器, 但是并不是通过分析JavaScript, 而是通过分析html5的语法树来介绍, 使用html5的原因有两点: 一个是其语法简单, 归纳起来只有两种: Text和Tag, 其次是因为JavaScript的语法分...阅读全文

博文 2017-08-20 16:05:06 一路行歌

Go 编译器 nil 指针检查

## 简介 我在思考编译器是如何保护我们写的代码。无效的内存访问检查是编译器添加到代码中的一种安全检查。我们可能会认为这种“额外的代码”会损耗程序的性能,甚至可能需要数十亿的迭代操作。但是,这些检查可以防止代码对正在运行的系统造成损害。编译器本质上是指出和查找错误,使我们编写的代码在运行时更安全。 基于上述考虑,同时 Go 语言想要达成更快的编译速度,如果硬件可以解决这些问题,那么 Go 语言编译器就会使用硬件来解决问题。其中一种情况是检测无效的内存访问。有时编译器会在代码中添加 nil 指针检查,而有时不会。在这篇博客中,我们将探讨一种情况,即编译器在什么情况下让硬件来检测无效的内存访问,以及在什么情况下会添加 nil 指针检查。 ## 硬件只作检查 当编译器依赖于硬件来检查并指出无效的内...阅读全文

博文 2018-11-27 09:55:43 7Ethan

编译器跨平台实现 和 自然语言翻译

在阅读 编译原理相关书籍时,意识到编译器设计本质上是语言翻译的简化问题; 我们把高级语言书写的代码,通过编译器 + 解释器 的过程 变成计算机可以理解的机器码;就是相当于把一段文字翻译给一个外国人听;当然编译器的翻译工作要比自然翻译的过程简单很多;但是设计思想可以借鉴; 现在选取一个角度,来思考一些问题; 一个由语言L编写的,将语言X程序文件翻译成语言Y程序文件的翻译程序称为编译器,记作CLXY 编译器应该选择什么语言来实现呢?假设没有任何前人的工作,那必须用汇编写一套编译器去编译高级语言,编译器毫无疑问是一项复杂的工作的,用汇编这种低级语言去直接实现它,基本上是一个难到无法发成的工作;这是一个核心问题,汇编实现编译器这种复杂软件难度太大! 先放下上面的问题稍后再说,假设已经历经千辛万苦实现...阅读全文

博文 2020-02-23 18:32:53 旺财不哭

VS Code编辑器配置Go环境

VS Code是微软出品的编辑器, 和Atom, Sublime Text类似, 都可以集成第三方插件, 这里主要介绍VS Code配置方法, 因为VS Code在代码提示上做得更好 首先确定安装了go插件, 并且已经重启生效 编辑go文件的时候, 会提示安装, 这个时候可以确定全部安装, 过段时间我们发现有好几个插件会安装失败, 这个时候就需要我们手动安装 以 Windows 为例, 设置好环境变量GOPATH, 通过git下载工具包安装 md %GOPATH%\src\github.com\golang cd %GOPATH%\src\github.com\golang git clone https://github.com/golang/tools.git tools md %GOP...阅读全文

博文 2017-02-10 14:45:07 yin32167

2018-07-30

build-web-application-with-golang1. web工作方式2. DNS工作原理(1)先看hosts(2)在看本地DNS解析器缓存,是否有这个网址映射关系(3)首先会找本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。(4)如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至 “根DNS服务器”,“根DNS服务器”收到请求后会判断这个域名(.com)...阅读全文

博文 2018-08-02 12:34:51 温暖之隔

Apsara Clouder云计算专项技能认证:云服务器管理运维,你了解多少?

如何实现1+3+5=100种可能性么?通过学习你可以掌握如何快速地开通一台云服务器,并通过管理控制台方便地进行服务器的管理、服务器配置的变更和升级、数据的备份,并保证其可以正常运转并按业务需求随时进行配置的变更。 认证流程 1购买认证 2学习课程/在线实验 3在线考试 4领取电子证书 课程学习 01 3个理由拥抱云服务器 让你了解什么是云服务器以及使用云服务器的好处,带你开启云服务器之旅。免费试听https://edu.aliyun.com/course/58 02 1分钟快速定制ECS 让你了解如何快速地拥有一台属于自己的云服务器。开始学习https://edu.aliyun.com/course/58 03 3分钟便捷管理ECS 让你了解如何远程登录服...阅读全文

一步一步教你写BT种子嗅探器之二---DHT篇

之前写了原理篇,在原理篇里简单的介绍了一下DHT,但是还不够详细。今天我们就专门详细的讲一下嗅探器的核心-DHT,这里默认原理篇你已经读了。 背景知识 DHT全称 Distributed Hash Table,中文翻译过来就是分布式哈希表。它是一种去中心化的分布式系统,特点主要有自动去中心化,强大的容错能力,支持扩展。另外它规定了自己的架构,包括keyspace和overlay network(覆盖网络)两部分。但是他没有规定具体的算法细节,所以出现了很多不同的实现方式,比如Chord,Pastry,Kademlia等。BitTorrent中的DHT是基于Kademlia的一种变形,它的官方名称叫做 Mainline DHT。 DHT人如其名,把它看成一个整体,从远处看它,它就是一张哈希表,...阅读全文

博文 2017-02-09 08:32:47 shiyanhui