- 博客(45)
- 收藏
- 关注
原创 JAVA-wait()和notify()
大家应该都知道,线程之间是抢占式随机执行的,但是我们并不希望这样。因为这样非常混乱,并不好去预估程序的执行结果。我们甚至希望,线程之间能够配合执行,那么我们就可以使用wait()和notify()来做到。
2025-04-02 11:14:28
623
2
原创 JAVA-堆 和 堆排序
之前在队列的时候讲过,队列是先进先出的,是根据你的插入顺序来确定优先级的。而有时候我们希望可以通过元素内容来确定优先级。比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话;初中那会班主任排座位时可能会让成绩好的同学先挑座位。在这种情况下,。这种数据结构就是堆总是一棵完全二叉树。堆中某个节点的值总是不大于或不小于其父节点的值。。。
2025-04-01 17:32:58
748
1
原创 JAVA-线程不安全的原因?如何解决?
本章文章描述并解决了线程不安全的原因:1.线程是随机调度的 2.多个线程同时修改同一变量 3.修改的操作不是原子的 4.可见性问题 5. 指令重排序问题
2025-03-24 22:21:01
1084
2
原创 JAVA-多线程join()等待一个线程
我们知道线程是随机调度执行的,但是有时候我们需要另一个任务完成了,我们才能继续,这个时候我们就可以使用join去等待线程结束。谁调用join谁就等,在主线程中调用 t.join() ,就是main线程等待 “t” 线程结束。第三种了解就可以了,普通的计算机很难精确到纳秒,精确到毫秒就不错了。这里着重讲一下第三种,只要时间到就继续执行,不会等到 t 线程结束。例如:别人向我转100万,需要转完了我再看是否接收到了100万。任意线程都可以进行等待,不是只有主线程可以去等待别的线程。
2025-03-19 17:14:53
461
3
原创 JAVA-Thread类实现多线程
如果某个线程在执行过程中,能够阻止进程结束,此时这个线程就是“前台线程”,只要当进程中的所有前台线程都结束那么这个进程才可以结束。try {});t1.start();// 是否为后台线程如果这个线程执行过程中,不能阻止进程结束(虽然线程在执行着,但是进程要结束了,此时这个线程也会随之被带走),这样的线程就是“后台线程”。try {});//设置线程为后台线程,需要在start之前设置t1.start();
2025-03-13 15:22:16
1044
3
原创 什么是进程线程
进程就是正在执行的程序,以下就是我电脑上正在执行的进程。进程是系统“资源分配”的基本单位由于系统上有多个进程,需要管理起来,对Linux操作系统来说,使用称为"PCB"这样的结构体(java中的类)来描述进程信息的.描述通过 结构体/类 ,把进程的各种属性,表示出来组织 通过数据结构,把多个上面的结构体窜起来,简单的认为就是通过链表组织起来,并进行增删改查:创建新的进程(双击exe运行程序),就相当于创建了一个新的PCB结构体加入到链表中。销毁进程,就是把PCB从链表上删除,并且释放PCB结构体。
2025-03-11 22:38:43
849
2
原创 Mysql-如何理解事务?
有些场景中,某个操作需要多个sql配合完成:例如:李四这个月剩下的前不够交房租了,找张三借1000元急用:(1)给张三的账户余额 减去1000元updata 账户表 set money = money - 1000 where id = 2;(2)给李四的账户余额 加1000元updata 账户表 set money = money + 1000 where id = 1;
2025-03-01 17:56:15
851
3
原创 如何理解Mysql的索引
索引是一种特殊的文件,包含着对数据表里所有记录的引用(指针/地址)。可以对表中的一列或多列创建索引, 并指定索引的类型,各类索引有各自的数据结构实现。
2025-02-26 23:01:52
819
1
原创 JAVA-泛型
一般的类和方法,只能使用具体的类型要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的 代码,这种刻板的限制对代码的束缚就会很大。-----来源《Java编程思想》对泛型的介绍。泛型是在JDK1.5。从代码上讲,就是对类型实现了参数化。二、泛型的使用场景我们需要要以下代码来代入我们理解泛型:实现一个类,类中包含一个数组成员,使得数组中可以存放任何类型的数据,也可以根据成员方法返回数组中某个下标的值。我们知道Object是所有类的父类,那我们就可以使用Object来实现。
2025-02-20 17:37:16
775
1
原创 JAVA-Lambda表达式(高质量)
Lambda表达式是Java SE 8中一个重要的新特性。Lambda表达式允许你通过表达式来代替功能接口。Lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。Lambda表达式(,基于数学中的λ演算得名,也可称为闭包(Closure1.Lambda表达式的语法基本语法或Lambda表达式由三部分组成:1.paramaters类似方法中的形参列表,这里的参数是函数式接口里的参数。
2025-02-14 18:32:35
925
5
原创 JAVA-枚举的使用
Enum的构造方法Enum类只有这一个构造方法,但是我们写的枚举类并没有写构造方法,我们知道如果我们没写构造方法,会有一个没有任何参数的构造方法。但是父类只有这两个参数的构造方法。其实也是帮我们写了有两个参数的方法,传的值是null。所以枚举类是比较特殊的。构造函数是zh当枚举对象有参数后,需要提供相应的构造函数//有了自己的构造方法,就必须在这里写的时候带参数/*** 1、当枚举对象有参数后,需要提供相应的构造函数* 2、枚举的构造函数默认是私有的 这个一定要记住*/
2025-02-11 18:21:10
759
1
原创 JAVA-反射
Java的反射(reflection)机制是在状态中,对于任意一个类,都能够知道这个类的;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制。
2025-02-07 18:37:45
774
原创 JAVA-归并排序(图解)
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
2025-01-25 18:03:25
547
1
原创 JAVA-快速排序
快速排序是Hoare于1962。我们此次实现拿数组的第一个元素做为基准值right找到比tmp小的,left再找到比tmp大的就交换。如果交汇了就放入第一个元素,再把tmp放进来。把交汇处的下标给par,再分别从par两边重复之前的操作。而且这不就是二叉树吗。那么就适合用递归来处理了。
2025-01-23 22:52:41
1029
2
原创 JAVA-二叉树的四种遍历
选:A提升难度:根据已知条件去构建这颗二叉树:3.设一课二叉树的中序遍历序列:badce,后序遍历序列:bdeca,则二叉树前序遍历序列为()选:D4.某二叉树的后序遍历序列与中序遍历序列相同,均为ABCDEF,则按层次输出同一层从左到右的序列为()同理一样,选A四、代码实现首先有一个二叉树的类。
2025-01-17 00:12:19
1045
1
原创 JAVA-二叉树的概念和性质
树是一种的数据结构,它是由nn>=0)个有限结点组成一个具有层次关系的集合。。它具有以下的特点:有一个特殊的结点,称为根结点,根结点没有前驱结点除根结点外,其余结点被分成M(M > 0)个互不相交的集合T1T2......Tm,其中每一个集合m)又是一棵与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继树是递归定义的。
2024-12-07 18:16:04
1030
1
原创 JAVA-链表
LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节 点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。在集合框架中,LinkedList也实现了List接口,具体如下:【说明】1. LinkedList实现了List接口2. LinkedList的底层使用了双向链表3. LinkedList没有实现RandomAccess接口。
2024-11-17 21:13:16
1462
1
原创 JAVA-队列
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有:进行插入操作的一端称为:进行删除操作的一端称为其实就是对一种结构里面的数据进行,头删和尾插的操作。
2024-11-13 21:29:25
3092
2
原创 JAVA-栈Stack和Deque
进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。LIFO(Last In First Out)的原则。栈:一种特殊的线性表,其。压栈:栈的插入操作叫做进栈/压栈/入栈,说这么多其实就是一个数组,只要用。出栈:栈的删除操作叫做出栈。
2024-11-13 10:38:49
642
4
原创 JAVA-顺序表ArrayList(实现ArrayList)
在集合框架中,List是一个接口,继承自Collection。Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示:Iterable也是一个接口,表示实现该接口的类是可以逐个元素进行遍历的,具体如下:站在数据结构的角度来看,List就是一个线性表,即n个具有相同类型元素的有限序列,在该序列上可以执行增删 改查以及变量等操作。在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:【说明】
2024-11-10 23:33:18
1139
2
原创 JAVA-异常(通俗易懂)
Java 中虽然已经内置了丰富的异常类, 但是并不能完全表示实际开发中所遇到的一些异常,此时就需要维护符合我 们实际情况的异常结构.例如, 我们实现一个用户登陆功能.if (!if (!System.out.println("登陆成功");此时我们在处理用户名密码错误的时候可能就需要抛出两种异常. 我们可以基于已有的异常类进行扩展(继承), 创建 和我们业务相关的异常类.具体方式:1.自定义异常类,可以继承Exception 或者 RunTimeException。
2024-10-03 22:18:58
695
3
原创 JAVA-StringBuilder和StringBuffer
/6原理是从后往前找原理是从指定位置从后向前找//0//-1找不到11.StringBuff insert(int offset, String str) 在offset位置插入:八种基类类型 & String类型 & Object类型数据//不会覆盖原有字符,原位置字符全部往后移//aaxxxbbccaabbaaxxx,证明可以当追加函数使用//报错//说明,要紧跟字符串末尾追加。
2024-09-25 21:51:16
1367
原创 String类和String类常用方法
在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开的方式不符合面相对象的思想,而字符串应用又非常广泛,因此Java语言专门提供了String类。而且在面试题中也频繁用到处理字符串的题目。String、StringBuff和StringBulider之间的区别等。
2024-09-23 10:54:38
993
原创 JAVA-接口(一万四千字讲解)
提示:1. 创建接口时, 接口的命名一般以大写字母 I 开头.2. 接口的命名一般使用 "形容词" 词性的单词.3. 阿里编码规范中约定,
2024-09-05 23:54:07
840
1
原创 JAVA-封装
基本规则在文件的最上方加上一个 package 语句指定该代码在哪个包中.包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如 com.bit.demo1 )包名要和代码路径相匹配. 例如创建 com.bit.demo1 的包, 那么会存在一个对应的路径com/bit/demo1 来存储 代码. 如果一个类没有 package 语句, 则该类被放到一个默认包中.操作步骤1. 在 IDEA 中先新建一个包: 右键 src -> 新建 -> 包。
2024-08-26 21:26:46
1217
1
原创 JAVA-类和对象 (超详细)
在java中定义类时需要用到class关键字,具体语法如下//创建类//成员属性或者成员变量//行为 或者 成员方法class后面接着的是类名 可以根据实际需求取采用Java语言将狗类在计算机中定义完成,经过javac编译之后形成.class文件,在JVM的基础上计算机就可以识别了。通过项目文件夹out文件夹点下去就可以找到class文件类名注意采用大驼峰定义public哪里是来控制访问权限的,是封装的内容一般一个文件当中只定义一个类。
2024-08-26 16:52:34
2546
1
原创 JAVA-抽象类和抽象方法
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果 一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
2024-08-23 19:54:26
1005
3
原创 JAVA-多态 和 重写 (彻底给你讲明白)
多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同 的状态。比如:每个动物吃的东西不一样,猫吃猫粮,狗吃狗粮。如果没有多态就会用到大量的重写总的来说:同一件事情,发生在不同对象身上,就会产生不同的结果。
2024-08-12 16:28:55
1176
原创 C-冒泡排序的循环条件应该怎么写
我发现,好像还是有一部分同志,没有很清楚冒泡排序的两层循环条件为什么这么写?感到有些模糊,但又可以写得出来,那么下面我用画图的形式来给大家讲解一下。
2024-06-14 23:39:40
531
原创 C-内存函数(大量图解,函数实现)
对memcpy,memmove,memcmp进行了模拟实现,memset进行了介绍,用图片的方式让您更容易理解记忆
2022-10-21 18:24:36
1065
20
原创 C-动态内存管理malloc,calloc,relloc,free面试题内存图(图解)
此篇文章通过对动态内存函数的学习,给大家分享了几道面试题,和日常需要注意的地方,用图给大家解释,为了大家深刻理解内存布局画了内存图
2022-10-07 20:46:55
1209
13
原创 C结构体内存对齐,计数结构体大小(图解)
结构体内存对齐是非常非常重要的一个知识点经常会在面试题中出现,作为程序员这是一个必须会的知识点,并且能够熟练!
2022-09-17 18:08:59
704
11
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人