【Mac环境】对于初学者学习开发java开发,不同阶段敲代码工具选择,以及一些建议和java里的部分知识。[后端学习路线]

我其实也只是一个刚入门不久的小白,但是最近在看到许多大牛的博客之后,感觉一个牛人的开始还是要写写博客锻炼自己,我也产生了写博客的想法,因此此篇是本人的第一篇博客,如果有错误,或者不同的见解,欢迎直接评论,或者私聊我

1. 前期-这里的前期是指刚入门,也就是说从刚开始配置编译环境开始

在这个阶段:大家都处于刚开始建立良好的编码习惯的黄金时间,我更多的是建议大家使用文本编译器,在配置好自己的编码环境之后。通过文本编译器敲出自己的的java

有些小伙伴可能会问了:“我们老师直接用的IDEA,那不香嘛?”之类的话------这里我需要说明为什么前期建议大家尽量使用文本编译器来敲代码

  • 正如开始所说,养成一个良好的编码格式,刚开始养成的习惯很容易成为大家以后开发的习惯,任何一个良好的编码习惯都是从开始坚持下来,同理任何一个坏习惯都是不经意的习惯中养成的
  • 初学者前期不熟悉各类方法,多敲多练容易让大家掌握并熟练自己所学习的方法名,以及各个结构体。我在初学时候即使遇到相同结构的方法体,也不会c+v,而是手打一遍。
  • 训练自己的打字习惯,既然本篇文章是给初学者所说的,那么相信大家初学时并没有良好的打字习惯,甚至可能是二指禅(两个手的食指直接点完所有键)这里建议初学者在学习编码的同时,去学习敲键盘的正确指法,他能有效的提高你未来的敲码速度(另外,以后别人看你敲代码两个手指头按,别人会瞧不起你的)-----作者初学的时候是买了一个软件学习的

编译器推荐

  • Sublime Text(自己本人使用的文本编译器,洁面简介)
  • eclipse (界面听说挺丑,因为我自己用的是Sublime Text,所以没有了解过eclipse,只不过老师用的文本编译器是这个)

在前期的学习中,还是那句话,多敲多练,多做笔记!

也许你做笔记可能以后很少会看,但是做笔记这种习惯能为你培养一种归纳概括能力,以后即使有知识的遗忘,也能通过自己的笔记快速回顾

笔记以及代码存放位置

因为Mac取消了分盘,我们相比window用户也就少了份焦虑,作者这里是使用的2020年的intel的MacBook pro 256G,我在这里说明这个不是为了炫耀我自己所用的Mac,相信大家来看这篇文章也大部分都是用的mac,我只是想说明学习java真的不需要太大的空间,电脑不下电影,完全够用

自己的笔记以及代码存放在下载(/Download)中。几点原因:

  1. 自己在网上下载的安装包,因为都是直接出现来下载中,方便自己直接放入自己的分好类的文件中

例如:上方-我在学习JDBC以及javaweb时下载的jar包,都是从网站下载,并且直接放入自己的学习笔记代码文件夹中,以后在导入也方便通过类来找寻

  1. 分门别类的存放位置自己看着舒服,笔记都是学习中积累的知识,并且与当时学习该知识中所敲的代码息息相关,放在一起更方便自己理解当时学这个地方所get的知识点。
  2. 自己在敲自己的java代码的同时学会通过注释来解释写这段代码的意义,不知道该怎么写可以参考SUN公司写源码开发时的注释,如果英语差可自行翻译,看看大牛怎么写的注释,什么时候注释。
    这里给大家随便找了下源码看看
学会看报错

在初学阶段,作者本人最怕的就是使用编译器然后终端编译时报错。说实话可能大部分初学者都对报错有着一种恐惧之心。每当看到一堆error,感觉头都要裂开。我也不例外,在刚开始学习的时候,每当出现报错,第一反应都是惊恐,不知道咋办。后来慢慢的跟着老师的步伐学会了看报错,只要不是配置环境问题,基本都能够自己解决大部分报错。

java中的异常机制

不仅如此,我们作为java工程师还要感谢java能提供一套异常系统,像我们老师所说,判断一个语言在某种意义上成熟与否,就要参考他是否有一套自己的的完善异常机制,一门语言,如果他在编写代码执行的时候,代码出问题了,他的控制台啥也不显示,那程序员根本不知道自己哪里有问题。java是一门很完善的语言,我们程序员在观察到异常消息之后,对程序进更改,增加了程序的健壮性。

2.前期中-这里的前期中是指在学到方法重载、多态、不同类方法的调用的时候开始

这个阶段大家逐渐对基本的语法初步上手,这里就可以建议大家使用IDEA社区版本。

理由:

  • 此时的编写代码习惯已经在文本编译器前期完成。拥有了基本的编码能力,可以适当放松双手体验一下集成开发工具带来的便捷,以及强大的提示作用。
  • 其次这里不建议大家直接下载旗舰版,或则旗舰版的破解版,不仅仅是因为比较麻烦,在学习javaweb之前,旗舰版许多功能在你这个阶段的学习中根本用不到。如果用钱买年卡更是非常的贵。

这个阶段你将会学习到javase后期的所有知识
可能顺序不一定相同
这里大家会学习到一个非常难以接受的概念:抽象类与接口,初学者很难接受这里的概念,例如抽象类有啥用,有的人甚至会认为抽象类的作用就是抽象,为了抽象而抽象。

还会学到一些经典的算法问题:冒泡算法,二分法查找等等。
这里给大家看看我当时学时,怎样理解的冒泡算法

这里是代码实现 冒泡算法


int count=0;int count2=0;for(int i=arr.length-1;i>0;i--){for(int j=0;j<i;j++){count++;if(arr[j]>arr[j+1]){int x = arr[j];arr[j] = arr[j+1];arr[j+1]=x;count2++;}}}System.out.println("交换次数:"+count2);System.out.println("比较次数:"+count);for(int y=0;y<arr.length;y++){System.out.println(arr[y]);}

还会学到集合–这里会学到几种数据结构

  • 数组
  • 双向链表
  • HashMap(哈希表)
  • 红黑树

在学集合时,同样作者本人也了解了UML图的部分知识,并且自己画了一张集合的UML继承结构图,在这里给大家参考

我对IO流学习我认为,并没有刚接触多态时的难以理解,仅仅就只是一个模版的学习,以及调用方法的学习。这里遇到一个自己当时自己没法独立完成的任务

通过IO流完成拷贝目录,整个目录,包括目录中的文件。

这个学习任务用到了拷贝不同的文件需要用到不同的方法,以及我在这里用到了递归。总而言之对于当时的我来说实现难度很大。最终看着老师的方法一步一步慢慢理解。

如果有人对上述需求实现感兴趣的话,我会花时间单独做一篇,讲讲如何通过IO流实现目录拷贝

最后一大重要难点就是线程

其实线程的理解也比较抽象,这里也建议大家在学习线程的生命后期时候,配合图形来理解

多线程是所有java工程师面试必问的问题之一。

首先讲讲两个概念,进程与线程

进程

进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。

线程

线程是一条执行路径,是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作,每个请求分配一个线程来处理。

一个正在运行的软件(如百度网盘)就是一个进程,一个进程可以同时运行多个任务( 百度网盘可以同时下载多个文件,每个下载任务就是一个线程), 可以简单的认为进程是线程的集合。

关于进程与线程的关系

对于Java程序来说,在终端(DOS)命令窗口输入:
java HelloWord 回车之后。
会先启动JVM,而JVM就是一个进程。
JVM会再启动一个主线程调用main方法。
同时再启动一个垃圾回收线程负责看护,回收垃圾。
最起码,刚刚所说的操作中至少有3个线程并发
一个垃圾回收线程,一个是执行main方法的主线程。

  • 阿里巴巴:进程

    • 马云:阿里巴巴的一个线程
    • 童文红:阿里爸爸的一个线程
  • 京东

    • 强东:京东的一个线程
    • 奶茶妹妹:京东的一个线程

进程可以看做现实生活当中的公司。
线程可以看做公司当中的某一个员工。
进程A和进程B的内存独立不共享。(阿里巴巴和京东资源不会共享)
线程A和线程B:在java语言中,堆内存和方法区内存共享
但是栈内存独立,一个线程一个栈。

最后的反射机制,以及注解我不再赘述

都是一些需要记忆的死内容

3.初期末-这里指学习完MySqL数据库,JDBC之后,开始学习了解前端知识,并准备往后端,网站开发发展。

到了这阶段,回归正题,就该使用旗舰版的IDEA,不过我并不建议使用破解版:麻烦,并且不稳定,尊重版权思想。

我这里使用的则是随便在pdd或者淘宝,自己注册一个JETBrains账号,化十几块买一年的资格。一年十几的开销既不算太贵,同样也是正版。

由于初期末javaWeb的知识我也才学不久,也就没法给大家总结经验,不过以后会将自己在Servlet中遇到的问题,以及解决方法及时跟大家分享。

成功没有捷径之路,我始终相信多敲多练。

未完待续

对于初学者学习java开发,开发工具选择-Mac相关推荐

  1. 初学者学习Java的几大技巧

    在编程的世界里,Java一直是企业级别开发非常喜欢选择的编程语言,从Java就业形势来看,一直都是相当不错的,而且由于手机安卓开发的需要,更多的年轻人开始转战学习Java,同时,许多人也对怎么学习Ja ...

  2. 初学者学习java编程,如何顺利通过4大艰难阶段?

    有人通过Java培训班获得了年薪几十万的逆袭,也有人通过Java培训班体会到了"学习java有多难"的滋味.无论是哪种收获,都与我们突破每一个阶段的方法有关. 整个过程看似艰难,但 ...

  3. 零基础学习java软件开发攻略

    Java是主流开发语言,应用普遍.Spring Boot是Java开发时常用框架,有非常丰富的组件和易用的功能.实际开发工作中涉及到的知识点比较多,将它们分门别类,专题攻关,由点到面,学习效率非常高. ...

  4. 男生学习Java软件开发更有优势吗及自学的难度如何?[图]

    一.男生比女生更适合学Java软件开发吗? 根据以往经验来说,确实男生更适合从事Java软件开发行业,在进行项目研究开发中,男生的实践能力一般比女生好一些,但这并不意味着女生不适合从事Java软件开发 ...

  5. 学习Java软件开发该从何入手

    21世纪科技飞速发展的时代,软件行业进军国内以来,发展潜力巨大,一点一点的从生活中渗透到企业运行中,Java软件开发无处不在,因此企业对Java软件开发工程师的需求非常大,就目前而言,想要学习Java ...

  6. 手机app服务器端开发初期---工具选择

    最近新接触手机app服务器端开发,处于起步阶段,做一些记录. 1.Android平台下与服务器数据库通信的方法 在Android平台下,连接电脑服务器的MySQL.PostgreSQL.Oracle. ...

  7. java教程mp4,2020初学者学习JAVA入门视频教程

    资料代码.rar 01:零基础学 02:内容综述.mp4 03:开发环境搭建(macOS).mp4 04:HelloWorld程序编译和运行(macOS).mp4 05:开发环境搭建(Windows) ...

  8. 对于初学者学习Java语言的建议(转载)

    初学者的任务是掌握Java的语言规则和养成良好的编程习惯,其次才谈到对类库使用的熟练程度,再其次是OO思想的掌握与应用,再其次就是Design Pattern的问题了.      在这里我只想介绍几个 ...

  9. java的重点是什么_你知道初学者学习Java的重点是什么吗?

    如果调试一个程序让你很苦恼,千万不要放弃,成功永远在拐角之后,除非你走到拐角,否则你永远不知道你离他多远,所以,请记住,坚持不懈,直到成功. 集合框架 1:String类:字符串(重点) (1)多个字 ...

最新文章

  1. 【.Net MF网络开发板研究-04】Socket编程之服务端
  2. Android真机运行错误INSTALL_FAILED_MEDIA_UNAVAILABLE
  3. 采用UltraISO制作U盘启动盘
  4. 网页与APP中那些优美的登陆表单
  5. iOS UUID配合keychain的替换方案实现
  6. [C#源码] 微信跳一跳POST修改分数漏洞
  7. matlab2012安装过程中退出,Matlab 2012安装图解
  8. Oracle Instant Client安装与配置
  9. 艾宾浩斯记忆表格excel_艾宾浩斯打卡群第二期邀请函
  10. 千图成像 马赛克拼图 专用软件 圣诞礼物
  11. 入门:安装Python
  12. Python基础学习之正则表达式(完整版)
  13. VNC登陆灰屏 - fatal IO error 11 (Resource temporarily unavailable) on X server
  14. android6.0系统车载航一,谷歌确定Android 6.0命名为Marshmallow
  15. Web前端人员如何提升能力 提高效率有哪些方法
  16. 含有未知中间变量同时需要传递其他中间变量的微分方程参数拟合
  17. 论文最后一页是空白页的有效删除方法
  18. session cookie的区别最全总结
  19. 【转载】显卡PM手记-----4850显卡的诞生
  20. python抓取微信公众号新闻文章图片

热门文章

  1. blender 安装后闪退,报错exception access violation
  2. 大数据技术的四大挑战与十大趋势
  3. HTML5期末大作业:美食城网站设计——美食城(5页) HTML+CSS+JavaScript 关于城市美食的HTML网页设计-----
  4. WPS-JS宏开发-基础知识-03-三大基本结构
  5. CAA 控制台窗口的输出
  6. js字符串查找包含某个字符
  7. freenas 蜗牛星际_蜗牛星际与开源NAS “Rockstor”初体验
  8. 手把手教你快速搞定4个职场写作场景
  9. i7 8700k能装linux,在不超频的情况下装机选i7-8700还是i7-8700K好?
  10. VBA操作Excel之设置单元格属性