随笔分类 -  Java

摘要:哈喽,各位早上/中午/晚上好呀! JDK21出了也有一段时间了,有的小伙伴也按捺不住开始将项目升级到JDK21了吧。 既然升级,大概多多少少都会遇到“找不到符号”的问题,英文原文是“cannot find symbol”。 如何解决呢? 以下方式不止针对于升级到JDK21,其它版本的升级配置方法相同 阅读全文
posted @ 2024-01-30 16:07 马儿跑 阅读(1062) 评论(0) 推荐(0) 编辑
摘要:大家好,我是mep。今天一起来探讨一下Redis缓存的问题,SpringBoot如何集成Redis网上文章很多,基本都是介绍如何配置redisTemplate,如何调用,本文就不过多介绍了。这次我们研究的是:Redis的事务。 首先抛出一个问题,Redis支持事务吗? 答案肯定是支持,不然也不需要我 阅读全文
posted @ 2023-09-25 09:59 马儿跑 阅读(1187) 评论(0) 推荐(2) 编辑
摘要:你的Java服务是如何监控的呢? 1.Null:监控?什么监控?我一个写代码的服务挂了跟我有什么关系? 2.命令行:服务挂了?内存泄漏?jstat jmap jcmd,还好不是我写的 3.撸代码:Java采集JVM/服务器资源信息 -> Prometheus -> Grafana,请允许我对业务代码 阅读全文
posted @ 2023-08-28 13:45 马儿跑 阅读(2913) 评论(0) 推荐(2) 编辑
摘要:引用传递和值传递,从上学那会儿就开始强调的概念,不管你是计算机相关专业还是自学Java,一定听过这么一句话: 方法调用参数如果是对象,那就是引用传递,如果是基本数据类型,就是值传递。 比如:function(Object o)就是引用传递,function(int i)就是值传递。这两个概念似乎很好 阅读全文
posted @ 2023-05-22 13:49 马儿跑 阅读(124) 评论(0) 推荐(0) 编辑
摘要:// 测试代码 public static void main(String[] args) { Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Integer e = 128; Integer f = 128; Long g 阅读全文
posted @ 2023-03-15 18:19 马儿跑 阅读(92) 评论(2) 推荐(0) 编辑
摘要:问题复现: 使用Java的steam().paralleStream(),foreach()方法向ArrayList添加数据,导致ArrayList中出现空值,代码如下: public static void main(String[] args) { List<Integer> a = new A 阅读全文
posted @ 2023-02-25 08:35 马儿跑 阅读(109) 评论(0) 推荐(0) 编辑
摘要:程序计数器 用于标识线程执行到了字节码文件(class文件)的哪一行,当执行native方法时,值为undefined,各个线程私有 Java虚拟机栈 每个线程独有,每个方法执行时会创建一个栈帧,用于存储局部变量表等方法信息,即方法的执行会伴随着一个栈帧的入栈出栈。 栈帧的组成 如果线程请求的栈深度 阅读全文
posted @ 2023-02-23 16:44 马儿跑 阅读(114) 评论(0) 推荐(0) 编辑
摘要:消除指令重排序 保证了不同线程对变量进行操作时的可见性,cpu对变量值修改后,其他线程读取变量信息时从内存读取而非cpu缓存 使用场景: 1. 双重检查锁,防止重排序 uniqueSingleton = new Singleton(); 赋值操作在编译后不是原子的,分为三步: (1)分配内存空间 ( 阅读全文
posted @ 2023-01-20 09:14 马儿跑 阅读(16) 评论(0) 推荐(0) 编辑
摘要:AbortPolicy:丢弃任务并抛出RejectedExecutionException异常,线程池默认拒绝策略 DiscardPolicy:丢弃任务,但不抛出异常 DiscardOldestPolicy:丢弃队列最前面的任务后重新提交被拒绝的任务 CallerRunsPolicy:由调用exec 阅读全文
posted @ 2023-01-20 08:38 马儿跑 阅读(31) 评论(0) 推荐(0) 编辑
摘要:首先一句话: 在循环中加入Thread.sleep(0),用于在循环中放入safepoint,JVM进行STW,然后触发GC。 详细: 说白了,它的作用就是给可数(int控制)循环加入safepoint,让JVM可以GC。 对于JVM,执行native函数的线程看作“已经进入safepoint“,而 阅读全文
posted @ 2023-01-18 13:38 马儿跑 阅读(230) 评论(1) 推荐(0) 编辑
摘要:Cglib JDK Proxy 实现方式 生成被代理类的子类 通过被代理类实现的接口+反射 速度 慢(曾经快于JDK Proxy,但JDK Proxy几次迭代后逐渐落后) 快 限制 被代理类不能是final,因为需要被继承 被代理类必须实现接口 阅读全文
posted @ 2023-01-18 09:27 马儿跑 阅读(76) 评论(0) 推荐(0) 编辑
摘要:耗时操作异步,可以考虑使用Future或Java8后出现的CompletableFuture 内存缓存,分布式用Redis,单机用Guava,注意缓存问题(击穿,穿透和雪崩),Redis的三种缓存策略 锁粒度控制 数据库批量修改 使用队列+异步处理应对流量突增 通过限流等方案保证服务稳定性 阅读全文
posted @ 2023-01-16 13:35 马儿跑 阅读(40) 评论(0) 推荐(0) 编辑
摘要:Java 8引入的CompletableFuture,对Future做了改进: 1.可以传入回调对象,不再像Future那样循环查询执行结果。 2.另外可以将多个Future结合到一起并行或串行执行,主要方法如下: 1> thenAccept()处理正常结果; 2> exceptional()处理异 阅读全文
posted @ 2023-01-16 11:21 马儿跑 阅读(49) 评论(0) 推荐(0) 编辑
摘要:首先一句话: Java8后(1)interface支持default和static方法有实现,abstract class依然是抽象方法和非抽象方法,(2)可同时实现多个interface,(3)但成员变量只能是static final的。 我的理解: abstract class的出现是为了防止直 阅读全文
posted @ 2023-01-06 08:52 马儿跑 阅读(60) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示