- 博客(29)
- 收藏
- 关注
原创 search_everything项目测试
体验 Windows 功能体验包 1000.22000.856.0。版本 Windows 11 家庭中文版。安装日期 2022/8/30
2022-08-30 20:15:56
246
原创 优先级队列
文章目录二叉树的顺序存储堆的表示:堆的概念下标关系堆的调整建堆步骤:二叉树的顺序存储使用数组保存二叉树,即将二叉树用层序遍历的方式存入数组中这种方式只适合完全二叉树,因为非完全二叉树会有空间的浪费.这种方式的主要用法就是堆的表示:堆的表示:堆的概念堆逻辑上是一棵完全二叉树堆物理上是保存在数组中的满足任意节点的值都大于其子树节点的值,为最大堆反之,任意节点的值都小于其子树节点的值,最小堆堆的基本作用是快速找集合中的最值下标关系已知parent的下标索引左孩子(left)的下标
2022-08-29 02:14:19
252
原创 java七大排序算法,你学废了吗
排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。平时的上下文中,如果提到排序,通常指的是排升序(非降序)。通常意义上的排序,都是指的原地排序(in place sort)...
2022-08-29 02:11:50
243
原创 一文带你读懂HashMap和HashSet
文章目录集合类体系结构Set集合Map集合模型Map接口常见子类添加问题集合类体系结构Set集合Map集合数据结构:二分搜索树(BST)Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关时间复杂度:O(logn)模型纯key模型查询某个英文单词在不在字典中key-value模型统计每个单词出现的次数<单词,出现次数>Set就是只储存key,Map中储存key-value键值对.Set集合保存的元素不可重复,一般用于
2022-07-16 21:57:47
970
原创 看完这篇文章,我终于学会了哈希表~
文章目录HashMap是什么成员变量树化逻辑无参构造有参构造put和get方法put方法核心流程小结哈希算法Hash算法原理Hash算法扩容与初始化扩容方法resize()Set和Map集合的关系Set集合概念HashMap是什么HashMap的底层逻辑是数组+链表+红黑树(冲突严重的链表会被"树化",转为红黑树,以提高冲突严重的链表的查询效率)成员变量树化逻辑当一个桶中链表元素个数>=8并且哈希表中所有元素个数加起来超过64,此时会将此桶中链表结构转为红黑树结构(提高链表过长导致的
2022-07-02 21:58:12
165
原创 JDBC的前世今生
,java数据库连接,是一种用于执行SQL语句的Java API所有java操作关系型数据库,所有套路都是一样的,无论哪种数据库JPA , MyBatis 都是JDBC的封装.数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包MySQL提供了Java的驱动包要基于Java操作Oracle数据库则需要Oracle的数据库驱动包。数据库连接Connection获取数据源的两种方式Statement对象主要是将SQL语句发送到数据库中主要掌握两种执行SQL的方法:........
2022-07-02 20:45:34
95
原创 多线程那点事(三)
线程池最大的好处就是减少每次启动、销毁线程的损耗。描述线程池的核心类,最常用的一个子类–这个类的构造方法就是创建一个线程池的所有核心参数.为了简化线程池的使用:线程池的核心父接口`ExecutorService类的实现方法接收一个Runnable对象并执行线程.接口中方法定时器线程池单线程池的意义:只用创建和销毁一次线程核心:线程池的工作流程,线程池的各个参数........................
2022-06-28 18:33:35
176
原创 多线程那点事(二)
volatile可以保证共享变量的可见性,强制线程从主内存中读取变量值.相较于普通共享变量,volatile修饰的共享变量可以保证贡献变量的可见性volatile不保证原子性和方法由于线程之间是抢占式执行的, 因此线程之间执行的先后顺序难以预知.但是实际开发中有时候我们希望合理的协调多个线程之间的执行先后顺序.注意点和方法的使用必须搭配同步代码块使用.脱离使用会直接抛出异常,因为没有获取锁的对象 (通俗的说,你都没有对象获取锁,你让谁等待呢?)notify方法只是唤醒某一个等待线程.
2022-06-28 18:32:19
187
原创 多线程那点事(一)
线程并行执行问题:如果上锁后,那多线程不就变成单线程了吗?我们只是在两个线程修改同一变量的时候, 才会加锁,如果有其他线程只是读取这个变量,那是没有影响的.如果我们顺序执行每个线程,会不会打印main方法呢?答案:不会,要等3个线程全部执行完才会打印主方法.在IDEA终端中使用jconsole命令可以查看当前程序线程的情况覆写run方法(线程的核心工作任务方法)实现Runnable接口覆写run方法覆写Callable接口,覆写call方法使用线程池创建线程前两种方式启动线程都是通过Thre
2022-06-28 18:31:46
469
原创 什么是包装类?什么又是异常?
文章目录包装类什么是包装类包装类的产生包装类的种类包装类的使用自动拆装箱包装类什么是包装类包装类就是将8大基本类型进行封装到类之中.包装类的产生因为Object类只能接受引用类型,为了让它能够接收java中的所有类型,我们引入了包装类.基本类型在实际应用场景会产生误导.比如:int 的默认值为0,那如果我们要存的值就是0.包装类的种类包装类的使用public class PackageClassTest { public static void main(String[] arg
2022-05-10 09:11:56
235
原创 Object类和Comparable,clone接口
文章目录Object类Object类的好处equals()方法重写equlas()方法Object总结JDK内置常用接口Comparable接口重写compareTo()Cloneable接口重写clone()方法深浅拷贝Object类object类是所有类的父类,无需使用extends来定义,声明的每个类都默认继承Object类.Object类的好处Object是所有类的父类,可以接受任意类型,是参数最高统一化. Object obj1 = new Dog(); Object ob
2022-05-07 19:28:36
700
原创 String类
文章目录String类String类为什么要用final修饰?字符串的四种赋值方式什么是字面量?String中equal()注意点字符串常量池手工入池intern()方法字符串的不可变性为什么字符串数组无法修改如何修改字符串- 在运行时通过反射破坏value数组的封装(了解,不推荐)- 更换使用StringBuilder或StringBufferString和StringBuilder的转换StringBuilder中的方法拼接append()反转reverse()删除delete()插入insert()
2022-05-07 19:26:42
305
原创 Leecode题解---链表
文章目录27.移除元素82.删除排序链表中的重复元素206.反转链表27.移除元素解题思路:思路1: 看到这个题,首先我们想到是创建一个新数组,然后遍历数组,将值不是val的元素,插入到新数组,然后返回新数组,但是这个题目要求的空间复杂度是O(1),不能这样做,但是我们还是写下这个方法的题解 public int removeElement(int[] nums, int val) { if (nums.length == 0) { return 0;
2022-05-05 15:59:42
556
1
原创 学不会面向对象的最大问题,你猜是什么?
文章目录面对对象面向对象编程的三大属性:权限修饰符面对对象面向对象编程的三大属性:封装封装就是使用private将属性封装,当前属性只在当前类内部可见,对外部隐藏继承在同一个类中,定义多个方法名称相同,参数列表不同,与返回值无关的一组方法,这样的一组方法称为方法重载.优点: 继承可以复用代码,减少代码冗余.继承的规则:在使用继承时,类和类之间必须满足某种关系一个子类只能继承一个父类(单继承)子类继承父类,就继承了父类的所有方法和属性,继承又分为显式继承(public属性和
2022-04-30 21:30:12
452
原创 看完这个,别再说你不会链表
文章目录单链表单链表的定义:链表的插入:单链表单链表的定义:什么是链表?由若干个链表结点构成的对象就称为链表我们可以将单链表比作一列火车,单链表的每个节点为火车的一节车厢.火车的两节车厢之间使用挂钩相连,当挂钩脱落后,两节车厢之间就没有任何关系了.对于数组来说:逻辑上连续的元素在物理上也连续.链表:在逻辑上连续的数在物理上不一定连续.链表的每一个结点的可以分为数据和地址链表的后一个结点的地址保存在前一个结点内,最后一个结点的地址值为null,因为它的后面没有元素了,所以我们可
2022-04-20 12:23:23
103
原创 数据结构与算法---时间复杂度与空间复杂度
文章目录算法效率时间复杂度算法效率算法效率分析为两种:时间效率和空间效率.时间效率又称为时间复杂度,空间效率又称为空间复杂度.时间复杂度主要是衡量一个算法的运行速度,空间复杂度主要是衡量一个算法所需要的额外空间;在早期计算机发展时期,计算机容量很小,我们对空间复杂度很在乎,但随着计算机的发展,计算机的存储容量已经达到很高的程度.我们不必再关注一个算法的空间复杂度.时间复杂度...
2022-04-16 12:33:50
295
原创 学不会面向对象的最大问题,你猜是什么?
静态变量在定义一个类时,只是在描述某类事物的特征和行为,并没有产生具体的数据,只有通过new关键字实例对象后,系统才会为某个对象分配空间,存储各自的数据.有时候,开发人员为了某些数据在 内存中只存在一份,例如:一个学校的学生他们都共享同一个学校名称,这时候就不必在每个对象所占的内存空间中都声明一个变量来表示学校名称,只需要在类的外部声明一个变量来让所有对象共享.看一段程序:public class Test1 { public static void main(String[] args)
2022-04-14 15:47:25
431
原创 最简单的方法解决递归问题
递归什么是递归?一个程序在执行过程中再次调用自身的操作,称为方法递归.递归能够实现的核心原因?当在程序中调用另一个函数时,程序会暂缓执行,直到程序调用结束,当前程序猜会执行.什么情况下可以使用递归?大问题可以拆分成若干个子问题的解.拆分后打小问题除了数据规模和原问题不同之外,解决思路完全相同.递归有终止条件,不会无限制的拆分下去.如何写出递归?经典递归问题斐波那契数列(不死神兔)我们来解决这个问题,首先第一个月:2只兔子第二个月:2只兔子第三个月:4只兔子(生了一对兔
2022-04-11 22:02:44
436
原创 java基础-数组
文章目录数组什么是数组?什么是数据结构?数组的初始化动态初始化静态初始化如何访问数组中的元素?数组什么是数组?数组就是本质上能够让我们批量创建许多相同类型的数据.什么是数据结构?将一堆数据保存起来的结构就是数据结构.数据结构关心的是如何高效的读取数据.数组的初始化动态初始化//数据类型[] 数组名 = new int[nums] nums代表当前数组中元素的个数int[] arr = new int[6];//数据类型[] 数组名 = new int[]{可初始化的数据}int
2022-04-11 20:53:10
587
原创 java中关于程序运行时内存中情况
内存—栈堆在java中,JVM将内存分为6个区域,这里我们只看栈和堆栈:方法的调用时在栈区进行的,每个方法的调用都是一个栈帧入栈出栈的过程.栈的特点是:先进后出堆:JVM的另一块区域称为"堆区",所有对象都在堆区存储,包括数组的对象,类的实例化对象,接口对象等.下面我们来看一段程序:public class Test1 { public static void main(String[] args) { int[] arr = {1, 2, 3}; pr
2022-04-11 20:14:53
137
原创 关于java中int类型的取值范围等问题
java中int类型取值范围问题java中int的类型占4个字节,与操作系统无关,要弄明白int的取值范围问题.首先,我们来看一下byte的取值范围byte 大小一个字节.如:1111 1111 为一个字节但是整型是分正负的 ,所以在计算机中我们用最高位来表示符号位,0表示正数,1表示负数byte类型中最大的数 : 0111 1111 表示27−1=1272^7-1=12727−1=127那么最小的数应该是1111 1111,表示-127了,所以范围应该是-127~127了,但是这和我们常见的
2022-04-06 17:40:02
11535
1
原创 进制之间的转换
如何实现十进制到其他进制之间的转换十进制到二进制如将20转换成二进制:最简单的方法就是除2取余最后得到1010020=1∗24+0∗23+1∗22+0∗21+0∗2020=1*2^4+0*2^3+1*2^2+0*2^1+0*2^020=1∗24+0∗23+1∗22+0∗21+0∗20我们已经知道每个比特位代表的数是多少?现在计算43的二进制43=32+8+2+143=32+8+2+143=32+8+2+1所以我们可以直接写出它的二进制101011101011101011十
2022-04-05 20:49:35
337
原创 java数据类型
java入门java八大基本数据类型和引用类型数据类型之间的转换无关类型之间不能进行数据转换,例如布尔型和整型之间不能转换,在C语言中可以用1表示真,0表示假,但是在java中,假为false真为true,不能相互之间转换.同种类型之间可以进行相互转换,范围小的转为范围大的可以自动转换,反之需要强制类型转换.在赋值时:对于小于4字节的数值来说,赋值时会自动转为int类型byte a = 10;byte b = 20;//这里的a和b都是int型的a=100;//这里的a默认为int型
2022-04-04 18:21:52
296
原创 java入门
JDK和JREjre(java runtime enviroment)全称java运行环境,java的程序必须要在jre这个环境中运行类似手机上面的各种app可以在手机的操作系统中运行JDK:(Java Development kit) java开发工具.包含jre,以及各种java开发工具包java程序运行步骤通过javac 将*.java(Test.java,源代码)编译为字节码文件*.class文件(JVM虚拟机阅读的文件)将字节码文件(*.class文件)通过JVM虚拟机编
2022-04-01 00:08:09
523
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人