RabbitMQ介绍 consumer(消费者):使用队列Queue从Exchange中获取消息的应用 Exchange(交换机):负责接收生产者的消息并把它们转到合适的队列 Queue(队列):一个存储exchange发来的消息的缓冲,并将消息主动发送给Consumer,或者Consumer主动来获取 Binging(绑定):队列和交换机之间的关系。Exchange根据消息的属性和Bingding的属性来转发消息。绑定的一个重要属性是binding_key. Connection(连接)和Ch
2024-11-30finalize的工作原理 一个对象的创建过程 对象的销毁是按照创建的逆序来进行的 final的方法和类都不允许覆盖和继承。private默认实现了final。 简述jvm中默认的classLoader与功能 简述内部类的特点 如何终止一个线程 null可以被强制类型转换成任意类型的对象,于是通过它来执行静态方法 解释一下java内存模型 解释一下volatile字段 广播的两种注册方法,有什么区别 Intent可以传递哪些数据类型 (文末附面试答案) 腾讯面试整理
2024-11-301.前后端不分离 缺点 业务耦合较强指责划分不明确开发成本较高服务器压力较大 在服务端渲染页面返回给用户,在高并发情况下会占用大量资源 优点 提高SEO速度,提高搜索引擎收录检索速度 页面数据都是渲染好返回的 2.前后端分离 概念 前:浏览器 HTML、CSS、Bootstrap、JS、JQuery、Vue、NodeJS、webpack体验为主:炫酷、流畅、兼容 后:服务器 Jvm、springboot、Django、flask、tornado三高:高并发、高可用、高性能 前后端分离:后
2024-11-30这次说的是64bit的jvm,暂不谈32bit的jvm,两者的对象大小是不一样的。 java对象的存储布局分为两种情况:普通对象 和 数据。 先说普通对象吧:如下图 那为啥对齐单元的大小是8个字节呢? 因为是64bit位的jvm,8个字节刚好是64个比特位,这样读取的效率高。 那这个东西我们在代码里面看得到吗? 可以看到的。 我们在pom.xml里面引入依赖: <dependency> <groupId>org.openjdk.jol</groupId>
2024-11-30三、CPU Cache的数据结构和读取过程 Cache结构 CPU Cache 是由很多个 Cache Line 组成的,Cache Line 是 CPU 从内存读取数据的基本单位,而 Cache Line 是由各种**标志(Tag)+ 数据块(Data Block)**组成。 注:后续 线程、进程的单位结构 ,拿来一起对比。 CPU 读取数据的时候,无论数据是否存放到 Cache 中,CPU 都是先访问 Cache,只有当 Cache 中找不到数据时,才会去访问内存,并把内存中的数据读入到
2024-11-30Spring系列目标:从入门掌握一个高级开发所需要的技能。 环境 jdk1.8 idea maven-3.6.1 spring-5.2.3.RELEASE 整个spring系列使用官方最新版本5.2.3.RELEASE,会有大量案例,都是通过maven来管理的,所以maven是必备技能,对这块不熟悉的可以去看一下: Spring框架:持续简化Java企业级开发的典范 Spring,这一卓越的Java框架,自诞生以来,便矢志不渝地追求着简化Java企业级开发的宏伟目标。历经十多年的风雨洗礼与技术
2024-11-30普通使用 创建自定义事件 继承ApplicationEvent import org.springframework.context.ApplicationEvent; import java.time.Clock; public class MyEvent extends ApplicationEvent { private String message; public MyEvent(Object source, String message) { su
2024-11-30介绍 Knife4j 是一款基于 Swagger 构建的增强型 API 文档生成工具,它提供了更多的定制化功能和界面优化,使得生成的 API 文档更加美观和易用。它可以帮助开发者快速生成和管理 API 文档,支持在线调试和交互。 依赖 <!--knife4j--> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi2-spring-boot-starter</artifac
2024-11-30上文已经详细介绍了disruptor,也体会了并发编程的奥妙,接下来将理论结合实战,本文和大家分享一下disruptor的使用,加深对disruptor工具包对理解。 1、 disruptor常用类一览 disruptor的常用类体系如下图所示: RingBuffer 环形队列,disruptor中的核心存储类 Sequencer 序号实现器,维护发送者发送的序号生成逻辑、消费方获取可消费的序号,是无锁化访问的核心实现类,共有两个实现类,MultiProducerSequencer为多生产
2024-11-30常用flask任务,记录比较,后期方便查看 import time from flask import Flask from threading import Thread from concurrent.futures import ThreadPoolExecutor app = Flask(__name__) def get_information_page(auth,count): success = 0 fail = 0 while 1:
2024-11-30