
JAVA
文章平均质量分 78
Chen_leilei
头发掉光,技术见长
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java排查故障思路
线上的故障无非就是四种,cpu,磁盘,内存,网络。出现的大多数问题都不仅仅在一个层面上面,基本出现问题了就是df,free,top 三连,然后上jstack,jmap.遇见具体问题分析即可。原创 2024-04-30 16:11:30 · 1173 阅读 · 0 评论 -
java基础面试题(一)
实现。别说了,我知道问题了,AQS原理我来讲。原创 2023-08-08 14:39:56 · 242 阅读 · 0 评论 -
JAVA线上问题排查降龙十八掌
现场问题一般有以下几种问题 CPU,磁盘,内存,GC问题,网络同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top 三连,然后依次jstack、jmap伺候,具体问题具体分析即可。原创 2023-07-27 22:39:59 · 333 阅读 · 0 评论 -
我眼中的代理模式
代理模式的理解原创 2022-12-30 18:04:37 · 779 阅读 · 0 评论 -
我眼中的并发编程
为了保证共享内存的正确性(可见性,原子性,有序性),内存模型定义了共享内存系统走红多线程程序读写操作的行为的规范。通过这些柜则来规范对内存的读写操作,从而保证指令执行的正确性。它与处理器有关,与并发有关,与编译器也有关。他解决了CPU多级缓存、处理器优化、指令重排等导致的内存访问问题,保证了并发场景下的一致性、原子性和有序性。内存模型解决并发问题主要就是采用两种形式,限制处理器优化和内存屏障。原创 2022-12-29 18:45:26 · 259 阅读 · 0 评论 -
我眼中的Java内存模型
(1)方法区只是一种概念上的区域,并说明了其应该具有什么功能,但是没有规定这个区域到底应该处于何处,不同版本的方法区所处位置不同,并不是绝对意义上的物理区域。(2)运行时常量池用于存放编译器生成的各种字面量和符号应用,但是java语言并不要求常量只有在编译器才能产生。比如在运行期,String.intern也会把新的常量放入池中。原创 2022-12-29 17:52:25 · 416 阅读 · 0 评论 -
Unable to make protected final java.lang.Class
在jdk1.8升级到17之后,会有许多问题,今天遇见了一个,下面是异常详情:com.alibaba.excel.exception.ExcelGenerateException: java.lang.ExceptionInInitializerError at com.alibaba.excel.write.ExcelBuilderImpl.addContent(ExcelBuilderImpl.java:64) at com.alibaba.excel.ExcelWr原创 2022-05-27 18:10:49 · 2058 阅读 · 4 评论 -
我眼中的秒杀系统
一.首先我们看一下秒杀系统的特点:价格低廉大幅度推广瞬时售空定时上架时间短,瞬时并发量高二.秒杀面临的挑战1.对现有网站业务造成的冲击秒杀活动之所以叫秒杀,是因为这个活动具有时间短,并发量高的特点,和网站原来的应用部署在一起,一定会对现有业务进行冲击,甚至可能造成当前网站的瘫痪。解决方案:我们可以将秒杀系统独立部署,甚至可以用独立域名,将现有业务和秒杀分离2.高并发下的应用,数据库的压力用户在参与秒杀活动的时候,一定会不断进行网页刷新,这样的操作的话,访问的数原创 2022-05-16 17:40:12 · 200 阅读 · 0 评论 -
SpringBoot事务失效场景
一.事务不生效1.访问权限的问题如果我们在开发过程中,把有事务的方法定义了错误的权限,就会导致事务功能出错。众所周知,spring要求被代理的方法必须是public的。说白了,在AbstrctFallbackTransactionAttributedSource类的computeTransactionAttribute方法中有个判断,如果目标不是public则TransactionAttribute返回的是空protected TransactionAttribute computeTrans原创 2022-01-02 21:35:55 · 2642 阅读 · 0 评论 -
多线程之旅(一)
一.线程的概念?线程是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作单位,一条线程指的是进程中单一顺序的控制流,一个进程中可以有多个线程,每条线程并行执行不同的任务。二.线程的状态1.new 线程刚刚创建2.RUNNABLE 在JVM中正在运行的线程,其中运行状态有两种,RUNNING,READY两种状态,由系统调度进行状态改变,3,BLOCKED 线程阻塞,等待监视锁,可惜重新进入同步代码块中执行4.WAITING 等待5.TIMED_WAIT..原创 2021-12-20 17:02:37 · 364 阅读 · 0 评论 -
ThreadLocal分析五:InheritableThreadLocal
通过上面几篇文章的分析,大家已经了解了threadlocal的数据结构,以及源码分析。但是他有什么缺点呢?答案是threadlocal不能在父子线程中线程之间传递public class ThreadLocalTest { private static ThreadLocal<Integer> threadLocal = new ThreadLocal<>(); public static void main(String[] args) {原创 2021-12-15 16:30:51 · 4058 阅读 · 3 评论 -
ThreadLocal分析四:面试六连问
一.内存泄漏的原因ThreadLocal操作不当会导致内存泄漏,为什么会内存泄漏呢?主要的原因在于她的内部类ThreadLocalMap里面Entry类的设计。看过前几篇文章的都知道,Entry继承了WeakReference<ThreadLocal<?>>,表示这个Entry里面的key是个弱引用,所以key在垃圾回收的时候会被回收掉,但是,but。key对应的vule不会被回收,这样就会导致key为null,但是value不为空。因为这样,这个value你永远获取不到,久原创 2021-12-13 17:06:12 · 770 阅读 · 0 评论 -
ThreadLocal分析三:get()方法解读
1.ThreadLocal是什么?首先,他是一个数据结构,有点像hashmap。但是ThreadLocal只能保存一个。各个线程互相不影响。在线程1中初始化一个ThreadLocal对象localname,并通过set方法保存一个值,同时在线程1中调用get方法来获取之前设置的值,但是如果在线程2中获取,得到的就是一个null。我们来看一下set()和get()的源码...原创 2021-12-13 10:37:08 · 3520 阅读 · 0 评论 -
ThreadLocal分析二:set()方法解读
ThreadLocal的Set()方法原创 2021-12-09 17:34:05 · 3439 阅读 · 2 评论 -
ThreadLocal分析一:ThreadLocal数据结构
ThreadLocal原创 2021-12-08 10:35:54 · 1325 阅读 · 0 评论 -
HashMap面试夺命22连问
hashmap原创 2021-11-30 23:18:36 · 255 阅读 · 0 评论 -
IntelliJ IDEA快捷键最全整理
话不多说直接带走。让你撸代码飞起来一.Ctrl快捷键Ctrl + F 在当前文件进行文本查找 (必备)Ctrl + R 在当前文件进行文本替换 (必备)Ctrl + Z 撤销 (必备)Ctrl + Y 删除光标所在行 或 删除选中的行 (必备)Ctrl + X 剪切光标所在行 或 剪切选择内容Ctrl + C 复制光标所在行 或 复制选择内容Ctrl + D 复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面 (必备)Ctrl + W 递进式选择代码块。可选中光标所在的单词原创 2021-11-26 20:46:15 · 324 阅读 · 0 评论 -
方法重载解析
一,什么叫方法重载? 当两个或者多个方法名称相同,但参数类型或者个数不相同时,就说方法重载了。编辑器只能通过方法名以及参数列表来确定调用哪个方法?二,方法的重载匹配选择1.基本类型的重载 public static void main(String[] args) { short s = 4; m(s);} public static void m(int x){//方法一 System.out.println("重载方法一");} pub...原创 2021-11-26 07:45:00 · 295 阅读 · 0 评论 -
HashMap为什么初始长度为16或2的幂?
HashMap小理解原创 2021-11-25 15:26:45 · 800 阅读 · 0 评论 -
面试之Java性能优化
1.尽量避免随意使用静态变量当某个对象被定义为static变量所引用,那么GC通常是不会回收这个对象所占据的内存比如zhege zzhegepublic class A{ private static B b = new B();}这个时候静态变量B的生命周期和A类同步,如果A类不会卸载,那么B对象就hi常驻内存,知道程序终止2.避免过多的创建JAVA对象尽量避免在经常调用的方法,循环中new对象,有序系统不仅要花费时间来创建对象,而且还要花费时间对这些对象进行垃圾..原创 2021-11-18 17:00:39 · 668 阅读 · 0 评论 -
Tomcat架构之我见
先来一张顶层架构图:Tomcat顶层的容器是Server,代表着整个服务器,一个Server可以包含多个Service,Service包含两个内容Connector和Container,一个Service可以有多个Connector 只有一个Container,这是因为一个服务可以有多个连接,例如可以提供Http和Https链接,也可以提供多个相同协议的不同端口多个Connctor和一个Container就形成了一个ServiceTomcat中只有一个Server,一个Server.翻译 2021-05-24 17:01:17 · 140 阅读 · 0 评论 -
在java中使用javaScript脚本编写易变业务逻辑
首先在本地添加一个js文件,我添加的位置是D:\model.jsmodel.js如下:function formula(var1,var2){ return var1+var2 - factor;}然后编写java方法如下:package com.chen;import javax.script.*;import java.io.FileNotFoundException;import java.io.FileReader;import java.util.Scanner原创 2020-10-13 19:59:02 · 427 阅读 · 0 评论 -
我眼中的单例模式
单例模式 即内存只会创建一个对象也只创建一次对象的设计模式。那为什么我们要使用单例呢,大家都知道频繁的创建对象会让内存飙升,而单例模式会让内存只使用这一个对象,单例模式的类型懒汉式:(好懒啊,什么时候用我就什么时候创建好了) 只有真正使用对象的时候才会创建单例对象饿汉式:(好饿啊,赶紧创建出来吧)在类加载的时候,就创建好了,懒汉式的创建方式:public class Singleton(){ private static Singleton singleton;...原创 2020-08-06 10:49:01 · 199 阅读 · 0 评论 -
JAVA值传递还是引用传递之我见
最近在刷面试题的时候,遇见了一个问题:java是值传递还是引用传递?虽然知道是值传递,但是也说不出个所以然来。因此我浏览的很多博客以及StackOverflow想看看大佬们是怎么想的。通过自己的整理。我下面来说一下,如果有说错的地方,还请大佬们指出。要想解决java为什么是值传递而不是引用传递。首先我们要先了解几个概念:实参:实参就是实际参数,指的是调用有参方法的时候传入的真正的值...原创 2020-04-30 15:44:40 · 240 阅读 · 0 评论 -
我眼里JAVA中的GC(垃圾回收机制)
想要了解GC 我认为应该从什么是GC?哪些东西会被回收?怎么样回收?以及什么时候回收?GC:(根据百度翻译):程序本身发现并收集无用的内存。它是一种自动内存管理形式,不需要程序员释放内存。而java中为什么会有这种机制的存在呢? 1.减少程序员的工作量,也就是你不用过于扔垃圾的问题 2.更加安全, 3.减少内存泄漏哪些内存需要被回收呢? 我们知道在JVM运行的时候...原创 2018-03-16 21:28:34 · 378 阅读 · 0 评论