首页
Search
1
解决 docker run 报错 oci runtime error
49,335 阅读
2
WebStorm2025最新激活码
27,568 阅读
3
互点群、互助群、微信互助群
22,731 阅读
4
常用正则表达式
21,540 阅读
5
罗技鼠标logic g102驱动程序lghub_installer百度云下载windows LIGHTSYNC
19,320 阅读
自习室
CODER
课程
SEO
学习视频
手册资料
呆萌
工具软件
运维
DBA
互通有无
资源
微信群
激活工具
搞钱日记
养生记
包罗万象
登录
Search
标签搜索
DeepSeek
学习指北
Prompt
提示词
Loong
累计撰写
179
篇文章
累计收到
0
条评论
首页
栏目
自习室
CODER
课程
SEO
学习视频
手册资料
呆萌
工具软件
运维
DBA
互通有无
资源
微信群
激活工具
搞钱日记
养生记
包罗万象
页面
搜索到
36
篇与
的结果
2019-08-25
PHP数组与数据结构
数组是PHP中一个灰常、灰常、灰常重要的一个数据类型。因为他涉及到的知识点太多,太杂,我们的讲解是在数组类型部份告诉了大家一个大概,然后专门用一个章节来跟大家讲解。学习数组,大家主要学习两部分的知识:数组的定义,定义中的一些注意的坑数组的函数使用和(默写)又是默写级别的数组在之前我们让大家记住两个观点:数组可以存入多个不同类型的数据,是一个复合数据类型。数组的英文是array,学一下最简单的数组声明。那我们来进行简单的回顾:<?php $shu = array(1 , 1.5 , true ,'天王盖地虎,小鸡炖蘑菇'); echo '<pre>'; var_dump($shu); echo '</pre>'; ?>在上例中,我们发现我们存入了:整型浮点布尔字符串注:上例中echo pre这个标签的主要目的是为原样输出,格式展示的更好看,更清晰。我们用var_dump()打印出来显示看一下效果:我们仔细观察一下上面的这张图,你会发现以下几个特点:array(size = 4) 说明里面有4个元素0 => int 1 我们知道int是整型的意思,1是一个整型的数值。那前面的0,1,2,3和=>代表什么意思呢?最新前的0,1,2,3代表的是值的读取标识号,我们称之为下标或者键(英文:key)=> 是一个符号标准叫法叫作:键值对应符。因此,以后再看到 0=> int 1 可以这样来说。 下标访问符0对应整型的1。我们还称数组里面的键值对为元素,元素就是键值对的组合。哦耶! 数组好像还挺好学的,全是一些规律哟。我们通过上例,其实你一不小心的就完成了数组其中的一种声明方式:索引数组的声明哟。所谓索引数组:就是下标全为整型的数组。索引数组的下标必须要从0开始吗?答:这个问题其实不然,索引数组并不一定要从0开始。那如何能够不从0开始呢?答:需要用到大家在上面学的一小块知识哟。就是键值对应符。我们来动手写写。<?php $kele = array('只有不断努力才能博得未来',10 => 'NoAlike', 'PHP学院' , '去PHP学院去PHP', 19 => '凤姐和芙蓉我都爱' , '杨幂臭脚我最爱'); //打印显示$kele echo '<pre>'; var_dump($kele); echo '</pre>'; ?>上例中,我们一不小心就写了一个索引数组。不过索引数组的下标不是从0 开始的,而是从10开始的。不过上面的例子中,我们觉得写的不优美,我们可以将代码写的更加优美一些,格式更加清晰一些。<?php $kele = array( '只有不断努力才能博得未来', 10 => 'NoAlike', 'PHP学院' , '去PHP学院去PHP', 19 => '凤姐和芙蓉我都爱' , '杨幂臭脚我最爱' ); //打印显示$kele echo '<pre>'; var_dump($kele); echo '</pre>'; ?>这样是不是看得更清楚,一行对应一个数组的值。我们执行一下代码,看一下效果:通过上面的效果,我们来总结规律:索引数组若不强制声明他的下标,他的下标是从0开始的。(我们的第一个数组的值:只有不断努力才能博得未来。这个值的下标为0)。如果我指定过下标他的下标就为我指定的值。如下标为10和下标为19的,都是我指定过的值。若某个值(如NoAlike),强制指定了下标(下标为10)。在它后面加上的值(PHP学院),不指定下标的话。他们的下标增长规律为最大值+1。例如:凤姐和芙蓉我都爱的下标为19.我在后面加上了:杨幂臭脚我最爱。它的下标自动增长为了11。不知不觉,你已经学会了索引数组的创建,神奇吧?真为你感到高兴!###向索引数组中增加元素学习完了索引数组的创建,接下来我们学习索引数组的增加、修改和删除。<?php $minren = array( '杨幂', '王珞丹', '刘亦菲', '黄圣依' ); //如何向这$minren这个数组中增加元素呢 //猜猜范冰冰的下标是多少? $minren[] = '范冰冰'; $minren[100] = '范爷'; //它的下标又为几呢? $minren[] = '李晨'; ?>总结:向索引数组中增加元素用: 数组变量名[]、数组变量名[键值]这两种方式来增加元素键值的增长规则与之前的规则一样。都是最大值加1的原则。###向索引数组中删除元素我们还拿刚刚的数组来举例:<?php $minren = array( '杨幂', '王珞丹', '刘亦菲', '黄圣依', '范冰冰' ); //假设我不喜欢:黄圣依,如何将黄圣依给删掉掉呢? //如果删除掉后范冰冰的下标为多少呢? //如果在后面再追加一个元素,会填掉:“黄圣依”留下来的空吗? unset($minren[3]); $minren[] = '金星'; echo '<pre>'; var_dump($minren); echo '</pre>'; ?>看看效果:使用unset删除变量的方式来删除数组里面的值。删除了中间的值,并不会让后面的下标向前自动移动。而是原来的值为多少就为多少删除掉其中的某个值,新加入的值不会替换掉原来的位置,依然遵循最大值加1的原则。修改值我们学习最简单的创造、增加和删除。我相信大家一定能够推理出如何修改值了。<?php $minren = array( '杨幂', '王珞丹', '刘亦菲', '黄圣依', '范冰冰' ); $minren[5] = '范爷'; $minren[2] = '亦菲,不要架给韩国人好吗?'; echo '<pre>'; var_dump($minren); echo '</pre>'; ?>执行上面的代码,输出看看结果。1.用变量名[键] = 新值。就把数组中的值定的值修改了。索引数组的其他声明方式通过上面的例子,我们学习到了数组的声明。我们来学一下数组的其他声明方式。####一、直接用之前未声明的变量,用变量名后面接中括号的方式声明数组。<?php //直接写一个变量后面加上中括号,声明变量 $qi[] = '可口可乐'; $qi[10] ='百事'; echo '<pre>'; var_dump($qi); echo '</pre>'; ?>####二、每次用array()写的太麻烦了,还可以不用写array哟,更简单。<?php $minren = [ '杨幂', '王珞丹', 100 => '刘亦菲', '黄圣依', '范冰冰' ]; echo '<pre>'; var_dump($minren); echo '</pre>'; ?>上面是另外两种PHP学院的写法。当然,你自己喜欢使用哪一种就使用哪一种来声明。###关联数组索引数组适当的变一下形就出现了关联数组。只要数组里面有一个为字符串的数组,就为关联数组。通过上例中,我们发现数组的下标只能够为字符串,当然不能够满足我的需求。假设我想声明一个下标为帅对应李文凯这个值。肯定不能满足我的需求。那我们来声明一下关联数组。跟索引数组的声明方式完成一样。不过不同的是,必须要指定字符串的下标和必须要使用键值对应符。<?php //声明一下关联数组 $rela = array( '帅' => '李文凯', '很帅' => '黄晓明', '灰常灰常帅' => '宁泽涛', '有男人味的大叔' => '吴秀波', ); //再来玩玩简洁声明 $drink = [ '美' => '凤姐', '很美' => '芙蓉姐姐', 'verymei' => '杨幂', '心中滴女神呀' => '华妃', 100 => '孙俪', '娘娘', ]; // 输出 $rela echo '<pre>'; var_dump($rela); echo '</pre>'; // 输出$drink echo '<pre>'; var_dump($drink); echo '</pre>'; ?>我们来实验一下看看最终的结果是什么样的:我们通过实验知道:声明关联数组是 键名 => 值在关联数组可以有索引数组的元素关联数组中的索引数组的元素后再声明了无下标的元素,依然是最大值+1原则。(观察上图中的值为孙俪、娘娘的两个元素)。###关联数组的增、删、改<?php $drink = [ '美' => '凤姐', '很美' => '芙蓉姐姐', 'verymei' => '杨幂', '心中滴女神呀' => '华妃', 100 => '孙俪', '娘娘', ]; //追加方式与索引数组是一样的 $drink['kx'] = '康熙'; //输出试试 echo '<pre>'; var_dump($drink); echo '</pre>'; //删除一个试试 unset($drink['verymei']); echo '<pre>'; var_dump($drink); echo '</pre>'; //将芙蓉姐姐 改成:心里美才是真的美 $drink['很美'] = '心里美才是真的美'; echo '<pre>'; var_dump($drink); echo '</pre>'; ?>你动手做做刚刚的实验,你会发现操作方式与索引的操作方式一样。只不过下标在读取的时候读取的下标PHP学院了。####其他的关联数组声明方式<?php $drink['nf'] = '农夫山泉'; $cocacola = '可口可乐'; //当然可以是变量哟 $drink['kl'] = $cocacola; $data = array( 'kl' => $cocacola, ); ?>通过上例我们发现,在关联数组当中也是可以不用array,直接在变量后面接括号。括号里面插入字符串下标,一样也声明成功。后面插入变量的例子,只不过把字符串变成了变量,当然没有问题。###数组当中插入数组数组可以插入整型、浮点、字符串,那么数组当中可不可以插入数组呢?当然可以。在学习数组的时候,我们定义了这样一组名词。一维数组 数组里面没有其他数组,只有单纯的一些变量或者值。二维数组 数组里面插入了单层的一个数组,或者多个数组三维数组 在数组(A)里面插入了一个数组(B),在B数组里面又插入了一层级的数组(C),这种我们就称为三维数组超过三维的,统统都叫多维数组。注:索引数组和关联数组当中都可以再插入其他数组,让数组变为多维的。我们来声明一个一维数组,只有一个维度。索引、关联均可,这个操作大家都很熟。<?php //一维的索引数组 $data = [1 , 2 , 3 , 4 , 10 => 250]; //一维的关联数组 $rela = [ 'beijing' => '北京', 'shanghai' => '上海', 'tj' => '天津', ]; ?> echo '<pre>'; var_dump($rela); echo '</pre>'; echo '<pre>'; var_dump($data); echo '</pre>';一维数组大家很熟悉,也不难,就是声明数组嘛。二维也不难,只是在数组里面再插一个或多个数组。二维学好了,多维就学好了。<?php $person = array( 'office' => '办公室', //注意:插入第一个数组哟 'family' => array( '爸爸', '妈妈', 'yeye' => '爷爷', 'nn' => '奶奶', ), //注意:又插入了一个平级的数组 'jiaotong' => array( '自行车', '摩托车', '汽车', '飞机', ), ); echo '<pre>'; var_dump($person); echo '</pre>'; ?>我们执行一下看看效果:我们发现变量person 是一个数组类型。有三个元素(size=3)。第一个元素为 office 对应的是一个字符串“办公室”,第二个元素为family 里面是一个数组,这个数组又有4个元素,值分别为:爸爸、妈妈、爷爷、奶奶。第三个元素为jiaotong,里面也为一个数组有4个元素,值分别为:自行车、摩托车、汽车、飞机。好了,二维数组好声明,只要把格式写对了,确定是在一个数组里面再插入一个数组就好。那如何访问:爷爷和爸爸这两个值呢?<?php $person = [ 'office' => '办公室', //注意:插入第一个数组哟 'family' => [ '爸爸', '妈妈', 'yeye' => '爷爷', 'nn' => '奶奶', ], //注意:又插入了一个平级的数组 'jiaotong' => [ '自行车', '摩托车', '汽车', '飞机', ], ]; //访问“爸爸”这什值 echo $person['family'][0]; echo '<br />-----华丽丽的分割线------<br />'; //访问“爷爷”这什值 echo $person['family']['yeye']; echo '<br />-----华丽丽的分割线------<br />'; //访问“汽车”这什值 echo $person['jiaotong'][2]; ?>我们看看结果如下:上例大家会发现,访问二维数组不过是按照之前的下标读取方式依次向下读取即可。先写上变量,中括号写上family这个下标,再写上要访问元素的下标。三维数组我们说了概念,那我们直接上手实验看看效果:<?php $area = array( 'china' => array( '上海', '湖北', '天津', '北京' => array( 'hd' => '海淀', '朝阳', '房山', 'cp' => '昌平', ), '广东' => array( '深圳', '广州', '佛山', 'dg' => '东莞', ), ), 'usa' => array( '华盛顿', '旧金山', '纽约' => array( '曼哈顿区', '皇后区', '布鲁克林区', ), ), ); echo '<pre>'; var_dump($area); echo '</pre>'; ?>我们执行一下看看效果:说明:在变量$area下有二个数组,一个为china,一个为usa。在china这个数组里面插入了上海、湖北、天津,又插入了北京和广东。而北京和广东又是一个数组。在北京和广东这两个数组里面分别有不同的元素。在这usa 这个数组里面插美国的华盛顿、旧金山和纽约。而纽约下面又是一个数组,说明了纽约下面的几个区。所以说,三维数组就是在数组里面再插入一个数组(A),在A数组里面插入一个数组。我们接下来看看,如何来读取里面的值。<?php $area = array( 'china' => array( '上海', '湖北', '天津', '北京' => array( 'hd' => '海淀', '朝阳', '房山', 'cp' => '昌平', ), '广东' => array( '深圳', '广州', '佛山', 'dg' => '东莞', ), ), 'usa' => array( '华盛顿', '旧金山', '纽约' => array( '曼哈顿区', '皇后区', '布鲁克林区', ), ), ); //读取华盛顿 echo $area['usa']['0']; //读取:布鲁克林 echo $area['usa']['纽约'][2]; //读取:昌平 echo $area['china']['北京']['cp']; //修改cp下标的值改为:西城区 $area['china']['北京']['cp'] = '西城区'; //输出看看原来昌平的值是否发生了变化 echo $area['china']['北京']['cp']; ?>通过上面我们发现数组学习起来不难。学习多维数组的难点:注意格式,将每个维度的换行、缩进弄整齐。就不容易出错了。【切记】数组元素间的分割符为逗号,在数组中插入数组的时候,不要在结尾处写成了分号(;)下图是错误的载图展示:
2019年08月25日
3,838 阅读
0 评论
0 点赞
2019-08-12
大数据量搜索解决方案-ThinkPHP5+Elasticsearch搜索引擎
Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎。当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。实时分析的分布式搜索引擎。可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。你往 ES 里写的数据,实际上都写到磁盘文件里去了,查询的时候,操作系统会将磁盘文件里的数据自动缓存到 Filesystem Cache 里面去。整个过程,如下图所示:ES 的搜索引擎严重依赖于底层的 Filesystem Cache,你如果给 Filesystem Cache 更多的内存,尽量让内存可以容纳所有的 IDX Segment File 索引数据文件,那么你搜索的时候就基本都是走内存的,性能会非常高。提升性能的小技巧:仅在 ES 中就存少量的数据,无关检索的数据使用HBase等数据库存储,让Filesystem Cache可以容纳更多的数据量。数据预热,经常会有人访问的数据,每隔一段时间,就提前访问一下,让数据进入 Filesystem Cache 里面去。1、安装Elastaic官网下载地址:https://www.elastic.co/downloads/elasticsearch# 解压到非root目录,运行时使用非root账号且必须安装java环境yum install javawget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gztar zxvf elasticsearch-6.2.3.tar.gzuseradd elasticsearchpassword elasticsearchchown elasticsearch:elasticsearch elasticsearch-6.2.3cd elasticsearch-6.2.3nohup ./bin/elasticsearch & #设置成常驻进程php扩展库引入 composer.json{ "require": { "elasticsearch/elasticsearch": "~6.0" } }Client使用示例:prepare($sql); $query->execute(); $lists = $query->fetchAll(); print_r($lists); } catch (Exception $e) { echo $e->getMessage(); } $client = ClientBuilder::create()->build(); foreach ($lists as $row) { $params = [ 'body' => [ 'id' => $row['id'], 'title' => $row['title'], 'content' => $row['content'] ], 'id' => 'article_' . $row['id'], 'index' => 'articles_index', 'type' => 'articles_type' ]; $client->index($params); } } /* * 功能:获取索引 * return */ public function getIndex(){ $client = ClientBuilder::create()->build(); $params = [ 'index' => 'articles_index', 'type' => 'articles_type', 'id' => 'article_1' ]; $res = $client->get($params); print_r($res); } /* * 功能:从索引中删除文档 * return */ public function delIndex(){ $client = ClientBuilder::create()->build(); $params = [ 'index' => 'articles_index', 'type' => 'articles_type', 'id' => 'article_1' ]; $res = $client->delete($params); print_r($res); } /* * 功能:设置索引 * return */ public function createIndex(){ $client = ClientBuilder::create()->build(); $params['index'] = 'articles_index'; $params['body']['settings']['number_of_shards'] = 2; $params['body']['settings']['number_of_replicas'] = 0; $client->indices()->create($params); } /* * 功能:查询条件 * return */ public function search(){ $client = ClientBuilder::create()->build(); $params = [ 'index' => 'articles_index', 'type' => 'articles_type', ]; //多字段匹配 // $params['body']['query']['multi_match']['query'] = '我的宝马发动机多少'; // $params['body']['query']['multi_match']['fields'] = ["title","content"]; // $params['body']['query']['multi_match']['type'] ="most_fields"; // most_fields 多字段匹配度更高 best_fields 完全匹配占比更高 // // //单个字段匹配 // $params['body']['query']['match']['content'] = '我的宝马多少马力'; //完全匹配 // $params['body']['query']['match_phrase']['content'] = '我的宝马多少马力'; //联合搜索 must,should,must_not $params['body']['query']["bool"]['must']["match"]['content'] = "宝马"; $params['body']['query']["bool"]['must_not']["match"]['title'] = "宝马"; $res = $client->search($params); print_r($res); } }
2019年08月12日
14,219 阅读
0 评论
9,924 点赞
2019-07-17
阿里巴巴开源镜像提供的 packagist 镜像服务 阿里云 Composer 全量镜像
全局配置(推荐)所有项目都会使用该镜像地址:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/取消配置:composer config -g --unset repos.packagist项目配置仅修改当前工程配置,仅当前工程可使用该镜像地址:composer config repo.packagist composer https://mirrors.aliyun.com/composer/取消配置:composer config --unset repos.packagist调试composer 命令增加 -vvv 可输出详细的信息,命令如下:composer -vvv require alibabacloud/sdk
2019年07月17日
5,019 阅读
0 评论
10 点赞
2019-07-10
Windows下搭建虚拟机和Laravel开发环境配置VirtualBox+Vagrant+Homestead
方法一:前提条件:Windows 用户,你可能需要启用硬件虚拟化(VT-x)。这通常需要通过 BIOS 来启用它。如果你在一个 UEFI 系统上使用的是 Hyper-V,你需要关闭 Hyper-V 才能启用 VT-x下载安装最新版: VirtualBox 和 Vagrant1·首先将Homestead文件夹放入到当前用户目录之下2·然后 使用git命令工具3·cd 切换到Homestead目录下4·将virtualbox.box离线文件放入指定目录上5·执行 vagrant box add laravel/homestead 加上离线文件的路径virtualbox.box进行安装6·初始化:bash init.sh7·安装好之后打开Homestead文件夹打开Homestead.yaml文件进行修改配置:ip: “192.168.10.10”memory: 2048cpus: 3provider: virtualboxauthorize: ~/.ssh/id_rsa.pubkeys:– ~/.ssh/id_rsafolders:– map: F:/htdocs/Laravelto: /home/vagrant/Code/Laravelsites:– map: laravel.appto: /home/vagrant/Code/Laravel/publicdatabases:– homestead8·保存之后,加入hosts文件配置:192.168.10.10 laravel.app9·生成密钥:ssh-keygen10·vagrant up开启虚拟机11·vagrant ssh 进入到虚拟机系统上关闭虚拟机:vagrant halt查看vagrant常用命令:vagrant 方法二:1·你首先要确定你有个好的 terminal [ 终端:cmder 或 Git 的git bash ] . 注意windows的cmd不能用(个人推荐用Git bash)2·下载和安装 [ virtualbox ] 和 [ vagrant ]前者为系统装载用的,后者为系统控制用的3·如果你要使用 homestead 就必须要有个virtualbox.box的文件 ,官方 Laravel 下载这个文件的这个命令为vagrant box add laravel/homestead 但是因为中国的对外国网络资源的限制,你要下载这个文件可能会需要不少的时间,因此 , 在这我们拥有两个选择的余地选择一 : 当你使用官方下载命令时,你的终端会显示这个文件的源地址复制https://atlas.hashicorp.com/laravel/boxes/homestead/,然后按 ctrl +c 退出,然后用的喜欢的下载软件下载,最好是用最新版的,因为会有各种问题.选择二 : phphub上的 virtualbox.box好了 , 现在我假设你已经拥有这个文件,现在来用我们的方法添加 virtualbox.box . 打开你的ide(代码编译器) ,一般为 Sublime Text 和 Atom ,为何要提编译器呢 , 因为下面的步骤可能会需要其中一个的编译器 , 创建一个名为homestead.json的文件 , 输入以下内容{“name”: “laravel/homestead”,“versions”:[{“version”: “1.0.1”,“providers”: [{“name”: “virtualbox”,“url”: “D:/box/virtualbox.box” //你下载的virtualbox.box在电脑系统上的位置}]}]}打开的 IDE (编译器) 先不要保存,点击开始菜单或 win 快捷键 , 在搜索栏处输入你的terminal ( 终端 ) , 点击鼠标右键以管理员身份运行,一般会跳转到 : C:\Users\windows的账户名>然后回到 IDE (编译器) 保文件到C:\Users\windows的账户名这个目录下 , 并且命名为 homestead.json , 然后再回到terminal ( 终端 ) 输入一下代码 :C:\Users\windows的账户名> vagrant box add homestead.json C:\Users\windows的账户名> vagrant box add homestead.json==> box: Loading metadata for box 'homestead.json'box: URL: file://C:/Users/windows的账户名/homestead.json==> box: Adding box 'laravel/homestead' (v1.0.1) for provider: virtualboxbox: Downloading: "D:/box/virtualbox.box" //你下载的virtualbox.box在电脑上的位置box: Progress: 100% (Rate: 129M/s, Estimated time remaining: --:--:--)==> box: Successfully added box 'laravel/homestead' (v1.0.1) for 'virtualbox'!然后继续 在terminal ( 终端 ) 输入.C:\Users\windows的账户名> ssh-keygen -t rsa -C "1158624818@qq.com"说明 : 这个命令是创建 Homestead 连接秘匙 , 因为我们是在本机上运行的所以不需要密码之类的 , 一直按回车就行C:\Users\windows的账户名> ssh-keygen -t rsa -C "1158624818@qq.com"Generating public/private rsa key pair.Enter file in which to save the key (/c/Users/windows的账户名/.ssh/id_rsa):Created directory '/c/Users/windows的账户名/.ssh'.Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /c/Users/windows的账户名/.ssh/id_rsa.Your public key has been saved in /c/Users/windows的账户名/.ssh/id_rsa.pub.The key fingerprint is:SHA256:UTmPEezFQK0XUa5Km2lGnqOBgtCo5rwGGWCX8CaTN6g yenanzero@gamil.comThe key's randomart image is:+---[RSA 2048]----+| .. . o=*.o. ||..+o .= =. ||o=.= .. B .. ||oo= . .+ o. ||Eo. S o.. ||+. . . + * ||o.. . . . @ ||+. . = . ||.+. . |+----[SHA256]-----+5·现在继续 在terminal ( 终端 ) 输入.git clone https://github.com/laravel/homestead.git Homestead说明 : 这个命令是 下载 Homestead 目录,里面包含了Homestead 的配置文件C:\Users\windows的账户名> git clone https://github.com/laravel/homestead.git HomesteadCloning into 'Homestead'...remote: Counting objects: 1623, done.rRemote: Total 1623 (delta 0)eceiving objects: 99% (1, reused 0 (delt607/1623), 244a 0), pack-reuse.01 KiB | 13.00d 1623 KiB/sReceiving objects: 100% (1623/1623), 252.22 KiB | 13.00 KiB/s, done.Resolving deltas: 100% (958/958), done.Checking connectivity... done.现在让我们来看看文件是否现在成功了,在 在terminal ( 终端 ) 输入 : C:\Users\windows的账户名> lsHomestead/ //我其他文件夹就没写了,只要看到了这个文件夹你就算是把 Homestead 的配置文件下载下来了然后继续 在terminal ( 终端 ) 输入 C:\Users\windows的账户名 > cd HomesteadC:\Users\windows的账户名\Homestead >C:\Users\windows的账户名\Homestead > bash init.sh //初始化 .homestead 目录说明 : 这个bash init.sh 命令会创建一个 .homestead目录这个目录位于C:\Users\windows的账户名\ 这个目录下这个.homestead目录里有一个 Homestead.yaml 文件很多人windows启动Homestead失败都是因为这个配置文件的关系6·注意 !!!现在这个步骤很重要好了现在用 IDE(代码编译器) 打开目录地址 C:\Users\windows的账户名\ .homestead\Homestead.yaml , 你会看到如下代码|---| ip: "192.168.10.10"|memory: 2048|cpus: 1|provider: virtualbox||authorize: ~/.ssh/id_rsa.pub||keys:| - ~/.ssh/id_rsa||folders:| - map: ~/Code //这个是你的项目的地址,例如D:\随便\项目的目录 1| to: /home/vagrant/Code //这个是homestead系统的地址 2| //其实这就是windows和hometead两个系统共享一个文件夹,难懂一点的话叫||映射||sites: //__这个是你的项目| - map: homestead.app 这个是你项目要设定在你的浏览器上的地址 //需要设定C host文件| to: /home/vagrant/Code/Laravel/public //这里的Laravel其实就是D:\随便\项目的目录\Laravel||databases:| - homestead||# blackfire:|# - id: foo|# token: bar|# client-id: foo|# client-token: bar||# ports:|# - send: 50000|# to: 5000|# - send: 7777|# to: 777|# protocol: udp将以上的代码修改成以下的代码|—|ip: “192.168.10.10”|memory: 2048|cpus: 1|provider: virtualbox||authorize: ~/.ssh/id_rsa.pub||keys:| – ~/.ssh/id_rsa||folders:| – map: D:\随便\项目的目录 //当启动时会自动转换成D:/随便/项目的目录,这个是正确的| to: /home/vagrant/Code||sites: //看到这你可以看到为什么是sites,而不是site| – map: aimiliya.local 这个是你在hosts设定的网站地址| to: /home/vagrant/Code/king/public 这里的king是你设定的D:\随便\项目的目录\king|| – map: lamu.local| to: /home/vagrant/Code/lamu/public|| – map: leimu.local| to: /home/vagrant/Code/leimu/public|||databases:| – homestead||# blackfire:|# – id: foo|# token: bar|# client-id: foo|# client-token: bar||# ports:|# – send: 50000|# to: 5000|# – send: 7777|# to: 777|# protocol: udp|提醒 : IDE(代码编译器) 记得保存 .警告 : 以上代码为最基础的Homestead配置 ,你要进行开启其他功能最好阅读或参考 Laravel 和 vagrant官方文档举例 : 例如在 folders 下面填写 type:“nfs” , 这对于windows 来说是错误的 , 对于 mac 来说却是成功的 , 原因vagrant不支持对 windows 开启 nfs ,具体参考 synced-folders .7 .好了现在回到 terminal ( 终端 ) 启动吧,输入 vagrant up注意 : 在你以后重新启动Homestead .即 : vagrant up都必须在 Homestead 这个目录下启动C:\Users\windows的账户名\Homestead> vagrant upBringing machine 'default' up with 'virtualbox' provider...==> default: Checking if box 'laravel/homestead' is up to date...==> default: Clearing any previously set forwarded ports...==> default: Clearing any previously set network interfaces...==> default: Preparing network interfaces based on configuration...default: Adapter 1: natdefault: Adapter 2: hostonly==> default: Forwarding ports...default: 80 (guest) => 8000 (host) (adapter 1)default: 443 (guest) => 44300 (host) (adapter 1)default: 3306 (guest) => 33060 (host) (adapter 1)default: 5432 (guest) => 54320 (host) (adapter 1)default: 22 (guest) => 2222 (host) (adapter 1)==> default: Running 'pre-boot' VM customizations...==> default: Booting VM...==> default: Waiting for machine to boot. This may take a few minutes...default: SSH address: 127.0.0.1:2222default: SSH username: vagrantdefault: SSH auth method: private key==> default: Machine booted and ready!==> default: Checking for guest additions in VM...default: The guest additions on this VM do not match the installed version ofdefault: VirtualBox! In most cases this is fine, but in rare cases it candefault: prevent things such as shared folders from working properly. If you seedefault: shared folder errors, please make sure the guest additions within thedefault: virtual machine match the version of VirtualBox you have installed ondefault: your host and reload your VM.default:default: Guest Additions Version: 5.0.20default: VirtualBox Version: 5.1==> default: Setting hostname...==> default: Configuring and enabling network interfaces...==> default: Mounting shared folders...default: /vagrant =>C:/Users/windows的账户名/Homesteaddefault: /home/vagrant/Code => D:/随便/项目的目录 //当你没看到这条信息请返回你的Homestead.yaml设定==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`==> default: flag to force provisioning. Provisioners marked to run always will still run.好了,这算启动成功了,但是配置成功了吗?还不能确定的,输入 vagrant ssh 登入homesteadC:\Users\windows的账户名\Homestead> vagrant sshWelcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-22-generic x86_64)*Documentation: https://help.ubuntu.com/vagrant@homestead:~$ //当看到这个说明登入成功了vagrant@homestead:~$ ls //查看下一级目录 ,有Code,可以安心Codevagrant@homestead:~$ cd Codevagrant@homestead:~/Code$ ls //当看到king了,你可以彻底放心了,配置成功了king提醒 :如果你启动了 Homestead , 你发觉你的配置文件 Homestead.yaml :想要修改 , 可以的使用命令:vagrant up –provision ,此命令必须在Homestead 启动后使用,此命令作用为更新Homestead.yaml的修改8·最后要在浏览器上显示你的网页你必须设定对应的hosts .hosts文件所在在目录:C:\Windows\System32\drivers\etc\hosts 先hosts拖到桌面,然后修改成:|# Copyright (c) 1993-2009 Microsoft Corp.|#|# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.|#|# This file contains the mappings of IP addresses to host names. Each|# entry should be kept on an individual line. The IP address should|# be placed in the first column followed by the corresponding host name.|# The IP address and the host name should be separated by at least one|# space.|#|# Additionally, comments (such as these) may be inserted on individual|# lines or following the machine name denoted by a ‘#’ symbol.|#|# For example:|#|# 102.54.94.97 rhino.acme.com # source server|# 38.25.63.10 x.acme.com # x client host||# localhost name resolution is handled within DNS itself.|# 127.0.0.1 localhost|# ::1 localhost||192.168.10.10 aimiliya.local|192.168.10.10 lamu.local|192.168.10.10 leimu.local然后把刚复制到桌面而且修改好的hosts文件的拖回C:\Windows\System32\drivers\etc\hosts覆盖.注意:直接修改是不行的
2019年07月10日
4,469 阅读
0 评论
1 点赞
2019-07-10
PHP经典面试题汇总(六)
六十一·写出一个函数实现字符串翻转?方法一:strrev();方法二:$str = "abcdefg"; function show($str){ for ($i=strlen($str); $i>= 0; $i--) { $str2 .= $str{$i}; } return $str2; } echo @show($str);六十二.在hello.txt文件前面追加字符串,往前面写数据?$str = "h1\n"; $file = 'hello.txt'; $get = file_get_contents($file); file_put_contents($file,$str .=$get);六十三.判断用户ip地址是否在192.168.1.100~192.168.1.150范围内?方法一:$ip = "192.167.1.110"; $x = ip2long($ip); $ip1 = "192.168.1.100"; $min = ip2long($ip1); $ip2 = "192.168.1.150"; $max = ip2long($ip2); if($x > $max || $x < $min){ exit("ip不在范围内"); } echo "ip符合要求";方法二:$ip = "192.168.1.120"; echo $pos = strrpos($ip,'.')+1; $ipleft = substr($ip,0,$pos); $ipright = substr($ip,$pos); if($ipleft != "192.168.1."){ exit("ip不在范围内"); } if($ipright >150 || $ipright <100){ exit("ip不在范围内"); } echo "ip符合要求";六十四·请将2维数组按组 name的长度进行重新排序,按照顺序将id赋值(从1开始)?$arr = array( array('id' => 0,'name' => '323444'), array('id' => 0,"name" => 'sgegesssssg'), array('id' => 0,'name' => '这是字符串'), array('id' => 0,'name' => '101928ss323sssgee323'), array('id' => 0,'name' => 'slkgjeoge'), array('id' => 0,'name' => '32'), array('id' => 0,'name' => '1019283'), ); foreach ($arr as $val) { $long[] = strlen($val['name']); } array_multisort($long,$arr); foreach ($arr as $key => &$val) { $val['id'] = $key+1; } echo "
2019年07月10日
6,216 阅读
0 评论
3 点赞
1
...
3
4
5
...
8