
Java
文章平均质量分 76
游侠阿枫
有一部分文章是从我的语雀上转过来的
展开
-
一些好用的idea开发技巧记录
1.在使用springboot 开发中,经常需要获取到配置文件的值,常用的方法是使用@Value(“${}”) 注解 ,也可以使用另外一种方式 直接在services 中注入Environment 类, 注意当输入的参数在配置文件中未找到对应的数据,会返回-1。shift+alt+↑/↓ 移动当前行代码的位置,shift+ctrl+↑/↓在方法上移动可以移动整个方法。shift+F6 修改变量,类的名字,甚至可以将变量定义到方法的参数上(抽取参数为方法的变量)Ctrl+E 查看最近打开的类。原创 2022-06-14 14:43:32 · 319 阅读 · 0 评论 -
Java 垃圾算法有哪些?
说到Java虚拟机不得不提的一-个词就是“垃圾回收”(GC, Garbage Collection)垃圾回收的执行速度则影响着整个程序的执行效率所以我们需要知道更多关于垃圾回收的具体执行细节以便为我们选择合适的垃圾回收器提供理论支持.面试题垃圾回收器首先要做的就是,判断一个对象是存活状态还是死亡状态死亡的对象将会被标识为垃圾数据并等待收集器进行清除判断一个对象是否为死亡状态的常用算法有两个:引用计数器算法和可达性分析算法引用计数算法(Reference Counting)属于垃圾收集器最早的实现算原创 2022-06-30 17:32:22 · 173 阅读 · 0 评论 -
JVM内存布局和运行原理
《Java虚拟机规范》对Java堆的描述是:“所有的对象 实例以及数组都应当在堆上分配”比如JIT (Just In Time Compilation,即时编译)优化中的逃逸分析使得变量可以直接在栈上被分配当对象或者是变量在方法中被创建之后,其指针可能被线程所引用而这个对象就被称作指针逃逸或者是引用逃逸.比如以下代码就是指针逃逸, 他在方法中创建了变量 ,值却被其他值引用.所以上面的代码应该改为通过逃逸分析可以让变量或者是对象直接在栈.上分配从而极大地降低了垃圾回收的次数,以及堆分配对象的压力原创 2022-06-30 14:37:57 · 124 阅读 · 0 评论 -
如何手动实现一个消息队列和消息队列延迟,常见的MQ中间件有哪些?
1, 如秒杀活动时 短时间内爆发大量用户请求. 如果不处理相关请求,轻则导致系统响应超时 重则导致系统宕机.如果使用消息队列 ,将请求全部写入到队列中 . 在队列中排队处理.如果超过了队列的最大请求长度.可以直接将后续的请求抛弃,返回通知给用户提示 请求出错了,请刷新.2. 系统解藕如果现在需求频繁变更的情况,如何在不修改原代码的基础上添加或者修改功能.消息队列使用场景1. 当用户进行某个操作后 需要进行日志记录时 .可以将记录日志的步骤 发送到消息队列里面常用的消息队列 RabbitMQ原创 2022-06-15 14:42:55 · 613 阅读 · 0 评论 -
实战Kafka+springboot的开发经验记录
策略模式的代码实现记录原创 2022-06-10 16:31:21 · 190 阅读 · 0 评论 -
JDK Proxy和CGLib
Java中的动态代理原创 2022-06-02 17:44:07 · 317 阅读 · 0 评论 -
一些算法题记录
几个常见的面试算法题.原创 2022-05-05 17:55:57 · 2484 阅读 · 0 评论 -
Java有趣的面试题记录
一些有意思的面试题,后续更新原创 2022-04-22 16:57:27 · 342 阅读 · 0 评论 -
HashMap的初始化创建长度
hashMap的初始化容量原创 2022-04-22 16:41:59 · 1060 阅读 · 0 评论 -
MyByatis 中使用了哪些设计模式分别是怎样体现的?
下面展示一些 。build(parser.parse()) 方法源码如下只有一个单纯的对象ErrorContext使用private 修饰的ThreadLocal来保证每个线程拥有一个ErrorContext对象在调用instance()方法时再从ThreadLocal中获取此单例对象个转换头就相当于程序中的适配器模式适配器模式在MyBatis中的典型代表是LogMyBatis中的日志模块适配了以下多种日志类型:SLF4JApache Commons LoggingLog4j 2Log4原创 2022-04-19 17:57:53 · 77 阅读 · 0 评论 -
ThreadPoolExecutor 线程池相关学习记录
线程池相关问题直接使用线程的run方法和start方法的区别 ,在断点方法中点击idea 的照相机的图标按钮,可以查看线程信息直接运行runstart方法启动线程池的操作效率大于普通线程操作速度,经过代码验证常见的3种线程池创建方式ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); // 运行速度最快 ExecutorService fixedThreadPool = Executors.newFixedTh原创 2022-03-01 00:27:19 · 316 阅读 · 0 评论 -
java 虚拟机知识记录
java虚拟机基础知识学习记录原创 2022-02-23 14:31:07 · 67 阅读 · 0 评论