Java学习方式分享

news2024/11/23 15:51:06

哈喽,大家好呀,好久不见!咱依然是那个腼腆害羞内向社恐文静、唱跳rap篮球都不大行的【三婶er】

坦白地说,今天是偶然看到C站这个活动的,这个主题我颇有感触,刚学java时的场景,历历在目。所以今天就来分享一下学习方式吧,练习时长两年半,不喜勿喷哈哈哈哈哈…

【唱跳rap篮球🏀专栏】

    • 一、it技术介绍
      • 1.1、java是什么
      • 1.2、为什么会选择java
    • 二、学习前的准备工作
      • 2.1、准备电脑
      • 2.2、制定计划
      • 2.3、学习途径
        • 2.3.1、书籍学习
        • 2.3.2、在线学习
      • 2.4、分享学习工具
        • 2.4.1、java环境(jdk)
        • 2.4.2、项目版本控制(git、svn)
        • 2.4.3、依赖管理(maven、gradle)
        • 2.4.4、开发工具(idea)
        • 2.4.5、数据库(mysql、sqlserver、oracle、redis、mongodb)
        • 2.4.6、数据库连接工具(navicat)
        • 2.4.7、服务器连接工具(xshell、tabby、xftp、finalshell)
        • 2.4.8、容器化(docker)
    • 三、学习时的具体操作
      • 3.1、实际操作与理解
        • 3.2.1、循序渐进学习
        • 3.2.2、开散性思维
    • 四、如何巩固学习
      • 4.1、不懂一定要问
      • 4.2、多总结、多记录、多分享
        • 4.2.1、树状体系内容总结
        • 4.2.2、记录异常
        • 4.2.3、记录新东西
        • 4.2.4、记录工具

一、it技术介绍

对于不同语言的开发者而言,大家听到最多的一句话可能就是:xxx是世界上最好的语言。

那行吧,作为主java开发程序员,咱也说一句:java是世界上最好的语言!如果有人跳进来打我膝盖,跪请各位java程序员护我周全。

在这里插入图片描述

偷偷告诉你,三婶儿这么说完全是因为对其它语言不大了解,不然可能也会说python、go…是世界上最好的语言。

1.1、java是什么

我们来看一下百度百科关于java的介绍。

Java 是一个通用术语,用于表示 Java 软件及其组件,包括“Java 运行时环境 (JRE)”、“Java 虚拟机 (JVM)”以及“插件”。 [1]
Java具有大部分编程语言所共有的一些特征,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的形式和感觉,但它要比C++语言更易于使用,而且在编程时彻底采用了一种以对象为导向的方式。

关于java到底是什么?不知道有没有人去研究过这个问题,并且可以很通俗的把“什么是java”给表达出来?

多数情况下,别人问你什么是java的时候,你可能想了半天不知道怎么描述,最后酝酿出来一句:java是一种编程语言

当然,这么说完全没毛病。但是,如果你有一个非IT行业、从来没接触过编程的漂亮女朋友问你:java是什么的时候,你如何解释呢?

闭嘴吧,我没女朋友

在这里插入图片描述

试想下,如果你去国外旅游,周围都是老外,他们都说英语。当你和他们沟通时,是不是也要说英语?

这个时候,英语就是一个沟通的“桥梁”。你会,我也会,我懂你,咱们就能沟通!

在这里插入图片描述

换到编程里面也是一样的。java是一种语言,一种计算机可以识别的语言。当你用java语言编写一段程序运行时,计算机会运行程序识别你的意图,处理后返回给你想要的结果

总的来说,java就是一种人和计算机之间沟通交流的语言

1.2、为什么会选择java

java是我接触到的第一个编程语言,也是迄今为止使用最多的语言。

工作这么久以来,听到最多的一句就是:你当时怎么想着学计算机呀,很少见到女后端…
我说那不是怕毕业之后不好找工作嘛,都说计算机行情前景好,咱也来试试?

其实,第一次听到“java”这个词,是在2016年的秋天。

当时填报志愿确实很迷茫,家里意思是想让我报教师,老一辈的可能觉得教师行业稳定,铁饭碗。还有亲朋建议医生、空乘之类的专业。

害!现在想想,还真不知道当时为什么会先填了医学?咱就是说,填完之后就是一点也不开心,心里抵触感特别强,那也是我人生中第一次强烈意识到我不可能在医学方面发展。后来就改了志愿,换成了计算机。

作为一个一点不懂电脑的人,估计当时是觉得计算机专业毕业后好找工作吧。不过那时候java确实还没有现在这么卷。那时候头发也很茂盛…

在这里插入图片描述

二、学习前的准备工作

2.1、准备电脑

家人们,学习编程,首先要准备的就是电脑。不然巧妇难为无米之炊啊!电脑整上,整上!

2.2、制定计划

所谓机会都是留给有准备的人的,一点也不假。学习也是一样。

对于初学者来说,可以考虑制定适合自己的学习计划,比如:

第一天:开发环境配置
第二天:了解基本语法
第三天:对象和类
第四天:…

可以先把学习计划给罗列出来,由浅到深,循序渐进的学习。

进阶者的话,因人而异哦,根据自己的具体情况制定,这里不再过多bb了。

2.3、学习途径

2.3.1、书籍学习

虽然现在看书学习的人已经少之又少了,但书籍学习确实系统性很强,有不少好处。

书籍通常按照编程语言的结构、特点和应用场景来组织知识,使得读者可以获得体系化的学习。且书籍出版流程较为严格,每一处代码示例都是真实可行、易于理解的。尤其是java领域中技术大牛编写的书籍,更具有学习价值。

分享几本经典的Java学习书籍:《Java核心技术》、《Java编程思想》、《Java并发编程实战》。

三婶家里也有两本,哈哈哈哈哈哈。
在这里插入图片描述

2.3.2、在线学习

网络上有各种在线学习资源,不乏存在较多Java技术栏目,分享几个很不错的Java学习网站(不分先后)。

1、【慕课网】:https://www.imooc.com/
2、【极客时间】:https://time.geekbang.org/
3、【中国大学MOOC】:https://www.icourse163.org/
4、【CSDN学院】:https://edu.csdn.net/
5、【菜鸟教程】:https://www.runoob.com/java/java-intro.html
6、【how2j】:https://how2j.cn/
7、【程序员导航】:http://cxy521.com/
8、【bilibili】:https://www.bilibili.com/

今年AI炸裂,当然必不可少的辅助工具就是chatgpt。有好多开源的,比如https://chat.wuguokai.cn

国内的科大讯也不错:https://xinghuo.xfyun.cn/楼主内测使用,觉得还蛮不错。

2.4、分享学习工具

只学理论肯定是是不行的,得实操起来。这里分享一下常用的工具和包,中间件之类的就暂时不写了,太多了。

2.4.1、java环境(jdk)

jdk虽然已经更新到20版本了,但目前多数项目中使用的还是jdk8版本居多。楼主建议新手上路可以考虑jdk8练手,感兴趣的同学可以学习一些新版本中的特新性。

java中环境变量的配置,可以参考:https://blog.csdn.net/weixin_43770545/article/details/92140645?spm=1001.2014.3001.5501

2.4.2、项目版本控制(git、svn)

svn现在基本不怎么见使用了,较多的还是git。有一些操作工具,比如sourcetree。当然你也可以使用命令行操作,三婶就很喜欢命令行操作,很方便。

sourcetree官网:https://www.sourcetreeapp.com/

命令行操作三婶之前也有总结,可参考:https://wshanshi.blog.csdn.net/article/details/124555310

2.4.3、依赖管理(maven、gradle)

maven官网:https://maven.apache.org/

下载后记得修改配置文件中maven仓库、镜像加速。

gradle官网:https://gradle.org/

2.4.4、开发工具(idea)

idea官网:https://www.jetbrains.com/idea/

社区版本和正式版本都可以下载。基本使用的话,社区版本就可以了。

分享一下好用的插件:https://wshanshi.blog.csdn.net/article/details/91348227

2.4.5、数据库(mysql、sqlserver、oracle、redis、mongodb)

这几种数据库使用的都挺多的,大家可以根据需求选择使用。

mysql、redis、mongodb免费,中小型项目使用较多。
sqlserver、oracle收费,偏向金融性的项目使用较多,相对数据安全些。

2.4.6、数据库连接工具(navicat)

官网:https://navicat.com.cn/

2.4.7、服务器连接工具(xshell、tabby、xftp、finalshell)

这几款都是很好用的shell工具,可以实现操作服务器,以及上传下载。相比较而言强力推荐tabby,太好用啦。

tabby官网:https://tabby.sh/

tabby使用可参考:https://zhuanlan.zhihu.com/p/443550221

2.4.8、容器化(docker)

容器化形式部署、运行和管理就更不必说了,绝对是一个里程碑。dockerfile的定义、容器编排,使用特别方便。

docker官网:https://www.docker.com/

三、学习时的具体操作

学一样东西,首先要明白这个东西是什么,有什么用,怎么用。熟练了之后,再去研究怎么样能把这个东西用好,发挥它的价值。

比如这个手套,刚好用上,今天工地的砖格外烫手。

在这里插入图片描述

3.1、实际操作与理解

3.2.1、循序渐进学习

从基本语法开始学习,紧接着是基本数据类型,数据结构,再写一些算法、熟悉了之后开始了解面向对象、接口、框架…

初学我说不上有什么技巧,但是一定要循序渐近学习,别想一口吃成个胖子。

如果能够边学边理解,那是最好的。如果刚学的时候不大理解,也不要着急。多加练习,先熟悉起来,慢慢的后面就通了。

不怕你们笑话,楼主刚学java时,半年还没开窍,都急哭了哈哈哈哈啊哈。后来慢慢的就恍然大悟了,但是一定不要眼高手低噢,循序渐进、多加练习准没错!

可参照楼主上面分享的学习网址内容学习,加油鸭!

3.2.2、开散性思维

java刚学的时候好像是有点抽象,有些东西甚至很难理解。比如:面向对象、封装、继承、多态。

什么是对象? 当然不是现实中的那个对象(现实中你也没有女朋友啊,确实不知道对象是什么,哈哈哈哈哈哈)

【插图】

其实很多情况下,编程中的一些术语,结合起现实生活中的例子,就很好理解啦。

试想下,你理想中的女朋友是什么样子的。
张三说:我喜欢长发、肤白、貌美、身高170、体重98、性格幽默古怪的女孩子…
李四说:我喜欢短发、肤白、貌美、身高160、体重98、性格可爱娇小的女孩子…

三婶说:我喜欢长得帅的、阳光开朗大男孩,给我来一大把…哈哈哈哈哈哈…

那么,回到编程里面来说,这些描述是不是可以提取出来一个抽象的对象?它包含了一些属性在里面?

举个例子,女盆友属性:

/**
 * 女盆友属性
 */
@Data
public class Girlfriend {
    /**
     * 编号
     */
    private String id;
    /**
     * 头发(长发、短发)
     */
    private String hair;
    /**
     * 肤色(白、黄、黑)
     */
    private String color;
    /**
     * 身高
     */
    private Integer height;
    /**
     * 体重
     */
    private Double weight;
    /**
     * 性格
     */
    private String nature;
}

提取出相关属性,这就是一个对象啦。收集到的对象信息可以进行操作或存储,当我们库表中存储了多条数据信息后,也可以进行一些相关的业务操作

比如:某海王同时拥有3个女朋友,有一天朋友问他和对象相处的怎么样?

朋友:”铁子,你和你新谈的对象相处的怎么样啊?“
他:“你问的是哪一个啊?哈哈哈哈啊哈哈…”
朋友:“身高170,长头发那个!”
他:“那个妹妹啊!相处挺好的,脾气也不错。”

在被询问的时候,某男是不是在脑海里进行了一个过滤?【身高170,并且留着长头发】的妹妹?

然后得到答案:是她啊(很像我前女友的那个)。

【插图:漂亮妹妹】

为什么会有“面向对象编程”的思想? 大家想一下,上面例子中某男的过滤,是不是类似编程中一个业务动作的处理?我首先收集到妹妹们的信息,存储起来。当我想去找到符合某些条件的妹妹,我就去各种条件筛选,拿到我想要的信息!

其实面向对象的“对象”,就是来源于生活,生活中每一个东西都可以抽象在编程中。

再举个例子,比方说:”水果“。提到水果,大家不乏想到:苹果、橘子、香蕉、榴莲…
如果有人问你水果是什么?你会怎么回答?你会指着苹果、橘子、香蕉、榴莲…然后告诉他这就是水果?

这么回答确实也没问题!但是,当你去水果店告诉老板帮你称两斤水果。老板肯定会问你要什么水果。因为水果只是一个抽象的统称,看不见摸不着。只有实例才是看得到的,比方说苹果、橘子、香蕉、榴莲。就是水果的一个多态体现。他们都可以被称作是水果,但你不能反过来说水果就是香蕉
【插图:多态画图】

如果能够像上面这样,结合一些现实生活去理解编程,是不是就好学一些了呢?

四、如何巩固学习

4.1、不懂一定要问

学习过程中不可能一下全部理解,全面掌握。除非你是天才,哈哈哈哈哈。

在这里插入图片描述

当遇到问题时,不要躲避怕解决问题。可以先网上查一下资料,尝试一下自己解决。实在解决不了的,可以考虑向盆友或老师请教。

我之前带过一个实习生,写代码时抛了个异常问我。我看了一眼,就是一个常见的异常。我问他有尝试过排查解决吗,他摇了摇头…

有好多类似的同学,只看到异常了,但是不知道如何去解决异常。

这种情况下,你可以把异常信息拿网上搜一下,然后debug去看代码中为什么会出现这种情况。如果还不能解决,至少在请教别人的时候你可以大致说出问题所在,表达出你尝试了什么方法解决,仍没有生效。相信这种情况下,被请教人肯定是乐于帮助你的。

在这里插入图片描述

4.2、多总结、多记录、多分享

总结和记录无疑是一个好习惯。之前大学辅导员让我给学弟学妹们做个分享,我也建议他们多总结、多记录、多分享。

在这里插入图片描述

4.2.1、树状体系内容总结

当你学习了某块知识之后,可以边回顾边画树状体系图。树状分散总结,方便回顾、清晰明了,又加深印象。

分享两个好用的内容体系总结软件。

xmind中文网:https://xmind.cn/xmind8-pro/
gitmind官网:https://gitmind.cn/mindmapping?apptype=aps-360

在这里插入图片描述
如果你在学习完某块东西之后,可以完整的梳理出一个树状图。那么恭喜你,这简直泰裤辣!

4.2.2、记录异常

记录一些自己遇到的问题,踩过的坑。可以详细到异常的原因和解决方法

当下次遇到同样的问题时,如果忘记了,还可以回顾一下。

不然到时候就会有一种:考试之前老师讲了某个题,但是你没认真听,等考试时考到了,你隐约记得之前是写在黑板右下角的那道,但就是不记得怎么解题的感觉…肠子都要悔青了…

在这里插入图片描述

4.2.3、记录新东西

好记性不如烂笔头,当你认真的学习了一个新东西之后,一定要记录下来。在记录的过程中,你会发现自己又深刻的学习了一遍。

4.2.4、记录工具

最后再分享几个好用的笔记软件吧,也有在线的。

【有道云笔记】:https://note.youdao.com/
【印象笔记】:https://www.yinxiang.com/
【语雀】:https://www.yuque.com/
【石墨文档】:https://shimo.im/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/606544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT常见的报错解决方法(全网最全解决方法)

因为最近在使用ChatGPT的过程中,时常会出现一些错误提示,为了方便自己快速解决问题,所以也搜集了一些其他博主的解决方法,以下是整理的内容。 目录 1、拒绝访问 2、Access denied错误 3、We have detected suspicious 错误 4…

leetcode_19_相同的树

bool isSameTree(struct TreeNode* p, struct TreeNode* q){if(pNULL && qNULL)return true;//其中一个为空if(pNULL || qNULL)return false;//都不为空,且首节点的值不相等if(p->val ! q->val)return false;//p和q的值相等,分别比较左子树和右子树re…

如何使用debugHunter发现隐藏调试参数和Web应用程序敏感信息

关于debugHunter debugHunter是一款针对Web应用程序隐藏调试参数和敏感信息的识别扫描工具,该工具本质上是一个Chrome扩展,可以帮助广大研究人员扫描目标Web应用程序/网站以查找调试参数,并在发现了包含修改响应的URL时发送通知。该扩展利用了二分查找算法来有效地确定导致…

《基于Linux物联网综合项目》常见问题汇总fae

关于该课程说明 1)本课程目标 通过web浏览器访问服务器,实现登录、注册、数据库操作、远程操控硬件、采集环境信息、远程监控、拍照、图片显示等功能。 将单片机、linux、html、摄像头、数据库等知识点融入到一个项目中。 2)什么群体适合学…

JVM 虚拟机栈介绍

一、虚拟机栈(VM Stack) 1.1)什么是虚拟机栈 虚拟机栈是用于描述java方法执行的内存模型。 每个java方法在执行时,会创建一个“栈帧(stack frame)”,栈帧的结构分为“局部变量表、操作数栈、动态…

JavaScript实现以数组方式输入数值,输出最大的数的代码

以下为实现以数组方式输入数值,输出最大的数的程序代码和运行截图 目录 前言 一、以数组方式输入数值,输出最大的数 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择,您可以在目录里进行快速查找…

基于html+css的图展示107

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

职业规划-论软件迭代变化和个人知识更新

职业规划-论软件迭代变化和个人知识更新 目录概述需求: 设计思路实现思路分析1.历程2.第一份工作3.后来4.BK毕业5.实习 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardnes…

冈萨雷斯DIP第6章知识点

6.1 彩色基础 区分不同颜色的特性? 区分不同颜色的特性通常是亮度、色调和饱和度。 亮度:亮度体现的是发光强度的消色概念(不包含颜色的概念)色调:表示被观察者感知的主导色,通常是混合光波中与主波长相关的…

深入理解设计原则之里氏替换原则(LSP)【软件架构设计】

系列文章目录 C高性能优化编程系列 深入理解软件架构设计系列 深入理解设计模式系列 高级C并发线程编程 LSP:里氏替换原则 系列文章目录1、里氏替换原则的定义和解读2、里氏替换原则可以用于哪些设计模式中?3、如何使用里氏替换原则来降低代码耦合度&a…

《微服务架构设计模式》第一章 逃离单体地狱

内容总结自《微服务架构设计模式》 逃离单体地狱 一、单体架构1、好处2、弊端 二、微服务架构1、定义2、好处3、弊端 三、模式的概念1、定义2、构成3、引申微服务 一、单体架构 1、好处 易于对应用程序进行大规模的更改:可以更改代码和数据库模式,然后…

华为OD机试真题 Java 实现【单词倒序】【2023Q1 100分】,附详细解题思路

一、题目描述 输入单行英文句子,里面包含英文字母,空格以及.? 三种标点符号,请将句子内每个单词进行倒序,并输出倒序后的语句。 二、输入描述 输入字符串S,S的长度1≤N≤100。 三、输出描述 输出逆序后的字符串 …

有道云笔记也挺速度,也搞了个AI助手,能抗衡Notion AI?

前言 小编平时做技术笔记的时候,经常使用到的软件就是有道云笔记,最近无意间发现,笔记编写的页面中,竟然集成了AI助手!网易有道可真是低调!毕竟最近AI圈大火,竟然没有蹭一波热度,直…

Spring Security 核心解读(二)自定义认证授权体系

自定义认证授权体系 概述自定义认证定义登录接口配置 Security 放行策略定义通用登录过滤器并将其配置到 Security 过滤器链上定义资源接口在 Security 授权设置中放行启动项目 结尾 概述 以前使用Spring Security 时,基本都是按部就班参考文档开发。 基本是从 Use…

【Python开发】FastAPI 06:处理错误

某些情况下,有必要向客户端(包括前端浏览器、其他应用程序、物联网设备等)返回错误提示,以便客户端能够了解错误的类型,从而做出应对。 目录 1 默认处理 1.1 错误介绍 1.2 使用 HTTPException 2 自定义处理 2.1 自…

论旅行之收获2

论旅行之收获2 概况站点第一站:北京市大兴区大兴机场基本情况吐槽小小趣事 第二站:云南省昆明长水机场云南省昆明市五华区基本概况经济分析 第三站:昆明站大理站云南省大理白族自治州大理市下关基本情况 第四站:云南省大理白族自治…

操作系统-进程和线程-处理机调度

目录 一、调度的概念 1.1调度的层次 1.1.1高级调度(作业调度) 1.1.2中级调度(内存调度) 1.1.3低级调度(进程调度) 1.2状态模型 1.3调度的时机 1.4调度方式 1.5进程的切换与过程 二、调度算法的评价指标 2.1CPU利用率 2.2吞吐量 2.3周转时间 2.4带权周转时间 2.5等…

Ansible基础6——文件模块、jinja2模板

文章目录 一、常用文件模块1.1 blockinfile模块1.2 file模块1.2.1 创建文件并赋予权限1.2.2 创建目录并赋予权限1.2.3 创建软连接1.2.4 删除文件或目录 1.3 fetch模块1.4 lineinfile模块1.5 stat模块1.6 synchronize模块 二、jinja2模板2.1 构建jinja2模板2.2 管理jinja2模板2.…

LVGL学习(1):中文字体的转换和汉字显示

在使用LVGL的过程中,我们难免需要显示汉字,所以这篇文章就来介绍一下如何转换中文汉字并成功显示到LVGL中。 文章目录 1 字体转换1.1 GUI Guider自动转换1.2 在线转换 2 字体的使用 1 字体转换 1.1 GUI Guider自动转换 打开GUI Guide,创建…

SAP-MM-批次删除归档操作

对于物料主数据的批次管理,一旦一个物料设置了批次管理,并已经产生了业务数据,但是发现当初业务主数据搞错了,此物料不需要在SAP系统进行批次管理,是否就无法取消其批次管理了呢,因为如果要取消此批次管理&…