查看springboot面试总结文档和回答
String,Stringbuffer,Stringbuilder区别
类 | 线程安全 | 性能 | 资源占用
String 安全 低 高
StringBuffer 安全 中 中
StringBuilder 不安全 高 低
HashMap,TreeMap,不可重复,非线程安全
ArryList, LinkedList,有序,可重复,非线程安全
JDK8 stream基于集合流的处理:
分组: Map<Integer, List<Person>> ageGroupMap = persons.stream()
.collect(Collectors.groupingBy(Person::getAge))
过滤:List<String> list2 = list.stream().filter(s -> s.startsWith("a"))
.collect(Collectors.toList());
统计:long count = list.stream().filter(x -> x > 5).count();
求和:Optional<Integer> sum = list.stream().reduce((x, y) -> x + y);
切片:List<String> list =list.stream().limit(3).collect(Collectors.toList());
排序:List<Integer> list2=list.stream().sorted().collect(Collectors.toList());
映射(元素):List<String> names = persons.stream().map(Person::getName)
.collect(Collectors.toList());
映射(引用): userList.stream().peek(user -> user.setName("peek: " +
user.getName())).collect(Collectors.toList());
去重:List<String> list2 =list.stream().distinct().collect(Collectors.toList());
Postman/ApiPost:
接口测试工具,url+请求方式(post)+请求头(token)+请求体(表单和json格式)
GIT/SVN: 代码管理工具(代码共享,历史记录)
第一次拉代码:clone
提交代码,add->commit->pull->解决冲突->push
Poi:
文档导入导出框架.比如excel,通过流方式读取获得wordsheet,获取sheet,row,cell,最终list
例子:百万excel数据导入后入库,批量(1000条)+事务(实现类头部)
分页:PageHelper方法使用了静态的ThreadLocal参数,分页参数和线程是绑定的.PageHelper.startPage(int pageNum, int pageSize)相当于开启分页,提升开发效率和便于维护
上传:FileUpload
swagger:定义API规范,自动生成API文档, 集成测试工具
验证码:Kapcha
其他框架:
Redis: Key-Value数据库
安装:下载压缩包,直接解压,通过startup和shutdown启动关闭服务
使用:配置yml文件+RedisTemplate创建工具类+直接使用工具类
weblogic和tomcat区别:
weblogic支持JavaBean,热部署,集群机制,分布式,管理和配置,tomcat不支持这些
maven配置:构建和管理Java项目的工具,使用一个配置文件(pom.xml)来定义项目的依赖关系和构建设置
config–>settins.xml文件
<localRepository>/path/to/local/repo</localRepository>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
weblogic部署:WebLogic是一个Java EE应用服务器,用于部署和运行Java应用程序。下面是WebLogic部署的一般步骤:1 安装WebLogic 2 创建域 3 部署应用程序:域创建后,使用WebLogic的管理控制台或命令行工具来部署应用程序。4 配置数据源 5 启动服务器 6 监控和管理
tomcat部署:轻量级的应用服务器
1 下载和安装Tomcat
2 配置Tomcat conf–server.xml文件
--conf--server.xml文件 改端口
<Connector executor="tomcatThreadPool"
port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
/>
--改乱码conf--> logging.properties
java.util.logging.ConsoleHandler.encoding = UTF-8
3,启动和关闭
Nginx部署:代理服务器(https://blog.csdn.net/weixin_43239880/article/details/130841067)
1 下载和安装Nginx;
2 配置nginx.conf
– 配置注解
#nginx进程数,建议设置为等于CPU总核心数。
worker_processes 1;
# 事件区块开始
events {
#单个进程最大连接数(最大连接数=连接数*进程数)
#根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为。
worker_connections 1024;
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#include:导入外部文件mime.types,将所有types提取为文件,然后导入到nginx配置文件中
include mime.types;
#默认文件类型
default_type application/octet-stream;
#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
#sendfile指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime。
sendfile on;
#长连接超时时间,单位是秒
keepalive_timeout 65;
# 第一个Server区块开始,表示一个独立的虚拟主机站点
server {
# 提供服务的端口,默认80
listen 80;
# 提供服务的域名主机名
server_name localhost;
#对 "/" 启用反向代理,第一个location区块开始
location / {
root html; #服务默认启动目录
index index.html index.htm; # 默认的首页文件,多个用空格分开
}
# 错误页面路由
error_page 500 502 503 504 /50x.html; # 出现对应的http状态码时,使用50x.html回应客户
location = /50x.html { # location区块开始,访问50x.html
root html; # 指定对应的站点目录为html
}
}
}
2.1 查看Nginx版本号
./nginx -v
2.2 启动Nginx
./nginx
2.3 关闭Nginx
./nginx -s stop
2.4 重新加载Nginx
./nginx -s reload
2.5 重启Nginx
./nginx -s reopen
2.6 优雅停止Nginx
./nginx -s quit
2.7 测试配置文件是否正确
./nginx -t
3,关闭和启动
NACOS部署:Nacos是一个用于动态配置管理和服务发现的开源平台,可以帮助实现微服务架构中的配置管理和服务注册与发现。下载和安装Nacos ,配置Nacos,启动Nacos,配置动态配置,配置服务注册与发现
特点:服务注册与发现,配置管理,消息通知,服务健康监测,分布式任务调度,集群部署,权限管理,监控和统计
token认识:
前端 获取token存下来,后续放入请求头传递给后台验证
后台 返回token给前端,并存下来(reids/map),后续获取前端请求头并验证
数据库:
大数据查询优化(亿万数据查询)
索引+分区+逻辑+数据分析器
视图:固定数据虚拟表,可以使用CREATE VIEW语句创建视图
特点:数据封装,数据过滤,数据聚合,数据安全性,数据重用
CREATE VIEW my_view AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
存储过程:类似方法/函数传参返回结果,效率高.
特点:封装业务逻辑,提高性能,数据一致性,访问控制,批处理操作,错误处理
CREATE OR REPLACE PROCEDURE my_procedure (param1 IN NUMBER, param2 OUT VARCHAR2)
IS
-- 声明变量
var1 NUMBER;
BEGIN
-- 执行SQL操作
SELECT column INTO var1 FROM table WHERE condition;
-- 逻辑操作
IF var1 > param1 THEN
param2 := 'Greater';
ELSE
param2 := 'Smaller';
END IF;
END;
存储过程创建后,可以通过调用存储过程的名称和参数来执行它,例如:
DECLARE
result VARCHAR2(10);
BEGIN
my_procedure(10, result);
DBMS_OUTPUT.PUT_LINE('Result: ' || result);
END;