_2.htm?1024什么意思 这个游…

扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
B、K、M、G三者之间的进位关系是2的10次方???? 2的十次方不是么?但是为什么有人说是1024呢?还不止一个.比如这个的最佳答案/question/.html?si=4我知道是1024,可是有很多人说是2的十次方.我只想知道这个2的10此方是怎么来的.如果是错的,也给我说.谢谢
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
2的10次方:2*2*2*2*2*2*2*2*2*2=1024
为您推荐:
扫描下载二维码您在这里: >
>[勇敢者的游戏1-2]美国经典科幻动作大片1024高清MKV版下载
[勇敢者的游戏1-2]美国经典科幻动作大片1024高清MKV版下载
来源: 凡视网
阅读次数:
最新高清大片天天更新,欢迎推荐给您的小伙伴们
提示:必需先安装迅雷(包涵迅雷看看播放器)即可无广告在线观看本站所有电影)如何在线观看 如何下载?
也可复制下面的迅雷下载磁力链:
thunder://QUFmdHA6Ly9keTpkeUB4bGEueHVuYm8uY2M6MzAwNjcvW9G4wNfPwtTYd3d3Llh1bkJvLkNjXdPCuNLV37XE087Pt0JEMTI4MLjfx+XW0NOiy6vX1i5ybXZiWlo=
thunder://QUFmdHA6Ly9keTpkeUB4bGouMnR1LmNjOjEwMDQ0L1vRuMDXz8LU2Hd3dy4ydHUuY2Nd08K40tXf087PtzIuQkQxMDI0s6zH5dbQ06LLq9fWLm1rdlpa
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[片 & & & &名]:勇敢者的游戏/逃出侏曼纪/逃出魔幻纪/野蛮游戏
[上映时间]:1998
[影片类型]:动作/奇幻/家庭/剧情/冒险/喜剧
[影片评分]:7.3
[文件大小]:
[影片导演]:乔&庄斯顿 Joe Johnston
[影片主演]:罗宾&威廉斯 Robin Williams .....Alan Parrish &      克尔斯滕&邓斯特 Kirsten Dunst .....Judy Shepherd &      邦尼&亨特 Bonnie Hunt .....Sarah Whittle &      马尔科姆&斯图尔特 Malcolm Stewart .....Jim Shepherd &      彼特&布莱恩特 Peter Bryant .....Paramedic &      乔纳森&海德 Jonathan Hyde .....Samuel Alan Parrish/Hunter Van Pelt &      Bradley Pierce .....Peter Shepherd &      Bebe Neuwirth .....Aunt Nora Shepherd &      David Alan Grier .....Carl Bentley &      派翠西娅&克拉克森 Patricia Clarkson .....Carol Anne Parrish &      Adam Hann-Byrd .....Alan Parrish - 1969 &      劳拉&贝尔&邦迪 Laura Bell Bundy .....Sarah Whittle - 1969 &      James Handy .....Exterminator
[简介点评]:经典影片【勇敢者的游戏】讲述:JUMANJI是一种游戏的名字,玩这种游戏的人,希望把真实的世界抛在脑后,沉浸在一个奇幻世界里;游戏一旦开始,不管发生什么,都要遵守游戏规则,把游戏做完。影片的故事就从小男孩阿兰发现一个精致的JUMANJI游戏开始。 &  12岁的阿兰本来打算逃离没有温暖的家庭,正当他要实施计划的时候,他遇上了暗中喜欢的女孩萨拉,于是邀请她一起玩刚刚发现的JUMANJI游戏。不料游戏一开始,阿兰就掉入了游戏里的热带丛林里,从萨拉的眼前消失了!惊呆了的萨拉吓得冲出了房子,没有把游戏进行下去。这一耽搁,就是26年。 &  阿兰原来住的房子住进了新的主人朱迪和彼德,两个刚刚失去父母的可怜的孩子。他们在屋顶发现了还像当年一样摆放着的JUMANJI游戏,游戏于是继续进行:远古时代的飞鸟、猴子、还有已经变成壮汉的阿兰,都出现在两个孩子面前。经典电影大推荐 凡视首发电影网
& & &如默认发音不是国语,请右键播放器界面(迅雷看看)》音轨》选择另外一条音轨即可!如遇到不能下载或者下载很慢,请另选其它时间段下载。或者用迅雷VIP会员下载,另外本站也会不定时免费送出迅雷VIP账户和密码,敬请关注凡视网。
Copyright & 2012- 龙播网 版权所有(DEDECMS织梦) | 备ICP粤号-1 | BT种子网,种子首发网,bt首发网,电影天堂,迅雷BT站,亚洲bt,种子网,日韩BT种子,龙播网1024!一款将益智乐趣发挥到极致,令人无法释手的游戏。小编建议大家在玩的时候打开背景音乐~游戏的感觉超赞!!它的玩法很简单,就是将相同的数字叠加到一起,通过相加越变越大,直到方框被数字填满比较所有数字之和。考验你智慧的时候到了,还在等什么,快来挑战吧!
复制地址:
1.按键操作
arrows控制数字移动相加
2.如何开始
游戏加载完毕后,点击三角形播放机按钮即可开始游戏。
3.游戏目标
让相同的数字相加,获得更高分!
大家还喜欢
登录7k7k发现更多乐趣
7K7K网页游戏
7K7K儿童游戏
法律顾问:北京市诺恒律师事务所
京公网安备37
游戏作品版权归原作者享有,如无意之中侵犯了您的版权,请您按照来信告知,本网站将应您的要求删除。
7k7k小游戏温馨提示:适度游戏娱乐,沉迷游戏伤身,合理安排时间,享受快乐生活……15717人阅读
实战项目--2048(1)
一张图告诉你2048有多火
在每个阶段手机里面都会有一两款让人爱不释手的游戏存在,无论是在公车上、床铺上、马桶上还是在睡觉前、吃饭前、总会有让你拿出手机打开它的欲望。大部分人被Flappy bird给蹂躏的体无完肤,生活不能自理。在这危难降临的时刻,一款名为小3传奇的数字益智游戏出现在我们的视野中,游戏既简单又复杂,既单一又千变万化,简直就让人停不下来!
但故事的发展是这样的,小3传奇的两位开发者花了近一年半时间才开发出这个游戏的核心玩法,却在其上架appstore后仅21天就被《1024》抄了过去。而《2048》则更为迅速,19岁的Gabriele Cirulli只用了一个星期改编前两者游戏,却获得最大的成功,而小3却不被人知&;这类游戏从发布到现在,不管是app
store还是android市场,下载量已经远远超越了千万,网上各种版本的都有;
CocosEditor开源版
笔者历时一个晚上,终于完成了cocos2d-js开源版本,编码虽易,创意不易,且行且珍惜;
此版本包含了网上流行的各种版本。包括原版,朝代版,金庸版,星座,豪车等等近10个版本,代码开源,希望读者基于开源代码做出各种版本,供全名娱乐;
运行demo需要配置好,暂不支持其他工具。demo是跨平台的,可移植运行android,ios,html5网页等,代码是基于javascript语言,cocos2d-x游戏引擎,CocosEditor手游开发工具完成的。
本文共两篇,第一篇分析原版,第二篇分析各种版本,本代码仅供参考,有更好的实现方法可以评论中探讨;
已发布上线apk演示效果
几个小时开发,一天审核上线,这就是CocosEditor开发游戏的速度
360应用市场(2048 聚合版):
豌豆荚应用市场 :
CocosEditor版源代码下载:
cocos2d-js源代码请到集中营下载:
github版本管理:
Github里面大牛提供了各种语言的版本
包括(java &,css,shell,python,objective-c等等),读者可自行下载
不同平台下的效果图:
android平台(各种主题版本)
代码分析:
1初始化;进入游戏,初始化4*4表格,并随机产生两个2;
# 二维数组this.tables表格循环存入数据
#random1, random2 ,random11, random22四个随机数可以确定两个2的xy位置;
#方法newNumber里面,根据位置i,j和级别num可以确定一个新的数字;创建背景cell和cell上面的数字标签cellLabel;并根据num确定是否显示cellLabel;最后给cell关联一个data数据;特别说明这里的number:num不是精灵上面的数字而是精灵的级别,比如number=11 则数字是1024
MainLayer.prototype.onEnter = function () {
this.versionNum = indexV
this.indexVersion = VERSIONS[this.versionNum];
this.title.setString(this.indexVersion.name + &目标:& + this.indexVersion.array[this.indexVersion.array.length - 1] + &&);
var random1 = getRandom(4);
var random2 = getRandom(4);
while (random1 == random2) {
random2 = getRandom(4);
var random11 = getRandom(4);
var random22 = getRandom(4);
this.tables = new Array(4);
for (var i = 0; i & 4; i++) {
var sprites = new Array(4);
for (var j = 0; j & 4; j++) {
if (i == random1 && j == random11) {
sprites[j] = this.newNumber(i, j, 1);
} else if (i == random2 && j == random22) {
sprites[j] = this.newNumber(i, j, 1);
sprites[j] = this.newNumber(i, j, 0);
this.tables[i] =
this.totalScore = 0;
MainLayer.prototype.newNumber = function (i, j, num) {
var cell = cc.MySprite.create(this.rootNode, &5.png&, this.getPosition(i, j), 1);
var cellLabel = cc.MySprite.createLabel(cell, &&);
if (num & 0) {
cell.setColor(COLOR[num]);
cellLabel.setVisible(true);
cellLabel.setString(this.indexVersion.array[num]);
cellLabel.setFontSize(this.indexVersion.labelFontSize);
cellLabel.setVisible(false);
cell.data = {col: i, row: j, numberLabel: cellLabel, number: num};
2 四个方向算法;玩游戏的时候触摸四个方向,表格就向四个方向合并靠拢leftCombineNumber,rightCombineNumber,downCombineNumber,upCombineNumber,四个方法函数的算法都是一样的,我只分析一个leftCombineNumber;
第一步 相同数据叠加 :
#j从左到右变大,i从下到上变大;也就初始位置是左下角;
#如果该单元格级别不是空背景 &cell.data.number != 0 ;
#从它的右边开始var k = i + 1;&&循环遍历while (k & 4) &{k++};
#如果遍历到单元格级别也不是空背景&if (nextCell.data.number != 0) 遍历结束&k = 4;&;
#而且如果发现两个单元的级别一样if (cell.data.number == nextCell.data.number)&
#级别数据number刷新变化
cell.data.number += 1;
nextCell.data.number = 0;
第二步 填充空数据;
#同理第一步,如果是空背景if (cell.data.number == 0),也是循环遍历while (k & 4) &{k++};
#如果遍历到单元格级别不是空背景&if (nextCell.data.number != 0) &,空背景获得该单元格的数据,而该单元格则设为空背景;
cell.data.number = nextCell.data.
nextCell.data.number = 0;
//direction left
MainLayer.prototype.leftCombineNumber = function () {
for (var j = 0; j & 4; j++) {
for (var i = 0; i & 4; i++) {
var cell = this.tables[i][j];
if (cell.data.number != 0) {
var k = i + 1;
while (k & 4) {
var nextCell = this.tables[k][j];
if (nextCell.data.number != 0) {
if (cell.data.number == nextCell.data.number) {
cell.data.number += 1;
nextCell.data.number = 0;
this.totalScore += SCORES[cell.data.number];
for (j = 0; j & 4; j++) {
for (i = 0; i & 4; i++) {
cell = this.tables[i][j];
if (cell.data.number == 0) {
k = i + 1;
while (k & 4) {
nextCell = this.tables[k][j];
if (nextCell.data.number != 0) {
cell.data.number = nextCell.data.
nextCell.data.number = 0;
this.refreshNumber();
//direction right
MainLayer.prototype.rightCombineNumber = function () {
for (var j = 0; j & 4; j++) {
for (var i = 3; i &= 0; i--) {
var cell = this.tables[i][j];
if (cell.data.number != 0) {
var k = i - 1;
while (k &= 0) {
var nextCell = this.tables[k][j];
if (nextCell.data.number != 0) {
if (cell.data.number == nextCell.data.number) {
cell.data.number += 1;
nextCell.data.number = 0;
this.totalScore += SCORES[cell.data.number];
for (j = 0; j & 4; j++) {
for (i = 3; i &= 0; i--) {
cell = this.tables[i][j];
if (cell.data.number == 0) {
k = i - 1;
while (k &= 0) {
nextCell = this.tables[k][j];
if (nextCell.data.number != 0) {
cell.data.number = nextCell.data.
nextCell.data.number = 0;
this.refreshNumber();
MainLayer.prototype.downCombineNumber = function () {
for (var i = 0; i & 4; i++) {
for (var j = 0; j & 4; j++) {
var cell = this.tables[i][j];
if (cell.data.number != 0) {
var k = j + 1;
while (k & 4) {
var nextCell = this.tables[i][k];
if (nextCell.data.number != 0) {
if (cell.data.number == nextCell.data.number) {
cell.data.number += 1;
nextCell.data.number = 0;
this.totalScore += SCORES[cell.data.number];
for (i = 0; i & 4; i++) {
for (j = 0; j & 4; j++) {
cell = this.tables[i][j];
if (cell.data.number == 0) {
k = j + 1;
while (k & 4) {
nextCell = this.tables[i][k];
if (nextCell.data.number != 0) {
cell.data.number = nextCell.data.
nextCell.data.number = 0;
this.refreshNumber();
//touch up
MainLayer.prototype.upCombineNumber = function () {
for (var i = 0; i & 4; i++) {
for (var j = 3; j &= 0; j--) {
var cell = this.tables[i][j];
if (cell.data.number != 0) {
var k = j - 1;
while (k &= 0) {
var nextCell = this.tables[i][k];
if (nextCell.data.number != 0) {
if (cell.data.number == nextCell.data.number) {
cell.data.number += 1;
nextCell.data.number = 0;
this.totalScore += SCORES[cell.data.number];
for (i = 0; i & 4; i++) {
for (j = 3; j &= 0; j--) {
cell = this.tables[i][j];
if (cell.data.number == 0) {
k = j - 1;
while (k &= 0) {
nextCell = this.tables[i][k];
if (nextCell.data.number != 0) {
cell.data.number = nextCell.data.
nextCell.data.number = 0;
this.refreshNumber();
3 刷新数据和颜色;
上面的算法完成了,只是该精灵的data里面的数据发生了变化,但视觉上没有任何变化,所以需要刷新数据和颜色
#新建一个空背景数组emptyCellList;
#又是循环二维数组this.tables
#得到单元格的文字标签label,和级别cellNumber
#如果不是空背景cellNumber!=0,label显示和设置文字内容和大小,同时如果检测到是最高级别,游戏成功结束
#如果是空背景,label隐藏&emptyCellList添加该元素emptyCellList.push(cell);;
#得到一个emptyCellList后,如果发现该数组大小为空,也就无法再产生一个数字2了,游戏over;
#而如果数组大小不是空,随机取一个位置randomCell,设置数据等级为0,数字为2,并播放缩放动画runAction;
MainLayer.prototype.refreshNumber = function () {
var emptyCellList = [];
for (var i = 0; i & 4; i++) {
var numbers = & &;
for (var j = 0; j & 4; j++) {
var cell = this.tables[i][j];
var label = cell.data.numberL
var cellNumber = cell.data.
if (cellNumber != 0) {
cell.setColor(COLOR[cellNumber]);
label.setString(this.indexVersion.array[cellNumber] + & &);
label.setFontSize(this.indexVersion.labelFontSize);
label.setVisible(true);
if (cellNumber == (this.indexVersion.array.length - 1)) {
//check success
var toast = cc.Toast.create(this.rootNode, &成功到达:& + this.indexVersion.array[cellNumber], 2);
toast.setColor(cc.c3b(255, 0, 0));
this.rootNode.scheduleOnce(function () {
cc.BuilderReader.runScene(&&, &MainLayer&);
cell.setColor(COLOR[cellNumber]);
label.setVisible(false);
emptyCellList.push(cell);
numbers += &
cc.log(&numbers==& + numbers);
this.scoreLabel.setString(&分数:& + this.totalScore);
if (emptyCellList.length & 1) {
//check fail
var toast = cc.Toast.create(this.rootNode, &失败!&, 2);
toast.setColor(cc.c3b(255, 0, 0));
this.rootNode.scheduleOnce(function () {
cc.BuilderReader.runScene(&&, &MainLayer&);
//create random cell
var randomCell = emptyCellList[getRandom(emptyCellList.length)];
randomCell.data.number = 1;
randomCell.data.numberLabel.setVisible(true);
randomCell.data.numberLabel.setString(VERSIONS[this.versionNum].array[1] + &&);
randomCell.data.numberLabel.setFontSize(this.indexVersion.labelFontSize);
randomCell.setColor(COLOR[1]);
randomCell.runAction(cc.Sequence.create(cc.ScaleTo.create(0, 0.8), cc.ScaleTo.create(0.5, 1)));
4 触摸检测 两个触摸点this.pEnded this.pBegan 根据x y确定方向,再根据距离确定左右和上下;
MainLayer.prototype.onTouchesEnded = function (touches, event) {
this.pEnded = touches[0].getLocation();
if (this.pBegan) {
if (this.pEnded.x - this.pBegan.x & 50) {
this.rightCombineNumber();
else if (this.pEnded.x - this.pBegan.x & -50) {
this.leftCombineNumber();
else if (this.pEnded.y - this.pBegan.y & 50) {
this.upCombineNumber();
else if (this.pEnded.y - this.pBegan.y & -50) {
this.downCombineNumber();
思路很清晰简单,游戏却是简约不简单;
cocos2d-x跨平台游戏引擎
cocos2d-x是全球知名的游戏引擎 ,引擎在全球范围内拥有众多开发者,涵盖国内外各知名游戏开发商。目前Cocos2d-x引擎已经实现横跨ios、Android、Bada、MeeGo、BlackBerry、Marmalade、Windows、Linux等平台。编写一次,到处运行,分为两个版本 cocos2d-c++和cocos2d-html5 本文使用了后者;
cocos2d-x 官网:
cocos2d-x 资料下载&&
CocosEditor开发工具:
CocosEditor,它是开发跨平台的手机游戏工具,运行window/mac系统上,javascript脚本语言,基于cocos2d-x跨平台游戏引擎, 集合代码编辑,场景设计,动画制作,字体设计,还有粒子,物理系统,地图等等的,而且调试方便,和实时模拟;
CocosEditor 下载,介绍和教程:;
CocosEditor官方博客:;
2048系列文章
2048源代码解密和下载(第一篇 分析原版)
2048源代码解密和下载(第二篇 分析各种版本)
传送门(优质博文):
Fruit Ninja(水果忍者)游戏源代码下载、分析(下)
想了解更多请进入,最新博客和代码在官方博客首发;请持续关注,还有更多CocosEditor游戏源码即将放出;
联系笔者:zuowen@makeapp.co(邮箱)&qq群:
整理各种版本的2048在线玩,狂欢起来吧;
1、2048原始版
2、2048进阶版(有乘法和继续玩下去的功能)
3、2048汉化版1:甲乙丙丁
4、2048汉化版2:商周秦汉
5、2048喵喵版:色弱慎入
6、2048丧病版:8*8
7、2048flappy版
8、2048六角形版
9、2048cross版
10、2048double版
11、2048哲学版
12、2048一步登天版
13、2048斐波那契数列版
14、2048双人对战版
15、2048变2版
16、2048直线版
17、新增3D版的2048:
18、2048的一个合集:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:505492次
积分:4664
积分:4664
排名:第6004名
原创:45篇
评论:864条
--------Cocos2d-JS 项目--------
------Cocos2d-Java 项目------
& 官方微信,扫描关注一下哦
————联系方式————
邮箱:zuowen@makeapp.co&
文章:28篇
阅读:430742
(1)(3)(1)(8)(8)(5)(4)(13)(1)(1)在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?_服务器应用_Linux公社-Linux系统门户网站
你好,游客
在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?
来源:Linux中国&
作者:Linux
不要相信任何人,自己建立一个VPN服务器来加密Web数据从而躲过他人的窥视
虽然免费、未加密的无线AP遍地都是,但是你不应该连接这些AP来登陆你的网银账户,除非你对他人的窥视毫不在意。那么对此的解决方案是什么呢?一个,也就是VPN(virtual private network)。
一个VPN可以使你的私有网络拓展至公共场所,因此即使你连接着星巴克的 Wi-Fi,你的网络浏览仍然保持着安全的加密。
有很多方法来建立VPN,包括,但是每个解决方案都有其的优点以及缺点,这取决于VPN服务商运作的方式和服务商提供的VPN选项。
最简单及最方便的保证数据安全的方法就是完全抛弃公共Wi-Fi。但是这个解决方案对于我来说有点极端了,一部分原因是在家里建立一个VPN服务器相对容易以及划算,你只需要一个便宜的($35)小型的树莓派。
我的树莓派与智能手机差不多大小,并且它拥有一个VPN服务器所有应有的功能。这意味着不管我在哪里,我可以通过安全的网络来连接在家里的电脑和家里的内网来访问共享的文件以及媒体。这个服务器在我最近去波士顿的旅途中使生活变得十分美好,在旅途中我仍然可以观看储存在家里台式机上的视频。
在这部分文章中,说实话我希望直接带给你们一个设置树莓派VPN的教程。问题是这个优秀教程并不存在,至少目前没有一个适合大部分电脑用户的优秀教程。虽然有无数关于如何搭建树莓派VPN的教程,但极少的教程会解释这么做的目的。
我阅读了不少教程,并把好的部分整合入了这半篇教程中,来教授读者如何搭建树莓派VPN服务器。这个教程甚至连我都能理解,并完成如何搭建和为何搭建的学习。最重要的是,我认为Eric Jodoin的VPN教程更适合那些专家,但它使我的大脑直接宕机了...
那么跟随我钻进加密法的兔子洞并且开始学习吧,无论你有多么多疑,提出了创造VPNs的那个人更正是如此。
下OpenVPN客户端配置教程
Ubuntu 10.04搭建OpenVPN
Ubuntu 13.04 VPN (OpenVPN) 配置和连接不能同时访问内外网的问题
如何在Linux上用OpenVPN搭建安全的远程网络架构
Raspberry Pi Model B:以及使其工作所需要的所有硬件-一个常规电源供电器和一个放置的小盒子。小盒子可以避免树莓派硬件意外短路而损坏-这个盒子甚至可以是一个自己折叠的纸板箱。
SD card:我建议8GB及以上的容量,只是来保证你有必要的储存空间。像所有树莓派项目一样,SD卡上应该要预装上NOOBS。
五类网线:这根网线将连接树莓派的以太网接口和你的路由器的以太网接口。
:这是一个开源VPN服务软件,我们今天就要安装它。
开始项目之前的准备
1) 你需要并且安装完。我在"鱼缸管理"项目中对此做过一个的教程。因此你也可以在那里查看。
2) 你需要为树莓派设置一个在你家内网中的静态IP地址。这一步骤取决于你路由器的型号,因此你可能需要阅读你的路由器的说明书来完成这一步。如果你还没有完成这一步,你可以参照ReadWrite的。
3) 你需要启用SSH。我们需要通过与树莓派进行连接,这是一个使我们能够从另一台电脑连接树莓派的工具。通过这种方法,我们在这个项目中不需要再为树莓派单独设置一个显示屏以及无线键盘。再提一下,看看ReadWrite的。
4) 你需要将路由器的1194端口映射至树莓派的内网IP地址,完成这一步的方法也决定于你路由器的型号,所以阅读路由器说明书吧。如果你想用另一个端口或TCP协议,没问题,只要将此教程中提及"UDP"的地方换为"TCP",1194端口改为你需要的端口就行了。想必你也猜到了,ReadWrite为此也写了一篇。
你可以从上文看出,我们现在在建立一些树莓派的基础概念,这也是为什么在树莓派上搭建VPN对初学者的第一个项目来说并不是适合。
简单的一些警告
我曾经喜欢直接拷贝网上教程中的代码,但是当我自己测试这篇教程时,我发现直接的复制粘贴代码会导致一些错误,原因是复制粘贴中出现的空行以及格式变化。如果你发现在此篇教程在实际操作时出现了一些问题,我的建议是先手动输入代码试试!
First Steps
1) 启动并修改树莓派的密码。如果你还在使用树莓派的默认用户名(pi)和密码(respberry),那么接下来的安全教程就完全没有什么意义了。
打开一个terminal/PuTTY 窗口输入:
sudo passwd
将用户名以及密码修改地既好记并难猜(),不然的话为什么要自找麻烦搭建一个私人网络呢?
2) 为了树莓派的安全来进行软件包的升级。输入如下两条命令:
sudo apt-get update
sudo apt-get upgrade
这应该不会花太多时间,而且为我们排除了之后可能会产生的问题。
3) 接下来我们需要这个开源软件(OpenVPN)了。输入:
sudo apt-get install openvpn
树莓派会询问确认,因为这用掉一点点储存空间。但是由于我们已经准备了一张8GB及以上的SD卡,我们对此完全没问题。
4) 你当然不想让任何发现你的VPN的人就可以连接,因此我们会为这个安全的地址准备一个来验证身份的密钥。这就像为你的家门准备一把锁一样。
OpenVPN自带了Easy_RSA,一个轻量并容易的使用RSA加密方法的包。发明于1977年,RSA是第一个沿用至今仍旧可用的加密系统。加密的密钥是公开的,解密的密钥是保密的。如果你听说过比特币的工作原理,这些对你来说应该十分熟悉。
通过使用Easy_RSA,你可以使用软件带有的算法来生成一个独一无二的密钥。
首先获得树莓派的系统权限,就是将命令提示符中的"pi@raspberrypi"转换成"root@raspberrypi"。
这句命令在现有的终端中再次创建了一个拥有root权限的终端实例。我们需要获得root权限的原因是,如果我们没有root权限,树莓派将不会允许我们创建密钥。
接下来,输入:
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/etc/openvpn/easy-rsa
在这句命令中,"cp"代表"复制","r"代表递归。这说明我们让电脑执行:复制这个目录以及此目录下的所有文件结构及文件。
在/2.0和/etc中间的空格表示我们将第一个目录地址的文件(一个实例文件)拷贝至第二个目录地址,就是你让OpenVPN寻找密钥的地址。
cd /etc/openvpn/easy-rsa
5) 接下来,我们需要"cd",改变所在目录(change directory),来放置我们生成的Easy_RSA文件。一旦完成这步,我们需要打开文件/etc/openvpn/easy-rsa/vars来编辑。我们可以使用nano: nano /etc/openvpn/easy-rsa/vars,由于我们已经在此目录下了,我们可以使用简写:
Nano是Raspbian中内置的文件编辑工具,当然也有其他工具提供给屌丝们??不过我们将在此教程中只使用nano。
现在,将你的 EASY_RSA 变量改为:
export EASY_RSA="/etc/openvpn/easy-rsa"
对我的环境来说,这是在第13行。
在树莓派Raspberry Pi上安装游戏模拟器
Raspberry Pi 树莓派上安装Weston
用于Raspberry Pi 的Linux 操作系统已经可用
Raspberry Pi(树莓派)试用小记
Raspberry Pi(树莓派)的安装、配置IP及软件源等入门
为什么要修改这个变量呢?其实这是你在回答计算机的问题"你想让文件生成在哪里?"。在这个情况下,我们想要将其生成在我们保存key的同一个目录,在这里是easy-rsa文件树的顶层。
在vars文件中我们还可以做一件事,如果你对黑衣众们阅读你的邮箱这件事十分在意的话,你可以将加密方法从1024-bit改至2048-bit。在vars文件中,它明显的指出,"偏执狂请将此改为2048!"。
但是因为这个方法大大增长了生成密钥的时间,我们不会在这个教程中使用它。保持下面这个样子:
export KEY_SIZE=1024
按下Control+X来保存修改并退出nano。
更多详情见请继续阅读下一页的精彩内容:
相关资讯 & & &
& (06月14日)
& (01月22日)
& (06月14日)
& (02月02日)
& (12/31/:47)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款

我要回帖

更多关于 1024什么意思 的文章

 

随机推荐