自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (4)
  • 收藏
  • 关注

原创 CountDownLatch使用

CountDownLatch 是 Java 并发编程中常用的一个工具类,它位于 java.util.concurrent 包下。CountDownLatch 允许多个线程等待其他线程完成操作,直到计数器的值达到零,所有等待的线程才会被释放并继续执行。

2024-09-13 16:38:53 376 1

原创 jvm关闭时的钩子函数

Runtime.getRuntime().addShutdownHook()是Java标准库中java.lang.Runtime类的一个方法,用于在虚拟机关闭之前执行特定的代码逻辑。Runtime.getRuntime().addShutdownHook()是Java标准库中java.lang.Runtime类的一个方法,用于在虚拟机关闭之前执行特定的代码逻辑。当程序终止时(通过正常关闭或收到终止信号),注册的钩子线程将会被启动,并执行其中定义的代码逻辑。

2023-10-26 16:00:55 573

原创 spring boot利用redis作为缓存

在 Spring Boot 中,可以使用 Spring Cache abstraction 来实现缓存功能。Spring Cache abstraction 是 Spring 框架提供的一个抽象层,它对底层缓存实现(如 Redis、Ehcache、Caffeine 等)进行了封装,使得在不同的缓存实现之间切换变得更加方便。Spring Cache Abstraction 的实现原理主要是通过在运行时动态创建代理对象来实现的。

2023-10-26 15:15:44 1098

原创 JAVA加密算法

加密:明文P通过AES加密函数和密匙K进行加密,得到秘文C。解密:秘文C通过AES解密函数和密匙K进行解密,得到明文P。加密方:通过公钥和加密函数对明文进行加密。解密方:通过解密函数和私钥对密文进行解密。

2023-10-11 20:16:11 386

原创 springboot配置

从以下位置的文件加载属性,并将它们添加到Spring/config/config列表按优先级排序(在列表中较高位置定义的属性将覆盖在较低位置中定义的属性)。二、切换别的配置文件如果不喜欢作为配置文件名,则可以通过指定环境属性来切换到另一个文件名。您还可以使用环境属性(以逗号分隔的目录位置或文件路径列表)来引用显式位置。

2023-10-11 19:58:24 199

原创 ThreadGroup

一、简介(线程组)是Java中用于组织线程的一种结构,它提供了对线程的层次化管理。通过线程组,可以将一组线程组织成一个树状结构,方便对线程进行统一控制和管理。下面是的一些主要特点和用法:层次结构:线程组能够形成层次结构,具有父子关系。每个线程组都有一个父线程组,除了主线程组(默认的顶级线程组)外。通过层次结构,可以方便地对整个线程组进行组织和管理。

2023-10-09 17:27:13 436

原创 Java获取cpu和内存相关参数

以上示例代码演示了如何使用Java来获取CPU核心数和内存的相关参数。请注意,这些参数的具体获取方式可能因操作系统或Java版本而有所不同。对象的不同方法获取有关内存的不同信息,比如初始大小(方法分别获取堆和非堆内存使用情况。在Java中,可以使用。类来获取与CPU和内存相关的参数。方法获取CPU的核心数。

2023-10-09 17:15:26 1591

原创 java中的阻塞队列

在Java中,阻塞队列是一种特殊类型的队列,提供了线程安全的生产者-消费者模式。阻塞队列具有阻塞的特性,当队列为空时,试图从队列中获取元素的操作将被阻塞,直到队列中有可用元素;当队列已满时,试图向队列中添加元素的操作将被阻塞,直到队列中有空闲容量。Java提供了多个实现了阻塞队列接口()的类,常见的阻塞队列有一个由数组实现的有界阻塞队列,按照先进先出(FIFO)的顺序对元素进行操作。需要指定队列的容量大小。一个由链表实现的可选有界/无界阻塞队列。在无界模式下,队列的容量大小可以是无限的;

2023-10-05 14:53:11 71

原创 java锁

Synchronized锁(内置锁) 适用于对单个方法或代码块进行同步,实现简单的线程互斥。 对于小规模的同步需求和简单的线程安全问题,使用synchronized是一种便捷和有效的选择。 ReentrantLock锁 适用于需要更高级的线程同步需求,相对于synchronized提供了更多的功能和灵活性。 可以使用ReentrantLock的lock()和unlock()方法来手动控制锁的获取和释放。 可以使用ReentrantLock的tryLock()方法来尝试获取锁

2023-10-03 17:16:10 158

原创 Java守护线程

在Java中,守护线程(Daemon Thread)是一种特殊类型的线程,它是为其他线程提供服务的后台线程。当所有非守护线程结束时,守护线程也会随之结束。创建守护线程的方式与创建普通线程相同,只需要将线程的方法设置为true即可。守护线程通常用于执行后台任务,例如垃圾回收、自动保存或其他不需要与用户交互的任务。需要注意的是,守护线程并不是程序的关键部分,当所有非守护线程结束时,Java虚拟机会自动退出,并且不会等待守护线程执行完毕。因此,守护线程的执行不能依赖于具体的时间点或顺序。

2023-10-03 16:32:31 697

原创 java 终止线程的4种方式

在线程的执行代码中,使用一个布尔类型的标志位来标识线程是否需要终止。线程在执行过程中,不断地检查这个标志位,如果标志位为true,则主动退出线程执行的循环或方法,从而终止线程的执行。

2023-09-28 11:22:15 3586

原创 JVM 内存区域

JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线程共享区 域【JAVA 堆、方法区】、直接内存。线程私有数据区域生命周期与线程相同, 依赖用户线程的启动/结束 而 创建/销毁(在 Hotspot VM 内, 每个线程都与操作系统的本地线程直接映射, 因此这部分内存区域的存/否跟随本地线程的 生/死对应)。线程共享区域随虚拟机的启动/关闭而创建/销毁。

2023-09-28 10:59:01 150

原创 Redis实现分布式锁

需要注意的是,上述代码仅为演示,并没有处理锁竞争时的情况,例如重试机制和死锁检测等。此外,还有其他更复杂和健壮的实现方式,例如使用 RedLock 算法等,可以在高并发和分布式环境下保证锁的正确性。命令的原子性,可以保证在多个客户端同时尝试获取锁的情况下,只有一个客户端能够成功设置锁的值,其他客户端会返回 0。(Set if Not eXists)是 Redis 提供的一个原子性命令,用于在键不存在的情况下设置键的值。这个命令通常与分布式锁的实现相关,用于确保在并发环境下,只有一个客户端能够获取到锁。

2023-09-26 19:54:56 81

原创 Lambda表达式

Java 8引入了一项重要的功能 - Lambda表达式。Lambda表达式是一种简洁而强大的编码方式,它可以用来传递行为(函数)作为参数,并在函数式接口上进行操作。其中,指定了传递给Lambda表达式的参数,表示Lambda表达式的执行体。Lambda表达式可以用于处理函数式接口(Functional Interface)的实例。函数式接口是一个只有一个抽象方法的接口,例如Java标准库中的Runnable和Comparator接口。

2023-09-26 19:37:53 190

原创 java8 Stream API

Stream API 是 Java 8 中引入的一个新的抽象层,用于对集合数据进行操作和处理。它提供了一种新的、声明性的方式来处理集合数据,使代码更简洁、更易读、更易维护。Stream API 的主要作用是对集合数据进行筛选、转换、聚合等操作,而无需显式地使用循环。它将集合数据的操作抽象成一个流(Stream),开发者可以在流上进行一系列的操作,最终得到想要的结果。Stream API 的操作可以分为两类:中间操作和终端操作。中间操作是指在流上进行的转换操作,如筛选、映射、排序等。

2023-09-25 16:26:57 249

原创 java中线程的创建方式

Java中的线程是一种独立执行的路径,用来实现并发执行的程序。线程可以被看作是在程序中独立运行的一段代码,它能够同时执行多个任务。

2023-09-22 17:53:36 69

原创 plsql14中快捷键的设置

使用:输入 st,点击tab建即可。

2023-09-13 11:04:41 1156

原创 建造者模式

建造者模式(Builder Pattern)是一种创建型设计模式,用于将复杂对象的构建过程与其表示分离,以便于相同的构建过程可以创建不同的表示。建造者模式的主要目标是通过一个独立的建造者对象来构建复杂对象,而不是在对象自身中直接进行构建。这使得构建过程更加灵活,可以根据需要使用不同的建造者来构建不同的对象表示,而不需要修改对象的代码。下面是建造者模式的一般结构:产品(Product):表示被构建的复杂对象。它包含了多个部件,并提供了一些方法来访问和操作这些部件。

2023-09-07 20:27:02 91

原创 约瑟夫环问题

输入:20 输出20 ,输入10,输出4。

2023-08-15 15:13:53 82

原创 华为OD-分糖果

小明能不能平均分配糖果,取决于他手中的糖果数是不是偶数,如果是,则他只记平均分配一次的次数,否则,则要记两次,放回或者取出的次数和平均分配的次数。输入10,返回2,输入28,返回7。

2023-08-11 00:34:01 257

原创 华为OD算法题-分苹果问题

接下来,我们尝试找到B可以获取的苹果重量最多的情况。我们首先假设B获取较重的那一堆,然后逐个尝试减小B获得的苹果数量,直到满足A的情况。在每次尝试中,我们使用十进制加法计算B获得的苹果重量,包括正常进位,然后检查是否满足A的要求。首先,我们需要按照A的计算规则将苹果分成两堆。根据A的规则,我们将每个苹果的重量转换为二进制数,并使用二进制加法计算每堆的重量。如果无法满足A的要求,即两堆的重量不等,那么无法继续进行。i & (1 << j) 表示i的二进制数,第j位为1时,返回true,否则则返回false。

2023-08-10 23:39:34 376

原创 spring boot中多环境配置文件切换

启动程序,可以看到端口号为8890为dev环境。换成prod,端口号变为8892。设置VM options为。

2023-08-04 16:38:14 242

原创 spring boot启动端口被占用解决

在Spring Boot应用程序中,可以通过配置文件或代码来更改应用程序的端口。你可以选择将应用程序切换到一个未被其他应用程序占用的端口,例如8081或8888。杀掉占用8080端口的进程(仅限Unix/Linux系统):如果你无法识别哪个应用程序在使用8080端口,在Unix/Linux系统中使用以下命令杀掉占用该端口的进程。问题:spring boot启动报错:Web server failed to start. Port 8080 was already in use。

2023-08-03 17:13:17 1175

原创 spring boot自带的start详解

使用Spring MVC和Spring HATEOAS构建基于超媒体的RESTful Web应用程序的入门者。使用Spring云连接器的初学者简化了与Cloud Foundry和Heroku等云平台中的服务的连接。使用Spring Boot的Actuator的启动器,它提供生产就绪功能,帮助您监控和管理您的应用程序。使用MongoDB面向文档的数据库和Spring Data MongoDB Reactive的入门者。使用MongoDB面向文档的数据库和Spring Data MongoDB的初学者。

2023-08-02 09:14:39 355 1

原创 java8分组

Java 8引入了Stream API,其中包含用于分组数据的功能。使用Stream API的groupingBy()方法可以根据给定的条件将元素分组。假设我们有一个包含Person对象的列表,每个Person对象有一个name属性和一个age属性。我们想要按照年龄段将Person对象进行分组。

2023-07-31 09:46:08 3008 1

原创 spring boot中定时任务的异步执行

注解来开启 Spring 的异步执行功能。同时,还需要配置适当的线程池来支持异步任务的并发执行。通过注解的组合使用,可以实现在定时任务执行时以异步的方式处理逻辑,从而避免阻塞主线程的情况,提高应用程序的并发能力。所以,将该注解添加到一个方法上后,该方法将在每天的上午7点到晚上7点之间的每个小时的第50分钟执行一次。表示将该方法定时执行,时间规则为每天从上午7点到晚上7点之间的每个小时的第50分钟触发执行。需要注意的是,异步定时任务需要在配置类上添加。注解,并在异步方法内部调用定时任务的方法。

2023-07-28 12:01:25 791 1

原创 JDK动态代理

JDK动态代理是Java语言中一种实现代理模式的机制。它允许在运行时动态生成代理类和代理对象,这些代理对象可以拦截被代理对象的方法调用,进行一些额外的操作,然后再将调用转发给被代理对象。使用JDK动态代理,你需要定义一个接口作为被代理对象和代理对象之间的中介,然后使用Proxy类和InvocationHandler接口来生成代理对象。这就是JDK动态代理的基本用法。通过代理对象,你可以在方法调用前后进行一些额外的操作,例如日志记录、性能监测等。

2023-07-14 15:29:45 125 1

原创 Spring Boot应用中引用外部的JAR包

对于Maven项目,在。替换为实际的JAR包坐标和版本号,将。替换为实际的JAR包坐标和版本号。替换为实际的仓库ID和URL,将。替换为实际的JAR包路径。对于Maven项目,在。对于Maven项目,在。

2023-07-14 14:57:39 2166 1

原创 redis数据结构和常用命令

有序的字符串集合,每个成员都关联着一个分数,可以根据分数进行排序和范围查询。一种特殊的字符串结构,可以进行位操作,例如统计在线用户、跟踪用户活动等。有序的字符串列表,可以在列表的两端进行插入、删除和查找操作。无序且唯一的字符串集合,支持集合的交集、并集和差集等操作。用于提取大数据流中的唯一元素数量的近似结果的算法。最基本的数据结构,可存储字符串、整数或浮点数。存储地理位置信息,并进行几何位置计算和查询。键值对的无序散列集合,适合存储和检索对象。

2023-07-11 21:03:04 266

原创 java集合

Java中的集合框架是一组类和接口,用于存储和操作一组对象。它提供了各种数据结构和算法的实现,以满足不同的需求。需要注意的是,集合框架中的类都是泛型类,可以存储任意类型的对象。此外,集合框架还提供了许多算法和工具类,以便更方便地操作和处理集合。在选择使用集合框架的类时,要根据具体的需求和场景选择合适的类。如果需要高效的插入/删除操作且元素需要有序,可以考虑使用。:是集合框架的根接口,表示一组对象的集合。如果需要去重且不关心元素顺序,可以使用。如果需要随机访问元素,可以使用。如果需要有序映射,可以使用。

2023-07-05 17:56:09 135 1

原创 map remove方法报错

在遍历Java的Map并且在遍历过程中删除元素时,如果map中的元素有多个的时候,会遇到"ConcurrentModificationException"的错误。为了安全地在遍历Map时删除元素,应该使用Iterator迭代器及其"remove()"方法。通过使用"iterator.remove()"方法,可以在遍历Map时删除元素而不会引发"ConcurrentModificationException"。请将"/* 判断是否需要删除当前元素的条件 */"替换为您自己的逻辑,以确定要删除的元素。

2023-07-03 20:35:08 919 1

原创 JAVA hashmap底层结构

当我们从HashMap中获取元素时,首先会根据key的hashcode值计算出该元素在数组中的位置,然后遍历该位置上的链表(或红黑树),直到找到对应的元素或者遍历完整个链表(或红黑树)为止。为了解决哈希冲突,HashMap采用了链表(或红黑树)的形式来存储元素,当链表长度达到一定阈值时,会将链表转换为红黑树,以提高查找效率。当我们向HashMap中添加元素时,首先会根据key的hashcode值计算出该元素在数组中的位置,如果该位置上已经有元素了,那么就会在该位置上的链表(或红黑树)上继续添加元素;

2023-06-26 12:00:52 350 1

原创 java remove(i)方法时的索引错位问题解决

例如,如果我们有一个List,其中包含元素[A, B, C, D, E],然后我们想要删除索引为1、3、4的元素,如果我们按照以下方式执行remove(i)方法: list.remove(1);在每次循环中,我们使用iterator.next()方法获取下一个元素,如果该元素需要被删除,我们就使用iterator.remove()方法将其从List中删除。这是因为,当我们执行list.remove(1)时,元素B被删除,索引3和4向前移动了一位,此时索引3对应的元素变成了E。因此,最终结果中包含了元素E。

2023-06-21 15:28:51 321

原创 java实现每个线程单独持有变量

ThreadLocal类是一个线程本地存储变量的工具类,它可以为每个线程创建一个独立的变量副本,这样每个线程就可以独立地操作自己的变量副本,而不会互相干扰。具体实现方法是,创建一个ThreadLocal对象,并重写它的initialValue()方法,该方法会为每个线程创建一个独立的变量副本。然后,我们创建了5个线程,并在每个线程中使用get()和set()方法来访问和修改自己的变量副本。最后,我们输出了每个线程中的变量值,可以看到每个线程都持有自己的变量副本,并独立地进行操作,互不干扰。

2023-06-19 21:23:31 816

原创 spring 事务失效

当事务执行过程中发生异常,如果异常没有被正确捕获并处理,那么事务会被回滚,但是如果异常被捕获并忽略了,那么事务就会失效,不会被回滚。当事务方法在同一个类中被调用时,Spring会使用自我调用的方式执行该方法,此时@Transactional注解会失效。当一个事务方法内部调用另一个事务方法时,如果被调用的方法没有使用@Transactional注解,那么它的事务会失效。当事务方法不是public的时,Spring会抛出异常,此时事务也会失效。

2023-06-18 16:07:21 310 1

原创 spring 框架中的设计模式

Spring框架中的适配器模式应用比较广泛,如HandlerAdapter、ViewResolver、MessageConverter等,它们都是通过适配器来实现不同组件之间的兼容。Spring框架中的JdbcTemplate就是模板方法模式的应用,它定义了一组通用的数据库操作方法,具体实现由子类完成。Spring框架中的事件机制就是观察者模式的应用,它允许Bean在发生特定事件时通知其他Bean。Spring框架中的AOP就是代理模式的应用,它通过代理对象来实现对目标对象的增强。

2023-06-18 15:31:57 309 1

原创 spring 如何解决循环依赖问题

4. 最后,Spring会将该Bean放入singletonObjects缓存中,并从earlySingletonObjects缓存中移除该Bean。为了解决这个问题,可以使用构造函数注入代替Setter方法注入,或使用@Autowired注解的required属性设置为false,以允许循环依赖的Bean为null。3. 然后,Spring会对该Bean的依赖进行注入,如果发现依赖的Bean也在创建中,就会从singletonFactories缓存中获取该Bean的代理对象,而不是直接使用该Bean。

2023-06-17 14:43:42 127 1

原创 Spring Bean的生命周期

Spring容器调用Bean实例的Aware接口方法,例如BeanNameAware、BeanFactoryAware、ApplicationContextAware等。Spring容器调用Bean实例的初始化方法,例如InitializingBean接口的afterPropertiesSet方法或自定义的init方法。Spring容器在关闭时调用Bean实例的销毁方法,例如DisposableBean接口的destroy方法或自定义的destroy方法。Bean实例可以被其他Bean或应用程序代码使用。

2023-06-17 09:18:37 106 1

原创 spring IOC和AOP

在Spring AOP中,切面由切点和通知组成。在运行时,Spring AOP 通过动态代理技术创建一个代理对象,该代理对象可以拦截目标对象的方法调用,并在方法调用前后执行相应的通知。通过这种方式,Spring IOC容器将对象的创建和对象之间的关系的维护与程序的业务逻辑分离开来,使得程序的设计更加灵活和易于维护。在Spring IOC容器中,对象的依赖关系是通过配置文件来实现的,程序员只需要在配置文件中声明对象之间的关系,Spring容器就会自动完成对象的创建和对象之间的关系的维护。

2023-06-15 10:29:24 106 1

原创 Mysql引擎

NDB Cluster引擎(也称为MySQL Cluster)是MySQL中的分布式数据库解决方案,它可以在多个计算机之间分布数据和负载。NDB Cluster引擎适合用于需要高可用性和可伸缩性的应用场景,如在线游戏和社交网络等。但是,由于数据存储在内存中,因此如果服务器崩溃,则数据将会丢失。MEMORY引擎适合用于缓存和临时表等应用场景。InnoDB是MySQL中最常用的引擎之一,它支持事务和行级锁,并且具有ACID事务特性。MyISAM是MySQL的默认引擎,它不支持事务和行级锁,但是支持表级锁。

2023-06-14 16:19:01 70 1

linux连接工具,免费好用

linux连接工具,免费好用

2025-04-01

idea皮肤大全-都是精品

让开发代码更有感觉-------------idea皮肤

2025-04-01

校园二手租赁系统前后端

内容概要:通过springboot +vue2实现的一个校园租赁系统,功能有1、用户注册 2、用户登录 3、个人资料编辑 4、发布出租商品(出租) 5、租商品(租) 6、求租专区 7、发表评论 8、搜索出租商品 9.订单查询以及购物车。 适合人群:毕设 能学到什么:①vue和spring boot 综合练习;②项目实战 下载即能使用,自带sql

2024-05-09

气象领域python色斑图绘制程序

可绘制降水分布色斑图,温度分布色斑图,对应的图例数据,标题数据,可绘制中心城市名称,添加标注等

2023-06-09

基于Unity 3D的太阳系VR模型

本代码是基于Unity 3D的太阳系模型,实现了太阳系,可以通过鼠标进行相关操作

2019-04-17

计算机二级offic

2018年3月office题库,安装直接可用,免序列号安装,要其他题库可联系我。

2018-05-19

二级C语言题库

包含了最近计算机所有考题,直接安装可用,不需要破解,需要其他题库可联系我

2018-05-19

微信小程序

打车微信小程序前端,功能齐全,装上就可以用,适合初学者学习

2018-05-13

空空如也

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

TA关注的人

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