php 怎么使用通配符,你给初学编程者的建议有哪些?
十多年的编程生涯,有一些自己的理解,和大家分享一下:
认清这个行业如果你学习编程,是想以后从事编程工作的话,你要清楚的认识到:
编程只是一个很普通的职业,就跟建筑行业盖房子一样,有房地产开发商,也有设计房子的建筑工程师,而更多的是底层动手盖房子的。
编程也一样,如果只会别人让你干啥你就干啥,那么敲代码和搬砖的性质差不多。
还有大家都认为程序员的工资很高,和其他的行业一样,高薪只属于部分人,而很多程序员的工资都是被平均的。
在这个金字塔形的行业等级分布里,只有不断的往上爬,才能获得更高的回报。
如果你下决心选择这个行业,请继续往下看,当然如果你只是把编程当成兴趣爱好,当然也可以往后看看。
一些建议打好基础,有很多课程,感觉学起来没有什么用,比如计算机原理、数据结构等,看起来很编程没有什么关系,但是计算机学习是分层的,这些都是最下面的基础课程,也相当于修炼的“内功”。
选择一门编程语言之后,要不断地写,不断地练。总看书,是写不出代码的;总看视频,也是写不出代码的。
笔记很重要,要不断完善自己的代码仓库。
英文你可以不会听、不会说,但是你必须会看英文文档,这个不要怕,有个高中英文基础足矣,多看看就熟练了,每天坚持看半个小时,有一个月就差不多了。
眼光不要只局限于身边的同事,技术不要只局限于公司的项目。
有些事情必须不断的练习,比如盲打(这个不担心你们,基本每个人都在网上聊天的时候学会了盲打)、熟悉IDE快捷键等等。
业务能力很重要,业务能力很重要,业务能力很重要;我当时就吃了这个亏啊。
当你技术能力达到一定程度的时候,可以多开开主流开源框架的源码。
不要一门心思只搞编程,该吃吃该睡睡,多锻炼身体,该谈恋爱就谈恋爱。
希望我的回答能够帮助到你!
最良心的软件可以良心到什么程度?
良心软件,这个东西那可是多了去了。从现在的使用场景来说可以分为两大类:手机和pc。
一、PC电脑端。
1、Chrome浏览器
哇,简直是程序员的最爱。不仅页面简单清爽设计合理,同时还有总多的插件可以安装。速度快,响应快,兼容性好,当然运行时占内存也很大,但是作为浏览器里的霸主它已经没有很多值得挑剔的啦。(账号同步这个问题可能需要自己解决一下)
2、everything
文件查找工具。比win自带的检索功能不知道快了多少倍。当你找不到你想要的文件时,打开everything,输入关键字你就能看到你想要的结果,就是这么简单。so easy。还支持通配符哦。
3、ccleaner
轻量型计算机文件清理工具,可以用于清除Windows系统下的各种垃圾。而且该软件体积小运行快,无需安装。相交于某些清理软件简直就是神级应用。
二、手机方面
之前小编在别的回答里面说了一些,很不错的手机APP,在这里跟大家简单的罗列一下:
1、Snapseed
2、good lock(三星专属)
3、一个木函
4、酷安
5、QQ同步助手
6、图虫
……
以上推荐都是基于小编个人的日常使用,都是特别不错的软件。你有什么推荐可以在下方留言哦。
跨域的实现方式有哪些?
一、什么是跨域?1.什么是同源策略及其限制内容?同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSRF等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。同源策略限制内容有:
Cookie、LocalStorage、IndexedDB 等存储性内容DOM 节点AJAX 请求发送后,结果被浏览器拦截了但是有三个标签是允许跨域加载资源:<img src=XXX><link href=XXX><script src=XXX>2.常见跨域场景当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域。不同域之间相互请求资源,就算作“跨域”。特别说明两点:第一:如果是协议和端口造成的跨域问题“前台”是无能为力的。第二:在跨域问题上,仅仅是通过“URL的首部”来识别而不会根据域名对应的IP地址是否相同来判断。“URL的首部”可以理解为“协议, 域名和端口必须匹配”。这里你或许有个疑问:请求跨域了,那么请求到底发出去没有?跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。你可能会疑问明明通过表单的方式可以发起跨域请求,为什么 Ajax 就不会?因为归根结底,跨域是为了阻止用户读取到另一个域名下的内容,Ajax 可以获取响应,浏览器认为这不安全,所以拦截了响应。但是表单并不会获取新的内容,所以可以发起跨域请求。同时也说明了跨域并不能完全阻止 CSRF,因为请求毕竟是发出去了。二、跨域解决方案1.jsonp1) JSONP原理利用 <script> 标签没有跨域限制的漏洞,网页可以得到从其他来源动态产生的 JSON 数据。JSONP请求一定需要对方的服务器做支持才可以。2) JSONP和AJAX对比JSONP和AJAX相同,都是客户端向服务器端发送请求,从服务器端获取数据的方式。但AJAX属于同源策略,JSONP属于非同源策略(跨域请求)3) JSONP优缺点JSONP优点是简单兼容性好,可用于解决主流浏览器的跨域数据访问的问题。缺点是仅支持get方法具有局限性,不安全可能会遭受XSS攻击。4) JSONP的实现流程声明一个回调函数,其函数名(如show)当做参数值,要传递给跨域请求数据的服务器,函数形参为要获取目标数据(服务器返回的data)。创建一个<script>标签,把那个跨域的API数据接口地址,赋值给script的src,还要在这个地址中向服务器传递该函数名(可以通过问号传参:?callback=show)。服务器接收到请求后,需要进行特殊的处理:把传递进来的函数名和它需要给你的数据拼接成一个字符串,例如:传递进去的函数名是show,它准备好的数据是show('我不爱你')。最后服务器把准备的数据通过HTTP协议返回给客户端,客户端再调用执行之前声明的回调函数(show),对返回的数据进行操作。在开发中可能会遇到多个 JSONP 请求的回调函数名是相同的,这时候就需要自己封装一个 JSONP函数。上面这段代码相当于向http://localhost:3000/say?wd=Iloveyou&callback=show这个地址请求数据,然后后台返回show('我不爱你'),最后会运行show()这个函数,打印出'我不爱你'5) jQuery的jsonp形式JSONP都是GET和异步请求的,不存在其他的请求方式和同步请求,且jQuery默认就会给JSONP的请求清除缓存。2.corsCORS 需要浏览器和后端同时支持。IE 8 和 9 需要通过 XDomainRequest 来实现。浏览器会自动进行 CORS 通信,实现 CORS 通信的关键是后端。只要后端实现了 CORS,就实现了跨域。服务端设置Access-Control-Allow-Origin 就可以开启 CORS。 该属性表示哪些域名可以访问资源,如果设置通配符则表示所有网站都可以访问资源。虽然设置 CORS 和前端没什么关系,但是通过这种方式解决跨域问题的话,会在发送请求时出现两种情况,分别为简单请求和复杂请求。1) 简单请求只要同时满足以下两大条件,就属于简单请求条件1:使用下列方法之一:GETHEADPOST条件2:Content-Type 的值仅限于下列三者之一:text/plainmultipart/form-dataapplication/x-www-form-urlencoded请求中的任意 XMLHttpRequestUpload 对象均没有注册任何事件监听器; XMLHttpRequestUpload 对象可以使用 XMLHttpRequest.upload 属性访问。2) 复杂请求不符合以上条件的请求就肯定是复杂请求了。复杂请求的CORS请求,会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求,该请求是 option 方法的,通过该请求来知道服务端是否允许跨域请求。我们用PUT向后台请求时,属于复杂请求,后台需做如下配置:接下来我们看下一个完整复杂请求的例子,并且介绍下CORS请求相关的字段上述代码由http://localhost:3000/index.html向http://localhost:4000/跨域请求,正如我们上面所说的,后端是实现 CORS 通信的关键。3.postMessagepostMessage是HTML5 XMLHttpRequest Level 2中的API,且是为数不多可以跨域操作的window属性之一,它可用于解决以下方面的问题:页面和其打开的新窗口的数据传递多窗口之间消息传递页面与嵌套的iframe消息传递上面三个场景的跨域数据传递postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档、多窗口、跨域消息传递。otherWindow.postMessage(message, targetOrigin, [transfer]);message: 将要发送到其他 window的数据。targetOrigin:通过窗口的origin属性来指定哪些窗口能接收到消息事件,其值可以是字符串"*"(表示无限制)或者一个URI。在发送消息的时候,如果目标窗口的协议、主机地址或端口这三者的任意一项不匹配targetOrigin提供的值,那么消息就不会被发送;只有三者完全匹配,消息才会被发送。transfer(可选):是一串和message 同时传递的 Transferable 对象. 这些对象的所有权将被转移给消息的接收方,而发送一方将不再保有所有权。接下来我们看个例子:http://localhost:3000/a.html页面向http://localhost:4000/b.html传递“我爱你”,然后后者传回"我不爱你"。4.websocketWebsocket是HTML5的一个持久化的协议,它实现了浏览器与服务器的全双工通信,同时也是跨域的一种解决方案。WebSocket和HTTP都是应用层协议,都基于 TCP 协议。但是 WebSocket 是一种双向通信协议,在建立连接之后,WebSocket 的 server 与 client 都能主动向对方发送或接收数据。同时,WebSocket 在建立连接时需要借助 HTTP 协议,连接建立好了之后 client 与 server 之间的双向通信就与 HTTP 无关了。原生WebSocket API使用起来不太方便,我们使用Socket.io,它很好地封装了webSocket接口,提供了更简单、灵活的接口,也对不支持webSocket的浏览器提供了向下兼容。我们先来看个例子:本地文件socket.html向localhost:3000发生数据和接受数据5. Node中间件代理(两次跨域)实现原理:同源策略是浏览器需要遵循的标准,而如果是服务器向服务器请求就无需遵循同源策略。代理服务器,需要做以下几个步骤:接受客户端请求 。将请求 转发给服务器。拿到服务器 响应 数据。将 响应 转发给客户端。我们先来看个例子:本地文件index.html文件,通过代理服务器http://localhost:3000向目标服务器http://localhost:4000请求数据。上述代码经过两次跨域,值得注意的是浏览器向代理服务器发送请求,也遵循同源策略,最后在index.html文件打印出{"title":"fontend","password":"123456"}6.nginx反向代理实现原理类似于Node中间件代理,需要你搭建一个中转nginx服务器,用于转发请求。使用nginx反向代理实现跨域,是最简单的跨域方式。只需要修改nginx的配置即可解决跨域问题,支持所有浏览器,支持session,不需要修改任何代码,并且不会影响服务器性能。实现思路:通过nginx配置一个代理服务器(域名与domain1相同,端口不同)做跳板机,反向代理访问domain2接口,并且可以顺便修改cookie中domain信息,方便当前域cookie写入,实现跨域登录。先下载nginx,然后将nginx目录下的nginx.conf修改如下:最后通过命令行nginx -s reload启动nginx7.window.name + iframewindow.name属性的独特之处:name值在不同的页面(甚至不同域名)加载后依旧存在,并且可以支持非常长的 name 值(2MB)。其中a.html和b.html是同域的,都是http://localhost:3000;而c.html是http://localhost:4000b.html为中间代理页,与a.html同域,内容为空。通过iframe的src属性由外域转向本地域,跨域数据即由iframe的window.name从外域传递到本地域。这个就巧妙地绕过了浏览器的跨域访问限制,但同时它又是安全操作。8.location.hash + iframe实现原理: a.html欲与c.html跨域相互通信,通过中间页b.html来实现。 三个页面,不同域之间利用iframe的location.hash传值,相同域之间直接js访问来通信。具体实现步骤:一开始a.html给c.html传一个hash值,然后c.html收到hash值后,再把hash值传递给b.html,最后b.html将结果放到a.html的hash值中。同样的,a.html和b.html是同域的,都是http://localhost:3000;而c.html是http://localhost:40009.document.domain + iframe该方式只能用于二级域名相同的情况下,比如 a.test.com 和 b.test.com 适用于该方式。只需要给页面添加 document.domain ='test.com' 表示二级域名都相同就可以实现跨域。实现原理:两个页面都通过js强制设置document.domain为基础主域,就实现了同域。我们看个例子:页面a.zf1.cn:3000/a.html获取页面b.zf1.cn:3000/b.html中a的值三、总结CORS支持所有类型的HTTP请求,是跨域HTTP请求的根本解决方案JSONP只支持GET请求,JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。不管是Node中间件代理还是nginx反向代理,主要是通过同源策略对服务器不加限制。日常工作中,用得比较多的跨域方案是cors和nginx反向代理怎么用搜索引擎在一个指定的网站中搜索一个词?
在使用谷歌搜索引擎的时候,可以使用:
site:限定搜索结果在某个域名或目录下,比如:网站优化 site:googlenb.com即为:搜索googlenb.com网站中包含网站优化的相关页面。 如果我们不加关键词通常返回的是这个网站收录的总条数,我们也可以搜索某个网站某个栏目收录了多少条,比如:site:googlenb.com/info/ 返回的即为改URL目录下的所有内容,目录限定仅支持谷歌。
当然谷歌还有其他的高级用法:
双引号 :把关键词放到双引号内,搜索引擎默认采用模糊匹配方式,会将词组进行拆分以及同义词分析,此时加上双引号可以强制进行完全匹配搜索。即:双引号内的内容必须完整并连续的出现。注意双引号必须为英文状态下输入。减号: 排除-号后面的内容,即我们在搜索某写内容时候,排除掉页面中内容中包含某些关键词的页面,比如搜索:网站优化服务 -郑州 ,即为:搜索提供网站优化服务的相关信息,但是又不想看郑州相关的。* 星号:可以充当通配符,意为任何字词或短语,比如搜索:北京*网络信息技术有限公司 ,即为搜索:北京某某网络信息技术有限公司,搜寻北京不同网络公司有限公司的名称。
() 小括号:将关键词包裹在括号内,一般与下方的OR、| 、AND 等一起使用,表示一个分组单元,控制搜索的执行方式。
OR 以及 | : 搜索两个或者多个关键词时候,出现某一个即可,比如搜索: (北京|上海) 网站优化工程师 ,即为:搜索北京或者上海招聘网站优化工程师的相关信息。
AND :与OR的区别在于 AND 相邻的关键词必须都出现在页面中。
filetype :将搜索结果限制为特定的文件类型。例如,PDF,DOCX,TXT,PPT等。比如: SEO filetype:pdf ,即为:搜索PDF格式的SEO相关文档。
intitle 以及 allintitle : 都表示在网页标题Title内搜索目标关键词,不同的是allintitle 后跟的所有关键词必须都出现在网页标题中,比如:intitle:后台登录 ,即为:搜索标题为后台登录的网址。
inurl 以及allinurl : 都表示在网页url地址内搜索目标关键词,不同的是allinurl 后跟的所有关键词必须都出现在网页URL中,比如:inurl:/admin/login.php ,即为:搜索后台登录的URL地址。
intext 以及allintext : 都表示在网页内容中搜索目标关键词,不同的是allintext 后跟的所有关键词必须都出现在网页内容中, 比如:intext:后台登录,即为:搜索网站内容中包含后台登录的页面。
AROUND(X) :邻近搜索。两个搜索关键词中间最多相邻X个词语,比如:郑州 AROUND(4) 网站优化 , 即为:搜索开头为郑州,中间有0到4个任意词语,后面紧跟网站优化的相关页面。
#..# :搜索一个数字区间,比如:互联网大会 2013..2018 ,即为:搜索互联网大会 2013年到2018年的相关信息。
inanchor 及 allinanchor :查找指定锚文本链接的页面。 比如:inanchor:点击这里 ,返回的结果其实为指向这些页面的锚文本是“点击这里” 。 allinanchor为后面跟地关键词完全出现在锚文本中。
这个robots是什么意思?
当一个搜索蜘蛛访问网站时,首先访问根目录WWW下是否存在robots.txt,若存在,搜索机器人就会按照该文件中的内容来确定访问的范围。
01-认识robots.txt(1)robots.txt是搜索引擎访问网站时查看的第一个文件,决定着蜘蛛能或不能访问。
(2)若存在robots.txt文件,蜘蛛会按照该文件来确定访问的范围;若不存在,所有的搜索蜘蛛将能够访问网站上所有页面。
(3)robots.txt必须放在一个站点的根目录下,且文件名必须全部小写(真实的服务器就使用ftp上传)。
(4)建议就算允许所抓取所有内容,也要建一个空的robots.txt文件。
(5)可将sitemap网站地图放置robots.txt文件(地图写法:http://abc.com/sitemap.html)。
02-robots.txt的写法(1)允许所有搜索引擎访问网站所有内容
User-agent: *
Disallow:
(2)禁止所有搜索引擎访问网站所有内容
User-agent: *
Disallow: /
(3)只允许百度搜索引擎抓取
User-agent: Baiduspider
Disallow: /
(4)如果我们禁止除百度外的一切搜索引擎索引
User-agent: Baiduspider
Disallow:
robots.txt文件其实就是告诉蜘蛛哪些页面可以抓取,哪些页面不能访问。