获取Map集合中所有的key可以通过map集合的keySet()方法获取例如: Map map = new HashMap(); map.put(xx,xx); //存放数据 //.... 省略 Set set = map.keySet(); //可以通过迭代器进行测试 Iterator iter = set.iter...
public class Point { private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } ...
JSP时代
8年前,刚刚进入编程这个行业,当时的Web开发使用古老的SSH框架+JSP。那个时候,几乎所有的Java程序员都要懂得如何写JavaScript、如何解决页面布局问题。
所以在当时,从事Web开发不会明明白白地的分成前端程序员、后端程序员,几乎每一个人都既要懂后端,又要懂前端。
JSP虽然功能很强大,性能也不错,但是会导致前端页面代码过于凌乱。想想看,一个页面又包含JSTL标签,又包含java代码,又包含原生js代码,这还能不乱吗?
模板引擎时代
后来,有两个优秀的模板引擎诞生了,一个叫做Velocity,一个叫做FreeMarker。小灰在京东工作的时候,主要是用的就是Velocity引擎。
这两种引擎把静态页面有效地剥离出来,使得前端程序员可以完全专注于静态页面的开发,后端程序员把页面动态化。
这个时候,虽然有了后端与前端的分工,但是后端程序员仍然需要掌握基本的前端技术,才能去有效地实现动态页面。更何况,一些业务的后台管理页面,完全是后端程序员独立编写的。
前后端分离时代
现如今,前端新技术琳琅满目,React、Vue、Angular...... 这还只是前端技术的冰山一角。
这个时代最大的特点是什么呢?前后端彻底的分离。后端小伙伴只需要提供一系列Restful接口,前端小伙伴负责调用这些接口,并实现页面的展示和交互。
有后端小伙伴说了:现在既然前后端分离了,前端技术和我没关系了吧?并不是。
当你和前端进行联调,或是线上遇到问题的时候,懂一些前端可以帮助你们更快定位到问题,减少沟通成本。
当你成为管理层的时候,懂得前端技术才能更好地管理各个细分领域的技术人。
当你成为架构师的时候,更需要提升自身技术广度,而不仅仅是深度。
我们如何选择?
可是,人的精力是有限的,前端流行的技术和框架有那么老多,小伙伴们该怎么选择性的学习呢?
有一个选择方法,就是优先抓住“不变”的东西。
什么是不变的东西呢?
对于后端领域来说,算法、数据库原理、面向对象思想,这些东西即使再过10年20年都不见得过时。
对于前端领域来说,JavaScript、CSS、HTML、浏览器原理,这些技术也都有着长久的生命
会一点前端基础,就方便和前端人员进行交流,就会知道接口应该如何设计,后端设计的接口,前端人员可能并不好用,所以自己学习了前端就会知道怎样设计接口才是好的。
是的学习全栈的话必须要会一点前端
Java是需要掌握web前端的相关知识的。比如:HTML、CSS、JavaScript,还需要掌握一些前端框架。
ava语言本身与前端之间就存在一定的联系,在JavaWeb技术体系结构当中,不论是Servlet还是JSP都能够完成一些前端的操作,实际上在早期的JavaWeb开发当中,很多前端页面也都是采用JSP来完成的,所以Java程序员如果从事Web开发项目,掌握前端知识是非常有必要的。
随着Web承载的服务越来越多,Java技术体系产生了一定的变化,Java语言主要解决后端服务问题,同时完成一些资源的整合任务,而前端页面则采用了更轻量级的解决方案,前端页面会搭建自己的服务器,一方面提升了响应的速度,另一方面也提升了页面的并发能力。此时,Java程序员往往更注重于服务端的实现,前端开发任务则往往由专业的前端程序员来完成。
相关问题推荐
对于每一位才开始接触JAVA的新手来说,先不要管算法和数据结构,大多数简单的程序不需要用到算法和数据结构,所以当你真正需要时再去学习。编程一段时间以后,你就会知道在哪些地方用到他们。这时知道算法的名字并了解它们的功能,然后动手去实践。当我们在去...
2个都很好就业,更关键的是要学得到东西
获取Map集合中所有的key可以通过map集合的keySet()方法获取例如: Map map = new HashMap(); map.put(xx,xx); //存放数据 //.... 省略 Set set = map.keySet(); //可以通过迭代器进行测试 Iterator iter = set.iter...
不同年龄,不同掌握程度,学历,找工作城市,面试能力这是一个多方面影响的结果,如果是平均值的话,全国平均薪资14k左右
具体学多久,根据自己的学习力,自律性、解决问题能力来决定若系统性学习,跟着讲师的节奏走,大概半年左右,有专业的讲师把课程进行规划,尽心系统学习,有问题,讲师会帮忙解决,学习的效率很高,避免了自学中出现各种问题解决不了,而耽误很多时间,可能会...
(1)idea启动时会有两个快捷方式,安装完后默认生成在桌面的是32位的idea的快捷方式,如果我们使用这个快捷方式运行大项目,一般都会很卡。解决方法是找到idea的安装目录,然后进入bin文件夹,找到名称为idea64的应用程序,右键他生成桌面快捷方式。以后每次...
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要...
ava是一种区分字母的大小写的语言,所以我们在定义变量名的时候应该注意区分大小写的使用和一些规范,接下来我们简单的来讲讲Java语言中包、类、变量等的命名规范。(一)Package(包)的命名Package的名字应该都是由一个小写单词组成,例如com、xuetang9、compan...
public class Point { private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } ...
经典版单例模式public class Singleton { private static Singleton uniqueInstance;//利用一个静态常量来记录singleton类的唯一实例。 private Singleton() { } public static Singleton getInstance()...
哈希表的长度一般是定长的,在存储数据之前我们应该知道我们存储的数据规模是多大,应该尽可能地避免频繁地让哈希表扩容。但是如果设计的太大,那么就会浪费空间,因为我们跟不用不到那么大的空间来存储我们当前的数据规模;如果设计的太小,那么就会很容易发...
1. DOM(Document Object Model) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才...
1)作用不同: throw用于程序员自行产生并抛出异常; throws用于声明在该方法内抛出了异常2) 使用的位置不同: throw位于方法体内部,可以作为单独语句使用; throws必须跟在方法参数列表的后面,不能单独使用。3)内容不同: throw抛出一个异常对象,且只能是...
基本执行过程如下:1)程序首先执行可能发生异常的try语句块。2)如果try语句没有出现异常则执行完后跳至finally语句块执行;3)如果try语句出现异常,则中断执行并根据发生的异常类型跳至相应的catch语句块执行处理。4)catch语句块可以有多个,分别捕获不同类型...
100-199 用于指定客户端应相应的某些动作。 200-299 用于表示请求成功。 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。 400-499 用于指出客户端的错误。 400 语义有误,当前请求无法被服务器理解。 401 当前请求需要用户验证...
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。Java编译...