后端技术

JAVA后端常用框架SSM,Mybatis,Dubbo,RabbitMQ,Redis,Docker

南笙酒味 提交于 2019-11-29 11:52:07
01 前言 Java框架一直以来都是面试必备的知识点,而掌握Java框架,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能对当前正在开发中的系统有整体的认知,从而更好的熟悉和学习技术,这篇文章胖达就打算给大家介绍几款现阶段流行的框架组合,不管是在传统企业开发还是在互联网开发领域,这几种框架应该都是比较常用的。 02 三层架构 说到框架首先需要明确的是,在Web开发领域一般会将架构分为三个部分:表示层、持久层、业务层,之所以将整体架构分为三个层面,主要目的是让整个系统更具有条理性,通过分配任务的方式进行系统的解耦,让每一层只关心自己内部的事情,只知道下层的存在,不知道上层的存在。达到局部改变而不影响全局的目的,就比如餐馆中有服务员、厨师、收银员一样,各司其职,让系统有条不紊的运行下去。三层架构如下图所示(图中的数据访问层就是文中的持久层): 下面就简单介绍一下三层架构: 1.表示层 表示层其实就是用户能够看到的界面显示层,但是它的职责并不仅仅是显示界面那么简单,而是需要完成三件事情: 从界面中取得数据跟后台服务器交互 跟后台交互后进行数据绑定 将绑定的数据呈现在页面中 一般来说,这一层的设计会采用MVC的模式,M称为模型也就是实体类,用于数据的封装和数据的传输;V也就是页面组件,用于数据的展示;C为控制也就是流程事件,用于流程的控制。 2.业务层

Java后端工程师学习大纲

末鹿安然 提交于 2019-11-29 11:43:20
之前自己总结过的 Java后端工程师技能树 ,其涵盖的技术点比较全面,并非一朝一夕能够全部覆盖到的。对于一些还没有入门或者刚刚入门的Java后端工程师,如果一下子需要学习如此多的知识,想必很多人会望而却步。 本文截取了技能树中的一些关键技能点,并辅以学习资料和书籍推荐,做为Java后端工程师的一个入门或者入职学习计划,是一个相对完整的从基础到高级的修炼过程。基本上涵盖了一个合格的Java后端工程师必备的技能点。 本大纲会持续更新 ^_^… 一. Git版本管理+Maven工程管理 微博新兵训练营课程——环境与工具 二. Java编程 书籍 《Java核心技术(卷1)》 :学习java必备的黄皮书,入门推荐书籍 《Java核心技术(卷2)》 :黄皮书之高级特性 《Java并发编程实战》 : 对java并发库讲得非常透彻 《Effective Java》 :Java之父高司令都称赞的一本java进阶书籍 《写给大忙人看的Java SE 8》 :涵盖了java8带来以及java7中被略过的新的java特性,值得一看 资料 Socket编程: http://ifeve.com/java-socket/ NIO: http://ifeve.com/java-nio-all/ 序列化: http://ifeve.com/java-io-s-objectinputstream

nginx 简单理解和配置

自作多情 提交于 2019-11-29 08:15:38
1.概念 Nginx是一个高性能的HTTP和反向代理的web服务器,同时也提供了IMAP/POP3/SMTP服务,Nginx是由伊戈尔·塞索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。 其将源代码以类BSD许可证的形式发布,因他的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx1.0.4发布。 nginx时一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。其特点时占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆是由nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。 2. 优点 Nginx可以在大多数UnixLinuxOS上编译运行,并有Windows移植版,Nginx的1.4.0稳定版本已经于2013年4月24日发布,一般情况下,对于新建站点,建议是由最新稳定版本为生产版本,已有站点的升级紧迫性不高,Nginx的源代码使用2-clause BSD-like license。 Nginx 是一个很强大的高性能web和反向代理服务,它具有很多非常优越的特性: 再连接高并发的情况下,Nginx是Apache服务模型不错的替代品

为什么要放弃 JSP ?

 ̄綄美尐妖づ 提交于 2019-11-29 06:54:17
作者 | 水车 链接 | www.cnblogs.com/xuange306 前言 以前的项目大多数都是Java程序猿又当爹又当妈,既搞前,又搞后端。 随着时代的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只负责前端的事情,后端工程师只管后端的事情。正所谓术业有专攻,一个人如果什么都会,那么每一样都很难达到精通。 大中型公司需要专业人才,小公司需要全才,但是对于个人职业发展来说,我建议是分开。你要是这辈子就吃 Java 这碗饭,就不要去研究什么 css,js 等等。 把你的精力专注在 Java,JVM 原理,Spring原理,mysql锁,事务,多线程,大并发,分布式架构,微服务,以及相关的项目管理等等,这样你的核心竞争力才会越来越高,正所谓你往生活中投入什么,生活就会反馈给你什么。 曾几何时 我们的Java Web项目都是使用了若干后台框架进行开发,Spring、Spring MVC、MyBatis、Hibernate等等。 而且大多数项目在Java后端都是分了三层,控制层、业务层、持久层。控制层负责接收参数,调用相关业务层,封装数据,以及路由到JSP页面。然后Jsp页面上使用各种标签(jstl/el)表达式将后台的数据展现出来。 我们先看上述这种情况,需求定完了,代码写完了,测试测完了,然后发布:

前后端分离-为什么分离

泄露秘密 提交于 2019-11-29 05:23:40
What? 什么是前后端分离?一般我们所说的前后端分离都是说开发模式的前后端分离,部署一般也是分离的。 现在我所知道的常见的开发模式有: 传统的MCV模式:前端写html,后端套界面,转成jsp或者像freemarker,velocity,beetl(国产值得推荐)这类模板引擎。部署在一起或者动静态分离部署。 前后端分离的开发模式:前端写html5,js,css3+前端MVC模式(backbone或者angular框架都不错)+后端restful数据接口。 常见的前后端分离的例子就是SPA(Single-page application),所有用到的展现数据都是后端通过异步接口(AJAX/JSONP)的方式提供的,前端只管展现。 Why? 为什么我们需要前后端分离? 关于这个问题,玉伯的文章 Web研发模式演变 中解释得非常全面,再大概理一下: 1 现有开发模式的适用场景 玉伯提到的几种开发模式,各有各的适用场景,没有哪一种完全取代另外一种。 比如后端为主的MVC,做一些同步展现的业务效率很高,但是遇到同步异步结合的页面,与后端开发沟通起来就会比较麻烦。 Ajax为主SPA型开发模式,比较适合开发APP类型的场景,但是只适合做APP,因为SEO等问题不好解决,对于很多类型的系统,这种开发方式也过重。 2 前后端职责不清 在业务逻辑复杂的系统里,我们最怕维护前后端混杂在一起的代码

银月星海的旅途

耗尽温柔 提交于 2019-11-29 03:41:25
之前用过简书写博客 https://www.jianshu.com/u/b2617b480168 ,但总是懒懒的,完全沉迷于网游中。直到看到 https://www.cnblogs.com/charlotte77/ https://blog.csdn.net/f_zyj/article/list/67 ? ,感触颇深。所以急切希望自己励精图治,再四年后的今天能有charlotte777姐姐般的成就。 大学: 今天,是2019年9月1日,不知不觉大学已经毕业两年了,时间过的真的快。 13年毕业选大学的专业的过程简直不能太蠢,因为家人涉及的专业很冷门,所以只能自己找起。随便翻看到西南大学有一个名为IT国际精英的专业,顿感高大上,盲猜是双语教学,立马报取了,因为分数高了大学录取线十几分,所以顺利拿到毕业证。刚进入大学保持着高中的学习激情,但是看到几门课全是英文教材真的崩溃了,开始的时候还能咬牙一个个查,直到耐心被磨平。大学混来混去,因为此专业的合作项目,大三去了澳洲继续读书。没想到在澳洲更懒散。 找工作: 17年回国,回到了大学宿舍参加学校举办的招聘会,当时惊讶的发现自己根本没有能力去选择一份重庆的程序员工作,无奈的回了国际庄的父母家。当时反省了下,学校项目经验只有一个网页应用和一个C#的填字游戏,后来投了几个拉勾网的公司。投了一两家,第一家初创公司给了前端笔试机会,当时是一个to do

前端与后端的数据交互(jquery ajax+python flask)

ぃ、小莉子 提交于 2019-11-29 03:11:34
前端与后端的数据交互,最常用的就是GET、POST,比较常用的用法是:提交表单数据到后端,后端返回json 前端的数据发送与接收 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请求 前端的数据发送与接收 1. 提交表单数据 # GET请求 var data = { "name": "test", "age": 1 }; $.ajax({ type: 'GET', url: /your/url/, data: data, # 最终会被转化为查询字符串跟在url后面: /your/url/?name=test&age=1 dataType: 'json', # 注意:这里是指希望服务端返回json格式的数据 success: function(data) { # 这里的data就是json格式的数据 }, error: function(xhr, type) { } }); # POST请求 var data = {} # 如果页面并没有表单,只是input框,请求也只是发送这些值,那么可以直接获取放到data中 data['name'] = $('#name').val() # 如果页面有表单,那么可以利用jquery的serialize()方法获取表单的全部数据 data = $('#form1')

收益 or 挑战?Serverless 究竟给前端带来了什么

两盒软妹~` 提交于 2019-11-29 01:56:34
作者 | 黄子毅(紫益) 阿里前端技术专家 导读 :前端开发者是最早享受到 “Serverless” 好处的群体,因为浏览器就是一个开箱即用、甚至无需为计算付费的环境!Serverless 把前端开发体验带入了后端,利用 FaaS 与 BaaS 打造一套开箱即用的后端开发环境。本文作者将从前端角度出发,为你讲述 Serverless 带来的收益及挑战。 引言 Serverless 是一种 “无服务器架构”,让用户无需关心程序运行环境、资源及数量,只要将精力 Focus 到业务逻辑上的技术。 现在公司已经实现 DevOps 化,正在向 Serverless 迈进,而为什么前端要关注 Serverless? 对业务前端同学: 会改变前后端接口定义规范; 一定会改变前后端联调方式,让前端参与服务器逻辑开发,甚至 Node Java 混部; 大大降低 Nodejs 服务器维护门槛,只要会写 JS 代码就可以维护 Node 服务,无需学习 DevOps 相关知识。 对一个自由开发者: 未来服务器部署更弹性,更省钱; 部署速度更快,更不易出错。 前端框架总是带入后端思维,而 Serverless 则是把前端思维带入了后端运维。 前端开发者其实是最早享受到 “Serverless” 好处的群体。他们不需要拥有自己的服务,甚至不需要自己的浏览器,就可以让自己的 JS 代码均匀

JVM(十三):后端编译优化

烈酒焚心 提交于 2019-11-28 22:47:20
JVM(十三):后端编译优化 在 JVM(一):源文件的转变 中我们介绍了 Java 中的前端优化,即将 Java 源代码转换为字节码文件。在本文中,我们将介绍字节码文件如何转换为本地机器码,并如何对代码进行优化,以提高性能。因为不同的虚拟机,字节码优化引擎不同,因此本文采用 JIT 来作为例子,其也是 HotSpot 中的默认编译器。 架构 我们都知道将代码转换为机器码有两种方式,而在 HotSpot 中采用了却两者全部都涉及到了,其采用了解释器和编译器并存的架构。那么其这样的目的是什么呢? 首先我们知道解释执行,可以大大提高程序启动时的效率,因为在这个时候需要执行什么代码,才对对应的源码进行翻译,将其变为机器码,因此也提高了启动时效率; 而编译执行的优点则是可以获得更高的执行效率,因为其将中间代码全部编译成了与机器相关的本地代码,并且在这一阶段,有些编译器还会对编译后的代码进行初步的优化,这也使得效率更加的优秀。 因此 Hotspot 开始执行的时候采用解释执行,获得优良的启动效率,而在代码执行过程中,对执行情况进行监控,运用以前所说的 热点代码编译技术 将热点代码编译成本地机器码,并根据执行情况进行优化,以获得两者全部的优点。 可能会有读者问道,我的代码部署在服务器上,第一次慢一点就慢一点,我只采用编译执行不行吗? 其实不然,首先因为编译器需要对代码进行优化

SQLMAP注入教程-11种常见SQLMAP使用方法详解

99封情书 提交于 2019-11-28 21:37:34
sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题,sql注入另一方面就是手工党了,这个就另当别论了。今天把我一直以来整理的sqlmap笔记发布上来供大家参考。 一共有11种常见SQLmap使用方法: 一、SQLMAP用于Access数据库注入 (1) 猜解是否能注入 1 2 win : python sqlmap.py - u " http://www.xxx.com/en/CompHonorBig.asp?id=7 " Linux : .lmap.py - u " http://www.xxx.com/en/CompHonorBig.asp?id=7 " (2) 猜解表 1 2 win : python sqlmap.py - u " http://www.xxx.com/en/CompHonorBig.asp?id=7 " --tables Linux : .lmap.py - u " http://www.xxx.com/en/CompHonorBig.asp?id=7 " --tables (3) 根据猜解的表进行猜解表的字段(假如通过2得到了admin这个表) 1 2 win : python sqlmap.py - u " http://www.xxx.com/en