扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
我喜欢jetbrains系列的IDE+go插件。不过我要说的是这个问题主要看你的观点如何。
创新互联建站-专业网站定制、快速模板网站建设、高性价比东城网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式东城网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖东城地区。费用合理售后完善,十多年实体公司更值得信赖。
说eclipse:
构建方式是使用go install 命令,每一次编译运行都是go install。这样的好处就是如果你有很多的包,下载下来并没有编译,这样每次编译速度是很快的。而且(!)go install 符合go官方的项目结构,官方说过了,一个go的项目应该是以个gopath,包含src,pkg,bin三个主要目录。所以说go install个人认为才是主要的go编译方式。
说eclipse的缺点:
其实eclipse插件的go编译方式,还有目录结构,项目结构,都是非常完美的!!!!真的很完美!可是,他的代码提示,太差件!大括号都不能自动补全,gdb 32bit 64bit兼容问题,eclipseC++ 没有html js插件,需要手动安装,几乎不能开箱即用。不过如果你是开发算法,数据处理,还是推荐eclipse的,毕竟其他都无关紧要。
说jetbrains:
说先说clione肯定不适合,新建项目没有向导,导致改成go项目各种不开心,比如图标对于我来说就无法接受go lib 不是小耗子~这是次要的,重要的是各个文件都是灰色的(没有在cmake中包含的结果),然后说剩下的,phpstorm这个不说了,估计很少有人插件按在这里,webstorm,体验也不是很好,idea?体验很好,可是毕竟比较重,尤其是现在加入了自家的K啥玩意(无意冒犯,没记住单词)~可是话说回来,go跟C系列IDE配合才是最佳,跟java系列一点不搭关系,用idea似乎有点格格不入,但是!idea支持新建项目向导,lib的图标也很清晰,最后还是选择idea吧,期待clion的强大起来!
再说jetbrains系列缺点:
插件的构建方式是go buiild 这个让人很不爽,我们几乎不确定会构建到什么地方去,还要每次设置一下run配置。这个可能无关紧要,毕竟不是什么大的毛病,可是go build不能缓存.a文件,直接构建的结果就是很多第三方包的情况下很慢!所以建议安装包的时候手动install 一下解决这个问题。自带代码格式化,这个格式化跟go 格格不入,总的来说就是蛋疼,心碎,菊花痒。
最后说liteIDE:
轻量级IDE,我可以说是国人GO伟大作品典范,然而默认构建也是go build,项目管理方式不符合go官方标准。代码提示不能自动导入(eclipse也不能),不过如果你的项目是以包为单位的,那么另当别论。一定很不错,毕竟是轻量级专门针对GO的IDE!
说这些,其实还有很大一部分取决于你的项目是用vendor机制管理,还是godeps机制管理依赖关系。go不像java拥有强大的几乎天下一统的maven(无意冒犯,暂不评价其他构建套件)。
go没有官方包仓库。
go没有官方包管理工具。
go没有官方自动化构建套件。
上面三个没有是致命要害。导致民间各种百花齐放。
说说我的项目怎么管理
gpm 一个shell工具(windows下你可以用git的bash,或者cygwin~)
我是严格艳照官方推荐方式管理go项目,一个go项目一个gopath。系统的gopath只是为了安装go命令,我没有配置gobin,意义不大。
项目的依赖跟我的代码包都在src下(非vendor)
vendor用来存放包的特殊依赖,发布项目直接把依赖包发布上去(公网管理则只上传依赖关系文件 godeps文件)
资源文件等都放在src目录同级,编译文件放在bin,引用直接../引用。
1、Sublime text
这个文本编辑器在编程界极为普遍,它并非一个完全成熟的IDE,但它具备了很多语言的扩展插件,比如Pyhon、lua等,其中有一个插件GoSublime专门针对Go语言,提供了语法高亮、自动补全等功能,这些功能使Sublime Text称为一个很实用的Go IDE。
2、IntelliJ
由Jetbrains提供,在Java开发者中更为流行,其自带的Go插件支持语法高亮显示、代码补全、自动编译以及子库支持,这就使使用者可以很方便地将项目拆分成多个包,可以在一个单独的IDE中浏览它。它有个很好用的功能,插件使用了突出显示来显示未使用的变量或包。
3、LiteIDE
目前也是一个专门针对Go的IDE了,功能很全面,具备语法高亮、自动补全、自动编译、调试、包浏览及管理。调试器在后台使用的gdb,这样可以方便地打印变量值、查看当前堆栈信息。
4、Intype
是仅Windows下支持的文本编辑器,具备有限的语法高亮支持和特定的高亮显示设置。
5、Netbeans
Netbeans内建支持了大量语言,同时具备Go插件,从而可以同创建正常项目一样,创建Go源文件,除了语法高亮以外,其Go插件并不支持其他特殊功能,如何使用IDE编译Go文件还不得而知。
6、Eclipse
最受欢迎的IDE,GoClipse插件在Eclipse中添加了IDE功能来支持Go,GoClipse提供了可配置的语法高亮显示、自动文档补全、自动编译以及最重要的实验调试支持。
7、TextMate
是一个Mac OS下的文本编辑器,可扩展它以突出显示Go代码,并提供源代码片段。
8、Komodo Edit
来自ActiveState的开源代码编辑器,基于Monzilla 7.0且支持跨平台,支持多种语言,但免费版的Komodo功能有限,它的golang插件komodo-go提供了基本的语法高亮、代码补全功能。
Android系统试图尽可能长地保持一个应用程序进程,但是当内存低时它最终还是需要移除旧的进程。为了决定保持哪个进程及杀死哪个进程,Android将每个进程放入一个基于运行于其中的组件的重要性等级和这些组件的状态。重要性最低的进程首先被杀死,然后是次低,以此类推。总共有5个层次等级。下列清单按重要性顺序列出:前台进程,用户当前工作所需要的。一个进程如果满足下列任何条件被认为是前台进程:它正运行着一个正在与用户交互的活动(Activity对象的onResume()方法已经被调用)。它寄宿了一个服务,该服务与一个与用户交互的活动绑定。它有一个Service对象执行它的生命周期回调(onCreate()、onStart()、onDestroy())。它有一个BroadcastReceiver对象执行他的onReceive()方法。
在给定时间内仅有少数的前台进程存在。仅作为最后采取的措施他们才会被杀掉——如果内存太低以至于他们不能继续运行。一般来说,就在那时,设备达到一个内存???状态,因此杀掉某些前台进程以保持用户界面响应。可视进程,他没有任何前台组件,但是仍然能影响用户在屏幕上看到东西。一个进程满足下面任何一个条件都被认为是可视的:它寄宿着一个不是前台的活动,但是它对用户仍可见(它的onPause()方法已经被调用)。举例来说,这可能发送在,如果一个前台活动是一个对话框且运行之前的活动在其后面仍可视。它寄宿着一个服务,该服务绑定到一个可视的活动。
一个可视进程被认为是及其重要的且不会被杀死,除非为了保持前台进程运行。服务进程,是一个运行着一个用startService()方法启动的服务,并且该服务并没有落入上面2种分类。虽然服务进程没有直接关系到任何用户可见的,它们通常做用户关心的事(诸如在后台播放mp3或者从网络上下载数据),因此系统保持它们运行,除非没有足够内存随着所有的前台进程和可视进程保持它们。后台进程,是一个保持着一个当前对用户不可视的活动(已经调用Activity对象的onStop()方法)。这些进程没有直接影响用户体验,并且可以在任何时候被杀以收回内存用于一个前台、可视、服务进程。一般地有很多后台进程运行着,因此它们保持在一个LRU(least recently used,即最近最少使用,如果您学过操作系统的话会觉得它很熟悉,跟内存的页面置换算法LRU一样。)列表以确保最近使用最多的活动的进程最后被杀。如果一个活动执行正确地执行它的生命周期方法,且捕获它当前的状态,杀掉它对用户的体验没有有害的影响。空进程,是一个没有保持活跃的应用程序组件的进程。保持这个进程可用的唯一原因是作为一个cache以提高下次启动组件的速度。系统进程杀死这些进程,以在进程cache和潜在的内核cache之间平衡整个系统资源。Android把进程标记为它可以的最高级,即进程中活跃的组件中重要性最高的那个(选取重要性最高的那个作为进程的重要性级别)。例如,有一个进程寄宿着一个服务和一个可视活动,进程的级别被设置为可视进程级别,而不是服务进程级别(因为可视进程级别比服务进程级别高)。此外,一个进程的排名因为其他进程依赖它而上升。一个进程服务其它进程,它的排名从不会比它服务的进程低。例如,进程A中的一个内容提供者服务进程B中的一个客户,或者进程A中的一个服务绑定到进程B中的一个组件,进程A总是被认为比进程B重要。因为一个运行一个服务进程排名比一个运行后台活动的进程排名高,一个活动启动一个服务来初始化一个长时间运行操作,而不是简单地衍生一个线程——特别是如果操作很可能会拖垮活动。这方面的例子是在后台播放音乐和上传相机拍摄的图片到一个网站。使用服务保证操作至少有“服务进程”的优先级,无论活动发生什么情况。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流