Day217,2024最新百度、头条等公司Java社招面试题目

return new UsernamePasswordAuthenticationToken(userName, token, authorities);

}

return null;

}

return null;

}

}


创建查询用户类和前端对接

======================================================================

一 、创建自定义查询用户类


(1)在service_acl模块创建,因为其他模板不会用到

image-20210310222220994

  • UserDetailsServiceImpl

创建查询登录和用户权限的类,写的位置随意,要求实现UserDetailsService

下面的对象为具体项目中的用户账户密码的那个实体类对象,用于下面的整合,查找数据库的内容

package com.achang.aclservice.service.impl;

import com.achang.aclservice.entity.User;

import com.achang.aclservice.service.PermissionService;

import com.achang.aclservice.service.UserService;

import com.achang.serurity.entity.SecurityUser;

import org.springframework.beans.BeanUtils;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.security.core.userdetails.UserDetails;

import org.springframework.security.core.userdetails.UserDetailsService;

import org.springframework.security.core.userdetails.UsernameNotFoundException;

import org.springframework.stereotype.Service;

import java.util.List;

/**

  • 自定义userDetailsService - 认证用户详情

  • @author qy

  • @since 2019-11-08

*/

@Service(“userDetailsService”)

public class UserDetailsServiceImpl implements UserDetailsService {

@Autowired

private UserService userService;//操作对应user表的数据库service对象

@Autowired

private PermissionService permissionService;

/***

  • 根据账号获取用户信息

  • @param username:

  • @return: org.springframework.security.core.userdetails.UserDetails

*/

@Override

public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {

// 从数据库中取出用户信息

User user = userService.selectByUsername(username);

// 判断用户是否存在

if (null == user){

//throw new UsernameNotFoundException(“用户名不存在!”);

}

// 返回UserDetails实现类

com.achang.serurity.entity.User curUser = new com.achang.serurity.entity.User();

BeanUtils.copyProperties(user,curUser);

List authorities = permissionService.selectPermissionValueByUserId(user.getId());

SecurityUser securityUser = new SecurityUser(curUser);

securityUser.setPermissionValueList(authorities);

return securityUser;

}

}

image-20210310222457476


二、后端接口和前端页面对接


1、在前端项目中下载依赖

npm install --save vuex-persistedstate

2、在node_modules文件夹中替换element-ui依赖

这里替换之前的element-ui的组件,老师后面赶工太严重了,全都是替换

删除掉项目里的element-ui,然后将新的复制进来

image-20210311102931525

3、替换相关文件

这里阿昌直接就看了,没对着做了,直接全部替换代码,太过分了

image-20210311111540281


Nacos配置中心

===================================================================

一、配置中心介绍


image-20210311112242724

1、Spring Cloud Config

Spring Cloud Config 为分布式系统的外部配置提供了服务端和客户端的支持方案。在配置的服务端您可以在所有环境中为应用程序管理外部属性的中心位置。客户端和服务端概念上的Spring Environment和 PropertySource 抽象保持同步, 它们非常适合Spring应用程序,但是可以与任何语言中运行的应用程序一起使用。当应用程序在部署管道中从一个开发到测试直至进入生产时,您可以管理这些环境之间的配置,并确保应用程序在迁移时具有它们需要运行的所有内容。服务器存储后端的默认实现使用git,因此它很容易支持标记版本的配置环境,并且能够被管理内容的各种工具访问。很容易添加替代的实现,并用Spring配置将它们插入。

Spring Cloud Config 包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。Springcloud使用git或svn存放配置文件,默认情况下使用git。

2、Nacos替换Config

Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, SpringCloud Config。通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。

(1)应用场景

在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成。配置变更是调整系统运行时的行为的有效手段。如果微服务架构中没有使用统一配置中心时,所存在的问题:

  • 配置文件分散在各个项目里,不方便维护

  • 配置内容安全与权限

  • 更新配置后,项目需要重启

nacos配置中心:

系统配置的集中管理(编辑、存储、分发)、动态更新不重启、回滚配置(变更管理、历史版本管理、变更审计)等所有与配置相关的活动。

二、读取 配置中心的配置文件


1、在Nacos创建统一配置文件

(1)点击创建按钮

image-20210311113437242

(2)输入配置信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kjMYXomG-1615449307176)(http://qpgf4uqra.hn-bkt.clouddn.com/20210311113559.png)]

Data ID 的完整规则格式如下

p r e f i x − {prefix}- prefix−{spring.profiles.active}.${file-extension}

image-20210311113528149


2、以service-statistics模块为例

(1)在 service中引入依赖

org.springframework.cloud

spring-cloud-starter-alibaba-nacos-config

(2)创建bootstrap.properties配置文件

#配置中心地址

spring.cloud.nacos.config.server-addr=localhost:8848

#spring.profiles.active=dev

该配置影响统一配置中心中的dataId

spring.application.name=service-statistics

image-20210311114128511

image-20210311114134479

3)把项目之前的application.properties内容注释,启动项目查看效果

image-20210311114220183

3、补充:springboot配置文件加载顺序

其实 yml 和 properties 文件是一样的原理,且一个项目上要么 yml 或者 properties ,二选一的存在。推荐使用 yml ,更简洁。

bootstrap 与 application

(1)加载顺序

这里主要是说明 application 和 bootstrap 的加载顺序。

  • bootstrap.yml ( bootstrap.properties )先加载

  • application.yml ( application.properties )后加载

  • bootstrap.yml 用于应用程序上下文的引导阶段。

  • bootstrap.yml 由父 Spring ApplicationContext 加载。

  • 父 ApplicationContext 被加载到使用 application.yml 的之前。

(2)配置区别

bootstrap.yml 和 application.yml 都可以用来配置参数。

bootstrap.yml 可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。

application.yml 可以用来定义应用级别的。

用yml需要在bootstrap中加入file-extension: yml


三、名称空间切换环境


在实际开发中,通常有多套不同的环境(默认只有public),那么这个时候可以根据指定的环境来创建不同的 namespce,

例如,开发、测试和生产三个不同的环境,那么使用一套 nacos 集群可以分别建以下三个不同的 namespace。以此来实现多环境的隔离。

1、创建命名空间

image-20210311115729537

默认只有public ,新建了 dev 、 test 和 prod 命名空间

image-20210311115741515

2、克隆配置

(1)切换到配置列表:

image-20210311115752473

可以发现有四个名称空间:public(默认)以及我们自己添加的3个名称空间(prod、dev、test),可以点击查看每个名称空间下的配置文件,当然现在只有public下有一个配置。默认情况下,项目会到public下找 服务名.properties文件。

接下来,在dev名称空间中也添加一个nacos-provider.properties配置。

这时有两种方式:

  • 第一, 切换到dev名称空间,添加一个新的配置文件。缺点:每个环境都要重复配置类似的项目

  • 第二, 直接通过clone方式添加配置,并修改即可。推荐

image-20210311115829708

点击编辑:修改配置内容,端口号改为8013以作区分

image-20210311115836944

在项目模块中,修改bootstrap.properties添加如下配置

指定一下名称空间是什么

spring.cloud.nacos.config.namespace=925a4338-5327-4967-8720-65412f8fc0df

namespace的值为:

image-20210311120733970

重启服务提供方服务,测试修改之后是否生效


四、多配置文件加载


在一些情况下需要加载多个配置文件。假如现在dev名称空间下有三个配置文件:

service-statistics.properties、redis.properties、jdbc.properties

image-20210311124112293

添加配置,加载多个配置文件

spring.cloud.nacos.config.server-addr=127.0.0.1:8848

spring.profiles.active=dev

该配置影响统一配置中心中的dataId,之前已经配置过

spring.application.name=service-statistics

spring.cloud.nacos.config.namespace=13b5c197-de5b-47e7-9903-ec0538c9db01

spring.cloud.nacos.config.ext-config[0].data-id=port.properties

开启动态刷新配置,否则配置文件修改,工程无法感知

spring.cloud.nacos.config.ext-config[0].refresh=true


提交代码到远程Git仓库

======================================================================

image-20210311130410813

1、准备 Git 仓库

码云:https://gitee.com

1.1. 通过网站右上角的「+」号,选择「新建仓库」,进入新建仓库页面

image-20210311130856125

1.2. 新建仓库

image-20210311131228328

1.3. 打开项目并点击菜单栏上的【CVS】–》【Import into versioncontrol】–》【Create Git Repository】

创建本地Git仓库

img

1.4. 在打开的【Create Git Repository】对话框内选择本地仓库的位置,这里我选择项目的根目录。

image-20210311131806501

1.5. 右击项目点击【Git】–》【Add】,接着点击【Git】–》【Commit Directory】在打开的窗口中选择要上传到本地仓库的代码并添加注释后提交到本地仓库内。

将代码添加到本地Git库中

image-20210311132025118

1.6. 右击项目点击【Git】–》【Repository】–》【Remotes…】。在打开的【Git Remotes】窗口中添加码云的远程仓库。码云的远程仓库地址可以在码云仓库内找到。

img

设置远程Git库地址

image-20210311132533455

1.8. 上传代码到码云,右击项目点击【Git】–》【Repository】–》【Push…】在打开的【Pushcommits】内可以看到已提交到本地仓库的提交信息。点击【Push】按钮将本地仓库的代码上传到码云上,上传成功后就可以在码云上看到啦。

image-20210311132749722

image-20210311132818904

image-20210311132855758


项目部署

==============================================================

1. 准备代码,提交到码云Git库


代码中需要包含以下几部分内容:

(1)代码中需要包含Dockerfile文件

image-20210311141657494

文件内容

FROM openjdk:8-jdk-alpine

VOLUME /tmp

COPY ./target/demojenkins.jar demojenkins.jar【以后只需要修改这里的目录 和对象即可】

ENTRYPOINT [“java”,“-jar”,“/demojenkins.jar”, “&”]


(2)在项目pom文件中指定打包类型,包含build部分内容

image-20210311141706882

image-20210311141711006


2、安装JAVA 运行环境


  • 第一步:上传或下载安装包

cd/usr/local

jdk-8u121-linux-x64.tar.gz

  • 第二步:解压安装包

tar -zxvf jdk-8u121-linux-x64.tar.gz

  • 第三步:建立软连接

ln -s /usr/local/jdk1.8.0_121/ /usr/local/jdk

  • 第四步:修改环境变量

vim /etc/profile

export JAVA_HOME=/usr/local/jdk

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.: C L A S S P A T H : CLASSPATH: CLASSPATH:JAVA_HOME/lib:$JRE_HOME/lib

export PATH= P A T H : PATH: PATH:JAVA_HOME/bin:$JRE_HOME/bin

通过命令source /etc/profile让profile文件立即生效

source /etc/profile

  • 第五步、测试是否安装成功

②、使用java -version,出现版本


3、安装maven


  • 第一步:上传或下载安装包

cd/usr/local

apache-maven-3.6.1-bin.tar.gz

  • 第二步:解压安装包

tar -zxvf apache-maven-3.6.1-bin.tar.gz

  • 第三步:建立软连接

ln -s /usr/local/apache-maven-3.6.1/ /usr/local/maven

  • 第四步:修改环境变量

vim /etc/profile

export MAVEN_HOME=/usr/local/maven

export PATH= P A T H : PATH: PATH:MAVEN_HOME/bin

通过命令source /etc/profile让profile文件立即生效

source /etc/profile

  • 第五步、测试是否安装成功

mvn –v


4、安装git


yum -y install git


5、安装docker


  • 参考文档:

https://help.aliyun.com/document_detail/60742.html?spm=a2c4g.11174283.6.548.24c14541ssYFIZ

  • 第一步:安装必要的一些系统工具

yum install -y yum-utils device-mapper-persistent-data lvm2

  • 第二步:添加软件源信息

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  • 第三步:更新并安装Docker-CE

yum makecache fast

yum -y install docker-ce

  • 第四步:开启Docker服务

service docker start

  • 第五步、测试是否安装成功

docker -v


6、安装Jenkins


  • 第一步:上传或下载安装包

cd/usr/local/jenkins

jenkins.war

  • 第二步:启动

nohup java -jar /usr/local/jenkins/jenkins.war >/usr/local/jenkins/jenkins.out &

image-20210311143839029

  • 第二步:访问

http://ip:8080


7、初始化 Jenkins 插件和管理员用户


7.1访问jenkins

http://ip:8080

7.2解锁jenkins

获取管理员密码

image-20210311144646783

image-20210311144658510

image-20210311144704176

这里就可以关闭浏览器,然后配置下面的镜像

注意:配置国内的镜像

官方下载插件慢 更新下载地址

cd {你的Jenkins工作目录,一般是/root/.jenkins}/updates #进入更新配置位置

sed -i ‘s/http://updates.jenkins-ci.org/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g’

default.json && sed -i ‘s/http://www.google.com/https://www.baidu.com/g’ default.json

这是直接修改的配置文件,如果前边Jenkins用sudo启动的话,那么这里的两个sed前均需要加上sudo重启Jenkins,安装插件

再次重启jenkins,然后在访问地址

7.3选择“继续”

image-20210311150112775

7.4选择“安装推荐插件”

image-20210311150118581

7.5插件安装完成,创建管理员用户

image-20210311150135159

7.6保存并完成

image-20210311150152138

7.7 进入完成页面

image-20210311150200147


8、配置 Jenkins 构建工具


image-20210311150658912

8.1.1配置jdk

JAVA_HOME:/usr/local/jdk

image-20210311151033431

8.1.2配置maven

MAVEN_HOME:/usr/local/maven

image-20210311151126522

8.1.2配置git

查看git安装路径:which git

image-20210311151202245


9、构建作业


9.1点击创建一个新任务,进入创建项目类型选择页面

image-20210311151951004

image-20210311152031692

填好信息点击“确认”

9.2配置“General”

image-20210311152348828

9.3配置“源码管理”

image-20210311152336922

配置git远程仓库地址,与git远程仓库的账户密码

image-20210311152401894

9.4构建作业

到源码中找到docker脚本

选择“执行shell”,通过脚本的方式构建

image-20210311152515655

保存上面的构建作业

9.5构建

构建作业之后,就可以执行构建过程了。

9.5.1执行构建过程

image-20210311153417376

9.5.2构建结构

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

面试结束复盘查漏补缺

每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。

以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~

重要的事说三遍,关注+关注+关注!

历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer

image.png

更多笔记分享

历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

9.5构建

构建作业之后,就可以执行构建过程了。

9.5.1执行构建过程

image-20210311153417376

9.5.2构建结构

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-9Qn04oaw-1712717056887)]
[外链图片转存中…(img-xTNpBNZw-1712717056888)]
[外链图片转存中…(img-3EOzvcgl-1712717056888)]
[外链图片转存中…(img-Z5tSyCFl-1712717056888)]
[外链图片转存中…(img-9pRdKlJS-1712717056889)]
[外链图片转存中…(img-R7pTNqpo-1712717056889)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-OZC9FqnD-1712717056889)]

面试结束复盘查漏补缺

每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。

以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~

重要的事说三遍,关注+关注+关注!

[外链图片转存中…(img-nXnPVill-1712717056890)]

[外链图片转存中…(img-Va0tFchO-1712717056890)]

更多笔记分享

[外链图片转存中…(img-wUqJbiqg-1712717056890)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-6hjYRVg1-1712717056891)]

  • 28
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值