- 博客(46)
- 收藏
- 关注
原创 初识kafka
除了topic,还有一个重要的概念就是分区partition,分区可以发布在不同的服务器上,这样一个主体就可以发布到不同服务器上了,生产者会把消息相应的主题的相应分区下面,那么生产者怎么知道放到那个分区,分为两种情况,一是生产者指定分区,二如果生产者没有指定分区那么消息中的键就起作用啦,分区器会根据消息中的键,指定消息的去处。那么这样子我们就知道一条消息包含了主题,分区,键,值。一个kafka独立的服务器也叫做broker,一个broker里面可能有不同的主题,一个主体呢也可能有多个的分区。
2024-07-20 15:55:06 130
原创 redis面试题
引入缓存会带来什么问题:双写不一致,穿透,击穿,雪崩,并发竞争。双写不一致问题是指在mysql中的数据和在redis中的数据,在更新的过程中,他们实际上还是会有一些时间间隔,那么用户在访问这个redis返回数据呢,就可能会访问到短暂时间的旧数据,还没有来得及更新的redis,这样子就可能会产生数据不一致的问题。(3)缓存穿透:请求不存在的数据项,如果没有适当的策略,将导致数据库面临大量无效查询,增加了不必要的负载。
2024-07-16 21:06:56 295
原创 单元测试,一直转圈,既不报错也不运行结束(ssm junit4 test )
如果没有效果,再看看连接数据库的用户名和密码是否正确,一般是连接数据库出了错,单元测试才回一直转圈,我是检查了一上午才发现,用户名错了。检查是否是数据库的错误,可以在重新写一个单元测试类,里面写一个空方法,如何这个方法能够正确执行,那么就是数据库连接的错误。然后把mysql.version的版本修改为8.x.x。修改dataSource.properties文件。
2024-06-27 11:30:50 391
原创 spring bean生命周期
初始化(Initialization)实例化(Instantiation)销毁(Destruction)属性赋值(Populate)Bean生命周期之10步。
2024-06-14 11:17:32 200
原创 idea 启动tomcat后总是弹出框显示cannot open url.please check this url is correct
如果出现上面情况,修改如下:
2024-06-12 20:23:49 753
原创 HTTP Status 400 – Bad Request Type Status Report Description The server cannot or will not process
HTTP Status 400 – Bad Request Type Status Report Description The server cannot or will not process
2024-06-07 09:06:31 284
原创 JVM 内存结构
程序计数器是一块较小的内存空间,是当前线程正在执行的那条字节码指令的地址。若当前线程正在执行的是一个本地方法,那么此时程序计数器为Undefined。Java 虚拟机栈是描述 Java 方法运行过程的内存模型。局部变量表操作数栈动态链接方法出口信息本地方法栈是为 JVM 运行 Native 方法准备的空间,由于很多 Native 方法都是用 C 语言实现的,所以它通常又叫 C 栈。它与 Java 虚拟机栈实现的功能类似,只不过本地方法栈是描述本地方法运行过程的内存模型。
2024-06-01 16:18:25 1943
原创 类加载器和双亲委派模型
双亲委派模型是描述类加载器之间的层次关系。它要求除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器。(父子关系一般不会以继承的关系实现,而是以组合关系来复用父加载器的代码)
2024-06-01 15:38:30 554
原创 类加载的时机
验证、准备、解析 3 个阶段统称为连接。加载、验证、准备、初始化和卸载这 5 个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始(注意是“开始”,而不是“进行”或“完成”),而解析阶段则不一定:它在某些情况下可以在初始化后再开始,这是为了支持 Java 语言的运行时绑定。
2024-06-01 15:35:15 880
原创 Mybatis初始化
和 Spring 框架 的 IoC 容器初始化 一样,Mybatis 也会通过定位、解析相应的配置文件完成自己的初始化。Mybatis 的配置文件主要有 mybatis-config.xml 核心配置文件 及一系列映射配置文件,另外,Mybatis 也会根据注解进行配置。
2024-05-31 15:13:43 1644
原创 工具类解决事务和过滤器解决事务
所有的事务依次逐个执行,这样事务 之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修 改,可以阻止脏读和不可重复读,但幻读仍有可能发生。READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。原子性:强调事务的不可分割.多条语句要么都成功,要么都失败。一致性:强调的是事务的执行的前后,数据要保持一致。
2024-05-30 21:17:11 242
原创 自定义数据库连接池
mysql连接资源非常宝贵,创建连接和关闭连接花费的时间比较长,使用数据库连接池可以提高我们开发效率,用户从连接池获取连接使用用完了后,需要把连接归还给连接池,所以我们需要用LinkedList链表存储连接。因为我们使用完连接后,不是关闭连接而是把链接还给linklist集合,所以我们需要重写close方法,这里用到了包装设计模式,也可以用代理设计模式。// 3.5 对于不想覆盖的方法直接调用被增强对象的方法来实现。// 3.1 编写一个类,实现与被增强对象相同的接口。//3.装饰设计模式(包装设计模式)
2024-05-30 21:05:49 561
原创 静态代理和动态代理
jdk动态代理,使用jdk动态代理让程序在运行的过程中动态的帮我们去创建代理对象这个类,然后创建对象。被代理对象 student 类。代理接口person 类。
2024-05-23 20:07:06 308
原创 rbac和多级请假业务系统相关面试题
这是目前市场应用的主流,因为项目中涉及到了这些技术,所以在开发的时候,对应vue3以及element plus ui的使用还是比较熟悉的,同时对于vue底层的mvvm的数据绑定过程也是比较了解的。在这个项目中 ,我们使用的前端技术是比较新的,使用了vue3以及饿了么团队所开发的element plus。作为当前项目,我们这个项目基于MVC模式进行开发,通过MVC分层设计,来保证各层之间有效的解耦。
2024-05-09 16:49:47 398
原创 rbac权限和多级请假设计的流程演示和前端页面实现
多级请假:7级及以下申请请假需要部门经理审核,若是请假时长超过72小时,则需要总经理审核,7级申请请将需要总经理审核,总经理请假自动审核通过。业务流程测试:王美美[高级研发工程师](7级以下用户)登录并申请请假(超过了72小时需要部门经理和总经理申请)部门经理审核通过,需要总经理审核(8级)登录,首页消息通知审核通过。如果部门经理审核不通过,则总经理不需要处理也没有系统通知。王美美请假(查过72小时),需要部门经理和总经理审核。部门经理(7级)登录消息通知审核消息并处理审核。王美美查看部门经理审核结果。
2024-05-09 11:16:38 384
原创 bean的生命周期
2、执行实现了BeanFactoryPostProcessor的postProcessBeanFactory方法。6、执行BeanPostProcess的接口的实现对应的before方法。9、执行BeanPostProcess的接口的实现对应的after方法。3、实例化所有的实现BeanPostProcess的接口的实现。7、调用实现了InitialzingBean的after方法。10、调用DisposibleBean的destroy方法。11、调用bean的destroy方法。
2024-05-06 15:18:13 184
原创 spring学习
AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。没有IoC的程序中,我们使用面向对象编程,对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了。采用XML方式配置Bean的时候,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。
2024-05-05 19:34:40 1616
原创 文件上传下载通过监听器实现持久化
文件上传到服务器中的upload文件夹中,文件下载从数据库中获取文件名,然后然后加上upload文件路径,实现持久化是才服务器关闭时,将服务器中upload的文件备份到项目的resources/static中,然后在服务器启动的时候,将resources/static中的备份文件给加载到服务器中的upload (要提前在resources目录下面创建static)文件上传下载实现持久化。
2024-04-30 11:26:58 105
原创 mybatis部署和测试
使用 MyBatis 的主要 Java 接口就是 SqlSession。在介绍 SqlSession 接口之前,我们先来了解如何获取一个 SqlSession 实例。SqlSessionFactory 对象包含创建 SqlSession 实例的各种方法。而 SqlSessionFactory 本身是由 SqlSessionFactoryBuilder 创建的,它可以从 XML、注解或 Java 配置代码来创建 SqlSessionFactory。service中测试。
2024-04-24 11:38:02 118
原创 java面试题
HashMap是 Java中最常用的集合类框架,使用它是基于它的几大特性: HashMap可 以接受null键值和值,而Hashtable则不能;HashMap是非synchronized;HashMap很快;以及HashMap储存的是键值对。
2024-04-22 21:52:35 320
原创 面试题-jvm
栈溢出的情况栈溢出:StackOverflowError举个简单的例子:在main方法中调用main方法,就会不断压栈执行,直到栈溢出;栈的大小可以固定,也可以动态变化。如果固定可以用-Xss设置栈的大小;如果动态变化,当栈大小,到达,内存空间不足,就会抛出OutOfMemory异常。调整栈大小,就能保证不出现溢出吗?不能,因为调整栈大小,只会减少出现溢出的可能,栈大小不是无限扩大的,所以不能保证不出现溢出。分配的栈内存越大越好吗?
2024-04-16 21:51:32 599
原创 ssm整合
pom.xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target&
2024-03-31 19:05:57 833 1
原创 常用正则表达式
)$ 或 ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?4 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?18 负浮点数:^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ 或 ^(-(([0-9]+.[0-9]
2024-01-09 14:25:18 379
原创 java面试题
全网最全72道Java线程面试题什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成该任务只需10毫秒。线程和进程有什么区别?一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同
2023-04-08 13:11:02 98
原创 String ,StringBuffer和StringBuilder的效率测试
public static void main(String[] args) {long startTime = 0L;long endTime = 0L;StringBuffer buffer = new StringBuffer("");startTime = System.currentTimeMillis();for (int i = 0; i < 80000; i++) {//StringBuffer 拼接 20000 次buffer.append(String.valueOf(
2023-03-25 11:44:00 154
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人