java怎么能快速上手

2021-06-11 17:10发布

15条回答
我是大脸猫
1楼 · 2021-06-15 11:16.采纳回答

思想准备

你做好加班的准备了吗?

需要知道的概念(不需要深入了解,但一定要知道有这么个东西)

  • SSH(Struts,Spring,Hibernate)

  • SSM(Spring,SpringMVC,MyBatis)

据我所了解的,现在用的更多是SSM,MyBatis使用起来也相对来说更简单一点,这个具体要看项目组使用的技术

需要掌握的软件最基本操作

  • 版本管理:Git或SVN操作,GIT基本命令可见我的另一篇博客Git 最基本的操作命令

    • 克隆(clone):将远程仓库代码克隆到本地

    • 拉取(pull):拉取最新代码

    • 提交(commit):提交代码

    • 上传(push):提交到远程仓库

    • 新增(add)

  • Maven

    • Maven安装、配置

    • Maven简单使用(*.pom如何引入Jar依赖)

    • 配置连接公司的私有库、打包、发布

    • Eclipse下Maven插件配置(最新版本的Eclipse一般内置插件,只需要配置一下就好)

  • Eclipse

    • 常用快捷键,可以极大地提升编码效率,而且看上去很帅,哈哈

    • Build Path设置

    • 字符编码设置(中文乱码的问题一般是这个引起的)

  • JDK安装、环境变量设置

  • 数据库--MySQL、SQL Server、Oracle等 数据库连接,一般都会有用于开发的数据库,直接连接即可

核心技术点

  • Spring

  • Spring MVC或Struts(主要先了解Spring MVC模式及开发流程)

  • 数据库操作:Mybatis(常用)或Hibernate或JDBCTemplate(Spring自带)

  • MVC(Model View Controller) 知道怎么回事即可,具体原理可上手之后研究,

    • model-模型

    • view-视图

    • controller-控制器

开发流程

这里所说的开发流程基本试用大部分的开发项目,希望对读者有帮助。

基本流程:需求分析—功能设计—理清逻辑—写代码

  • 需求分析:别人提供一个需求的大致描述,需要自己去分析需求的可行性以及需求实现的基本思路,最好是在纸上写写画画,方便理清思路以及防止死不承认(嗯,相信我,这很重要!)

  • 功能设计:根据需求确认代码需要实现几个功能,然后功能组合,最终满足需求。这个阶段需要测试技术实现的可能性,比如做定时功能,你可能需要首先写一下定时实现的Demo测试下技术可能性再去具体实现整个功能。

  • 理清逻辑:功能设计完成之后,需要理清写代码时的逻辑,功能优先级,功能模块的解耦等。个人感觉这一块很重要,经常见有人代码写到一半发现逻辑不对需要重新返工。

  • 写代码:Model实体—Dao数据库操作--Service业务逻辑--Controller控制器(Action)

学习流程:

上手最快的方式就是模仿别人的代码。因为每个项目组的差异性,没有什么通用性的模板去靠,所以融入项目最好的方式就是看下项目组前辈的代码,然后尝试着去模仿。

具体做法就是找一个已经开发完的简单功能,看代码,其中Service的具体代码不需要看懂(涉及业务逻辑,如果不知道具体的业务的话很难看懂,只会浪费时间),个人感觉关键点在于Mybatis的使用,因为Java Web后端的开发最常做的就是增删改查了。Controller层很少写业务逻辑,只是负责跟前端交互(比如前后端传值、API提供等)
MyBatis两种使用方法:

  • 直接写在.java文件上以注解的形式写SQL

  • 方法定义与XML(通俗的讲就是写sql的地方)做映射(mybatis有自动生成,mybatis-generator,熟悉之后可以研究下,可以节省大量的开发时间)

如何阅读别人的代码

因为每个公司的标准不一样,所以有些package和方法名的命名不一样,最好是跟已有的保持一致

Java Web开发的命名一般是:Model、Dao、Service、Controller(Action)
比如用户功能的开发可能是:
UserModel、User……(实体,一般是对应数据库user,变量名驼峰形式,比如userName)
UserDao、UserMapper:数据库操作,一般对应 UserMapper.xml
UserService(接口定义)、UserServiceImpl(接口实现,写业务逻辑的地方)
UserController(或*Action) 控制器,一般跟前端的交互在这,比如前端调用的接口就是在这定义的。

学会去问

不要怕问!不要怕问!不要怕问!

技术这个领域太庞大了,没有人敢说掌握了所有的东西,即使是在你所擅长的领域。每个人都有无知的时候,所以不要觉得自己问别人丢脸,有时候你纠结的问题都是些很简单的问题,只要你理清楚了剩下的很多问题都会很容易的解决掉。

做技术的人,不是在解决问题就是在去解决问题的路上~

当然,不要怕问不代表着什么都要问,问别人也是需要技巧的,否则问多了别人也会烦的。
要搞明白什么该问什么不该问

  • 什么该问?

    • 一定是你经过思考的问题,而不是一看不会就跑去问,这个很容易给别人留下不好的印象。

    • 你觉得有价值的问题,只要是你觉得有价值而且自己解决不了的都可以问,问题没有低级高级之分,只要是你求知路上的拦路虎对你来说都是大问题。如果是自己觉得没什么价值但是又想知道的,可以在平时吃饭闲聊的时候问一下


  • 什么不该问?

    • 网上一搜答案一大堆的基础问题,比如Maven如何安装,这种问题网上太多了就不要再去浪费别人的时间了

    • 自己都不知道自己的问题是什么的。说的模模糊糊还需要别人自己去理解的问题最好别问,除非这个问题很重要而且确实是你自己不知道该如何表述。

怎么问

  • 找着问题所在,上网搜下尝试自己解决,如果超出了自己预期时间再去问别人(如果很长时间没解决,千万别浪费时间了,耽误进度比丢脸问题大多了)。

  • 如果是程序报错,一定要将具体的报错信息截图或者通过别的方法记录下来,不要直接问什么“我的程序怎么跑不起来”这种问题,说实话,有一万种可能会导致你程序跑不起来的方法,别人不可能挨着给你排查。对于一个程序员来说,日志是很重要的东西,一个报错的日志截图绝对会让别人更愿意帮你解决问题

学会网上搜索

肯定很多人会很奇怪,难道我一个高材生还不会百度?说实话,有可能你真的不会。搜索的时候一定要搜问题的关键词,而不是漫无目的的检索。

比如:数据库连接报错,有的人直接网上搜“数据库为什么连不上”,这种问题网上都有上亿的结果,等你找到你自己的问题答案天估计也黑了。找到报错信息,直接搜索报错信息绝对是事半功倍。如果百度等没找到,可以直接去Stack Overflow上找,绝大部分的问题都能在上面找到答案,不过是全英文的网站,需要一定的英文功底。

关于搜索引擎:英文报错信息,Google会好一点。如果是中文问题,百度搜索结果可能更好一点,一些中文博客都包含在内。但是总体来说Google搜索质量高一点

题外话-自我成长

永远不要满足于自己的现状,在刚开始工作的前两年,是你快速成长的阶段,这个阶段你可能会产生自己已经“无敌”了的错觉,觉得自己什么都会了,世间的一切尽在掌握中。当你有这种错觉的时候,说明你该吃药了。

个人感觉对成长最有帮助的几个方法:

  • 读书

    不管是什么书都可以读,当然玄幻之类的小说就算了。技术书、思维能力锻炼的书要着重读一下,好处还是很明显的。

  • 交流、分享

    在技术这个领域,交流分享绝对是能让你快速成长的一大利器。一个技术氛围很浓的圈子是很重要的,没有的话可以尝试着去写博客,在网络上找志同道合的人

  • 学着做笔记

    很多问题都是会重复遇到的,所以将自己遇到的一些问题纪录下来有助于避免重复踩坑
    另外整理学习笔记,可以加深记忆、便于后续查看。推荐两个做笔记软件:印象笔记、OneNote




Uzi
2楼 · 2021-06-11 17:39

java要想快速上手,首先还是要有自己的代码思想,良好的代码基础,在学习java的时候建议是多敲多练,孰能生巧,万事开头难,开完头,就是很容易了。

不吃鱼的猫
3楼 · 2021-06-12 10:02

从基础慢慢学起,最好要有配套的系统的学习资料。然后按部就班学习。

猫的想法不敢猜
4楼 · 2021-06-14 13:52

你说的是快速上手是零基础开始还是有基础开始,最简单的方式找老师教,虽然会花钱但是效果最好学的最快

三岁奶猫
5楼 · 2021-06-15 10:22

学习东西没有什么能快速上手的,要一步一个脚印,先把java基础学好,基础很重要的。

yuixan
6楼 · 2021-06-15 11:36

快速上手的办法就是培训,不然零基础自学快速上手几乎是不太可能的

茄子酱
7楼 · 2021-06-18 16:04

程序入口

java语言是以类的方式组织代码结构的,我们可以指定任意一个类为程序的入口,只需要在类里实现以下方法:

public class Hello {
    public static void main(String[] args) {
        // TODO
    }}

项目中多个类都可以指定入口函数,那么他们分别运行的话,就是不同的应用。

代码的管理

在集成开发环境中通过Build Path技术组织java源码。他的技术细节如下:
1、在主项目中的类之间可以直接访问(公开类);
2、主项目可以引入第三方架包(.jar)、别的项目或者别的文件夹里面的类,通过Build Path来管理;
3、主项目、别的项目、架包分别在不同的“源”,在主项目中通过import引入别的源,他们本质上没有命名空间;
4、JRE和系统类库也由Build Path负责管理。

语言基础

1、基本的数据类型和算法、分支结构和其他语言相似,略。
2、数组处理

内存管理

在java中由虚拟机的垃圾回收机制来管理对象的释放(堆空间管理),他主要解决两个问题:一个是什么样的对象可以释放(不被使用的对象可以销毁);另一个是什么时候执行(在创建新对象发现内存不足时触发)。
那么怎么判断对象不被使用呢?我们在iOS或者python中采用引用计数的方式(通过判断对象有无指针引用来决定是否销毁),这种方式无法解决循环引用问题,需要开发者自己去避免。java的垃圾回收机制可以有效解决循环引用问题,开发者一般不需要管理内存。垃圾回收机制算法有多种(不同JDK版本可能不同,不透明),比较常见的是可达性分析法,算法比较复杂,这里不做展开。


寂静的枫林
8楼 · 2021-07-01 17:58

建议可以从基础学起,前期多看看视频,后期多自己动手敲代码练习

ZGSYT
9楼 · 2021-07-05 14:37

个人认为Java想要快速的上手的话还是找一个培训班进行一个系统的培训比较好,比较快一点,而且系统的培训可以让你有一个系统的编程思想,有一个完整的编程思想对于开发的上手速度有很大帮助

相关问题推荐

  • 回答 156

    对于每一位才开始接触JAVA的新手来说,先不要管算法和数据结构,大多数简单的程序不需要用到算法和数据结构,所以当你真正需要时再去学习。编程一段时间以后,你就会知道在哪些地方用到他们。这时知道算法的名字并了解它们的功能,然后动手去实践。当我们在去...

  • 回答 93

    2个都很好就业,更关键的是要学得到东西

  • 回答 12
    已采纳

    获取Map集合中所有的key可以通过map集合的keySet()方法获取例如:    Map map = new HashMap();    map.put(xx,xx); //存放数据    //.... 省略    Set set = map.keySet();    //可以通过迭代器进行测试    Iterator iter = set.iter...

  • 回答 56
    已采纳

    不同年龄,不同掌握程度,学历,找工作城市,面试能力这是一个多方面影响的结果,如果是平均值的话,全国平均薪资14k左右

  • 回答 38

    具体学多久,根据自己的学习力,自律性、解决问题能力来决定若系统性学习,跟着讲师的节奏走,大概半年左右,有专业的讲师把课程进行规划,尽心系统学习,有问题,讲师会帮忙解决,学习的效率很高,避免了自学中出现各种问题解决不了,而耽误很多时间,可能会...

  • 回答 23
    已采纳

    (1)idea启动时会有两个快捷方式,安装完后默认生成在桌面的是32位的idea的快捷方式,如果我们使用这个快捷方式运行大项目,一般都会很卡。解决方法是找到idea的安装目录,然后进入bin文件夹,找到名称为idea64的应用程序,右键他生成桌面快捷方式。以后每次...

  • BIO与NIO、AIO的区别2020-05-19 15:59
    回答 4
    已采纳

    IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO     在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要...

  • Java方法的命名规则2021-04-06 19:07
    回答 31

    ava是一种区分字母的大小写的语言,所以我们在定义变量名的时候应该注意区分大小写的使用和一些规范,接下来我们简单的来讲讲Java语言中包、类、变量等的命名规范。(一)Package(包)的命名Package的名字应该都是由一个小写单词组成,例如com、xuetang9、compan...

  • 回答 2

    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;    } ...

  • 回答 6

    经典版单例模式public class Singleton {        private static Singleton uniqueInstance;//利用一个静态常量来记录singleton类的唯一实例。     private Singleton() {     }     public static  Singleton getInstance()...

  • 回答 3

    哈希表的长度一般是定长的,在存储数据之前我们应该知道我们存储的数据规模是多大,应该尽可能地避免频繁地让哈希表扩容。但是如果设计的太大,那么就会浪费空间,因为我们跟不用不到那么大的空间来存储我们当前的数据规模;如果设计的太小,那么就会很容易发...

  • 回答 14

    1. DOM(Document Object Model)        DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才...

  • 回答 19

    1)作用不同: throw用于程序员自行产生并抛出异常; throws用于声明在该方法内抛出了异常2) 使用的位置不同: throw位于方法体内部,可以作为单独语句使用; throws必须跟在方法参数列表的后面,不能单独使用。3)内容不同: throw抛出一个异常对象,且只能是...

  • 回答 11

    基本执行过程如下:1)程序首先执行可能发生异常的try语句块。2)如果try语句没有出现异常则执行完后跳至finally语句块执行;3)如果try语句出现异常,则中断执行并根据发生的异常类型跳至相应的catch语句块执行处理。4)catch语句块可以有多个,分别捕获不同类型...

  • 回答 20

    100-199 用于指定客户端应相应的某些动作。 200-299 用于表示请求成功。 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。 400-499 用于指出客户端的错误。 400 语义有误,当前请求无法被服务器理解。 401 当前请求需要用户验证...

  • 回答 16

    异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。Java编译...

没有解决我的问题,去提问