Java面试题
连接数据库的配置和操作
内存读写效率远高于磁盘读写,省去磁盘IO操作
存储形式
Redis作为K-V键值对型的内存数据库,所有键值都是用字典来存储,即哈希表结构。哈希表的特性就在O时间复杂度就可以获取对应的值。
编码
支持多种数据结构及编码,针对不通业务场景,都有相对应的数据结构和编码。
根据元素的数量,有一个阈值,小于阈值和大于阈值的编码不同。
IO多路复用
核心思想:让单个线程去监视多个连接,某个连接就绪,就触发读写事件。即可以单个线程处理多个客户端连接,无需创建和维护过多的进程和线程。
单线程,避免上下文切换
内部执行命令为单线程,避免上下文切换带来的CPU开销
渐进式ReHash、缓存时间戳
(1)渐进式ReHash:
Redis使用全局哈希表来保存所有键值对,
哈希表相当于一个数组,数组的每个元素称为一个哈系桶,每个哈系桶中保存了键值对的数据。
数据增加到一定阈值,数组扩容会导致数据发生移动,此时访问会发生阻塞
渐进式ReHash:把一次性大量拷贝(数组移动)的开销,分摊到多次处理请求的过程中。
Redis默认使用两 ...
项目背景随着人口老龄化趋势的加剧,养老问题已经成为全球面临的重大社会问题之一。在中国,老年人口数量庞大,养老需求迅速增长,但养老服务水平和质量普遍存在不足,尤其是养老机构管理问题。当前,许多养老机构存在管理混乱、服务质量低下、人才短缺等问题,不能及时满足老年人的需求,给老年人的身体和心理健康带来了很大的困扰。
因此,建立一套高效的养老院管理系统是非常必要的。该系统可以实现对养老机构的信息化管理,包括老人入住、床位管理、医疗护理、膳食管理、活动安排、员工考勤、财务管理等方面。通过系统优化管理流程,提高服务质量,满足老年人的需求,保障老年人的权益和福利。
项目介绍系统的目标和用途:
我们开发的后台系统旨在提供一个高效、可靠且易于管理的解决方案,以支持各种业务需求。它是一个基于云架构的后台管理平台,用于管理和监控用户数据、处理业务逻辑以及支持关键决策。
系统的主要功能和特点:
我们的后台系统具备多个核心功能,包括用户管理、权限控制、数据存储与处理、业务逻辑实现、报表生成等。它提供了一个直观友好的用户界面,使用户能够轻松地管理、操作和监控系统中的数据和业务流程。
系统采用的技术架构: ...
Redis面试题一、Redis为什么快?
基于内存
内存读写效率远高于磁盘读写,省去磁盘IO操作
存储形式
Redis作为K-V键值对型的内存数据库,所有键值都是用字典来存储,即哈希表结构。哈希表的特性就在O时间复杂度就可以获取对应的值。
编码
支持多种数据结构及编码,针对不通业务场景,都有相对应的数据结构和编码。
根据元素的数量,有一个阈值,小于阈值和大于阈值的编码不同。
IO多路复用
核心思想:让单个线程去监视多个连接,某个连接就绪,就触发读写事件。即可以单个线程处理多个客户端连接,无需创建和维护过多的进程和线程。
单线程,避免上下文切换
内部执行命令为单线程,避免上下文切换带来的CPU开销
渐进式ReHash、缓存时间戳
(1)渐进式ReHash:
Redis使用全局哈希表来保存所有键值对,
哈希表相当于一个数组,数组的每个元素称为一个哈系桶,每个哈系桶中保存了键值对的数据。
数据增加到一定阈值,数组扩容会导致数据发生移动,此时访问会发生阻塞
渐进式ReHash:把一次性大量拷贝(数组移动)的开销,分摊到多次处理请求的过程中。
Redi ...
Shiro实现权限控制步骤 1.加入3个依赖 shiro-core(shiro内核依赖) shiro-spring(shiro与spring整合依赖) spring-boot-starter-aop(spring aop依赖) 2.创建shiro对应的配置文件 1.ShiroConfig(文件名称可以自定义,配置类),自动加载,并执行shiroFilter方法,排除不需要权限的URL 同时启动注解功能(即运行authorizationAttributeSourceAdvisor方法) 该类启动时执行一次,后面不再执行该类 2.UserRealm(文件名称可以自定义,实现用户登录与权限控制) 3.在需要进行权限控制的方法前面加上对应的注解 @RequiresPermissions(“权限字符串”) 当访问路径对应的方法前面有@RequiresPermissions注解时,系统自动调用UserRealm类的AuthorizationInfo方法进行权限验证, ...
SpringBoot面试题
什么是SpringBoot?
SpringBoot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者可以快速上手。
为什么要使用SpringBoot?
快速开发
快速整合第三方框架(Maven依赖关系,Maven继承)
简化XML的配置
内置嵌入HTTP服务器(Tomcat(默认)、Jetty),降低了对环境的要求
SpringBoot的优点?
容易上手,提升开发效率,为Spring开发提供一个更快、更简单的开发框架
远离繁琐的配置
提供一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等
SpringBoot总结就是使编码变简单、配置变简单、部署变简单、监控变简单等等
SpringBoot的缺点
SpringBoot仅适用于全新Spring项目。将一个传统SpringFramework项目转换为SpringBoot应用程序是一个非常困难和耗时的过程
集成度较高,使用过程中不太容易了解底 ...
SpingBoot创建项目步骤
创建项目步骤:(必须确保网络能正常访问) 1.File->new ->module 2.选择spring initializr 3.配置项: 1.group name(默认包)
2.name(发布包的名称)
3.type(maven项目)
4.packaging(打包方式,jar,war)
4.选择需要的依赖,选中的依赖会自动配置到pom.xml文件中,也可以手动配置 5.修改pom.xml文件 1.修改jdk版本为本机环境对应的版本
2.修改打包方式
3.添加需要的依赖
4.配置web路径,资源路径
6.启动项目(找到BootdemoApplication类)
SpingBoot整合mybatis
修改pom.xml
1.添加Mybatis和Mysql依赖 org.mybatis.spring.boot mybatis-spring-boot-starter 1.2.0 ...
SpringCloudSpringCloud简介
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflix,Neflix包含了四大组件:
Eureka :服务注册中心,用于实现服务的注册和发现
Ribbon:客户端负载均衡器,主要提供客户侧的负载均衡算法
Hystrix:断路器,保护系统,控制故障范围
Zuul:API网关,提供路由、负载均衡等多个作用
以及另一个子项目 Config:配置中心,实现配置统一管理
SpringCloud基本概念:集群和分布式
集群:
假设现在有一家小饭店,厨房只有一个厨师,他需要干买菜、洗菜、切菜、炒菜所有工作
当饭店生意火爆时,一个厨师忙不过来,于是老板再请了一个一样的厨师,两个厨师能炒一样的菜,这两个厨师的关系是集群
应用服务器集群部署
分布式:
随着菜系品种增多,一个厨 ...
数据库分类——关系型数据库
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。 包含Mysql、Oracle、SqlServer等。随着互联网WEB2.0时代的到来,面临着高并发、高性能的一系列的挑战。
——非关系型数据库
新型的数据库模型,也被称为NOSQL数据库,NOSQL本意是“NOT ONLY SQL”,并不是彻底要彻底否定关系型数据库,而是作为传统关系型数据库的一个有效补充。包含 memcached (纯内存),redis(持久化缓存),mongodb(文档的数据库)
非关系型数据库的分类1、key-value存储数据库
键值数据库就类似传统语言中使用哈希表,可以通过key来添加、查询或删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性 。典型产品:Memcached、Redis、MemcacheDB、BerkeleyDB
2、列存储(Column-oriedted)数据库
了解即可,一般公司用不到,典型产品:Cassandra,HBase
3、面向文档(Document-Oriented)数据库
...
Vue面试题
Vue优点?
轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十KB;
简单易学:国人开发,中文文档,不存在语言障碍,易于理解和学习;
双向数据绑定:保留了react的特点,在数据操作方面更为简单;
组件化:保留了react的优点,实现了HTML的封装和重用,在构建单页面应用方面于着独特的优势;
视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作;
虚拟DOM:dom操作是非常耗费性能的,不在使用原生的dom操作节点,极大解放dom操作,但具体操作的还是dom不过是换了另一种方式;
运行速度更快:相比较与react而言,同样是操作虚拟dom,就性能而言,vue存在很大的优势。
vue父组件向子组件传递数据?
通过props
子组件像父组件传递事件?
$emit方法
v-show和v-if指令的共同点和不同点?
共同点:都能控制元素的显示和隐藏;
不同点:实现本质方法不同,v-show本质就是通过控制css中的display设置为none,控制隐藏,只会编译一次;v-if是动态的向D ...
vue封装数据发送后台可以使用将数据转换为JSON格式或者使用FormData对象封装数据(键值对)键对应后台的实体类,值前端要传入后台的值
JSON:
const data = {
name: 'John',
age: 25,
};
JSON.stringify(data)
FormData:
const formData = new FormData();
formData.append('name', 'John');
formData.append('age', 25);
文件上传1.创建一个表单并添加一个文件输入控件,例如使用<input type="file">元素。2.监听文件选择事件,获取用户选择的文件,并将其存储在V ...