- 博客(36)
- 收藏
- 关注
原创 【数据结构】Map和Set(Java实现)
Map/Set 及实际实现类 HashMap/TreeMap/HashSet/TreeSet 的使用HashMap 和 HashSet 背后的数据结构哈希表的原理和简单实现
2024-08-11 22:36:56
1384
16
原创 【多线程基础】创建线程的五种方式、实现多线程数组求和
多线程代码,线程,本身是操作系统提供的,操作系统提供了 API 让我们操作线程,JVM 就对 操作系统 API 进行了封装线程,这里,提供了 Thread类,表示线程。
2024-08-11 21:17:12
690
3
原创 【多线程基础】进程和线程的区别和联系(重要)
前面我们了解过进程的概念:一个程序运行起来,就会对应一个进程,进程也是系统分配资源的基本单位。【举个例子】
2024-08-10 14:03:57
565
17
原创 【多线程基础】指令、进程调度、了解计算机是如何进行工作的
计算机不仅仅是指电脑,日常生活中用的 手机、平板、电视、路由器等…都可以叫做计算机现在的计算机,大体分为几个大类:1)终端设备:(台式机、笔记本、手机、ipad…)平时用户使用的2)服务器:日常普通用户见不到的。以后作为开发人员,要经常打交道。3)嵌入式设备:主题功能不是用来“计算”,而是针对一些特殊的场景,量身定做的“专用计算机”。以上设备:遵循“冯诺依曼体系”计算机使用二进制表示存储数据)(大的基调就是冯大佬定下来的)一个程序,运行起来/跑起来,在操作系统中,就会出现一个对应的进程。
2024-08-10 11:12:53
1196
7
原创 【数据结构】二叉搜索树(Java + 链表实现)
Map接口是独立的实现Iterable接口的集合都是可以使用 for - Each 语句进行打印的搜索性能会非常高。
2024-08-07 17:24:39
870
20
原创 【数据结构】排序 —— 归并排序(mergeSort)、计数排序、基数排序
海量数据的排序问题外部排序:排序过程需要在磁盘等外部存储进行的排序 前提:内存只有 1G,需要排序的数据有 100G因为内存中因为无法把所有数据全部放下,所以需要外部排序,而归并排序是最常用的外部排序先把文件切分成 200 份,每个 512 M分别对 512 M 排序,因为内存已经可以放的下,所以任意排序方式都可以进行 2路归并,同时对 200 份有序文件做归并过程,最终结果就有序了。
2024-08-06 23:11:26
851
9
原创 【数据结构】排序 —— 快速排序(quickSort)
快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有 元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫快速排序时间复杂度: O(N*logN)空间复杂度: O(logN)稳定性:不稳定。
2024-08-05 23:38:47
845
6
原创 【leetcode】根据二叉树创建字符串、二叉树的前中后遍历(非递归链表实现二叉树)
递归函数我们也可以用迭代的方式实现,两种方式是等价的,区别在于递归的时候隐式地维护了一个栈,而我们在迭代的时候需要显式地将这个栈模拟出来,其他都相同.
2024-08-04 23:45:02
1363
原创 【leetcode】平衡二叉树、对称二叉树、二叉树的层序遍历(广度优先遍历)(详解)
在遍历每个结点进行左右子树求高度的时候,就进行判断,能够优化时间复杂度该题有递归的思想,一定要结合图形来解决层序遍历就是广度优先遍历。
2024-08-04 22:17:29
1207
原创 【leetcode】相同的树、另一棵树的子树、翻转二叉树(利用深度优先遍历)
一定要结合图像来写题,递归有点绕,将大问题划分成一个一个相同的小问题来求解,一定要注意判断条件。
2024-08-03 23:50:07
846
原创 【数据结构】二叉树基本操作(孩子兄弟表示法 + Java详解 + 原码)
学习二叉树一定要结合图形,要掌握递归的思想,就是将一个大问题划分成相同的小问题二叉树部分要掌握前序、中序、后序、层序四种遍历方式,因为好多题就是基于这四种遍历方式的变种例如:求最大宽度求这棵树的左视图求这棵树的右视图。
2024-08-02 22:47:57
785
5
原创 【数据结构】树、二叉树(基本概念)
在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。由于刚开始对二叉树结构掌握还不够深入,为了降低学习成本,此处手动快速创建一棵简单的二叉树,快速进入二叉树操作学习,等 二叉树结构了解的差不多时,反过头再来研究二叉树真正的创建方式。从概念中可以看出,二叉树定义是递归式的,因此后序基本操作中基本都是按照该概念实现的。
2024-07-31 09:44:35
583
2
原创 【数据结构】队列(链表实现 + 力扣 + 详解 + 数组实现循环队列 )
队列实现及使用(包括循环队列、用栈实现队列、用队列实现栈、了解双端队列)
2024-07-29 23:44:22
973
2
原创 【LeetCode】栈 - 20.有效的括号、150.逆波兰表达式求值、155.最小栈、栈的压入、弹出序列
栈、虚拟机栈、栈帧有什么区别呢?栈 ---- 数据结构虚拟机栈 ---- JVM内存栈帧 ---- 调用方法的时候开辟的内存
2024-07-27 23:42:18
832
3
原创 【数据结构】栈(基于数组、链表实现 + GIF图解 + 原码)
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO( Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。栈顶栈底: 这个描述是偏向于逻辑上的内容,因为大家知道数组在末尾插入删除更容易,而单链表通常在头插入删除更容易。所以数组可以用末尾做栈顶,而链表可以头做栈顶。LinkedKist 就可以当做栈来使用。
2024-07-26 23:06:28
640
6
原创 【数据结构】链表之LinkedList(无头双链表实现 + 详解 + 原码)
LinkedList是无头双向非循环链表学习链表的知识一定要 结合图,多画图,才能深刻理解LinkedList官方文档LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节 点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。在集合框架中, LinkedList也实现了List接口。
2024-07-26 11:03:14
906
6
原创 【数据结构】链表(单链表实现 + 详解 + 原码)
链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。
2024-07-23 23:51:10
903
原创 【数据结构】Java -- 顺序表(详解)
在集合框架中,List是一个接口,继承自Collection。List方法解释尾插 e将 e 插入到 index 位置尾插 c 中的元素删除 index 位置元素删除遇到的第一个 o获取下标 index 位置元素将下标 index 位置元素设置为 element清空判断 o 是否在线性表中返回第一个 o 所在下标返回最后一个 o 的下标截取部分 list在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:【说明】ArrayList是以泛型方式。
2024-07-21 23:31:42
1474
原创 【数据结构】包装类、初识泛型
只要会用就行一般的类和方法,只能使用具体的类型: 要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的 代码,这种刻板的限制对代码的束缚就会很大。----- 来源《Java编程思想》对泛型的介绍。泛型是在JDK1.5引入的新的语法,通俗讲,泛型:就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。泛型在 c++ 里面是模版方法限定符 返回值类型 方法名称(形参列表) { ... }
2024-07-21 13:24:34
1168
原创 【数据结构】初识集合框架
数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的 集合。数据结构 + 算法数据结构与算法是相辅相成的数据结构是为算法提供支持的而好的算法是一定依赖于好的数据结构算法就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单 来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。
2024-07-20 23:59:45
700
2
原创 【Socket套接字编程】(实现TCP和UDP的通信)
⽹络编程 ,指⽹络上的主机 ,通过不同的进程 ,以编程的⽅式实现⽹络通信(或称为⽹络数据传输)。当然 ,我们只要满⾜进程不同就⾏;所以即便是同⼀个主机 ,只要是不同进程 ,基于⽹络来传输数 据 ,也属于⽹络编程。特殊的 ,对于开发来说 ,在条件有限的情况下 ,⼀般也都是在⼀个主机中运⾏多个进程来完成⽹络编 程。但是 ,我们⼀定要明确 ,我们的⽬的是提供⽹络上不同主机 ,基于⽹络来传输数据资源:进程A:编程来获取⽹络资源进程B:编程来提供⽹络资源。
2024-07-17 23:57:22
742
原创 【JavaEE】-- 网络编程基础概念(详解)
协议分层,也就是上述类似的效果,把很多协议,按照功能分成不同的层级,每个层级都有对应的主线任务(目标/要解决的问题)上层协议会调用下层协议的功能,下层协议会给上层协议提供服务(不能够“越级调用)
2024-07-17 14:06:40
1184
原创 File 类的用法和 InputStream, OutputStream 的用法(详解)
只是⼀个抽象类,要使⽤还需要具体的实现类。关于 InputStream 的实现类有很多 ,基本可以认为不同的输⼊设备都可以对应⼀个 InputStream 类 ,我们现在只关⼼从⽂件中读取 ,所以使⽤文件字节输入流,可以读取任何文件修饰符及返回值类型⽅法签名说明intread()读取⼀个字节的数据 ,返回 -1 代表 已经完全读完了int最多读取 b.length 字节的数据到 b 中 ,返回实际读到的数量;-1 代表 以及读完了int。
2024-07-16 11:17:30
988
原创 JavaEE初阶 - IO、存储、硬盘、文件系统相关常识 (二)
IO 即,输入和输出。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。IO 操作通常涉及读取和写入数据。在计算机系统中,IO 操作可能涉及内存与外部设备之间的数据交换,也可能涉及 CPU 与外部设备之间的数据交换。IO 可分为同步 IO 和异步 IO。同步 IO 在操作完成前会阻塞执行线程,而异步 IO 允许执行线程在操作完成前继续执行其他任务。
2024-07-15 11:06:38
724
原创 【MySQL索引事务】
可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。假如在执行以上第一句SQL时,出现网络错误,或是数据库挂掉了,阿里巴巴的账户会减少2000,但是。反之,如果非条件查询列,或经常做插入、修改操作,或磁盘空间不足时,不考虑创建索引。解决方案:使用事务来控制,保证以上两句SQL要么全部执行成功,要么全部执行失败。事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。满足以上条件时,考虑对表中的这些字段创建索引,以提高查询效率。在不同的环境中,都可以有事务。
2024-03-28 16:40:28
1519
1
原创 【MySQL表的增删改查】(进阶二)
在实际应用中,为了合并多个select的执行结果,可以使用集合操作符 union,union all。使用UNION和UNION ALL时,前后查询的结果集中,字段需要一致。需要满足:使用 GROUP BY 进行分组查询时,SELECT 指定的字段必须是“分组依据字段”,其他字段若想出现在SELECT 中则必须包含在聚合函数中。GROUP BY 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 WHERE 语句,而需要用HAVING。实际开发中往往数据来自不同的表,所以需要多表联合查询。
2024-03-27 13:51:35
590
1
原创 【MySQL表的增删改查】(进阶一)
SQL语言有40多年的历史,从它被应用至今几乎无处不在。我们消费的每一笔支付记录,收集的每一条用户信息,,发出去的每一条消息,都会使用数据库或与其相关的产品来储存,而操纵数据库的语言正是SQL!!!
2024-03-26 19:36:19
1547
2
原创 【MySQL表的增删改查】(基础)
select 中所有的用法,都不会影响数据库服务器硬盘上储存的数据!(只是查询,是读操作)decimal(3,1)限制的是硬盘上的数据,而不是临时表上的数据。delete 是删除表内容,删完之后,表的内容是空的,表本身是存在的。此处查询到的结果,是一个“临时表”,不是硬盘上保存的表的本体!针对查询结果,进行去重,存在重复数据,就会把重复的行合并为一行。如果有多个列一起去重,必须多行的多列都相同的时候,才算重复。临时表能够尽可能的保证你最终的计算结果是正确的。select 的查询结果,默认是“无序”的。
2024-03-24 20:40:22
717
3
原创 【MySQL数据库基础】
1.数据库名不能和SQL中的 “关键字” (key word) 重复,但是mysql 也给我们留了一个口子,如果实在是想使用关键字作为数据库名,可以使用反引号,把这个名字引起来。3、mediumtext 要想存储更长的文本,可以考虑使用这个类型,但是还是要慎重使用,针对长文本进行增删改查的时候,效率会比较低!UTF-8(变长编码,对于一个汉字来说一般是三个字节,它不仅仅能表示汉字,还能表示世界上的各种语言 )接下来的操作都是针对这个被选中的数据库进行的 在存在多个数据库的情况下,这样的设定是非常有用的。
2024-03-22 21:10:31
775
5
原创 【数据类型与变量】Java
在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩分数、数学函数的计算结果等,不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节。整型默认为int型,浮点型默认为double。整形和浮点型都是带有符号的。
2024-01-20 17:31:04
815
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人