还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!
王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。
对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!
【完整版领取方式在文末!!】
93道网络安全面试题
内容实在太多,不一一截图了
黑客学习资源推荐
最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
1️⃣零基础入门
① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
所用环境
- Win10
- VM14.0
- Ubuntu 18.04
- JDK1.8
- Maven 3.6.3
- postman
maven setting设置
cp -n ~/.m2/settings.xml{,.orig} ; wget -q -O - https://raw.githubusercontent.com/opendaylight/odlparent/master/settings.xml > ~/.m2/settings.xml
参考资料
Win10版(成功)
创建项目
打开cmd,进入IDEA的工作空间目录,运行以下命令
mvn archetype:generate -DarchetypeGroupId=org.opendaylight.archetypes -DarchetypeArtifactId=opendaylight-startup-archetype -DarchetypeCatalog=remote -DarchetypeVersion=1.2.2
创建项目
填写项目信息
Define value for property 'groupId': 项目组名,小写,例如,org.opendaylight.helloworld
Define value for property 'artifactId': : 项目名,小写,例如,helloworld
Define value for property 'version': Sodium没有让用户选择
Define value for property 'package': 包名,例如,org.opendaylight.helloworld
Define value for property 'classPrefix': 前缀,${artifactId.substring(0,1).toUpperCase()}${artifactId.substring(1)}
Define value for property 'copyright': 版权信息,Copyright (c) 2015 Yoyodyne, Inc.
耗时将近3小时…
项目创建成功
编译启动
根目录下(例如,helloworld/)运行以下命令
mvn clean install -DskipTests -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true
耗时20分钟…
编译成功
修改setenv文件中的环境变量
设置JAVA_HOME
运行成功
修改yang文件
使用IDEA打开项目,打开helloworld.yang,添加代码如下
修改后的yang文件
rpc hello-world {
input {
leaf name {
type string;
}
}
output {
leaf greeting {
type string;
}
}
}
编译api
编译api
耗时31秒…
编译成功
绑定MD-SAL
打开impl-blueprint.xml,添加代码如下
绑定ms-sal
<reference id="rpcRegistry"
interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry"/>
<argument ref="rpcRegistry" />
实现RPC
在impl文件夹下新建HelloWorldImpl.java,添加代码如下
HelloWorldImpl.java
package org.opendaylight.helloworld.impl;
import com.google.common.util.concurrent.ListenableFuture;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.helloworld.rev180517.HelloWorldInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.helloworld.rev180517.HelloWorldOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.helloworld.rev180517.HelloWorldOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.helloworld.rev180517.HelloworldService;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
public class HelloWorldImpl implements HelloworldService {
@Override
public ListenableFuture<RpcResult<HelloWorldOutput>> helloWorld(HelloWorldInput input) {
HelloWorldOutputBuilder helloBuilder = new HelloWorldOutputBuilder();
helloBuilder.setGreeting("Hello,"+input.getName());
return RpcResultBuilder.success(helloBuilder.build()).buildFuture();
}
}
修改HelloworldProvide.java,添加如下代码
HelloworldProvide.java
/*
* Copyright © 2018 Copyright (c) 2015 Yoyodyne, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.helloworld.impl;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.helloworld.rev180517.HelloworldService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloworldProvider {
private static final Logger LOG = LoggerFactory.getLogger(HelloworldProvider.class);
private final DataBroker dataBroker;
private final RpcProviderRegistry rpcProviderRegistry;
private BindingAwareBroker.RpcRegistration<HelloworldService> serviceRpcRegistration;
public HelloworldProvider(final DataBroker dataBroker, final RpcProviderRegistry rpcProviderRegistry) {
this.dataBroker = dataBroker;
this.rpcProviderRegistry = rpcProviderRegistry;
}
/**
* Method called when the blueprint container is created.
*/
public void init() {
serviceRpcRegistration = rpcProviderRegistry.addRpcImplementation(HelloworldService.class,new HelloWorldImpl());
LOG.info("HelloworldProvider Session Initiated");
}
/**
* Method called when the blueprint container is destroyed.
*/
public void close() {
serviceRpcRegistration.close();
LOG.info("HelloworldProvider Closed");
}
}
再次编译
再次进入根目录下(例如,helloworld/)编译整个项目,编译命令和之前的一样,耗时2分钟…
再次编译
结果
标题
错误及解决办法
HelloWorldImpl出错
错误
错误提示
解决办法:将Future改为ListenableFuture,修改IDEA关于OSGI的检查
setting中修改
Linux版(未得到预期结果)
先别照着做,博主还没有得到预期效果,有些错误。
创建项目
这里选择的是Sodium-SR2版本
mvn archetype:generate -DarchetypeGroupId=org.opendaylight.archetypes -DarchetypeArtifactId=opendaylight-startup-archetype \
-DarchetypeCatalog=remote -DarchetypeVersion=1.2.2
接下来你需要填写项目信息。
Define value for property 'groupId': 项目组名,小写,例如,org.opendaylight.helloworld
Define value for property 'artifactId': : 项目名,小写,例如,helloworld
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**