技术栈_技术栈是什么意思 - CSDN
精华内容
参与话题
  • 技术栈

    2020-05-28 11:48:19
    面试中被问到技术栈,所以把技术栈的归类查看了一下,根据自己目前的情况,简单总结如下: 整体分为五大块:前端、后端、中间件、运维和工具 1)前端-移动端:Android Java开发 2)后端:python 3)中间件:数据库...

    面试中被问到技术栈,所以把技术栈的归类查看了一下,根据自己目前的情况,简单总结如下:
    整体分为五大块:前端、后端、中间件、运维和工具
    1)前端-移动端:Android Java开发
    2)后端:python
    3)中间件:数据库sqlite,安全https
    4)工具:开发工具java eclipse,Android Studio; 数据库MySQLWorkbench, phpMyAdmin; 测试自动化Selenium,性能jmeter,抓包Fiddler
    5)运维:CI Jenkins,maven,gradle, ant; 版本控制 git

    在这里插入图片描述
    参考知乎问答:https://www.zhihu.com/question/28799035

    展开全文
  • 技术栈是什么鬼?

    万次阅读 多人点赞 2020-04-08 18:09:14
    技术栈是什么鬼? 栈的英文是stack 首先,我们使用金山词霸来查一下stack的中文解释 stack有堆起来的意思,其实就是堆叠,顾名思义,技术栈就是你掌握了一堆的技术(掌握多种技术) 一般来说是指将N种技术互相...

    技术栈是什么鬼?

    的英文是stack

    首先,我们使用金山词霸来查一下stack的中文解释

    stack有堆起来的意思,其实就是堆叠,顾名思义,技术栈就是你掌握了一堆的技术(掌握多种技术)

    一般来说是指将N种技术互相组合在一起(N>1),作为一个有机的整体来实现某种目的或功能。也可以指掌握这些技术以及配合使用的经验。

    这里的栈英文是stack(一些东西堆在一起),而非数据结构的栈的意思

    打个比方,开发一个医疗管理系统,你使用了html + css + javascript + jquery + springmvc + hibernate + spring + linux + mysql等等,这些技术就是一堆技术(一堆技术组合起来),这就可以称为技术栈。

    如果我们说不同种类的技术,会显得很low,但是如果我们说技术栈,就会显得高大上和逼格满满,技术栈其实就是更有逼格的一种说法,说白了,技术栈听起来比较高大上,更装逼,感觉更厉害的样子。(哈哈,不知道是谁发明技术栈这个词,我觉得就是为了让大家不明觉厉:不明白是什么意思,但是感觉很厉害的样子)

    技术栈这个词,听起来也比较简洁,比不同种类的技术简洁一点

    比较常见的说法:

    1.你这个项目中用到的技术栈有哪些?

    2.刚才那个应聘者用到的技术栈有点过时。

    3.面试官问求职者,说说你平时常用的技术栈吧!

    4.面试官问求职者,你知道java目前最新的技术栈有哪些吗?

    展开全文
  • 技术栈(technology stack)

    千次阅读 2019-06-12 19:45:38
    技术栈: 产品实现上依赖的软件基础组件, 包括 1、 系统 2、 中间件 3、 数据库 4、 应用软件 5、 开发语言 6、 框架 一、前端技术 笔者认为后台开发人员掌握一定的前端技术是必要的,作为JAVA开发最起码...

    技术栈: 产品实现上依赖的软件基础组件, 包括

    1、 系统

    2、 中间件

    3、 数据库

    4、 应用软件

    5、 开发语言

    6、 框架

     


    一、前端技术
    笔者认为后台开发人员掌握一定的前端技术是必要的,作为JAVA开发最起码的JSP、JQuery、BootStrap这些你得有起码的了解。除此之外,前后端的交互技术,AJAX、JSON、JSONP也是必须了解和掌握的。

    二、通信协议
    通信协议就跟上面说的网络编程这门课程有很大的关系,通信协议通俗一点说就是:客户端和服务器通信的格式,大家都知道报文是二进制的,而协议的作用就是规定了某一位或某几位二进制串的作用,规定了报文应该按照怎么样的格式来编码。如果违反了这个协议,那么报文是不可能被客户端或服务器正确解码的。
    大家最熟悉的协议大概就是HTTP,HTTP协议具体的报文格式也不需要再过多的介绍了。在这里,大家可以思考一个问题,如果一个公司或者实验室内部调用的接口,是不是也需要HTTP协议来通信呢?笔者认为这是一个最差的方案,因为HTTP的报文头部比较长,内部的接口调用是不需要那么复杂的头部的,所以一般采用的是RPC协议。

    RPC全称远程过程调用,通过它可是实现一台服务器去调用另外一台服务器上的方法,是基于TCP/IP协议上的一个协议。举个栗子,B服务器上有b1()和b2()两个方法,首先需要向服务注册与发现设备进行注册,A服务器想要调用b1()时,向服务注册与发现设备查询b1()方法所属服务器的IP和端口,得到后,将A服务器的请求路由到该IP的制定端口上。那么通信协议在这个流程中的作用是什么呢?A服务器想要请求b1()方法,他的请求发送到服务注册与发现设备之后,该设备需要通过规定的通信协议来识别该请求报文具体请求的服务名,由此来查询该服务的IP及端口,这个过程叫做路由。HTTP协议中,是通过URL来进行路由的。在RPC过程中,我们一般使用自己定义的协议来减少报文的长度,最简单的方法是通过一个唯一的整形来进行路由,具体的路由方案有很多,这里不再过多赘述。所以我们来总结一下,通信协议规定了通信的格式,他可以规定某几位为路由数,某几位为请求报文的body,一个很简单的通信协议头部有路由字段就可以满足了,相比于HTTP的头部而已,轻量了很多。body里面存的就是请求的具体参数和响应结果了,该区域一般也是有数据传输协议来进行数据的编码的,json是一种选择,而另一种更好的选择就是谷歌的protocol buffer,相比于json而言,它是二进制的,更轻量,具体的特性和使用方法会在后面的文章中进行介绍。笔者最经常用的一个RPC框架是Thrift,也会在后面的文章中将会给大家介绍。

    三、负载均衡
    负载均衡这个词,相信大家接触得都很多。负载均衡就是用多台应用服务器来完成一个业务,通过负载均衡中间件对这些服务器的负载情况进行一个管理及动态的调整,以尽量消除或减少各服务器负载不均衡的现象。还是上一节当中的那个栗子,当B服务器的请求量很大时,一台服务器是无法支撑起整个业务的,于是我们对该服务器做一个扩展,变成三台服务器B1、B2、B3共同来提供服务,他们三台服务器的IP和端口首先都需要向服务注册与发现设备来进行注册,同时这三台服务器的负载量由负载均衡服务器进行管理,这是A服务器对于b1()方法的一个请求到达负载均衡服务器,负载均衡服务器需要去请求服务注册于发现设备该方法的路由地址列表,拿到该列表后从中选择负载量最优的那一台服务器,将A服务器的请求路由至那台服务器上。
    在公司里面,负载均衡层一般都由运维负责,笔者还接触不到这些,只能大略地介绍一些,如果大家想要深入地学习,可以先学习下使用nginx来搭建负载均衡服务器。
    四、反向代理
    反向代理是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端。通俗点讲,ABC三个人,A想向C问个问题,但是得通过B来进行。A先告诉B,B再去问C,最后B将C的回答转述给A。可能大家会觉得为什么需要这么麻烦的过程呢,A直接问C不就好了。大家这个时候可以打开一个网页,按一下F12,选择network选项卡,然后F5刷新一下网页,在这个选项卡里,会刷出一个列表,这个列表就是你刷新一次网页浏览器需要向服务器发送的请求列表。我们知道,一个HTTP请求是只能请求一个对象的,一个网页里有10个图片就需要请求10次,实际上你刷新一个网页时,大部分的请求都是静态元素,即图片、js或css等文件,如果这些大部分的请求都需要通过应用服务器来完成的话,会给应用服务器带来很大的负担,所以反向代理的作用,就是缓存这些静态文件,当浏览器发送一个请求时,反向代理服务器判断请求内容是否是它缓存内容,如果是,就可以直接将结果返回;如果不是,反向代理再将该请求转发至应用服务器上处理。这样,就减少了应用服务器的负担。常用的反向代理——nginx。

    有人可能会说,nginx好厉害啊,项目部署用一台nginx就可以完成负载均衡和反向代理了。实际上是需要两台nginx来架构的,一台放再lvs中负责负载,另一台部署在tomcat前,负责反向代理。

    五、业务编程

    通过上面四点的介绍,一个请求已经能从客户端发送至应用服务器tomcat上了。接下来就是根据服务器编程完成相应的业务流程。后台常用的开发框架笔者都有接触并且用过不短时间,Stuts2、Spring MVC、Spring、Hibernate、MyBatis这些。一般两套常用的体系是Struts2+Spring+Hibernate和Spring MVC+Spring+MyBatis,很明显Spring的作用不言而喻。这两套体系都是MVC设计思想的体现。对比下这两套体系,Struts2和Spring MVC都是Controller层的框架,后者对初学者更友好一些,而且前者经常出现一些神奇的BUG,公司里面也是很不喜欢使用的,所以强烈推荐的是Spring MVC。Hibernate和MyBatis都是两个比较重用的持久层框架,Hibernate会比Mybatis好入门一些,但是MyBatis会比Hibernate轻量,使用广泛程度也差不多。

    六、数据库

    数据库需要掌握的:sql语句、索引、explain性能分析等

    七、缓存

    缓存分本地缓存和缓存服务器。本地缓存指的是将数据缓存下本地的内存中,一般对一些读业务的数据采用本地缓存,推荐大家学习下google的guava cache。缓存服务器的话推荐redis,一个键值对的缓存,比较适合入门

    除了上面的这些,还有maven svn git这些工具也是需要掌握的
     


    分布式技术栈

    构建分布式系统的目的是增加系统容量,提高系统的可用性,转换成技术方面,也就是完成下面两件事。

    • 大流量处理。通过集群技术把大规模并发请求的负载分散到不同的机器上。
    • 关键业务保护。提高后台服务的可用性,把故障隔离起来阻止多米诺骨牌效应(雪崩效应)。如果流量过大,需要对业务降级,以保护关键业务流转。

    说白了就是干两件事。一是提高整体架构的吞吐量,服务更多的并发和流量,二是为了提高系统的稳定性,让系统的可用性更高。

    提高架构的性能

     

     

    咱们先来看看,提高系统性能的常用技术。

    • 缓存系统。加入缓存系统,可以有效地提高系统的访问能力。从前端的浏览器,到网络,再到后端的服务,底层的数据库、文件系统、硬盘和 CPU,全都有缓存,这是提高快速访问能力最有效的手段。对于分布式系统下的缓存系统,需要的是一个缓存集群。这其中需要一个 Proxy 来做缓存的分片和路由。

    • 负载均衡系统,是做水平扩展的关键技术。其可以用多台机器来共同分担一部分流量请求。

    • 异步调用。异步系统主要通过消息队列来对请求做排队处理,这样可以把前端的请求的峰值给“削平”了,而后端通过自己能够处理的速度来处理请求。这样可以增加系统的吞吐量,但是实时性就差很多了。同时,还会引入消息丢失的问题,所以要对消息做持久化,这会造成“有状态”的结点,从而增加了服务调度的难度。

    • 数据分区和数据镜像。数据分区是把数据按一定的方式分成多个区(比如通过地理位置),不同的数据区来分担不同区的流量。这需要一个数据路由的中间件,会导致跨库的 Join 和跨库的事务非常复杂。而数据镜像是把一个数据库镜像成多份一样的数据,这样就不需要数据路由的中间件了。你可以在任意结点上进行读写,内部会自行同步数据。然而,数据镜像中最大的问题就是数据的一致性问题。

    对于一般公司来说,在初期,会使用读写分离的数据镜像方式,而后期会采用分库分表的方式。

    提高架构的稳定性

     

     

    接下来,咱们来看看提高系统系统稳定性的一些常用技术。

    • 服务拆分,主要有两个目的:一是为了隔离故障,二是为了重用服务模块。但服务拆分完之后,会引入服务调用间的依赖问题。

    • 服务冗余,是为了去除单点故障,并可以支持服务的弹性伸缩,以及故障迁移。然而,对于一些有状态的服务来说,冗余这些有状态的服务带来了更高的复杂性。其中一个是弹性伸缩时,需要考虑数据的复制或是重新分片,迁移的时候还要迁移数据到其它机器上。

    • 限流降级。当系统实在扛不住压力时,只能通过限流或者功能降级的方式来停掉一部分服务,或是拒绝一部分用户,以确保整个架构不会挂掉。这些技术属于保护措施。

    • 高可用架构,通常来说是从冗余架构的角度来保障可用性。比如,多租户隔离,灾备多活,或是数据可以在其中复制保持一致性的集群。总之,就是为了不出单点故障。

    • 高可用运维,指的是 DevOps 中的 CI(持续集成)/CD(持续部署)。一个良好的运维应该是一条很流畅的软件发布管线,其中做了足够的自动化测试,还可以做相应的灰度发布,以及对线上系统的自动化控制。这样,可以做到“计划内”或是“非计划内”的宕机事件的时长最短。

    上述这些技术非常有技术含量,而且需要投入大量的时间和精力。

    分布式系统的关键技术

    而通过上面的分析,我们可以看到,引入分布式系统,会引入一堆技术问题,需要从以下几个方面来解决。

    • 服务治理。服务拆分、服务调用、服务发现,服务依赖,服务的关键度定义……服务治理的最大意义是需要把服务间的依赖关系、服务调用链,以及关键的服务给梳理出来,并对这些服务进行性能和可用性方面的管理。

    • 架构软件管理。服务之间有依赖,而且有兼容性问题,所以,整体服务所形成的架构需要有架构版本管理、整体架构的生命周期管理,以及对服务的编排、聚合、事务处理等服务调度功能。

    • DevOps。分布式系统可以更为快速地更新服务,但是对于服务的测试和部署都会是挑战。所以,还需要 DevOps 的全流程,其中包括环境构建、持续集成、持续部署等。

    • 自动化运维。有了 DevOps 后,我们就可以对服务进行自动伸缩、故障迁移、配置管理、状态管理等一系列的自动化运维技术了。

    • 资源调度管理。应用层的自动化运维需要基础层的调度支持,也就是云计算 IaaS 层的计算、存储、网络等资源调度、隔离和管理。

    • 整体架构监控。如果没有一个好的监控系统,那么自动化运维和资源调度管理只可能成为一个泡影,因为监控系统是你的眼睛。没有眼睛,没有数据,就无法进行高效的运维。所以说,监控是非常重要的部分。这里的监控需要对三层系统(应用层、中间件层、基础层)进行监控。

    • 流量控制。最后是我们的流量控制,负载均衡、服务路由、熔断、降级、限流等和流量相关的调度都会在这里,包括灰度发布之类的功能也在这里。

    此时,你会发现,要做好这么多的技术,或是要具备这么多的能力,简直就是一个门槛,是一个成本巨高无比的技术栈,看着就都头晕。要实现出来得投入多少人力、物力和时间啊。是的,这就是分布式系统中最大的坑。

    不过,我们应该庆幸自己生活在了一个非常不错的年代。今天有一个技术叫——Docker,通过 Docker 以及其衍生出来的 Kubernetes 之类的软件或解决方案,大大地降低了做上面很多事情的门槛。Docker 把软件和其运行的环境打成一个包,然后比较轻量级地启动和运行。在运行过程中,因为软件变成了服务可能会改变现有的环境。但是没关系,当你重新启动一个 Docker 的时候,环境又会变成初始化状态。

    这样一来,我们就可以利用 Docker 的这个特性来把软件在不同的机器上进行部署、调度和管理。如果没有 Docker 或是 Kubernetes,那么你可以认为我们还活在“原始时代”。现在你知道为什么 Docker 这样的容器化虚拟化技术是未来了吧。因为分布式系统已经是完全不可逆转的技术趋势了。

    但是,上面还有很多的技术是 Docker 及其周边技术没有解决的,所以,依然还有很多事情要做。那么,如果是一个一个地去做这些技术的话,就像是我们在撑开一张网里面一个一个的网眼,本质上这是使蛮力的做法。我们希望可以找到系统的“纲”,一把就能张开整张网。那么,这个纲在哪里呢?

    分布式系统的“纲”

    总结一下上面讲述的内容,你不难发现,分布式系统有五个关键技术,它们是:

    • 全栈系统监控;
    • 服务 / 资源调度;
    • 流量调度;
    • 状态 / 数据调度;
    • 开发和运维的自动化。

    而最后一项——开发和运维的自动化,是需要把前四项都做到了,才有可能实现的。所以,最为关键是下面这四项技术,即应用整体监控、资源和服务调度、状态和数据调度及流量调度,它们是构建分布式系统最最核心的东西。

     


    链接:https://www.jianshu.com/p/1e86f615a187
     

    展开全文
  • 聊聊什么是技术栈

    万次阅读 2020-01-13 13:57:40
    1、技术栈 定义:一般来说是指将N种技术互相组合在一起(N>1),作为一个有机的整体来实现某种目的或功能。也可以指掌握这些技术以及配合使用的经验。 举个例子:开发一个普通OA系统,您使用了...

    1、技术栈    

            定义:一般来说是指将N种技术互相组合在一起(N>1),作为一个有机的整体来实现某种目的或功能。也可以指掌握这些技术以及配合使用的经验。

            举个例子:开发一个普通OA系统,您使用了html + css + javascript + vue+ Spring Boot+Spring cloud + hibernate + Spring+rocket Mq+Redis+Es + linux + mysql等等,这些技术加起来就可以称为技术栈

            目前,还流行一个说法,是Full Stack (全栈),简单地说是万金油,说得具体一点就是前端、后台、存储、架构等多种技术都懂一点。
            这里的“栈”就是英文的stack的意思,大白话:一些东西堆叠在一起。

            掌握不同种类技术更有概括性的一种说法。

    2、常见说法

            这个项目用到的技术栈是什么?

           该应聘者技术栈有点落后。

           ...

    展开全文
  • 技术栈大全

    2019-08-24 12:06:36
    https://juejin.im/post/5d5375baf265da03b2152f3d
  • 公司最新技术栈

    2019-07-18 18:21:59
    程序相关 后端框架 easyswoole 前端h5 vue vue-elment-admin 文档生成 apidoc #安装node,npm后可安装文档 npm install apidoc -g #生成文档 apidoc -i ./ -o docs 小程序 环境相关 ubuntu18 ... ...
  • 技术栈的总结

    2020-06-30 16:59:02
    数据结构与算法 数据结构和算法–数组 数据结构和算法–lian 数据结构和算法–数组 数据结构和算法–数组 数据结构和算法–数组 数据结构和算法–数组 数据结构和算法–数组 数据结构和算法–数组 ...
  • 个人技术栈

    2019-09-24 12:37:23
    visual basic:  大专时接触的第一种编程语言,学完之后能写一些基本的界面,对软件的事件响应模型有了基本的了解,但工作后基本没有再碰过这方面的代码了,基本语法都忘记了;  2019年3月的时候还用它做了一个...
  • 如何为移动开发选择技术栈

    万次阅读 2019-07-21 18:08:01
    如何选择移动应用开发的技术栈 选择合适的技术栈是移动开发领域最关键的决策之一。你选择的技术栈将为你开发的移动应用提供基本的功能、可拓展和维护性。选择技术栈时应该注意项目的类型、预期投入市场的时间和创意...
  • 技术栈 2.0 产品提供灵活强大的自定义技术栈能力,在蚂蚁金服金融科技(简称“金融科技”)的公有云上为您提供 SOFA Boot 技术栈,在私有云上为您提供 SOFA4 技术栈。更重要的是,该产品支持任意的自定义技术栈部署...
  • 物联网开发技术栈

    万次阅读 多人点赞 2019-07-05 10:04:31
    作为互联网技术的进化,物联网开发并非孤立的技术栈,而是向上承接了互联网,向下统领了嵌入式硬件开发的一个承上启下的全栈开发技术。 虽然我们并不能预测物联网技术栈最终的样子:统一的开发语言是 JavaScript ...
  • 技术栈不统一带来的问题

    千次阅读 2017-08-21 18:39:44
    技术栈不统一带来的开发效率问题日渐突出,系统维护成本显著增加,基础技术建设收效甚微,难以开展。我们面临的问题主要有: 1.业务线技术栈不统一,新技术如AngularJS、Vue.js、jQuery和传统老项目并存,项目切换...
  • 谈谈我的技术栈

    2019-08-13 17:57:17
    什么是技术栈: 技术栈快速总结了开发人员与应用程序交互所需的编程语言,框架和工具。 由于大多数编码语言具有众所周知的性能属性和限制,因此技术栈暗示了整个应用程序的优缺点。 例如,如果程序员知道软件服务是...
  • AI技术栈实践分析

    千次阅读 2019-08-25 11:10:43
    人工智能是让机器像人一样思考甚至超越人类,而机器学习是实现人工智能的一种方法,它最...下面是我从主流人工智能平台技术架构的五层模型来分析技术栈。五层分别是基础数据层,计算引擎层,分析引擎层,应用引擎层...
  • Vue前端技术栈

    2019-10-31 17:17:35
    TIP 前端技术栈 ES6、vue、vuex、vue-router、vue-cli、axios、element-ui 后端技术栈SpringBoot、MyBatis、Spring Security、Jwt
  • .net 技术栈之高级开发

    千次阅读 2018-09-14 18:12:09
    写于之前,打算写一个关于.net 技术栈之全系列的文章,分享记录一下个人这些年来的技术储备 形成一个.net web 开发面的概念。疑问?为什么有这么多.net 文章博客,还是要写?写出来有什么不同? 什么时候完成全...
  • 测试的技术栈

    千次阅读 2018-11-30 15:03:00
    测试的技术栈 一、必学基础专题 linux作为越来越多使用的服务器搭配的系统,成为了不管是测试还是运维还是开发,都需要会的内容。通过一系列常规的Linux系统的使用和操作,强化该系统的实战操作,未测试功底打下...
  • 部署docker的技术栈

    2019-03-28 15:11:51
    单个技术栈能够定义和协调整个应用的功能(虽然很复杂的应用程序可能需要使用多个技术栈)。 本文展示如何实现拥有多项服务的技术站的实现,并且实现彼此关联且在多台机器上运行。 docker技术栈实现 本文要在原有...
  • 前两天又有小伙伴私信松哥,问题还是职业规划,Java 技术栈路线这种,实际上对于这一类问题我经常不太敢回答,每个人的情况都不太一样,而小伙伴也很少详细介绍自己的情况,大都是一两句话就把问题抛出来了,啥情况...
  • 我的开发技术栈概述

    千次阅读 2018-03-09 10:32:47
    开发技术栈概述因由品从事开发工作多年,遇到过各种项目,每个项目要求不一样,要不停的学习一些新技术,然后可能下一个项目又用不到,难免有些疲于奔命;而且有些东西就算不用,丢掉也未免可惜,所以本着节约好记性...
1 2 3 4 5 ... 20
收藏数 263,892
精华内容 105,556
关键字:

技术栈