- 博客(111)
- 资源 (1)
- 收藏
- 关注
原创 MYSQL之相关子查询
相关子查询是 MySQL 中一种强大的工具,可以用于解决复杂的查询问题。然而,由于其逐行执行的特性,在处理大数据集时可能会导致性能问题。因此,在使用相关子查询时,应谨慎考虑其性能影响,并尽可能优化查询。
2025-02-25 18:00:47
855
原创 MySQL之不相关子查询
不相关子查询是指子查询的执行不依赖于外部查询。也就是说,子查询可以独立运行,并且它的结果会被外部查询使用。不相关子查询通常用于从另一个表中获取数据,然后将这些数据用于外部查询的条件或计算。不相关子查询的特点独立性:子查询可以独立运行,不依赖于外部查询。执行顺序:子查询先执行,外部查询后执行。结果集:子查询的结果集通常是一个单一的值、一列值或一个表。不相关子查询的使用场景WHERE子句中的子查询:用于过滤外部查询的结果。SELECT子句中的子查询:用于计算或获取额外的列。FROM子句中的子查询。
2025-02-18 17:46:37
608
原创 SQL99之内连接查询
需要注意的是,内连接查询只返回满足连接条件的记录,如果两个表中的记录在指定列上没有匹配的值,则不会出现在结果集中。内连接查询是SQL中非常常用的一种查询方式,用于根据指定的条件从两个或多个表中获取相关联的数据。下面将详细介绍SQL99中的内连接查询,并以通熟易懂的语言进行讲解,同时给出代码例子、注释及运行结果。它返回满足连接条件的记录,如果两个表中的记录在指定列上没有匹配的值,则不会出现在结果集中。通过INNER JOIN关键字将员工表和部门表进行内连接,连接条件为员工表的dept_id等于部门表的id。
2025-01-29 22:02:39
887
原创 mysql的having语句
MySQL的HAVING语句用于在GROUP BY子句对数据进行分组后,过滤满足特定条件的组。与WHERE子句不同,HAVING子句可以在过滤条件中使用聚合函数,而WHERE子句则不能。通常,HAVING子句与GROUP BY子句一起使用,以实现对分组数据的高级过滤。
2025-01-25 15:39:52
945
原创 mysql之group by语句
除了按照单个列进行分组,我们还可以按照多个列进行分组。这在数据分析和报表生成中非常有用,因为它允许我们对数据进行汇总和聚合,从而提取有价值的信息。可以在分组的基础上,添加额外的行来显示每个层级的汇总结果。子句可以按照分组的列或聚合函数的结果进行排序。子句是MySQL中非常强大和有用的工具,它允许我们对数据进行分组和聚合,从而提取有价值的信息。操作符,我们可以进行复杂的数据分析和报表生成。有时候,我们不仅需要分组数据,还需要对分组后的结果进行过滤。在分组和过滤之后,我们可能还需要对结果进行排序。
2025-01-23 15:37:42
1342
原创 mysql函数
字符串函数:用于操作字符串,如连接、查找、替换等。数值函数:用于进行数学运算,如取整、求绝对值、随机数等。日期和时间函数:用于处理日期和时间,如获取当前日期、时间差、格式化日期等。聚合函数:用于对一组值进行计算并返回单个值,如求和、平均值、最大值等。条件函数:用于根据条件返回不同的值,如IF、CASE等。加密函数:用于加密和解密数据,如MD5、SHA等。系统信息函数:用于获取系统信息,如用户信息、版本信息等。JSON函数:用于处理JSON数据,如提取、修改JSON对象等。全文搜索函数。
2025-01-22 16:02:08
309
原创 mysql之表的外键约束
1. 外键约束的基本概念主键(Primary Key):一个表中的一个或多个列,用于唯一标识表中的每一行数据。外键(Foreign Key):另一个表中的列,它引用了主键表中的主键列。外键约束确保外键表中的外键值必须存在于主键表中的主键列中,或者为空。2. 创建表时定义外键约束和employees。-- 创建departments表-- 创建employees表,并添加外键约束3. 级联操作级联操作包括级联删除和级联更新,当主键表中的数据发生变化时,外键表中的数据会自动进行相应的变化。
2025-01-21 16:05:16
440
原创 MySQL 数据操作语言 (DML)
一、引言MySQL是一种广泛使用的开源关系型数据库管理系统。数据操作语言(DML)是SQL的一个子集,主要用于对数据库中的数据进行插入、更新和删除操作。本文将详细介绍MySQL中的DML语句,并提供相应的代码示例。二、创建示例数据库和表在开始介绍DML语句之前,我们需要创建一个示例数据库和表。--创建数据库--使用数据库--创建表三、INSERT语句INSERT语句用于向表中插入新记录。
2025-01-19 12:42:54
356
原创 JAVA之外观模式
外观模式通过提供一个统一的接口,简化了客户端与复杂子系统之间的交互,降低了系统的耦合度,提高了可维护性和可扩展性。然而,在使用外观模式时,也需注意可能增加的系统耦合度、掩盖的系统复杂性以及潜在的性能问题。根据具体的场景和需求合理应用外观模式,可以有效地改善系统的架构和性能。
2025-01-17 15:12:38
367
原创 适配器模式
适配器模式是一种结构型设计模式,主要用于将一个类的接口转换成另一个接口,以便原本由于接口不兼容而无法一起工作的类能够协同工作。该模式通过创建一个适配器类,将目标接口与适配者接口连接起来,实现不同接口之间的兼容性。适配器模式的两种形式类适配器通过继承适配者类并实现目标接口来工作。在Java中,由于不支持多继承,通常采用组合的方式,即适配器类包含一个适配者对象,并将目标接口的方法调用委托给该对象。对象适配器通过在适配器类中包含一个适配者对象,并实现目标接口来工作。
2025-01-16 15:25:17
783
原创 JAVA之单例模式
单例模式(Singleton Pattern)是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来获取该实例。以下是单例模式的详细介绍及JAVA代码实现。单例模式是一种简单且常用的设计模式,适用于需要确保一个类只有一个实例的场景。双重校验锁 双重校验锁单例模式在懒汉式的基础上,通过双重校验锁保证线程安全,同时提高效率。枚举 枚举单例模式利用枚举的特性,实现单例,且自动支持序列化机制,防止反射攻击。静态内部类 静态内部类单例模式利用静态内部类的特性,实现懒加载和线程安全。
2025-01-13 15:50:11
599
原创 工厂方法模式
在实际项目中,可以根据需求为每个具体产品创建一个具体工厂类。当新增产品时,只需增加相应的具体产品和具体工厂类,而无需修改已有代码,从而实现了开闭原则。工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它提供了一个接口,用于创建对象,但允许子类决定实例化的类是哪一个。这样,工厂方法模式将对象的创建逻辑委托给子类,从而实现了创建过程与具体类的解耦。定义 工厂方法模式定义了一个用于创建对象的接口,但让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。
2025-01-09 16:32:40
452
原创 简单工厂模式
简单工厂模式是工厂模式家族中最简单的一种模式,它可以理解为其他工厂模式的一个特殊实现。当新增产品时,只需增加一个具体产品类,并在工厂类中增加相应的创建逻辑即可。(1)工厂类集中了所有产品的创建逻辑,一旦工厂类出现问题,整个系统都会受到影响。定义 简单工厂模式定义了一个工厂类,根据传入的参数来创建并返回不同类的实例,这些类都实现同一个接口。(3)具体产品类(ConcreteProduct):实现抽象产品类的具体产品。(1)工厂类包含必要的逻辑判断,根据客户端传入的参数,动态创建产品实例。
2025-01-08 15:15:49
420
原创 面向对象设计七大原则
这些原则并不是孤立的,它们相互之间有着密切的联系,共同构成了面向对象设计的核心思想。作用:如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。作用:确保继承在程序中正确使用,保证继承关系的父类能够被子类无缝替换,而不影响程序的功能。作用:允许类在不被修改的情况下增加新的功能,这样可以保证已有代码的稳定性。作用:避免胖接口的产生,使得接口的职责更加单一,有利于接口的复用。作用:降低类之间的耦合,提高模块的独立性。
2025-01-07 16:23:50
244
原创 volatile关键字
分析:在双重检查锁定中,使用volatile关键字修饰instance变量,可以防止指令重排序,确保在多线程环境下正确创建单例对象。分析:如果没有使用volatile关键字修饰flag变量,线程1可能无法立即看到线程2对flag的修改,从而导致线程1无法结束。使用volatile关键字后,线程1能够立即看到线程2对flag的修改,从而结束循环。分析:如果没有使用volatile关键字修饰a变量,编译器和处理器可能会对a和b的赋值操作进行重排序,导致线程2中的if条件成立。3. 单例模式的双重检查锁定示例。
2025-01-06 15:55:40
285
原创 BlockingQueue
是 Java 5 中引入的包的一部分,它是一个线程安全的队列,用于实现生产者-消费者模式。put和take,分别用于插入和获取队列中的元素。如果队列已满,put操作将阻塞直到队列有空间;如果队列为空,take操作将阻塞直到队列中有元素可用。BlockingQueue 的实现类Java 提供了几个DelayQueueBlockingQueue 的方法put(E e):将元素插入队列尾部,如果队列已满,则阻塞。take():移除队列头部的元素,如果队列为空,则阻塞。
2024-12-17 14:15:31
188
原创 JAVA多线程之ReadWriteLock
ReadWriteLock是Java中提供的一种锁机制,它允许多个线程同时读取共享资源,但只允许一个线程写入共享资源。这种锁机制相较于传统的互斥锁(如synchronized关键字或ReentrantLock),在处理读多写少的场景下,具有更高的并发性能。从运行结果可以看出,当线程1持有写锁时,线程2和线程3无法读取数据。当线程1释放写锁后,线程2和线程3可以同时读取数据。以下是一个使用ReentrantReadWriteLock的例子,模拟了一个简单的缓存系统,包含读操作和写操作。
2024-12-17 14:11:42
402
原创 Lock锁和Conditio
这个例子展示了如何在Java中使用Lock和Condition来实现生产者消费者模式。与相比,Lock和Condition提供了更灵活的同步机制,允许更细粒度的控制。
2024-12-16 14:09:46
441
原创 多线程之生产者消费者模式扩展
这个例子展示了如何在Java中使用实现生产者消费者模式。通过使用,我们可以更容易地处理多线程同步问题,并简化代码。在实际应用中,这个模式可以根据具体需求进行相应的扩展和优化。
2024-12-16 14:05:55
332
原创 OSI参考模型
会话层和表示层在JAVA中的应用 会话层和表示层在JAVA中的应用不如其他层次明显,但它们的功能通常被集成到应用层协议中。JAVA网络编程涉及OSI参考模型的多个层次,虽然JAVA并不直接提供所有层次的编程接口,但它通过其丰富的API和第三方库支持了从传输层到应用层的开发。二、JAVA与OSI参考模型的关系 JAVA在网络编程中,主要涉及OSI参考模型的以下几层:应用层、传输层、网络层、数据链路层和物理层。同样,JAVA不直接支持数据链路层的编程,但可以使用JNI或第三方库,如Java PCAP。
2024-12-05 15:21:35
1368
原创 JAVA中的ThreadLocal类
ThreadLocal类是Java提供的一个线程局部变量工具类,它可以在多线程环境下为每个线程提供一个独立的变量副本,从而实现线程间的数据隔离。以下是关于ThreadLocal类的详细介绍、代码例子、运行结果及注释。定义:ThreadLocal类位于java.lang包下,用于实现线程局部变量。作用:为每个使用该变量的线程提供一个独立的变量副本,实现线程间的数据隔离。
2024-12-04 16:06:30
505
原创 Fork/Join框架简介
Fork/Join框架是Java 7引入的一个用于并行执行任务的框架,它可以将一个大任务分割成若干个小任务,并行执行这些小任务,然后将每个小任务的结果合并起来,得到大任务的结果。工作窃取算法是指当某个线程的任务队列中没有任务时,它会从其他线程的任务队列中窃取任务来执行。在实际应用中,我们可以根据任务的特点和需求,自定义RecursiveTask或RecursiveAction来实现并行计算。当n小于等于1时,直接返回n;在FibonacciTask类中,定义一个成员变量n,表示要计算的斐波那契数列的项数。
2024-12-03 15:47:08
284
原创 JAVA中的线程池ThreadPoolExecutor
线程池ThreadPoolExecutor是Java并发编程中的重要组件,它能够有效地管理和复用线程,提高程序的性能。定义 ThreadPoolExecutor是Java中的一个线程池实现类,位于java.util.concurrent包下。二、ThreadPoolExecutor代码例子及注释 以下是一个ThreadPoolExecutor的简单示例,包含创建线程池、提交任务、关闭线程池等操作。作用 线程池的主要作用是减少线程创建和销毁的开销,提高线程的利用率,降低系统资源消耗。
2024-12-03 15:43:41
391
原创 Lock锁的使用
接口是其中的核心,它提供了比synchronized更丰富的功能,比如尝试非阻塞地获取锁、能被中断的锁获取以及尝试获取锁时提供超时等。提供了更灵活的锁定操作,比如可以尝试获取锁而不立即阻塞,或者可以响应中断。时,获取锁和释放锁的操作必须成对出现,否则可能导致资源泄露或其他线程无法获取锁。块中释放锁是一个很好的实践,以避免死锁的发生。这样可以确保即使发生异常,锁也能被正确释放。提供了更多的灵活性,但也需要更谨慎地使用。在Java 5之后,引入了一个新的并发API,位。获取锁,然后执行操作,最后在。
2024-12-02 16:00:09
357
原创 线程的同步:同步方法
当线程1和线程2交替执行时,最终计数器的值可能为0,也可能不为0,但不会出现数据不一致的问题。当一个方法被声明为synchronized时,它将确保在同一时刻,只有一个线程可以执行该方法。为了解决这个问题,Java提供了线程同步机制,确保在同一时刻,只有一个线程可以访问共享资源。定义了一个名为Counter的类,其中包含一个共享资源count和一个同步方法increment(),以及一个同步方法decrement()。在main()方法中,创建了两个线程t1和t2,分别执行增加和减少操作。
2024-12-02 15:57:23
391
原创 线程的同步:同步代码块
在多线程编程中,同步是一种机制,用于控制多个线程访问共享资源的方式。当多个线程试图同时访问和修改同一资源时,可能会导致数据不一致或竞态条件。为了防止这种情况,JAVA提供了同步机制。
2024-10-12 15:05:11
350
原创 JAVA多线程的安全问题与解决办法
最后,为了提高性能,我们需要减少锁竞争、消除不必要的锁、进行锁粗化等优化。解决办法:使用原子类(如AtomicInteger、AtomicLong)或锁(如synchronized、ReentrantLock)保证操作的原子性。问题描述:在某些情况下,编译器可能会自动消除不必要的锁,但有时候程序员编写的不必要的同步代码会影响性能。解决办法:确保所有线程都能公平地获取到资源,可以使用公平锁(如ReentrantLock的公平模式)。解决办法:避免循环等待、避免资源不可抢占、避免持有多个锁、按顺序获取锁。
2024-10-12 15:02:03
742
原创 JAVA中的线程控制
线程通信主要涉及到wait()、notify()和notifyAll()这三个方法。线程控制是Java并发编程中的核心内容,涉及到线程的创建、同步、通信、调度等多个方面。使用线程池 线程池可以有效地管理和控制线程的创建和销毁,提高系统性能。ThreadLocal类可以创建线程局部变量,确保每个线程都有自己独立的变量副本。通过这些机制,我们可以更好地管理和控制线程的执行,编写出高效、稳定的并发程序。线程中断是一种协作机制,用于通知线程中断其正在执行的任务。Java提供了线程调度器来控制线程的执行顺序。
2024-10-10 11:21:22
561
原创 JAVA中线程的生命周期
通过掌握线程的状态转换、相关方法和实际应用场景,我们可以更好地控制线程的执行,提高程序的性能和稳定性。线程是Java并发编程的基础,了解线程的生命周期对于编写高效、稳定的并发程序至关重要。当调用线程的start()方法时,线程进入就绪状态。线程执行完run()方法中的代码,或者遇到异常而终止时,线程进入终止状态。:使当前线程进入等待状态,直到其他线程调用notify()或notifyAll()方法。:线程的执行体,线程进入运行状态时执行的方法。:启动线程,使线程进入就绪状态。:唤醒一个处于等待状态的线程。
2024-10-10 11:12:16
629
原创 进程和线程详解
进程和线程是操作系统中执行任务的不同抽象。进程是完成一系列任务的独立单元,而线程是进程内部的具体执行单元。它们之间的关系是线程存在于进程之中,共同完成进程的目标。合理地使用进程和线程,可以让电脑更高效地完成各种任务,就像一个公司通过合理安排各部门和员工的工作,实现高效运营。
2024-09-03 16:35:08
774
原创 JAVA如何使用反射读取注解
通过以上步骤,我们详细介绍了如何在Java中使用反射读取注解。在实际开发中,我们可以根据需求自定义更多功能强大的注解,并通过反射机制来处理这些注解,从而实现代码的解耦和扩展性。在Java中,反射是一种强大的机制,它允许程序在运行时取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。处理注解信息 在读取到注解信息后,我们可以根据实际需求进行处理。,这表示注解将被保留到运行时,这样我们才能通过反射读取它。方法中,我们已经处理了注解信息,即打印出注解的属性值。注解定义 在定义注解时,我们使用了。
2024-08-31 15:41:01
833
原创 JAVA中如何自定义注解
通过以上步骤,我们成功自定义了一个注解@TimeCost,并编写了注解处理器来计算方法的执行时间。在实际开发中,我们可以根据需求自定义更多功能强大的注解,提高代码的可读性和可维护性。Java中的注解是一种特殊的修饰符,它可以被附加到类、方法、变量、参数等上面,用于传递元数据。自定义注解可以让开发者创建具有特定功能的注解,提高代码的可读性和可维护性。编写注解处理器 注解处理器用于解析注解并执行相关操作。使用元注解修饰注解接口 在上面的代码中,我们使用了两个元注解:@Retention和@Target。
2024-08-31 15:34:10
668
原创 JAVA中的元注解
元注解是Java注解机制中非常重要的一部分,它们定义了注解的行为和作用域,使得注解能够以不同的方式被使用。例如,可以结合使用多个元注解来定义复杂的注解行为,还可以通过自定义注解处理器(Annotation Processor)在编译时处理注解。如果一个类使用了@Inherited注解的注解,那么它的子类也会继承这个注解。的必需参数,该参数是一个ElementType枚举的数组,用于指定注解可以应用的目标类型。元注解是用于注解其他注解的注解。Java提供了几个元注解,它们定义了注解的行为和作用域。
2024-08-30 15:39:14
748
原创 JAVA中的内置注解
Java内置注解是Java语言提供的一套标准注解,用于为代码提供元数据,帮助编译器、开发工具和其他程序理解代码的结构和意图。以下是Java中的三个内置注解及其详细介绍、代码例子和运行结果。
2024-08-30 15:27:59
394
点餐平台网站(基于springboot,mysql,java).zip
2025-02-28
租房网站(基于springboot,mysql,java).zip
2025-02-28
自习室预订系统(基于springboot,mysql,java).zip
2025-02-27
准妈妈孕期交流平台(基于springboot,mysql,java).zip
2025-02-27
幼儿园管理系统(基于springboot,mysql,java).zip
2025-02-26
影城管理系统(基于springboot,mysql,java).zip
2025-02-26
学生毕业离校系统(基于springboot,mysql,java).zip
2025-02-26
新生宿舍管理系统(基于springboot,mysql,java).zip
2025-02-26
校园新闻网站(基于springboot,mysql,java).zip
2025-02-24
小区物业管理系统(基于springboot,mysql,java).zip
2025-02-24
网上商城购物系统(基于springboot,mysql,java).zip
2025-02-23
社区维修平台(基于springboot,mysql,java).zip
2025-02-23
tomcat安装教程.zip
2025-02-22
人职匹配推荐系统(基于springboot,mysql,java).zip
2025-02-22
汽车租赁系统(基于springboot,mysql,java).zip
2025-02-22
旅游管理系统(基于springboot,mysql,java).zip
2025-02-21
论坛管理系统(基于springboot,mysql,java) .zip
2025-02-21
旧物置换网站(基于springboot,mysql,java).zip
2025-02-19
简历系统(基于springboot,mysql,java).zip
2025-02-19
职称评审管理系统.zip
2025-02-18
高校餐厅点餐系统.zip
2025-02-18
docker介绍.zip
2025-02-18
毕业生信息招聘平台(基于springboot,mysql,java).zip
2025-02-17
闲一品交易平台.zip
2025-02-17
C语言简单每日签到程序.zip
2025-02-17
c语言乘车计费小程序.zip
2025-02-16
c语言指针介绍.zip
2025-02-16
Spring Boot核心注解详解及其用途
2025-02-14
HTTP协议的基础概念及其在Web通信中的应用详解
2025-02-14
C语言基础语法讲解:变量、运算符、控制结构与内存管理的应用实例
2025-02-14
春节主题网页的设计与实现-基于HTML5/CSS3的技术解析及应用
2025-02-13
java Smart系统-题库及试卷管理模块的设计与开发.zip
2025-02-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人