- 博客(21)
- 收藏
- 关注
原创 多线程编程---两个线程交替打印1-100 Java并发编程经典热点面试题
notifyAll() 的主要用途是在多线程环境中协调线程的执行。典型的应用场景是生产者-消费者模式或其他需要多个线程合作完成任务的情况。当一个线程完成了某个重要操作,或者满足了某些条件,可以调用 notifyAll() 方法来通知所有等待在该对象上的线程继续执行。(本人并没有使用lambda表达式的方法创建线程,本人还在进步中)首先要创建一个锁对象;再将两个线程的核心代码同步起来;
2024-05-26 23:25:34 198
原创 什么是CAS?深入底层源码
CAS是 compare and swap 的缩写,意为“比较和交换”。本身并不是锁,却可以实现锁的功能,是一种无锁式并发编程技术。乐观锁。他的具体过程步骤一:获取 i 值存在对象E中(E = i);步骤二:对E进行自增,自增后为V;步骤三:重新获取i值和E比较,如果相同,就把i改成V;如果不相同继续读取 i 值重复步骤一二三操作,知道修改成功。int var5;
2024-05-24 23:37:25 468 1
原创 Java底层的一些基础知识
知识点包含:线程与进程,线程的创建,线程安不安全,锁,synchronized关键字和Lock(ReentrantLock实现了Lock接口),线程池等。:包括与Java开发相关的各种工具,如javadoc(用于生成API文档的工具)、jar(用于打包Java类的工具)等。:包含标准Java库(如java.lang、java.util等包)和其他扩展库,为开发人员提供了丰富的类和方法。使用Java命令来运行编译后的文件。:包括Java虚拟机(JVM)和Java核心类库,用于执行Java程序。
2024-05-22 22:49:46 415 1
原创 创建线程的方法
通过Executor框架创建线程池后,可以提交任务给线程池执行,线程池会自动管理线程的生命周期。在Java程序中,通常使用线程来实现并发执行。线程是程序中执行的最小单位,它可以独立执行代码,并共享相同的内存空间。使用Java的Thread类可以创建新的线程,通过重写run()方法来定义线程的执行逻辑,然后调用start()方法启动线程。使用Runnable接口可以将任务和线程分离,通过实现Runnable接口并将其传递给Thread对象来创建线程。
2024-03-28 00:07:31 212
原创 JVM是什么?有哪些内容?有哪几个区域?
一、JVM是什么?一、JVM是什么?是Java Virtual Machine()的缩写,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就可在多种平台上不加修改的运行,这也是Java能够“”原因。出处:JVM是什么?深入解析JVM原理!- 掘金 (juejin.cn)二、JVM有哪些部分组成组成:运行时数据区域、类加载器、执行引擎。:存储当前线程执行的字节码指令地址。
2024-03-27 23:48:58 976
原创 SpringBoot项目实践分析笔记(图书管理系统)Java项目
主要用来定义一些实体类,所谓实体类就是业务中的实体,通常与数据库中的表一一对应。每个类中所定义的参数也应该与所对应表的列名所对应。例如在此项目中,定义一个实体类为Book,如:Book实体所对应的表为:并在类中添加setter和getter方法(添加方法:快捷键Alt+Insert 选setter和getter)。
2024-02-27 23:37:35 368 1
原创 非关系型数据库Mongodb的基础操作
新建或打开数据库:user db1 (db1为数据库的名字,如果没有数据库db1,此命令会自动创建该数据库)删除特定的条件的数据:db.abc.remove(条件) 条件的格式和查找数据的条件的数据格式相同。()里为添加的格式为bson的数据。删除全部数据(集合不会删除):db.remove({})删除某集合所有数据:db.abc.remove({})查找某集合所有数据命令:db.abc.find()添加数据的格式为类似json的bson格式。命令为:db.abc.insert()
2023-11-02 22:43:19 69
原创 Java--多线程实现方式与线程池
前两种多线程运行方式中的方法run()没有返回值,无法获取多线程运行的返回结果。第三种方式可以获取多线程与逆行的结果。优点缺点继承Thread类简单,可以直接使用Thread类中的方法可扩展性差,不能再继承其他类没有返回值实现Runnable接口扩展性强,实现该接口的同时还可以继承其他类较为复杂,并且没有返回值实现Callable接口可以获取多线程与逆行的结果扩展性强,实现该接口的同时还可以继承其他类复杂。
2023-10-08 21:11:10 181 1
原创 HashMap知识点及原理
在经过mod运算得到一个数值,在一个数据结构为数组的桶中找到下表标为该数值的结点,将键值对连接在该结点后面;containsKey(Object key),返回值是boolen型,判断当前哈希表中是否存在键为k的键值对;如果同一结点后面的键值对数量过多,也就是链表过长,会使操作时间变长过于复杂,所以采取红黑树的形式,便于查找;hashmap为键值对形式,即{k,v},k:键,v:值;在java1.8之后,hashmap的数据结构为数组+链表+红黑树;put(k,v),创建一个新的键值对并加入哈希表中;
2023-10-06 15:30:19 134 1
原创 Prim生成最小树
2、从1号节点开始扩充连通的部分,所以1号节点与连通部分的最短距离为0,即dis[1]置为0。3、遍历dis数组,找到一个还没有连通起来,但是距离连通部分最近的点,假设该节点的编号是i。1、用一个st数组表示节点是否已经连通。...
2022-07-19 22:13:15 119
原创 floyd算法
接下来mm行,每行包含三个整数x,y,zx,y,z,表示存在一条从点xx到点yy的有向边,边长为zz。再给定k个询问,每个询问包含两个整数x和y,表示查询从点x到点y的最短距离,如果路径不存在,则输出。接下来kk行,每行包含两个整数x,yx,y,表示询问点xx到点yy的最短距离。共kk行,每行输出一个整数,表示询问的结果,若询问两点间不存在路径,则输出。1、算法关键k是中间点,a到b可以划分为a到k再到b;第一行包含三个整数n,m,kn,m,k。...
2022-07-18 22:55:22 110
原创 spfa算法
接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。1、spfa算法求最短路和Dijkstra算法求最短路很相似,都用到了队列来更新最小值;请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出。1、用cnt记录边的负权边权边的个数,当它大于等于n时,说明存在负环;给定一个n个点m条边的有向图,图中可能存在重边和自环,输出一个整数,表示1号点到n号点的最短距离。数据保证不存在负权回路。如果路径不存在,则输出。...
2022-07-16 16:23:03 200
原创 KMP算法
给定一个模式串 S,以及一个模板串 P,所有字符串中只包含大小写英文字母以及阿拉伯数字。模板串 PP 在模式串 S 中多次作为子串出现。求出模板串 P 在模式串 S 中所有出现的位置的起始下标。输入格式第一行输入整数 N,表示字符串 P 的长度。第二行输入字符串 PP。第三行输入整数 M,表示字符串 S 的长度。第四行输入字符串 S。输出格式共一行,输出所有出现位置的起始下标(下标从 0 开始计数),整数之间用空格隔开。数据范围1≤N≤1e51≤M≤1e6输入样例:输出样例:给定一个母字符串s[N](较长
2022-07-07 21:03:33 131
原创 树与图的广度优先遍历
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环。所有边的长度都是 1,点的编号为 1∼n。请你求出 1 号点到 n 号点的最短距离,如果从 1 号点无法走到 n 号点,输出 −1。输入格式第一行包含两个整数 nn 和 mm。接下来 mm 行,每行包含两个整数 aa 和 bb,表示存在一条从 aa 走到 bb 的长度为 11 的边。输出格式输出一个整数,表示 11 号点到 nn 号点的最短距离。第一步先将数用链表存起来;解释: h[i]用来存节点,它的子节点用链表形式存起来,e[ ]存子节
2022-07-03 20:02:17 155
R语言结课报告 聚类分析
2023-10-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人