面试
文章平均质量分 70
helloworld6379
这个作者很懒,什么都没留下…
展开
-
工作事务常出现的问题
工作中经常见的事务异常原创 2023-03-21 16:06:04 · 136 阅读 · 0 评论 -
开发接口需要考虑哪些问题?
开发接口需要考虑的问题原创 2023-03-08 18:55:09 · 540 阅读 · 0 评论 -
RocketMQ源码分析
RocketMQ源码分析原创 2023-02-27 18:23:31 · 4835 阅读 · 4 评论 -
JVM内存结构和GC调优
JVM内存结构和GC调优原创 2023-02-22 18:21:23 · 582 阅读 · 0 评论 -
MySQL 性能优化思路和工具
MySQL 性能优化思路和工具原创 2023-02-21 19:47:34 · 3185 阅读 · 0 评论 -
mysql 索引原理和使用
mysql 索引原理和使用原创 2023-02-21 01:51:11 · 210 阅读 · 0 评论 -
Mysql架构与内部模块
mysql架构与内部模块原创 2023-02-20 18:55:42 · 447 阅读 · 0 评论 -
java并发编程原理3 (CountDownLatch,Semaphore,CopyOnWriteArrayList,ConcurrentHashMap)
CountDownLatch,Semaphore,CopyOnWriteArrayList,ConcurrentHashMap原创 2023-02-19 23:32:17 · 145 阅读 · 0 评论 -
java并发编程原理2 (AQS, ReentrantLock,线程池)
java并发编程知识点原创 2023-02-19 18:18:25 · 627 阅读 · 0 评论 -
java并发编程原理1(原子性,可见行,有序性,volatile,synchronized)
java并发编程相关知识点原创 2023-02-19 18:07:43 · 455 阅读 · 0 评论 -
springboot源码分析(一):启动过程
1、springboot的入口程序@SpringBootApplicationpublic class StartupApplication { public static void main(String[] args) { SpringApplication.run(StartupApplication.class, args); }}当程序开始执行之后,会调用SpringApplication的构造方法,进行某些初始参数的设置//创建一个新的实例,这个应用原创 2022-04-11 21:30:19 · 181 阅读 · 0 评论 -
分布式事务框架LCN使用、原理和源码阅读
官网: https://www.codingapi.com/docs/home/原理:来着官网使用:一个eureka。一个TM,两个RM,分别为订单服务和支付服务。具体详细配置请访问官网。订单服务Controller: @PostMapping("/add-order") @Transactional(rollbackFor = Exception.class) @LcnTransaction public String add(@RequestBody T原创 2021-11-07 22:50:58 · 180 阅读 · 0 评论 -
springboot源码解析:启动过程
springboot的入口程序@SpringBootApplicationpublic class StartupApplication { public static void main(String[] args) { SpringApplication.run(StartupApplication.class, args); }}当程序开始执行之后,会调用SpringApplication的构造方法,进行某些初始参数的设置//创建一个新的实例,这个应用程序原创 2021-10-10 22:51:44 · 147 阅读 · 0 评论 -
Tomcat和Nginx调优和配置
Nginx调优和配置静态资源配置:设置location 参数,配置匹配的规则,就是匹配哪些静态资源,然后设置路径。location ~ .*.(gif|jpg|jpeg|png)$ {进程数的优化:如果服务器性能比较好可以设置大一些提高Nginx的效率。worker_processes 8超时时间:设置超时时间,默认的是60s,Nginx会自动踢出超时的连接,保持可用性。keepalive_timeout 90;Tomcat调优和配置最大的线程数 maxThreads:Tomcat使用线程来处理接原创 2021-10-06 01:35:11 · 310 阅读 · 0 评论 -
redis穿透,击穿和雪崩的原因和解决方案
穿透:没有这个值,一直获取,缓存中设为空字符串返回。击穿:一个数据没有,大量请求去查询数据库,压力大。用锁,一个线程去读数据库。雪崩:同一时间大量对象失效,设置过期时间随机,热点数据永不过期。...原创 2021-10-06 01:08:04 · 51 阅读 · 0 评论 -
拦截器Filter、过滤器HandlerInterceptor和监听器 Listener区别
Spring的拦截器与Servlet的Filter 有相似之处,比如二者都是AOP编程思想的体现,都能实现权限检查、日志记录等。不同的是:1、使用范围不同: Filter 是Servlet规范规定的,只能用于Web程序中。而拦截器既可以用于Web程序,也可以用于Application、Swing 程序中。2、规范不同: Filter是在Servlet 规范中定义的,是Servlet容器支持的。而拦截器是在Spring容器内的,是Spring框架支持的。3、使用的资源不同: 同其他的代码块一样, 拦截器原创 2021-10-06 00:06:15 · 195 阅读 · 0 评论 -
JVM常用参数
-Xms 初始堆大小-Xmx 最大堆大小 -Xmn 年轻代大小-XX:NewSize 设置年轻代大小 -XX:MaxNewSize 年轻代最大值-XX:PermSize 设置持久代-XX:MaxPermSize 设置持久代最大值-XX:NewRatio 年轻代(包原创 2021-10-05 00:37:00 · 68 阅读 · 0 评论 -
23种设计模式学习记录之单例设计模式
想说的话:在大学的时候曾经学过这23种设计模式,但是那时没啥编程经验,糊里糊涂过了一遍,没多久就忘记了,工作之后将精力主要集中在学习新技术上,比如springboot,cloud,docker,vue。毕业两年后去面试,发现设计模式还是java程序员需要迈过的一道坎,面试的时候问到代理模式和适配器模式有什么区别,你在工作中用到了什么设计模式,怎么用的?答不上来的特别尴尬,所以决定重新学习这几种设计模式,争取在工作中使用上。设计模式概述1 设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验原创 2020-05-21 23:34:25 · 196 阅读 · 0 评论 -
ThreadLocal使用和原理(完结)
这里写目录标题一 是什么二 实际使用和使用场景2.1 Helloworld:2.2 工作中实际应用2.3 框架中的应用2.3.1 Spring的数据库连接一 是什么作者的描述:This class provides thread-local variables. These variables differfrom their normal counterparts in that each thread that accesses one(via its {@code get} or {@原创 2021-07-11 23:31:34 · 247 阅读 · 0 评论 -
ReentrantLock和AQS原理
观摩大佬七八年前的文章:https://blog.csdn.net/luonanqin/article/details/41871909也不知道大佬现在咋样了。ReentrantLock类图:AbstractOwnableSynchronizer类保持和获取独占线程。AbstractQueuedSynchronizer是以虚拟队列的方式管理线程的锁获取与锁释放,以及各种情况下的线程中断。提供了默认的同步实现,但是获取锁和释放锁的实现定义为抽象方法,由子类实现。目的是使开发人员可以自由定义获取锁以转载 2021-07-04 18:28:13 · 101 阅读 · 0 评论 -
JMM内存模型、计算机内存模型、CPU缓存一致性原则(MESI)、volatile、指令重排和内存屏障(Memory Barrier)
转自知乎 作者:祥先生链接:https://www.zhihu.com/question/296949412/answer/864851230一、JMM概念java内存模型,英文全称为java memory model,简称JMM。查询维基百科和oracle官网对JMM(java内存模型)的定义:维基百科原文:The Java memory model describes how threads in the Javaprogramming language interact through m转载 2021-07-03 00:03:49 · 399 阅读 · 0 评论 -
Java对象结构与synchronized实现原理及MarkWord详解
本博客的本意不是技术分享只是在学习过程中感觉需要复习的知识点记录整理下来方便复习,以便面试的时候用具体细节请阅读《深入理解Java虚拟机》若本文对你有帮助那十分荣幸。JAVA对象的总体结构由于Java面向对象的思想,在JVM中需要大量存储对象,存储时为了实现一些额外的功能,需要在对象中添加一些标记字段用于增强对象功能 。在学习并发编程知识synchronized时,我们总是难以理解其实现原理,因为偏向锁、轻量级锁、重量级锁都涉及到对象头,所以了解java对象头是我们深入了解synchronize转载 2021-07-01 23:57:39 · 584 阅读 · 0 评论 -
多线程面试相关技术点
1、线程启动run和start 的区别run 只是执行了一个方法start 开启了一个线程2、线程状态和之间的转换1 new 被创建出来 还没调用start2 runnable 调用start方法之后,被线程调度器执行,也就是操作系统执行。整个状态叫runnable,runnable 内部有两个状态,一个叫ready就绪,在CPU的等待队列,一个叫running。挂起就是线程执行时间片到了,CPU需要执行下一个线程了3 timedwaiting4 waiting5 blocked 阻原创 2021-06-29 00:10:30 · 190 阅读 · 0 评论 -
23种设计模式学习记录之享元模式
想说的话:在大学的时候曾经学过这23种设计模式,但是那时没啥编程经验,糊里糊涂过了一遍,没多久就忘记了,工作之后将精力主要集中在学习新技术上,比如springboot,cloud,docker,vue。毕业两年后去面试,发现设计模式还是java程序员需要迈过的一道坎,面试的时候问到代理模式和适配器模式有什么区别,你在工作中用到了什么设计模式,怎么用的?答不上来的特别尴尬,所以决定重新学习这几种设计模式,争取在工作中使用上。本文所有案例代码码云:https://gitee.com/helloworld6转载 2020-06-07 01:02:38 · 124 阅读 · 0 评论 -
23种设计模式学习记录之访问者模式
想说的话:在大学的时候曾经学过这23种设计模式,但是那时没啥编程经验,糊里糊涂过了一遍,没多久就忘记了,工作之后将精力主要集中在学习新技术上,比如springboot,cloud,docker,vue。毕业两年后去面试,发现设计模式还是java程序员需要迈过的一道坎,面试的时候问到代理模式和适配器模式有什么区别,你在工作中用到了什么设计模式,怎么用的?答不上来的特别尴尬,所以决定重新学习这几种设计模式,争取在工作中使用上。本文所有案例代码码云:https://gitee.com/helloworld6转载 2020-06-07 23:48:08 · 135 阅读 · 0 评论 -
JVM 运行时内存
Java 堆从 GC 的角度可以细分为: 新生代和老年代。新生代 是用来存放新生的对象。一般占据堆的 1/3 空间。由于频繁创建对象,所以新生代会频繁触发MinorGC 进行垃圾回收。新生代又分为 Eden 区、ServivorFrom、ServivorTo 三个区。MinorGC 采用复制算法:eden、servicorFrom 复制到 ServicorTo,年龄+1,默认15次就放到老年代。内存比较大的对象也会直接放到老年代。老年代主要存放应用程序中生命周期长的内存对象。老年代的对象比较稳定,原创 2021-06-06 01:01:51 · 113 阅读 · 1 评论 -
虚拟机内存模型
虚拟机内存模型主要包含线程共享和线程独享部分。方法区和堆内存是线程共享,虚拟机栈、本地方法栈和程序计数器是线程独占部分。方法区/永久代:JVM用来存储加载的类信息、常量、静态变量、编译后的代码等数据。虚拟机规范中这是一个逻辑区划。具体实现根据不同虚拟机来实现。如: oracle的HotSpot在JDK7中方法区放在永久代,JDK8放在元数据空间。堆内存:堆内存还可以细分为:新生代(Eden、 From Survivor、To Survivor)和老年代JVM启动时创建,存放对象的实例。垃圾.原创 2021-06-06 00:58:14 · 364 阅读 · 0 评论 -
虚拟机怎么判断对象是否需要回收?
虚拟机怎么判断这个对象是否需要回收?Java虚拟机采用的是可达性分析算法这个算法的基本思路就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索。搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的,即可被回收。在Java语言中,可作为GC Roots的对象包括:虚拟机栈(栈帧中的本地变量表)中引用的对象。方法区中类静态属性引用的对象。方法区中常量引用的对象。本地方法栈中Native原创 2021-06-06 00:53:39 · 106 阅读 · 0 评论 -
hashmap扩容为何为何是2的n次幂
hashmap 的内存结构是数组加链表为了使值均匀的分布在数组里,尽可能减少碰撞,增加查询的效率,减少空间的浪费。可以使用key的hashcode去查找,因为hash的时间复杂度是1,速度比较快。然后hash值取模 % 数组的长度 -1。但是与运算& 比取模%速率要快些。所以Java官方使用了与运算&。运算&的特点是11为1,10 或者00为0。这里有个比较巧妙的地方就是:2的n次幂转换为2进制最后一位都是08 1000 16 10000因为key的hash值是跟原创 2021-06-06 00:44:15 · 844 阅读 · 0 评论