自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 Java的JDBC编程—连接Mysql数据库

JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是 Java中的数据库连接规范。

2023-11-15 13:36:48 3687 35

原创 数据结构—LinkedList与链表

链表是一种存储结构,数据元素的是通过链表中的次序实现的data表示数据;next表示指针,它总是指向自身的下一个结点,对于只有一个结点的存在,这个next指针则永远指向自身,对于一个链表的尾部结点,next永远指向开头。实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:1.2.3.LinkedList的底层是,由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。

2023-11-12 13:22:45 1519 17

原创 Synchronized关键字和乐观锁(CAS)

CAS是一种原子操作,用于在多线程环境下实现无锁并发。内存位置:需要更新的变量的内存地址。预期值:当前线程认为该变量应该具有的值。新值:需要写入的新值。CAS操作会检查内存位置的当前值是否等于预期值,如果相等,则将新值写入该内存位置;如果不相等,则说明该内存位置的值已经被其他线程修改过,CAS操作失败。CAS(Compare-And-Swap)是一种用于实现无锁并发的原子操作,通过比较和交换的方式确保数据的一致性。它在乐观锁中得到了广泛应用,特别是在Java的包中,如AtomicLong等类。

2024-07-25 11:03:14 568

原创 悲观锁和乐观锁

【代码】悲观锁(Synchronized)和乐观锁(CAS)

2024-07-25 10:57:54 478

原创 [编程题]数组中两个字符串的最小距离

【代码】[编程题]数组中两个字符串的最小距离。

2024-07-25 10:36:35 115

原创 锁升级机制-Synchronized的优化

偏向锁:适用于单线程反复进入同步代码块的情况,避免了不必要的同步操作。轻量级锁:适用于多线程进入同步代码块但未发生竞争的情况,通过CAS和自旋操作减少了锁的开销。重量级锁:适用于多线程竞争激烈的情况,当自旋失败后,线程会被阻塞。这些锁优化技术共同作用,旨在提高Java中关键字的性能,使其在不同的并发场景下都能表现出较好的效率。自旋操作是一种用于优化多线程锁竞争的技术,旨在减少线程阻塞和唤醒的开销。自旋操作通过忙等待和CAS操作,在一定条件下避免了线程阻塞,提高了锁的性能。

2024-07-24 17:18:51 1153

原创 Ubuntu20-ARM架构更换国内镜像源,出现 filed to fetch http ubuntu 404 Some index files failed toto download.

在配置ubuntu20.04.05 arm架构的国内镜像源时,出现 filed to fetch http ubuntu 404 Some index files failed to download. They have been ignored, or old ones used instead错误.使用的是阿里云镜像源网站,仔细查看是binary-arm64出现错误,于是去官网找了一下,果然没有找到arm包。

2024-07-24 14:14:35 370

原创 点击消除(栈)

【代码】点击消除(栈)

2024-07-11 20:50:44 114

原创 两个数组的交集

【代码】两个数组的交集。

2024-07-10 23:27:01 191

原创 数字统计

【代码】数字统计。

2024-07-10 23:05:53 190

原创 简写单词

【代码】简写单词。

2024-07-09 21:22:58 461

原创 最小爬楼梯(dp)

【代码】最小爬楼梯(dp)

2024-07-08 21:06:03 221 1

原创 网络原理(网络协议初识)

网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。

2024-03-14 13:50:50 1432 5

原创 TCP流套接字编程

使用传输层TCP协议,TCP,即(传输控制协议),传输层协议。TCP的特点(细节后续再学习):有连接可靠传输面向字节流有接收缓冲区,也有发送缓冲区大小不限对于字节流来说,可以简单的理解为,传输数据是基于IO流,流式数据的特征就是在IO流没有关闭的情 况下,是无边界的数据,可以多次发送,也可以分开多次接收。

2024-03-14 13:30:04 528

原创 UDP数据报套接字编程

对于UDP协议来说,具有无连接,面向数据报的特征,即每次都是没有建立连接,并且一次发送全部数据报,一次接收全部的数据报。Java中使用UDP协议通信,主要基于DatagramSocket类来发送或接收数据报套接字,并使用DatagramPacket作为创建的UDP数据报,DatagramPacket类对象就是UDP协议中Socket的数据报。

2024-03-13 23:10:50 820

原创 wait 和 notify方法

由于线程之间是抢占式执行的,因此线程之间执行的先后顺序难以预知. 但是实际开发中有时候我们希望合理的协调多个线程之间的执行先后顺序.完成这个协调工作主要涉及到三个方法让当前线程进入等待状态唤醒在当前对象上等待的线程都是Object类的方法.wait 做的事情使当前执行代码的线程进行等待. (把线程放到等待队列中释放当前的锁满足一定条件时被唤醒重新尝试获取这个锁wait要搭配来使用脱离使用wait会直接抛出异常wait结束等待的条件其他线程调用该对象的。

2024-03-12 22:17:43 1035 6

原创 volatile关键字

以下代码创建了两个线程,线程thread01一直在运行,因为isQuit静态变量等于0,但是thread02线程可以修改静态变量isQuit的值。按道理在thread02线程修改变量的值后,thread01线程就会停止运行,但是运行代码后,修改完变量,thread01线程并没有停止运行。原因是thread02线程在修改完isQuit变量的值后,存储在线程的工作内存中,并没有刷新到主内存中,所以thread01线程并没有读取到修改后的变量值,一直在运行。

2024-03-12 22:05:12 461 7

原创 JVM 垃圾回收相关

一、什么是垃圾回收垃圾回收(Garbage Collection,简称GC)是内存管理的核心组成部分,它负责自动回收不再使用的内存空间。在Java中,程序员不需要手动释放对象占用的内存,一旦对象不再被引用,垃圾回收器就会在适当的时机回收它们所占用的内存。这样可以避免内存泄漏和野指针,从而大大减轻了程序员的负担,也使得 Java 成为一个相对安全、易于开发的编程语言。:手动管理内存容易导致内存泄漏,而GC可以自动回收不再使用的对象,防止内存泄漏的发生。

2024-03-11 00:18:33 1203 1

原创 JVM的工作流程

如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父 类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最 终都应该传送到最顶层的启 动类加载器中,只有当父加载器反馈自己无 法完成这个加载请求(它的搜索范围中没有找到所需的类) 时,子加载器才会尝试自己去完成加载。方法区的作用:用来存储被虚拟机加载的类信息、常量、静态变量(static)、即时编译器编译后的代码等数据 的。程序计数器是一块比较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。

2024-03-09 14:48:49 2297 9

原创 Leetcode 139.单词拆分

【代码】Leetcode 139.单词拆分。

2023-12-13 23:01:01 1124 7

原创 synchronized 关键字

synchronized 关键字

2023-11-30 16:58:55 903 30

原创 线程-Thread类及常见方法

线程-Thread类及常见方法

2023-11-25 02:17:36 2251 25

原创 leetcode 343.整数拆分 198.打家劫舍(动态规划)

【代码】leetcode 343.整数拆分(动态规划)

2023-11-23 17:21:11 494 14

原创 进程和线程( Process and Thread)

目录一、操作系统(Operating System) 操作系统的定位二、 什么是进程/任务(Process/Task)1.进程控制块抽象(PCB Process Control Block)2.PCB中重要的属性 3.并发编程 三、线程(Thread)1. 线程是什么2、为啥要有线程三、进程和线程的区别四、Java 的线程 和 操作系统线程 的关系

2023-11-21 13:18:42 615 30

原创 java的包装类

目录1. 包装类1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 1.3 自动装箱和自动拆箱 1.3 自动装箱和自动拆箱 结语:包装类的相关分享到这里就结束了,希望对大家的学习会有帮助,如果大家有什么问题或者不同的见解,欢迎大家评论区的留言, 感谢支持

2023-11-18 17:04:23 496 29

原创 简单认识泛型【java】

一般的类和方法,只能使用具体的类型:要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的 代码,这种刻板的限制对代码的束缚就会很大。-----来源《Java编程思想》对泛型的介绍。

2023-11-17 13:28:00 461 28

原创 LeetCode 739. 每日温度

【代码】LeetCode 739. 每日温度。

2023-11-14 22:10:09 210 11

原创 栈和队列(Stack和Queue)

一种特殊的,其。进行数据插入和删除操作的一端称为栈 顶,另一端称为栈底。栈中的数据元素遵守LIFO)的原则。栈的插入操作叫做进栈/压栈入栈,。栈的删除操作叫做出栈。

2023-11-13 13:06:50 216 17

原创 ArrayList与顺序表

在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:

2023-11-11 11:27:31 381 11

原创 数据库约束、聚合查询

常见的统计总数、计算平局值等操作,可以使用聚合函数来实现,常见的聚合函数有。案例:创建student 表和 class表。子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用。识,有助于更容易更快速地找到表中的一个特定的记录。保证一个表中的数据匹配另一个表中的值的参照完整性。确保某列(或两个列多个列的结合)有唯一标。子句可以对指定列进行分组查询。外键用于关联其他表的。保证某列的每行必须有唯一的值。保证列中的值符合指定的条件。进行分组查 询时,SELECT。规定没有给列赋值时的默认值。

2023-11-10 15:10:38 209 10

原创 Map和Set

Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值)都可以作为一个键或一个值。Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。,该类中存储的是结构的键值对,并且K一定是唯一的。不能修改,如果要修改,先将原来的删除掉,然后再重新插入。key,只能先将该key删除掉,然后再来进行重新插入。的基础 上维护了一个双向链表来记录元素的插入次序。Set最大的功能就是对集合中的元素进行去重。是一个接口,不能直接实例化对象。的一个默认对象作为键值对插入到。

2023-11-09 13:44:28 268 14

原创 Mysql数据库基本操作(增删改查)

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

2023-11-02 01:32:54 119 9

原创 【排序-常见七大基于比较的排序】

将已有序的子序列合并,得到完全有序的序列;上述为快速排序递归实现的主框架,发现与二叉树前序遍历规则非常像,同学们在写递归框架时可想想二叉树前序 遍历规则即可快速写出来,后序只需分析如何按照基准值来对区间中数据进行划分的方式即可。的排序码顺序进行比较,找到插入位置即将array[i]插入,原来位置上的元素顺序后移.每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元 素排完。的空间复杂度,归并排序的思考更多的是解决在磁盘中的外排序问题。

2023-10-31 13:46:57 149 14

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除