欢送微信搜寻公众号【java版web我的项目】获取资源:java学习视频/设计模式笔记/算法手册/java我的项目
作为一枚Java程序员,须要把握哪些技术和工具能力实现一个JavaWeb我的项目呢?明天列举一些罕用技术和工具,这些技术都是我这10年工作中用的比拟多的,我晓得技术栈远不止这些,自己只列本人相熟和用的最多的,实现一个我的项目相对够用了。说这么多技术不是让大家都要相熟,有些太老的当初也用的少了甚至不必了,自己次要联合我这10年开发教训通知大家JavaWeb的罕用技术栈。
上面这张是技术栈思维导图:
技术栈
什么是技术栈?
举个例子:
开发一个一般管理系统,会用到Sprin Boot+MyBatis+Spring+Mysql+Redis+RabbitMq+Nginx+Vue+Shiro+html+等等,这些技术合起来就能够称为技术栈。
我将技术栈大抵分为5大块:前端、后端、中间件、数据库和工具。
前端
JSP
JSP全称Java Server Pages,是一种动静网页开发技术。它应用JSP标签在HTML网页中插入Java代码。
JSP实质上是一个servlet,次要用于实现Java web应用程序的用户界面局部。
<html>
<head>
<title>第一个 JSP 程序</title>
</head>
<body>
<%
out.println("Hello World!");
%>
</body>
</html>
JSP这种网页技术我猜5年以下的程序员根本没接触过,10年前我接触的我的项目前端根本都是采纳的JSP技术,jsp配合各种html+jquery/JavaScript+css实现前端页面开发。
前端框架
DWZ、EasyUI、EXT、BootStrap、KendoUI 都是基于基于 HTML、CSS、JavaScript/jquery的一些富文本客户端UI框架,在过后几乎是后端开发人员的福音。这些框架最大的特点就是官网上提供了各种组件的应用办法,后端人员只有套到JSP页面中,进行数据渲染即可。这些UI框架格调根本曾经固定,更适宜开发一些治理类零碎,都包含:弱小的数据源,通用的利落(Drag-and-Drop)性能,模板,和UI控件。
DWZ
是中国人本人开发的基于jQuery实现的Ajax RIA开源框架,设计指标是简略实用,疾速开发,升高ajax开发成本。
官网:https://jui.org/
EasyUI
easyui是一种基于jQuery的用户界面插件汇合,为创立现代化,互动,JavaScript应用程序,提供必要的性能。应用easyui你不须要写很多代码,你只须要通过编写一些简略HTML标记,就能够定义用户界面,为网页开发的工夫和规模。
官网;http://www.jeasyui.com/
EXT
ExtJS是基于YUI(雅虎用户界面)的sencha的JavaScript框架和产品,它基本上是具备古代UI的桌面利用程序开发平台。
中武官网:http://extjs-doc-cn.github.io…
BootStrap
bootstrap是Twitter推出的一个用于前端开发的开源工具包
中武官网:https://www.bootcss.com/
KendoUI
是一套 JavaScript 函式库,提供抽象化、可自订主题的 GUI 管制项与动画成果。基于 jQuery JavaScript 函式库,可用来建构互动式的 Web 利用
官网:http://www.kendoui.io/
FreeMarker
FreeMarker是一个收费的模板引擎,一个基于模板生成文本输入的通用工具,应用纯Java编写的,用来生成HTML Web页面,特地是基于MVC模式的应用程序。通常由Java程序筹备要显示的数据,由FreeMarker生成页面,通过模板显示筹备的数据(如下图)
FreeMarker不是一个Web利用框架,FreeMarker与容器无关,也能够在模板中应用JSP标记库。
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>Welcome ${user}!</h1>
<p>Our latest product:
<a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>
html
下面很多前端框架都是基于html的,须要你有js/jq、css根底,这是所有前端框架的根底。因为光框架有时并不能满足咱们的需要,有时须要对框架无奈实现的性能须要在框架根底上调整;还有这个飞速发展的互联网时代,对前端的要求越来越高,原生html失去了疾速倒退,根本所有前端成果应用原生时能够实现的。
VUE
vue.js 应用了基于 HTML 的模板语法,容许开发者申明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是非法的 HTML,所以能被遵循标准的浏览器和 HTML 解析器解析。
在底层的实现上,Vue 将模板编译成虚构 DOM 渲染函数。联合响应零碎,Vue 可能智能地计算出起码须要从新渲染多少组件,并把 DOM 操作次数减到起码。
VUE+elementUI目前应用最多的,尤其是开发一些后盾管理系统还是比较简单便捷的。
后端
servlet
servlet是Server Applet的简称,翻译过去就是服务程序,简略的讲就是是运行在服务器上的一个小程序,用来解决服务器申请的。咱们通过浏览器拜访一个利用,在这个过程中,咱们的浏览器发送拜访申请,服务器接管申请,并对浏览器的申请作出相应的解决,这就是咱们相熟的B/S模型(浏览器-服务器模型).而servlet就是对申请作出解决的组件,运行于反对Java的应用服务器中。如图如是:
struts
struts次要是指struts1和struts2,是经典的MVC框架,除去一些老我的项目,当初用的越来越少了。但struts1和struts2还是有区别的,次要区别二者实质不一样。
struts1:通过采纳Java Servlet/JSP技术,实现了基于Java EE Web利用的Model-View-Controller(MVC)设计模式的利用框架,是MVC经典设计模式中的一个经典产品。
struts2:以WebWork为外围,采纳拦截器的机制来解决用户的申请,这样的设计也使得业务逻辑控制器可能与ServletAPI齐全脱离开,所以Struts 2能够了解为WebWork的更新产品。
最经典的组合strutsMVC+SPring+Hibernate,号称SSH,当年都是面试必问的技术。
Spring
Spring框架是一个开源Java利用框架,解决了开发者在开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等性能。Spring能够独自利用于应用程序,也能够和Struts、Webwork等泛滥Web框架组合应用。Spring框架次要由七局部组成,别离是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
长久层框架
jdbc
JDBC(Java Data Base Connectivity,java数据库连贯)是一种用于执行SQL语句的Java API,能够为多种关系数据库提供对立拜访,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此能够构建更高级的工具和接口,使数据库开发人员可能编写数据库应用程序。
晚期我的项目大部分都是通过对JDBC封装来操作数据库,实现增删改查,对性能思考也不多,随时间推移一直衍生出很多框架,例如:mybatis,hibernate等。
ibatis
iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发动的凋谢源代码我的项目。最后侧重于明码软件的开发,当初是一个基于Java的长久层框架。iBATIS提供的长久层框架包含SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。
iBATIS 目前提供了三种语言实现的版本,包含:Java、.NET以及Ruby。
mybatis
MyBatis 本是apache的一个开源我的项目iBatis, 2010年这个我的项目由apache software foundation 迁徙到了google code,并且改名为MyBatis 。
MyBatis 是一款优良的长久层框架,它反对定制化SQL、存储过程以及高级映射。MyBatis 防止了简直所有的 JDBC 代码和手动设置参数以及获取后果集。
MyBatis-Plus
Mybatis 加强工具包 – 只做加强不做扭转,简化CRUD操作
JPA
JPA是Java Persistence API的简称,中文名Java长久层API,是JDK 5.0注解或XML形容对象-关系表的映射关系,并将运行期的实体对象长久化到数据库中。
Sun引入新的JPA ORM标准出于两个起因:其一,简化现有Java EE和Java SE利用开发工作;其二,Sun心愿整合ORM技术,实现天下归一。
Spring Boot
SpringBoot是由Pivotal团队在2013年开始研发、2014年4月公布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优良个性,而且还通过简化配置来进一步简化了Spring利用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本抵触,以及援用的不稳定性等问题失去了很好的解决。
分布式/微服务
Spring Cloud
Spring Cloud 为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、管制总线、一次性 Token、全局锁、决策竞选、分布式会话和集群状态)操作的开发工具。应用 Spring Cloud 开发者能够疾速实现上述这些模式。
Spring Cloud 的 GitHub 主页:https://github.com/spring-cloud
dubbo
Dubbo 是阿里巴巴公司开源的一个高性能优良的服务框架,使得利用可通过高性能的 RPC 实现服务的输入和输出性能,能够和 Spring 框架无缝集成。
次要核心部件:
Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 音讯机制
RPC: 一个近程过程调用的形象,反对负载平衡、容灾和集群性能
Registry: 服务目录框架用于服务的注册和服务事件公布和订阅
Spring Cloud Alibaba
Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此我的项目蕴含开发分布式应用服务的必须组件,不便开发者通过 Spring Cloud 编程模型轻松应用这些组件来开发分布式应用服务。
依靠 Spring Cloud Alibaba,您只须要增加一些注解和大量配置,就能够将 Spring Cloud 利用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用零碎。
平安框架
shiro
Apache Shiro 是 Java 的一个平安框架。目前,应用 Apache Shiro 的人越来越多,因为它相当简略,比照 Spring Security,可能没有 Spring Security 做的功能强大,然而在理论工作时可能并不需要那么简单的货色,所以应用小而简略的 Shiro 就足够了。对于它俩到底哪个好,这个不用纠结,能更简略的解决我的项目问题就好了。
Spring Security
Spring Security是一个可能为基于Spring的企业应用零碎提供申明式的平安访问控制解决方案的平安框架。它提供了一组能够在Spring利用上下文中配置的Bean,充分利用了Spring IoC,DI(管制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)性能,为利用零碎提供申明式的平安访问控制性能,缩小了为企业零碎安全控制编写大量反复代码的工作。
oauth2.0
OAuth(凋谢受权)是一个凋谢规范,容许用户让第三方利用拜访该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和明码提供给第三方利用。
OAuth 2.0 是目前比拟风行的做法,它率先被Google, Yahoo, Microsoft, Facebook等应用。之所以标注为 2.0,是因为最后有一个1.0协定,但这个1.0协定被弄得太简单,易用性差,所以没有失去遍及。2.0是一个新的设计,协定简略清晰,但它并不兼容1.0,能够说与1.0没什么关系。
项目管理
maven
Maven 是 Apache 下的一个纯 Java 开发的开源我的项目。利用一个地方信息片断能治理一个我的项目的构建、报告和文档等步骤。是一个项目管理工具,能够对 Java 我的项目进行构建、依赖治理。
ant
ant 是一个将软件编译、测试、部署等步骤分割在一起加以自动化的一个工具,大多用于Java环境中的软件开发。在理论软件开发中,有很多中央能够用到ant。
gradle
Gradle是一个基于Apache Ant和Apache Maven概念的我的项目自动化构建开源工具。它应用一种基于Groovy的特定畛域语言(DSL)来申明我的项目设置,目前也减少了基于Kotlin语言的kotlin-based DSL,摈弃了基于XML的各种繁琐配置。
服务器软件
tomcat
Tomcat 服务器是一个收费的凋谢源代码的Web 应用服务器,属于轻量级应用服务器,在中小型零碎和并发拜访用户不是很多的场合下被广泛应用,是开发和调试JSP 程序的首选
Apache
Apache(阿帕奇)是世界应用排名第一的Web服务器软件。它能够运行在简直所有宽泛应用的计算机平台上,因为其跨平台和安全性被宽泛应用,是最风行的Web服务器端软件之一
Jetty
Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。
weblogic
WebLogic Server是专门为企业电子商务利用零碎开发的。企业电子商务利用零碎须要疾速开发,并要求服务器端组件具备良好的灵活性和安全性,同时还要反对要害工作所必须的扩大、性能、和高可用性。WebLogic Server简化了可移植及可扩大的利用零碎的开发,并为其它利用 零碎和零碎提供了丰盛的互操作性。
nginx
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协定下发行。其特点是占有内存少,并发能力强。
中间件
缓存
缓存是当初零碎中必不可少的模块,并且曾经成为了高并发高性能架构的一个要害组件。缓存的次要作用:晋升性能和缓解数据库压力,
Redis
Redis是一个开源的内存数据结构存储,用作数据库、缓存和音讯代理。提供诸如字符串、哈希、列表、汇合、带范畴查问的排序汇合、位图、超日志、天文空间索引和流等数据结构。具备内置的复制、Lua脚本、LRU逐出、事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster的主动分区提供高可用性。
MongoDB
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 利用提供可扩大的高性能数据存储解决方案。是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中性能最丰盛,最像关系数据库的。
Memcached
Memcached是一个自在开源的,高性能,分布式内存对象缓存零碎,用来进步Web利用扩展性的重要因素。是一个基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。简洁而弱小,它的简洁设计便于疾速开发,加重开发难度,解决了大数据量缓存的很多问题。个别的应用目标是,通过缓存数据库查问后果,缩小数据库拜访次数,以进步动静Web利用的速度、进步可扩展性。
差异性我就不多说了,简略说下他们的应用场景:
- Memcached:动静零碎中加重数据库负载,晋升性能;做缓存,适宜多读少写,大数据量的状况(如人人网大量查问用户信息、好友信息、文章信息等)。
- Redis:实用于对读写效率要求都很高,数据处理业务简单和对安全性要求较高的零碎(如新浪微博的计数和微博公布局部零碎,对数据安全性、读写要求都很高)。
- MongoDB:次要解决海量数据的拜访效率问题。
搜寻
solr
Solr是一个独立的企业级搜寻应用服务器,它对外提供相似于Web-service的API接口。用户能够通过http申请,向搜索引擎服务器提交肯定格局的XML文件,生成索引;也能够通过Http Get操作提出查找申请,并失去XML格局的返回后果。
Elasticsearch
Elasticsearch是一个基于Lucene的搜寻服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口
二者次要区别
es根本是开箱即用,非常简单,Solr稍微简单。
Solr 反对更多格局的数据,比方JSON、XML、CSV,而 Elasticsearch 仅反对json文件格式。
Solr 查问快,但更新索引时慢(即插入删除慢),ES建设索引快(即查问慢),即实时性查问快。
ELK
之所以举荐ELK是因为面对散布式微服务状况下,会显示出他的威力,不论是数据收集、数据处理、还是数据分析能够节约很多工夫。ELK是Elasticsearch + Logstash + Kibana三个开源软件的组合,然而通常为了进步性能须要借助kafka,利用Filebeat进行日志收集,上面这个架构图是我做过的一个日志服务平台。
定时工作
说定定时工作大家可能都接触过,例如Spring自带的定时工作SpringTask,然而SpringTask是存在很多问题的,例如:最致命的一个问题就是一旦定时抛出异样,生命就完结,下一次不会再执行。简单业务中应用起来是不不便的,这里举荐两个定时工作框架Quartz和xx-job,第三方的性能比拟弱小,好用。
Quartz
Quartz是OpenSymphony开源组织在Job scheduling畛域又一个开源我的项目,齐全由Java开发,能够用来执行定时工作,相似于java.util.Timer。然而相较于Timer, Quartz减少了很多性能:
- 持久性作业 – 就是放弃调度定时的状态;
- 作业管理 – 对调度作业进行无效的治理;
xx-job
XXL-JOB是一个轻量级分布式任务调度平台,其外围设计指标是开发迅速、学习简略、轻量级、易扩大。现已凋谢源代码并接入多家公司线上产品线,开箱即用。
目前已有多家公司接入xxl-job,包含比拟出名的公众点评,京东,优信二手车,北京尚德,360金融 (360),联想集团 (联想),易信 (网易)等等….
Quartz作为开源作业调度中的佼佼者,是作业调度的首选
Quartz在集群环境下只能通过API的形式对工作治理,同时,零碎侵入性相当严重,而XX-JOB能够完满解决集群下工作额治理。所以,能够依据本人业务状况抉择适合定时工作框架,
配置核心
什么是配置核心?
集中将利用零碎中对配置信息的治理作为一个新的利用功能模块,区别与传统的配置信息扩散到零碎各个角落形式,进行集中统一治理,并且提供额定性能。尤其是在微服务架构中,是不可或缺组件,甚至是必要组件之一。
为什么要应用配置核心?
在微服务体系中,服务的数量以及配置信息的日益增多,比方各种服务器参数配置、各种数据库拜访参数配置、各种环境下利用配置信息的不同、配置信息批改之后实时失效等等,传统的配置文件形式或者将配置信息寄存于数据库中的形式已无奈满足开发人员对配置管理的要求。常见的配置核心中间件有:SpringCloud Config ,Nacos,apollo等。
SpringCloud Config
2014年9月开源,Spring Cloud 生态组件,能够和Spring Cloud体系无缝整合,Spring Cloud Config反对通过/bus/refresh端点的destination参数来指定要更新配置的机器,不过整个流程不够自动化和体系化。绝对于Apollo和Nacos还是比拟弱的。
Nacos
2018年6月,阿里开源的配置核心,也能够做DNS和RPC的服务发现。Nacos应用起来绝对比拟简洁,在对性能要求比拟高的大规模场景更适宜。此外,Nacos除了提供配置核心的性能,还提供了动静服务发现、服务共享与治理的性能,升高了服务化革新过程中的难度。
apollo(阿波罗)
2016年5月,携程开源的配置管理核心,具备标准的权限、流程治理等个性,Apollo能够间接在管制台上点灰度公布指定公布机器的IP,接着再全量公布,做得比拟体系化。
三者比照如何抉择:
外围性能: Apollo和Nacos绝对于Spring Cloud Config的生态反对更广
实时推送: Nacos和Apollo在配置实时推送链路上是比较简单高效的,Spring Cloud Config比较复杂。
高可用部署: Nacos的部署构造比较简单,运维老本较低。Apollo部署组件较多,运维老本比Nacos高。Spring Cloud Config生产高可用的老本最高。
监控
服务器监控是实时把握服务器工作状态,并在须要时能够随时调用监控记录进行查看。
SpringBootAdmin
Spring Boot Admin用来治理和监控Spring Boot应用程序,通过UI来查看应用程序的状态,例如Spring Beans,零碎属性,线程,http的调用状况等无限状态。
Druid
我晓得Druid更多的用处就是连接池,其实他还有一个对SQL监控性能。
SkyWalking
Skywalking是由国内开源爱好者吴晟(原OneAPM工程师,目前在华为)开源并提交到Apache孵化器的产品,它同时排汇了Zipkin/Pinpoint/CAT的设计思路,反对非侵入式埋点。是一款基于分布式跟踪的应用程序性能监控零碎。另外社区还倒退出了一个叫OpenTracing的组织,旨在推动调用链监控的一些标准和规范工作。
存储
把波及到数据库相干或者能够作为数据仓库的中间件都归到一起了。
MyCat
Mycat是一个开源数据库中间件,是一个实现了MySQL协定的的数据库中间件服务器,咱们能够把它看作是一个数据库代理,用MySQL客户端工具和命令行拜访Mycat,而Mycat再应用用MySQL原生(Native)协定与多个MySQL服务器通信,也能够用JDBC协定与大多数支流数据库服务器通信,包含SQL Server、Oracle、DB2、PostgreSQL等支流数据库,也反对MongoDB这种新型NoSQL形式的存储,将来还会反对更多类型的存储;个别地,Mycat次要用于代理MySQL数据库,尽管它也反对去拜访其余类型的数据库;
Mycat官网:http://www.mycat.io/
Canal
咱们先看官网的介绍
canal,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和生产。
这句介绍有几个关键字:增量日志,增量数据订阅和生产。
这里咱们能够简略地把canal了解为一个用来同步增量数据的一个工具。
接下来咱们看一张官网提供的示意图:
sharing-jdbc
定位为轻量级Java框架,在Java的JDBC层提供的额定服务。 它应用客户端直连数据库,以jar包模式提供服务,无需额定部署和依赖,可了解为增强版的JDBC驱动,齐全兼容JDBC和各种ORM框架。
次要性能
- 分库 & 分表
- 读写拆散
- 分布式主键
zookeeper
ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的牢靠协调系统,提供的性能包含:配置保护、名字服务、分布式同步、组服务等。ZooKeeper的指标就是封装好简单易出错的要害服务,将简略易用的接口和性能高效、性能稳固的零碎提供给用户。
事务
这个事务更多指的是分布式事务处理插件。
Apache ShardingSphere
Apache ShardingSphere(Incubator) 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(布局中)这3款互相独立,却又可能混合部署配合应用的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理性能,可实用于如Java同构、异构语言、容器、云原生等各种多样化的利用场景。
Seata
Seata 是 Simple Extensible Autonomous Transaction Architecture 的简写,由 feascar 改名而来。是阿里开源的分布式事务框架,属于二阶段提交模式。
音讯队列
什么是音讯队列
音讯队列是一个寄存音讯的容器,当咱们须要应用音讯的时候能够取出音讯供本人应用。音讯队列是分布式系统中重要的组件,应用音讯队列次要是为了通过异步解决进步零碎性能和削峰、升高零碎耦合性。目前应用较多的音讯队列有ActiveMQ,RabbitMQ,Kafka,RocketMQ。
为什么须要音讯队列
1.通过异步解决进步零碎性能(削峰、缩小响应所需工夫);
2.升高零碎耦合性;
Kafka
Kafka是由Apache软件基金会开发的一个开源流解决平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式公布订阅音讯零碎,它能够解决消费者在网站中的所有动作流数据。这些数据通常是因为吞吐量的要求而通过解决日志和日志聚合来解决。 对于像Hadoop一样的日志数据和离线剖析零碎,但又要求实时处理的限度,这是一个可行的解决方案。Kafka的目标是通过Hadoop的并行加载机制来对立线上和离线的音讯解决,也是为了通过集群来提供实时的音讯。
RabbitMQ
AMQP,即Advanced Message Queuing Protocol,高级音讯队列协定,是应用层协定的一个凋谢规范,为面向音讯的中间件设计。消息中间件次要用于组件之间的解耦,音讯的发送者无需晓得音讯使用者的存在,反之亦然。
AMQP的次要特色是面向音讯、队列、路由(包含点对点和公布/订阅)、可靠性、平安。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,反对多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,反对AJAX。用于在分布式系统中存储转发音讯,在易用性、扩展性、高可用性等方面体现不俗。
ActiveMQ
ActiveMQ是一种开源的基于JMS(Java Message Servie)标准的一种消息中间件的实现,ActiveMQ的设计指标是提供规范的,面向音讯的,可能逾越多语言和多零碎的利用集成音讯通信中间件。
三者区别及其应用场景
个性 | ActiveMQ | RabbitMQ | kafka |
---|---|---|---|
开发语言 | java | erlang | scala |
单机吞吐量 | 万级 | 万级 | 10万级 |
时效性 | ms级 | us级 | ms级以内 |
可用性 | 高(主从架构) | 高(主从架构) | 十分高(分布式架构) |
性能个性 | 成熟的产品,在很多公司失去利用;有较多的文档;各种协定反对较好 | 基于erlang开发,所以并发能力很强,性能极其好,延时很低;治理界面较丰盛 | 只反对次要的MQ性能,像一些音讯查问,音讯回溯等性能没有提供,毕竟是为大数据筹备的,在大数据畛域利用广。 |
数据库
该数据库次要是指关系型数据库,是依照数据结构来组织、存储和治理数据的仓库,数据库是存放数据的仓库,是一个零碎或者软件必不可少的一部分。每个数据库都有一个或多个不同的 API 用于创立,拜访,治理,搜寻和复制所保留的数据。咱们也能够将数据存储在文件中,然而在文件中读写数据速度绝对较慢。
所以,当初咱们应用关系型数据库管理系统来存储和治理大数据量。所谓的关系型数据库,是建设在关系模型根底上的数据库,借助于汇合代数等数学概念和办法来解决数据库中的数据。
关系数据库管理系统的特点:
- 1.数据以表格的模式呈现
- 2.每行为各种记录名称
- 3.每列为记录名称所对应的数据域
- 4.许多的行和列组成一张表单
- 5.若干的表单组成database
常见的数据管理系统次要有:oracle、mysql、SQL Server、access、TiDB。
oracle
Oracle Database,简称 Oracle。Oracle 数据库系统是美国 Oracle 公司(甲骨文)提供的以分布式数据库为外围的一组软件产品,是目前最风行的客户/服务器(client/server)的数据库之一。Oracle 数据库是目前世界上应用最为宽泛的数据库管理系统,作为一个通用的数据库系统,它具备残缺的数据管理性能;作为一个关系型数据库,它是一个齐备关系的产品;作为分布式数据库它实现了分布式解决性能,但它的所有常识,只有在一种机型上学习了Oracle常识,便能在各种类型的机器上应用它。
mysql
MySQL 是最风行的关系型数据库管理系统,在 WEB 利用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。目前也是Oracle 公司来托管。
SQL Server
美国Microsoft公司推出的一种关系型数据库系统。SQL Server是一个可扩大的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机联合,提供了基于事务的企业级信息管理系统计划。
access
Access是微软把数据库引擎的图形用户界面和软件开发工具联合在一起的一个数据库管理系统。它是微软OFFICE的一个成员, 在包含专业版和更高版本的office版本外面被独自发售。
TiDB
TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时反对在线事务处理与在线剖析解决 (Hybrid Transactional and Analytical Processing, HTAP)的交融型分布式数据库产品,具备程度扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协定和 MySQL 生态等重要个性。指标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适宜高可用、强统一要求较高、数据规模较大等各种利用场景。
下面这几个数据库优缺点都比拟显著,不在啰嗦了,大家在工作中能够依据本人理论状况抉择适合的数据。
工具
开发
IntelliJ IDEA
IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码主动提醒、重构、JavaEE反对、各类版本工具(git、svn等)、JUnit、CVS整合、代码剖析、 翻新的GUI设计等方面的性能能够说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以谨严著称的东欧程序员为主。它的旗舰版本还反对HTML,CSS,PHP,MySQL,Python等。免费版只反对Java,Kotlin等多数语言。
eclipse
Eclipse 是一个凋谢源代码的、基于 Java 的可扩大开发平台, 是 Java 的集成开发环境(IDE),当然 Eclipse 也能够作为其余开发语言的集成开发环境,如C,C++,PHP,和 Ruby 等。
MyEclipse
MyEclipse,是在Eclipse 根底上加上本人的插件开发而成的功能强大的企业级集成开发环境,次要用于Java、Java EE以及挪动利用的开发。在最新版本的MyEclipse中,配合CodeMix应用反对也非常宽泛,尤其是对各种开源产品和支流开发框架的反对相当不错。目前已反对PHP、Python、Vue、Angular、React、Java、Java EE等语言和框架开发。
这三款工具好坏我也不做任何评估,每个工具用户都不少,我四周IntelliJ IDEA和MyEclipse都有,我集体比拟喜爱用IntelliJ IDEA。
客户端工具
版本控制
常见的版本空间工具svn和git
svn
TortoiseSVN 是 Subversion 版本控制系统的一个收费开源客户端,能够超过工夫的管理文件和目录。文件保留在地方版本库,除了能记住文件和目录的每次批改以外,版本库十分像一般的文件服务器。你能够将文件复原到过来的版本,并且能够通过查看历史晓得数据做了哪些批改,谁做的批改。这就是为什么许多人将 Subversion 和版本控制系统看作一种“时间机器”。
git
Git 是用于Linux内核开发的版本控制工具。与罕用的版本控制工具 Subversion 不同,它采纳了分布式版本库的形式,不用服务器端软件反对,代码的公布和交换极其不便。 Git 的速度很快,这样的大我的项目来说天然很重要。 Git 最为杰出的是它的合并跟踪(merge tracing)能力。
SVN的特点是简略,只是须要一个放代码的中央时用是OK的。
Git的特点版本控制能够不依赖网络做任何事件,对分支和合并有更好的反对(这应该算是开发者最关怀的中央)。
数据库
Navicat
Navicat是一套疾速、牢靠并价格相当便宜的数据库管理工具,专为简化数据库的治理及升高系统管理老本而设。它的设计合乎数据库管理员、开发人员及中小企业的须要。Navicat 是以直觉化的图形用户界面而建的,让你能够以平安并且简略的形式创立、组织、拜访并共用信息。
PLSQL
PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的利用。PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩大。在一般SQL语句的应用上减少了编程语言的特点,所以PL/SQL把数据操作和查问语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现简单的性能或者计算,PL/SQL 只有 Oracle 数据库有。
Redis Desktop Manager
Redis Desktop Manager是一款windows平台下的可视化redis数据库桌面管理工具,应用它你能够查看、删除、批改你的redis数据库数据!
linux近程
XShell
XShell是一个弱小的平安终端模仿软件,它反对SSH1,SSH2,以及Microsoft Windows平台的TELNET协定。
XShell能够在Windows界面下用来拜访远端不同零碎下的服务器,从而比拟好的达到近程管制终端的目标。
WinSCP
宝塔
宝塔面板是一个能够装置在服务器上的集成环境,并配套了web治理面板,能够在浏览器上间接管制你的服务器,十分不便。 能够一键创立网站、FTP、数据库、SSL;平安治理,打算工作,文件治理,PHP多版本共存及切换;自带根底网站环境,反对windows零碎(apache)和linux零碎(apache或nginx)。
SecureCRT
Secure CRT 是一款SSH客户端软件,通过应用内含的VCP命令行程序能够进行加密文件的传输。
postMan
Postman一款十分风行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多抉择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman的确足够的简略不便,而且功能强大。
辅助
Typora+PicGo
Typora+PicGo,最好用的Markdown+最好用的图床工具!如果写博客的能够珍藏起来。
notepad++
Notepad++中文版是程序员必备的文本编辑器,Notepad++中文版玲珑高效,反对27种编程语言,通吃C,C++ ,Java ,C#, XML, HTML, PHP,JS 等,Notepad++中文版编辑器可完满地取代微软的记事本。
画图
visio
Office Visio 是Office软件系列中的负责绘制流程图和示意图的软件,是一款便于IT和商务人员就简单信息、零碎和流程进行可视化解决、剖析和交换的软件。应用具备业余外观的 Office Visio 图表,能够促成对系统和流程的理解,深刻理解简单信息并利用这些常识做出更好的业务决策。常见软件架构、流程图都能够在外面实现。
processon
ProcessOn是一个在线作图工具的聚合平台, 它能够在线画流程图、思维导图、UI原型图、UML、网络拓扑图、组织结构图等等, 您无需放心下载和更新的问题,不论Mac还是Windows,一个浏览器就能够随时随地的施展创意,布局工作。
官网:https://www.processon.com/
PowerDesigner
owerDesigner是一款十分全面的数据库设计工具。应用PowerDesigner能够疾速创立表,反对表与表之间建设关系,界面简洁,功能强大。同时反对将sql脚本导出,多种导出类型任意筛选,简略实用。
Xmind
XMind 是一个全功能的思维导图和头脑风暴软件,为激发灵感和创意而生。作为一款无效晋升工作和生存效率的生产力工具,受到寰球百千万用户的青眼。
iReport
说到 iReport 不得不先介绍 Jasperreport,Jasperreport 是一个报表制作程序,用户须要依照它制订的规定编写一个 XML 文件,而后失去用户须要输入的格式文件。它反对输入的文件格式包含 PDF,HTML,XML,XLS,CVS 等等。而 iReport 就是一个制作 Jasperreport 的 XML 文件的可视化开发工具。
浏览器
Chrome
Google Chrome是一款由Google公司开发的网页浏览器,该浏览器基于其余开源软件撰写,包含WebKit,指标是晋升稳定性、速度和安全性,并发明出简略且有效率的使用者界面。
搜狗
搜狗浏览器 由搜狗公司开发,基于谷歌chromium内核,力求为用户提供跨终端无缝应用体验,让上网更简略、网页浏览更晦涩的浏览器。
火狐
Mozilla Firefox,中文俗称“火狐”,是一个由Mozilla开发的自在及凋谢源代码的网页浏览器。其应用Gecko排版引擎,反对多种操作系统,如Windows、macOS及GNU/Linux等
IE
Internet Explorer(简称:IE)是微软公司微软公司推出的一款网页浏览器。原称Microsoft Internet Explorer(6版本以前)和Windows Internet Explorer(7、8、9、10、11版本)。在IE7以前,中文直译为“网络探路者”,但在IE7当前官网便间接俗称”IE浏览器”。
如果做前端开发,这几款浏览器兼容性都得兼顾。很早之前IE浏览器市场是比拟大,随着时间推移,谷歌浏览器占据了比拟大的市场。我集体日常开发中谷歌用的比拟多,非凡状况才会应用其它浏览器。
性能剖析
jmeter
JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最后被设计用于Web利用测试,但起初扩大到其余测试畛域。 它能够用于测试动态和动静资源,例如动态文件、Java 服务程序、CGI 脚本、Java 对象、数据库, 等等。
ab
apache bench简称ab,它是apache自带的压力测试工具。ab十分实用,它不仅能够对apache服务器进行网站拜访压力测试,也能够对或其它类型的服务器进行压力测试。
MAT
MAT是Java堆内存剖析工具,可从http://www.eclipse.org/mat/中…。
你在成为大神的路上都学习了哪些技术,欢送留言交换。
近期热文举荐:
SpringCloud微服务电商我的项目教程
发表回复