码迷,mamicode.com
首页 > 其他好文 > 详细

值得关注的开源软件推荐

时间:2018-05-26 21:19:13      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:pac   超过   压力   wiki   转译   基本原理   请求   合作   eclips   

看了值得关注的开源软件推荐,感觉很不错,作者接触开源软件十几年,协作开发了10多个开源项目,对开源软件的认识和实践确实让人大开眼界。

应用类:框架、企业应用、编辑器

数据类:数据科学、大数据、机器学习、汽车机器人

服务类:云计算、数据库、消息队列、服务器

系统类:操作系统、编译器、虚拟机、编程语言

作者按上面四类介绍了45个开源软件的特性和要点,包括目前工作中常用到的JVM、Nginx、Tomcat、Kafka等,估计是工作技术栈原因,里面没有讲到Spring、Spring Boot、SpringCould、Redis等也很常用的开源项目。

看过文章才感觉个人技术视野的狭窄,工作中主要关注框架应用层的技术,对现在流行的数据类、云计算基础实施类的技术了解大少。以后在加深工作中应用技术深度的同时,也要注意扩展自己技术的广度才行。

https://github.com/huihoo/wiki有相关开源技术的资料索引,有时间要学习一下。

最后摘录一下作者列出的45个开源软件的特性要点,感兴趣的朋友建议看原文更精彩。

1. Django

Django和Flask是使用最广泛的Python Web框架;

Django提供Web一站式解决方案:会话、缓存、ORM、验证、表单处理、后台管理等,但系统耦合度高,替换内置功能比较麻烦,学习曲线较陡;

Django和Flask都基于WSGI,这是同步阻塞接口,不能使用异非阻塞的编程模式,你可考虑使用Klein微框架,用法很像Flask,可以异步方式编写Web应用。

2. Meteor

一个面向Web和App的应用框架和构建平台;

Meteor 7大原则;

超过12000个包的生态系统。

3. Qt

Qt核心:元对象系统、属性系统、对象模型、对象树、信号槽(Signal/Slot),Qt的Signal/Slot很好解决了对象间通讯的问题,被其它语言框架借鉴;

Qt使用QML定义用户界面,使用C++编写业务逻辑;

Qt在在汽车行业有广泛应用,是GENIVI汽车联盟的推荐技术。

4. odoo

odoo不仅仅是开源ERP/CRM;

还是一套伴随企业成长可扩展的商业运营支撑系统;

一个巨大的应用生态系统,有近12500个Apps可供选用。

5. iDempiere

iDempiere = OSGi + Adempiere;

OSGi是Java模块化一个领先的解决方案;

Adempiere是一个世界级的集成的ERP/CRM开源软件。

6. Moqui

Apache OFBiz作者的又一力作;

快速的企业应用原型系统开发;

一个框架、一个生态系统。

7. Emacs

Emacs是迄今为止功能最为强大的文本编辑器,Emacs是一种信仰,它是神一般的编辑器;

Emacs是模块化的,遵循do one thing, and do it well原则,需要什么就安装什么,你可以像搭积木的方式搭建自己的环境和系统;

Everything Emacs,你可以在Emacs完成你几乎所有的工作:编程、写作、浏览网页、收发邮件、日程、娱乐游戏、它是个人操作系统。

8. Vim

Vim模式:普通模式,插入模式,可视模式,命令行模式;

Vim的使用主要放在定位和操作上;

常见定位命令如:上下左右的操作,k 上行、j 下行、h 左、l 右;定位后就是操作,vim操作命令是原子性的,可随意组合操作命令,如:daw(delete a word)、caw(change a word)。

9. Atom

Atom由GitHub开发维护;

Atom使用的Electron framework已有一个庞大的生态系统;

微软Visual Studio Code和Facebook Nuclide都基于Atom/Electron框架构建。

10. Jupyter

Jupyter is the new front end for data science and AI.

Jupyter的操作过程可存档、传播、分享;

Jupyter的核心是IPython,Jupyter是未来。

11. Pandas

在数据科学领域,Pandas是一个非常重要的Python软件包;

Pandas基于NumPy构建,让以NumPy为中心的应用变得更简单;

Pandas使用的两个主要数据结构:Series和DataFrame。

12. Anaconda

Anaconda是一个企业级Python发行版,面向大规模数据处理、预测分析和科学计算;

Anaconda 以 Red Hat 和 Debian Linux 发行版的方式来分发 Python;

Anaconda 包含近500个最流行的科学、数学、工程和数据分析的Python软件包。

13. HDP

Hortonworks公司拥有最多的Apache大数据相关项目开发者和贡献者,开发、发行100%开源的大数据平台;

Hortonworks Data Platform (HDP)和Hortonworks DataFlow (HDF)是两大产品;

通过整合、交付统一的 Apache Spark 和 Hadoop,将 Spark 驱动的敏捷分析工作流程与 Hadoop 的海量数据集和经济性相结合,企业可以使用行业最佳安全性、管制和运营能力来部署 Apache Spark。

14. CDH

CDH可能是商业化运作最好的大数据平台和解决方案;

开发维护了多个流行大数据开源软件,是HDP最主要的竞争对手;

Impala一个C++开发的Hadoop实查询引擎,值得关注。

15. HPCC

一套C++开发的大数据处理和分析平台;

ECL (Enterprise Control Language) 和KEL (Knowledge Engineering Language) 是两个High Level的脚本语言;

HPCC比Apache Hadoop历史更加悠久,在并行架构上也有自己的独到之处:Data Parallelism、Pipeline Parallelism、System Parallelism

16. Caffe(Caffe2)

Caffe2 是贾扬清对Caffe的重新思考和重构,目前在Facebook,是Caffe2的核心开发者;

Caffe2对移动端的良好支持,15行代码Support WatchOS build 确实够简单;

Caffe2可在手机与树莓派上训练和部署模型。

17. MXNet

比TensorFlow更加轻量、高效小巧,更适合自定义需求高的公司和研究者;

MXNet允许用户自由把图计算和过程计算混合起来使用;

MXNet正在Apache基金会孵化,相信很快孵化成顶级项目。

18. TensorFlow

TensorFlow体格庞大,代码量大,抽象层多,深度自定义会很困难;

TensorFlow也是一个商业行为,背后是Google,它带来的可行度和高质量;

一个事实:Google内部版的TensorFlow和Google Cloud深度绑定优化与开源的TensorFlow在速度和性能上会又巨大差异,美国的大厂都或多或少的在拒绝它。

19. Automotive Grade Linux(AGL)

Automotive Grade Linux(AGL) 是 Linux基金会发布的开源Linux车载系统,AGL 基于 Tizen 构建;

AGL + Tizen IVI + GENIVI = AGL UCB(Unified Code Base));

Qt Automotive Suite based on GENIVI or Automotive Grade Linux。

20. ROS

ROS是一个广泛使用的机器人操作系统和软件框架,ROS的基本原理是无需改动就能在不同的机器人上复用代码;

随着ROS 2.0的开发,ROS能够兼容除Linux之外的更多操作,如Windows、Android;能够支持从工业计算机到Adruino开发板等各种硬件;

百度无人车阿波罗平台基于ROS构建。

21. Apollo Auto

百度 Apollo(阿波罗)是一个开放的、完整的的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统,采用Apache v2许可协议;

阿波罗平台基于ROS构建;

阿波罗核心核心基于Linux Kernel 4.4.32构建。

22. OpenStack

OpenStack是开源云平台的事实标准;

OpenStack + Kubernetes 开启云计算的新时代;

OpenStack尽管非常好,国内也有很多厂商是自研云计算平台的,如:腾讯。

23. OpenShift

OpenShift is Enterprise-Ready Kubernetes;

Docker容器和Kubernetes容器编排已成为企业交付软件和服务的行业标准,OpenShift可直接作为企业DevOps & CI/CD的基础设施, 成为部署微服务的多租户平台;

OpenShift是BlockApps区块链平台的PaaS基础设施。

24. SaltStack

SaltStack提供了一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度快,服务器之间秒级通讯;

SaltStack使用ZeroMQ,带来极高的通讯效率;

SaltStack或许是构建、管理、运营云计算基础设施的最佳方式,它支持广泛的云平台。

25. Riak

Riak 是使用 Erlang 开发的开源(Apache V2) 分布式 NoSQL 键/值(K/V) 存储数据库系统;

有 Riak Core、Riak KV 键值存储、Riak TS 时序存储、Riak S2 对象存储的完整产品线;

Riak拥有Erlang语言带来的分布式、消息、并发、可伸缩、容错方面的天然优势。

26. OrientDB

OrientDB 是一个Java开发的开源(Apache v2)NoSQL文档和图形数据库,也通过 OrientDB SQL 支持 SQL;

OrientDB是一个拥有对象模型 键/值模型 文档模型 图模型的多模型数据库;

多范式编程语言(面向对象、模板、函数式编程、过程式 )C++带来极高的生产力,多模型数据库OrientDB能否也带来类似效果。

27. Apache Kylin

Apache Kylin:商业数据仓库、商业OLAP引擎的替代品;

Kylin是为减少在Hadoop上百亿规模数据查询延迟而设计,Kylin为Hadoop提供标准SQL支持大部分查询功能,通过Kylin,用户可以与Hadoop数据进行亚秒级交互;

一个开源数据仓库、商业智能生态系统。

28. RabbitMQ

RabbitMQ是Advanced Message Queuing Protocol (AMQP)标准的Erlang语言实现;

RabbitMQ是部署最广泛的开源消息代理;

可以把ZeroMQ看作RabbitMQ这类消息队列系统的补充,而不是替代品。

29. Apache Kafka

Apache Kafka:下一代分布式消息系统;

Apache Kafka 是一个高吞吐量的分布式消息系统,使用 Scala 开发,最初被用于 LinkedIn;

Apache Kafka 解耦企业应用的复杂性,是信息和流数据的交换枢纽。

30. Ejabberd

与RabbitMQ实现的AMQP相比,XMPP广泛应用于即时通信领域;

Ejabberd是XMPP Server的首选;

Ejabberd支持Elixir编程语言

31. Nginx

epoll(freebsd的kqueue)网络IO模型是Nginx高性能的根本理由;

与Apache相比较,最核心的区别在于Apache是同步多进程模型,一个连接对应一个进程;Nginx是异步的,多个连接可以对应一个进程;

对于后端动态服务来说,比如Java和PHP。这类服务器(如JBoss和PHP-FPM)的IO处理能力往往不高。Nginx有个好处是它会把Request在读取完整之前buffer住,这样交给后端的就是一个完整的HTTP请求,从而提高后端的效率,而不是断断续续的传递(互联网上连接速度一般比较慢)。同样,Nginx也可以把response给buffer住,同样也是减轻后端的压力。(此条信息来自:知乎叔度

32. Jetty

Eclipse Jetty,一个更轻量、更易扩展和定制的Java Web Server;Jetty架构基于Handler,扩展更容易,而Tomcat是基于容器设计,不易扩展;

Google GAE选择Jetty,定制足够小的Java Web Server支撑GAE业务;

Apache Tomcat和Eclipse Jetty背后是两大开源基金会的合作与竞争。

33. Cowboy

Cowboy适合构建嵌入式应用,它没有配置文件,也不会生成日志,一切都由Erlang控制。

Cowboy支持的协议有:HTTP/2、HTTP/1.1、WebSocket、HTTP/1.0、SPDY/3.1、SPDY/3;

Erlang很适合开发Web server,可基于Cowboy做扩展和定制;

34. GNU/Linux

Linux基金会不仅仅有Linux项目,还有众多其它的开源项目,如AGL;

可更多关注类似Robot Operating System(ROS)这样的机器人操作系统和嵌入式系统;

相比Android系统,OpenWrt被认为是更加适合智能设备和机器人的软件平台。

35. XNU/Darwin

XNU是XNU is Not Unix的首字母缩写,GNU是GNU‘s Not Unix的缩写;

XNU/Darwin与FreeBSD都有着BSD的血统,苹果会持续投资和推动FreeBSD项目?

更深入的学习、研究iOS和macOS,就从Hack XNU开始吧。

36. FreeBSD

FreeBSD TCP/IP协议栈实现是个经典;

Facebook的WhatsApp是一个FreeBSD + Erlang 的公司,大量的路由器、交换机、防火墙、金融系统在使用FreeBSD,SONY PS4游戏机操作系统基于FreeBSD构建;

苹果与FreeBSD的关系应该是最密切的。

37. GCC

GCC:最重要的开源软件(从1987的1.0到2017年7.2历经30年,对整个自由、开源软件贡献卓著),后来者LLVM(14岁)很出色,前途无量;

GCC的基本语言是C语言,整个编译系统由C编程程序开始,然后逐渐加入其它语言的支持;

C++是C语言的直接扩展,它是GCC的第一个附加语言。C++能够完成的所有事情C语言都可以做到,所以编译器的后端保持不变,只需在前端加入一个新的语法语义分析器就可以了。一旦产生中间语言,编译程序的其它部分就和C语言完全一样了,其它语言的处理方式也类似。

38. LLVM

FreeBSD从10.0开始,使用LLVM替换GCC作为默认的编辑器,除了一些技术的考量外,GCC的GPL v3与FreeBSD项目的不兼容性,LLVM/Clang的许可协议是BSD,兼容FreeBSD;

Azul Systems推出Falcon,一个基于LLVM的新的Java即时编译器

Clang是LLVM的前端,用来编译C,C++,Objective-C。

39. Babel

Babel 下一代 JavaScript 编译器(转译器);

简单讲,Babel 就是把一个版本的 JavaScript 转变为其他版本的 JavaScript;

The Super Tiny Compiler可能是最小的编译器,先感受和普及下JavaScript编译器的知识。

40. JVM

JVM是最大规模的编程语言虚拟机生态系统,有超过200多种编程语言运行在JVM上;

Android Dalvik VM不是一个Java虚拟机,它没有遵循JVM规范,不能直接运行Java Class文件,它执行的Dex(Dalvik Executable)可通过Class文件转换而来;

由John Rose领导的the Da Vinci Machine Project正致力于让JVM成为动态语言的最佳归宿。

41. .NET Core

.NET Core 是一个通用目的、模块化、跨平台的 .NET 开源实现;

核心项目:.NET Core Libraries (CoreFX)、.NET Core Runtime (CoreCLR)、.NET Compiler Platform (Roslyn);

.NET Core 会包含 .NET Framework 的类库,但与 .NET Framework 不同的是 .NET Core 采用包 (Packages) 的管理方式,应用程序只需要获取需要的组件即可,与 .NET Framework 大包式安装的作法截然不同,同时各包也有独立的版本线 (Version line),不再硬性要求应用程序跟随主线版本。

42. Erlang VM(BEAM)

Elixir是一门运行在Erlang VM上的编程语言;

可在Erlang VM创建自己的语言

可关注下Erjang:A JVM-based Erlang VM。

43. Erlang

Erlang的世界观是一切都是进程(一个Erlang进程包括PCB进程控制块和堆栈只有几K),进程通过消息传递相互通讯;

Erlang是参与者模型(Actor model)最佳实践;

可在一台笔记本上轻松跑出几百万个Erlang进程。

44. Clojure

Clojure 是一种运行在 Java 平台上的 Lisp 方言;

Clojure is about Data, Scala is about Types, Java is about Objects;

ClojureScript: Clojure to JavaScript compiler。

45. F

F#和OCaml是ML函数式编程语言的两种主要方言;

F# = Objects + Functional ,F#混合面向对象和函数式编程,可“对应”JVM平台的Scala语言;

F#支持高阶函数、柯里化、惰性求值、Continuations、模式匹配、闭包、列表处理和元编程,F#作为一门适合于金融和计算密集型的语言而闻名。

值得关注的开源软件推荐

标签:pac   超过   压力   wiki   转译   基本原理   请求   合作   eclips   

原文地址:https://www.cnblogs.com/doit8791/p/9094175.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!