java学习笔记
文章平均质量分 81
java学习过程随记
na小子叫坚强
放弃不难,但坚持很酷!
展开
-
二叉树的原理及前中后序、层序遍历的实现
概览1.二叉树1.1 概念1.2 二叉树的基本形态1.3 两种特殊的二叉树1.4 二叉树的性质1.5 二叉树的存储1.6 二叉树的基本操作1.7 二叉树的层序遍历1.8 前中后序的非递归实现1.9 小结1.二叉树1.1 概念1.2 二叉树的基本形态1.3 两种特殊的二叉树1.4 二叉树的性质1.5 二叉树的存储1.6 二叉树的基本操作1.7 二叉树的层序遍历1.8 前中后序的非递归实现1.9 小结...原创 2021-07-29 11:27:08 · 700 阅读 · 0 评论 -
浅谈Java集合框架之栈和队列的使用及实现
概览1.队列(Queue)1.1 概念1.队列(Queue)1.1 概念队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 的特性。入队列:进行插入操作的一端称为队尾(Tail/Rear)出队列:进行删除操作的一端称为队头(Head/Front)...原创 2021-07-28 07:04:01 · 327 阅读 · 0 评论 -
浅谈Java集合框架之List、ArrayList、LinkedList的使用及实现
概览1.List2. ArrayList2.1 仿写真实的List接口2.2 仿写真实的ArrayList2.3 仿写真实的Iterator接口(迭代器)2.4 仿写真实的Iterable接口2.5 Iterator的实现类ArrayListIterator2.6 泛型的ArrayList3. LinkedList3.1 节点类(Node)3.2 仿写真实的LinkedList3.3 Iterator的实现类LinkedListIterator4. ArrayList 和LinkedList的区别1.Li原创 2021-07-26 23:25:44 · 202 阅读 · 2 评论 -
浅谈Java面向对象编程之多态、继承、抽象类、接口
1. 包包 (package) 是组织类的一种方式。使用包的主要目的是保证类的唯一性。1.1 导入包中的类java中提供了很多现成的类供我们使用public class Test { public static void main(String[] args) { java.util.Date date = new java.util.Date(); // 得到一个毫秒级别的时间戳 System.out.println(date.getT原创 2021-07-24 22:15:25 · 1393 阅读 · 10 评论 -
网络基础(2):传输层UDP协议、TCP协议(三次握手,四次挥手)、网络层IP协议
概览1. UDP协议1.1 特点1.2 UDP协议端格式1.3 面向数据报1. UDP协议1.1 特点无连接: 知道对端的IP和端口号就直接进行传输, 不需要建立连接不可靠: 没有确认机制, 没有重传机制; 如果因为网络故障该段无法发到对方, UDP协议层也不会给应用层返回任何错误信息面向数据报: 不能够灵活的控制读写数据的次数和数量,只能一次接收(系统级别的操作:调用系统函数)没有发送缓冲区(发了消息就不管),有接收缓冲区数据最大64k1.2 UDP协议端格式1.3 面向数据报—原创 2021-05-23 17:18:02 · 313 阅读 · 1 评论 -
快速排序:Hoare法、挖坑法、前后指针法
1.1 原理从待排序区间选择一个数,作为基准值(pivot);Partition: 遍历整个待排序区间,将比基准值小的(可以包含相等的)放到基准值的左边,将比基准值大的(可以包含相等的)放到基准值的右边;采用分治思想,对左右两个小区间按照同样的方式处理,直到小区间的长度等于1,代表已经有序,或者小区间的长度等于0,代表没有数据1.2 快速排序图示1.3 代码示例(原理-partition)1.3.1 Hoare法 //hoare版本 public int partitionHo原创 2021-05-19 19:04:51 · 262 阅读 · 1 评论 -
归并排序
1. 1 原理归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。1.2 归并原理图示(合并两个有序数组)1.3 示例代码1.3.1 合并两个有序数组 public void merge(int[] array,int lowIndex,int midInd原创 2021-05-19 17:47:14 · 64 阅读 · 0 评论 -
堆排序
1.1原理基本原理也是选择排序,只是不在使用遍历的方式查找无序区间的最大的数,而是通过堆来选择无序区间的最大的数。注意: 排升序要建大堆;排降序要建小堆。1.2.堆排序图示1.3 示例代码1.3.1 利用向下调整方法创建大堆: public void swap(int[] array,int index1,int index2){ int tmp = array[index1]; array[index1] = array[index2];原创 2021-05-19 16:26:09 · 72 阅读 · 0 评论 -
网络基础(1):网络协议初识、TCP/IP五层模型、数据包封装和分用、认识IP和MAC地址、网络传输基本流程
概览1. 网络发展2. 网络协议初识2. 1 OSI七层模型2.2 TCP/IP五层模型(或四层模型:不算物理层)1. 网络发展独立模式: 计算机之间相互独立网络互联: 多台计算机连接在一起, 完成数据共享网络互联:使用交换机局域网:通过交换机和路由器连接在一起广域网:组网方式:公网上,网络节点组成,每一个节点,可以是:所谓局域网和广域网只是一个相对概念,广域网也可以看做一个比较大的局域网。2. 网络协议初识协议是一种约定,计算机之间的传输媒介是光信号和电信号,通原创 2021-05-18 21:03:09 · 1407 阅读 · 13 评论 -
Java多线程基础:线程创建、线程控制、线程安全、线程间通信、单例模式、阻塞式队列、线程池
多线程1.初识多线程1.1 概念1.2 多线程使用场景1.3 jconsole1.4 线程的状态1.4.1 线程所有状态1.4.2 状态转移图2. 线程控制2.1 创建线程2.1.1 使用Thread类重写run方法创建2.1.2 实现Runnable接口2.1.3 其他变形2.1.4 解读start() 和 run()2.2 Thread类属性及常用方法2.2.1 Thread类常见构造方法2.2.2 Thread类常见属性2.2.3 Thread类的常用方法介绍静态方法:作用在当前代码行即当前线程实例方原创 2021-05-15 17:11:09 · 148 阅读 · 2 评论 -
Java基础IO
1. 基础IO1.1 理解IOI/O包括:BIO:同步阻塞的IONIO:同步非阻塞IOAIO:异步非阻塞IO1.2 IO读写方式IO本质就是对数据的读写操作本地文件IO网络IO1.3 IO的特性本质上属于数据传输涉及两个设备间数据的传输方向,一般来说,只关注自己程序的一方数据流:io数据包裹另外一个io数据包裹时,可以设置格式,编码IO读取,读取部分数据以后,这部分数据在之前的IO流就消失,也就是读取操作只操作一次java进程的IO操作,对进原创 2021-04-27 21:02:02 · 121 阅读 · 1 评论 -
IDEA中通用简单设置以及数据库、Maven、Web的基本配置
1.IDEA管理项目配置2.IDEA基本配置3.IDEA常用快捷键/常用操作4.数据库GUI客户端配置5.配置Maven本地仓库6.Web项目配置原创 2021-02-20 22:28:20 · 648 阅读 · 2 评论 -
Java异常处理机制
1. 异常的背景 防御性编程:LBYL风格的代码 EAFP风格的代码2.Java异常体系3.异常的基本用法代码示例若干关于异常的处理方式关于“调用栈”异常处理流程异常说明关于finally 的注意事项4.自定义异常类原创 2021-02-01 01:01:22 · 169 阅读 · 1 评论 -
Java线性表之无头非循环单向和双向链表的实现
1.1链表的概念及结构1.2链表的简单实现 1.2.1无头单向非循环链表的实现 (1)显示单链表(2)头插法(3)尾插法 (4)获取单链表的长度(5)任意位置插入,第一个数据节点为0号下标 (6)查找是否包含关键字key是否在单恋表中 (7)删除第一次出现关键字为key的节点(8)删除所有值为key的节点(9)尾删法(10)清空单链表 1.2.2 无头双向非循环链表的实现原创 2021-01-29 01:05:52 · 1297 阅读 · 2 评论 -
Java线性表之顺序表的实现
线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...顺序表1.1概念及结构1.2方法实现 类中方法如下://打印顺序表//尾插//尾删//在pos位置处插入元素//查找某一个元素对应的位置//获取pos 位置的元素//判定是否包含某个元素//给pos 位置的元素设为valueI//删除第一次出现的关键字key//获取顺序表长度//清空顺序表1.3顺序表的问题原创 2021-01-21 21:36:59 · 280 阅读 · 0 评论 -
详谈 Java String 类
目录:1.字符串的构造 2. 字符串的比较 3. 字符串常量池 4.字符串不可变 5. String 类常用方法: 5.1 字符与字符串 5.2 字节与字符串 5.3 字符串比较 5.4 字符串查找 5.5 字符串替换 5.6 字符串拆分 5.7 字符串截取 5.8 其他操作方法 6.小结原创 2020-11-28 19:13:45 · 255 阅读 · 0 评论 -
C++泛型编程之函数模板和类模板
1.泛型编程在实际编程中,实现一个交换函数或者有加减乘除功能的函数,往往只是涉及到单个类型的交换或运算,当然使用函数重载固然可以实现,但是存在以下几个不好的地方:重载的的函数仅仅是类型不同,代码的复用率比较低,只要有新类型出现时,就必须增加对应的函数。代码的可维护性比较低,一个出错可能所有的重载均会出错。泛型编程:编写与类型无关的函数,是代码复用的一种手段。模板是泛型编程的基础。2.函数模板2.1函数模板概念函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型原创 2020-11-05 19:19:00 · 236 阅读 · 0 评论 -
初识Java类和对象
目录:1. 类与对象的初步认知 2.类和类的实例化 3. 类的成员:3.1字段/属性/成员变量 3.2 构造方法(重要) :3.2.1基本语法 3.2.2 this 关键字 4.static 关键字 :4.1修饰属性 4.2 修饰方法 4.3 小结 5.封装(重要):5.1 private 实现封装 5.2 getter 和 setter 方法 6.代码块:6.1什么是代码块 6.2 普通代码块 6.3构造代码块 6.4 静态代码块 7.序列化和匿名对象:7.1 toString方法 7.2匿名对象原创 2020-10-20 00:33:45 · 1192 阅读 · 7 评论 -
Java中数组的定义和使用
目录:1.数组基本用法 :1.1什么是数组 1.2 创建数组 1.3数组的使用 2.数组作为方法的参数:2.1基本用法 2.2理解引用类型(重点) 2.3 认识null 2.4 初识 JVM 内存区域划分(重点) 3.数组作为方法的返回值 4.数组常见操作:4.1 数组转字符串 4.2数组拷贝 4.3检查数组有序性 4.4 数组排序(冒泡) 4.5 数组数字排列 5. 二维数组原创 2020-10-14 13:32:10 · 2803 阅读 · 9 评论 -
Java中方法使用详谈
目录:1. 方法的基本用法 :1.1什么是方法 1.2.方法定义语法 1.3方法调用的执行过程 1.4 实参和形参的关系(重要) 1.5 没有返回值的方法 。2.方法的重载 : 2.1重载要解决的问题 2.2 使用重载 2.3重载的规则 .3.方法递归:3.1递归的概念 3.2递归执行过程分析 3.3递归练习 3.4小结原创 2020-10-08 22:32:34 · 466 阅读 · 0 评论 -
Java程序逻辑控制详谈
目录:1.1 顺序结构 1.2 分支结构:1.2.1 if 语句 1.2.2 switch 语句 1.3 循环结构:1.3.1 while 循环 1.3.2 break 1.3.3 continue 1.3.4 for 循环 1.3.5 do while 循环 1.4 输入输出:1.4.1 输出到控制台 1.4.2 从键盘输入原创 2020-10-07 14:14:13 · 1432 阅读 · 3 评论 -
Java运算符详谈
目录: 1.算术运算符 2.关系运算符 3.逻辑运算符 4.位运算符 5.移位运算 6.条件运算符 7.运算符的优先级原创 2020-10-04 23:47:26 · 883 阅读 · 3 评论 -
JAVA数据类型详谈
目录:1.整型变量2.长整型变量 3.双精度浮点型变量 4.单精度浮点型变量 5.字符类型变量 6.字节类型变量 7.短整型变量 8.布尔类型变量 9.字符串类型变量 10.变量作用域 11.变量的命名规则 12.常量 13.类型转换 14.数值提 15.int 和 String 之间相互转换原创 2020-10-03 17:11:34 · 566 阅读 · 3 评论 -
C++类和对象(上)
目录:1初步认识2.类的定义3.类的访问限定符4.类的实例化5.类对象的大小6.this 指针原创 2020-10-02 15:40:27 · 311 阅读 · 0 评论 -
C++入门知识点详谈
目录1. C++关键字2. 命名空间3. C++输入&输出4. 缺省参数5. 函数重载6. 引用7. 内联函数8. auto关键字(C++11)9. 基于范围的for循环(C++11)10. 指针空值---nullptr(C++11)1.C++关键字(C++98)C++总计63个关键字,C语言32个关键字以下为C++中关键字:2.命名空间在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用原创 2020-09-21 21:41:07 · 481 阅读 · 1 评论