自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (1)
  • 收藏
  • 关注

原创 线程相关sleep和wait方法

wait()是让获得对象锁的线程等待,会自动释放当前线程占用的对象锁。每个Object对象都有对象锁,既然要释放当前线程占有的对象锁并让其进入WAITING状态,自然要操作对应的对象而不是当前的线程。sleep()是让当前线程暂停执行,不涉及对象类,也不需要获取对象锁。

2024-04-02 16:56:21 200

原创 java反射机制详解

通过反射可以获取任意一个类的所有属性和方法,还可以调用这些方法和属性。动态代理的实现依赖反射。

2024-03-19 19:32:00 256

原创 接口、抽象类和内部类

通过abstract关键字来修饰,抽象类可以包含抽象方法(只有声明,没有方法体)和具体方法(有方法体)

2024-03-19 16:06:00 225

原创 浅拷贝、深拷贝、引用拷贝

浅拷贝会在堆上创建一个新的对象(区别于深拷贝的一点),如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是拷贝对象和原对象共用同一个内部对象。测试从输出结构来看person1的克隆对象和person1使用的仍然是同一个Address对象。

2024-03-19 15:53:19 226

原创 IOC和AOP

是一种设计思想,而不是一个具体的技术实现。思想就是将原本在程序中手动创建对象的控制权,交又Spring框架来管理。

2024-03-19 11:16:54 323

原创 一篇文章看懂jvm&jdk&jre

java虚拟机(JVM,java virtual mechine)是运行java字节码的虚拟机。JVM有针对不同系统的特定语言实现,目的是使用相同的字节码,他们都会给出相同的结果。JDKJDK(Java Development Kit)是功能齐全的Java SDK,是提供给开发者使用,能够创建和编译Java程序的开发套件。包含了java运行环境JRE,编译java源码的编译器javacjdb调试器。

2024-03-18 14:10:36 539

原创 如何实现一个计算器

要实现的计算器功能如下:1、输入一个字符串,可以包含+ - * /、数字、括号以及空格,你的算法返回运算结果。2、要符合运算法则,括号的优先级最高,先乘除后加减。3、除号是整数除法,无论正负都向 0 取整(5/2=2,-5/2=-2)。4、可以假定输入的算式一定合法,且计算过程不会出现整型溢出,不会出现除数为 0 的意外情况。

2024-03-15 17:18:11 361

原创 事务特性及其隔离级别

事务是逻辑上的一组操作,要么都执行,要么都不执行。

2024-03-15 14:55:21 345

原创 重载和重写有什么区别

重载是同样的一个方法能够根据输入数据的不同,做出不同的处理。重写就是当子类继承父类的相同方法,输入数据一样,但要做出区别于父类的响应时,就要覆盖父类方法。

2024-03-14 17:19:28 360

原创 Object类的常见方法

Object类是一个特殊的类,是所有类的父类。主要提供了11个方法。

2024-03-14 16:45:55 367

原创 volatile和synchronized关键字

可以保证变量的可见性,但不能保证原子性。将变量声明为volatile,表示在JVM中这个变量是共享且不稳定的,每次使用都要去主存中进行读取。

2024-03-14 14:22:15 293

原创 Spring IOC和AOP

控制反转控制反转。

2024-03-13 17:32:12 468

原创 一篇文章讲清楚HashMap

HashMap 查询、删除的时间复杂度HashMap的底层实现HashMap的长度为什么是2的幂次方HashMap和HashTable的区别

2024-03-13 17:02:44 359

原创 MySQL系列-分析SQL性能

MySQL 慢查询日志是用来记录 MySQL 在执行命令中,响应时间超过预设阈值的 SQL 语句。开启慢查询设置成功之后,使用命令进行查看。:被日志记录的代码在服务器上的运行时间。User@Host:谁执行的这段代码。Query_time:这段代码运行时长。Lock_time:执行这段代码时,锁定了多久。Rows_sent:慢查询返回的记录。:慢查询扫描过的行数。实际项目中,慢查询日志通常比较复杂,我们需要借助一些工具对其进行分析。像 MySQL 内置的。

2024-03-11 19:25:31 506

原创 MySQL系列-索引

索引是一种用于快速查询和检索数据的数据结构,其本质上可以看成是一种排序好的数据结构。

2024-03-11 19:11:26 494

原创 Java线程的6种状态

线程在生命周期中并不是固定处于某一个状态而是随着代码的执行在不同状态之间切换。

2024-03-11 16:25:08 388

原创 String 为什么是不可变的?String 、 StringBuffer 和 StringBuilder 的区别是什么?

操作少量的数据,适合String单线程下操作大量数据,使用StringBuilder多线程操作字符串缓冲区下操作大量数据,适用StringBuffer。

2024-03-08 11:21:43 350

原创 海量问题TOPN问题

面试题目:如何在10亿个整数中找出前1000个最大的数。

2024-03-07 15:10:55 367

原创 为什么重写equals()时,必须重写hashcode()

hashCode()的作用是获取哈希码,来确定该对象在哈希表中的索引位置。

2024-03-06 17:18:01 370

原创 Redis常见的15个【坑】,避坑指南

原因:SET命令如果不设置过期时间,那么Redis会自动【擦除】这个key的过期时间。

2024-03-05 19:21:43 853

原创 Spring实现Bean注入的常见方式

使用java config类并在其中使用@bean注解来声明bean的注入,并使用@autowired注解进行依赖注入。通过在类的构造函数中声明需要注入的依赖,Spring容器在创建对象实例时自动注入所需的依赖。,而不需要再代码中硬编码这些依赖关系,降低组件之间的耦合度,提高代码的可维护性和灵活性。当 Spring 容器启动时会读取这些配置文件,并自动完成依赖注入。在Spring框架中,依赖注入是一种设计模式,它允许。通过实现接口,并在接口中定义注入方法来实现依赖注入。在 Spring 中,我们通常使用。

2024-03-04 17:20:26 498

原创 Mybatis-plus-generator代码生成器

2.application中加入数据库的相关配置。3.新建一个codeGenerator类。1.在pom文件中加入以下配置。直接运行main()函数即可。

2024-02-06 11:09:15 379

原创 Mybatis和Mybatis-plus的区别

MybatisMybatis-plus

2024-02-05 15:08:48 341

原创 Mybatis

推荐#{}方式取值引用:解析sql时,会将形参变量的值取出,并自动给其添加引号。无SQL注入攻击风险:先用占位符替代参数将SQL语句先进行预编译,然后再将参数中的内容替换进来。由于SQL中的语句已经被预编译过,其SQL意图无法通过非法的参数内容实现更改其参数中的内容,无法成为SQL命令的一部分,可以防止SQL注入${}方式取值引用:解析sql时,将形参变量的值直接取出,并拼接显示在SQL中。

2024-02-05 11:35:18 366

原创 用Redis实现延时任务

订单7天未处理,系统自动确认收货红包24小时未被查收,自动退款。

2024-02-02 16:00:37 532

原创 ThreadPoolExecutor创建线程池

当我们不指定 RejectedExecutionHandler 饱和策略的话来配置线程池的时候默认使用的是 ThreadPoolExecutor.AbortPolicy。在默认情况下,ThreadPoolExecutor 将抛出 RejectedExecutionException 来拒绝新来的任务 ,这代表你将丢失对这个任务的处理。当最大池被填满时,此策略为我们提供可伸缩队列。当前同时运行的线程数量达到最大线程数,并且队列已经被放满任务时,触发拒绝策略。

2024-01-29 16:09:07 454

原创 java基本类型和包装类的区别

基本数据类型的局部变量放在java虚拟机栈的局部变量表中,基本数据类型的成员变量(未被static修饰)存放在java虚拟机的堆中。而包装类属于对象,对象实例存放在堆内存中。:对于基本数据类型来说==比较的是值,包装数据类型来说,==比较的是内存地址。:除了定义常量和局部变量之外,其它地方很少使用基本类型;包装类可用于泛型,而基本类型不可以。:包装类型不赋值就是null,基本数据类型都有默认值且不是null。装箱:将基本类型用它们的引用类型包装起来。:基本类型占用的内存空间小。

2024-01-18 11:04:49 379

原创 Springboot项目启动后自动停止

在创建SpringBoot项目时,Web依赖没有导入,默认以普通java项目运行导致的终止。在pom.xml文件中引入web的jar包,然后刷新maven即可。SpringBoot项目启动后自行停止。

2024-01-17 11:33:47 486

原创 一条sql语句在MySQL中的的执行过程

假设在没有命中缓存的情况下,SQL请求就会来到分析器,分析器明确SQL要完成的功能,以及检查SQL语法是否正确。执行查询时会先查询缓存,MySQL8.0版本后移除。当客户端登录MySQL时,对身份认证和权限判断。将语句分发到对应的存储引擎执行,并返回结果。为SQL提供优化执行方案。

2024-01-15 19:47:38 346

原创 布隆过滤器及在java中的使用

布隆过滤器用于检索一个元素是否在一个集合中。解决缓存穿透的问题。

2024-01-15 19:18:34 349

原创 Sql基础

mysql5.5版本之前MyISAM作为默认存储引擎。mysql5.5版本之后 InnoDB是默认存储引擎。重复读,解决了幻读的问题【快照读和当前读】基于锁和MVCC(多版本控制)实现的。计算、函数、类型转换。

2024-01-15 16:02:17 358

原创 Redis面试问题整理

从节点对主节点的数据进行备份,提升容灾能力。主节点负责写,从节点负责读。如果master宕机,则从slave中选出一台作为master即可实现故障转移。

2024-01-11 15:16:42 364

原创 RocketMQ和Kafka的区别,以及如何保证消息不丢失和重复消费

4)unclean.leader.election.enable = false 当leader副本发生故障时不会从followers副本中和leader副本同步程度达不到要求的副本中选出leader,降低了消息丢失的可能性。但是这样也会带来重复消费的情况,比如,消费了一半还没提交offset突然挂掉,那么这个消息理论上会被消费两次,这种情况怎么办?当消费者刚拿到这个消息准备进行真正消费的时候,突然挂掉了,消息实际上并没有被消费,但是 offset 却被自动提交了。

2024-01-10 19:28:30 1068

原创 SpringCloud和SpringCloudAlibaba的核心组件

配置管理,服务发现,断路器,路由。

2024-01-10 16:17:06 451

原创 Java STL容器

HashMap的初始化大小是16,每次扩容,容量会变为之前的2倍。因此HashMap总是使用 2 的幂作为哈希表的大小。JDK1.8之前的版本多线程环境下扩容可能存在死循环和数据丢失的问题。【当一个桶位中有多个元素需要扩容时,多个线程同时对链表进行操作,头插法可能导致链表中的节点指向错误的位置,从而形成一个环形链表,进而使得查询元素的操作陷入死循环而无法结束】JDK1.8 版本HashMap 采用了尾插法。

2024-01-10 15:44:11 972

原创 什么是线程死锁,如何避免死锁

多个线程同时被阻塞,它们中的一个或全部都在等待某个资源被释放,由于线程无限期的被阻塞,因此程序不可能被终止。

2024-01-10 14:45:41 357

原创 Java多线程的实现方式及原理

构造函数的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。FutureTask使用,实现有返回结果的非阻塞执行方法。《阿里巴巴 Java 开发手册》强制线程池不允许使用。可根据实际情况调整线程数量的线程池。延迟后运行任务或者定期执行任务。我们可以创建多种类型的。线程池创建的两种方式。只有一个线程的线程池。

2024-01-10 11:40:10 364

原创 LCR 136. 删除链表的节点

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。[4,1,9]给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.[4,5,9]给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.

2024-01-08 15:55:04 380 1

原创 链表翻转-迭代/递归解法

给定单链表的头节点head,请反转链表,并返回反转后的链表的头节点。[2,1]head = [][]链表可以选用完成反转。你能否用两种方法解决这道题?

2024-01-08 15:00:03 341

原创 解码字母到数字映射-反向遍历

给你一个字符串s,它由数字('0''9')和'#'组成。我们希望按下述规则将s'a''i''1''9''j''z''10#''26#'返回映射之后形成的新字符串。题目数据保证映射始终唯一。

2024-01-05 16:33:20 340

产生perato随机数的c代码

c语言代码,能够产生符合帕累托分布的随机数,帕累托是从大量真实世界的现象中发现的幂次定律分布,在负载测试中, 通常的做法是估计80%的流量将在总时间段的特定20%内发生。

2017-12-28

空空如也

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

TA关注的人

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