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

浅谈Golang中select的用法

在go中,select主要是和channel有关,大概的格式如下: select{ case <- ch1: // do something case i := <- ch2 // use i do something default: // ... } 这个语法看起来和switch语句很接近,但是具体select有什么用呢?我们来看一段代码: code-1 func main() { ch := make(chan int) for i := 0; i < 10; i++{ select { case ch <- i: case x := <- ch: fmt.Println(x) } } } 这段代码里我们先创建了一个channel(管道),这个管道是无缓冲的,那么这段代码是否能正常的运...阅读全文

博文 2018-05-28 13:34:38 funnyx

Go语言发展浅谈

版权声明:本文为博主John Lau原创文章,未经博主允许不得转载 https://blog.csdn.net/GreatElite/article/details/78499975 Go语言演进 语法上几乎没有增加什么显眼的语法特性,变化主要围绕降低心智负担、细节完善、工程化、Go编译提速、性能GC优化、多平台的移植、标准化、强化社区约定等。 Go语言未来发展 3到5年内,Go主攻方向仍然是服务端开发,偏向于云计算方向 会出现更多移动开发,在iOS和Android的应用会越来越多 网络应用的第三方库会越来越丰富 Go语言会在桌面端编程占据重要地位 Go在IT中影响力 Go语言将登上语言榜前列,与C和Java并列前三甲 Go语言称霸云计算(Prediction: Go will become...阅读全文

博文 2018-12-20 17:32:35 john_f_lau

浅谈golang reflect反射调用函数

Golang也是有反射概念的,其实大多数语言,尤其那种动态语言都有反射的概念和用法。 在python里getattr,globals()可以通过反射自省的模式来还原对象半身的属性和方法。 废话一句,反射是干嘛的? 通过反射我们可以还原一个对像的属性,方法。 通俗的讲,在分布式环境下,我给你传了一个json化的数据结构,但是这数据结构被解析后对应了一个方法,这方法可以用来反射调用。 另外golang的rpc也是通过反射实现的。 该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新。http://xiaorui.cc/2016/03/14/%E6%B5%85%E8%B0%88golang-reflect%E5%8F%8D%E5%B0%84%E8%B0%83%E7%94%A...阅读全文

博文 2017-04-04 19:30:31 rfyiamcool

如何理解go语言提倡组合,不提倡继承

学习golang的过程中,有一个比较关注的价值观,golang提倡组合,不提倡继承。看过一些书和资料,感觉对这个概念的解释都不是很满意,特总结这篇文章,大家指正。 组合与继承 先说说组合与继承的概念。对设计模式有过了解的同学对这两个名词应该都有初步的理解,我们来总结一下: 官方解释就不说了,组合一般理解为 has-a 的关系,继承是is-a的关系。以java为例,组合可以理解为类里边添加的属性(一般是接口类型),继承是extends。 这里我引用一篇文章的段落浅谈组合与继承 继承的优缺点 优点: 1,类继承简单粗爆,直观,关系在编译时静态定义。 2,被复用的实现易于修改,sub可以覆盖super的实现。 缺点: 1,无法在运行时变更从super继承来的实现(也不一定是缺点) 2,sub的部分...阅读全文

博文 2018-12-27 13:34:43 刘凯_7013

浅谈Golang中的接口值

在golang中,接口值是由两部分组成的,一部分是接口的类型,另一部分是该类型对应的值,我们称其为动态类型和动态值。 这个概念该如何理解呢?我们先看一段代码: var w io.Writer // type- w = new(bytes.Buffer) // type-*bytes.Buffer w = nil // type- 这里先定义一个变量w,然后再为其赋值,可以看到,变量w的type都是不太一样的,可以用fmt的%T来查看其动态类型。 fmt.Printf("%T\n",w) 在第一行定义变量w的时候,声明了其类型为io.Writer,这里是真正意义上的空接口,为什么是空接口,就是它的类型和值都为nil,在这里可以用==或者!=来和nil做判断。 w == ni...阅读全文

博文 2018-05-29 00:34:37 funnyx

2019 年浅谈编程语言(更新中)

coding.jpeg 学来学去决定有三门语言还是需要学一下,他们就是 javascript、java 和 c++,虽然他们存在许多诟病,很多情况这些诟病会被 developer 拿来嘲讽。而且有许多更好选择在他们擅长的领域可以代替这些语言。但是从招聘信息,他们还占据大部分市场,尤其在国内会 java 工作应该不愁。 american-caption.jpeg java 是一门上手快,严谨不易出错的语言。不过多少也和加班有点联系,只要你够努力基础稍微差点也可以出活的一门语言。有点像美国队长,虽然是凡人,一大堆策略,通过一大推策略来弥补凡人能力不足。还有强有力的盾牌防止一切错误。 java 是让我欢喜让我愁,一份工作就是写 java 差点干到放弃编程,断送我们 coding 之路。退下来之后修...阅读全文

博文 2019-04-10 01:34:41 zidea

golang interface浅谈

golang 的接口设计是这门编程语言的两大亮点之一,本文仅浅谈golang接口和其它语言(以C++为例)的区别。引用《Go语言编程》作者在书中的话,go语言中的接口是“非侵入式”的,而其它语言中的接口是“侵入式”的。因此,需要对非侵入式和侵入式分别理解才能理解清楚golang 接口的优点首先 让我们看看C++中的接口:在C++中,接口的实现必须要通过继承```cppinterface IFoo{ void Bar(); } class Foo: public IFoo {} IFoo *Foo=new IFoo;在此类语言中 即使另外有一个接口IFoo2实现了与IFoo完全一样的接口方法,甚至名字相同只不过位于不同的名字空间下,编译器也会认为上面的类Foo只实现了IFoo的接口,而没有实现...阅读全文

博文 2017-03-30 01:29:56 themoonstone

浅谈java虚拟机|系列1|架构简介

今天开了一个专题。谈谈我们java程序员每天面对的java虚拟机(jvm)。 本质上来说,jvm分两部分:编译器(compiler)和运行时(runtime)。 所谓的编译器,简单来说,他就是个翻译机,就像人类世界中的英语翻译,打个比方,英语翻译,他主要的工作是把中文翻译成英文。 而编译器,它主要的工作是把程序员写的java代码(就像:中文)翻译成class文件(就像:英文)。就像是一个程序员与虚拟机的翻译者。 而运行时,它主要就是一个执行机器,简单来说,它就是加载class文件,并把它翻译成更底的汇编语言和机器码,并根据程序逻辑调用底层操作系统的函数,来完成程序运行。 那编译器的原理,又是怎么样的呢? 简单来说,它包含两部分:词法分析器和语言分析器。 什么是词法分析器? 词法分析(lexi...阅读全文

博文 2019-11-24 09:32:41

浅谈GO语言中interface

接触了go语言已经有几个月的时间了,虽然大部分的系统包还不是很熟练,但是对于go也算是有一定的了解。go语言在语言的层面上并没有非常亮眼的地方。在效率方面,go语言不及c/c++,在移植性上go语言不及java,在高并发方面erlang也能做的很好。所以go会给人有一种很全能的感觉,在各个方面都做了适当的取舍。在开发效率上go会比较快些。 go语言中,interface是重点。在面向对象设计中,有组合优于继承这句话。go语言放弃了继承,在组合方面表现的很好。首先来看看interface的用法。interface有两种用法: 1,空接口,用过C/C++的人看了空接口的定义第一时间想到的就是C/C++中的void*。 var Businesser interface{} var IntData ...阅读全文

博文 2015-09-23 16:00:01 wenjianming

2018.8.21求职者——区块链淘金

今天午休后,手机叮咚一声,打开一看,陌生人加好友的请求(来自某某技术社交的A)。点击通过后,便开始处理今天的工作,一直忙到九点一刻后,才与A开始畅聊。“hello~”我主动打招呼。“你好,在某某技术社交上看到你的微信。”A说到。“我是猎头,在给区块链公司招人,很高兴认识你。”我说到在一阵寒暄过后,我了解到他是一个刚刚毕业一年的年轻人,并且他在半年前就毅然放弃传统行业,来到一个充满未知却又充满机会的新领域(区块链)来寻找自己的机会。在和他聊天的过程中,感觉到他对新鲜事物的学习与探索欲非常大,是一个有目标有野心的年轻人。我们浅谈区块链的技术和未来无限的可能,在这一聊天过程中,他不断给我传递着他对这个新兴行业的肯定与看好。也让我一下回忆起之前接触过的一些对区块链反面态度的候选人,他们采用保守的态度...阅读全文

博文 2018-08-21 22:45:20 kelasong

浅谈Golang中创建一个简单的服务器

我们知道,golang中的net/http包对网络的支持非常好,这样会让我们比较容易的建立起一个相对简单的服务器,我们来看一段代码 func sayHi(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w,"Hi") } func main() { http.HandleFunc("/sayHi", sayHi) log.Fatal(http.ListenAndServe("localhost:8080", nil)) } 这里就建立起了一个比较简单的服务器,这个是什么意思呢?现在先大概的说一下,这里监听了一个我们本机的端口,然后接受客户端的请求,再响应给客户端相应的数据。我们再来看一段代码 func sayHi(w http.Res...阅读全文

博文 2018-06-19 16:34:44 达闻西

一篇搞b站的文章

## 一篇搞b站的文章 ### `csrf`攻击简述: * `CSRF`(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:`CSRF/XSRF` * 你这可以这么理解`CSRF`攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。 * 具体原理就不详细解释了推荐一篇文章:[浅谈CSRF攻击方式](https://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html) * 了解过`csrf`攻击, 我们应该明白, 所谓的`csrf`攻击就是: * 你在你的常用网站登录了 * 此时被`xxx`恶意网站的连接吸引, 访问`xxx`恶...阅读全文

博文 2020-05-14 15:39:20 loop_0

linux各种锁机制的使用及区别(浅谈)

linux各种锁机制的使用及区别(浅谈) package main import ( "sync" "time" . "github.com/soekchl/myUtils" ) var mux sync.RWMutex func tt() { Notice() mux.Lock() // 3 Notice() defer mux.Unlock() time.Sleep(time.Second * 5) } func main() { go tt() Notice() mux.RLock() // 1 Notice() defer mux.RUnlock() time.Sleep(1 * time.Second) Notice() mux.RLock() // 2 Notice() defe...阅读全文

博文 2019-01-09 14:34:46 Golang语言社区

浅谈C/C++混合编程

****如只想知道怎样就能实现C/C++混合编程而不深究为什么的话, 可以一拉到底直接看总结.****首先, 在介绍C/C++混合编程之前, 先思考几个问题1. C/C++混合编程是什么?2. C/C++混合编程有什么用?3. C/C++混合编程应该怎么实现?下面, 简单讲讲我对C/C++混合编程的理解 :1. C/C++混合编程是什么?就像问题本身所说, C/C++混合编程也就是一个工程中, 在C函数中调用C++函数的方法, 在C++的函数中能够调用C函数的方法.2. C/C++混合编程有什么用?在我们日常开发中, 也许会遇到这么一些情况, 同事A, C非常牛逼, 但是对C++一窍不通; 同事B, C++信手拈来, 但是对C却满头雾水. 但是在工作中有这么一种需求, 同事A需要用到C++的...阅读全文

博文 2019-06-23 20:53:43 Mengqi001

Spring MVC 浅谈

MVC这个词儿,最早的定义应该是作为一种软件架构设计模式出现在软工里面的,即使用model、view、controller 来设计及定义web软件的。 Spring MVC 是指Java 当前阶段最大的开源项目Spring 对于MVC 做出了具体的实现,叫做Spring MVC,作为Spring 的一个子集存在。顺道提一下Spring,现阶段的Spring 已经不再是当年那个Ioc、AOP、MVC的简单的“小”web框架了。看一下Spring 官网的一个图: 又差不多25个应用。覆盖的应用面已经达到了Java 服务器端开发的方方面面,几乎已经是Java 服务器端开发的规范。 image.png 回到MVC,MVC上文说到了不是Java 所特有的,它是一种软件架构的设计模式。 主要通过 1、拦...阅读全文

博文 2019-10-03 19:32:44 aside section ._1OhGeD

浅谈分布式计算的开发与实现(一)

## 介绍 分布式计算简单来说,是把一个大计算任务拆分成多个小计算任务分布到若干台机器上去计算,然后再进行结果汇总。 目的在于分析计算海量的数据,从雷达监测的海量历史信号中分析异常信号(外星文明),淘宝双十一实时计算各地区的消费习惯等。 海量计算最开始的方案是提高单机计算性能,如大型机,后来由于数据的爆发式增长、单机性能却跟不上,才有分布式计算这种妥协方案。 因为计算一旦拆分,问题会变得非常复杂,像一致性、数据完整、通信、容灾、任务调度等问题也都来了。 举个例子,产品要求从数据库中100G的用户购买数据,分析出各地域的消费习惯金额等。 如果没什么时间要求,程序员小明就写个对应的业务处理服务程序,部署到服务器上,让它慢慢跑就是了,小明预计10个小时能处理完。 后面产品嫌太慢,让小明想办法加快到...阅读全文

博文 2019-09-05 15:46:22 Java_the_one

浅谈 Golang 中数据的并发同步问题(二)

写在前面 原子性及 Go 中 atomic 包的使用 再提非常原始的数据竞争问题 原子性概念及其实现原理 使用 atomic 包来避免数据竞争 小结 参考 写在前面 过去 Web 开发的工作比较少涉及到并发的问题,每个用户请求在独立的线程里面进行,偶尔涉及到异步任务但是线程间数据同步模型非常简单,因此并未深入探究过并发这一块。最近在写游戏相关的服务端代码时发现数据的并发同步场景非常多,因此花了一点时间来探索。这是一个系列文章,本文为第二篇。 本文通过一个例子来引出 Golang 中的数据并发同步问题,并通过使用 atomic 包的方式来避免数据竞争问题。 原子性及 Go 中 atomic 包的使用 再提非常原始的数据竞争问题 下面的代码模拟了为一个用户(Person)发放金币(Money)的...阅读全文

博文 2019-06-14 10:51:09 敬维

浅谈 Golang 中数据的并发同步问题(三)

写在前面 Golang 中 map 的使用 不允许并发读写的 map 安全使用 map——显而易见地加锁 为什么 map 并发读写时会在运行时异常退出 小结 参考 写在前面 过去 Web 开发的工作比较少涉及到并发的问题,每个用户请求在独立的线程里面进行,偶尔涉及到异步任务但是线程间数据同步模型非常简单,因此并未深入探究过并发这一块。最近在写游戏相关的服务端代码时发现数据的并发同步场景非常多,因此花了一点时间来探索。这是一个系列文章,本文为第三篇。 本文简单介绍 Golang 中 map 类型的安全使用。 Golang 中 map 的使用 在业务逻辑中保存 key-value 是一个非常普遍的需求,因此 Map 的使用场景非常多。 不允许并发读写的 map 在 Golang 源码实现中对 m...阅读全文

博文 2019-06-15 09:15:26 敬维

浅谈分布式计算的开发与实现(二)

## 实时计算 接上篇,离线计算是对已经入库的数据进行计算,在查询时对批量数据进行检索、磁盘读取展示。 而实时计算是在数据产生时就对其进行计算,然后实时展示结果,一般是秒级。 举个例子来说,如果有个大型网站,要实时统计用户的搜索内容,这样就能计算出热点新闻及突发事件了。 按照以前离线计算的做法是不能满足的,需要使用到实时计算。 小明作为有理想、有追求的程序员开始设计其解决方案了,主要分三部分。 * 每当搜索内容的数据产生时,先把数据收集到消息队列,由于其数据量较大,以使用kafka为例。 这个收集过程是一直持续的,数据不断产生然后不断流入到kafka中。 * 要有一个能持续计算的框架,一旦收集到数据,计算系统能实时收到数据,根据业务逻辑开始计算,然后不断产生需要的结果,这里以storm为例。...阅读全文

博文 2019-09-06 15:26:42 Java_the_one

浅谈协程和Go语言的Goroutine

0x00.前言前面写了一篇初识Go语言和大家一起学习了Go语言的巨大潜力、语言简史、杀手锏特性等,感兴趣的读者可以回顾一下。今天来学习Go语言的Goroutine机制,这也可能是Go语言最为吸引人的特性了,理解它对于掌握Go语言大有裨益,话不多说开始吧!通过本文你将了解到以下内容:什么是协程以及横向对比优势Go语言的Goroutine机制底层原理和特点0x01.聊聊协程大家对于进程、线程二位明星都很熟悉,但协程就没有火了,是协程不是携程哦!协程并不是Go语言特有的机制,相反像Lua、Ruby、Python、Kotlin、C/C++等也都有协程的支持,区别在于有的是从语言层面支持、有的通过插件类库支持。Go语言是原生语言层面支持,本文也是从Go角度去理解协程。 1.1 协程基本概念和提出者协程...阅读全文

博文 2020-02-05 11:34:19 后端技术指南针

浅谈微服务中的函数计算

目前如果提到招聘中问到最多的技术点,那么一定就是大数据和微服务。随着分布式计算的普及,微服务也越来越走进了我们的生活。现在如果作为一个后端程序员,如果你不了解微服务,恐怕你自己都不好意去面试吧。下面我们就来简单了解下微服务中的函数计算。 浅谈微服务中的函数计算 函数计算起源 作为程序员,我们一直希望的就是专注写代码,不管是产品经理,还是运维人员,都不要打扰我们。但是在过去这是不现实的,特别是一些小公司,作为一个程序员,我们不仅要能够自己写后台代码,还要会写前端,同时也要会切图,更要懂服务器的部署,可以说过去的程序员都是全栈工程师,他们每个人都能顶一个团队。但是随着时间发展,现在软件功能越来越复杂,程序员更倾向于专注。每个人甚至只能开发软件的一个模块功能。服务器的部署和运维有了专业的人员来处理...阅读全文

博文 2019-09-29 04:32:45 aside section ._1OhGeD

浅谈服务可观察性的三个指标

当论及可观察性时,不同的人往往会给予不同的反应。 更多的人会反问:什么是可观察性? 如何定义可观察性? 如果说服务的可观察性不容易定义,那么我们可以换个词来类比: 可视化, 即如何做到服务的可视化? 再讨论服务可视化之前,我们先来看看它的近亲:数据可视化。 每当论及数据可视化时,业界会有一些成熟的可视化模型来供我们落地使用。对这些模型进行抽象以后,我们可以发现,数据可视化的核心在于: 数据。 展现模型 数据,指的是大量的,具备有效业务含义的数据。 这些数据可以是固定的(例如一次请求所产生的数据)或者是源源不断的数据(例如代码产生的日志数据,用户的请求数据)。并且这些数据是可以允许进行计算的(例如对用户IP数据进行聚合运算可以得出用户分布图,而对日志数据中出现的字符进行聚合运算则没有多少意义)...阅读全文

博文 2020-03-30 23:33:24 易企秀工程师

浅谈json web token及应用

Json Web Token (JWT),是一个非常轻巧的规范,这个规范允许在网络应用环境间客户端和服务器间较安全的传递信息。该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。 在web应用中,我们提供的API接口,通过GET或者POST方式调用,在调用过程中,就存在着接口认证及数据的安全性问题。例如如下问题: 1、请求来自哪里,身份是否合法? 2、请求参数是否被篡改? 3、客户端请求的唯一性,是否为重复请求攻击(RepeatAttack)? 传统的Session认证方式 在传统的web应用中,服务端成功相应请求者,返回正常的response依赖于服务端通过一种存储机...阅读全文

博文 2019-10-18 10:02:44 小碗汤

浅谈json web token及应用

Json Web Token (JWT),是一个非常轻巧的规范,这个规范允许在网络应用环境间客户端和服务器间较安全的传递信息。该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。 在web应用中,我们提供的API接口,通过GET或者POST方式调用,在调用过程中,就存在着接口认证及数据的安全性问题。例如如下问题: 1、请求来自哪里,身份是否合法? 2、请求参数是否被篡改? 3、客户端请求的唯一性,是否为重复请求攻击(RepeatAttack)? 传统的Session认证方式 在传统的web应用中,服务端成功相应请求者,返回正常的response依赖于服务端通过一种存储机...阅读全文

博文 2019-10-20 15:34:30 Liabio

千锋扣丁学堂浅谈为什么区块链用go语言开发

今天千锋扣丁学堂区块链培训老师给大家分享一篇关于为什么区块链用go语言开发?首先Go语言现在常常被用来做去中心化系统(decentralisedsystem)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。 我们在决定做Karachain的时候,考量(benchmark)了C,C++,Java,甚至NodeJs,我们也试着用一些算法来作为考量标准。而现在,我表示我们正在用Go来实现此目标,并且感觉不错。现在建造一个区块链,恰如当时建造一个操作系统,我们在建造像区块链平台这样复杂的东西时,把注意力放在了那些核心问题上。经过差不多4周的开发与探索,我们才发现这门奇妙的语言是如何优雅地解答了我们的难题。Go语言很简单。并且每次你中途休息(cessation)之后...阅读全文

博文 2019-07-02 19:32:40 扣丁学堂