Java面试知识点复习​_kaic

news2024/11/13 9:30:15

一、后端基础
1.Java基础、集合、线程、异常(自定义异常)流
2.mysql、redis、mongodb(为什么使用)
3.ssm、springboot、springcloud、mybatis-plus

1.接口和抽象类的区别

二、前端基础
1.事件

三、实习和项目
1.博客项目的日志配置(切面)

四、408
1.数据机构与算法
2.计算机网络
2.1 osi七层模型和tcp五层模型
2.2 udp和tcp的区别
2.3 udp和tcp分别对应那些协议
2.4 三次握手和四次挥手
2.5 udp和tcp的区别
2.6 什么是http协议?http和https的区别?https的过程
2.7 URI和URL的区别?
2.8 put和post的区别?
2.9 常见的http返回码有哪些?
2.10 http请求报文和响应报文的组成?
2.11 ip地址的分类
2.12 浏览器输入ip地址后的执行过程
2.13 ip和子网掩码
五、尚易通
**知识点
1.nacos
2.ngixs
3.gateway
1.除了统一多个服务的入口,并分发请求之外
2.解决跨域问题(域名不同或域名相同但端口号不一样),跨域问题是浏览器的限制不是服务之间的额限制,当一个端口的前端调用另一个端口号的前端时就会发生跨域。
3.

4.fegin
这里是引用

5.ribbonMQ
1.消息的概念
2.消息队列的概念
3.消息队列的三个作用
4.springboot集成ribbitmq的步骤

6.在远程外部系统时的调用方法
7.jwt token
1.环境搭建
采用maven来构建和管理项目,其由一个顶级父模块管理一些公共的依赖版本,在顶级父模块下创建common公共model,用来创建一些工具等,还有业务模块专门用来创建与医院连接相关接口、平台管理相关接口,还有其他模块(支付、用户)

2.医院设置
头部url

@RequestMapping("/admin/hosp/hospitalSet")
1
2.1 医院设置信息插入接口
@PostMapping("saveHospitalSet")
1
1.设置医院状态为可用(1表示可用 0 表示不可)
2.自动生成秘钥并采用md5加密后赋值给实体对象
3.将实体对象进行插入
4.根据插入返回状态码

2.2 统一的返回类构造
2.3 医院设置分页条件查询
@PostMapping("findPageHospSet/{current}/{limit}")
1
1.通过current和limit构造Page类,Page<HospitalSet> page = new Page<>(current,limit);
2.构造querywarpper,
3.获取条件对象中属性(hosname,hoscode)进行判空if (!StringUtils.isEmpty(hosname)){
4.通过mq中Iservice接口提供的page方法传入参数hospitalSetService.page(page, queryWrapper);查询,返回一个page对象
5.通过统一返回类返回数据return Result.ok(page1);

2.4 医院设置更新接口
 @PostMapping("updateHospitalSet")
1
1.调用方法直接更新 hospitalSetService.updateById(hospitalSet);
2.根据返回值boolean类型返回

2.5 医院设置删除接口
@DeleteMapping("{id}")
1
1.根据传入的编号直接调用删除hospitalSetService.removeById(id);

2.6 医院设置批量查询
@DeleteMapping("batchRemoveHospitalSet")
1
1.根据请求体list直接调用hospitalSetService.removeByIds(list);
接收方式(@RequestBody List<Long> list)

2.7 医院设置根据id查询
@GetMapping("getHospitalSet/{id}")
1
1.根据id直接调用hospitalSetService.getById(id);

3.数据字典
3.1 用途
在管理系统中,会用到大量的频繁使用、比较固定的数据比如省市区三级联动数据还有职业分类数据,通常会创建数据字典来管理和查询这些数据

3.2 数据的导入
使用EsayExecl来读写execl文件

3.3 数据的导出
这里是引用

3.1 数据的分级显现
@GetMapping("findByDictCode/{dictCode}")
1
1.根据dictCode查出该数据对应的id,
2.让该id作为parent_id查询二级数据,

4.monogobd
4.1使用原因
由于monogobd是非关系系数据库(NoSql),对海量数据的访问和读写是非常高效的,适合高并发的情况。

4.1
5.医院上传接口
6.医院管理
6.1
7.排班管理和网关和手机登录
7.1排班管理
7.2网关
Gateway网关统一多个服务作为入口,然后分发接口

7.3手机登录
1.从请求对象中接收手机号和验证码参数
2.对参数判空
3.校验验证码是否正确
4.如果正确,根据手机号判断是否为第一次登录(如果是:将该数据存入数据库中,不是:直接进行接下来的验证)
5.校验用户是否为可用的状态
6.设置返回信息(jwt生成token)

8.oss、用户认证、就诊人管理
8.1oss
8.1.1概念
由于在用户认证的过程中需要上传图片等文件,所以需要集成文件服务,oss是阿里的一个分布式的文件服务系统。
在访问时 :需要把连接阿里的id和秘钥放在配置文件中

8.2用户认证
8.2.1后台管理
(1)用户的锁定
使用restful风格来传递参数;以下为在service层的判断逻辑
前提:1表示锁定 0表示解锁
1.判断传递的状态值为0或1方可继续
2.根据用户id查询出用户信息赋给对象
3.通过对象更改状态码
4.把对象扔进方法中baseMapper.updateById(userInfo);

(2)显示用户详情
通过HttpServletRequest 获取到用户id
2.在service层进行两部分的查询(根据用户id查询出用户的认证信息,然后根据用户id查询出与用户关联的就诊人信息),存放到map中返回前端
(3)用户审核通过或不通过
此种传参方法没有使用请求体的方式,所以需要查一次,更一次

1.从HttpServletRequest 中获取用户id
2.根据id查出信息赋值给对象,
3.设置对象的状态
4.做更新

这里是引用

8.2.2前台管理
(1)用户的认证信息上传


 @ApiOperation("用户认证")
    @PostMapping("auth/userAuth")
    public Result userAuth(@RequestBody UserAuthVo userAuthVo, HttpServletRequest request) {
        //传递两个参数,第一个参数用户id,第二个参数认证数据vo对象
        userInfoService.userAuth(AuthContextHolder.getUserId(request),userAuthVo);
        return Result.ok();
    }
    
    //service层
    //用户认证
    @Override
    public void userAuth(Long userId, UserAuthVo userAuthVo) {
        //根据用户id查询用户信息
        UserInfo userInfo = baseMapper.selectById(userId);
        //设置认证信息
        //认证人姓名
        userInfo.setName(userAuthVo.getName());
        //其他认证信息
        userInfo.setCertificatesType(userAuthVo.getCertificatesType());
        userInfo.setCertificatesNo(userAuthVo.getCertificatesNo());
        userInfo.setCertificatesUrl(userAuthVo.getCertificatesUrl());
        userInfo.setAuthStatus(AuthStatusEnum.AUTH_RUN.getStatus());
        //进行信息更新
        baseMapper.updateById(userInfo);
    }
在这里插入代码片
1
(2)认证通过的显示
直接通过用户id查询,用户id是通过HttpServletRequest获取,所有的登录后访问的接口都需要此方式获取用户id

 

8.3就诊人管理
8.3.1就诊人的添加
这里是引用

8.3.2获取就诊人信息
1.根据就诊人id查询出就诊人信息,此时查出的信息中(省市区,证件类型都是以code编号存在),所以要通过fegin远程调用数据字典服务

//Patient对象里面其他参数封装
    private Patient packPatient(Patient patient) {
        //根据证件类型编码,获取证件类型具体指
        String certificatesTypeString =
                dictFeignClient.getName(DictEnum.CERTIFICATES_TYPE.getDictCode(), patient.getCertificatesType());//联系人证件
        //联系人证件类型
        String contactsCertificatesTypeString =
                dictFeignClient.getName(DictEnum.CERTIFICATES_TYPE.getDictCode(),patient.getContactsCertificatesType());
        //省
        String provinceString = dictFeignClient.getName(patient.getProvinceCode());
        //市
        String cityString = dictFeignClient.getName(patient.getCityCode());
        //区
        String districtString = dictFeignClient.getName(patient.getDistrictCode());

        patient.getParam().put("certificatesTypeString", certificatesTypeString);
        patient.getParam().put("contactsCertificatesTypeString", contactsCertificatesTypeString);
        patient.getParam().put("provinceString", provinceString);
        patient.getParam().put("cityString", cityString);
        patient.getParam().put("districtString", districtString);
        patient.getParam().put("fullAddress", provinceString + cityString + districtString + patient.getAddress());
        return patient;
    }
8.3.3后台管理
这里是引用

9.预约下单
9.1查询可预约排版数据
这里是引用

9.2查询排版数据
9.3下单
1.通过远程调用获取到:
根据就诊人id就诊人信息
根据排版id获取到排班信息
2.判断当前时间是否在预约时间范围内(时间判断)
3.通过远程调用“根据医院code获取签名秘钥”
4.生成一个订单交易号
5.将以上数据封装到订单对象中
6.将此订单数据插入到数据库中
7.将数据以封装到map中向医院发起远程调用
8.如果医院返回值为200:将医院返回值(//预约记录唯一标识//预约序号//取号时间//取号地址//更新订单)封装到订单对象中,更新本地数据
9.从医院返回值中:
将“排版可预约数”和“排版剩余预约数”封装到OrderMqVo对象中
然后将就诊人电话和短信模板等内容封装到MsmVo中
最后在将MsmVo封装到OrderMqVo中
10,将封装好的OrderMqVo扔到消息队列中
rabbitService.sendMessage(MqConst.EXCHANGE_DIRECT_ORDER, MqConst.ROUTING_ORDER, orderMqVo); 让其消息队列监听器监听后,完成排班预约数的更新和短息发送

9.4查询订单列表

1.根据page和limit构造一个page对象Page<OrderInfo> pageParam = new Page<>(page,limit);
2.构造条件并判空(//医院名称//就诊人名称//订单状态//安排时间)
QueryWrapper<OrderInfo> wrapper = new QueryWrapper<>(); if(!StringUtils.isEmpty(name)) { wrapper.like("hosname",name); }
3.调用方法查询baseMapper.selectPage(pageParam, wrapper);

10.微信支付


11.取消订单
12.定时任务与统计
六、面试总结
1.你对分布式是怎么理解的?
2.你的这个分布式项目中大概用了那些服务?
3.springcloud中用到了那些组件?
1.nacos
注册中心;
在微服务中,有服务的消费者,有服务的提供者
继承步骤:
(1)引入依赖
(2)在服务的配置文件中设置nacos的地址
(3)在服务的启动类上添加@EnableDiscoveryClient该注解的作用是“让注册中心发现,并扫描该服务”

2.feign
属于rpc的远程盗用,使用的是tcp/ip协议
集成步骤:
(1)导入依赖
(1)在调用者的启动类上加上注解:@EnableFeignClients (该注解的作用是客户端(允许客户端使用feign调用,扫描被@EnableFeign标注的interface接口)

@FeignClient(value = "service-cmn")//指明调用的那个服务
@Repository
public interface DictFeignClient {
    //根据dictcode和value查询
    @GetMapping("/admin/cmn/dict/getName/{dictCode}/{value}")
    public String getName(@PathVariable("dictCode") String dictCode, @PathVariable("value") String value);
    //根据value查询
    @GetMapping("/admin/cmn/dict/getName/{value}")
    public String getName(@PathVariable("value") String value);
}
3.gateway
网关,统一客户端的请求,然后分发请求
集成步骤:
(1)导入依赖
(2)添加跨域插件
(3)设置配置文件(设置服务的服务名和路由)

4.消息队列:详情

4.说下你对spring的理解?
4.1 什么是IOC?底层实现原理?有几种依赖注入的方式?
什么是IOC?

控制反转:把创建和调用bean的工作交给spring管理
目的是:降低耦合性

底层实现原理?

xml解析 工厂模式 反射

有几种依赖注入(注入属性)的方式?

1.通过set
2.通过构造器的方式

4.2 @Resourse和@Autowried的区别 参考文章
1.@Resourse是java提供的 @Autowried是spring提供
2.@Resourse的采用的是ByNname注入,而@Autowried采用的是ByType注入
3.ByName是通过set方法名小写与ioc中的BeanId去匹配,ByType是根据set方法中参数(接口)的实现类的类名的小写去与IOc中的BeanId去匹配,
4.当接口有多个实现类的时候使用@Qualifier(“helloWorldEnglishImpl”)注解进行标识

(1)spring创建对象的作用域?
有五种,常用的有两种
1.当创建对象时,scope=“singleton” (单例模式),既然是单例模式,每次创建的对象都是同一个,具有全局唯一性,在整个作用域中只有一个。
2.scope=“prototype”(原型模式),每次创建的对象都不一样

(2)spring创建对象是单例的,如果在类中定义全局变量的话会产生严重的线程安全问题*****
(3)ioc和aop(底层实现原理)详情
5.jdk动态代理
8.mybatis
8.1orm框架Mybatis中的#和$区别
8.2mybatis中常用的标签
1.<sql id="xxxx">用来存放字段的标签
2.<select > <insert> ,<update> <delete>
3.<resutMap> 查询结构和实体对象的映射
4.<include ref="xxx"> 在增删改查中引入<sql>中的字段标签

8.3mybatis中的接口是如何与xml中的sql绑定的
在mapper映射文件中通过namespace属性定义接口全路径,然后在增删改查的标签中通过id属性与接口中方法进行绑定。

8.4 如何做多表联查
1.编写联查sql语句
2.通过resultMap标签映射
3.在resultMap中如果有对象中对象的属性,通过<assocation property="user" >将关联的对象属性进行映射

10.嵌套结构和嵌套查询的区别:详情
11.mybatis中插入数据的时候如何获取主键
在mapper的映射文件中,插入标签<insert useGeneratedKeys=‘’“ture” Keyproperity="id">

12.hashmap的底层实现
13.cookie与session的区别(cookie和session的关系)
1.由于http请求时无状态的,所以在访问服务器的时候创建一个session,把sessionid返回给浏览器作为cook储存,这样以来就会浏览器就会识别到客户端的身份了。

14.如果浏览器把cookie禁用后还能使用session吗?(url重写)
cookie禁用后,每次访问session的时候会缺少sessionid,所以服务器就不能正确的识别客户端了。
但是通过重写url地址,将sessionid作为请求参数去访问服务器,也可以正常使用

15.mysql的隔离级别(在使用的过程中有没有改变过)
(1)默认的隔离级别?
1.读取未提交内容
2.读取已提交内容
3.可重复读
4.序列化

(2)什么是脏读、幻读和不可重复读?详情
1.脏读:事务A读取事务B修改未提交的数据
2.不可重复读:事务a读取事务b修改提交的数据
3.幻读:事务a读取事务b增加或删除后提交的数据
幻读和不可重读的区别是:不可重读侧重”修改“ 而幻读侧重于”增删“

(4)数据库的三大范式?详情
1.第一范式:保证每列的原子性,每列不可分割,例如地址中需要把省市区详细说明
2.第二范式:保证每列数据属性都要和主键有直接的关系,例如:在商品订单表中,商品的单价和数量和订单没有直接的关系,
3.避免在属性中出现传递依赖的关系。

(5)事务的四大特性
1.原子性:在操作数据的过程中,要么全成功,要么全不成功
2持久性:在一个事务提交后对于数据的改变是永久性的
3.隔离性:多个事务之间互不影响
4.一致性:同一个事务中,多次读取同一个数据的内容是一致的

15.平常的工作中是怎么使用redis的?(尚易通举例)
redis必问击穿、穿透、雪崩、单线程、双写一致性、日志、数据底层结构实现、分布式锁

(1)如何保证缓存与数据库的双写一致性?
(2)redis的几种类型和应用场景?
(3)redis的持久化策略?(那个效率更高)
16.什么是restful风格?
17.如何使用linux动态的查看一些日志?
18.不使用注解框架的情况下如何配置给类配置日志,如果监测
如果是tomcat部署的话:使用tail -f 文件名方式:详情

19.java反射和代理
20mvc和前后端分离的区别.详情
21、tyr{}catcah(){ return }finally{}的执行过程:详细
22.spring如何创建对象
1.在spring的xml配置文件中定义标签其中id是唯一标识
2.通过ClassPathXmlApplication读取spring.xml文件
3.调用getBeand(id)获取对象

23.java的封装
1.将类中的属性设置为private,隐藏对象的属性,外部不能直接访问对象的属性,对外提供固定的的访问属性的方法

24.mybatis的动态sql
1. 在where的后面必须添加1=1,否则会出现多余and情况
2.省去1=1的情况
3. 遍历数组,需要

24.1mybatis如何实现分页操作
1.引入PageHelper的依赖
2.手动配置分页插件
3.先通过PageHelp.startPage(currnt,num)》查询语句结果集>将结构集放到PageInfo中
PageHelper.startPage(page,size); List<BlogVo> blogVos = blogServie.selecSearch(blogSearch); PageInfo<BlogVo> pageInfo = new PageInfo<>(blogVos);

这里是引用

25.linux命令
25.1查看正在运行的服务端口号和进程号
netstat  -tnlp
1
根据进程号杀死进程

kill -9  pid
1
25.2 tail -n 和tail -f 日志详情
tail -f

动态的监控服务的日志
监控tomcat中catalina.out

26.Mysql
26.1Mysql存储引擎
Innodb:支持事务、注重多功能的拓展、不支持全文索引

myisam:不支持事务、注重性能、支持全文索引

26.1Mysql语句执行的顺序
1.from where groupby having select orderby limit

27.SpringMVC
27.1 执行流程:详情
27.2 springmvc设计组件的功能
1.处理映射器(HandlerMapping):根据url找到handler
2.处理适配器(HandlerAdapter):根据根据响应的去指向Handler
3.视图解析器(ViewResolver):解析视图,将逻辑视图转化为真正的视图

27.3 springmvc处理请求的过程中在那个环节将参数分装到Bean中
处理适配器这一步骤

28.反射
28.1 反射
1.Class类的对象用于表示当前运行的 Java 应用程序中的类和接口。
2.关于反射:详情
(1)什么是反射?
(2)

28.2 动态代理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

flutter tabBar 的属性及自定义实现

flutter tabBar 的属性及自定义实现 前言一、TabBar是什么&#xff1f;二、TabBar 自定义三、 Tab 自定义总结 前言 在Flutter中&#xff0c;TabBar的indicatorPadding属性用于设置指示器的内边距&#xff0c;而不是用于调整指示器和文字之间的间距。要调整TabBar中指示器和文字…

Field ‘非主键_id‘ doesn‘t have a default value

参考文章 Field ‘非主键_id‘ doesn‘t have a default value 的sql报错有两种情况 1.如果id是主键的话,一般是主键没有添加自增导致的错误 2.如果报错的是非主键id 那么是数据库设置错误 前端请求参数根本没有传入business_id 但是数据库报错 解决方法 把数据库数据限制n…

python 第九章 常用操作

系列文章目录 第一章 初识python 第二章 变量 第三章 基础语句 第四章 字符串str 第五章 列表list [] 第六章 元组tuple ( ) 第七章 字典dict {} 第八章 集合set {} 文章目录 系列文章目录9.1公共操作运算符 合并* 复制判断数据是否存在 公共方法len()delmax()min()rangeenume…

css实现文档目录(中间分割线宽度不定)

css实现文档目录&#xff08;中间分割线宽度不定&#xff09; 先上图片看效果 布局 数据 css样式 其实挺简单的&#xff0c;flex直接搞定

十六、centos7 下给python3创建虚拟环境

十五、centos7 下给python3创建虚拟环境 1.先说下为什么要创建虚拟环境 python3安装完成后&#xff0c;安装第三方库 pip3 install requests -i https://pypi.doubanio.com/simple提示如下让使用虚拟环境&#xff0c;不使用&#xff0c;即便是安装&#xff0c;也不能使用已经…

长连接和短链接详解

长连接和短链接详解 日常工作和生活中接触到的软件系统大多数情况下是由多个进程共同协作进行的&#xff0c;所以&#xff0c;了解进程之间如何进行高效的通信至关重要。 进程之间的通信有不少方式包括管道&#xff08;包括无名管道和命名管道&#xff09;、消息队列、信号量、…

Vue3在外部js文件获取Vue实例对象中的方法

刚开始想用getCurrentInstance 获取 发现这玩意只能写在setUp里面 然后百度发现在外部js文件只能先引入main.js在使用&#xff0c;这里注意要先将app实例导出 然后在外部js引用 就能获取到实例对象了 这点跟Vue2还是有很大区别

【SLAM14讲】 SLAM数学基础

一、向量 我们确定一个坐标系&#xff0c;也就是一个线性空间的基 (e1, e2, e3)&#xff0c; 那就可以谈论向量 a 在这组基下的坐标了&#xff1a; 1.1 内积 内积可以描述向量间的投影关系 1.2 外积 外积的方向垂直于这两个向量&#xff0c;大小为 |a| |b|sin 〈a, b〉&…

【生态系统服务】构建生态安全格局--权衡与协同动态分析--多情景模拟预测--社会价值评估

生态系统服务 生态系统服务&#xff08;ecosystem services&#xff09;是指人类从生态系统获得的所有惠益&#xff0c;包括供给服务&#xff08;如提供食物和水&#xff09;、调节服务&#xff08;如控制洪水和疾病&#xff09;、文化服务&#xff08;如精神、娱乐和文化收益…

vite + vue3 + tailwindcss

要在Vite Vue3中使用Tailwind CSS 创建项目 pnpm create vite在项目根目录中打开终端&#xff0c;并运行以下命令安装Tailwind CSS和相关依赖&#xff1a; pnpm install tailwindcss postcss autoprefixer执行 npx tailwindcss init&#xff0c;自动生成配置文件在tailwind.c…

【Unity3D】选中物体消融特效

1 消融特效原理 当前实现消融特效的方法主要有 Alpha 测试消融、clip&#xff08;或 discard&#xff09;消融&#xff0c;它们的本质都是随机丢弃一些片元&#xff0c;以实现消融效果。 1&#xff09;噪声纹理 为模拟随机效果&#xff0c;可以通过对噪声纹理进行采样实现&…

Linux操作系统详解

文章目录 引言1. 认识Linux1.1 操作系统概述1.2 认识Linux1.3 虚拟机介绍1.4 远程连接Linux操作系统1.5 WSL1.6 虚拟机快照 2. Linux基础命令2.1 Linux的目录结构2.2 命令入门2.3 目录切换相关命令&#xff08;cd/pwd&#xff09;2.4 相对路径&#xff0c;绝对路径和特殊路径符…

当某个微服务重启后,GateWay网关访问服务出现503的问题

因为开发阶段可能需要经常重启微服务&#xff0c;但有时会莫名奇妙返回503 Service Unavailable 由于从springcloud2020版本开始&#xff0c;弃用了Ribbon&#xff0c;因此Alibaba在2021及之后版本的nacos中删除了Ribbon的jar包&#xff0c;因此无法通过loadbalancer路由到指定…

SpringBoot使用AOP

Spring相信大家都学过&#xff0c;就不多述了。 自定义注解&#xff0c;注解的类中所有的接口都会执行AOP增强&#xff0c;注解的接口会执行AOP增强。 注解类&#xff1a; package xin.students.examManagement.annotation.springConfiguration;import java.lang.annotation…

tensorboard 如何导出数据

tensorboard 如何导出数据 场景描述&#xff1a;有时候在第一遍跑实验的时候&#xff0c;由于epoch和内部循环变量的原因&#xff0c;做出来的图可能不是我们想要的&#xff0c;这个时候&#xff0c;需要自己导出数据并且重新画图&#xff0c;本文介绍如何导出数据道json或csv格…

超声波功率放大器在超声驱动技术中的应用

超声波功率放大器是一种能够将低功率信号放大到足够高的电平的电子器件。在超声驱动技术中&#xff0c;超声波功率放大器被广泛应用于超声波发生器、超声波换能器和超声波传感器等部件中&#xff0c;以保证这些部件的正常工作和高效性能。 超声波功率放大器在超声驱动技术中的应…

C++primer(第五版)第十二章(动态内存)

C中内存包含静态内存,栈内存,自由空间(堆). 静态内存用于保存局部的static(静态)对象,以及定义于任何函数以外的变量(全局变量). 栈内存用来保存定义在函数内的非static对象,由编译器自动创建和销毁. 程序可以用堆来存储动态分配的对象,同时也需要由我们来显式地销毁. 12.1…

【第四天学习】数组

数组批量数据处理 数组的定义 速度是一个相同类型的用同一个标识符封装到一起的基本数据类型&#xff0c;可以使用一个统一的速度名或者是索引来唯一确定速度中的每个元素&#xff0c;它的执行效率非常高。 数组中每一个变量称为数组的元素&#xff0c;数组能够容纳元素的数…

Centos7安装wordpress图文教程

宝塔面板安装WordPress有两种方法&#xff1a; 自己手动安装&#xff08;推荐&#xff09;宝塔后台一键部署跳转提示 推荐使用手动安装&#xff0c;因为一键部署的WordPress版本不是最新的&#xff0c;而且自己上传的文件比较放心。 第一步&#xff0c;上传WordPress安装包 …

提升UE5写实效果的项目设置

随着虚幻引擎5&#xff08;Unreal Engine 5&#xff0c;简称UE5&#xff09;的发布&#xff0c;游戏开发者和数字艺术家们迎来了一个全新的机会&#xff0c;可以在其强大的渲染引擎下创建更加逼真和令人惊叹的游戏和虚拟场景。然而&#xff0c;要实现出色的写实效果&#xff0c…