写在前面
最近有朋友问我如何快速找到一些编程问题的解决方案, 当然也包括搜索一些网络资源(如书籍等), 感觉自己用Google
也有一段时间了, 可以好好总结一下然后回答这个问题了.
搜索引擎的话我现在肯定是只用Google
的, 当然一些情况下我也会用bing
(毕竟广告还是要少一些), 百度的话估计只用来找一些文库资源了(下载PPT模板), 除此之外好像没什么能用到百度的地方..
关于一些专业知识, 除了看课本, Wikipedia
也是不错的选择, 虽然中文页面相对匮乏, 但是其内容的高质量和准确性以及精美的插图还是让人赞不绝口.
编程方面的问题, 主要还是通过Stack Overflow
来查, 虽然有时候遇到的问题都是有10多年历史的老问题, 但是也不乏很多热心的开发者给出自己的见解和方案, 并且你遇到的99.99%
的问题在这上面都有人遇到过, 只是环境/平台等会有所出入而已. 除此之外, GitHub
的issue
也是一个不错的选择, 通过issue
能看到很多热门开源项目中别人遇到的问题, 以及开发者给出的解决方法, 适合一些活跃的开源项目.
资源方面, 其实还是术业有专攻, 因为Google
对版权很重视(谷歌图书!?), 想在上面搜盗版其实并不容易, 还是通过一些其他专用网站来搜索要好点.
下面从选择搜索引擎/关键词搜索/常用资源查找等几个方面具体讲一下. 并且给出一些镜像替代网站, 希望能对大家有所帮助.
选择搜索引擎
这里给出两种, 分为中文和英文搜索, 一般来说编程问题还是通过英文搜索要准确很多, 但是前提是你要知道这些问题的正确英文表达, 建议还是通过Wikipedia
先了解一下英文名词的表达, 然后再搜索会得到更贴切的回答.
中文
中文的话其实Bing和google都可, 内容以及准确性上, 只要你关键词到位了, 加上一些搜索技巧(后面说), 就能快速找到你要的内容了. (最好别看百度百科, 有的会有问题, 然后讨论区提了之后都没人管理, 建议看Wikipedia)
但是用Google可能会找到很多爬虫网站, 这里的爬虫网站指的是通过爬取别人文章构成的网站, 我的文章就有很多被爬取了…
不管怎么说, 只要你用中文搜索编程问题, 无外乎这么几种网站:
- CSDN
- 博客园
- 知乎
- 简书
- 个人GitHub站点
- 51CTO
- 华为云,腾讯云,等一众搬运网站…
而且里面的内容也是天下文章一大抄
, 质量很高的内容有但是较少. 当然, 这些网站对于我这样的编程新手还是很友好的, 因为去RTFM(Read the F**k ManPage)实在是让人难受, 而一篇简短的博客却能快速得到你想要的答案, (主要还是因为知识没有成体系地学下去, 不过话又说回来, 谁能记住那么多奇奇怪怪的命令? 不都是找文档吗)
英文
搜索引擎当然首推Google, 或者用duckduckgo也可(据说隐私保护比较好), 前提是有插件或者别的一些方法, 国内其实是有镜像站的, 这里列出几个:(可能会有挂掉的, 可以从网上查找最新网址)
- Google Public DNS;
- Google diversified search information - g.vovososo.com;
- Google (dhobi.win);
- Google (googe.fun);
只不过搜索到的部分内容无法点击访问, 例如维基官网, 下面也给出几个维基的镜像站:
搜索技巧
以下内容建议大家上手尝试一下, 还是很好玩的!
这里参考了谷歌官方support页面1, 博客2, 文章3.
特殊符号
一些特殊符号在Google搜索中十分重要, 因为其具有的特殊含义可能导致搜索结果并不是你想要的, 特别是编程语言中的一些符号(尤其是weird Shell)
- $\bigstar$搜索完全匹配的结果:
"<内容>"
双引号(英文标点)括起来的内容是搜索结果必须包含的, 如"最高的建筑"
. - $\bigstar$从搜索结果中排除特定字词: 在要排除的字词前加上
-
。例如:中国美食 -麻辣
. - 搜索社交媒体: 在字词前加上
@
可用于搜索社交媒体。例如:@twitter
。 - 搜索特定价格: 在表示价格的数字前加上
$
。例如:相机$400
。 - 搜索
#
标签: 在字词前加上#
。例如:#怀旧星期四
。 - 同义词搜索: 在关键词前面加上
~
, 例如:浙江 ~学院
. - $\bigstar$通配符搜索: 用
*
表示任意字符, 例如:鸡飞*跳
, 就会得到鸡飞狗跳
.
特殊关键词
注意含有冒号的项, 在冒号两边均没有空格, 如果加上空格则指定的搜索模式无效.
- 在某个数字范围内执行搜索: 在两个数字之间加上
..
。例如:相机$50..100
。 - $\bigstar$组合搜索: 在各个搜索查询字词之间加上
OR
。例如:马拉松 OR 比赛
。 - 搜索特定网站: 在网站或网站域名前加上
site:
。例如:site:youtube.com
或site:.gov
。 - $\bigstar$搜索相关网站: 在已知网址前加上
related:
。例如:related:github.com
, 将列出 Stack Overflow - Where Developers Learn, Share, & Build … https://stackoverflow.com (google.com)等网站. - 查看网站的 Google 缓存版本: 在网址前加上
cache:
, 例如cache:math.jlu.edu.cn
可以直接跳转到吉大数院官网的缓存界面, 用于找到网站更新前的信息, 当然有的网站Google不会做快照或者快照较新, 此时可以通过Internet Archive: Wayback Machine完成. - 搜索网站链接中包含的指定关键字:
inurl:
, 例如inurl:zorchp
可以搜到我的CSDN主页. - $\bigstar$搜索网站正文中包含的指定关键字:
intext:
, 例如intext:zorchp
可以搜到我的博客, 当然也有爬虫爬到的… - 搜索网站标题中包含的指定关键字:
intitle:
, 例如intitle:zorchp
可以搜索到我的博客和其他一些内容. - $\bigstar\bigstar$搜索指定的文档类型:
filetype:
, 例如filetype:pdf C++并发编程实战
可以搜索电子书/论文等资源,filetype:docx 开题报告模板
可以搜索文档等.
搜索关键词
主要有几个情况:
- 编程遇到的bug;
- 软件安装的问题;
- 专业知识;(维基)
对于遇到的程序bug, 可以遵循下面的格式来搜索:(_代表空格, 括号中内容可选)
(平台)_语言_error名称_具体内容_(其他,如系统版本/语言版本/报错语句等)
例如Python报错IndentationError: unexpected indent
, 就可以在google中输入:
Python IndentationError: unexpected indent
然后看排前几的Stack Overflow回答(或者其他小众网站给出的解决方案)就能解决你的问题了, 但是, 有时候也会出现一些比较复杂的情况, 比如C++模板编译出现的链式报错, 这样的错误一般来说可以先找到最先报错的内容, 进行搜索, 然后结合这些回答分析一下有哪些导致报错的原因. (遇到了就很头疼, 需要不断积攒经验)
有一些问题可能找不到合适的答案, 比如我前几天遇到的关于$\rm C\TeX$的一个问题, 就没有解答, 但是可以通过精简报错信息来搜索, 例如:
CTEx Could not open OpenType/TrueType/dfont font file simsun.ttc
这时候其实是因为一些不重要的信息影响了搜索结果, 可以改成这样:
ctex simsum opentype font
顺着这个思路就能找到你想要的内容了. (大多数情况下)
另外, 也需要删掉语言中自带的一些符号, 比如双引号, 不然结果会很少.
资源搜索
综合资源
还是建议网盘搜索, 这里给出一些:(之前很多都收费了)
电子书
以Google为例, 要搜索文档或电子书(一般是开源的), 可以通过指定文件类型来完成, 上面有提到过, 通过filetype:pdf
的方式, 其他方法我之前写过, 可以看看我之前的文章. 下面是两个比较新的可以用的.
其他的之后想到了再补充, 感觉这篇文章内容也不少了, 大家可以多动手实践一下, 善用搜索, 互联网遍地都是宝.
ref
-
[How to use search like a pro: 10 tips and tricks for Google and beyond Google The Guardian](https://www.theguardian.com/technology/2016/jan/15/how-to-use-search-like-a-pro-10-tips-and-tricks-for-google-and-beyond); -
Google Advanced Search - Google Tools - Library Home at Fox Valley Technical College (fvtc.edu); ↩