之前写过了Grpc服务开发和接口测试初探【Java】,中间耽搁了一些时间,Go版本的gRPC测试开发实践才有时间学习使用。其中也是由于自己Go语言不够熟悉导致的。之前有段时间想暂时放弃Go语言的学习,导致了Go的生疏,原因是从Groovy到Java性能。
创新互联主营大荔网站建设的网络公司,主营网站建设方案,App定制开发,大荔h5微信平台小程序开发搭建,大荔网站营销推广欢迎大荔等地区企业咨询
回归正题,Go语言版本的gRPC实践相对Java来说是比较简单的,但是总体的工具链是比较复杂的,可能是因为Go生态目前相比Java还是比较匮乏吧。下面我先简述一下大致的步骤:
以上步骤亲自操作可能会遇到一些小问题,我本人搜到的教程什么的也是乱七八糟,踩了一些坑。我没有整理出一个亲自实践之后的可行的教程,原因有二:
Go语言的gRPC的 proto 编写跟Java大致一致,只有一个报名的参数不太一样。下面是我的 Hello.proto 内容:
这里主要 go_package 网上搜到的配置方式有些不一样,我没有全都尝试,大家在搜索的资料时候,尽量先看看 syntax 这个参数的值,以及文章教程写作的时间,如果距离现在太久了,我建议直接关掉。搜索引擎有过滤功能,可以过滤掉过时的教程。
这里Go语言gRPC的一点优势,就是在一个项目中即可实现,Java需要先弄一个SDK这样。Go语言的gRPC的代码可以通过生成代码命令中的参数实现指定路径。我是放在了和 proto 文件的同级目录。
服务端代码也是比较格式化的内容,如下:
其中 pb.RegisterHelloServiceServer(s, Ser{}) 如果报错,请检查自己安装的工具 protoc-gen-go 或者 protoc-gen-gofast 版本,一般提取报错 message 搜索也能得到解决办法。
下面是客户端的代码,由于学艺不精,其中大部分参数的含义目前我也不是很清楚,特别是基于 stream 的请求响应的方式使用。后面我先把Java的学完,再回过头来看Go的,按照这个顺序学习和分享。
服务端输出:
忘记打日志了。没有输出
客户端输出:
Go语言的gRPC测试开发实践已经完事儿,大概率上我不会在工作中使用Go作为主力gRPC测试语言,后面测试实践内容还是会以Java为主。
因为内存管理粗糙。经常看到fmt.xxx导致内存占用太多,反射导致内存占用太多的抱怨。
go语言适合写服务器组件,那种和业务数据无关的服务器。比如数据库服务器、web服务器、日志搜索引擎等。如果用来写一个crm管理系统,非常累,因为缺乏好多高级特性和庞大的第三方库,而且语法比较单一,总体感觉就跟写命令行差不多。
Go语言是谷歌2009发布的编程语言,这个语言发明的目的,就是为了在运行速度接近C/C++语言的基础上(注意是接近),降低开发者的门槛,减少开发难度。
Go语言,在功能上没有超过C/C++,适用者为没有C/C++经验的开发者,开发出接近C效率的程序。对于已经熟练掌握C/C++的开发者来说,Go语言没有优势,还要重学语法,适应开发环境,明显是不符合效率的。
总结
其实语言这东西,都有其优势和劣势。而且有些东西并不是纯技术的。比如java的优势在于清晰的语意表达。写代码的上限不高,但是下限也不低,适合工业开发。
而go呢,不得不说go在微服务这块有先天优势。毕竟java中要实现go的很多功能,需要引入第三方库。很笨重。而go原生支持,这个微服务就很轻巧。但是go的语法太活,工业用是一个挺大的弊端。
这可太多了,google对技术非常开放,使用了很多常用的开放式编程语言。C++、Java、python是它的搜索引擎的主要编程语言。
现在Go语言是google新产品的主要编程语言,很多在线服务都是Go语言编写的。
针对它旗下的Android操作系统和相关产品采用的是C结合Linux系统以及Java语言。
同样是高中,写了一个邮箱爆破工具,把班上一个女生的邮箱破解了,看了她写在邮箱里的日记,原来她不喜欢我。那个时候我知道了,技术可以揭示真相,但改变不了人心。
上大学的时候每学期期末都要在教务系统评价老师,虽然没有任何卵用,但是它还居然不能同时填写一个,也就是说,你不能全部填A,也不能全部填B或者C或者D,这很麻烦,所以我做了一个插件,点一下就完事儿,随机填写,保证能提交成功,获得了全校同学的喜爱。
大二的时候渗透了学校图书馆的服务器,在里面植入了我的木马,可以任意借书,只要检测到我的名字,就直接删除借出信息,于是我借的一本普林斯顿高等数学就在寝室躺了三年,不过我也只借了这一本。
社交网络这部电影火起来的时候,我也抓了全校学生的照片,做了个类似facemash的网站,后来被辅导员发现了,就关停了。
后来搞到一个树莓派,更是做了许多好玩的东西,比如接上扬声器和话筒,用百度语音识别接口和图灵机器人的接口实现了一个语音助手,我只要在客厅问他,今天天气怎么样,他就会回答天气如何,而且我还加了定时任务在里面,每隔一段时间,会发微博@我的女朋友注意喝水
先不回答问题,先聊聊这个听说!
程序员并不是疯子,只是逻辑思维可能比较的接近于计算机思维,所以常常有些顽固。
成天和代码打交道不假,不过,交流也是程序员比较重要的一个能力,所以沟通能力还是比较强的,只是说,做技术的人都有个通病,就是,不感兴趣的话题,我不插嘴。
so,有本事和程序员聊数码产品,你看看他话多还是少。
最后一个,很难找对象。
这个其实是一个误区,我认识的30+单身的妹纸,绝对比30+单身的程序员多非常多。but,这些30+单身的程序员,基本都看不上这些30+单身的妹子。
所以,程序员找不到对象只是一种假象。
好了,说说我写得最牛的一个程序吧。
很早很早以前,我们做了一个应用程序商城,当时还不是移动互联网时代,智能手机才刚刚问世,所以,我们的应用程序商城卖的是SaaS系统。
我们有非常非常多的SaaS系统提供商,包括Microsoft、Google等等。
所有的这些SaaS系统,我们这里卖的都是license,license也分等级,例如高级用户,中级用户,初级用户。
每个SaaS系统也有不同的通讯协议和报文格式。
因为我们要对接的SaaS系统非常多,我们不可能去每个系统单独对接,所以,我们就自己做了一个模块,能够将所有的通讯内容进行配置。并且,这些配置都是可视化的。
用户在根据我们的配置,进行不同的选择,然后付费,我们在将这些内容传递给SaaS系统。
but,这个并不算是复杂的。
这些SaaS软件的提供商都是老大,他们需要能够知道并且测试自己的系统在我们商城下运行是否顺畅,并且他们可能会调整自己的一些配置,也需要知道这些调整会不会有影响。
因此,我们就做了一套系统,这套系统可以根据这些SaaS软件提供商基于自己的系统接口的配置基础上再进行配置,然后按照这些配置自动的一步步执行,如果执行不下去了,将结果告诉SaaS软件提供商,并且告知他是什么问题引起的。
例如: SaaS软件提供商想模拟一个企业用户购买了1个高级用户License,再购买了3个普通用户license,然后将其中2个普通用户license升级为高级用户,然后将1个高级用户license降级为普通用户,然后,将1高级用户license分配给了员工A,1个普通用户license分配给了员工B,然后注销掉所有的普通用户license。
当然,这个流程可以非常长非常长,而且其实内部规则很多,例如,有的SaaS系统可能是,注销普通license后,如果有空闲的高级license,普通license所分配的用户需要自动分配到高级license上,但有的SaaS确是,注销后,用户需要闲置。
所以,当时这个配置化的通信模块,并且还含有规则的功能就已经很复杂了,还要在此基础上做一个自动化的测试系统,基本上我们都快做哭了。
你自己测试自己的接口,能不能自己写脚本,懒到爆了。
我觉得自己最牛X的程序是高中时在学习机上用6502汇编语言写的钢琴程序。
当时的裕兴学习机带一种学习卡,可以使用汇编写程序,买到了一本薄薄的汇编语言指令书籍,对照一些《电子报》的零星资料,自己学习了解学习机的地址划分、指令集。
当时为了搞明白程序干啥用的,搞白纸从屏幕(电视机)抄了很多反汇编代码。那台学习机的内存1M,还使用了内存分页,有限的资料要搞明白内存是怎么划分的,真是耗了很多脑细胞。最要命的是写程序不带存储功能,每次要写就要重新输入一遍程序。后来又学它的手柄控制、Midi音乐、键盘控制、软驱控制,但那时候这些东西对自己来说太难了,有的能搞出来,有的没成功。
最后还是用它的汇编写了个电子琴程序。
学习卡另外还自带G-Basic的情况下,用basic实现更容易,我也是先学Basic后学的汇编。现在自己也一度觉得,那时候自己是一生中自学能力的巅峰,可惜了当时学习资料太少,长大了学习能力急剧下滑,到现在也没啥出息。
不要妖魔化程序员,程序员只是一个职业身份。黑客是程序员的一种,所谓的黑客其实也是写代码而已,只是因为代码有特别的功能,就像黑匣子那样神秘,所以才会被称为黑客吧。怎么样神秘,其实我也不知道,但是可以肯定的是,无非就是在现有系统和代码的前提下,利用Bug而实现其特殊功能而已。
不鼓励程序员写所谓的黑程序,大多数场合一点价值都没有,甚至还可能违法违规。实际上,网络安全已经很发达,你能看到的所谓的漏洞,很可能是请君入瓮。
程序员的确要花很多时间和代码打交道,但是除了代码,还有很多人和事。比如产品经理、项目经理、设计与美工、架构与系统、项目组其他成员同事。如果你是从事和硬件相关的软件开发,那么你还需要和硬件以及硬件团队打交道。所以,成天只和代码打交道,基本上不是什么现实情况。
程序员干得久,普遍来说确实要比干销售之类的要沉默内向一些,或者说有些木讷吧。我认为主要是工作环境影响的吧,大部分时间其实还是与代码打交道,构思,编写,调试,修改,验证。
程序员其实还是很好找女朋友的哦,主要是给人实诚可靠的感觉。再加上,程序员普遍的工资都不算低,如果是一线城市,二十万年薪起步的大有人在,三十万年薪起步的也不少,五十万年薪以上的就相对少一点。如果是大厂的程序员,五十万年薪起步其实并不算多。
疯子通常和天才是近义词,所谓的疯子不是医学上的疯子,是看起来和常人不一样,思维和行动可能也会有差异。但大多数程序员都不是疯子,因为大多数程序员都不是天才。天才不是疯子,疯子更不是天才,只是他们之间有一些交叉特点,就是与常人不太一样。
最后,还是正面回答一下题主的问题。我没有写过黑客般的程序,也没有写过很牛X的程序。我觉得我写的比较好的那些程序,是框架好,稳定性好,扩展性好。我有很多代码,从写好之后,纵横多个平台,历经十几年的考验,经历了很多量产项目的洗礼,我想这就是好代码之一吧。
我对这些不懂,但是,给我记忆最深刻的。就是一个写冒险岛外挂的一个人,那个外挂名字叫香飘飘,好像是写到079?还是哪个版本。然后就不写了。然后他本人说不写外挂的原因是!!!要去上高中了,要认真读书了,然后就不写了!
我先回答找不到对象这个问题,这一定是个初级程序员,我认识的程序员比我大的只有一个单身,结婚比例超过百分之九十九,所以说程序员找不到对象这个结论不知道是谁发明的。
另外我些过最牛X的程序是一个bug,当天公司的交易额降低到零…
比较满意的,是我自己在维护着的黑帽seo工具。
我做黑帽seo也有七八年了,对搜索引擎的算法了解得非常深刻,百度搜狗各种接口,快排,反推,强引,寄生虫……都是第一时间掌握。几万个站点经验,加上我个人见解的seo技巧,用php迭代了4个版本,维护着的一个全自动排名的seo工具。
目前开了一家跨境电商的公司,正利用它做谷歌。
牛逼之处那当然就是赚了不少的钱啦,其他说什么都是虚的。做这行这么久,早就褪去了各种技术标准,各种有的没的技术噱头的争论热情了。一个用dede采集搞的权5下载站,它也价值一两百万,吹技术是最无聊的事。
计划在四五月用go迭代到第五个版本,解决加密和性能的问题,一天几千万,上亿的蜘蛛量,php真的不行,之前想用swool的,看到他们团队的破事,就转向了go,额外说一句,go语言真好用。
不过目前也没有什么商业化的想法,所以就不要认为我在割韭菜了。纯粹是无聊,分享一下,吹吹牛逼。也不用找我引流,除非一个流量跳转能贵过3毛钱。
是的,go语言的全称是:go programming language。go 这个词太通用了,搜索引擎不能很好辨认,所以习惯叫golang.
全球十大搜索引擎
1. Google —— 全球最大的 (机器)搜索引擎
主要搜索结果将列入AOL, Netscape, iwon和Go.
Google在对网站进行排名时不仅衡量关键词与页面的匹配度,也考虑外部链接。一个网站拥有越多的外部链接,说明它越受欢迎。
2. Yahoo
—— 世界最早的分类目录,也是最大的门户网站。
它的搜索结果最初来自于Google,后采用Inktomi(已被雅虎收购)提供的结果。Yahoo现在开发了自己的搜索技术,称为Yahoo
Search Technology (YST)。
3. MSN
—— 录属于微软公司。
MSN提供的Hotmail和MSN
Message极受欢迎。但MSN没有自己的搜索引擎,一直采用其他搜索引擎的结果。比如,MSN主要搜索结果来自于Inktomi,竞价广告原由LookSmart提供,但于2004年初改由Overture提供。
4. AOL —— 美国在线,是美国也是世界上最早的门户网站之一。
几年前已与时代公司合并,成为美国在线-时代华纳公司。AOL目前的主营业务是ISP。其搜索结果 全部来自于Google 提供。也就是说,有良好的Google排名也有良好的AOL排名。
5. Lycos —— 西班牙公司,全称为Terry Lycos,是全世界最早的搜索引擎之一。
目前,Lycos已放弃自己开发的搜索技术,而主要搜索结果来自于Alltheweb。另外,其竞价排名结果来自于Google的右侧广告。
6. Ask Jeeves —— 规模不大,但很有特色的搜索搜索。
Ask是DirectHit的母公司,于2001年收购Teoma搜索引擎,并全部采用其搜索结果。奇怪的是,Ask的竞价排名结果却仍然来自于Google的右侧广告。
7. Overture —— 最早的付费搜索引擎(竞价排名搜索引擎)。
搜索结果被Yahoo,
MSN等采用。Overture收购了Google的对手Inktomi后被Yahoo收购,是Google AdWords目前最大的竞争对手。
如何在Overture做竞价排名广告
8. Netscape
—— 即网景公司,Netscape最初被广大用户认知是因为它的Netscape浏览器。
但网景公司研发的浏览器现在几乎完全被微软的Internet
Explorer浏览器逐出市场。只有少数的网民(不使用微软操作系统的)使用Netscape浏览器。Netscape的搜索结果
全部来自于Google. 另外,全世界最大的开放式目录DMOZ录属于网景公司。
9. AltaVista —— 全世界最古老的搜索引擎之一,中国网民很难访问。
该搜索引擎已于2003年被Yahoo收购。同时被Yahoo收购的还有AllTheWeb。
微迪认为,AltaVista不久可能销声匿迹,因为Yahoo并没有采用AltaVista、Alltheweb或者Inktomi的搜索结果,而是重新开发全新的搜索技术。
10. Inktomi
—— 不向终端用户开放,只对搜索引擎提供搜索结果。
于2003年被Overture收购(Overture后又被Yahoo收购)。在2004年Yahoo开发自己全新的搜索引擎技术之前,Inktomi还是全球第二大搜索引擎,其搜索结果被Hotbot,
MSN等著名的网站采用。
拓展资料:
搜索引擎(Search Engine)是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。搜索引擎包括全文索引、目录索引、元搜索引擎、垂直搜索引擎、集合式搜索引擎、门户搜索引擎与免费链接列表等。
一个搜索引擎由搜索器 、索引器 、检索器 和用户接口 四个部分组成。搜索器的功能是在互联网 中漫游,发现和搜集信息。索引器的功能是理解搜索器所搜索的信息,从中抽取出索引项,用于表示文档 以及生成文档库的索引表。检索器的功能是根据用户的查询在索引库中快速检出文档,进行文档与查询的相关度评价,对将要输出的结果进行排序,并实现某种用户相关性反馈机制。用户接口的作用是输入用户查询、显示查询结果、提供用户相关性反馈机制。
参考资料:百度百科_搜索引擎