未分类

java速成开始吧

java速成开始吧

绪论

一、能学到什么

思想,核心知识点,真题,综合项目,到底该怎么做,OA管理系统,阿里巴巴编码规范。提高性系统,内存结构,回收,tomcat服务器,虚拟机,数据结构

二、优势

  • 不墨迹
  • 分析讲解
  • 趣味性:学习就是听故事一样简单
  • 持续更新
  • 资料免费:作业 讲解 笔记 代码 视频 资料 安装包

三、君子之约

坚持:最重要的,知识点可以学得慢,但是一定要扎实

java基础概念

人机交互:
image-20241227195133435

image-20241227195320361

打开中端:

mac:command + 空格

win:win + r

常用mac命令行

目录操作

命令名 功能描述 使用举例
mkdir 创建一个目录 mkdir dirname
rmdir 删除一个目录 rmdir dirname
mvdir 移动或重命名一个目录 mvdir dir1 dir2
cd 改变当前目录 cd dirname
pwd 显示当前目录的路径名 pwd
ls 显示当前目录的内容 ls -la
dircmp 比较两个目录的内容 dircmp dir1 dir2
文件操作
命令名 功能描述 使用举例
cat 显示或连接文件 cat filename
pg 分页格式化显示文件内容 pg filename
more 分屏显示文件内容 more filename
od 显示非文本文件的内容 od -c filename
cp 复制文件或目录 cp file1 file2
rm 删除文件或目录 rm filename
mv 改变文件名或所在目录 mv file1 file2
ln 联接文件 ln -s file1 file2
find 使用匹配表达式查找文件 find . -name “*.c” -print
file 显示文件类型 file filename
open 使用默认的程序打开文件 open filename

选择操作

命令名 功能描述 使用举例
head 显示文件的最初几行 head -20 filename
tail 显示文件的最后几行 tail -15 filename
cut 显示文件每行中的某些域 cut -f1,7 -d: /etc/passwd
colrm 从标准输入中删除若干列 colrm 8 20 file2
paste 横向连接文件 paste file1 file2
diff 比较并显示两个文件的差异 diff file1 file2
sed 非交互方式流编辑器 sed “s/red/green/g” filename
grep 在文件中按模式查找 grep “^[a-zA-Z]” filename
awk 在文件中查找并处理模式 awk ‘{print $1 $1}’ filename
sort 排序或归并文件 sort -d -f -u file1
uniq 去掉文件中的重复行 uniq file1 file2
comm 显示两有序文件的公共和非公共行 comm file1 file2
wc 统计文件的字符数、词数和行数 wc filename
nl 给文件加上行号 nl file1 >file2

安全操作

命令名 功能描述 使用举例
passwd 修改用户密码 passwd
chmod 改变文件或目录的权限 chmod ug+x filename
umask 定义创建文件的权限掩码 umask 027
chown 改变文件或目录的属主 chown newowner filename
chgrp 改变文件或目录的所属组 chgrp staff filename
xlock 给终端上锁 xlock -remote

编程操作

命令名 功能描述 使用举例
make 维护可执行程序的最新版本 make
touch 更新文件的访问和修改时间 touch -m 05202400 filename
dbx 命令行界面调试工具 dbx a.out
xde 图形用户界面调试工具 xde a.out

进程操作

命令名 功能描述 使用举例
ps 显示进程当前状态 ps u
kill 终止进程 kill -9 30142
nice 改变待执行命令的优先级 nice cc -c *.c
renice 改变已运行进程的优先级 renice +20 32768

时间操作

命令名 功能描述 使用举例
date 显示系统的当前日期和时间 date
cal 显示日历 cal 8 1996
time 统计程序的执行时间 time a.out

网络与通信操作

命令名 功能描述 使用举例
telnet 远程登录 telnet hpc.sp.net.edu.cn
rlogin 远程登录 rlogin hostname -l username
rsh 在远程主机执行指定命令 rsh f01n03 date
ftp 在本地主机与远程主机之间传输文件 ftp ftp.sp.net.edu.cn
rcp 在本地主机与远程主机 之间复制文件 rcp file1 host1:file2
ping 给一个网络主机发送 回应请求 ping hpc.sp.net.edu.cn
mail 阅读和发送电子邮件 mail
write 给另一用户发送报文 write username pts/1
mesg 允许或拒绝接收报文 mesg n

Korn Shell 命令

命令名 功能描述 使用举例
history 列出最近执行过的 几条命令及编号 history
r 重复执行最近执行过的 某条命令 r -2
alias 给某个命令定义别名 alias del=rm -i
unalias 取消对某个别名的定义 unalias del

其它命令

命令名 功能描述 使用举例
uname 显示操作系统的有关信息 uname -a
clear 清除屏幕或窗口内容 clear
env 显示当前所有设置过的环境变量 env
who 列出当前登录的所有用户 who
whoami 显示当前正进行操作的用户名 whoami
tty 显示终端或伪终端的名称 tty
stty 显示或重置控制键定义 stty -a
du 查询磁盘使用情况 du -k subdir
df 显示文件系统的总空间和可用空间 df /tmp
w 显示当前系统活动的总信息 w

安装

url:https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html

截图:
image-20241227201134826

配置环境:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

1,下载

点击 官网 ,进入下载界面,

img

同意协议内容

img

找到对应的 Mac 版本,

img

2,安装

安装下载下来的文件,期间会要求输入一次电脑密码,然后自动安装完。

img

如果显示文件已经损坏,打开 终端 输入

sudo spctl --master-disable

表示可以安装非 app store 的软件。

3,配置环境变量

查看 JDK 在 Mac 系统上默认的安装位置,

img

打开 终端 app,输入

vim .bash_profile

img

回车以后,进入编辑,按键盘 i 键,进入编辑模式,输入

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home   
export PATH=$PATH:$JAVA_HOME/bin  
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

注意文件目录与上面的一致,(注意使用英文!)

img

输入完成以后,按键盘 esc 键,再输入 :wq ,表示保存编辑内容,并退出编辑页面。

4,确认配置正确

打开 终端 app,输入 java -version,出现如下画面,表示配置成功。

img

image-20241230182332903

5.运行第一个java文件

安装ij,这个比较简单不再赘述

image-20241230182636246

image-20241230182729852

线性结构

数组

  1. 数据结构

数据结构是数据项的结构化集合,其结构性表现在数据项之间的相互关系及作用,也可以理解为定义在数据项之间的某种逻辑次序。

1.1 数据结构分类

根据数据项之间逻辑次序的复杂程度,大致可以将数据结构划分为四类:集合、线性结构、树形结构、图形结构。可以使用数据项之间的前驱-后继关系来描述数据项之间的逻辑联系。

1.1.1 集合结构

image-20241230194326545

集合的数据项之间具有非常松散的逻辑关系,并不存在前驱-后继关系,所以数据结构的研究重点主要在后面三种结构上。

1.1.2 线性结构

image-20241230194444657

关于树形结构的数据项,除去根结点,前驱只有除去叶结点,后继对应多个,形成一种层一个,因次结构,树形结构也被称为半线性结构。

1.1.3树形结构

image-20241230200342879

关于树形结构的数据项,除去根结点,前驱只有一个,除去叶结点,后继对应多个,形成一种层次结构,树形结构也被称为半线性结构。

1.1.4 图形结构

image-20241230200724295

关于图形结构,数据项和其前驱后继之间的关系一对多的关系,即一个数据项对应多个前驱,多个后继,形成了网状结构,图形结构也被称为非线性结构。

1.2 总结

四种数据结构的学习难度也是依次递增的,往往低阶的数据结构可为高阶的数据结构提供研究思路和工具,比如可以用线性结构存储树形结构(用数组存储二叉树)。而图形结构的很多算法需要把图结构转换成树结构。本App为多种数据结构的算法提供了动态演示功能,尤其是树形结构和图形结构,为了不失一般性,也为线性结构提供了动态演示功能。

2.数组

2.1 数组定义

若集合S由n个元素组成,且各元素之间具有一个线性次序,则可将他们存放于起始于地址A、物理位置连续的一段存储空间,并统称作数组(array)。通常以 A 作为该数组的标识,数组A[]中的每一个元素都唯一对应于某一个下标编号。在绝大多数高级程序设计语言中,一般都是从0开始编号。在本 App 中凡是涉及到伪代码表示算法的,都从1开始编号。数组可表示为:A={a1,Qz,…,an}或者A[1,n]= {A[1],A[2],.,A[n]}

2.2 数组访问关于数组元素的访问,在逻辑上相邻的元素在物理存储上也是相邻的。数组元素可以被直接访问:从数组的起始位置A 出发,通过一次乘法运算和一次加法运算,便可得到元素的物理地址。假设数组每个元素占用个单位空间,则元素A i]对应的物理地址为:A+(i-1) Xs数组元素访问操作可在常数时间內完成,所以数组比其它线性结构拥有更高的元素访问效率。3. 数组接口在本 App 中每演示一个数据结构,都会使用伪代码来描述整个结构的 ADT,包括抽象方法的伪代码实现,并对关键的算法提供了动态演示功能。数组提供的接口如下:• SIZE()返回数组元素个数。• EMPTY()测试数组是否为空。• ORDERED()测试数组是否已经按照升序排列。• GET (pos)获取数组中特定位置的值。• SET (pos, e)设置数组中特定位置的值。• FIND (e)查找数组中是否包含特定元素,若包含则返回查找数组中是否包含特定元素,若包含则返回元素下标,否则返回 NotFond。BINARY - SEARCH (e)使用二叉搜索查找数组中是否包含特定元素,若包含则返回元素下标,否则返回 NotFond。在算法执行前要求数组元素已经按照升序排列,可以使用使用 SORT()算法对数组进行排序。REMOVE (pos)删除数组特定位置的元素。INSERT (pos, e)在数组特定位置插入元素。SORT()对数组元素进行排序,使用冒泡排序。排序有多种方法,其算法效率也不尽相同,这里使用了简单的冒泡排序,其它排序方法会在其它章节讨论。SHUFFLE()洗牌操作,打乱数组中元素的顺序。击伪代码部分的 info 按钮会弹出窗口显示相关节讨论。• SHUFFLE()洗牌操作,打乱数组中元素的顺序。点击伪代码部分的 info 按钮会弹出窗口显示相关算法的简介,如果该算法提供了动态演示功能,会在弹出窗口中有额外的按钮触发动态演示功能。4.C++实现数据结构和算法的学习是为了实践,最直接的应用便体现在程序代码中。本 App 实现了数据结构的C++代码。在C++代码中提供了更丰富的特性,使用 Class实现了 Array类。其中还包括内存管理,数组的扩、缩容,访问操作符重载,各类构造函数,以及对信息的封装和隐藏。C++代码不提供调试功能。同时为了方便App内代码的显示,C++类的声明和类方法实现放在了一起。并且 C++ 代码中涉及到编号索引的地方,均从0计数,这是与伪代码不同的地方。

链表

队列

树形结构

图结构

问题锦集

you can get it from me on my phone with your friend