大家好,今天小编关注到一个比较有意思的话题,就是关于java语言缺陷的问题,于是小编就整理了2个相关介绍Java语言缺陷的解答,让我们一起看看吧。
自学j***a感到学到自己的瓶颈期了,各种框架乱七八糟,感觉好乱。该怎么办?
不知道你学到了什么程度,学习是一个循序渐进的过程,俗话说一口吃不了一个大胖子,如果不论你是你是向安卓开发领悟还是向web开发,服务器开发都是需要一步步来的。作为一个过来人建议你先从一个点进行深入,比如你学会了安卓开发转向web也是很容易的,因为万变不离其宗,程序运行的原理都是相通的,有什么具体问题可以向我提问。
这是一个很好的问题,你能有这个感觉,说明你就要更上一层楼了。
刚开始学习编程,以实践为主,有了一定的感觉之后就会遇到瓶颈。作为一个开发了十几年的程序员,我来分享一下我的经验。
下面是我的***里大概要介绍的内容:
知其然,知其所以然。不仅要学会使用框架,还需要学会框架的原理。最好的方法是自己动手模仿着做一下。一动手你就开始从框架设计者的角度考虑问题了。你思考问题的角度和高度就和以前不一样了。
学习算法和设计模式。思考框架要解决的本质问题。评价这种方法的优缺点。如果是你,你有什么改进意见。可以参考我的动画***,讲解了很多分布式系统的设计原理。
个人认为,如果感觉到了瓶颈,证明学习得不够深入。 可能你是被框架的知识,或者说j***a的知识困扰了。编程说白了还是对现实进行虚拟化,现实是无穷无尽在变化的。我们应该深入去了解总结编程的思想,更好更高效的解决现实问题。就例如从基础到现在我们都在做的登录功能,从最基础的账号密码,到腾讯阿里授权,Oauth2.0。。。这里的知识就够丰富了,我们应该去想想Oauth2.0的设计理念,这种理念解决了哪些问题,其实跟语言没太大关系
没做东西之前学习基础理论感觉好没用,因为学了也无法领悟,也不会用。用框架开发多了又感觉空空的,迷茫,应该回来再把基础理论学一遍,不仅能加深理解,在写的时候也能用上。
你需要有一个新的学习方向,找到自己的学习方向!瓶颈期说明你学习一些基础知识和框架之后不知道自己该往哪个方向走。首先应该明确J***a一门有着20多年历史的编程语言,而且J***a是一门企业级的编程语言,很多大公司都在使用J***a。应该说J***a语言中有你学不完的知识,就算是有五六年J***a开发经验的也不可能完全精通J***a。
你要明确自己所处的阶段,现在是已经看过J***a大部分常用类的源代码还是会调用一些API,会使用一些框架。如果支持会调用J***a API和使用一些框架那么你还处在初级阶段,要学的东西还有很多。你接下来应该看J***a API的源代码,看懂和理解J***a API为什么要这么实现。如常见的String、HashMap、ArrayList、LinkedList类的源码,这些都是最常用,最基本的类,应该懂得它们的实现原理,看源码不用每一行都看,但是要知道基本的原理。J***a中的数据结构有哪些?基本的数据结构的源代码都看过吗?
数据结构是通用的,理解J***a中数据结构,对学习其他编程语言也有帮助。
下面说一下J***a学习中几个大的方向,J***a网络编程、J***a多线程编程、Spring Boot、Spring Cloud、Mybatis。
J***a网络编程涉及到socket编程,socket编程分为TCP socket和UDP socket。这就需要你理解TCP协议、UDP协议。如用TCP socket实现一个聊天功能怎么实现,支持用户登录,添加好友等。你可以自己实现,也可以使用Netty框架。Netty框架的源码是否有了解过,任何框架不要只停留在用的基础上,除非自己不想深入学习。
J***a多线程编程涉及到线程池、常用的锁、线程安全等。多线程编程所涉及到J***a API中的类有哪些,看过哪些源码。
Spring Boot、Spring Cloud框架是J***a开发最常用的微服务框架,是否理解spring mvc、理解***协议、微服务中的注册中心、网关等。
为什么一提到j***a的swing和awt组件,大家都不建议学?
早期的j***a主要是[_a***_]在web开发方面,所以从实用的角度出发,确实可以略过AWT和Swing的学习。在移动端开发流行之后,AWT和Swing又成为一个必修的内容了,因为做Android开发如果有一定的AWT基础是比较好的,很多概念是统一的。
为了描述这个问题,我们首先要了解到底什么是AWT,什么是Swing,以及它们与Android开发有什么联系。
j***a语言第一个支持图形界面开发的API就是AWT,在AWT中定义了j***a图形界面的很多核心概念,所以要了解j***a的图形界面开发方式一定要从了解AWT开始。下面分别介绍一下AWT中的三个核心概念:容器、组件、布局。
图形容器是存放图形元素的场所和环境,j***a中把容器分为顶级容器和次顶级容器。顶级容器可以单独显示、次顶级容器不能单独显示。顶级容器的代表是Frame,次顶级容器的代表是Panel。
图形组件是具体的图形应用元素,比如Button(按钮)、TextField(文本框)、Label(标签)、Choice(下拉列表)等等,每一个图形组件代表一种具体的图形应用元素。
布局的作用是安排图形组件在容器中的排列样式,常见的布局方式有BorderLayout、FlowLayout和GridLayout等。其中BorderLayout是Frame的默认布局管理器,FlowLayout是Panel的默认布局管理器。
具体的图形开发根据不同的界面设计***用不同的容器、布局和组件进行搭配组合,复杂的图形组件遵循顶级容器嵌套次顶级容器的方式来完成。
Swing与AWT相比较最大的优点是轻量级方式,Swing不依赖于本地操作系统,所以在样式上能够进行统一。在写法上***用了在AWT的类名基础上增加一个大写的J字符,比如在AWT中的Frame改为JFrame,Button改为JButton等等。
在实际的开发中比较推荐使用Swing的方式,一个原因是Swing的组件在外观上更具备科技感,另一个原因是它占用的***较AWT更少。
说到AWT和Swing一定要说一下图形组件的***处理方式,J***a中的***处理方式***用了监听的方式,也可以称为“代理”的方式。***处理类通过实现具体的接口来完成对应的***处理,比如ActionEvent对应的ActionListener接口;KeyEvent对应的KeyListener接口;MouseEvent对应的MouseListener接口和MouseMotionListener接口;WindowEvent对应的WindowListener接口等等。
到此,以上就是小编对于j***a语言缺陷的问题就介绍到这了,希望介绍关于j***a语言缺陷的2点解答对大家有用。