Vue
环境配置 下载Node 18.x 配置环境变量:NODE_HOME:C:\WORK\node-v18.14.0-win-x64,NVM_HOME 使用node -v、nvm -v验证 启动ui界面在powershell中vue ui 项目配置信息:package.json 123456789101112131415161718192021222324{ "name": "my-bank-admin-vue2", "version": "0.1.0", "private": true, "scripts": { "dev": "vite", "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint" }, "dependencies": { "vue": "^2.7.0", // Vue 2 核心 "vue-router": "^3.6.5", ...
k8s
概念 Node 一个节点就是一个物理机或者虚拟机 Pod 如图所示:在一个node中有APP应用程序、数据库应用程序 pod是k8s中的最小调度单元,它由node进行管理,一个node中可以有一个或者多个容器的组合。创建之后,k8s一般会给它们分配一个内部的ip地址,注意外部是访问不了的 一般情况下,建议一个pod中只运行一个容器,这样可以更好的实现应用程序的解耦和扩展 如图所示:pod如果发生故障的时候,k8s会销毁故障的pod,重新创建一个新的pod,此时ip地址会发生改变,如果还按照原来的ip进行访问的话,就会发生错误。k8s为了解决这个问题,引入了一个叫做Service的资源对象。 Service Service简称svc svc可以作为pod之间的通讯桥梁。svc将APP应用程序和数据库应用程序分成了两个部分,APP应用程序通过svc来访问数据库。数据库的pod做了集群,当某一个pod故障了,即使这个pod的ip地址发生了变化,svc会将请求发送到其他正常的pod上,因为svc的ip地址不会变 内部服务、外部服务 内部服务:不想暴露给外面的一些...
Java集合八股文
概念 数组和集合的区别 数组是固定长度的数据结构,一旦创建长度就无法改变,而集合是动态长度的数据结构,可以根据需要动态增加或减少元素。 数组可以包含基本数据类型和对象,而集合只能包含对象。 数组可以直接访问元素,而集合需要通过迭代器或其他方法访问元素。 说一说Java中的集合? 常见的List: ArrayList:是容量可变的非线程安全列表,它的底层使用数组实现。当几何扩容时,会创建更大的数组,将原数组复制到新数组。ArrayList支持对元素的快速随机访问,但是插入与删除速度很慢。 LinkedList:本质是一个双向链表,与ArrayList相比,其插入和删除速度更快,但随机访问速度更慢。 Set不允许存在重复元素,与List不同,Set中的元素是无序的,常见的Set: HashSet:通过HashMap实现,HashMap的Key即HashSet存储的元素,所有Key都是用相同的Value,一个Object类型常量。使用Key保证元素唯一性,但不保证有序性。由于HashSet是HashMap实现的,因此线程不安全。 LinkedHashSet:继承自Hash...
Redis八股文
Redis为什么这么快? 基于内存 io 多路复用:一个线程可以管理多个IO网络请求,内置多个API可以监听多个IO请求 单线程架构 为什么是单线程而不是多线程? Redis是内存数据库,性能瓶颈是在内存与网络IO延迟 用单线程极大减少了多线程的上下文切换和锁的竞争 持久化机制 数据结构优化 Redis穿透&击穿&雪崩 穿透 当客户端请求的 key 在 缓存里找不到,而且 数据库里也没有,就会导致每次请求都绕过 Redis 直击数据库 出现的场景: 恶意/异常请求:爬虫、攻击脚本随机构造ID = 99999,但是Redis缓存中没有,导致数据库被频繁打醒 用户传参异常:用户手滑将Id = -1传入,没有击中缓存和数据库 防护措施: 布隆过滤器把所有合法 ID 的集合(或 hash)先“塞”进布隆过滤器;当请求进来先问布隆:“这个 key 可能存在吗?” 优点:大幅削减不可能存在的请求 缺点:有极小误判率,需要定期同步全量数据 缓存空值/占位符 数据库里也没有?那就把 “没有” 这个事实也缓存起来 1234// 查库后发现nullred...
MySQL八股文
存储引擎及架构 数据库的三大范式 第一范式:字段必须是原子性,不能再分 第二范式:每个非主属性必须完全依赖于主键,消除部分依赖 第三范式:非主键之间不能有依赖关系,消除传递依赖 关系型数据库区别 关系型数据库:复杂的数据结构归结为简单二维表格形式 MySQL、Oracle 非关系型数据库:将数据存储为键值对集合,其中键作为唯一标识符 Redis、MongoDB SQL四大类语言 DDL:建库建表、改结构,典型语句:CREATE / ALTER / DROP / TRUNCATE DML:增删改数据行,典型语句:INSERT / UPDATE / DELETE DQL:查数据,典型语句:SELECT DCL:权限/账户控制,CREATE USER / DROP USER 内部架构及作用 连接器:不同语言与数据库进行交互,如java,php 系统管理和控制工具:涵盖:运维监控、数据维护、性能优化、安全管控四大核心场景 连接层 连接时会优先加载全局权限和数据库级权限 连接过程是一个TCP长连接,MySQL服务器和客户端通讯是“半双工”,只能单方面发送...
RocketMQ八股文
为什么要用MQ? 应用解耦 假设有支付、订单、短信三个服务,当有一笔订单需要调用这三个服务时,需要在代码中写死这三个服务的调用接口,如果需要新增一个新的服务积分服务,又要在代码中新增调用接口,耦合度太高,不利于管理 此时引入RocketMQ,通过发布不同的topic,需要的服务只需要订阅它就可以了,这样一来,生产者不需要知道我需要调用哪些接口,只管发送消息即可。未来再需要新增服务的时候,只需要在这个服务中订阅消息就可以了。扩展性提高,维护成本降低 生产者不再直接调用多个下游服务,只负责发消息; 谁想处理这条消息,就订阅对应的 Topic。 新增/删除下游服务不需要修改生产者代码。 异步提速 假设生产者向RocketMQ中发送一条用户下单的消息需要 50ms,生产者向数据库中发送一条消息需要 50ms,支付、订单、短信三个服务接收消息后处理需要 200ms 那么用户得到反馈的时间是多少呢? 50ms + 50ms = 100ms ,前端只需要将消息发送成功,数据库消息写入成功后就可以返回了,后端服务异步处理消息就行了,减少用户等待的时间 把耗时操作(发短信、扣库存、记...
SpringBoot八股文
SpringBoot八股文 SpringBoot的项目结构是怎么样的? 说一说Spring框架核心特性有哪些? / 好处有哪些? IOC容器:Spring通过控制反转(DI)实现了对象的创建和对象间的依赖关系,开发者只需要定义好Bean及其依赖关系,Spring容器就会负责创建和组装这些对象 AOP:面向切面编程,允许开发者横切关注点,例如事务管理、安全控制、日志记录等,可以提高代码的可维护度和可重用性 事务管理:Spring提供了一致的事务管理接口。开发者可以轻松地进行事务管理,而无需关心具体的事务API MVC框架:Spring MVC是一种Web框架,采用了模型-视图-控制器(MVC)框架,它支持灵活的URL到页面控制器的映射 非侵入式设计:它可以使应用程序对框架的依赖最小化 介绍一下IOC 简介:IOC即控制反转的意思,它是一种创建和获取对象的技术思想,依赖注入(DI)是实现这种技术的一种方式。在传统开发过程中,我们需要通过new关键字来创建对象。使用IOC思想开发方式的话,就可以不用new关键字来创建对象,而是通过IOC容器来帮我...
JVM八股文
JVM模型 JDK:Java Development Kit:Java开发工具包 JRE:Java Runtime Environment:Java运行环境 JVM:Java Virtual Machine Java虚拟机 为什么要引入JVM? JVM是Java虚拟机,支持跨平台运行,一次编译,处处运行,它能识别.class后缀文件,解析它的指令,完成想要的操作 内置GC回收垃圾,不需要手动管理内存 JVM运行时内存共分为 JVM 运行时内存主要分为 线程私有 和 线程共享 两类。 线程私有的包括: 程序计数器 Java 虚拟机栈 本地方法栈 线程共享的包括: 堆 方法区(JDK 8 以后是元空间,使用本地内存) 程序计数器 用于存储当前线程正在执行的java方法JVM指令地址;如果执行Native,计数器为null 程序计数器的作用,为什么是私有的? 程序计数器用于记录当前线程正在执行的字节码指令地址,在线程发生时间片切换时,JVM 可以根据程序计数器恢复执行位置。因为每个线程执行进度不同,所以程序计数器必须是线程私有的。 Java虚拟机栈 ...
JUC八股文
【要图】 线程 并发编程存在的三大问题? 原子性 同一时刻只能有一个线程对数据进行操作。在java中使用了atomic包和synchronized关键字来确保原子性 可见性 一个线程对主内存进行修改,其他线程可以看到。在java中使用synchronized和volatile两个关键字实现 有序性 一个线程观察其他线程的执行顺序,一般无序。在java中用happens-before原则来确保有序性 happens-before:如果 A happens-before B,那么 A 的结果(内存写入)对 B 可见,并且 A 的执行顺序在 B 之前(逻辑上有序)。 !!!只要不同时满足以上三个条件,就会产生并发问题 【区别!!!】 并发原子性:一段代码会不会被插队(线程层面) 三大范式中第一范式1NF 原子性:一个格子只能放一个值(表结构层面) 事务原子性:一组SQL要么全成要么全撤(事务层面) 线程和进程的区别? 进程是操作系统分配资源的最小单位,线程是 CPU 调度的最小单位。 一个进程内部可以包含多个线程,这些线程共享进程的内存资源。 在 Java 中,...
test
$jason = \frac{1}{2}$









