- 博客(103)
- 收藏
- 关注
原创 多线程(5)——锁策略、CAS、JUC常见类
乐观锁&悲观锁、重量级锁&轻量级锁、挂起等待锁&自旋锁、公平锁&非公平锁、可重入锁&不可重入锁、读写锁、synchronized的加锁过程、锁消除&锁粗化、CAS、CAS的ABA问题、Callable接口、ReentrantLock可重入互斥锁、Semaphone信息量、CountDownLatch
2024-08-24 18:06:23
881
原创 多线程(4)——单例模式、阻塞队列、线程池、定时器
单例模式、饿汉模式、懒汉模式、阻塞队列(BlockingQueue)、生产者消费者模型、线程池(ExecutorService、shutdown())、定时器(Timer、TimerTask)
2024-08-21 17:38:46
1144
原创 网络编程套接字(socket)
请求和响应、Socket套接字、TCP/UDP的区别、DatagramSocket、DatagramPacket、InetSocketAddress、ServerSocket、Socket、回显服务器实例、多线程、线程池、长短连接
2024-08-12 11:24:25
739
原创 多线程(3)——volatile、wait、notify
volatile、内存可见性问题、wait 和 notify、wait 和 sleep 的区别
2024-08-08 15:48:09
920
原创 多线程(2)——线程的六种状态
Java线程的六种状态、线程安全问题、synchronized、出现死锁的三种场景、出现死锁的四个必要条件、哲学家就餐问题
2024-08-07 16:34:08
601
原创 网络原理(1)——基本概念
网络互连、局域网组建网络的方式、广域网、IP 地址、端口号、协议、协议分层、OSI 七层模型、TCP/IP 模型、网络设备所在分层
2024-08-07 14:47:43
766
原创 Java 文件操作和 IO
文件概念及两种类型、文件夹和目录、文件路径、File类(文件读写操作)、数据流(文件内容读写操作)、InputStream、FileInputStream、文件泄露问题、OutputStream、字符流、Write、Scanner
2024-08-04 16:34:25
713
原创 多线程(1)——Thread 类
线程、与进程的区别、创建线程的5种方法、Thread类及常用方法、前后台线程、线程是否存活、start和run之间的区别、终止线程的2种方法、线程等待join、获取当前线程引用currentThread、休眠当前线程sleep
2024-07-31 15:45:39
919
原创 MySQL表的增删查改(3)——复杂情况
本文涉及:表的设计三大范式、特殊新增方式(插入查询结果)、聚合查询、group by语句、having、联合查询、笛卡尔积、内连接、join on、外连接、自连接、子查询、合并查询union
2024-07-27 14:36:25
616
原创 MySQL表的增删查改(2)——数据库约束
指定某列不能存储null值:保证某列的每行必须有唯一的值:规定没有给列赋值时的默认值:NOT NULL和UNIQUE的结合,确保某列(或两个列或多个列的结合)有唯一标识,有助于更容易快速的找到表中的一个特定的记录(主键):保证一个表中的数据匹配另一个表中的值的参照完整性(外键):保证列中的值符合指定的条件,对于MySQL数据库,对check子句进行分析,但是忽略check子句(即在 MySQL 中 check 指定的条件不生效,若在 SQL server 这种支持 check 的数据库中就会生效)
2024-07-21 13:51:41
761
1
原创 MySQL表的增删查改
- 把lisi尝试转换成int失败了第二种情况成功:上述这样的转换就是 “隐式类型转换” ,在Java中是非常排斥这一点的比较支持隐式类型转换的称为“弱类型系统”,C/SQL对于隐式类型转换触发的情况更多不太支持隐式类型转换的称为“强类型系统”,虽然Java排斥,但是Java中也有自动装箱、自动拆箱。
2024-07-05 17:52:41
1303
原创 JavaEE——计算机工作原理
现代计算机,大多遵守冯诺依曼体系结构CPU中央处理器:进行算术运算与逻辑判断存储器:分为外存和内存,用于存储数据(使用二进制存储)输入设备:用户给计算机发号施令的设备输出设备:计算机给用户汇报结果的设备针对存储空间:硬盘 > 内存 >> CPU针对数据访问速度:CPU >> 内存 > 硬盘。
2024-07-05 11:16:42
1015
1
原创 Java——Lambda表达式
Lambda表达式的优点很明显,在代码层次上来说,使代码变得非常的简洁。缺点也很明显,代码不易读。1. 代码简洁,开发迅速2. 方便函数式编程3. 非常容易进行并行计算4. Java 引入 Lambda,改善了集合操作1. 代码可读性变差2. 在非并行计算中,很多计算未必有传统的 for 性能要高3. 不容易进行调试。
2024-06-27 10:44:12
1241
原创 Java——枚举
但是常量举例有不好的地方,例如:碰巧有个数字1,编译器可能误解为RED,现在我们可以直接用枚举来进行组织,这样一来,就拥有了类型,而不是普通的整型1优点:将常量组织起来统一管理场景:错误状态码,消息类型,颜色的划分,状态机等等。。。本质:是的子类,也就是说,自己写的枚举类型,就算没有显式继承Enum,但其默认继承了这个类。
2024-06-27 09:39:37
345
原创 Java——反射
Java的反射(reflection)机制是在状态中,对于任意一个类,都能够知道这个类的;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到,那么我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射(reflection)机制。
2024-06-26 17:26:10
638
原创 数据结构——排序
1. 排序的概念1.1 概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持 不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳 定的;否则称为不稳定的,如下图:tip:稳定的排序方法可以改为不稳定版,但本身不稳定的方法不能改为稳定的内部排序:数据元素全部放在
2024-06-23 09:58:39
560
原创 Java中对象的比较
对于用户实现自定义类型,都默认继承自Object类,而Object类中提供了equals方法,而==默认情况下调用的就是equals方法,但是该方法的比较规则是:直接比较引用变量的地址。优先级队列底层使用堆,而向堆中插入元素时,为了满足堆的性质,必须要进行元素的比较,而此时Card是没有办法直接进行比较的,因此抛出类型转换异常。对于自定义类型,如果想按照大小的方式进行比较,在定义类时,实现Comparable接口,然后在类中重写compareTo方法。要想在堆中插入自定义类型的元素。
2024-06-22 10:09:51
461
原创 数据结构——优先级队列(堆)Priority Queue详解
Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,本文主要介绍PriorityQueue//运行结果:1// 22. PriorityQueue中放置的元素必须要能够比较大小,不能插入无法比较大小的对象,否则会抛出 ClassCastException 异常。
2024-06-22 09:02:14
1017
1
原创 数据结构——二叉树
树是一种非线性的数据结构,由n(n>=0)个有限节点组成一个具有层次关系的集合特点:有一个特殊的节点,称为根节点,根节点没有前驱节点树是递归定义的树形结构中,子树之间不能有交集,否则就不是树形结构除了根节点外,每个节点有且仅有一个父节点一棵个节点的树有条边。
2024-06-18 16:55:38
1767
3
原创 数据结构——队列(Queue)详解
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)的性质入队列:进行插入操作的一端称为队尾(Tail/Rear)出队列:进行删除操作的一端称为队头(Head/Front)
2024-06-14 17:00:23
540
原创 数据结构——栈(Stack)详解
栈:一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中数据元素遵循后进先出LIFO(Last In First Out)的原则压栈:栈的插入操作可以叫做进栈、压栈、入栈,入数据在栈顶出栈:栈的删除操作叫做出栈,出数据在栈顶。
2024-06-13 15:33:28
1186
原创 Java——LinkedList
链表在逻辑层面上是连续的,在物理层面上不一定是连续的链表结构可分为,单向或双向、带头或不带头、循环或非循环,组合共计8种重点:无头单向非循环链表、无头双向链表。
2024-06-13 14:30:37
854
原创 OJ——环形链表
环形链表是一种特殊类型的链表数据结构,其最后一个节点的地址域不为null,而是指向了链表中的某个节点,形成一段闭环,如下图:tip:该类型题目不能以判断 cur.next 是否为 null 为循环条件,否则死循环给一个链表的头节点head,判断链表中是否有环,如果链表中存在环 ,则返回true。否则,返回false。
2024-06-12 17:44:09
926
原创 Java——ArrayList与顺序表
线性表(linear list)是n个具有相同特性的数据元素的有限序列,线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列...线性表在逻辑上是线性结构,也就是连续的一条直线,但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。
2024-06-09 15:20:30
1060
原创 JDK17语法新增特性(常用)
yield 关键字从Java13开始引入,用于从case的代码块中返回值示例:正常的switch语句:简化后的switch:使用yield关键字的switch:2、var关键字var 关键字从Java10开始引入,可以自动识别类型上述代码中,编译器会自动判断出name时一个String类型,age是一个int类型使用var可以使代码更简洁,有时候,类型名称可能会非常长,例如泛型中var就像一个简化器,让我们不必反复写出繁琐的类型名,如下:注意事项:密封类一般应用在类和接口中
2024-06-06 17:32:26
498
原创 Java——包装类、泛型简介
在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个包装类型。
2024-06-06 09:49:29
1085
原创 Java—集合框架、时间和空间复杂度
Java集合框架(Java Collection Framework),又称为容器(container),是定义在 java.util 包下的一组接口(interfaces)和其实现类(classes)其主要表现为将多个元素(element)置于一个单元中,用于对这些元素进行快速、便捷的存储(store)、检索(retrieve)、管理(manipulate),即俗称的增删查改(CRUD)
2024-06-05 16:26:40
562
原创 Java——异常详解
本章需掌握:throw、try、catch、finally、throws、Exception、RuntimeException异常处理核心:EAFP
2024-06-02 09:27:24
607
原创 Java——String类详解
该文章需掌握:字符串构造、equals、compaerTo、comepaerTolgnoreCase、chaAt、indexOf、lastIndexOf、valueOf、toUpperCase、toLowerCase、toCharArray、fromat、replaceAll、replaceFirst、split、substring、trim、字符串不可变性原理
2024-05-31 10:42:20
1137
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人