- 博客(22)
- 收藏
- 关注
原创 模拟ArrayList的数组扩容机制
根据测试,小于10的容量会频繁进行扩容,是一种巨大的损耗,那么特别大不就没有扩容的损耗了吗?currentCapacity + (currentCapacity >> 1) 是一种常见的数组扩容策略,具体实现了 1.5 倍扩容的逻辑。currentCapacity + (currentCapacity >> 1)计算的新容量是当前容量加上当前容量的一半。currentCapacity >> 1: 这是将 currentCapacity 向右移动 1 位,相当于整数除以 2。这将返回当前容量的一半。
2024-10-20 16:20:13 300
原创 手搓实现一个HashMap
那么要保证一个Key值对应一个Value,就要尽量保证Hash算法的优良性,当然也无法完全避免哈西冲突的问题,如何解决?HashMap的源码作者(Doug Lea, Josh Bloch, Arthur van Hoff, Neal Gafter)已经给出答案:就是使用链表解决。HashMap是底层通过Key值通过计算Hash值,然后放在数组的索引上,实现快速取值。HashMap的实现。
2024-10-20 14:44:47 520
原创 RabbitMQ如何保证消息不丢失?
消息从生产者到达消费者,经过两次网络传输,并且在RabbitMQ 服务器中进行路由。所以可能出现三种消息丢失场景:1.生产者发送消息到 RabbitMQ 服务器的过程中出现消息丢失。可能是网络波动未收到消息,又或者是服务器宕机。2.RabbitMQ 服务器消息持久化出现消息丢失。消息发送到 RabbitMQ 之后,未能及时存储完成持久化,RabbitMQ 服务器出现宕机重启,消息出现丢失。3.消费者拉取消息过程以及拿到消息后出现消息丢失。
2024-09-21 15:34:32 420
原创 RocketMQ架构设计
概念:RabbitMQ 是开源的消息中间件,采用 AMQP(高级消息队列协议)传递。它允许应用程序在行消息之间进行异步通信提供了一种高效、可扩展、可靠的消息传递机制。
2024-09-21 15:10:50 359
原创 消息队列优缺点,RabbitMQ,RocketMQ,Kafka对比
消息队列的优点:包括解耦、流量高来临时可以萧峰等作用,提高系统的稳定性,消息队列的缺点:中间增加消息队列一层也提高系统复杂度和降低可用性,还有一致性问题,所以保证消息队列的高可用性至关重要。
2024-09-21 11:29:58 195
原创 什么是内存泄漏?什么是内存溢出?区别是什么
内存泄漏:程序没有正确地释放不再需要的内存,这些被分配的内存无法再被使用,系统内存消耗会随着时间逐渐增加,长时间运行后可能导致内存不足甚至崩溃。内存溢出:程序在尝试申请内存时,系统已经没有足够的内存可供分配,从而抛出内存不足错误。则是因为新对象或新的程序内存使用超出了系统或虚拟机的可用限制。是一种内存管理上的失误,内存不会被正确释放;
2024-09-20 22:14:16 353
原创 Docker安装Nacos,服务注册到nacos出现报错:exception.NacosException:Client not connected, current status:STARTIN
检查ip,端口,防火墙,版本全部没有问题,报错:exception.NacosException:Client not connected, current status:STARTING。上网搜了一下,2.x版本的nacos使用rpc通讯,使用的是9848和9949端口。telnet 121.37.130.46 9848 连不上。telnet 121.37.130.46 9849 连不上。telnet 121.37.130.46 8848 正常。docker只开了8848端口。
2024-09-20 12:36:32 373
原创 蓝桥杯-小B的宿舍Java解法
当从房间 i 搬运行李到 j 时,i 与 j 之间的走廊都会被占用,但是可以容纳两个不同同学同时搬运。所以,10 分钟之内同一段走廊最多两个人同时搬运,不重叠的走廊也可以同时搬运。但是由于走廊狭窄,走廊里只能通过两个搬运的物品(可以同向也可以反向),因此必须指定高效的搬运计划。接下来 N 行,每行两个正整数 s 和 t,表示一个人,要将行李是从房间 s 移到到房间t。最近,由于转专业和专业分流的原因,宿舍将迎来新的调整,以便组成新的班级后方便管理。输入数据有 T 组测试例,在第一行给出测试例个数 T。
2024-04-06 09:38:14 181 1
原创 mybatis-plus使用时发生 No database selected,The error may exist in xxx/mapper/XXXMapper.java
springboot配置时,大概率是配置不全或者配置有问题导致的No database selected。1.检查 url后面的数据库名是否缺少,是否正确?2.密码账号是否正确?3.如果是mysql8.0以上driver-class-name为 com.mysql.cj.jdbc.Driver;MySQL5.x则是com.mysql.jdbc.Driver。
2023-08-09 22:19:08 897 1
原创 mybatis-plus测试时发生Cannot invoke“xxx“because“this.userMapper“is null
mybatis-plus使用时发生 Cannot invoke "xxx"because "this.userMapper" is null,Cannot invoke "com.tsin.usercenter.mapper.UserMapper.selectList(com.baomidou.mybatisplus.core.conditions.Wrapper)"
2023-08-09 21:43:53 5592 3
原创 2014 年上半年软件设计师下午试卷与详细解析
需求分析] 系统需要维护电子商务公司的员工信息、客户信息、家电信息和家电厂商信息等,员工信息主要包 括:工号、姓名、性别、岗位、身份证号、电话、住址,其中岗位包括部门经理和客服等,客户信息主 要包括:客户 ID、姓名、身份证号、电话、住址、账户余额。解析:“完成维修”功能中的描述,机械师可根据维修记录文件中的待维修机械问题,完成巴士维修,缺少数据流“待维修机械问题”,起点:D2,终点:3 完成维修;解析:第一步:勾画出题目中的实体关键词:巴士,车库,机械师,库存管理系统,巴士司机,主管,会计。
2023-08-05 10:54:25 375 2
原创 SLF4J: Class path contains multiple SLF4J bindings报错,logback-classic.jar与slf4j-log4j12.jar包冲突如何解决?
右键pom.xml,点击Analyze Dependencies - 搜索找到slf4j-log4j12.jar,右键Go to Maven Dependency,打开所在依赖的pom文件。这个是maven依赖引入的logback-classic.jar包与slf4j-log4j12.jar包发生冲突,jdk不知道该用哪一个包。手动删除一个包,推荐删除slf4j-log4j12.jar。
2023-08-04 21:22:00 1104 4
原创 【保姆级】时间复杂度如何计算?
时间复杂度如何计算?时间复杂度如何计算?时间复杂度如何计算?时间复杂度如何计算?时间复杂度如何计算?时间复杂度如何计算?时间复杂度如何计算?保姆级别教学
2023-08-04 17:16:58 73 1
原创 Java Spring的8大模块
5.Spring是开源框架,轻量级框架,是面向切面(AOP)和控制反转(IoC)的容器框架。6.Spring0为简化而生,让程序员只关心核心业务的实现,不关注非业务逻辑代码。3.控制反转(IoC)是一种编程思想,也是一种设计模式,控制反转做了两件事:、2.Spring 采用“控制反转”这种编程思想来解决这个问题。1.软件要符合OCP开闭原则和DIP依赖倒置原则。4.依赖注入是控制反转”这种编程思想的具体实现。1.不再new对象,new对象的权利交出去。2.对象之间的维护权限交出去。第二种:构造方法注入。
2023-04-18 15:51:05 94
原创 Java Spring的配置文件
1.Spring的配置文件一般在resourse里面,resourse编译后就是c类的根路径,可维护性更强2.Spring.xml文件就是配置文件,注意名字可以不是Spring,没有限制。3.可以看到,以<beans></beans>结尾,里面是一个个的<bean></bean>容器。4.bean里面有两个属性非常重要,就是id和class。id就相当于bean的身份证号,具有唯一性class的格式是必须填写类的全路径,就是带包名的。
2023-04-18 15:47:31 311
原创 Java String & String Builder & String Buffer的区别
Java对String的性能优化主要是,当我们new很多相同的对象,Java会创建多个对象,String这种对象在项目中用的非常多,这样可想而知,会造成非常大的资源浪费,为此Java提供了字符串对象池,可以有效避免资源浪费,提高性能,当创建的对象有相同时,就可以复用。StringBuilder是可变的这样就可以修改字符串,底层和String是一样的,不过没有private static修饰符,这样也就有线程不安全问题。修饰,保证String类型的私有和静态。String是不可变的,在底层代码中由。
2023-04-18 15:39:37 186
原创 Java Spring log4g2
Spring 6已经内置log4g2,如何启用log4g2日志,需要引入依赖。配置文件必须叫log4g2.xml。
2023-04-18 15:34:43 130
原创 Java 反射
java我们知道,当类中属性,方法private后,我们是不可以直接读取的,只能通过构造方法来实现set和get获取,而反射机制允许程序运行时读取和操作类的任何内部信息,如类名,类方法,类属性,当然,这也存在安全性问题。在加载完类后,堆内存的方法区会产生一个Class类型的对象,这个对象包含完整的类的信息。这个对象就像一面镜子,Java的设计者非常形象的将这一技术命名为反射。Java的设计者决定用反射来解决问题,有了反射,Java又成为“准动态语言”反射的英语:reflection。class类的常见方法。
2023-04-11 18:19:18 132 1
原创 Java 注解
什么是注解?Java中有一个相似的词:注释简单说,注解和注释一样,是给人看的,但不同在于它还给机器看注解的“解”字也说明了这一点1.注解英文 annotation,是JDK1.5引入的技术2.注解有检查和约束作用3.注解不是程序本身,可以对程序做出解释,这一点和注释没有区别//注解参数的格式:参数类型+参数名();定义后自动继承java.lang.annotion.Annotation接口示例中name就是参数。
2023-04-11 16:08:44 132 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人