2的n次方__个人页

个人头像照片 2的n次方_
个人头像照片
30
0
0

个人介绍

暂无个人介绍

擅长的技术

  • Java
获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
暂无更多信息

2024年09月

  • 09.15 19:03:51
    发表了文章 2024-09-15 19:03:51

    多线程进阶

    本文介绍了多种锁策略及其应用。首先区分了乐观锁与悲观锁:乐观锁假定冲突较少,悲观锁则预期频繁冲突。接着讨论了自旋锁与挂起等待锁,前者适合冲突少且持有时间短的场景,后者适用于长锁持有时间。随后对比了轻量级锁与重量级锁,前者开销小、效率高,后者开销大、效率低。此外,文章还探讨了公平锁与非公平锁的区别,以及可重入锁如何避免死锁。最后介绍了读写锁,其允许多个读操作并发,但写操作独占资源。通过详细解析各种锁机制的特点及适用场景,本文为读者提供了深入理解并发控制的基础。
  • 09.15 10:34:36
    发表了文章 2024-09-15 10:34:36

    Java——String类详解

    String 是 Java 中的一个类,用于表示字符串,属于引用数据类型。字符串可以通过多种方式定义,如直接赋值、创建对象、传入 char 或 byte 类型数组。直接赋值会将字符串存储在串池中,复用相同的字符串以节省内存。String 类提供了丰富的方法,如比较(equals() 和 compareTo())、查找(charAt() 和 indexOf())、转换(valueOf() 和 format())、拆分(split())和截取(substring())。此外,还介绍了 StringBuilder 和 StringJoiner 类,前者用于高效拼接字符串,后者用于按指定格式拼接字符串
  • 09.15 10:30:41
    发表了文章 2024-09-15 10:30:41

    Java——接口的使用实例

    Comparable接口用于自定义类的对象比较。通过实现此接口并重写`compareTo`方法,可以定义自定义类型的比较规则。 接下来介绍了Comparator接口,它提供了一种更灵活的比较方式。通过实现Comparator接口并重写`compare`方法,可以根据不同属性定义不同的比较规则。例如,定义一个`BrandComparator`类来比较汽车的品牌。 最后,介绍了Cloneable接口,用于实现对象的克隆。实现该接口并重写`clone`方法后,可以创建对象的浅拷贝或深拷贝。浅拷贝仅复制对象本身,深拷贝则会递归复制所有成员变量。
  • 09.15 10:26:25
    发表了文章 2024-09-15 10:26:25

    Java——抽象类和接口

    抽象类是一种不能被实例化的类,至少包含一个抽象方法(无实现体的方法),常用于定义一组相关类的共同特征,并强制子类实现特定方法。抽象方法不能被 `static` 或 `final` 修饰,且必须被重写。 接口则是一个完全抽象的类,用于规范类的行为。接口使用 `interface` 关键字定义,不能实例化,并且类与接口之间是实现关系。 内部类是在一个类内定义的类,分为成员内部类、静态内部类、局部内部类和匿名内部类。成员内部类可被修饰符修饰,静态内部类只能访问外部类的静态成员,局部内部类定义在方法内,匿名内部类则隐藏了名字,直接通过 `new` 关键字定义并实现接口或继承类。
  • 09.14 09:57:44
    发表了文章 2024-09-14 09:57:44

    Java——类与对象(继承和多态)

    本文介绍了面向对象编程中的继承概念,包括如何避免重复代码、构造方法的调用规则、成员变量的访问以及权限修饰符的使用。文中详细解释了继承与组合的区别,并探讨了多态的概念,包括向上转型、向下转型和方法的重写。此外,还讨论了静态绑定和动态绑定的区别,以及多态带来的优势和弊端。
  • 09.14 09:54:29
    发表了文章 2024-09-14 09:54:29

    Java——类与对象(封装)

    封装是面向对象编程中的概念,指将数据(属性)和相关操作(方法)组合成独立单元(类),使外部无法直接访问对象的内部状态,只能通过提供的方法进行交互,从而保护数据安全。例如,手机将各种组件封装起来,只暴露必要的接口供外部使用。实现封装时,使用`private`关键字修饰成员变量,并提供`get`和`set`方法进行访问和修改。此外,介绍了包的概念、导入包的方式及其注意事项,以及`static`关键字的使用,包括静态变量和方法的初始化与代码块的加载顺序。
  • 09.14 09:50:20
    发表了文章 2024-09-14 09:50:20

    Java——类与对象

    这段内容介绍了Java中的类和对象、`this`关键字及构造方法的基本概念。类是对现实世界事物的抽象描述,包含属性和方法;对象是类的实例,通过`new`关键字创建。`this`关键字用于区分成员变量和局部变量,构造方法用于初始化对象。此外,还介绍了标准JavaBean的要求和生成方法。
  • 09.13 18:49:06
    发表了文章 2024-09-13 18:49:06

    线程池和计时器

    线程池是一种线程使用模式,维护多个线程以分配并执行任务,避免频繁创建与销毁线程带来的开销。核心原理包括:创建空线程池、按需创建线程执行任务并归还线程池、以及任务排队等待。Java 标准库中的 `ThreadPoolExecutor` 实现了线程池功能,其构造方法涉及核心线程数、最大线程数、非核心线程空闲时间等参数。当任务超出处理能力时,线程池会采用不同的拒绝策略。此外,定时器通过 `Timer` 和 `TimerTask` 类实现定时执行任务的功能。自定义线程池和定时器可通过优先级队列和线程安全机制实现高效的任务调度。
  • 09.13 10:22:24
    发表了文章 2024-09-13 10:22:24

    单例模式下引发的线程安全问题

    单例模式确保类在进程中仅有一个实例,适用于如数据库连接等场景。分为饿汉式与懒汉式:饿汉式在类加载时创建实例,简单但可能浪费资源;懒汉式延迟创建实例,需注意线程安全问题,常采用双重检查锁定(Double-Checked Locking)模式,并使用 `volatile` 关键字避免指令重排序导致的问题。
  • 09.12 14:20:40
    发表了文章 2024-09-12 14:20:40

    MySQL查询(万字超详细版)

    本文详细介绍了数据库中的单表和多表查询方法。首先,单表查询包括全列查询、指定列查询及去重查询,其中应避免使用`*`以提高效率。接着,文章讲解了排序查询,包括升序和降序,并展示了如何通过多个字段进行排序。在多表查询部分,本文解释了内连接、外连接(左外连接和右外连接)以及自连接的概念和用法,提供了丰富的代码示例
  • 09.12 14:10:54
    发表了文章 2024-09-12 14:10:54

    阻塞队列和生产者消费者模型

    阻塞队列是一种特殊队列,当队列空时,获取元素操作会被阻塞;当队列满时,插入操作会被阻塞。可通过数组模拟实现,使用`wait`和`notify`控制阻塞与唤醒。生产者消费者模型中,阻塞队列作为缓冲区,实现生产者与消费者的解耦,提高系统可维护性和扩展性。
  • 09.11 14:15:13
    发表了文章 2024-09-11 14:15:13

    IO流:字节流

    在Java编程中,IO流是一个核心概念,用于与文件、网络、内存等数据源交互。Java的IO库提供丰富的类和方法支持数据读写。IO流分为字节流和字符流,前者可操作所有类型文件,后者仅限纯文本文件。`FileOutputStream`用于向文件写入字节,支持多种写入方式,并可通过构造函数的布尔参数控制是否追加写入。`FileInputStream`则用于从文件读取字节,支持逐字节或批量读取。文件拷贝可通过结合读写操作实现,高效的方法是一次性读取并写入大容量数组。处理IO流时需注意异常管理,合理使用try-catch-finally结构确保资源正确释放。JDK7及以后版本提供了自动关闭资源的简化语法
  • 09.11 14:14:17
    发表了文章 2024-09-11 14:14:17

    等待唤醒机制

    线程间的`wait`、`notify`及`notifyAll`方法用于同步控制。`wait`使线程释放锁并进入等待状态,直至被`notify`或`notifyAll`唤醒。`notify`随机唤醒一个等待线程,而`notifyAll`唤醒所有等待线程。这些方法需在`synchronized`块内使用,以保证线程安全。正确使用这些方法可避免线程饿死现象,确保线程间有效协作。
  • 09.11 10:04:49
    发表了文章 2024-09-11 10:04:49

    Java文件操作

    本文介绍了Java中`File`类的使用方法,包括构造方法、常见成员方法及其实现功能。`File`对象可以表示文件或文件夹,支持绝对路径和相对路径。构造方法有三种:基于完整路径、父级路径与子路径组合、`File`对象与字符串组合。成员方法涵盖判断类型、获取大小、获取路径、创建与删除文件/文件夹、获取文件列表、重命名等操作。文章通过示例代码详细展示了各个方法的应用场景及注意事项。
  • 09.09 18:59:53
    发表了文章 2024-09-09 18:59:53

    MySQL:表的设计原则和聚合函数

    本文详细介绍了数据库表设计的原则与范式,包括从需求中找到实体及其属性,确定实体间关系,并使用SQL创建具体表。文章还深入探讨了一范式、二范式和三范式的要求及不满足这些范式时可能遇到的问题。此外,文中通过实例解释了一对一、一对多和多对多关系的表设计方法,并介绍了如何使用聚合函数如 COUNT()、SUM()、AVG()、MAX() 和 MIN() 进行数据统计和分析。最后,文章还展示了如何通过 SQL 语句实现数据的复制和插入操作。
  • 09.09 18:55:06
    发表了文章 2024-09-09 18:55:06

    MySQL基础:函数

    本文介绍了MySQL中几种常用的内建函数,包括字符串函数、数值函数、日期函数和流程函数。字符串函数如`CONCAT()`用于拼接字符串,`TRIM()`用于去除字符串两端的空格,`MOD()`求余数,`RAND()`生成随机数,`ROUND()`四舍五入。日期函数如`CURDATE()`返回当前日期,`NOW()`返回当前日期和时间,`DATE_ADD()`添加时间间隔,`DATEDIFF()`计算日期差。流程函数如`IF()`和`CASE WHEN THEN ELSE END`用于条件判断。聚合函数如`COUNT()`统计行数,`SUM()`求和,`AVG()`求平均值
  • 09.09 18:46:27
    发表了文章 2024-09-09 18:46:27

    线程安全问题和锁

    本文详细介绍了线程的状态及其转换,包括新建、就绪、等待、超时等待、阻塞和终止状态,并通过示例说明了各状态的特点。接着,文章深入探讨了线程安全问题,分析了多线程环境下变量修改引发的数据异常,并通过使用 `synchronized` 关键字和 `volatile` 解决内存可见性问题。最后,文章讲解了锁的概念,包括同步代码块、同步方法以及 `Lock` 接口,并讨论了死锁现象及其产生的原因与解决方案。
  • 09.08 16:18:25
    发表了文章 2024-09-08 16:18:25

    【数据结构】栈和队列的深度探索,从实现到应用详解

    本文介绍了栈和队列这两种数据结构。栈是一种后进先出(LIFO)的数据结构,元素只能从栈顶进行插入和删除。栈的基本操作包括压栈、出栈、获取栈顶元素、判断是否为空及获取栈的大小。栈可以通过数组或链表实现,并可用于将递归转化为循环。队列则是一种先进先出(FIFO)的数据结构,元素只能从队尾插入,从队首移除。队列的基本操作包括入队、出队、获取队首元素、判断是否为空及获取队列大小。队列可通过双向链表或数组实现。此外,双端队列(Deque)支持两端插入和删除元素,提供了更丰富的操作。
  • 09.08 16:13:52
    发表了文章 2024-09-08 16:13:52

    线程的操作

    本文详细介绍了线程的开启、终止、等待和休眠。首先解释了`start`与`run`的区别:`start`用于真正创建线程并调用系统API,而`run`则是线程执行的具体任务。接着讨论了线程终止的两种方式:通过共享标记和调用`interrupt()`方法。文中还分析了使用`join()`方法实现线程等待的机制,并展示了如何通过`Thread.sleep()`让线程休眠以降低CPU占用率。这些内容通过实例代码和图示进行了清晰说明。
  • 09.08 08:02:19
    发表了文章 2024-09-08 08:02:19

    MySQL数据库基础:约束

    约束是对数据库表中字段施加的规则,确保数据的正确性、有效性和完整性。主要分为非空约束、唯一约束、默认约束、主键约束和外键约束。非空约束禁止字段值为null;唯一约束确保字段值唯一,允许null值重复;默认约束设定默认值;主键约束结合非空与唯一约束,并可设为自增型;外键约束则通过关联其他表的主键,保证数据一致性。检查约束确保字段值满足特定条件。
  • 09.07 21:36:30
    发表了文章 2024-09-07 21:36:30

    MySQL基础:事务

    本文详细介绍了数据库事务的概念及操作,包括事务的定义、开启、提交与回滚。事务作为一组不可分割的操作集合,确保了数据的一致性和完整性。文章还探讨了事务的四大特性(原子性、一致性、隔离性、持久性),并分析了并发事务可能引发的问题及其解决方案,如脏读、不可重复读和幻读。最后,详细讲解了不同事务隔离级别的特点和应用场景。
  • 09.07 14:21:23
    发表了文章 2024-09-07 14:21:23

    多线程的实现和成员方法

    本文介绍了并发编程与多线程的概念,解释了进程与线程的区别,以及多线程的多种实现方式。首先说明了传统单进程编程的局限性,引出多线程编程的需求。接着详细介绍了线程的基本概念,包括线程与进程的关系、线程的轻量化特性及其实现并发的能力。文中列举了三种实现多线程的方法:继承 `Thread` 类、实现 `Runnable` 接口以及使用 `Callable` 和 `Future` 接口,并对比了它们各自的优缺点。最后,文章还介绍了线程的一些常用方法
  • 09.06 21:04:30
    发表了文章 2024-09-06 21:04:30

    【数据结构】二叉树全攻略,从实现到应用详解

    本文介绍了树形结构及其重要类型——二叉树。树由若干节点组成,具有层次关系。二叉树每个节点最多有两个子树,分为左子树和右子树。文中详细描述了二叉树的不同类型,如完全二叉树、满二叉树、平衡二叉树及搜索二叉树,并阐述了二叉树的基本性质与存储方式。此外,还介绍了二叉树的实现方法,包括节点定义、遍历方式(前序、中序、后序、层序遍历),并提供了多个示例代码,帮助理解二叉树的基本操作。
  • 09.05 21:34:39
    发表了文章 2024-09-05 21:34:39

    【DFS(深度优先搜索)详解】看这一篇就够啦

    本文介绍了深度优先搜索(DFS)算法及其应用。DFS从某个顶点出发,深入探索图的每条路径,直到无法前进为止,然后回溯。文章详细解释了DFS的基本思想,并通过示例图展示了其执行过程。此外,文中还探讨了三种枚举方式:指数型枚举、排列型枚举和组合型枚举,并提供了具体的代码实现。最后,文章通过几道练习题帮助读者更好地理解和应用DFS算法。
  • 09.05 21:27:06
    发表了文章 2024-09-05 21:27:06

    【数据结构】链表从实现到应用,保姆级攻略

    本文详细介绍了链表这一重要数据结构。链表与数组不同,其元素在内存中非连续分布,通过指针连接。Java中链表常用于需动态添加或删除元素的场景。文章首先解释了单向链表的基本概念,包括节点定义及各种操作如插入、删除等的实现方法。随后介绍了双向链表,说明了其拥有前后两个指针的特点,并展示了相关操作的代码实现。最后,对比了ArrayList与LinkedList的不同之处,包括它们底层实现、时间复杂度以及适用场景等方面。
  • 09.05 17:20:57
    发表了文章 2024-09-05 17:20:57

    MySQL基础:索引

    MySQL中的索引是一种数据结构,能大幅提升数据库查询效率和减少I/O成本,类似于书的目录帮助快速定位内容。其优势包括提高检索效率和降低排序成本,但会占用空间并影响更新表的效率。鉴于查询远多于更新,索引仍被推荐使用。索引分为多种类型,如B+树和哈希索引,其中B+树因其较低的高度和稳定的查询开销成为常用选择。创建和删除索引需谨慎,以免影响性能。
  • 09.04 21:11:40
    发表了文章 2024-09-04 21:11:40

    JDBC详解

    Java Database Connectivity(JDBC)是Java语言中用于访问关系型数据库的标准接口,定义了一组API,使Java程序能以统一方式连接、访问和操作不同关系型数据库,简化数据库操作,提高Java应用程序的可移植性和可维护性。使用JDBC进行数据库操作主要包括创建数据源对象、建立连接、构造和执行SQL语句及释放资源等步骤。此外,还可以使用Set系列方法设置值,并使用get系列方法获取查询结果。
  • 09.03 19:14:25
    发表了文章 2024-09-03 19:14:25

    【Java学习】多线程&JUC万字超详解

    本文详细介绍了多线程的概念和三种实现方式,还有一些常见的成员方法,CPU的调动方式,多线程的生命周期,还有线程安全问题,锁和死锁的概念,以及等待唤醒机制,阻塞队列,多线程的六种状态,线程池等
  • 09.03 19:04:12
    发表了文章 2024-09-03 19:04:12

    双指针算法详解

    本文介绍了双指针算法及其应用。双指针算法是在数组或字符串中常用的高效技术,通过维护两个指针遍历数据结构以解决特定问题。根据指针移动方向,可分为同向双指针、相向双指针和快慢指针。同向双指针如移动零和复写零问题;快慢指针如快乐数问题;相向双指针如盛水最多的容器、有效三角形数量及多数之和等问题。通过合理运用双指针技巧,可简化代码并提高效率。
  • 09.02 10:16:31
    发表了文章 2024-09-02 10:16:31

    滑动窗口详解

    本文介绍了滑动窗口算法及其应用。具体题目有: 1. 长度最小的子数组(LeetCode 209)。 2. 无重复字符的最长子串(LCR 016)。 3. 最大连续 1 的个数 III(LeetCode 1004)。 4. 将 x 减到 0 的最小操作数(LeetCode 1658)。 5. 水果成篮(LeetCode 904)。 6. 找到字符串中所有字母异位词(LeetCode 438)。 7. 串联所有单词的子串(LeetCode 30)。 8. 最小覆盖子串(LeetCode 76)。 每题详细分析了暴力解法及滑动窗口优化方案,附带代码实现。
  • 发表了文章 2024-09-15

    多线程进阶

  • 发表了文章 2024-09-15

    Java——抽象类和接口

  • 发表了文章 2024-09-15

    Java——接口的使用实例

  • 发表了文章 2024-09-15

    Java——String类详解

  • 发表了文章 2024-09-14

    Java——类与对象(封装)

  • 发表了文章 2024-09-14

    Java——类与对象(继承和多态)

  • 发表了文章 2024-09-14

    Java——类与对象

  • 发表了文章 2024-09-13

    线程池和计时器

  • 发表了文章 2024-09-13

    单例模式下引发的线程安全问题

  • 发表了文章 2024-09-12

    MySQL查询(万字超详细版)

  • 发表了文章 2024-09-12

    阻塞队列和生产者消费者模型

  • 发表了文章 2024-09-11

    IO流:字节流

  • 发表了文章 2024-09-11

    等待唤醒机制

  • 发表了文章 2024-09-11

    Java文件操作

  • 发表了文章 2024-09-09

    MySQL:表的设计原则和聚合函数

  • 发表了文章 2024-09-09

    MySQL基础:函数

  • 发表了文章 2024-09-09

    线程安全问题和锁

  • 发表了文章 2024-09-08

    MySQL数据库基础:约束

  • 发表了文章 2024-09-08

    【数据结构】栈和队列的深度探索,从实现到应用详解

  • 发表了文章 2024-09-08

    线程的操作

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息