后端技术

前后端分离架构概述

不打扰是莪最后的温柔 提交于 2019-11-27 00:24:54
1、背景 前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。 核心思想是 前端HTML页面通过AJAX调用后端的RESTFUL API接口并使用JSON数据进行交互 。 Web服务器:一般指像Nginx,Apache这类的服务器,他们一般只能解析静态资源; 应用服务器:一般指像Tomcat,Jetty,Resin这类的服务器可以解析动态资源也可以解析静态资源,但解析静态资源的能力没有web服务器好; 一般都是只有web服务器才能被外网访问,应用服务器只能内网访问。 以前的Java Web项目大多数都是Java程序员又当爹又当妈,又搞前端,又搞后端。随着时代的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情。正所谓术业有专攻,一个人如果什么都会,那么他毕竟什么都不精。大中型公司需要专业人才,小公司需要全才,但是对于个人职业发展来说,前后端需要分离。 2、未分离时代(各种耦合) 早期主要使用MVC框架,Jsp+Servlet的结构图如下: 大致就是

DAY-04

人盡茶涼 提交于 2019-11-27 00:08:39
今天是周六,前天停电,顺带通了个宵。 到大工也已经快一个月了,不知道自己的学习进度算什么样的,今天重新看了一下,决定不能跟着大师兄的安排,691天过后就要工作了; 一定要自己掌握一点技术; 暂时的规划: 第一年时间好好学习前端,开始到这来就接触的前端,而且,相比较于无聊的后端,前端挺好的。 接下来的半年时间, html, css, html5, css3, javascript,jQuery, ps基础, 移动端开发,ES6基础 vue, react 后半段的学习计划还没有确定,不过我觉得可以进入后端的开发,实验室的语言比较乱,目前接触的这个项目用的是JAVA,但是实验室也有python , JAVA、PATHON。 来源: https://www.cnblogs.com/forrest1996/p/11331528.html

【转】一棵歪脖子树——全栈工程师

梦想与她 提交于 2019-11-26 22:15:58
  老张有一个林场,专门种植树木,待树木成材后销到城里做家具。林场里有不少杉树,长得都非常挺拔,偏偏不知怎的长了一棵歪脖子树,长得倒是郁郁葱 葱,偏偏造型奇特,别的树都力争上油,可这棵歪脖子树不仅横着长,还长得颇为怪异。老张几次都想挖掉它当柴火烧,看它那怪异的造型又忍住了,心想等这批杉 树成材,一起砍掉吧。   一到晚上夜深人静的时候,林场里就炸开了锅,杉树们极力取笑歪脖子树。“你知道作为一棵树,我们的终极目标就是成为有用之材吗,你看旁边那个,可以做梁柱,小歪脖子,你丫能干啥啊?”;"这个臭歪脖子树,抢了我们的养分和阳光,长成这样,完全是丢我们的脸,我呸!".   歪脖子树有自己的梦想,它要长成它喜欢的造型,如此日复一日,林场里的杉树渐渐长大了,老张决定逐步卖掉这些杉树。随着一批批杉树被运出去,奚落与 嘲笑更多了。“瞧睢人家,你左边的那棵,现在在被打造成前台,在知名大企业,右边的那棵更牛逼了,它被做成了老板桌,你知道天天用的老板是谁吗,说出来吓 死你。你个臭傻逼,作为一棵树,你居然不向上长?”   林场里的树越来越少了,歪脖子树也有些失落,对自己的未来产生了怀疑,当初为什么不和他们一样长呢。   有一天,一个老板和他弟弟过来买树,他弟弟是个园艺家。园艺家正在筹划一个大型的园林,一切都弄好了,唯独还差一棵造型奇特的树作为点睛之用,他找了很多地方,不是造型不满意就是人为痕迹太过于严重

前后端分离模式研究

戏子无情 提交于 2019-11-26 20:02:29
一、前言 对目前的web来说,前后端分离已经变得越来越流行了,越来越多的企业/网站都开始往这个方向靠拢。前后端分离概念在今天其实并不新鲜,自以MVC模型为主的开发模式流行之初,前后端分离思想就被提出来了,但是经历了几十年的发展,前后端分离并没有得到实质的进步和应用。得益于前后端框架的丰富和发展以及接口文档自动化技术的出现,前后端分离于最近几年在很多的实践中得到了越来越好的应用和推崇。那么,什么是前后端分离呢?为什么要选择前后端分离呢?前后端分离对实际开发有什么好处呢? 二、背景 在以前传统的网站或者系统开发中,前端的工作一般只是切图,简单的将UI设计师提供的原型图实现成静态的HTML页面。而具体的页面交互逻辑,如页面与数据的交互工作等,可能都是由后台开发人员来实现,或者是前端紧紧的耦合后台。比如以前的基于MVC架构的淘宝Web,架构决定了前端只能依赖后台,这种模式是前端写好静态demo,后端翻译成VM模板,同时后台还实现C层的逻辑。 更有甚者,部门公司后台人员直接兼顾前端工作,一边实现API接口,一边开发页面。这导致后台的开发压力大大增加。前后端工作分配不均。不仅仅开发效率慢,而且代码维护困难。而前后端分离,则可以很好的解决前后端分工不均的问题。将更多的页面交互逻辑分配给前端来处理,而后端则可以专注于其本职工作,比如提供API接口,进行权限控制以及进行运算等工作

程序员的十大思维误区

社会主义新天地 提交于 2019-11-26 19:20:07
作为老码农老程序员,日常工作中打交道最多的也是程序员,在这个过程中,我发现不少程序员在技术、产品等方面的思维有各种各样的小问题。现在我就来回忆一下,把这些我认为不太好的思维习惯记录下来,在提醒自己的同时,也供程序员朋友们参考,不必对号入座,有则改之,无则加勉,或者你甚至认为这些不是思维误区都可以的,我也不知道起怎么样的标题比较合适,且称“程序员的十大思维误区”吧,祝阅读愉快! 1. 测试人员不按我的实现来测 前端界面有几个下拉列表框,需要选择后才能点“提交”按钮,但前端的实现是,即使不选择下拉框,也能点击“提交”按钮。而如果没选择时就提交,会出错。前端开发人员会说,你不按我的要求来使用,才出错的啊。嗯,嗯,好像有点道理哈。 从测试的角度来看,粗暴点说,就是要把你的东西搞垮,当然不会按照开发人员想象的流程来测试,前端开发人员必须力求保证无论用户怎么使用,都不能出现崩溃的现象,用户使用流程不合理时,进行适当提示,而不是挂掉。比如不满足输入条件的情况下,“提交”按钮最好变灰,这样也有助于引导用户按照正常流程来使用产品功能。 2. 接口没有数据,当然就出错 APP或网站出错了,找前端开发人员过来看。看完之后说:“接口返回空数据了,前端没有问题”。真的没问题吗? 前端需要进行防御式编程,永远不要假定后端接口有数据返回或者数据格式一定是合理的,因此需要针对这些情况做处理

虚拟化原理(2)

对着背影说爱祢 提交于 2019-11-26 19:04:17
虚拟化概述 将底层的计算机资源虚拟成多组彼此之间互相隔离的计算平台,并且每一个计算平台都应该有五大部件的所有设备(运算器,控制器,存储器,IO设备)。 虚拟化技术的分类 模拟:硬件+操作系统+模拟器软件,虚拟机的cpu架构和物理cpu的架构可以不一致。(模拟器模拟出来的CPU指令集和底层物理CPU的指令集不同,就需要虚拟机监视器将模拟的CPU指令集转化为真正物理CPU的指令集,这个过程需要软件参与而且性能差) 常用的模拟又:PearPC, Bochs, QEMU 完全虚拟化:虚拟CPU和物理CPU的架构完全相同。(虚拟CPU和物理CPU的架构完全相同,对虚拟机而言只要不是调用到特权指令或敏感指令,普通指令就能直接在底层物理CPU上执行,无需进行转化。如果虚拟机调用到特权指令,特权指令由虚拟机监视器捕获后进行翻译后转化成宿主机的指令集 或者 虚拟机向虚拟机监视器(VMM)通过调用hypersor call的方式来实现,这取决于是完全虚拟化还是半虚拟化。完全虚拟化可以借助于HVM技术省略指令转换的过程) 常见的完全虚拟化有:VMware Workstation, VMware Server, Parallels Desktop, KVM, Xen 半虚拟化:para-virtualization 在硬件之上运行hypervisor,hypervisor将底层功能通过hypervisor

选择转行学习WEB前端,你必须要了解的5大要点

岁酱吖の 提交于 2019-11-26 15:52:23
随着互联网开展,互联网的体系越多越多,越来越杂乱,用户不能满意基本功用的需求,对互联网体会要求越来越高,客户端与服务器的交互不在是简略页面和页面的交互,而变为页面和页面+程序+数据的交互,其间完成与客户交互和体会的程序就是Web前端工程师完成的,这时Web前端工程师就诞生了,跟着用户对体会和交互要求越高,体系功用越杂乱,Web前端工程师的岗位就越重要。 1前端岗位饱和了? 随着互联网和移动终端的普及,雨后春笋般的互联网项目的发展,用户对于用户体验的需求不断提升,前端工程师逐渐成为介于视觉工程师和后端工程师之间必不可少的角色,备受大家的追捧和关注。 随着前端工程师岗位的发展,近期,网上不断传出前端工程师岗位饱和的言论。网上有人抱怨说,前端工程师人太多了,工资太低,工作太难找了。 前端岗位真的饱和了吗?答案当然是否定的。 近几年来,前端岗位的热度一直处于稳中有升的状态。通过百度搜索指数的趋势图我们可以看到,随着HTML5和ES6的推广,从2014年开始至今,前端一直处于逐步上升、正常波动的状态,没有回落降温的趋势。 数据来源:百度指数 通过各大招聘网站可以看出,前端岗位需求量大,薪资待遇也在不断提高,尤其是高级前端岗位缺口很大,不存在前端岗位饱和的现象。 数据来源:拉勾网 2前端岗位是刚需 随着用户对用户体验的需求不断提升,前端部分的复杂度也在不断提高。传统的美工

MySQL集群搭建(4)-MMM+LVS+Keepalived

非 Y 不嫁゛ 提交于 2019-11-26 12:14:34
上篇文章 MySQL集群搭建(3)-MMM高可用架构 介绍了 MMM 高可用集群的搭建方法, 里面有提到 MMM 可以配置多个读 VIP , 今天这篇文章教大家怎么用 LVS 对这些读 VIP 做一个负载均衡。 1 LVS 介绍 1.1 简介 LVS 是 Linux Virtual Server 的简写,意即 Linux 虚拟服务器,是一个虚拟的服务器集群系统。本项目在 1998 年 5 月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。 LVS 集群采用 IP 负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。 比如说,用 LVS 做 Web 负载均衡,那么请求 LVS 调度器的时候,请求会根据配置的算法分发给后端某台 Web 服务器,后端 Web 服务器机器对于请求者来说是透明的。 1.1 LVS 工作模式 LVS 包含以下三种常用工作模式 1). NAT 模式 NAT (Network Address Translation) 即网路地址装换,NAT 的工作原理是更改报文头(目标地址、源地址和端口等)后,转发请求都后端地址。流程如下 客户端请求 LVS 的 IP LVS 更改请求的目的 IP,改为后端服务器其中一个 IP,然后转发请求

浏览器渲染简述

筅森魡賤 提交于 2019-11-26 10:19:43
singsong: 文本是自己看了一些不错资料整理出来的,对该知识点感兴趣的同学可以查看 参考文章 小节。 ✏️最新内容请以github上的为准❗️ 为什么要写这篇文章? 主要为 CSS 优化工作打一下基础。要编写高性能的网站和应用,除了确保编写的代码尽可能高效地运行外,还需要确保页面性能,刷新频率尽量到达 60FPS。这就需要了解浏览器是如何进行渲染的。而浏览器渲染与 CSS 密切相关,因此只有了解其中工作原理才能让 CSS 更好地工作。 另外,接下来会出一篇优化实战文章,会涉及 JavaScript 和 CSS 一些优化。其中关于 JavaScript 的优化之前已进行过介绍: 常见的 JavaScript 内存泄露 。本文是对 CSS 优化进行一个补充。 Contents 浏览器 DOM tree CSSOM tree RenderObject tree(也称为 Render tree) Layout(布局) RenderLayer tree Rendering(渲染方式) GrphicsLayer tree Tiled Rendering(瓦片渲染) High Performance Animations(流畅动画) 总结 参考文章 浏览器 用户界面(User Interface):包括地址栏、前进/后退按钮、书签菜单等。除了浏览器主窗口显示的您请求的页面外

你如何理解后端开发

老子叫甜甜 提交于 2019-11-25 23:53:05
你如何理解后端开发 拿支付宝来举例,曾经的支付宝用户数并不多,一台服务器,一个数据库就可以支持所有的业务了。 当支付宝的用户越来越多的时候,一台服务器无法同时满足海量用户的需求,于是开始出现了多台服务器,多台服务器组成了一个集群,用户可以通过负载均衡的方式访问这些服务器,每个用户可能会访问到不同的机器上,这样子就达到了分流的效果,服务器的压力就会减小。 由于数据库需要保证数据的可靠性,万一某一台数据库挂了,并且没有备份的话,那么这个数据就无法访问了,这在大型系统中是不允许出现的,于是就有了数据库的主从部署。 但事实上,随着业务发展,数据库的压力也越来越大,主备部署并不能解决数据库访问性能的问题,于是乎我们需要进行分库分表,在数据库主备的基础上,我们会把一个数据量很大的表拆成多个表,并且把数据库请求分流到不同的数据上,比如说100个分库,100个分表,就相当于把一个数据表划分成10000个数据表。 此时又出现一个问题,如果一个数据库有多个备库,并且当主库挂掉的时候需要进行主从切换时,主备数据库之间的数据就可能发生不一致,而这也是分布式理论研究的问题之一。 其实负载均衡、分库分表都是分布式技术的一种实现,如果不想做分库分表,那还有什么办法能够减轻数据库访问的压力呢?于是缓存就出现了,缓存可以让服务器先把请求打到缓存上,由于缓存的数据一般在内存中,所以访问速度会非常快