求刀剑神域序列之争网盘超清百度云发来这号上会自动采纳。

&img src=&/v2-0a31910b2eafca3163c21b_b.jpg& data-rawwidth=&1250& data-rawheight=&664& class=&origin_image zh-lightbox-thumb& width=&1250& data-original=&/v2-0a31910b2eafca3163c21b_r.jpg&&&blockquote&&b&简评:&/b&本文中,原文作者 Scrimba 的创始人 &a href=&/?target=https%3A//medium.freecodecamp.org/%40perborgen%3Fsource%3Dpost_header_lockup& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Per Harald Borgen&i class=&icon-external&&&/i&&/a& 将会展示如何利用 &a href=&/?target=https%3A///%23/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Synaptic.js&i class=&icon-external&&&/i&&/a& 来创建和训练神经网络,从而使我们可以在 Node.js 和浏览器中进行深度学习。&br&&b&题图:&/b&一幅由 Google Dream 神经网络创建的光怪陆离&/blockquote&&p&我们将尝试搭建最简单的神经网络之一 —— 一个用于解决 &a href=&/?target=https%3A//en.wikipedia.org/wiki/Exclusive_or& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&XOR方程&i class=&icon-external&&&/i&&/a& 的神经网络。&/p&&p&看代码之前呢,我们先温习一下神经网络的基础知识:&/p&&h2&&b&神经元和突触&/b&&/h2&&p&构建神经网络的第一个块是&a href=&/?target=https%3A///learning-new-stuff/how-to-learn-neural-networks-758b78f2736e& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&神经元&i class=&icon-external&&&/i&&/a&。神经元就像一个函数,它需要输入,然后返回输出。&/p&&p&有许多不同类型的神经元。我们的网络将使用 &a href=&/?target=https%3A//en.wikipedia.org/wiki/Sigmoid_function& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&sigmoid 神经元&i class=&icon-external&&&/i&&/a&,不管给定任何输入,都会输出 0 或者 1。 &/p&&p&下图是一个 Sigmoid 函数,输入 5 输出 1。箭头称为突触,将神经元连接到网络中的其他层。&/p&&img src=&/v2-c7d8bfecc21ca205bbe20dd16a1ffed0_b.png& data-rawwidth=&1000& data-rawheight=&348& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&/v2-c7d8bfecc21ca205bbe20dd16a1ffed0_r.png&&&p&那么,会什么左边的输入是 5 呢?因为它是连接到到神经元的三个突触的总和。&/p&&p&输入乘以它们的&b&权重&/b&就是人造神经元的总输入。&/p&&img src=&/v2-af7fda57a91ebaf0d278f_b.png& data-rawwidth=&1000& data-rawheight=&340& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&/v2-af7fda57a91ebaf0d278f_r.png&&&p&由于这是一个 Sigmoid 神经元,它能将任何值压缩在 0 和 1 之间。&/p&&p&如果将这些神经元的网络连接在一起,那么一个神经网络就诞生了。神经元通过突触相互连接,从输入到输出:&/p&&img src=&/v2-d52a97b112f2c279a6391_b.png& data-rawwidth=&350& data-rawheight=&313& class=&content_image& width=&350&&&p&这个神经网络的目标是训练它来进行事件概括,例如识别手写数字或垃圾邮件。你只需要用大量例子来训练网络,之后就能让网络预测正确的答案。&/p&&p&在每次预测之后,根据预测的&b&错误&/b&,调整权重和偏差值,以便网络在下一次会更准确地猜测。这种学习过程称为 backpropagation(反向传播),做几千次就差不多了。&/p&&p&backpropagation 技术就不展开了,感兴趣的话可以查看以下资料:&/p&&ul&&li&&a href=&/?target=http%3A////a-step-by-step-backpropagation-example/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&A Step by Step Backpropagation Example&i class=&icon-external&&&/i&&/a& — by &a href=&/?target=https%3A///%40mhmazur& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Matt Mazur&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&/?target=http%3A//karpathy.github.io/neuralnets/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hackers Guide to Neural Nets&i class=&icon-external&&&/i&&/a& — by &a href=&/?target=https%3A///%40karpathy& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Andrej Karpathy&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&/?target=http%3A///chap1.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&NeuralNetworks And DeepLarning&i class=&icon-external&&&/i&&/a& — by &a href=&/?target=https%3A///michael_nielsen& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Michael Nielsen&i class=&icon-external&&&/i&&/a&&/li&&/ul&&h2&&b&代码&/b&&/h2&&p&有了基本概念后,现在我们开始 coding。&/p&&p&第一件事就是创建图层。我们使用 new Layer() 来实现。传递给函数的数字决定了每层应该有多少个神经元:&/p&&div class=&highlight&&&pre&&code class=&language-js&&&span&&/span&&span class=&kr&&const&/span& &span class=&p&&{&/span& &span class=&nx&&Layer&/span&&span class=&p&&,&/span& &span class=&nx&&Network&/span& &span class=&p&&}&/span& &span class=&o&&=&/span& &span class=&nb&&window&/span&&span class=&p&&.&/span&&span class=&nx&&synaptic&/span&&span class=&p&&;&/span&
&span class=&kd&&var&/span& &span class=&nx&&inputLayer&/span& &span class=&o&&=&/span& &span class=&k&&new&/span& &span class=&nx&&Layer&/span&&span class=&p&&(&/span&&span class=&mi&&2&/span&&span class=&p&&);&/span&
&span class=&kd&&var&/span& &span class=&nx&&hiddenLayer&/span& &span class=&o&&=&/span& &span class=&k&&new&/span& &span class=&nx&&Layer&/span&&span class=&p&&(&/span&&span class=&mi&&3&/span&&span class=&p&&);&/span&
&span class=&kd&&var&/span& &span class=&nx&&outputLayer&/span& &span class=&o&&=&/span& &span class=&k&&new&/span& &span class=&nx&&Layer&/span&&span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&);&/span&
&/code&&/pre&&/div&&p&接下来,我们将这些层连接在一起并实例化一个新的网络,如下所示:&/p&&div class=&highlight&&&pre&&code class=&language-js&&&span&&/span&&span class=&nx&&inputLayer&/span&&span class=&p&&.&/span&&span class=&nx&&project&/span&&span class=&p&&(&/span&&span class=&nx&&hiddenLayer&/span&&span class=&p&&);&/span&
&span class=&nx&&hiddenLayer&/span&&span class=&p&&.&/span&&span class=&nx&&project&/span&&span class=&p&&(&/span&&span class=&nx&&outputLayer&/span&&span class=&p&&);&/span&
&span class=&kd&&var&/span& &span class=&nx&&myNetwork&/span& &span class=&o&&=&/span& &span class=&k&&new&/span& &span class=&nx&&Network&/span&&span class=&p&&({&/span&
&span class=&nx&&input&/span&&span class=&o&&:&/span& &span class=&nx&&inputLayer&/span&&span class=&p&&,&/span&
&span class=&nx&&hidden&/span&&span class=&o&&:&/span& &span class=&p&&[&/span&&span class=&nx&&hiddenLayer&/span&&span class=&p&&],&/span&
&span class=&nx&&output&/span&&span class=&o&&:&/span& &span class=&nx&&outputLayer&/span&
&span class=&p&&});&/span&
&/code&&/pre&&/div&&p&这是一个 2-3-1 网络,可以像这样可视化:&/p&&img src=&/v2-fc8dac5c806fc591c8b79_b.png& data-rawwidth=&1000& data-rawheight=&750& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&/v2-fc8dac5c806fc591c8b79_r.png&&&p&现在我们来训练网络:&/p&&div class=&highlight&&&pre&&code class=&language-js&&&span&&/span&&span class=&c1&&// train the network - learn XOR&/span&
&span class=&kd&&var&/span& &span class=&nx&&learningRate&/span& &span class=&o&&=&/span& &span class=&p&&.&/span&&span class=&mi&&3&/span&&span class=&p&&;&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&kd&&var&/span& &span class=&nx&&i&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span& &span class=&nx&&i&/span& &span class=&o&&&&/span& &span class=&mi&&20000&/span&&span class=&p&&;&/span& &span class=&nx&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&c1&&// 0,0 =& 0&/span&
&span class=&nx&&myNetwork&/span&&span class=&p&&.&/span&&span class=&nx&&activate&/span&&span class=&p&&([&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&]);&/span&
&span class=&nx&&myNetwork&/span&&span class=&p&&.&/span&&span class=&nx&&propagate&/span&&span class=&p&&(&/span&&span class=&nx&&learningRate&/span&&span class=&p&&,&/span& &span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]);&/span&
&span class=&c1&&// 0,1 =& 1&/span&
&span class=&nx&&myNetwork&/span&&span class=&p&&.&/span&&span class=&nx&&activate&/span&&span class=&p&&([&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&mi&&1&/span&&span class=&p&&]);&/span&
&span class=&nx&&myNetwork&/span&&span class=&p&&.&/span&&span class=&nx&&propagate&/span&&span class=&p&&(&/span&&span class=&nx&&learningRate&/span&&span class=&p&&,&/span& &span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&]);&/span&
&span class=&c1&&// 1,0 =& 1&/span&
&span class=&nx&&myNetwork&/span&&span class=&p&&.&/span&&span class=&nx&&activate&/span&&span class=&p&&([&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&]);&/span&
&span class=&nx&&myNetwork&/span&&span class=&p&&.&/span&&span class=&nx&&propagate&/span&&span class=&p&&(&/span&&span class=&nx&&learningRate&/span&&span class=&p&&,&/span& &span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&]);&/span&
&span class=&c1&&// 1,1 =& 0&/span&
&span class=&nx&&myNetwork&/span&&span class=&p&&.&/span&&span class=&nx&&activate&/span&&span class=&p&&([&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&mi&&1&/span&&span class=&p&&]);&/span&
&span class=&nx&&myNetwork&/span&&span class=&p&&.&/span&&span class=&nx&&propagate&/span&&span class=&p&&(&/span&&span class=&nx&&learningRate&/span&&span class=&p&&,&/span& &span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]);&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&这里我们运行 20000 次,每次我们都向前和向后四次,传递可能的四个输入:[0,0] [0,1] [1,0] [1,1] 。&/p&&p&我们从 myNetwork.activate([0,0]) 开始。数据 [0,0] 是正向传播,也称为&b&激活&/b&网络。在每次向前传播之后,我们需要进行反向传播,网络会更新权重和偏差。&/p&&p&反向传播是用这一行代码完成的:&/p&&div class=&highlight&&&pre&&code class=&language-js&&&span&&/span&&span class=&nx&&myNetwork&/span&&span class=&p&&.&/span&&span class=&nx&&propagate&/span&&span class=&p&&(&/span&&span class=&nx&&learningRate&/span&&span class=&p&&,&/span& &span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&])&/span&
&/code&&/pre&&/div&&p&learningRate 是一个常数,告诉网络每次应该调整多少权重。参数 0 表示当输入 [0,0] 时正确的输出。&/p&&p&&b&之后网络将自己的预测与正确的标签进行比较,然后就知道什么是对的了。&/b&&/p&&p&这个比较将作为校正权重和偏差值的基础,以便下次猜测会更准确一些。&/p&&p&完成 20000 次学习后,我们就可以检查下网络的学习情况:&/p&&div class=&highlight&&&pre&&code class=&language-js&&&span&&/span&&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&nx&&myNetwork&/span&&span class=&p&&.&/span&&span class=&nx&&activate&/span&&span class=&p&&([&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&]));&/span&
&span class=&o&&-&&/span& &span class=&p&&[&/span&&span class=&mf&&0.893527&/span&&span class=&p&&]&/span&
&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&nx&&myNetwork&/span&&span class=&p&&.&/span&&span class=&nx&&activate&/span&&span class=&p&&([&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&mi&&1&/span&&span class=&p&&]));&/span&
&span class=&o&&-&&/span&&span class=&p&&[&/span&&span class=&mf&&0.8985&/span&&span class=&p&&]&/span&
&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&nx&&myNetwork&/span&&span class=&p&&.&/span&&span class=&nx&&activate&/span&&span class=&p&&([&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&]));&/span&
&span class=&o&&-&&/span& &span class=&p&&[&/span&&span class=&mf&&0.2193&/span&&span class=&p&&]&/span&
&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&nx&&myNetwork&/span&&span class=&p&&.&/span&&span class=&nx&&activate&/span&&span class=&p&&([&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&mi&&1&/span&&span class=&p&&]));&/span&
&span class=&o&&-&&/span& &span class=&p&&[&/span&&span class=&mf&&0.929467&/span&&span class=&p&&]&/span&
&/code&&/pre&&/div&&p&如果我们将这些输入值四舍五入到最接近的整数,我们将得到 XOR 方程的正确答案。&/p&&p&这是个很初级的神经网络,不过也足够自己开始玩 Synaptic 了,感兴趣的话还可以看这个 &a href=&/?target=https%3A///cazala/synaptic/wiki& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&wiki&i class=&icon-external&&&/i&&/a&,里面有很多很好的教程。&/p&&blockquote&&b&原文链接:&/b&&a href=&/?target=https%3A//medium.freecodecamp.org/how-to-create-a-neural-network-in-javascript-in-only-30-lines-of-code-343dafc50d49& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&How to create a Neural Network in JavaScript in only 30 lines of code&i class=&icon-external&&&/i&&/a& &br&&br&&b&推荐阅读:&/b&&a href=&/p/& class=&internal&&机器学习领域值得关注的 10 位 Quora 大咖&/a&&/blockquote&
简评:本文中,原文作者 Scrimba 的创始人
将会展示如何利用
来创建和训练神经网络,从而使我们可以在 Node.js 和浏览器中进行深度学习。 题图:一幅由 Google Dream 神经网络创建的光怪陆离我们将尝试搭建最简单的神经网络…
&img src=&/v2-d30d6b6d00e09fb628872_b.png& data-rawwidth=&1024& data-rawheight=&512& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/v2-d30d6b6d00e09fb628872_r.png&&&blockquote&&b&简评:&/b&&a href=&/?target=https%3A///%40umaar%3Fsource%3Dpost_header_lockup& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Umar Hansa&i class=&icon-external&&&/i&&/a& 在网站 &a href=&/?target=https%3A///dev-tips/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Developer Tips&i class=&icon-external&&&/i&&/a& 中发布了超过 150 个 GIF,展示如何使用 Chrome DevTools。对于大多数 tips,基本可以在不到 30 秒内完全掌握该功能,可以说是非常良心了。&/blockquote&&p&Chrome 开发者工具(简称 DevTools)是一套内置于 Google Chrome 中的 Web 开发和调试工具,可用来对网站进行迭代、调试和分析。&/p&&p&在这篇文章中,摘选了几个最近比较受欢迎的 tips,更多的动画演示戳:&a href=&/?target=https%3A///dev-tips/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Developer Tips&i class=&icon-external&&&/i&&/a& &/p&&h2&&b&CSS Coverage&/b&&/h2&&p&Coverage 顾名思义就是代码覆盖率的意思,它使用动态分析(Dynamic Analysis)法来收集代码运行时的覆盖率,该功能同时适用于 JS 和 CSS:&/p&&img src=&/v2-654e76e320742ead6bc9393cdd0b0a63_b.jpg& data-rawwidth=&996& data-rawheight=&622& data-thumbnail=&/v2-654e76e320742ead6bc9393cdd0b0a63_b.jpg& class=&origin_image zh-lightbox-thumb& width=&996& data-original=&/v2-654e76e320742ead6bc9393cdd0b0a63_r.gif&&&h2&&b&不带浏览器扩展的截屏实现&/b&&/h2&&p&你可以直接捕获整个页面,或者页面的部分内容:&/p&&img src=&/v2-cefc7cdf95a2d72b89f5df_b.jpg& data-rawwidth=&838& data-rawheight=&480& data-thumbnail=&/v2-cefc7cdf95a2d72b89f5df_b.jpg& class=&origin_image zh-lightbox-thumb& width=&838& data-original=&/v2-cefc7cdf95a2d72b89f5df_r.gif&&&p&&br&&/p&&h2&&b&线路分析&/b&&/h2&&p&此功能显示一行 JavaScript 代码执行多长时间。如果使用 JavaScript 框架/库,还可以对该代码进行配置,并调查使用该框架是否有足够的优势:&/p&&img src=&/v2-164f194e7b569df144b310de0d4ece43_b.jpg& data-rawwidth=&720& data-rawheight=&438& data-thumbnail=&/v2-164f194e7b569df144b310de0d4ece43_b.jpg& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&/v2-164f194e7b569df144b310de0d4ece43_r.gif&&&p&&br&&/p&&h2&&b&Timeline History&/b&&/h2&&p&能够持续监控网页随时间的变化状态,在网站的开发阶段特别有用:&/p&&img src=&/v2-2c867c18f856cba4effa_b.jpg& data-rawwidth=&772& data-rawheight=&498& data-thumbnail=&/v2-2c867c18f856cba4effa_b.jpg& class=&origin_image zh-lightbox-thumb& width=&772& data-original=&/v2-2c867c18f856cba4effa_r.gif&&&p&&br&&/p&&blockquote&&b&更多技巧:&/b&&a href=&/?target=https%3A///dev-tips/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Developer Tips&i class=&icon-external&&&/i&&/a& &br&&br&&b&原文链接:&/b&&a href=&/?target=https%3A///dev-channel/increase-your-web-development-skill-set-150-animated-tips-on-chrome-devtools-4ae& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&150 animated tips on Chrome DevTools&i class=&icon-external&&&/i&&/a&&br&&br&&b&推荐阅读:&/b&&a href=&/p/& class=&internal&&Web 程序员进阶之路&/a&&/blockquote&&p&&/p&
简评: 在网站
中发布了超过 150 个 GIF,展示如何使用 Chrome DevTools。对于大多数 tips,基本可以在不到 30 秒内完全掌握该功能,可以说是非常良心了。Chrome 开发者工具(简称 DevTools)是一套内置于 Google Chrome 中的 Web…
天河的零基础教学。(&b&&u&多图流量渗入!!!&/u&&/b&)&br&&br&PS:最好是有一个和你同时玩的,能带你的最好。DOTA还是和朋友一起玩最好了,当然没有也没关系。但是我觉得可能会门都入不了就没兴趣了。&br&&br&好的我们先下载客户端:&a href=&///?target=http%3A//.cn/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&刀塔 - 《DOTA2》官方网站&i class=&icon-external&&&/i&&/a&&br&下载好之后,注册两个账号。一个是完美账号,一个是STEAM账号。&br&至于问为什么:&a href=&///?target=http%3A//.cn/event/201405/newer/download.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&新手站 - 《DOTA2》官方网站&i class=&icon-external&&&/i&&/a&
没办法 STEAM中国化就是这样。&br&&br&放一个基础的页面认识视频:(所有视频尽量选超清)&br&&a href=&///?target=http%3A///v_show/id_XNTE5OTYyMjc2.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Devil带你遨游dota2【DOTA2界面及游戏系统详解】&i class=&icon-external&&&/i&&/a&&br&然后是NADA的新手设置视频:(dota1转dota2必看)&br&&a href=&///?target=http%3A///v_show/id_XNTg4MzgxMDQ0.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dota1转Dota2玩家必看新手设置大全&i class=&icon-external&&&/i&&/a&&br&&br&都建议看一下 可能有重叠的地方,如果懒的话看第一个就可以了。由于版本的变更可能有一些小地方不太一样,但基本和现在的界面是相同的。&br&&br&这样基本上你就已经将你的DOTA2设置调到你机器最适合使用的样子了。也认识了全部的界面了,那么接下来就开始你的DOTA征程了。&br&&br&第一次玩游戏&b&不要点击寻找比赛&/b&。先打开新手教程。做完。&br&&img src=&/cba59a79d6ff409f3ef07_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/cba59a79d6ff409f3ef07_r.jpg&&好吧。我的完成度还是0.。不要喷我。不过我看我朋友做过这个,挺科学的。会教你最基础的一些东西。包括出装等等。&br&&br&好了,做完这个之后,你就对DOTA2有了一定的认识了。这个时候呢,你就需要打开机器人比赛。&br&&img src=&/ccfa383c111dec636944fd_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/ccfa383c111dec636944fd_r.jpg&&通过匹配系统寻找其他玩家协同作战:是你和别人一起打机器人。&br&直接让机器人填满空位:是你自己和机器人打机器人。&br&请自行选择喜欢的。&br&&br&好的我们来开一把人机。&br&&br&进入游戏,选择一个最适合新手的英雄——蓝胖。&br&&img src=&/99cdbfa8f5_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/99cdbfa8f5_r.jpg&&就是这个长着两个头的萌萌的蓝色胖子,全名食人魔魔法师。你也可以叫他爱新觉罗丶皇太极&br&&br&进入游戏后是这个样子的。&br&&img src=&/85bb7de8e0b_b.jpg& data-rawwidth=&1399& data-rawheight=&774& class=&origin_image zh-lightbox-thumb& width=&1399& data-original=&/85bb7de8e0b_r.jpg&&我们点击开右边的商店,从推荐装备中选几样,如果你对游戏有了一定的理解,就可以自己从大装备栏中自行挑选了。&br&&img src=&/fcccb807cbfc8a1e110f0_b.jpg& data-rawwidth=&1394& data-rawheight=&784& class=&origin_image zh-lightbox-thumb& width=&1394& data-original=&/fcccb807cbfc8a1e110f0_r.jpg&&皇太极选了这些开始了他的戎马生涯&br&最多只能同时携带六个装备。&br&&br&好的我们走到了下路。我们现在是一个很弱很弱的小人物。&br&&img src=&/4c1b850fa2a321e576c0eab4f1a2eb87_b.jpg& data-rawwidth=&1379& data-rawheight=&773& class=&origin_image zh-lightbox-thumb& width=&1379& data-original=&/4c1b850fa2a321e576c0eab4f1a2eb87_r.jpg&&&br&发现对面也有两个英雄,我们也有两个英雄。&br&&br&这个时候呢,我们需要去补刀,就是去打对方小兵最后一下的意思。恩。。就像这样。&br&&img src=&/73c58007aaaeb4df53d27df7bd8de324_b.jpg& data-rawwidth=&1373& data-rawheight=&774& class=&origin_image zh-lightbox-thumb& width=&1373& data-original=&/73c58007aaaeb4df53d27df7bd8de324_r.jpg&&杀掉小兵会得到金钱和经验的奖励。小兵头上会冒出金色的数字。是金钱的增加&br&&br&当然我们也可以进行反补,就是打自己小兵最后一下的意思。。&br&&img src=&/1add6bc9ed7c87ec174ce_b.jpg& data-rawwidth=&1388& data-rawheight=&792& class=&origin_image zh-lightbox-thumb& width=&1388& data-original=&/1add6bc9ed7c87ec174ce_r.jpg&&头上会冒出感叹号,反补小兵之后。对方将得不到金钱,得到的经验会减少。&br&&br&不知不觉我们到达了三级,新手的话。这个英雄推荐一技能和二技能对点。6级的时候就能学大了。&br&&img src=&/9eb7a3bbc26bd6aeaa6405_b.jpg& data-rawwidth=&1223& data-rawheight=&774& class=&origin_image zh-lightbox-thumb& width=&1223& data-original=&/9eb7a3bbc26bd6aeaa6405_r.jpg&&&br&好的。我们拿到了第一滴血,也就是这局游戏的第一次杀人,杀人的话会给200+的金钱,第一滴血会额外给200块哦。所以一血是很重要滴。这个时候的皇太极开始慢慢有了点名气&br&&img src=&/4e0ff1ab3aefa81544f4bd_b.jpg& data-rawwidth=&1381& data-rawheight=&760& class=&origin_image zh-lightbox-thumb& width=&1381& data-original=&/4e0ff1ab3aefa81544f4bd_r.jpg&&&br&杀人之后呢,就要扩大优势,得理不饶人了~!统一女真!&br&&img src=&/d4a664e419c01889bc8abb49c50fa012_b.jpg& data-rawwidth=&1405& data-rawheight=&785& class=&origin_image zh-lightbox-thumb& width=&1405& data-original=&/d4a664e419c01889bc8abb49c50fa012_r.jpg&&这个时候我们攻击到了防御塔,塔的仇恨是有一个比较复杂的机制的。所以我这里也不多说,反正记住。小兵打塔的时候你再打塔,小兵不打你就走。&br&&br&不知不觉7级了,身上也有一千多块了。&br&边路是有商店的,只是卖的不多,不过买个秘法鞋还是没问题的。&br&(各位发现前面已经有秘法了,我是给忘了截图了。所以到了这里重新弄一下。不要在意这些细节。)&br&我们按着核心装备的东西来出装就可以了。&br&好的皇太极开始整顿兵马,提升战力了~!&br&&img src=&/979e9107ded72b296b89f25fa7df7702_b.jpg& data-rawwidth=&1381& data-rawheight=&778& class=&origin_image zh-lightbox-thumb& width=&1381& data-original=&/979e9107ded72b296b89f25fa7df7702_r.jpg&&有了秘法之后呢,我们就朝着A杖(就是那个蓝色的棍子)去努力了。发现它需要四个部件合成。&br&&img src=&/ea4a936b2cdf990530bf_b.jpg& data-rawwidth=&1381& data-rawheight=&783& class=&origin_image zh-lightbox-thumb& width=&1381& data-original=&/ea4a936b2cdf990530bf_r.jpg&&写着需要神秘商店,我们先不管他。把后面三个从家里买了。(边路商店是没有的哦)&br&&br&我们不用回家的,继续在边路。有经验和钱钱。我们在家里呢,发现有一只信使。&br&信使干嘛的?送东西的呀!&br&我们点它 然后右键买东西。点击下面的第五个。(快捷键T)就可以很快给你送过来了!&br&&img src=&/6d97f86baadd37cadf0c14a_b.jpg& data-rawwidth=&1381& data-rawheight=&781& class=&origin_image zh-lightbox-thumb& width=&1381& data-original=&/6d97f86baadd37cadf0c14a_r.jpg&&&br&信使是可以进化的,步行信使的话跑的比较慢,飞行信使飞的比较快,而且有个加速技能!(快捷键R)&br&&br&好的,千辛万苦之下,终于把后面三个都买到了,也有了1200快去买这个叫精气之球的东西。&br&&img src=&/ba9e3f43_b.jpg& data-rawwidth=&1394& data-rawheight=&788& class=&origin_image zh-lightbox-thumb& width=&1394& data-original=&/ba9e3f43_r.jpg&&&br&我们去哪里买呢?右键A杖会发现小地图有两个感叹号。我们马上过去看看~&br&&img src=&/dfa2a2abcd6fbceaae70e3_b.jpg& data-rawwidth=&461& data-rawheight=&200& class=&origin_image zh-lightbox-thumb& width=&461& data-original=&/dfa2a2abcd6fbceaae70e3_r.jpg&&&br&额。。没截图了。。不知道啥情况,我记得按了截图-.- &br&走到那里之后会发现有个人~在那里买东西。这就是神秘商店啦,地图上一共有两处。就是感叹号所在的地方。&br&&br&之后呢,我们所做的就是赚钱,杀人,推塔。&br&双方都是有野区的。存在的是中立生物。我们可以杀他们来得到钱和经验。小三角标明的地方就是野怪啦。&br&&img src=&/5abcab0a86d58e5a1ec5c2acf01fd7c1_b.jpg& data-rawwidth=&1347& data-rawheight=&716& class=&origin_image zh-lightbox-thumb& width=&1347& data-original=&/5abcab0a86d58e5a1ec5c2acf01fd7c1_r.jpg&&&br&&br&但是下面这个野怪比较特殊,是一群十分厉害的野怪,当然给的经验也很丰富!&br&&img src=&/6c1ed8b3e6da25fe5529_b.jpg& data-rawwidth=&1304& data-rawheight=&736& class=&origin_image zh-lightbox-thumb& width=&1304& data-original=&/6c1ed8b3e6da25fe5529_r.jpg&&注意到上面图中小地图有信使所停留的位置吗?那里也有个大的红点点。&br&那是DOTA地图上最厉害的野怪。他有一个独特的名字。叫roshan
中文肉山:肉的跟座山一样0.0&br&特别厉害,但是除了会给钱和经验之外还会给你一个盾牌,让你可以原地满状态复活,堪比春哥!要打他记得把自己的小伙伴叫上~&br&&br&又经过了一阵激战,我们终于要上高地了。&br&高地呢,就是比下面高一点的地方。虽然只高那么一点,但是由于地形优势是比较难推进的。一夫当关万夫莫开听过吧,这就是山海关~&br&&img src=&/daa983b5bf6d7_b.jpg& data-rawwidth=&1353& data-rawheight=&762& class=&origin_image zh-lightbox-thumb& width=&1353& data-original=&/daa983b5bf6d7_r.jpg&&这个时候呢,我死掉了。但是到了这种击破山海关的重要时刻我怎么可以不在呢。于是我点击那个倒数计时右边的买活~! 迅速赶到了战场。真是有钱能使鬼推磨啊。都能买命啊!&br&&br&迅速赶到战场之后!!又死掉了T.T&br&&img src=&/084dcbf6bcedbe2b5e2b4648_b.jpg& data-rawwidth=&1405& data-rawheight=&786& class=&origin_image zh-lightbox-thumb& width=&1405& data-original=&/084dcbf6bcedbe2b5e2b4648_r.jpg&&这个时候我们会发现不能买活了。因为有时间限制,买活中间需要有间隔!哎~钱看来不是万能的啊!而且复活时间也加长了T.T&br&&br&终于!他们中出了一个叛徒! 带队被团灭~&br&&br&我们破掉了高地塔,想想过了山海关就是哪儿。快到帝都了啊!但是中间还是有点抵抗的,比如这小兵营。拆掉他就兵临城下了~&br&&img src=&/b10dcefa_b.jpg& data-rawwidth=&1354& data-rawheight=&765& class=&origin_image zh-lightbox-thumb& width=&1354& data-original=&/b10dcefa_r.jpg&&帝都毕竟是帝都,怎么可以随便攻陷呢,旁边还有两大防御塔守卫着,但是被我们一一拆掉~好的,我们直接长驱直入~&br&&img src=&/adff0df4a876_b.jpg& data-rawwidth=&1333& data-rawheight=&748& class=&origin_image zh-lightbox-thumb& width=&1333& data-original=&/adff0df4a876_r.jpg&&&br&BOOM~!!!&br&&img src=&/398dcefbb1f6c6a_b.jpg& data-rawwidth=&1393& data-rawheight=&721& class=&origin_image zh-lightbox-thumb& width=&1393& data-original=&/398dcefbb1f6c6a_r.jpg&&大顺朝就这样结束了~游戏也结束了~! 赶紧开始下一盘吧!
天河的零基础教学。(多图流量渗入!!!) PS:最好是有一个和你同时玩的,能带你的最好。DOTA还是和朋友一起玩最好了,当然没有也没关系。但是我觉得可能会门都入不了就没兴趣了。 好的我们先下载客户端: 下载好之后,注册两个…
&img src=&/v2-1dbecbb3baf326_b.jpg& data-rawwidth=&1728& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1728& data-original=&/v2-1dbecbb3baf326_r.jpg&&&p&&b&PyPortScanner&/b&&/p&&p&python多线程端口扫描器。&/p&&p&输出示例:&/p&&img src=&/v2-a313a49fa137f81c83556_b.png& data-rawwidth=&1132& data-rawheight=&490& class=&origin_image zh-lightbox-thumb& width=&1132& data-original=&/v2-a313a49fa137f81c83556_r.png&&&br&&p&&b&Github&/b&&/p&&p&此端口扫描器的源码,文档及详细调用方法见&a href=&/?target=https%3A///YaokaiYang-assaultmaster/Python-Port-Scanner-Module& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Github PythonPortScanner by Yaokai&i class=&icon-external&&&/i&&/a&。&/p&&br&&p&&b&背景&/b&&/p&&p&有时候,在进行网络相关的研究的时候,我们需要执行一些有目的的参数测量。而端口扫描就是其中比较普遍也比较重要的一项。所谓的端口扫描,就是指通过TCP握手或者别的方式来判别一个给定主机上的某些端口是否处理开放,或者说监听的状态。现有的使用比较广泛的端口扫描工具是nmap。毋庸置疑,nmap是一款非常强大且易于使用的软件。但nmap是一款运行于terminal中的软件,有时在别的代码中调用并不是很方便,甚至没有相应的库。另外,nmap依赖的其他库较多,在较老的系统中可能无法使用较新的nmap,这样会造成扫描的不便。另外,nmap在扫描时需要root权限。基于这个原因,我用python2.7自带的库开发了一款高效的多线程端口扫描器来满足使用需要。&/p&&p&&b&具体实现&/b&&/p&&p&&b&I. 利用TCP握手连接扫描一个给定的&/b&(ip,port)&b&地址对&/b&&/p&&p&为了实现端口扫描,我们首先明白如何使用python socket与给定的(ip, port)进行TCP握手。为了完成TCP握手,我们需要先初始化一个TCP socket。在python中新建一个TCP socket的代码如下:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&TCP_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #(1)
TCP_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT) #(2)
TCP_sock.settimeout(delay) #(3)
&/code&&/pre&&/div&&p&其中(1)是初始化socket的代码,socket.AF_INTE参数表示IPv4 socket,socket.SOCK_STREAM参数表示TCP socket。这样我们就初始化了一个使用IPv4,TCP协议的socket。 (2)使用了socket.setsockopt()来设置socket的另一些参数。socket.SOL_SOCKET指定当前socket将使用setsockopt()中后面的参数。socket.SO_REUSEPORT表明当前socket使用了可复用端口的设置。socket.SO_REUSEPORT具体含义可以参考&a href=&/?target=http%3A//blog.csdn.net/yaokai_assultmaster/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&另一篇文章&i class=&icon-external&&&/i&&/a&。 (3)将socket的连接超时时间设置为delay变量所对应的时间(以秒为单位)。这么做是为了防止我们在一个连接上等待太久。 了解了如何新建一个socket,我们就可以开始对给定的(ip,port)对进行TCP连接。代码如下:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&try:
result = TCP_sock.connect_ex((ip, int(port_number)))
# If the TCP handshake is successful, the port is OPEN. Otherwise it is CLOSE
if result == 0:
output[port_number] = 'OPEN'
output[port_number] = 'CLOSE'
TCP_sock.close()
except socket.error as e:
output[port_number] = 'CLOSE'
&/code&&/pre&&/div&&p&因为这是一个I/O操作,为了处理可能出现的异常,我们需要在try,except块处理这部分操作。其次,我们根据socket.connect_ex()方法连接目标地址,通过该方法返回的状态代码来判断连接是否成功。该方法返回0代表连接成功。所以当返回值为0的时候将当前端口记录为打开状态。反之记录为关闭。另外,当连接操作出现异常的时候,我们也将端口记录为关闭状态,因为其并不能被成功连接(可能因为防火墙或者数据包被过滤等原因)。 需要注意的是,在连接完成后我们一定要调用socket.close()方法来关闭与远程端口之间的TCP连接。否则的话我们的扫描操作可能会引起所谓的TCP连接悬挂问题(Hanging TCP connection)。&/p&&p&总结起来,TCP握手扫描的整体代码如下:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&&&&
Perform status checking for a given port on a given ip address using TCP handshake
Keyword arguments:
ip -- the ip address that is being scanned
port_number -- the port that is going to be checked
delay -- the time in seconds that a TCP socket waits until timeout
output -- a dict() that stores result pairs in {port, status} style (status = 'OPEN' or 'CLOSE')
def __TCP_connect(ip, port_number, delay, output):
# Initilize the TCP socket object
TCP_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
TCP_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
TCP_sock.settimeout(delay)
result = TCP_sock.connect_ex((ip, int(port_number)))
# If the TCP handshake is successful, the port is OPEN. Otherwise it is CLOSE
if result == 0:
output[port_number] = 'OPEN'
output[port_number] = 'CLOSE'
TCP_sock.close()
except socket.error as e:
output[port_number] = 'CLOSE'
&/code&&/pre&&/div&&p&&b&II. 多线程扫描端口&/b&&/p&&p&单线程扫描虽然逻辑简单,但无疑是及其低效的。因为在扫描过程中要进行大量的数据包的发送和接受,所以这是一个I/O密集型的操作。如果只是用单线程进行扫描的话,程序会在等待回复的过程中浪费大量的时间。因此多线程的操作是很有必要的。这里,一个很自然的思路就是为每一个端口单独开一个线程进行扫描。 在这里我们将需要扫描的端口列表定为从Nmap中得到的前1000个使用频率最高的端口: __port_list = [1,3,6,9,13,17,19,20,21,22,23,24,25,30,32,37,42,49,53,70,79,80,81,82,83,84,88,89,99,106,109,110,113,119,125,135,139,143,146,161,163,179,199,211,222,254,255,259,264,280,301,306,311,340,366,389,406,416,425,427,443,444,458,464,481,497,500,512,513,514,524,541,543,544,548,554,563,...] 完整的端口表见&a href=&/?target=https%3A///YaokaiYang-assaultmaster/PythonPortScanner/blob/master/PortScanner/portlists/top1KPorts& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&top 1K commonly used ports&i class=&icon-external&&&/i&&/a& 对于一个给定的ip地址,扫描的过程是这样的: 1. 取出一个端口 2. 新建一条线程,利用__TCP_connect()函数对该(ip,port)进行连接操作。 3. 调用thread.start()和thread.join()方法,使扫描的子线程开始工作并且命令主线程等待子线程死亡后再结束。 4. 重复这个过程直到所有的端口都被扫描过。 根据以上思路,多线程扫描的代码如下:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&&&&
Open multiple threads to perform port scanning
Keyword arguments:
ip -- the ip address that is being scanned
delay -- the time in seconds that a TCP socket waits until timeout
output -- a dict() that stores result pairs in {port, status} style (status = 'OPEN' or 'CLOSE')
def __scan_ports_helper(ip, delay, output):
Multithreading port scanning
port_index = 0
while port_index & len(__port_list):
# Ensure that the number of cocurrently running threads does not exceed the thread limit
while threading.activeCount() & __thread_limit and port_index & len(__port_list):
# Start threads
thread = threading.Thread(target = __TCP_connect, args = (ip, __port_list[port_index], delay, output))
thread.start()
# lock the thread until all threads complete
thread.join()
port_index = port_index + 1
&/code&&/pre&&/div&&p&其中__thread_limit参数是用来限制线程数目的。output是一个字典,以(port: status)的形式保存了扫描的结果。 thread.join()保证了主线程只有在所有子线程都结束之后才会继续执行,从而确保了我们一定会扫描全部的端口。&/p&&p&&b&III. 多线程扫描多个网站&/b&&/p&&p&在多线程扫描端口的同时,如果我们能够多线程扫描多个网站,那么扫描的效率还将进一步提高。为了达到这个目的,我们需要另一个线程去管理一个网站对应的对其端口进行扫描的所有子线程。 除此之外,在这种情况下,&b&我们必须删去&/b&__scan_ports_helper()&b&中的&/b&thread.join()&b&。否则主线程就会被端口扫描子线程阻塞,我们也就无法多线程扫描多个网站了。&/b& 在不使用join()的情况下,我们如何确保一个网站的扫描线程只有在完成对其全部端口的扫描之后才会返回呢?这里我使用的方法是检测output字典的长度。因为在全部扫描完成后,output的长度一定与__port_list的长度一致。 改变后的代码如下:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&def __scan_ports_helper(ip, delay, output):
Multithreading port scanning
port_index = 0
while port_index & len(__port_list):
# Ensure that the number of cocurrently running threads does not exceed the thread limit
while threading.activeCount() & __thread_limit and port_index & len(__port_list):
# Start threads
thread = threading.Thread(target = __TCP_connect, args = (ip, __port_list[port_index], delay, output))
thread.start()
port_index = port_index + 1
while (len(output) & len(self.target_ports)):
&/code&&/pre&&/div&&p&根据以上扫描线程的代码,端口扫描的管理线程的代码如下所示:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&&&&
Controller of the __scan_ports_helper() function
Keyword arguments:
ip -- the ip address that is being scanned
delay -- the time in seconds that a TCP socket waits until timeout
def __scan_ports(websites, output_ip, delay):
scan_result = {}
for website in websites:
website = str(website)
scan_result[website] = {}
thread = threading.Thread(target = __scan_ports_helper, args = (ip, delay, scan_result[website]))
thread.start()
# lock the script until all threads complete
thread.join()
return scan_result
&/code&&/pre&&/div&&p&至此,我们就完成了一个多线程端口扫描器的全部代码。&/p&&p&&b&IV. 总结!利用这些代码扫描给定网站并输出结果&/b&&/p&&p&处于输出方便的考虑,我并没有使用多线程扫描多个网站,同时对每个网站多线程扫描多个端口的方法。在这个例子中只进行了多线程扫描端口,但同时只扫描一个网站的操作。&/p&&p&具体代码就不贴在这里了。大家可以去我的github查看。&/p&
PyPortScannerpython多线程端口扫描器。输出示例: Github此端口扫描器的源码,文档及详细调用方法见。 背景有时候,在进行网络相关的研究的时候,我们需要执行一些有目的的参数测量。而端口扫描就是其中比较普遍也比较…
&p&首先,让我们先明确什么是LAMP,是么是Hadoop,什么是Mysql,什么是MongoDB。&/p&&br&&p&LAMP=Linux+Apache+Mysql/MariaDB+Perl/PHP/Python,每一个加号和斜线分开的都是独立的开源软件,而LAMP是常见的小型厂商用于快速搭建一套Web应用所采用的技术方案。这里的Web应用可以简单理解为一个能够访问的网站,其中各部分的功能为:&/p&&p&Linux为Web应用操作系统;&/p&&p&Apache为服务器程序Apache HTTP Server(同时也是世界上最大的开源软件基金会组织名称),你可以理解为后台响应请求的主程序,它运行在Linux系统上;&/p&&p&Mysql/MariaDB为数据库,用于存储网站本身的数据文件以及访问的用户数据等,这里提前说一下它们为关系型数据库,这与MongoDB是不同的;&/p&&p&Perl/PHP/Python为编程语言,用于编写Web服务的处理逻辑等。&/p&&br&&p&Hadoop,是一个由Apache基金会所开发的分布式系统基础架构,它主要用于处理大量数据的存储与计算工作。主要包括MapReduce计算部分和HDFS存储部分。&/p&&p&Mysql,几乎可以说是最成功的开源关系型数据库,广泛用于企业级用户数据存储。&/p&&p&MongoDB,NoSql数据库系列的代表作。&/p&&br&&p&说完这些东西都是什么之后,再用一个实际的场景来说明它们在一个大型公司架构中的功能。&/p&&br&&p&某新闻APP,用户打开客户端,此时手机向提供新闻的公司服务器发起请求,请求新闻数据到手机端。请求首先到达服务器端,服务器端是LAMP,即Linux系统上运行Apache服务进程,服务进程根据PHP等后台语言设计好的逻辑处理这次请求,选择返回的新闻数据,此新闻数据是存储在Mysql或者MongoDB中的,等到返回新闻数据后,本次场景在线部分结束,主要使用LAMP,并没有使用Hadoop。&/p&&p&而访问请求结束后,服务器端会记录本次访问过程,以及各种用户数据等信息,因为数据量众多且结构化程度较低,所以此部分信息会选择存入HDFS,之后通过MapReduce计算框架对大量的此类信息做分析处理,俗称数据挖掘。&/p&&p&至此,在线离线两部分流程结束。&/p&&br&&p&分析一下。&/p&&p&其中LAMP和Hadoop功能不同,一个主要负责在线部分的业务,一个主要负责离线的存储计算工作。&/p&&p&而MongoDB和Mysql虽然都是数据库存储,但是因为Mysql是关系型数据库,强调ACID属性,读取速度快,结构性强,但是扩展性较差,所以适合用于存储数据量变化不迅速,强调一致性的数据,例如金融数据、用户的个人信息等,而MongoDB是NoSQL数据库,是弱一致性,便于扩展,所以适合存取大数据量,多读少写的数据,例如当天的新闻文章,用户的待推荐列表等数据。目前大部分互联网公司都是采用多种数据库混合使用的方法,根据具体场景设计具体工具。相信新浪不会只有一种存储介质。&/p&
首先,让我们先明确什么是LAMP,是么是Hadoop,什么是Mysql,什么是MongoDB。 LAMP=Linux+Apache+Mysql/MariaDB+Perl/PHP/Python,每一个加号和斜线分开的都是独立的开源软件,而LAMP是常见的小型厂商用于快速搭建一套Web应用所采用的技术方案。这里的Web应…
题主说的Apache,指的应该是Apache软件基金会下的一个项目——&a href=&///?target=https%3A//httpd.apache.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Apache HTTP Server Project&i class=&icon-external&&&/i&&/a&;Nginx同样也是一款开源的HTTP服务器软件(当然它也可以作为邮件代理服务器、通用的TCP代理服务器)。&br&&br&HTTP服务器本质上也是一种应用程序——它通常运行在服务器之上,绑定服务器的IP地址并监听某一个tcp端口来接收并处理HTTP请求,这样客户端(一般来说是IE, Firefox,Chrome这样的浏览器)就能够通过HTTP协议来获取服务器上的网页(HTML格式)、文档(PDF格式)、音频(MP4格式)、视频(MOV格式)等等资源。下图描述的就是这一过程:&br&&br&&img src=&/913f42fd_b.png& data-rawwidth=&849& data-rawheight=&273& class=&origin_image zh-lightbox-thumb& width=&849& data-original=&/913f42fd_r.png&&&br&不仅仅是Apache HTTP Server和Nginx,绝大多数编程语言所包含的类库中也都实现了简单的HTTP服务器方便开发者使用:&br&&ul&&li&&a href=&///?target=https%3A///javase/8/docs/jre/api/net/httpserver/spec/com/sun/net/httpserver/HttpServer.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HttpServer (Java HTTP Server )&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a href=&///?target=https%3A//docs.python.org/2/library/simplehttpserver.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python SimpleHTTPServer&i class=&icon-external&&&/i&&/a&&/li&&/ul&使用这些类库能够非常容易的运行一个HTTP服务器,它们都能够通过绑定IP地址并监听tcp端口来提供HTTP服务。&br&&br&&a href=&///?target=http%3A//tomcat.apache.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Apache Tomcat&i class=&icon-external&&&/i&&/a&则是Apache基金会下的另外一个项目,与Apache HTTP Server相比,Tomcat能够&b&动态&/b&的生成资源并返回到客户端。Apache HTTP Server和Nginx都能够将某一个文本文件的内容通过HTTP协议返回到客户端,但是这个文本文件的内容是固定的——也就是说无论何时、任何人访问它得到的内容都是完全相同的,这样的资源我们称之为&b&静态&/b&资源。动态资源则与之相反,在不同的时间、不同的客户端访问得到的内容是不同的,例如:&br&&ul&&li&包含显示当前时间的页面&br&&/li&&li&显示当前IP地址的页面&/li&&/ul&Apache HTTP Server和Nginx本身不支持生成动态页面,但它们可以通过其他模块来支持(例如通过Shell、PHP、Python脚本程序来动态生成内容)。&br&如果想要使用Java程序来动态生成资源内容,使用这一类HTTP服务器很难做到。&a href=&///?target=http%3A///tutorial/servlet-intro& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Java Servlet&i class=&icon-external&&&/i&&/a&技术以及衍生的&a href=&///?target=http%3A///tutorial/jsp-intro& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Java Server Pages&i class=&icon-external&&&/i&&/a&技术可以让Java程序也具有处理HTTP请求并且返回内容(由程序动态控制)的能力,Tomcat正是支持运行Servlet/JSP应用程序的容器(Container):&br&&img src=&/fd020ae7a_b.png& data-rawwidth=&885& data-rawheight=&502& class=&origin_image zh-lightbox-thumb& width=&885& data-original=&/fd020ae7a_r.png&&Tomcat运行在JVM之上,它和HTTP服务器一样,绑定IP地址并监听TCP端口,同时还包含以下指责:&br&&ul&&li&管理Servlet程序的生命周期&/li&&li&将URL映射到指定的Servlet进行处理&/li&&li&与Servlet程序合作处理HTTP请求——根据HTTP请求生成HttpServletResponse对象并传递给Servlet进行处理,将Servlet中的HttpServletResponse对象生成的内容返回给浏览器&/li&&/ul&&br&虽然Tomcat也可以认为是HTTP服务器,但通常它仍然会和Nginx配合在一起使用:&br&&ul&&li&动静态资源分离——运用Nginx的反向代理功能分发请求:所有动态资源的请求交给Tomcat,而静态资源的请求(例如图片、视频、CSS、JavaScript文件等)则直接由Nginx返回到浏览器,这样能大大减轻Tomcat的压力。&/li&&li&负载均衡,当业务压力增大时,可能一个Tomcat的实例不足以处理,那么这时可以启动多个Tomcat实例进行水平扩展,而Nginx的负载均衡功能可以把请求通过算法分发到各个不同的实例进行处理&/li&&/ul&
题主说的Apache,指的应该是Apache软件基金会下的一个项目——;Nginx同样也是一款开源的HTTP服务器软件(当然它也可以作为邮件代理服务器、通用的TCP代理服务器)。 HTTP服务器本质上也是一种应用程序——它通常运行在服务器之…
Boss 之前让我教一个零基础的医学生做web server。告诉他一些基础技术和要学习的内容。下面是我回复的部分邮件内容,你如果没什么基础,下面的步骤应该比较适合你,希望对你有帮助。&br&&br&&br&————————————————————————————&br&&br&&br&&b&简要介绍&/b&&br&学习构建web sever需要你根据自己的平台来确定使用什么语言和什么数据库,一般有这么几种搭配Linux(windows) + PHP + MySQL +Apache(IIS); &br&windows + &a href=&///?target=http%3A//ASP.net& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&ASP.net&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& + SQL Server + IIS; Unix + JSP + Oracel + WebLogic.&br&现在还有一些其他的语言Ruby on Rails 以及Nodejs都可以做网站数据库,这几种&br&语言都可以和主流的数据库链接的。&br&&br&Boss说你没有什么基础,那我就按我自己使用的Linux + Apache + MySQL + PHP(LAMP)给你介绍。&br&&br&&b&学习内容&/b&&br&1. 首先是Linux,因为是做网站服务器,所以你不仅仅只是知道Linux基本命令像ls cp rm等,你还需要知道怎么配置ip 和路由等网络配置问题&br&也就是说如果上面一整套要你自己去搭建起来,需要你成为一个好的linux manager.一般学这种技术内容分为三个阶段学习,入门可以使用&br&《鸟哥的Linux私房菜》鸟哥 著;王世江[改编] 编;高级可以看清华大学王刚编写《Linux》; 专业的就是有一份Manual book,有什么问题直接看&br&手册。其实这些书上的内容都可以在网上查到,而且比书上通俗异懂,但还是推荐你先看看书,这样可以形成一个良好在知识框架。&br&&br&2. 可以不用等Linux完全学会才做接下来的事情,因为Linux细节超级多,很多也用不到,而且没有足够多的错误次数,是很难成为专业的。有了基本&br&的linux网络配置知识之后就可以开始使用Apache了,Apache是一个网站服务器软件,用来管理站点和后台程序的运行的,你需要对Apache进行配置,这个&br&你可以不用花很长时间,你只需要在网上找到怎么配置apache 和php以及mysql,将他们连接起来就可以了。配置会失败很多次,因为有很多小问题,&br&失败了重新安装再配置,多试几次就可以了。&br&&br&3. MySQL,这个&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SQLCourse - Interactive Online SQL Training for Beginners&i class=&icon-external&&&/i&&/a& 网站是学习sql语句的,除了MySQL还有Orcel, DB2等商业数据库。你只需要学习基本的sql 语句就可以了。&br&这个可以不用特别的深入,因为查询组合有很多种, 你不可能穷举每种查询组合进行测试,在使用的过程中遇到问题google就可以了。&br&&br&4. Linux Apache MySQL这三个是基本的框架,PHP是一种脚本语言,脚本语言可以不一定使用PHP,可以使用Ruby,也可以使用python。因为php+Apache使用&br&的比较广,而且有很多现在流行的MVC框架。php是一种脚本语言,你也可以认为是编程语言,比C++简单很多,php是你网站后台的逻辑基础,所以这个需要学习的&br&相对深入,当然不需要深入到php 解释器。基本变量以及函数编程等等需要很理解;然后是类对象,类和对象可能自己本会去写,但是一般 的MVC框架都用到类,&br&所以理解类与对象之后,能够很容易的使用php框架。当然,除了php逻辑语言以外,它还有数据库连接内容,你学习的过程中会看到怎么使用的。你能够使用php编写小游戏了之后,可以学习使用MVC框架【CodeIgniter(&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CodeIgniter Web Framework&i class=&icon-external&&&/i&&/a&)或者laravel(&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Laravel - The PHP Framework For Web Artisans&i class=&icon-external&&&/i&&/a&)】。&br&&br&上面说了这么多东西,他们并不是分开来学习的,是在使用的过程中学习的,你可以先使用WAMP(&a href=&///?target=http%3A///en/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&WampServer, the web development platform on Windows&i class=&icon-external&&&/i&&/a&)在自己电脑上安装一个集成的不需要自己配置的运行环境,然后编个小网页试一下,这样会有一个比较直观的体验。&br&&br&web server,上面给你介绍的都是后台搭建工作,网页除了后台,还有前台内容,前台内容有html5+css3+JavaScript(jquery)+ ajax + json,&br&这些你自己看&a href=&///?target=http%3A//.cn/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&w3school 在线教程&i class=&icon-external&&&/i&&/a&, 内容很多,如果没有基础一两个月学会和应用所有东西应该是挺难的。&br&&br&然后分享几个前台框架&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Semantic UI&i class=&icon-external&&&/i&&/a&, &a href=&///?target=http%3A///docs/components/kitchen_sink.html%23& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kitchen sink&i class=&icon-external&&&/i&&/a&, &a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Bootstrap中文网&i class=&icon-external&&&/i&&/a&&br&text editor &a href=&///?target=http%3A//brackets.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Brackets - A modern, open source code editor that understands web design.&i class=&icon-external&&&/i&&/a&, &a href=&///?target=https%3A///phpstorm/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PHP IDE :: JetBrains PhpStorm&i class=&icon-external&&&/i&&/a&&br&还有一些我也一时想不起来,之后有什么问题可以直接google就可以了.
Boss 之前让我教一个零基础的医学生做web server。告诉他一些基础技术和要学习的内容。下面是我回复的部分邮件内容,你如果没什么基础,下面的步骤应该比较适合你,希望对你有帮助。 ———————————————————————————— 简要介绍 学…
&img src=&/v2-60fb14a58e6d8dbbf54eaa84d4fe9886_b.png& data-rawwidth=&944& data-rawheight=&369& class=&origin_image zh-lightbox-thumb& width=&944& data-original=&/v2-60fb14a58e6d8dbbf54eaa84d4fe9886_r.png&&&blockquote&简评:一个匿名,去中心化,无法被追踪,被关闭的网络。使用方法很简单,在 Github 下载解压缩,就能浏览 ZeroNet 了(文内有彩蛋)。&/blockquote&&p&&br&&/p&&img src=&/v2-5fd99aba54efac7bbd66_b.png& data-rawwidth=&150& data-rawheight=&150& class=&content_image& width=&150&&&p&&br&&/p&&p&以下是维基百科的资料:&/p&&blockquote&&b&ZeroNet&/b& 是一个以 P2P 为基础构成的类互联网的分布式网络。ZeroNet 的总部位于匈牙利的布达佩斯。ZeroNet 默认不提供匿名保护,但用户可以使用 Tor 来隐藏 IP 地址以达到匿名效果。[1]&br&ZeroNet 使用了比特币加密技术和 BitTorrent 网络协议[2][3][4]。现时该平台上托管了很多热门网站,而邮件客户端、文件管理器和新闻客户端等专有功能也为 ZeroNet 的生态系统增加了价值。[5]&/blockquote&&p&简单来说,&b&ZeroNet 是一个去中心化的深网&/b&,利用了比特币和 BT(P2P)的技术,可以匿名上网,可以在自己电脑搭建个人主页,即使你关机,你的网站也在全球内存在,别人无法关闭的你网站。由匈牙利的开发者使用Python制作,完全&b&开源&/b&。&/p&&p&&br&&/p&&p&&b&特点:&/b&&/p&&p&&br&&/p&&ol&&li&可以建自己的网站,你基本上不用做什么。  &/li&&li&基于 p2p 原理,你只要建好并有人浏览过,即使你自己关机,你的网站依然在全球存在。谁想关你站,呵呵他一脸。&/li&&li&基于 p2p 原理,内网穿透,也就是说你在内网也没关系,手机也没问题。&/li&&li&基于比特币原理,账号很安全,谁也不知道你是谁,谁也盗不去。&/li&&li&不需要域名,任何人访问都使用 &a href=&/?target=http%3A//127.0.0.1%3A43110/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&127.0.0.1:43110/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&字符串
来访问。&/li&&li&不用 Google 和 Facebook 和 Twitter 你就能浏览全世界&/li&&/ol&&p&&br&&/p&&p&彩蛋:&/p&&ul&&li&海盗湾种子站:&a href=&/?target=http%3A//127.0.0.1%3A43110/1PLAYgDQboKojowD3kwdb3CtWmWaokXvfp/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&127.0.0.1:43110/1PLAYgD&/span&&span class=&invisible&&QboKojowD3kwdb3CtWmWaokXvfp/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&MSDN 资源区:&a href=&/?target=http%3A//127.0.0.1%3A43110/1AJB5rtjfB9imjDGVk5vtRtZp3zgYizbpG/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&127.0.0.1:43110/1AJB5rt&/span&&span class=&invisible&&jfB9imjDGVk5vtRtZp3zgYizbpG/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&Kindle 电子书:&a href=&/?target=http%3A//127.0.0.1%3A43110/1KHCBG6dmbKXTZNenfwhWZ5x3oDyYyHSD4& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&127.0.0.1:43110/1KHCBG6&/span&&span class=&invisible&&dmbKXTZNenfwhWZ5x3oDyYyHSD4&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&中文导航:&a href=&/?target=http%3A//127.0.0.1%3A43110/1NzWeweqJ32aRVdM5UzFnYCszuvG5xV3vS& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&127.0.0.1:43110/1NzWewe&/span&&span class=&invisible&&qJ32aRVdM5UzFnYCszuvG5xV3vS&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&Zeronet 搜索引擎:&a href=&/?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&&br&&/p&&img src=&/v2-762fef3755ecd08bfd3f4f_b.png& data-rawwidth=&599& data-rawheight=&622& class=&origin_image zh-lightbox-thumb& width=&599& data-original=&/v2-762fef3755ecd08bfd3f4f_r.png&&&p&(广阔天地,去探索吧)&/p&&p&&br&&/p&&p&&u&以下是 ZeroNet 的 &a href=&/?target=https%3A///HelloZeroNet/ZeroNet/blob/master/README-zh-cn.md& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Github README&i class=&icon-external&&&/i&&/a& 内容:&/u&&/p&&h2&ZeroNet&/h2&&p&使用 Bitcoin 加密和 BitTorrent 网络的去中心化网络 - &a href=&/?target=https%3A//zeronet.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Decentralized websites using Bitcoin crypto and the BitTorrent network&i class=&icon-external&&&/i&&/a&&/p&&h2&为什么?&/h2&&ul&&li&我们相信开放,自由,无审查的网络&/li&&li&不会受单点故障影响:只要有在线的节点,站点就会保持在线&/li&&li&无托管费用: 站点由访问者托管&/li&&li&无法关闭: 因为节点无处不在&/li&&li&快速并可离线运行: 即使没有互联网连接也可以使用&/li&&/ul&&h2&功能&/h2&&ul&&li&实时站点更新&/li&&li&支持 Namecoin 的 .bit 域名&/li&&li&安装方便: 只需解压并运行&/li&&li&一键克隆存在的站点&/li&&li&无需密码、基于 &a href=&/?target=https%3A///bitcoin/bips/blob/master/bip-0032.mediawiki& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&BIP32&i class=&icon-external&&&/i&&/a& 的认证:用与比特币钱包相同的加密方法用来保护你的账户 你的账户被使用和比特币钱包相同的加密方法&/li&&li&内建 SQL 服务器和 P2P 数据同步: 让开发更简单并提升加载速度&/li&&li&匿名性: 完整的 Tor 网络支持,支持通过 .onion 隐藏服务相互连接而不是通过IPv4地址连接&/li&&li&TLS 加密连接&/li&&li&自动打开 uPnP 端口&/li&&li&插件和多用户 (开放式代理) 支持&/li&&li&全平台兼容&/li&&/ul&&h2&原理&/h2&&ul&&li&在你运行zeronet.py后你将可以通过&a href=&/?target=http%3A//127.0.0.1%3A43110/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&127.0.0.1:43110/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&{zeronet_address} (比如.&a href=&/?target=http%3A//127.0.0.1%3A43110/1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&127.0.0.1:43110/1HeLLo4&/span&&span class=&invisible&&uzjaLetFx6NH3PMwFP3qbRbTf3D&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&)。访问 zeronet 中的站点。&/li&&li&在你浏览 zeronet 站点时,客户端会尝试通过 BitTorrent 网络来寻找可用的节点,从而下载需要的文件 (html, css, js...)&/li&&li&你将会储存每一个浏览过的站点&/li&&li&每个站点都包含一个名为 content.json ,它储存了其他所有文件的 sha512 hash 值 和一个通过站点私钥建立的签名&/li&&li&如果站点的所有者 (拥有私钥的那个人) 修改了站点, 并且他/她签名了新的 content.json 然后推送至其他节点, 那么所有节点将会在验证 content.json 的真实性 (使用签名)后, 下载修改后的文件并推送至其他节点。&/li&&/ul&&h2&屏幕截图&/h2&&p&&br&&/p&&h2&如何加入 ?&/h2&&ul&&li&下载 ZeroBundle 文件包:&/li&&ul&&li&&a href=&/?target=https%3A///HelloZeroNet/ZeroNet-win/archive/dist/ZeroNet-win.zip& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Microsoft Windows&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&/?target=https%3A///HelloZeroNet/ZeroNet-mac/archive/dist/ZeroNet-mac.zip& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Apple macOS&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&/?target=https%3A///HelloZeroNet/ZeroBundle/raw/master/dist/ZeroBundle-linux64.tar.gz& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Linux 64bit&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&/?target=https%3A///HelloZeroNet/ZeroBundle/raw/master/dist/ZeroBundle-linux32.tar.gz& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Linux 32bit&i class=&icon-external&&&/i&&/a&&/li&&/ul&&/ul&&p&&br&&/p&&ul&&li&解压缩&/li&&li&运行 ZeroNet.exe (win), ZeroNet(.app) (osx), ZeroNet.sh (linux)&/li&&/ul&&h2&Linux 命令行&/h2&&ul&&li&wget &a href=&/?target=https%3A///HelloZeroNet/ZeroBundle/raw/master/dist/ZeroBundle-linux64.tar.gz& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/HelloZeroNet&/span&&span class=&invisible&&/ZeroBundle/raw/master/dist/ZeroBundle-linux64.tar.gz&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&tar xvpfz ZeroBundle-linux64.tar.gz&/li&&li&cd ZeroBundle&/li&&li&执行 ./ZeroNet.sh 来启动&/li&&/ul&&p&在你打开时他将会自动下载最新版本的 ZeroNet 。&/p&&p&&b&Debian Linux 中手动安装&/b&&/p&&ul&&li&sudo apt-get update&/li&&li&sudo apt-get install msgpack-python python-gevent&/li&&li&wget &a href=&/?target=https%3A///HelloZeroNet/ZeroNet/archive/master.tar.gz& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/HelloZeroNet&/span&&span class=&invisible&&/ZeroNet/archive/master.tar.gz&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&tar xvpfz master.tar.gz&/li&&li&cd ZeroNet-master&/li&&li&执行 python zeronet.py 来启动&/li&&li&在你的浏览器中打开 &a href=&/?target=http%3A//127.0.0.1%3A43110/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&127.0.0.1:43110/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&&b&FreeBSD&/b&&/p&&ul&&li&pkg install zeronet 或者 cd /usr/ports/security/zeronet/ && make install clean&/li&&li&sysrc zeronet_enable=&YES&&/li&&li&service zeronet start&/li&&li&在你的浏览器中打开 &a href=&/?target=http%3A//127.0.0.1%3A43110/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&127.0.0.1:43110/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&&b&Vagrant&/b&&/p&&ul&&li&vagrant up&/li&&li&通过 vagrant ssh 连接到 VM&/li&&li&cd /vagrant&/li&&li&运行 python zeronet.py --ui_ip 0.0.0.0&/li&&li&在你的浏览器中打开 &a href=&/?target=http%3A//127.0.0.1%3A43110/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&127.0.0.1:43110/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&&b&Docker&/b&&/p&&ul&&li&docker run -d -v &local_data_folder&:/root/data -p
nofish/zeronet&/li&&li&这个 Docker 镜像包含了 Tor ,但默认是禁用的,因为一些托管商不允许你在他们的服务器上运行 Tor。如果你希望启用它, 设置 ENABLE_TOR 环境变量为 true (默认: false). E.g.:&/li&&/ul&&p&docker run -d -e &ENABLE_TOR=true& -v &local_data_folder&:/root/data -p
nofish/zeronet&/p&&ul&&li&在你的浏览器中打开 &a href=&/?target=http%3A//127.0.0.1%3A43110/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&127.0.0.1:43110/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&&b&Virtualenv&/b&&/p&&ul&&li&virtualenv env&/li&&li&source env/bin/activate&/li&&li&pip install msgpack-python gevent&/li&&li&python zeronet.py&/li&&li&在你的浏览器中打开 &a href=&/?target=http%3A//127.0.0.1%3A43110/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&127.0.0.1:43110/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&&br&&/p&&h2&现有限制&/h2&&ul&&li&没有类似于 BitTorrent 的文件拆分来支持大文件&/li&&li&没有比 BitTorrent 更好的匿名性 (已添加内置的完整 Tor 支持)&/li&&li&传输文件时没有压缩和加密 (已添加 TLS 支持)&/li&&li&不支持私有站点&/li&&/ul&&p&&br&&/p&&h2&如何创建一个 ZeroNet 站点?&/h2&&p&如果 zeronet 在运行,把它关掉 执行:&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&$ zeronet.py siteCreate
- Site private key: 23DKQpzxhbVBrAtvLEc2uvk7DZweh4qL3fn3jpM3LgHDczMK2TtYUq
- Site address: 13DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2
- Site created!
$ zeronet.py
&/code&&/pre&&/div&&p&你已经完成了! 现在任何人都可以通过 http://localhost:43110/13DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2 来访问你的站点&/p&&p&下一步: &a href=&/?target=https%3A//zeronet.readthedocs.org/en/latest/site_development/getting_started/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ZeroNet 开发者文档&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&h2&我要如何修改 ZeroNet 站点?&/h2&&ul&&li&修改位于 data/13DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2 的目录. 在你改好之后:&/li&&/ul&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&err&&$&/span& &span class=&n&&zeronet&/span&&span class=&o&&.&/span&&span class=&n&&py&/span& &span class=&n&&siteSign&/span& &span class=&mi&&13&/span&&span class=&n&&DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2&/span&
&span class=&o&&-&/span& &span class=&n&&Signing&/span& &span class=&n&&site&/span&&span class=&p&&:&/span& &span class=&mi&&13&/span&&span class=&n&&DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2&/span&&span class=&o&&...&/span&
&span class=&n&&Private&/span& &span class=&n&&key&/span& &span class=&p&&(&/span&&span class=&nb&&input&/span& &span class=&n&&hidden&/span&&span class=&p&&):&/span&
&/code&&/pre&&/div&&ul&&li&输入你在创建站点时获得的私钥&/li&&/ul&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&err&&$&/span& &span class=&n&&zeronet&/span&&span class=&o&&.&/span&&span class=&n&&py&/span& &span class=&n&&sitePublish&/span& &span class=&mi&&13&/span&&span class=&n&&DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2&/span&
&span class=&o&&...&/span&
&span class=&n&&Site&/span&&span class=&p&&:&/span&&span class=&mi&&13&/span&&span class=&n&&DNDk&/span&&span class=&o&&..&/span&&span class=&n&&bhC2&/span& &span class=&n&&Publishing&/span& &span class=&n&&to&/span& &span class=&mi&&3&/span&&span class=&o&&/&/span&&span class=&mi&&10&/span& &span class=&n&&peers&/span&&span class=&o&&...&/span&
&span class=&n&&Site&/span&&span class=&p&&:&/span&&span class=&mi&&13&/span&&span class=&n&&DNDk&/span&&span class=&o&&..&/span&&span class=&n&&bhC2&/span& &span class=&n&&Successfuly&/span& &span class=&n&&published&/span& &span class=&n&&to&/span& &span class=&mi&&3&/span& &span class=&n&&peers&/span&
&span class=&o&&-&/span& &span class=&n&&Serving&/span& &span class=&n&&files&/span&&span class=&o&&....&/span&
&/code&&/pre&&/div&&ul&&li&就是这样! 你现在已经成功的签名并推送了你的更改。&/li&&/ul&&p&&br&&/p&&h2&帮助这个项目&/h2&&ul&&li&Bitcoin: 1QDhxQ6PraUZa21ET5fYUCPgdrwBomnFgX&/li&&li&Paypal: &a href=&/?target=https%3A//zeronet.readthedocs.org/en/latest/help_zeronet/donate/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Donation - ZeroNet&i class=&icon-external&&&/i&&/a&&/li&&li&Gratipay: &a href=&/?target=https%3A///zeronet/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ZeroNet - Gratipay&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&&br&&/p&&p&赞助商
&/p&&ul&&li&在 OSX/Safari 下 &a href=&/?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&&i class=&icon-external&&&/i&&/a& 带来更好的兼容性&/li&&/ul&&p&&br&&/p&&h2&感谢!&/h2&&ul&&li&更多信息, 帮助, 变更记录和 zeronet 站点: &a href=&/?target=https%3A///r/zeronet/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ZeroNet o r/zeronet&i class=&icon-external&&&/i&&/a&&/li&&li&在: &a href=&/?target=https%3A///client/irc.freenode.net/zeronet& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&#zeronet @ FreeNode&i class=&icon-external&&&/i&&/a& 和我们聊天,或者使用 &a href=&/?target=https%3A//gitter.im/HelloZeroNet/ZeroNet& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&gitter&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&/?target=https%3A//gitter.im/ZeroNet-zh/Lobby& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这里&i class=&icon-external&&&/i&&/a&是一个 gitter 上的中文聊天室&/li&&li&Email: &a href=&mailto:hello@noloop.me&&hello@noloop.me&/a&&/li&&/ul&&p&&br&&/p&&p&参考文章:&/p&&ul&&li&- &a href=&/?target=https%3A//zh.wikipedia.org/wiki/ZeroNet& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&wiki/ZeroNet&i class=&icon-external&&&/i&&/a& &/li&&li&- &a href=&/?target=http%3A///archives/4574.html%3F_t%3Dt& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&使用ZeroNet搭建P2P全球网站&i class=&icon-external&&&/i&&/a& &/li&&li&- &a href=&/?target=https%3A//zeronet.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Decentralized websites using Bitcoin crypto and the BitTorrent network&i class=&icon-external&&&/i&&/a& &/li&&/ul&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&参考文献:
&/p&&ol&&li&&a href=&/?target=https%3A///play-p2p-impossible-shutdown-160301/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Play: A P2P Distributed Torrent Site That's Impossible to Shut Down - TorrentFreak&i class=&icon-external&&&/i&&/a&. TorrentFreak. [] &b&(American English)&/b&.&/li&&li&Kysar, Tom. &a href=&/?target=http%3A///news/zeronet-expands-key-distributed-and-anonymous-features/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ZeroNet Expands Key Distributed And Anonymous Features&i class=&icon-external&&&/i&&/a&. . 18 March 2015 [20 September 2015].&/li&&li&Sewell, Chase. &a href=&/?target=http%3A///news/can-blockchain-technology-decentralize-the-web/28793& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Can Blockchain Technology Decentralize the Web?&i class=&icon-external&&&/i&&/a&. . 15 January 2015 [20 September 2015].&/li&&li&Kumar, Mohit. &a href=&/?target=https%3A///2015/02/meganet-decentralized-internet.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MegaNet — New Decentralized, Non-IP Based and Encrypted Network&i class=&icon-external&&&/i&&/a&. The Hacker News. 18 February 2015 [20 September 2015].&/li&&li&Peter Ngigi. &a href=&/?target=https%3A///zeronet-perfect-match-bitcoin/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ZeroNet: A Perfect Match For Bitcoin?&i class=&icon-external&&&/i&&/a&. easterndaily. .&/li&&/ol&&p&&br&&/p&&p&日报延伸阅读:&a href=&/p/& class=&internal&&我浏览暗网(Dark Web)时,被盯上了!&/a&&/p&&p&&br&&/p&&p&感谢关注专栏「极光日报」,每天为 Makers 导读三篇优质英文文章。&/p&
简评:一个匿名,去中心化,无法被追踪,被关闭的网络。使用方法很简单,在 Github 下载解压缩,就能浏览 ZeroNet 了(文内有彩蛋)。 以下是维基百科的资料:ZeroNet 是一个以 P2P 为基础构成的类互联网的分布式网络。ZeroNet 的总部位于匈牙利的布达佩斯…
&img src=&/v2-57dcc332e1eadfa0875d88b_b.png& data-rawwidth=&734& data-rawheight=&489& class=&origin_image zh-lightbox-thumb& width=&734& data-original=&/v2-57dcc332e1eadfa0875d88b_r.png&&&blockquote&&b&简评:&/b&有时候你不得不怀疑战斗}

我要回帖

更多关于 刀剑神域序列之争 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信