1. 日常生活和开发全用linux可行吗为什么
完全可行的。
很多人的头脑印像中,认为linux是主要用作服务器系统,特别的高深,需要手敲很多的命令来执行操作。
其实Linux是一个完全可以作为日常使用的操作系统来使用的。 只不过,在大平台的推广下,它只能作为一个小众产品来使用而已。
现在很多linux桌面操作系统本身就被设计成为模仿Windows的界面风格,熟悉Windows的用户在这一系统下会比较顺手。 常见的Linux桌面发行版有Ubuntu、深度(deepin)等。
聊天 ,腾讯QQ Linux版本,支持X64、ARM64、MIPS64架构。
办公软件 ,虽然Linux下没有微软的Office系列,但WPS是非常不错的一套办公软件哦,完全不逊色与微软的Office。
游戏 ,很多人质疑说,Linux下的 游戏 太少了,根本满足不了大众的 游戏 需求,其实,在我看来,是大多数用户的大型 游戏 的需求还是不大,即便有需求,Linux下也有相应的解决方案,比如:Steam就是在Linux系统下的 游戏 分发软件,通过Steam平台,很多相当不错的 游戏 进入Linux。
程序开发 ,对于程序员来说,几乎的程序开发环境都可以在Linux中搭建起来,并且绝大多数,在Linux下的开发效率是要比在Windows下开发要容易和高效的,因为Linux有着极其强大的自由性。尤其是对于web开发,由于服务器端一般都采用Linux系统,所以,如果本机也安装linux进行开发,那将会节省很多成本,并且保持了环境的高度统一。
Linux对于移动端、云计算、Ai技术以及嵌入式等各个领域,都发挥着非常重要的作用。
非常难,最关键的原因是在linux下,众多的专业软件没有,网银软件什么的没有,同时一些日常生活中的冷僻一点的软件也没有。
1、专业的软件没有
比如PS、CAD等等,这些工具软件就是没有的,所以如果你需要使用这些专业的工具软件,就无法实现全部用linux。
2、日常生活的很多软件也没有
有些人说我不用专业软件,就日常看看视频,上上网之类的。如果你只是这些简单的需求,估计是可以。
但问题是,在linux下,很多的网银软件,控件什么的都没有,这样你付不了款,登不网上银行什么的,这些可就是大问题了。
3、开发方面
开发方面也分好多种,有些是必须在windows下开发的,有些是需要MacOS环境,有些需要linux环境,具体看你的开发需求是什么,并不能一概而论。
但是在我看来,完全只使用linux,不用其它的操作系统,真的很难的,这也是目前国产系统无法广泛推广的根本原因之所以,毕竟所有的国产系统都是基于linux系统的修改版。
我尝试过Linux系统桌面版本的使用情况,这里使Ubuntu及国内的Deepin系统。本文以Ubuntu18.04为例。
我们下载系统后初始安装界面差不多就是这个样子,后期可以自定义出各种界面,自由度非常高!
一、日常生活及办公软件
1、聊天软件QQ
腾讯曾于2008年推出QQ for Linux版本,但2009年之后就再也没有更新过,但在上个月24号腾讯宣布QQ for Linux版正式回归!全新版本优化了消息体验,完善了消息的收发能力以及在性能上得到了提升。
2.办公软件WPS
WPS官网也是有发布Linux版本的
总体来说办公软件也是非常好用的,跟windows基本没什么区别,满足日常办公需求。
我自己尝试过用Linux来应付一个周的时间,在完全不打开macOS和Windows的前提下,深度Linux基本上可以完全满足我的需求。
得事先讲清楚的是,我基本上已经很少玩 游戏 了,目前做的也都是互联网产研线上的工作, 娱乐 就是看视频听音乐、看博客逛开发者社区,其余的工作和学习也都是跟互联网软件开发相关的,因此Linux对于我来说可以满足基本需求。
硅谷有两种程序员,一种是用macOS的,一种是Linux的,基本上都是这两类程序员占主要,Google和Facebook就是这类硅谷公司的典型。两类程序员基本上都是用Emacs和Vim开发的居多,尤其是做后台的大部分都是在远程服务器上完成,而服务器上就是Linux系统。
Google之前一直用定制版Ubuntu、也就是goobuntu,现在逐渐转向了gLinux,也是基于Debian的Linux版本,Google不限制员工使用什么类型的操作系统,不过Google鼓励工程师实用Linux操作系统。
很多同学可能平时不大能接触上,国内也有不少的企业是用这样的环境开发的,比较著名的就是拥有着11亿注册用户的微信开发。微信PRC框架、服务器框架代码、微服务、路由策略、过载和自适应,消息队列等都是在Linux C/C++环境下开发,你所了解的微信的主要功能,比如朋友圈、公众号、支付等核心功能全都是在Linux下开发的。
基本上是采用的微信后台是采用SSH到服务器开发机,大部分基本上采用的是vim/emacs+gcc+gdb进行开发,听说只有很少一部分是本地IDE写好传到变以及进行编译调试,要知道微信这种级别的产品,用户量是10亿级的,代码量是千万行以上的,都还是在Linux C/C++为主要技术栈的环境下进行开发,因此Linux做开发是肯定没问题的。
除了没有Visual Studio、Xcode这些Windows或者macOS下的专门开发工具,其他的主流开发工具,Linux上都非常全面,甚至体验上会更好。
作为生产力系统,Linux对于开发者是极度友好的,Linux是最接近生产环境的,大多数的互联网企业都会选择CentOS、Debian、RedHat Linux、或者一些企业专门深度定制的Linux发行版作为服务器,即使如WhatsApp、Yahoo使用FreeBSD作为服务器,Linux也是非常接近生产环境。
我自己曾经尝试过在深度Linux下学习和工作一周时间,事实上深度Linux很好的完成了我的工作、学习和日常任务。
Emacs/Vim、Visual Studio Code、IntelliJ IDEA、PyCharm是我用得比较多的开发工具,除此之外GCC、GDB、Git都是用得比较多的工具,深度终端已经非常好用了,不需要像Windows上弄个Zoc、Cmder这些第三方终端。
文档编辑我现在基本上已经很少用office了,大部分我都是云端用Google Docs、本地用WPS,除此之外就是做presentation的时候用keynote,基本上已经不用office了,主要是我也忍不office了。脑图一个在线的ProcessOn,本地用MindMaster和Xmind也绰绰有余了。
这可能是大多数同学平时会用的, 娱乐 和社交必然是大家要用的。看视频直接用网站就好了,客户端完全可以不需要,听音乐网易云音乐、Spotify都有Linux原生客户端。
游戏 方面Linux也有Steam,大家可以去下载体验一些 游戏 ,当然如果你是个资深 游戏 玩家,我还是建议你使用Windows,毕竟大多数经典的单机 游戏 、网络 游戏 都是在Linux上没办法玩的。
社交方面,现在微信、钉钉都可以用,微软为Linux开发了Skype原生版本,腾讯也为Linux开发了QQ原生版本,完全够用了。
总体来说,我觉得深度Linux基本上可以满足国内程序员的日常学习、工作、以及 娱乐 的大部分需求。
从问题分析,想必题主应该是一个开发人员。但是题主是一个什么样的开发人员,我却不得而知了。不过既然题主在问题中表示希望开发全部使用Linux系统的表态来看,应该并非Windows系统或者Mac系统的专有程序的开发人员。
因此,我可以假定题主的开发语言应该是跨平台的,或者对特定的开发平台系统是没有要求的。因为只有这样的假定,才符合题主的问题的基础要素。
从这个推断来看,在开发层面上使用Linux系统应该是没有任何问题的。需要注意的是,虽然在Linux系统上没有像Windows或者Mac那么多的可视化工具,但是主流的IDE和常用工具是并不缺少的。只是可能在使用习惯上有一些差异,作为开发人员我相信通过短时间的适应,应该是可以适用的。
但是,作为开发人员,不能仅仅从开发者的角度去考虑问题。因为你需要和各个部门的人进行交互,交换各类文件是常有的事情。所以,如果你的同事适用了某个特定系统支持的特定文件格式,那么在你的电脑上可能就会出现一些问题。
比如使用苹果系统的人,给你一个.page文件对吧。这个例子极端了一些,但是这样的场景确实是存在的。
所以,在和同事的文件交互问题解决的前提下,使用Linux系统作为开发操作系统平台是没有太大的问题的。
而在日常生活中,使用Linux系统会有什么影响吗?其实还是有比较大的影响的。首先就是,很多国产端游可能你就没办法愉快的玩耍了。系统不支持,没办法。
虽然Linux系统上有很多的 游戏 ,但更多的人还是喜欢玩自己常玩的 游戏 。因此,如果你常玩的 游戏 在Linux没有发行版,那么这一关就会卡死你了。
不过这个问题并不严重,因为现在大家玩 游戏 主力都转移到了移动端,在PC端的 游戏 大家玩的越来越少。因此,如果你忽略 游戏 方面的需求的话,或者有专门的 游戏 主机的话,那么日常生活中使用Linux系统并没有什么太大的影响。
无论是看电影,听音乐,浏览网页,还是从事一些日常的轻度办公以及一些Linux下的各类 游戏 ,还是比较丰富的。
还有一点,Linux系统在部分情况下,对打印机的支持并不好,如果你有大量打印需求,最好先确认系统是否支持你的打印机型号。如果没有这个需求,那就忽略好了。
一个长期使用Windows系统的用户,贸然切换为Linux系统,是会存在很多不适应的地方的。但这并非不能克服,我个人建议如果你初次尝试Linux系统,可以安装国内优秀的Linux发行版Deepin系统。该系统集成了国人常用的各类软件,让大家开箱即用、拎包入住。比如QQ\WPS\搜狗输入法等等。
其自行开发的各类影音 娱乐 软件,也能满足大多数人的日常需求了。而近期因为美国政策原因,华为已经在很多电脑产品上面预装Deepin系统了。如果你近期有购买电脑的需求,并且想要尝试Linux系统,可以购买华为的电脑产品。我相信通过一段时间的学习和适应,你会喜欢上Linux的世界的。
PS:我个人已经有四年不曾使用Windows系统了。主力是苹果系统和Deepin系统,我个人感觉良好。
以上。
Linux的破冰之路在于强大的云端,比如我要用CAD设计,Linux没有这个软件,但是可以在云端有,通过云获得使用软件的能力。那么关键就是需要有更多,更快的实时云端。更人性化的收费标准,太贵了不行。还要有灵活的收费服务套餐。比如我设计一个东西,本来预计三天完成,预计云端费用三百块钱,结果由于某种原因,导致十五天才造成,结果就造成远远超出预期费用。我的意思是,云端收费可以多样化,可以针对时间收费,也可以针对项目收费。未来中国芯片系统的突破之路或许就在云计算服务的普及。这需要更多强大的云端和更快的网络接入速度。云端当然也可以运行任何 游戏 ,由于可控性,还可以避免小孩整夜玩 游戏 !云端建设也可以多样化,比如专门面向 游戏 的,专门面向工业设计的,专门面向影视的……到那时候,个人电脑不需要极其强大的配置,就可以获得顶配的性能,这也是芯片等突出重围的路子,可以获得喘息之机,逐步提高芯片设计制造能力。
如果是常用cad这类制图类软件那在上是不太方便,虽然linux上也有相似软件替代,但总体成熟度目前不如Windows。不过工作中只是偶尔用一下的话有太多云端cad,ps,cd的应用可用了,完全可以用Linux替代
从2012年开始使用fedora至今,中间换过windows,发现不适合开发,又换回fedora,如今fedora已发布31,除了电池管理和显卡驱动,其他问题不大,甚至更高效
完全可行
嗯嗯,,,
2. 想学Linux 应该怎么入手
学习Linux并不难,做好规划,有合适的学习路线,坚持学习,就可以达到意想不到的结果,初学者可以按照以下路线进行学习:
第一阶段:linux基础入门
1. 开班课程介绍-规章制度介绍-破冰活动;
2. Linux硬件基础/Linux发展历史;
3. Linux系统安装/xshell连接/xshell优化/SSH远程连接故障问题排查
4. 第一关一大波命令及特殊字符知识考试题讲解
5. Linux基础优化
6. Linux目录结构知识精讲
7. 第二关一大波命令及特殊知识考试题讲解(上)
8. 第二关一大波命令及特殊知识考试题讲解(下)
9. Linux文件属性一大堆知识精讲
10. Linux通配符/正则表达式
11. 第三关一大波命令及重要知识考试题讲解(上)
12. 第三关一大波命令及重要知识考试题讲解(下)
13. Linux系统权限(上)
14. Linux系统权限(下)
15. 整体课程回顾
第二阶段:linux系统管理进阶
1. Linux定时任务
2. Linux用户管理
3. Linux磁盘与文件系统(上)
4. Linux磁盘与文件系统(下)
5. Linux三剑客之sed命令
第三阶段:Linux Shell基础
1. Shell编程基础上
2. Shell编程基础下
3. Linux三剑客之awk命令
第四阶段:Linux网络基础
1. 计算机网络基础上
2. 计算机网络基础下
3. 第二阶段整体课程回顾
第五阶段:Linux网络服务
1. 集群实战架构开始及环境准备
2. rsync数据同步服务
3. Linux全网备份项目案例精讲
4. nfs网络存储服务精讲
5. inotify/sersync实时数据同步/nfs存储实时备份项目案例精讲
第六阶段:Linux重要网络服务
1. http协议/www服务基础
2. nginx web介绍及基础实践
3. nginx web精讲结束
4. lnmp环境部署/数据库异机迁移/共享数据异机迁移到NFS系统
5. nginx负载均衡
6. keepalived高可用
第七阶段:Linux中小规模集群构建与优化(50台)
1. 期中架构开战说明+期中架构部署回顾
2. 部署期中架构并完成上台述职演讲
3. kickstart cobbler批量自动安装系统
4. pptp vpn与ntp服务
5. memcached原理及部署/作为缓存及session会话共享
第八阶段:Ansible自动化运维与Zabbix监控
1. SSH服务秘钥认证
2. ansible批量自动化管理集群
3. zabbix监控
第九阶段:大规模集群高可用服务(Lvs、Keepalived)
1. Centos7系统自行安装/centos6与7区别
2. lvs负载均衡集群/keepalived管理LVS集群
第十阶段:java Tomcat服务及防火墙Iptables
1. iptables防火墙精讲上
2. iptables防火墙精讲下
3. tomcat java应用服务/nginx配合tomcat服务部署及优化
第十一阶段:MySQL DBA高级应用实践
1. MySQL数据库入门基础命令
2. MySQL数据库进阶备份恢复
3. MySQL数据库深入事务引擎
4. MySQL数据库优化SQL语句优化
5. MySQL数据库集群主从复制/读写分离
6. MySQL数据库高可用/mha/keepalved
第十二阶段:高性能数据库Redis和Memcached课程
第十三阶段:Linux大规模集群架构构建(200台)
第十四阶段:Linux Shell编程企业案例实战
第十五阶段:企业级代码发布上线方案(SVN和Git)
1. GIT管理
2. 代码上线项目案例
第十六阶段:企业级Kvm虚拟化与OpenStack云计算
1. KVM虚拟化企业级实战
2. OpenStack云计算企业级实战
第十七阶段:公有云阿里云8大组件构建集群实战
第十八阶段:Docker技术企业应用实践
1. Docker容器与微服务深入实践
2. 大数据Hadoop生态体系及实践
第十九阶段:Python自动化入门及进阶
第二十阶段:职业规划与高薪就业指导
3. 有哪些好用的代码编辑器值得推荐
给大家推荐8款最受程序员喜爱的代码编辑器
1、Atom
Atom是Github打造的一款开源代码编辑器,支持 macOS、Windows和Linux操作系统,支持Node.js所写的插件,并内置由Github提供的Git版本控制系统,也可被当作 IDE 使用。
Atom的特色在于它极其丰富的可定制性,以及赏心悦目的界面。特别是自带的代码缩略图和代码折叠功能,不管是用Python还是做前端都非常好用。
2、EMACS
EMACS的强大之处在于已经超出了编辑器的范畴,搞成了大的平台,很多开发人员在上面直接都以他为入口完成各种功能需求了。
主要有如下特性:上网浏览网页看视频,收发邮件,调试程序,玩游戏,计算器,;、文件比较,记日记,目录管理
3、Notepad++
Notepad++被称为是JAVA程序员的最爱,几乎可以替代记事本的最佳编辑器,很多强大的功能集于一身。可以在Windows操作系统下编辑,有完整的中文化接口支持多国语言编写的功能(UTF8技术),支持自定义语言。该程序还支持自动完成某些编程语言的API子集。
4、Sublime Text
Sublime 是一种比Notepad++功能强大的多编辑器,现在很多前端开发人员都很喜欢,虽然代码不开源,里面需要拿到注册码才能使用,但是它几乎涵盖了notepad++的所有特性,界面美观功能全的编辑器。
主要有如下特性:
跨平台,几乎在各个操作系统上都能使用
查找和替换功能做得非常友善
不仅支持多种语言关键字的高亮提示,还能针对编程语言编译错误给提示
支持插件功能
能够支持多种布局方式
5、Brackets
Brackets是一款为Linux开发者设计的开源代码编辑器,使用Brackets写代码,你不会被任何事情所打断。比如在写HTML代码时,即便你没有保存代码也可以及时预览你的Web页面效果。你也可以使用Theseus来检查变量,Brackets默认提供一种主题,当然你也可以在扩展中心获取更多的主题。
6、Vim
Vim 是一款高度可定制的文本编辑器,可以用于包括编写代码在内的各种文本创建与编辑工作。
Vim 的特色在于,它可以仅仅通过键盘来在插入、执行命令、文本批量处理等模式之中切换。这就使得 Vim 可以不用进行菜单或者鼠标操作,并且最小化组合键的操作。对文字录入员或者程序员可以大大增强速度和效率。
7、Visual Studio Code
Visual Studio Code是目前最受欢迎的代码编辑器。Visual Studio Code是一个由微软公司发布的免费开源且跨平台的代码编辑器,刚一问世,它就以强大的功能、美观的界面、高度的可定制性,被誉为微软的良心之作。
Visual StudioCode 内置了代码调试、Git 版本控制、代码高亮、智能代码补完、代码片段管理、代码重构等丰富的功能。此外,VS Code 的用户个性配置选项也很丰富,能方便地修改主题颜色、键盘快捷方式等各种属性和参数,还在内置了扩展程序管理的功能。
8、Eclipse
Eclipse以一种友好的集成开发环境,为各种类型的用户,提供了一系列针对开发Web和Java应用的可用工具。虽然专注于Java,但是也支持其他各种编程语言,如C ++、JavaScript、PHP、C、Perl、Fortran、Ruby、Python,甚至是COBOL。它还包括了适用于各种语言、向导和内置应用程序以简化开发的源代码和图形编辑器,以及支持部署、运行和测试app的工具和API。
Eclipse提供的插件功能相当丰富,有助于更加简便地创建、集成和使用软件工具,节省时间和金钱。
4. 关于linux学习路线的问题 请教前辈
很多同学接触Linux不多,对Linux平台的开发更是一无所知。而现在的趋势越来越表明,作为一 个优秀的软件开发人员,或计算机IT行业从业人员,掌握Linux是一种很重要的谋生资源与手段。下来我将会结合自己的几年的个人开发经验,及对 Linux,更是类UNIX系统,及开源软件文化,谈谈Linux的学习方法与学习中应该注意的一些事。
就如同刚才说的,很多同学以前可能连Linux是什么都不知道,对UNIX更是一无所知。所以我们从最基础的讲起,对于Linux及UNIX的历史我们不做多谈,直接进入入门的学习。
Linux入门是很简单的,问题是你是否有耐心,是否爱折腾,是否不排斥重装一类的大修。没折腾可以说是学不好Linux的,鸟哥说过,要真正了解Linux的分区机制,对LVM使用相当熟练,没有20次以上的Linux装机经验是积累不起来的,所以一定不要怕折腾。
由于大家之前都使用Windows,所以我也尽可能照顾这些“菜鸟”。我的推荐,如果你第一次接触Linux,那么首先在虚拟机中尝试它。虚拟机我推荐Virtual Box,我并不主张使用VM,原因是VM是闭源的,并且是收费的,我不希望推动盗版。当然如果你的Money足够多,可以尝试VM,但我要说的是即使是VM,不一定就一定好。付费的软件不一定好。首先,Virtual Box很小巧,Windows平台下安装包在80MB左右,而VM动辄600MB,虽然功能强大,但资源消耗也多,何况你的需求Virtual Box完全能够满足。所以,还是自己选。如何使用虚拟机,是你的事,这个我不教你,因为很简单,不会的话Google或Bai都可以,英文好的可以直接看官方文档。
现在介绍Linux发行版的知识。正如你所见,Linux发行版并非Linux,Linux仅是指操作系统的内核,作为科班出生的你不要让我解释,我也没时间。我推荐的发行版如下:
UBUNTU适合纯菜鸟,追求稳定的官方支持,对系统稳定性要求较弱,喜欢最新应用,相对来说不太喜欢折腾的开发者。
Debian,相对UBUNTU难很多的发行版,突出特点是稳定与容易使用的包管理系统,缺点是企业支持不足,为社区开发驱动。
Arch,追逐时尚的开发者的首选,优点是包更新相当快,无缝升级,一次安装基本可以一直运作下去,没有如UBUNTU那样的版本概念,说的专业点叫滚动升级,保持你的系统一定是最新的。缺点显然易见,不稳定。同时安装配置相对Debian再麻烦点。
Gentoo,相对Arch再难点,考验使用者的综合水平,从系统安装到微调,内核编译都亲历亲为,是高手及黑客显示自己技术手段,按需配置符合自己要求的系统的首选。
Slackware与Gentoo类似。
CentOS,社区维护的RedHat的复刻版本,完全使用RedHat的源码重新编译生成,与RedHat的兼容性在理论上来说是最好的。如果你专注于Linux服务器,如网络管理,架站,那么CentOS是你的选择。
LFS,终极黑客显摆工具,完全从源代码安装,编译系统。安装前你得到的只有一份文档,你要做的就是照文档你的说明,一步步,一条条命令,一个个软件包的去构建你的Linux,完全由你自己控制,想要什么就是什么。如果你做出了LFS,证明你的Linux功底已经相当不错,如果你能拿LFS文档活学活用,再将Linux从源代码开始移植到嵌入式系统,我敢说中国的企业你可以混的很好。
你得挑一个适合你的系统,然后在虚拟机安装它,开始使用它。如果你想快速学会Linux,我有一个建议就是忘记图形界面,不要想图形界面能不能提供你问题的答案,而是满世界的去找,去问,如何用命令行解决你的问题。在这个过程中,你最好能将Linux的命令掌握的不错,起码常用的命令得知道,同时建立了自己的知识库,里面是你积累的各项知识。
再下个阶段,你需要学习的是Linux平台的C/C++开发,同时还有Bash脚本编程,如果你对Java兴趣很深还有Java。同样,建议你抛弃掉图形界面的IDE,从VIM开始,为什么是VIM,而不是Emacs,我无意挑起编辑器大战,但我觉得VIM适合初学者,适合手比较笨,脑袋比较慢的开发者。Emacs的键位太多,太复杂,我很畏惧。然后是GCC,Make,Eclipse(Java,C++或者)。虽然将C++列在了Eclipse中,但我并不推荐用IDE开发C++,因为这不是Linux的文化,容易让你忽略一些你应该注意的问题。IDE让你变懒,懒得跟猪一样。如果你对程序调试,测试工作很感兴趣,GDB也得学的很好,如果不是GDB也是必修课。这是开发的第一步,注意我并没有提过一句Linux系统API的内容,这个阶段也不要关心这个。你要做的就是积累经验,在Linux平台的开发经验。我推荐的书如下:C语言程序设计,谭浩强的也可以。C语言,白皮书当然更好。C++推荐C++ Primer Plus,Java我不喜欢,就不推荐了。工具方面推荐VIM的官方手册,GCC中文文档,GDB中文文档,GNU开源软件开发指导(电子书),汇编语言程序设计(让你对库,链接,内嵌汇编,编译器优化选项有初步了解,不必深度)。
如果你这个阶段过不了就不必往下做了,这是底线,最基础的基础,否则离开,不要霍霍Linux开发。不专业的Linux开发者作出的程序是与Linux文化或UNIX文化相背的,程序是走不远的,不可能像Bash,VIM这些神品一样。所以做不好干脆离开。
接下来进入Linux系统编程,不二选择,APUE,UNIX环境高级编程,一遍一遍的看,看10遍都嫌少,如果你可以在大学将这本书翻烂,里面的内容都实践过,有作品,你口头表达能力够强,你可以在面试时说服所有的考官。(可能有点夸张,但APUE绝对是圣经一般的读物,即使是Windows程序员也从其中汲取养分,Google创始人的案头书籍,扎尔伯克的床头读物。)
这本书看完后你会对Linux系统编程有相当的了解,知道Linux与Windows平台间开发的差异在哪?它们的优缺点在哪?我的总结如下:做Windows平台开发,很苦,微软的系统API总在扩容,想使用最新潮,最高效的功能,最适合当前流行系统的功能你必须时刻学习。Linux不是,Linux系统的核心API就100来个,记忆力好完全可以背下来。而且经久不变,为什么不变,因为要同UNIX兼容,符合POSIX标准。所以Linux平台的开发大多是专注于底层的或服务器编程。这是其优点,当然图形是Linux的软肋,但我站在一个开发者的角度,我无所谓,因为命令行我也可以适应,如果有更好的图形界面我就当作恩赐吧。另外,Windows闭源,系统做了什么你更本不知道,永远被微软牵着鼻子跑,想想如果微软说Win8不支持QQ,那腾讯不得哭死。而Linux完全开源,你不喜欢,可以自己改,只要你技术够。另外,Windows虽然使用的人多,但使用场合单一,专注与桌面。而Linux在各个方面都有发展,尤其在云计算,服务器软件,嵌入式领域,企业级应用上有广大前景,而且兼容性一流,由于支持POSIX可以无缝的运行在UNIX系统之上,不管是苹果的Mac还是IBM的AS400系列,都是完全支持的。另外,Linux的开发环境支持也绝对是一流的,不管是C/C++,Java,Bash,Python,PHP,Javascript,。。。。。。就连C#也支持。而微软除Visual Stdio套件以外,都不怎么友好,不是吗?
如果你看完APUE的感触有很多,希望验证你的某些想法或经验,推荐UNIX程序设计艺术,世界顶级黑客将同你分享他的看法。
现在是时候做分流了。 大体上我分为四个方向:网络,图形,嵌入式,设备驱动。
如果选择网络,再细分,我对其他的不是他熟悉,只说服务器软件编写及高性能的并发程序编写吧。相对来说这是网络编程中技术含量最高的,也是底层的。需要很多的经验,看很多的书,做很多的项目。
我的看法是以下面的顺序来看书:
APUE再深读 – 尤其是进程,线程,IPC,套接字
多核程序设计 - Pthread一定得吃透了,你很NB
UNIX网络编程 – 卷一,卷二
TCP/IP网络详解 – 卷一 再看上面两本书时就该看了
5.TCP/IP 网络详解 – 卷二 我觉得看到卷二就差不多了,当然卷三看了更好,努力,争取看了
6.Lighttpd源代码 - 这个服务器也很有名了
7.Nginx源代码 – 相较于Apache,Nginx的源码较少,如果能看个大致,很NB。看源代码主要是要学习里面的套接字编程及并发控制,想想都激动。如果你有这些本事,可以试着往暴雪投简历,为他们写服务器后台,想一想全球的魔兽都运行在你的服务器软件上。
Linux内核 TCP/IP协议栈 – 深入了解TCP/IP的实现
如果你还喜欢驱动程序设计,可以看看更底层的协议,如链路层的,写什么路由器,网卡,网络设备的驱动及嵌入式系统软件应该也不成问题了。
当然一般的网络公司,就算网络级别的也该毫不犹豫的雇用你。只是看后面这些书需要时间与经验,所以35岁以前办到吧!跳槽到给你未来的地方!
图形方向,我觉得图形方向也是很有前途的,以下几个方面。
Opengl的工业及游戏开发,国外较成熟。
影视动画特效,如皮克斯,也是国外较成熟。
GPU计算技术,可以应用在浏览器网页渲染上,GPU计算资源利用上,由于开源的原因,有很多的文档程序可以参考。如果能进火狐开发,或google做浏览器开发,应该会很好 。
嵌入式方向:嵌入式方向没说的,Linux很重要。
掌握多个架构,不仅X86的,ARM的,单片机什么的也必须得懂。硬件不懂我预见你会死在半路上,我也想走嵌入式方向,但我觉得就学校教授嵌入式的方法,我连学电子的那帮学生都竞争不过。奉劝大家,一定得懂硬件再去做,如果走到嵌入式应用开发,只能祝你好运,不要碰上像Nokia,Hp这样的公司,否则你会很惨的。
驱动程序设计:软件开发周期是很长的,硬件不同,很快。每个月诞生那么多的新硬件,如何让他们在Linux上工作起来,这是你的工作。由于Linux的兼容性很好,如果不是太低层的驱动,基本C语言就可以搞定,系统架构的影响不大,因为有系统支持,你可能做些许更改就可以在ARM上使用PC的硬件了,所以做硬件驱动开发不像嵌入式,对硬件知识的要求很高。可以从事的方向也很多,如家电啊,特别是如索尼,日立,希捷,富士康这样的厂子,很稀缺的。
LDD – Linux驱动程序设计与内核编程的基础读物
深入理解Linux内核 – 进阶的
Linux源代码 – 永无止境的
当然你还的看个方面的书,如网络啊什么的。
5. linux基础知识有哪些
第一阶段:linux基础入门
Linux基础入门主要包括: Linux硬件基础、Linux发展历史、Linux系统安装、xshell连接、xshell优化、SSH远程连接故障问题排查、L inux基础优化、Linux目录结构知识、Linux文件属性、Linux通配符、正则表达式、Linux系统权限等
第二阶段:linux系统管理进阶
linux系统管理进阶包括:Linux定时任务、Linux用户管理、Linux磁盘与文件系统、Linux三剑客之sed命令等。
第三阶段:Linux Shell基础
Linux Shell基础包括:Shell编程基础、Linux三剑客之awk命令等。
第四阶段:Linux网络基础
第五阶段:Linux网络服务
Linux网络服务包括:集群实战架构开始及环境准备、rsync数据同步服务、Linux全网备份项目、nfs网络存储服务精讲、inotify/sersync实时数据同步/nfs存储实时备份项目等。
第六阶段:Linux重要网络服务
Linux重要网络服务包括:http协议/www服务基础、nginx web介绍及基础实践、nginx web、lnmp环境部署/数据库异机迁移/共享数据异机迁移到NFS系统、nginx负载均衡、keepalived高可用等。
第七阶段:Ansible自动化运维与Zabbix监控
Ansible自动化运维与Zabbix监控包括: SSH服务秘钥认证、ansible批量自动化管理集群、 zabbix监控等。
第九阶段:大规模集群高可用服务(Lvs、Keepalived)
第十阶段:Java Tomcat服务及防火墙Iptables
第十一阶段:MySQL DBA高级应用实践
MySQL DBA高级应用实践包括:MySQL数据库入门基础命令、MySQL数据库进阶备份恢复、MySQL数据库深入事务引擎、MySQL数据库优化SQL语句优化、MySQL数据库集群主从复制/读写分离、MySQL数据库高可用/mha/keepalved等。
第十二阶段:高性能数据库Redis和Memcached课程
第十三阶段:Linux大规模集群架构构建(200台)
第十四阶段:Linux Shell编程企业案例实战
第十五阶段:企业级代码发布上线方案(SVN和Git)
第十六阶段企业级Kvm虚拟化与OpenStack云计算
第十七阶段公有云阿里云8大组件构建集群实战
第十八阶段:Docker技术企业应用实践
第十九阶段:Python自动化入门及进阶
第二十阶段:职业规划与高薪就业指导
6. 新手如何学习Linux
学linux开发难吗?是 Linux初学者经常会问的问题,其实和Windows一样都属于操作系统,对于大部分人来说,对Windows操作系统十分熟悉,而对Linux操作系统没有使用过,所以觉得很难,其实,只要熟练掌握其操作命令和一些系统规则,就可以像使用Windows一样可以轻松使用Linux操作系统!
想要学好Linux,需要具备以下能力:
1. 基本功要扎实
学习任何一种语言,必备的基本功是必须要有的,一方面可以提高效率,另一方面可以拓宽思路。
对于Linux基本知识的学习,对一些初学者来说是枯燥乏味的,可以通过理解再背诵的方式先进行代码及语法的学习,然后进行实践操作,必须手动输入命令行,不要借助工具,这样可以更快速有效的掌握Linux。
2. 学以致用
Linux学习的目的是应用,Linux基本知识是一些零散的技术,当没有应用在项目上时,我们无法理解他的真实价值,所以打好基本功之后,最紧迫的是多做几个完整的项目,刚开始可以是功能简单的项目,之后可以选择稍微复杂的项目,勤于动手,敢于实践,一定能学好Linux。
3. 学会使用Linux联机帮助
任何一种教材都不会完全讲述Linux知识,一般讲的都是比较常用的或者是比较有代表性的知识,但是,我们在项目应用中往往有些功能的实现是需要一些生僻知识和技能的,那么,如何查找我们所需的知识呢,推荐查阅Linux帮助文档,主流的Linux都自带详细的帮助文档,很方便解决问题!
4. 在网上找资源
在Linux的学习和应用中,难免会遇到一些没有思路、不知道如何解决的问题,这时就要借助网络力量,可以通过搜索引擎搜索查找,也可以咨询资深技术人员,最终实现问题的解决,这是Linux知识积累的一个重要的途径!
5. 查阅英文技术文档
如果想深入学习Linux,查阅英文技术文档是十分必要的,往往最新的技术都是采用英文文档的方式发布的,而且更全面,因此,对于Linux人员来说,多看一些Linux技术文档,对于掌握前沿技术和加深知识是十分有必要的!
Linux学习是一个需要长期坚持不懈的过程,新的技术不断的产生,要想成为Linux大牛,必须要时刻关注Linux发展动态,掌握最新技术,才能走在行业前列!
7. 作为程序员的你,常用的软件有哪些
这个就非常多了,下面我以常见的编程开发软件和数据库管理软件为例,简单介绍几种,感兴趣的朋友可以尝试一下:
01 编程开发软件这个要看具体编程语言了,不同语言开发工具自然不同,这里以常见的C/C++、Java和Python为例,简单介绍3种比较常用的软件:
这是Windows平台下一个非常专业的集成开发工具,号称宇宙第一IDE环境,不仅仅只是C/C++,常见的C#、VB等编程语言,这个软件都能很好支持,智能补全、代码高亮、语法检查等功能非常不错,除此之外,还支持单元测试、代码重构和分析等高级功能,因此非常适合大型项目开发和维护:
这是一个非常专业智能的Java开发工具,在企业和个人桌面中,有着非常高的使用率和欢迎度,自动补全、语法提示、代码高亮等功能非常不错,除此之外,还支持JUnit、CVS整合、代码重构等高级功能,自带有Maven和Gradle构建工具,因此更适合Java项目开发和维护,个人使用起来非常不错:
这是一个非常专业的Python开发软件,和IntelliJ IDEA一样,Jetbrains公司的产品,在业界非常流行、受欢迎,智能补全、代码高亮、语法提示等功能非常不错,除此之外,还支持代码重构和分析、单元测试等高级功能,因此更适合大型项目,个人使用来说,也非常简单,很容易上手和掌握:
02 数据库管理软件
这个就非常多了,不同数据库都有专门的管理软件和工具,这里简单介绍3个比较通用的数据库管理软件,分别是HeidiSQL、DBeaver和DataGrip,对于日常使用来说,非常不错:
这是Windows平台下一个非常轻巧灵活的数据库管理软件,基于Delphi开发而来,目前支持MySQL、MariaDB、MSSQL、PostgreSQL等主流数据库,常见的建库建表、视图索引、触发器等基本功能,这个软件都能很好兼容,除此之外,还支持SQL脚本导入导出、数据备份恢复等功能,对于日常数据库管理来说,非常不错:
这是一个基于Java开发的数据库管理软件,免费、开源、跨平台,目前支持Oracle、MySQL、PostgreSQL、SQL Server等十几种主流数据库开发,建库建表、视图索引、触发器、存储过程等基本功能 都 可轻松查看和设计,数据库导入导出、数据 恢复 备份等功能也都非常不错,对于日常数据库管理和维护来说,是一个非常不错的工具:
这也是一个通用的数据库管理软件,Jetbrains公司的产品,支持跨平台,但原则上针对个人不免费,常见的PostgreSQL、MySQL、Oracle等数据库,这个软件都能很好支持, 数据导入导出( 恢复备份 )、 智能代码填充、版本 集成 控制等功能非常不错,对于日常数据库管理来说,也是一个不错的工具:
每天常用开发工具:
0.Git:分布式版本控制系统;
1.IntelliJ IDEA:java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一;
2.Sublime Text:不只是代码编辑器;
3.Postman:Http请求模拟工具和功能强大的网页调试工具;
4.DataGrip:支持几乎所有主流的关系数据库、多功能的数据库操作工具;
5.Vagrant:用于创建和部署虚拟化开发环境,配合虚拟机使用;
6.Gradle:自动化构建工具;
7.JIRA:项目与事务跟踪工具;
8.iTerm2:Mac上的终端工具;
9.Jenkins:持续集成工具。
做了一个写代码用了十几年的人,很多编程的习惯已经养成了,现在就罗列下每天必用的软件:
直接安装的linux系统,因为几乎所有的代码都是在linux下完成
不同的开发语言,每天要用到的软件可能不一样。
我是开发java web的,电脑安装了很多工具,但是说每天要用到的好像就几个。
作为程序员使用最多的软件,莫过于编程开发所用到的软件编辑器,但是编辑器的种类有很多。我们需要做到的是,找到你最喜欢的编辑器然后熟练的使用它。
同时掌握常见的一些快捷键的操作方式,从而来提升我们的工作效率,而不是以软件而论软件,什么都去接触使用。毕竟软件是工具是帮助我们提升开发效率。
下面我就列举我们PHP经常使用的软件
IDE工具类软件这一类是开发软件编写代码用的。这一类的软件非常多,我就推荐一个经常使用的PHPStorm,因为太多的话大家也用不到,也没有那么多的精力去熟练每一个编辑器。
PHPStorm是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。可以说是PHP开发程序员必备的神器。
常用快捷键如下:
1.复制快捷方式
F5 复制文件/文件夹
CTRL+C 复制
CTRL+V 粘贴
CTRL+X 剪 切,删除行
CTRL+D 复制行
CTRL+SHIFT+V 可以复制多个文本
2.自动代码
ALT+回车 导入包,自动修正
CTRL+ALT+L 格式化代
码CTRL+ALT+I 自动缩进
CTRL+ALT+O 优化导入的类和包
CTRL+SHIFT+SPACE 切换窗口
CTRL+SPACE空格 代码自动完成,代码提示,一般与输入法冲突
CTRL+ALT+SPACE 类 名或接口名提示(与系统冲突)
CTRL+P 方法参数提示,显示默认参数
CTRL+J 自动代码提示,自动补全
CTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里ALT+INSERT 生成代码(如GET,SET方法,构造函数等)
3.运行
Alt + Shift + F10 选择的配置和运行
Alt + Shift + F9 选择配置和调试
Shift + F10 运行
Shift + F9调试
Ctrl + Shift + F10运行范围内配置编辑器
Ctrl + Shift + X运行命令行
4.其他快捷方式
CTRL+Z 倒退(代码后悔)
CTRL+SHIFT+Z 向前
CTRL+H 显 示类结构图
Ctrl +F12 文件结构弹出
CTRL+O 魔术方法
CTRL+/ 注释//取消注释
CTRL+SHIFT+/ 注释/*...*/
ctrl + '.': 折叠选中的代码的代码
ALT+ / 切换代码视图,标签切换
5.其他快捷方式
CTRL+Z 倒退(代码后悔)
CTRL+SHIFT+Z 向前
CTRL+H 显 示类结构图
Ctrl +F12 文件结构弹出
CTRL+O 魔术方法CTRL+/ 注释//取消注释
CTRL+SHIFT+/ 注释/*...*/
ctrl + '.': 折叠选中的代码的代码
ALT+ / 切换代码视图,
数据库相关常用的工具 Navicat for MySQL是管理数据库的操作工具,都是可以连接远程的云数据库。方便简化开发,还可以手动备份、可视化的sql分析。
常用快捷键:
ctrl+q 打开查询窗口
ctrl+/ 注释sql语句
ctrl+shift +/ 解除注释
ctrl+r 运行查询窗口的sql语句
ctrl+shift+r 只运行选中的sql语句
F6 打开一个mysql命令行窗口
ctrl+d (1):查看表结构详情,包括索引 触发器,存储过程,外键,唯一键;(2):复制一行
ctrl+l 删除一行
ctrl+n 打开一个新的查询窗口
ctrl+w 关闭一个查询窗口
ctrl+tab 多窗口切换
服务器连接软件XShell6是非常强大的SSH远程终端客户端,帮助我们连接远程的Linux服务器来进行操作。
粘贴:Shift+Insert
历史 命令编辑ctrl + p 返回上一次输入命令字符
alt + > 返回上一次执行命令
其它
ctrl + s 锁住终端
ctrl + q 解锁终端
ctrl + l 清屏相当于命令clear
Tab键,快速补全命令
轻量级文本编辑器Notepad++。这个很轻量,打开一下文本非常的方便。
常用快捷键
Ctrl+C 复制
Ctrl+X 剪切
Ctrl+V 粘贴
Ctrl+Z 撤消
Ctrl+Y 恢复
Ctrl+A 全选
Ctrl+F 键查找对话框启动
Ctrl+H 查找/替换对话框
Ctrl+D 复制并粘贴当行
Ctrl+F2 切换书签
F2 转到下一个书签Shift+F2 转到上一个书签
F11 全屏模式
前端 :
visual studio code
后端:
pycharm
IDEA
安卓:
android studio
浏览器:
谷歌
火狐
数据库管理:
navicat
远端链接:
fileZilla
xshell
electerm(mac上使用)
流程图设计:
xmind
processOn
笔记:
为知笔记(付费一年60)
有道云笔记
虚拟机(容器)
VMware Fusion(mac上)
docker
其他:
postman
jmeter
作为一个12年开发经验的前端程序员,我来聊聊每天必用的几个软件。
写代码自然离不开 编辑器 。目前我主要使用的是微软的 Visual Studio Code 。VS Code比较轻量,功能足够应付日常开发所需,跨平台,而且完全免费 。因为之前长期使用Visual Studio在Windows平台上做开发,后来技术栈变化,经常需要在Linux和MacOS上做开发,VS Code就成了我顺理成章的选择。后来干脆在Windows上也用VS Code了。目前整个团队都已经被VS Code圈粉了。其它类似的如Sublime Text(需要付费)和Atom也有不少人使用。
因为是团队开发, 源代码管理工具 自然必不可少,而 git 是目前最热门的一个。我们公司也不例外,几年前从Perforce迁移到了 GitHub企业版 (和公众版本UI完全相同)。平时的代码审查也都是在GitHub企业版上完成的,不再使用单独的代码审查工具。有些不习惯使用命令行方式的同事使用 SourceTree 完成日常的代码分支管理和提交,而我则比较热衷于命令行方式。VS Code也提供了比较完善的git集成,但因为习惯的原因,除了直观比较不同代码版本的差异,我一般也不用VS Code执行git操作。
作为一个Web前端, 浏览器及前端调试工具 自然不可或缺, Google Chrome + Developer Tools (F12) 自然是首选。使用Developer Tools,可以对JavaScript进行调试,监控HTTP请求/响应,分析CSS计算问题和JS性能问题。 Chrome下还有很多功能强大的插件,个人比较常用的包括React Developer Tools、PostMan、Proxy SwitchOmega和AdBlock。当然,因为经常面对浏览器兼容性问题,Firefox、IE、Edge、Apple Safari以及各自的Developer Tools都是免不了要用的。
团队目前使用Scrum模型,自然需要一个做 任务规划和质量管理 的工具。我们采用了 JIRA , 每天的站会(daily stanp meeting)都会对scrum看板(board)进行更新。
遇到技术问题,自然免不了要上网查找资料。 Google 的使用频率非常高(需要科学上网)。大部分问题都能在 StackOveflow 上找到线索,但有时候也不得不跑到大名鼎鼎的同性交友网站 GitHub 上看源码。 MDN (Mozilla Developer Network)对于前端开发也是不可或缺(此处鄙视一下w3cschool,上面到处是错误知识)。
其它如node.js/npm、docker等,因为和具体的技术栈相关,就不具体展开讲了。
作为一个开发人员,你每天使用什么软件呢,欢迎说说看。
尽管我是后端出身的,不过也经常写前端代码,甚至还用C#/C++参与过一些客户端开发,自认为也算是一个Web全栈工程师。随着前端技术的不断进步,现在的前端已经不再是写写页面这么简单了,很多逻辑在前端就写了,我建议每一个出色的开发者应该尽可能对前后端都能有不错的掌握。
今天给大家推荐一些我认为前端和后端开发都需要经常用到的一些软件,这里面包括了查询资料工具、原型工具、文本编辑器、版本管理工具。
原型工具 不管前端还是后端,尤其是前端程序员,在跟产品经历沟通之后肯定会要查看原型的,方便自己在开发过程中使用,基本上大公司输出的原型都比较规范,除非你遇到张小龙这种级别的大神,哥们儿直接盯着你做了。
目前主流的原型工具主要有Axure、MockPlus、墨刀等,其中Axure依然是应用最为广泛的原型工具,大多数开发者也都应该用来看原型。
文本编辑器 不管是前端还是后端程序员,当然前端程序员就不说了,在WebStorm出现之前,没有一款真正可以叫做IDE的前端开发工具,那么基本上文本编辑器就是前端程序员最重要的编程工具。同样后端程序员即使不需要写前端代码,文本编辑器也是必备的,您不需要每次看代码都打开庞大的集成开发环境,像IDEA这种比较耗费资源的,平时查看代码啥的完全没有必要,何况你还经常要看一些前端代码。
当然你比较习惯Linux/Unix下开发,Emacs/Vim可能是你用得比较多的文本编辑器,还有UltraEdit、Sublime Text、EditPlus、Atom这些老牌的文本编辑器,不过现在我觉得每个程序员都应该下载一个Visual Studio Code,支持的语言比较多,而且插件非常丰富,是微软官方支持的开发者工具,开源免费而且颜值非常高。
查询资料、版本管理工具不用多说,每个程序员都要学会很好的使用Google、Stack Overflow两个工具,可以说你日常开发当中可能遇到的问题,通过这两个工具你全都能找到解决方案。
另外一个是Dash文档管理工具,Dash是一个非常好的开发者帮助文档工具,这个工具的好处是给所有的开发文档做了一个整合,C/C++、Java、PHP、Python、Latex、Emacs Lisp、Haskell、JavaScript、Go语言等文档都能够在这个工具当中下载使用。
最后一个就是版本管理了,SVN和Git依然是目前使用最为广泛的版本管理工具,不过就使用来说我还是推荐Git版本控制系统,可以说这个时代Git就是最好的版本管理工具了,尤其是开源时代、互联网时代,Git已经成为了最重要的版本管理工具,不管是命令行管理还是使用Github等客户端工具,堪称完美。
入行十一年,现在主要做一些管理和架构方面的工作,也会做一些Coding,主要是一些新技术的研究和“踩坑”。
编辑器首先是EditPlus,这是一个文本编辑器。最常用的两个功能:正则表达式查询和文件夹内所有文件内容搜索。
平时经常需要看一些系统日志,甚至要从好几天几十个日志文件中找到内容,这个软件很好用。(原谅我们没有上日志平台)
然后就是IDE啦,我还是喜欢用Eclipse,有时候会用STS(Spring Tool Suite),它也是一个被包装过的Eclipse,方便做一些Spring框架的研究。
一个是DbVisualizer,凡是具有JDBC数据库接口的数据库都可以管理,什么数据库都能连。
还有一个是SQLyog,这是一个快速而简洁的图形化管理MYSQL数据库的工具,我只用里面一个功能,就是数据的导入导出,效率非常高!
大部分项目只对外提供接口服务,所以接口测试工具少不了,我一般使用SoapUI,WebService/Rest都可以进行测试。
每天肯定会用的肯定不止上面几个,还有版本控制工具svn和git,都会用到是因为单位svn现在开始往git迁移。
因为用的Scrum敏捷开发流程,所以JIRA、Sonar、Fisheye这些也是都会用到的。
Maven也不用说了,几个项目基本都是基于Maven构建的。
必用的基本就是这些,只要电脑开着,这几个软件基本都是打开状态。
8. gitblit是什么
gitblit是用于跟踪任何一组文件中的更改的软件,通常用于在软件开发过程中协调程序员之间协作开发源代码的工作。
Git 最初是由Linus Torvalds于 2005 年为开发Linux 内核而创作的,其他内核开发人员为其最初的开发做出了贡献。自 2005 年以来,Junio Hamano 一直是核心维护者。
与大多数其他分布式版本控制系统一样,并且与大多数客户端-服务器系统不同,每台计算机上的每个 Git目录都是一个成熟的存储库,具有完整的历史记录和完整的版本跟踪能力,独立于网络访问或中央服务器。Git 是仅在 GPL-2.0下分发的免费开源软件执照。
由于 Git 是一个分布式版本控制系统,它可以用作开箱即用的服务器。它附带一个内置命令git daemon,可以启动一个在 GIT 协议上运行的简单 TCP 服务器。
专用 Git HTTP 服务器通过添加访问控制、通过 Web 界面显示 Git 存储库的内容以及管理多个存储库来提供帮助(以及其他功能)。已经存在的 Git 存储库可以被克隆和共享,以供其他人用作集中式存储库。
它也可以通过远程 shell 访问,只需安装 Git 软件并允许用户登录。Git 服务器通常侦听TCP 端口9418。
实现
Git(C 中的主要实现)主要在Linux上开发,尽管它也支持大多数主要操作系统,包括 BSD(DragonFly BSD、FreeBSD、NetBSD和OpenBSD)、Solaris、macOS和Windows。
Git的第一个 Windows端口主要是一个托管 Linux 版本的 Linux 仿真框架。
在 Windows 下安装 Git 会创建一个类似名称的 Program Files 目录,其中包含GNU Compiler Collection的Mingw-w64端口、Perl5、MSYS2和各种其他 Windows 端口或仿真Linux 实用程序和库。
目前,Git 的原生 Windows 版本作为 32 位和 64 位安装程序分发。git官网目前维护了一个Git for Windows的构建,仍然使用MSYS2环境。
Git 的 JGit 实现是一个纯Java软件库,旨在嵌入到任何 Java 应用程序中。JGit 用于Gerrit代码审查工具和 EGit(EclipseIDE 的 Git 客户端)。
Go-git 是用纯Go编写的 Git的开源实现。它目前用于支持项目,作为Git 代码存储库的SQL接口,并为 Git 提供加密。
Git 的 Dulwich 实现是Python 2.7、3.4 和 3.5的纯Python软件组件。
Git 的 libgit2 实现是一个 ANSI C 软件库,没有其他依赖项,可以构建在多个平台上,包括 Windows、Linux、macOS 和 BSD。它绑定了许多编程语言,包括Ruby、Python 和Haskell。
9. Linux 下进行 C/C++ 开发一般使用什么开发环境
Linux的C/C++开发环境一般都是文本编辑器(Vim、emacs等)+编译器(GCC、g++、make、cmake)+调试器(gdb),用集成版开发环境IDE(比如权codeblocks、eclipse-cdt)的比Windows平台要少。我才开始用的是eclipse-cdt,也是觉得IDE不好用,而且写一个helloworld都要产生一大堆文件(也不知道这些文件什么作用),用git来维护管理代码也非常不方便,而且如果编写的是命令行程序会反复切换到终端,还不如直接在终端编译,总之太不灵活了。不过如果gdb用得不习惯的,可以选择用gdb的图形前端ddd和Kdbg这两个软件。也有觉得命令行编辑器不习惯的,他们会选择图形界面的gVim+各种插件,或者图形功能更好的代码编辑器如gedit、Sublime Text、Atom、VScode等等。