3.2 搭建一个属于自己的服务器

3.2 搭建一个属于自己的服务器!

阿里云租的服务器已经到期啦,不想续租,一来不常捣鼓它,不划算;二来9.9足够我吃一顿晚饭了,加鸡腿的那种……不过!作为技术宅,怎么能老是租用别人家的东西呢?自己也要整一部服务器来玩玩才是!

假设你已经用过了租来的服务器且在上面跑过自己的项目,那么你应该心里有A数了,服务器和普通PC有什么区别?要说系统,我也可以给自己的PC装啊,Ubuntu和Fedora啥的都是免费的。那么总结起来,服务器和PC主要区别在于:

  • 性能更强。甚至于CPU都是不同的,服务器一般是Xeon:知乎:各项参数几乎相同的i7和Xeon差别在哪呢?可以理解为Xeon线程多,以应对服务器要处理的来自成百上千的主机的任务。
  • 项目运行环境。例如flask就得装好python,这和PC没啥两样。
  • 最大的不同:公网IP。
    大家都知道我们要上网就得有个IP,相当于你电脑的门牌号。比如说我要打开谷歌地图,那么就得向谷歌的服务器发送请求,而怎么找到谷歌的服务器呢,就得通过它的IP。服务器回应你也要按照IP来找你。而因为世界上联网的电脑实在是太多了,并不是每台电脑都会被大家访问,所以也就有了公网IP和内网IP。
    公网IP是唯一的,而内网IP只在同一局域网下唯一,在其它局域网可能有一样的,通过一种叫NAT的方法把一个公网IP变成多个内网IP。这么一来,在不同局域网下的PC就不能相互通信了,如果你发个包给10.10.10.10,既不与你在同一局域网内,又不是公网IP,那这个包就丢失在了渺渺包海。
    那么此时怎么办呢?既然是内网在从中捣鬼,那我们就穿透它呀: 内网穿透相关-CSDN

So,可以发现ngrok是比较适合我们的。具体步骤直接看官网的档案就好:ngrok官方文档,第一条指令就是了。运行之后你的网站(那个Forwarding后面的网址)就可以被大家访问啦!

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是在osgEarth 3.2中添加一个云层layer的示例代码: ```cpp #include <osgEarth/Map> #include <osgEarth/MapNode> #include <osgEarthUtil/Sky> #include <osgEarthUtil/Controls> #include <osgEarthUtil/LayerManipulator> using namespace osgEarth; using namespace osgEarth::Util; int main(int argc, char** argv) { // 创建一个地图 osg::ref_ptr<Map> map = new Map(); // 创建一个图层 osg::ref_ptr<Layer> layer = new ImageLayer( new ImageLayerOptions("Clouds", "http://tile.openweathermap.org/map/clouds_new/0/0/0.png", ProfileOptions(), ImageLayerOptions::IMAGE, osgEarth::optional<int>(7))); // 将图层添加到地图中 map->addLayer(layer.get()); // 创建一个地图节点 osg::ref_ptr<MapNode> mapNode = new MapNode(map.get()); // 创建一个控制器 osg::ref_ptr<osgEarth::Util::EarthManipulator> manipulator = new osgEarth::Util::EarthManipulator(); // 创建一个天空节点 osg::ref_ptr<osgEarth::Util::SkyNode> skyNode = new osgEarth::Util::SkyNode(); skyNode->attach(mapNode.get()); skyNode->setDateTime(DateTime(2019, 7, 1, 12, 0, 0)); // 设置相机 osg::ref_ptr<osg::Camera> camera = new osg::Camera(); camera->setViewport(0, 0, 800, 600); camera->setClearColor(osg::Vec4(0.2, 0.2, 0.6, 1.0)); camera->setProjectionMatrixAsPerspective(30.0, 800.0 / 600.0, 1.0, 100000.0); camera->setViewMatrixAsLookAt(osg::Vec3d(0.0, 0.0, 1000000.0), osg::Vec3d(), osg::Vec3d(0.0, 1.0, 0.0)); // 创建一个场景图节点 osg::ref_ptr<osg::Group> root = new osg::Group(); root->addChild(mapNode.get()); root->addChild(skyNode.get()); root->addChild(manipulator.get()); root->addChild(camera.get()); // 添加图层控制器 osg::ref_ptr<osgEarth::Util::LayerManipulator> layerManipulator = new osgEarth::Util::LayerManipulator(mapNode.get()); layerManipulator->setTerrainEnabled(false); layerManipulator->setDynamic(true); root->addChild(layerManipulator.get()); // 运行场景 osgViewer::Viewer viewer; viewer.setSceneData(root.get()); viewer.run(); return 0; } ``` 这个示例代码中,我们使用 `ImageLayer` 类创建一个云层图层,并将其添加到地图中。然后创建一个地图节点、一个控制器、一个天空节点和一个相机,并将它们都添加到一个场景图节点中。最后添加一个图层控制器,用于控制图层的显示。运行程序后,你应该能够看到一个带有云层的地球。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值