![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java面试题
文章平均质量分 92
Java面试最喜欢问什么,我想很多同学都会说八股文。所以本专栏会围绕高性能编程、中间件、分布式系统开发、微服务这四项分享常用的面试八股文,让八股文变成简单易懂的散文。
凌波漫步&
Nick Liu,目前是某外资企业后端研发,主要负责发卡、汇款、充值、转账等业务。自己的几个小标签:
1、互联网金融领域全栈攻城狮
2、真诚热情有爱的多面手
3、头马演讲俱乐部主持钉子户
4、自带幽默的表演系
一句话形容我自己:
向外伸展,向内修行,向阳而生。
展开
-
Linux快速安装Jenkins一键部署Maven项目
以上的场景是Jenkins和应用服务在同一台服务器上,如果应用服务不在同一台服务器上,可以通过插件来实现远程构建和自动化部署,具体后面章节再做详细介绍。原创 2024-07-29 18:23:50 · 1075 阅读 · 0 评论 -
Vue项目Nginx子目录部署(Vite和Vue-CLI)
生产环境中Vue项目我们一般会部署在域名的子目录下,在了解如何部署时我们先了解下Vue构建相关的基础知识。Vue CLI目前已经处于维护状态,一般老项目可能还在用它来开发,Vue CLI打包时基于。目录下找名为hwc的目录,以及该目录下的文件,如果都没有找到,则回退访问。,如果想在Nginx中指定前缀访问静态资源和文件,需要在打包构建时配置。中进行修改,指定base配置即可,这里我们指定了。目前是Vu3主流构建工具,打包配置我们可以在。,也就是说所有的静态资源都会带上该前缀。支持3种历史记录模式,分别是。原创 2024-05-20 00:46:48 · 549 阅读 · 1 评论 -
Nginx Location配置详解
当不添加匹配标识时,Nginx服务器首先在server块的各个location块中搜索是否有。指令我们可以指定资源访问的根目录,但是我们会发现访问的uri会附加到指定的文件目录下。其中uri变量是待匹配的请求字符串,可以是包含有正则表达式的字符串,称之为。和请求字符串匹配,如果有多个可以匹配,就记录匹配度最高的一个。时,Nginx会在服务器上寻找路径为。时,Nginx会在服务器上寻找路径为。时,Nginx会在服务器上寻找路径为。时,Nginx会在服务器上寻找路径为。时,Nginx会在服务器上寻找路径为。原创 2024-05-11 16:03:46 · 1163 阅读 · 3 评论 -
Linux快速安装Nginx和重新添加模块
配置完Ngnix模块后,再到源码根目录下执行如下命令对应用程序进行编译和安装。当看到如上信息时说明Nginx已经安装成功了,我们可以看到安装的Nginx的。目录下,解压后可以看到如下文件,这里我自己写了个简单的脚本。查看Nginx版本信息,可以看到新的模块是否添加成功。再对nginx源码进行重新编译,输入以下命令。脚本内容如下,这里我们共配置了4个模块。编译完成后,然后我们可以在安装目录。下,然后对Nginx进行重启即可。为安装目录,这里我的安装目录为。,输入以下命令添加新的模块,,用来配置常用模块。原创 2024-04-29 14:37:38 · 864 阅读 · 1 评论 -
Spring RabbitMQ那些事(2-两种方式实现延时消息订阅)
被消费者nack(negatively acknowleged)的消息。TTL过期后未被消费的消息。超过队列长度限制后被丢弃的消息。备注:更多信息请参考RabbitMQ中的。原创 2023-11-26 13:28:48 · 1972 阅读 · 7 评论 -
内存爆炸、CPU100%问题定位
最小堆内存并不是程序一启动就申请这么多内存,而是当前进程如果申请的内存已超过最小堆内存,内存回收时,大于最小堆内存的部分会返回给操作系统,其它申请的内存不会。简单来说就是没有开启预热时,JVM只是向操作系统做了登记,告诉操作系统我需要多少内存,但实际上并没有进行物理分配,加上该参数后在程序启动时就会分配物理内存。参数时,JVM进程申请的内存只是虚拟内存,程序运行时根据虚拟内存地址映射到实际的物理内存,缺页时才将数据加载到物理内存,分配实际的物理空间。现在可以看到该线程的方法调用栈,进而找到相应的代码。原创 2023-10-20 15:19:17 · 753 阅读 · 9 评论 -
分布式事务之本地消息表解决方案(跨地区转账实际案例)
如果是直接轮询本地消息表,由于我们的本地消息表是广播表(PS:各个地区物理库都会有相同的表数据),查询时会随机查询各地区物理库,如果随机查询的是迪拜物理库本地消息表的记录,那么查询就会比较慢了。备注:在实际业务中,跨地区转账入账方真正到账是有延迟的,虽然出账和入账操作程序只需要在账面上进行余额的扣和减,但是比如从香港地区到迪拜地区,真正的钱要和当地结算后汇款过去才能到账的。,中间会有3个账户的余额变动和出账记录,如果是同步返回,响应时间会比较长,也会影响用户体验,出账操作这里可以通过线程异步。原创 2023-03-28 23:45:20 · 2411 阅读 · 12 评论 -
Java面试题之关于JIT编译器的那些个优化项
Java到底是一门解释型语言还是编译型语言呢?这取决于Java虚拟机,现在主流的商用虚拟机如HotSpot,都同时包含与,我们可以认为Java即是一门解释型语言,也是一门编译型语言。关于解释器与编译器的优势:当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码“。为了提高热点代码的执行效率,虚拟机会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为。锁粗化和锁消除都是针对synchronized平台级锁所做的优化,具体可参考:Java面试题之syn原创 2022-07-02 17:48:30 · 861 阅读 · 0 评论 -
Java面试题之线程池应用及原理
线程在java中是一个对象,更是操作系统的资源,线程创建、销毁需要时间。如果创建时间 + 销毁时间大于执行时间就很不合算。java对象占用堆内存,操作系统线程占用系统内存,根据jvm规范,Linux/x64操作系统一个线程默认最大栈大小为1m。操作系统需要频繁切换线程上下文(大家都想被运行),影响性能。我们先看下线程池执行器的全参构造器具体有哪些参数,下面是该构造器的定义:corePoolSize:核心线程数,即使任务队列中没有任务,处于空闲状态也不会被回收的线程数,除非指定参数为true。.....原创 2022-06-21 13:29:13 · 401 阅读 · 0 评论 -
Java面试题之synchronized关键字原理以及锁相关
特性:可重入、独享、悲观锁。锁相关的优化:2、锁粗化示例三、synchronized关键字原理1、关于Mark Word首先,对象在堆中由对象头、实例数据和对齐填充组成。对象头包含两部分信息,第一部分用于存储对象自身的运行时数据,如、、、、等,这部分数据官方称为"Mark Word"。对象头的另一部分是类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。synchronized实现的锁是通过改变对象头的"Mark Word"来实现的。"Mard Word"原创 2022-06-22 01:37:07 · 1513 阅读 · 8 评论 -
Java面试题之synchronized平台级锁和Lock实现的锁区别
ReentrantLock和ReentrantReadWriteLock都是并发包下的工具类,ReentrantLock实现了Lock接口,ReentrantReadWriteLock实现了ReadWriteLock接口,而其中的ReadLock和WriteLock又实现了Lock接口。为了区别synchronized和ReentrantLock,我们先了解一下Lock接口相关的API。Object中的、、只能和关键字配合使用,可以唤醒一个或全部线程。Condition需要与Lock配合使用,提供多个等原创 2022-06-27 14:39:42 · 550 阅读 · 0 评论