总结
互联网大厂比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考。无论是哪家公司,都很重视高并发高可用技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。
**另外本人还整理收藏了2021年多家公司面试知识点以及各种技术点整理 **
下面有部分截图希望能对大家有所帮助。
1、Dubbo概念
-
Dubbo是阿里巴巴公司开源的一个高性能、轻量级的Java RPC框架。
-
致力于提供高性能和透明化的RPC远程服务调用方索,以及SOA服务治理方案。
点击快速开始
节点角色说明:
-
Provider:暴露服务的服务提供方
-
Container:服务运行容器
-
Consumer:调用远程服务的服务消费方
-
Registry:服务注册与发现的注册中心
-
Monitor:统计服务的调用次数和调用时间的监控中心
1、Zookeeper安装和启动
. Dubbo官方推荐使用Zookeeper作为注册中心
下载安装Zookeeper,在这之前需要安装Java这里不演示
在这里我们使用的是虚拟机安装Zookeeper,在虚拟机当中的opt目录当中创建zookeeper目录
mkdir zookeeper
通过WinSCP将对应的Zookeeper安装包上次到Linux当中的opt/zookeeper目录当中
在终端当中解压对应的zookeeper
tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz
修改配置文件
进入配置文件的目录当中
进入
cd /opt/zookeeper/apache-zookeeper-3.5.6-bin/conf
复制zoo_sample.cfg 修改其文件名
cp zoo_sample.cfg zoo.cfg
编辑 zoo.cfg
vim zoo.cfg
我们需要修改dataDir=/tmp/zookeeper
开启另外一个终端窗口
进入到/opt/zookeeper
cd /opt/zookeeper
创建zkdata目录
mkdir zkdata
回到之前的终端修改dataDir,按i插入,然后设置对应的路径,/opt/zookeeper/zkdata
然后esc
->:
->wq
启动zookeeper
进入bin目录
启动zkServer.sh
./zkServer.sh start
停止zkServer.sh
./zkServer.sh stop
查看状态
./zkServer.sh status
2、Dubbo快速入门
(1)相关概念
实现步骤
(1)创建服务提供者Provider模块
(2)创建服务消费者Consumer模块
(3)在服务提供者模块编写UserServiceImpl提供服务
(4)在服务消费者中的UserController远程调用UserServiceImpl提供的服务
(5)分别启动两个服务,测试
3、搭建Web工程
(2)创建Java工程
创建了一个空项目
设置一下JDK
配置好Maven
(3)创建模块
创建模块一
创建成功
创建模块二
(4)引入依赖
1)在dubbo-web当中引入依赖
<?xml version="1.0" encoding="UTF-8"?><project xmlns=“http://maven.apache.org/POM/4.0.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
4.0.0
cn.itbluebox
dubbo-web
1.0-SNAPSHOT
<spring.version>5.1.9.RELEASE</spring.version>
<dubbo.version>2.7.4.1</dubbo.version>
<zookeeper.version>4.0.0</zookeeper.version>
javax.servlet
javax.servlet-api
3.1.0
provided
org.springframework
spring-context
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.slf4j
slf4j-api
1.7.21
org.slf4j
slf4j-log4j12
1.7.21
org.apache.dubbo
dubbo
${dubbo.version}
org.apache.curator
curator-framework
${zookeeper.version}
org.apache.curator
curator-recipes
${zookeeper.version}
org.apache.tomcat.maven
tomcat7-maven-plugin
2.1
8000
2)在dubbo-service当中引入依赖
<?xml version="1.0" encoding="UTF-8"?><project xmlns=“http://maven.apache.org/POM/4.0.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
4.0.0
cn.itbluebox
dubbo-service
1.0-SNAPSHOT
<spring.version>5.1.9.RELEASE</spring.version>
<dubbo.version>2.7.4.1</dubbo.version>
<zookeeper.version>4.0.0</zookeeper.version>
javax.servlet
javax.servlet-api
3.1.0
provided
org.springframework
spring-context
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.slf4j
slf4j-api
1.7.21
org.slf4j
slf4j-log4j12
1.7.21
org.apache.dubbo
dubbo
${dubbo.version}
org.apache.curator
curator-framework
${zookeeper.version}
org.apache.curator
curator-recipes
${zookeeper.version}
(5)编写Service和对应的实现类
package com.itbluebox.service;
public interface UserService {
public String sayHello();
}
package com.itbluebox.service.impl;
import com.itbluebox.service.UserService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
@Override
public String sayHello() {
return “hello dubbo!~”;
}
}
(6)创建相关的配置文件
- applicationContext.xml
<beans xmlns=“http://www.springframework.org/schema/beans”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xmlns:dubbo=“http://dubbo.apache.org/schema/dubbo” xmlns:context=“http://www.springframework.org/schema/context”
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package=“com.itbluebox.service”/>
- log4j.properties
DEBUG < INFO < WARN < ERROR < FATAL
Global logging configuration
log4j.rootLogger=info, stdout,file
My logging configuration…
#log4j.logger.com.tocersoft.school=DEBUG
#log4j.logger.net.sf.hibernate.cache=debug
Console output…
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=…/logs/iask.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n
(7)编写controller
1)修改一下配置文件
war
2)创建对应的目录和web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xmlns=“http://java.sun.com/xml/ns/javaee”
xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”
version=“2.5”>
contextConfigLocation
classpath*:spring/applicationContext*.xml
org.springframework.web.context.ContextLoaderListener
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/springmvc.xml
springmvc
*.do
设置一下依赖
dubbo-web 依赖dubbo-service
org.example
dubbo-service
1.0-SNAPSHOT
3)创建SpringMVC相关配置文件
- springmvc.xml
<beans xmlns=“http://www.springframework.org/schema/beans”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xmlns:dubbo=“http://dubbo.apache.org/schema/dubbo”
xmlns:mvc=“http://www.springframework.org/schema/mvc”
xmlns:context=“http://www.springframework.org/schema/context”
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
mvc:annotation-driven/
<context:component-scan base-package=“com.itbluebox.controller”/>
- log4j.properties
DEBUG < INFO < WARN < ERROR < FATAL
Global logging configuration
log4j.rootLogger=info, stdout,file
My logging configuration…
#log4j.logger.com.tocersoft.school=DEBUG
#log4j.logger.net.sf.hibernate.cache=debug
Console output…
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=…/logs/iask.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n
4)实现controller
@RestController
@RequestMapping(“/user”)
public class UserController {
//注入Service
技术学习总结
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
@RestController
@RequestMapping(“/user”)
public class UserController {
//注入Service
技术学习总结
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
[外链图片转存中…(img-vMxLeiIh-1715292857413)]
[外链图片转存中…(img-reTLkeio-1715292857414)]
[外链图片转存中…(img-rx3ouvE5-1715292857414)]
最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
[外链图片转存中…(img-eM1oiKmg-1715292857414)]
[外链图片转存中…(img-ZqjbEBa9-1715292857415)]