swagger
已经被淘汰现在公司使用的APIFOX,以后有需要在学
MyBatisPlus快速入门
官方文档https://baomidou.com/introduce/ 入门案例引入依赖12345<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version></dependency> 日志相关配置12345logging: level: com.itheima: debug # 设置项目包 com.itheima 及其子包的日志级别为 DEBUG(输出详细信息) pattern: dateformat: HH:mm:ss # 日志时间格式仅显示小时:分钟:秒(不显示毫秒和日期) 定义Mapper首先,在启动类上面配置@MapperScan(“path/xx”),用于扫描持久层。 1public interface UserMapper extends ...
git使用记录
GitHub凭证问题描述:使用git在GitHub上面clone了自己项目的代码,使用vscode打开修改提交代码,进行了一次网页登陆认证,但是vscode里面找不到任何有关认证的信息。想要这个电脑上面的代码不能提交,想要清除这个类似的凭证。 解决办法: Windows:打开“控制面板” → “凭据管理器” → “Windows凭据” → 在“通用凭据”里找到 git:https://github.com 相关的条目,点击“删除”。
vscode使用记录
查看git追溯注释安装插件:Git Blame Annotations然后就可以在行数的地方右键点击Annotate with Git Blame Please clean your repository working tree before checkout原因: > 有时候在写代码前未更新远程代码,会出现代码冲突。 123451.git stash 先将本地修改存储起来 2.git pull 拉取远程,这一步骤在 vscode 执行会快很多 3.git stash pop 还原暂存内容 此系统上禁止运行脚本12345678>npm inpm : 无法加载文件 E:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。所在位置 行:1 字符: 1+ npm i+ ~~~ + CategoryInfo : SecurityError: (:...
study
学海无涯naocs、feign、mongodb,flowlong,swagger、rabbitmg、redis、xxl-job、ruoy、security、 JWT、 sentinel, seata、 mybatis-plus, TDengine,nebula graph、 milvus、 MinlO/ FastDFS/ 七牛云、XXL-J0B.APIFOX、pageHelper、自定义注解、雪花算法、策略模式、python脚本、git、github、软考、pmp、group by 也得研究一下。Kafka也是被我用上了,后面补呀。 某些使用mongo的理由┌─────────────────────────────────────────────────────────────────┐│ 为什么 GridCheckRecord 用 MongoDB? │├─────────────────────────────────────────────────────────────────┤│ ...
场景分析
本文记录面试中实际遇到的和可能遇到的场景面试题
jvm面试
JNI是什么Java编译器把Java文件编译为字节码文件之后,jvm执行引擎将字节码指令解释为对应操作系统能运行的指令,这也是为什么Java是编译和解释共存的语言。当Java代码执行的时候,需要调用底层的c或者c++写的本地方法,所以这里就需要本地方法接口(JNI)去和本地方法库做交互。 JVM的垃圾回收机制是怎么样的?想要回收垃圾,先得看一个对象他是不是垃圾,一般有两种方法: 引用计数法:如果对象被引用了,计数器+1,如果取消引用了就-1,计数器为零就可以回收了,简单除暴。但是他无法处理循环引用的问题。 可达性分析:对象A引用B,B引用C,C引用D会形成一个有向图。可达性分析会从根对象(gc root)出发遍历这个有向图,遍历不到的就是不可达对象,就是垃圾。 三色标记法:用于遍历标记判断的,用三种颜色去标记对象的状态。但是存在两个问题,一个是浮动垃圾,另一个是漏标的问题。 判断对象是垃圾之后,就需要使用垃圾回收算法去处理。基础的算法有三种: 标记清除算法:从gc roots 出发,去遍历标记所有可达性的对象,之后遍历堆去清除所有不可达的对象。缺点会产生内存碎片。 标记...
RocketMQ面试
如何保证消息的可靠性 生产者发送阶段:开启发送确认,失败了需要重试;核心业务可以落本地消息表或者事务消息,避免本地事务成功但是消息没有发送出去。 broker存储阶段:消息要持久化,关键的topic/队列配置副本高可用队列,刷盘策略和副本确认策略要和业务可靠性要求匹配。 消费者处理阶段:业务处理成功后再ACK或提交offset;处理失败要重试、斤死信队列或进入补偿流程。 业务兜底阶段:通过对账任务、补偿任务、警告和人工处理兜住极端异常。 不同的MQ的实现细节不同,但思路都一样:确认、持久化、重试、幂等、补偿。 如何处理重复消费幂等生产环境通常很难保证消息绝对只被消费一次,因此必须做幂等操作。幂等方案: 业务唯一索引 状态机 消费记录表 redis去重
Netty面试
Netty的ByteBuf与ByteBuffer相比的优势 灵活性和易用性:Java NIO的ByteBuffer虽然提供了对直接内存的支持,但其API相对较低级,使用起来相对繁琐。Netty的ByteBuf则是对Java NIO ByteBuffer的封装,并提供了更加灵活和易用的API,使得开发者可以更方便地操作数据,处理字节缓冲区。 可扩展性:Netty的ByteBuf是一个可扩展的缓冲区实现,它支持自动扩容和更高效的内存管理。在大量数据传输时,Netty的ByteBuf可以更好地处理动态增长和缩小,避免了频繁的内存复制和重新分配。 零拷贝优化:Netty的ByteBuf实现了”零拷贝”技术,即在数据传输时,可以避免将数据从一个缓冲区复制到另一个缓冲区,从而减少了数据在内存中的多次拷贝,提高了性能。 池化支持:Netty的ByteBuf支持内存池,可以通过池化的方式管理内存,降低内存分配和回收的开销,减少了垃圾回收的频率,从而提高了性能和效率。 内存释放:Netty的ByteBuf提供了更直观和安全的内存释放方式,开发者无需手动调用clear()或compact()等方法来...
Java基础面试
Java基础⭐包装类型常量池技术了解吗?常量池也叫缓存池,主要存储一些常用的数据。基本类型除开double和float浮点数太大了,没有常量池,其他都实现了。当发生自动装箱的时候,如果基本类型的值在缓存的范围内,则不会重新创建对象,而是复用缓存池中已经创建好的对象。 不同的包装类缓存的范围不同,也可以通过jvm参数上调。 原理: 装箱:调用的是XXX.valueOf()方法;在这个方法里面有缓存区间的代码。 拆箱:调用的是XXX.intValue()方法。 ⭐String、StringBuffer和StringBuilder的区别是什么?String为什么是不可变的? 可变性:String内部的value值是final修饰的,所以它是一个不可变的类。因此每次修改String的值的时候都会new一个新的对象。而StringBuffer和StringBuilder是可变的。 线程安全性: String由于它的不可变性,导致了它是一个线程安全的 StringBuffer也是线程安全的,因为它每个方法里面都使用了synchronized关键字 StringBuilder不是线程安...







