工具网站

原文链接:https://blog.csdn.net/qq_43901693/article/details/100606828

搞学习
知乎:www.zhihu.com
简答题:http://www.jiandati.com/
网易公开课:https://open.163.com/ted/
网易云课堂:https://study.163.com/
中国大学MOOC:www.icourse163.org
网易云课堂:study.163.com
哔哩哔哩弹幕网:www.bilibili.com
我要自学网:www.51zxw.net
学堂在线:www.xuetangx.com
爱课程:www.icourses.cn
猫咪论文:https://lunwen.im/
iData(论文搜索):www.cn-ki.net
文泉考试:https://www.wqkaoshi.com
码农之家(计算机电子书下载):www.xz577.com
鸠摩搜书:www.jiumodiary.com
云海电子图书馆:www.pdfbook.cn
周读(书籍搜索):ireadweek.com
知轩藏书:http://www.zxcs.me/
脚本之家电子书下载:https://www.jb51.net/books/
搜书VIP-电子书搜索:http://www.soshuvip.com/all.html
书格(在线古籍图书馆):https://new.shuge.org/
术语在线:http://www.termonline.cn/
冷知识 / 黑科技
上班摸鱼必备(假装电脑系统升级):http://fakeupdate.net/
创意光线绘画:http://weavesilk.com/
星系观察:https://stellarium-web.org/
煎蛋:http://jandan.net/
渣男-说话的艺术:https://lovelive.tools/
全历史:https://www.allhistory.com/
iData:https://www.cn-ki.net/
caj云阅读:http://cajviewer.cnki.net/cajcloud/
资源搜索
DogeDoge搜索引擎:www.dogedoge.com
秘迹搜索:https://mijisou.com/
小白盘:https://www.xiaobaipan.com/
云盘精灵(资源搜索):www.yunpanjingling.com
虫部落(资源搜索):www.chongbuluo.com
如风搜(资源搜索):http://www.rufengso.net/
爱扒:https://www.zyboe.com/
小工具
香当网(年终总结,个人简历,事迹材料,租赁合同,演讲稿):https://www.xiangdang.net/
二维码生成:https://cli.im/
搜狗翻译:fanyi.sogou.com
熵数(图表制作,数据可视化):https://dydata.io/appv2/#/pages/index/home
拷贝兔:https://cp.anyknew.com/
图片无限变放大:http://bigjpg.com/zh
幕布(在线大纲笔记工具):mubu.com
奶牛快传(在线传输文件利器):cowtransfer.com
在线转换器(在线转换器转换任何测量单位):https://zh.justcnw.com/
调查问卷制作:https://www.wenjuan.com/
果核剥壳(软件下载):https://www.ghpym.com/
软件下载:https://www.unyoo.com/
MSDN我告诉你(windows10系统镜像下载):https://msdn.itellyou.cn/
导航页(工具集)
现实君工具箱(综合型在线工具集成网站):http://tool.uixsj.cn/
蓝调网站:http://lcoc.top/
偷渡鱼:https://touduyu.com/
牛导航:http://www.ziliao6.com/
小呆导航:https://www.webjike.com/index.html
简法主页:http://www.jianfast.com/
KIM主页:https://kim.plopco.com/
聚BT:https://jubt.net/cn/index.html
精准云工具合集:https://jingzhunyun.com/
兔2工具合集:https://www.tool2.cn/
爱资料工具(在线实用工具集合):www.toolnb.com
工具导航:https://hao.logosc.cn/
看视频
动漫视频网:http://www.zzzfun.com/
94神马电影网:http://www.9rmb.com/
NO视频官网:http://www.novipnoad.com/
蓝光画质电影:http://www.languang.co/
在线看剧:http://dy.27234.cn/
大数据导航:http://hao.199it.com/
多功能图片网站:https://www.logosc.cn/so/
牛牛TV:http://www.ziliao6.com/tv/
VideoFk解析视频:http://www.videofk.com/
蓝调网站:http://lcoc.top/vip2.3/
学设计
免费音频素材:https://icons8.cn/music
新CG儿(视频素材模板,无水印+免费下载):https://www.newcger.com/
小图标下载:https://www.easyicon.net/
第一字体转换器:http://www.diyiziti.com/
doyoudosh(平面设计):www.doyoudo.com
企业宣传视频在线制作:https://duomu.tv/
MAKE海报设计官网:http://maka.im/
一键海报神器:https://www.logosc.cn/photo/?utm_source=hao.logosc.cn&utm_medium=referral
字由(字体设计):http://www.hellofont.cn/
查字体网站:https://fonts.safe.360.cn/
爱给网(免费素材下载的网站,包括音效、配乐,3D、视频、游戏,平面、教程):http://www.aigei.com/
在线视频剪辑:https://bilibili.clipchamp.com/editor
搞文档
即书(在线制作PPT):https://www.keysuper.com/
PDF处理:https://smallpdf.com/cn
PDF处理:https://www.ilovepdf.com/zh-cn
PDF处理: https://www.pdfpai.com/
PDF处理:https://www.hipdf.cn/
腾讯文档(在线协作编辑和管理文档):docs.qq.com
ProcessOn(在线协作制作结构图):www.processon.com
iLovePDF(在线转换PDF利器):www.ilovepdf.com
PPT在线制作:https://www.woodo.cn/
PDF24工具(pdf处理工具):https://tools.pdf24.org/en
IMGBOT(在线图片处理):www.imgbot.ai
福昕云编辑(在线编辑PDF):edit.foxitcloud.cn
TinyPNG(在线压缩图片):tinypng.com
UZER.ME(在线使用各种大应用,在线使用CAD,MATLAB,Office三件套
):uzer.me
优品PPT(模板下载):http://www.ypppt.com/
第一PPT(模板下载):http://www.1ppt.com/xiazai/
三顿PPT导航:sandunppt.com
找图片
电脑壁纸:http://lcoc.top/bizhi/
https://unsplash.com/
https://pixabay.com/
https://www.pexels.com/
https://visualhunt.com/
https://www.ssyer.com/
彼岸图网:http://pic.netbian.com/
极像素(超高清大图):https://www.sigoo.com/
免费版权图片搜索:https://www.logosc.cn/so/

实用工具/学习网站

一、PDF搜索网站推荐
对于大部分程序员来说,电子书的需求量还是很大的,介绍几个不错的免费搜电子书的网站吧。

1、鸠摩搜书

这个网址可以用来搜索一些pdf的书,有了这个网址,就不用百度全网搜索pdf的书了。虽然可能没有像百度全网搜索那么全,但大部分也都有了。注意每种搜索结果的来源,有些来源是百度云盘,有些是微盘等,可以根据需要获取。

网址:https://www.jiumodiary.com/

2、脚本之家

脚本之家资源还是挺多的,电子书其中之一,不过,也是有挺多电子书的,并且提供多种下载方式,如果你鸠摩搜书搜索不到,或许可以考虑在脚本之家搜索,或者脚本之家搜索不到就到鸠摩搜书搜索。

网址:https://www.jb51.net/books/

二、实用工具
1、冰点文库

有时候我们经常会搜索一些文档,例如百度文档,但是却下载不了,需要登录和积分,这个时候就可以利用这个工具把文档转化成 pdf 和 txt 两种文件了。冰点文库可以无需积分也无需登陆就能自由下载百度文库、豆丁网、丁香网、电器网、MBAlib智库、爱问文档、畅享、IT168、HP009、MAX、Book118、道客巴巴、金字塔医学、大桔灯等文库文档,支持多任务同时下载及断点续传。

只要你把相应的链接复制粘贴到冰点文库相应的地方就可以了。

文末会提供压缩包,你只需要把压缩包解压,然后直接打开 .exe 文件就可以了,无需安装。

2、文件搜索工具:Everything

这个软件主要是用来搜索本地文件的,假如你忘了某个文件放在哪里了,就可以用这个软件直接搜索,这个软件比系统自带的文件搜索不知快上了n倍,基本秒找到,而且可以根据很多条件来搜索,例如限制搜索文件的大小、拓展名、指定路径、正则表达式,等等,用一下你就知道了。

三、在线教学视频网站
自学的过程中,我敢保证 99.9% 的人都有通过视频来学习,那么常用的在线视频都有哪些呢?下面我列举几个我经常用的软件/网站。

1、哔哩哔哩

说时候,哔哩哔哩为中国的教育贡献了一份力量了,好多视频,在哔哩哔哩都可以直接找到,我也经常在这里找视频看

我一般是找播放量高,且评价不错的看,而且哔哩哔哩支持下载到本地看。

网址:https://www.bilibili.com/

2、慕课网/网易云课堂

慕课网/网易云课堂有很多付费视频,但是也有很多免费的,但是我想说的是,免费的一般很多都是入门的,也不会讲的特别深,也不会很长,所以呢,如果你想快速入门某种知识,那么慕课网/网易云课堂是个不错的选择。不过这里需要说明的是,慕课网/网易云课堂的视频体验肯定是比哔哩哔哩舒服的,毕竟哔哩哔哩是用户自己上次上去的,很多都是一些机构的付费视频。

慕课网:https://www.imooc.com/
网易云课堂:https://study.163.com/

3、中国大学MOOC

如果你是非科班的,想要系统着补某们大学的课程,那么中国大学MOOC是个不错的选择,这里有各种各样的课程,有些老师还是讲的挺好了,和大学课程老师的教学差不多,并且会给你布置作业。我编译原理就是在这里学到,嘻嘻。一般也是通过别人的评价来选老师…

网址:https://www.icourse163.org/

不过这三四个,我都是用手机 app 看滴,大家也可以下载 app,看你自己喜欢勒。

四、在线非视频学习网站
比起视频,我个人要学习某个技能了,也是挺喜欢看文字版的,这个看情况吧,我自己也买了很多付费专栏,很多书籍,不过如果的想要入门学习某门技能,那么我也推荐一两个网站给你们,不推荐多,因为多了反而难选择

菜鸟教程

说时候,这个应该是我强烈推荐的入门学习教程吧,很多还不用的安装运行环境,网站就给你提供运行环境了,真心不错,不过,只适合入门。例如

网址:https://www.runoob.com/

五、程序员面试/求职网站
对于面试、求职,做题、看别人的面试经验是不可少的,下面推荐两个用的最多的网站,并且这两个也够了。

1、牛客网

秋招期间,牛客网应该是我逛的最多的网站了,在这里,你可以刷各种各样的题,基本都有,算法题、计算机基础、前端、各大公司真题、每周算法比赛、各种面经、各种内推、说实话,应届生必备!

网址:https://www.nowcoder.com/

2、领扣(中国版leetcode)

其实牛客网的很多题,在 leetcode 都可以找到,如果你要提升算法能力,那么还是在 leetcode 刷比较系统一点,而且现在 leetcode 也提供的更多的功能了,牛客网的话,算法题只是其中小小的一部分而已,所以呢,如果你时间比较多,可以在 leetcode 刷,但是时间少,又很多算法题没看过,那么可以在牛客网把剑指offer的题刷一下

不仅有算法题,还有数据库,shell,多线程等哦,不过有些需要 vip 才能做。

网址:https://leetcode-cn.com/

六、软件下载
作为程序员,一路走来,需要下载很多开发工具,并且这些工具,基本都是国外的,有些还要付费,不像我们的手机软件那样,随随便便下载,所以呢,今天就给大家推荐一个不错的网站

1、我爱分享

这个网站其实还是挺不错的,各种办公软件都有,但是开发软件不是特别全,我个人也在疯狂收集各种开发软件打算把他们整理出来,然后供读者们下载,不过这个网站,还是有挺多不错的软件的,而且都是提供破解的方法

网址:http://www.zhanshaoyi.com/rjxz.html

2、精品MAC应用分享

几个月钱电脑换成了 mac 之后,各种软件都需要重新安装,然后发下一个很不错的网站,不过这个网站的软件都是 mac 端的,所以你的电脑如果是 mac,那么这个网站还是挺不错的,不过,那些还没有工作的同学,工作之后,你们也是大概率使用 mac 滴。

网址:https://xclient.info/

总结
今天就先分享这么多了,对于那些想要自学的,上面介绍的还是挺不错的,自己选一个心怡的,然后就好好学习吧,我百度云已经收集了几十个开发工具了,等我收集了 100+ 个,我就分享出来,让大家可以很方便在去下载各种常用的开放工具。
————————————————
版权声明:本文为CSDN博主「帅地」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_37907797/article/details/102781027

算法题刷题网站汇总

1、leetcode

英文网址:https://leetcode.com/
中文网址:https://leetcode-cn.com/

2、hihoCoder

网址:https://hihocoder.com

3、牛客网

网址:https://www.nowcoder.com/

4、计蒜客

网址:https://www.jisuanke.com/

5、HDU

网址:http://acm.hdu.edu.cn/

6、POJ

网址:http://poj.org/

7、SDUT

网址:https://acm.sdut.edu.cn/

8、其它 OJ
最后附带一些其它同样优秀的 OJ 平台:

国内:

ZJU(浙大): https://zoj.pintia.cn/home
USTC(中科大):http://acm.ustc.edu.cn/ustcoj/
FZU(福大):http://acm.fzu.edu.cn/
HIT(哈工大):http://acm.hit.edu.cn/

国外:

URAL:http://acm.timus.ru/
SPOJ:https://www.spoj.com/

9、Codeforces

网址:https://codeforces.com/

10、Topcoder

网址:https://www.topcoder.com/

vim下编辑readonly文件解决方案

当用vim编辑了一个readonly文件,在退出保存时会出现如下图信息:

在强制退出时,有时会生成.swp文件,反正处理起来相当麻烦。下面介绍一种好方法:
1.在退出时输入如下指令:

:w !sudo tee %

2.看到如图信息后回车:

请按ENTER或其他命令继续

3.看到如图信息后,输入字母L:

请按ENTER或其他命令继续
w12:警告:文件“Makefile” 已变动,并且在vim中的缓冲区也已变动进一步说明请见“:help w12”
确定([o]),加载文件((L)):

4.然后就回到了编辑界面,这是输入如图信息:

:q

5.回车后就退出了。这个时候我们新编辑的内容就被保存下来。

6.建议大家还是不用直接编辑readonly文件了,本方法只是一个补救方法,希望对大家有用。

elasticsearch使用方法(一)

创建索引

curl -XPUT 'http://localhost:9200/blogs' -d '
{
     "settings": {
         "number_of_shards": 3,
         "number_of_replicas": 1
     }, 
     "mappings": {
    } 
} 

添加数据(一)

curl -XPUT 'http://localhost:9200/blogs/_doc/{_id}' -d '
{
     "title":"This is a article about Docker",
     "category":"Docker Info", 
}

修改数据(一)

curl -XPOST ' localhost:9200/blogs/user/1/_update' -d '
{
     "doc":{
         "category":"Docker anyone"
     }
 }

修改数据(二)

curl 'http://127.0.0.1:9200/blogs/_doc/1/_update' -d '
 {
     "script":{
         "lang":"painless",
         "inline":"ctx._source.hit += 10"
     }
 }'

修改数据(三)

curl 'http://127.0.0.1:9200/blogs/_doc/1/_update' -d '
 {
     "script":{
         "lang":"painless",
         "inline":"ctx._source.hits = params.hits",
         "params":{
             "hits":100
         }
     }
 }'

docker常用命令详解

容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
容器rootfs命令 — docker [commit|cp|diff]
镜像仓库 — docker [login|pull|push|search]
本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
其他命令 — docker [info|version]

更多内容请查看:https://blog.csdn.net/permike/article/details/51879578

Docker安装elasticsearch

本文转自:https://www.cnblogs.com/powerbear/p/11298135.html

一、打开docker官方仓库,搜索elasticsearch以查看需要下载的版本,拉取镜像的时候,官方推荐要指定版本号,目前最新7.3.0

https://hub.docker.com

搜索elasticsearch后,点击tags查看版本更新列表,目前我下载7.3.0的,格式 :镜像名称:tag

二 拉取elasticsearch镜像,目前官方最新版本7.3.0

 由于墙的原因,下载比较慢,需要修改docker的镜像为阿里云的镜像仓库,详情请搜索

拉取镜像的时候,官方推荐要指定版本号,如果没有指定,默认是:  镜像名:latest  下载最新版本,这是不推荐的方式,要避免这样使用

以下开始从阿里云拉取镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.0

三 使用镜像创建容器,启动elasticsearch服务

分两种方式,开发者模式和生产模式,开发者不需要配置太多,直接一行命令搞定,生产模式需要更多的配置

1.开发者模式

1.1创建网络

如果需要安装kibana等其他,需要创建一个网络,名字任意取,让他们在同一个网络,使得es和kibana通信

docker network create esnet

1.2 创建并启动elasticsearch容器

1.2.1查看镜像

docker images

1.2.2创建运行

docker run --name es  -p 9200:9200 -p 9300:9300  --network esnet -e "discovery.type=single-node" bdaab402b220

–name 名称                                                  给容器起个名字

-p 外部访问端口:容器端口                            9200是供htpp访问端口,9300是供tcp访问的端口,如果不做端口映射,浏览器就不能访问elasticsearch的服务

–network 网络名                                          用于多个服务通信与隔离,例如用kibana连接elasticsearch就需要他们在同一个网络下

bdaab402b220                                            通过docker images命令查看到需要创建的容器id,此处用镜像名也可以


tips:run怎么使用?那么长怎么记,大概记一下,万能命令是

docker run --help

1.2.3 查看正在运行的容器,以确认elasticsearch容器是否创建成功

docker ps

可以看到status状态是up,说明已经在docker中成功运行了elasticseach

打开浏览器访问http://192.168.61.128:9200/  可以看到如下结果

ip地址换成你的linux主机的ip

PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结

本文实例总结了PHP实现二维数组(或多维数组)转换成一维数组的常见方法。分享给大家供大家参考,具体如下:

假设有下面一个二维数组:

$user = array(
  '0' => array('id' => 100, 'username' => 'a1'),
  '1' => array('id' => 101, 'username' => 'a2'),
  '2' => array('id' => 102, 'username' => 'a3'),
  '3' => array('id' => 103, 'username' => 'a4'),
  '4' => array('id' => 104, 'username' => 'a5'),
);

现在要转换成一维数组,有两种情况:

一种是将指定列转换成一维数组,这在另一篇文章有总结:PHP提取多维数组指定一列的方法总结

现在我们重点讲第二种情况,就是把所有的值都转换成一维数组,而且键值相同不会被覆盖,转换后的一维数组是这样的:

$result = array(100, 'a1', 101, 'a2', 102, 'a3', 103, 'a4', 104, 'a5');

主要有下面几个方法。

1 array_reduce函数法

用array_reduce()函数是较为快捷的方法:?

$result = array_reduce($user, function ($result, $value) {
  return array_merge($result, array_values($value));
}, array())

因为array_merge函数会把相同字符串键名的数组覆盖合并,所以必须先用array_value取出值后再合并。

如果第二维是数字键名,如:

$user = array(
  'a' => array(100, 'a1'),
  'b' => array(101, 'a2'),
  'c' => array(102, 'a3'),
  'd' => array(103, 'a4'),
  'e' => array(104, 'a5'),
);

那么直接这样就可以了:

$result = array_reduce($user, 'array_merge', array())

2 array_walk_recursive函数法

用array_walk_recursive()函数就非常灵活,可以把任意维度的数组转换成一维数组。

$result = [];
array_walk_recursive($user, function($value) use (&$result) {
  array_push($result, $value);
});

例如,下面这个多维数组:

$user4 = array(
  'a' => array(100, 'a1'),
  'b' => array(101, 'a2'),
  'c' => array(
    'd' => array(102, 'a3'),
    'e' => array(103, 'a4'),
  ),
);

用这个方法后就变成:

$result = array(100, 'a1', 101, 'a2', 102, 'a3', 103, 'a4');

3 array_map函数法

用array_map和array_reduce函数的方法类似,如下:

$result = [];
array_map(function ($value) use (&$result) {
  $result = array_merge($result, array_values($value));
}, $user);

只是需要多声明一个空的$result数组。

另外,也可以用array_walk的方法,和foreach循环的方法,原理和上面一样。

Docker Toolbox 加速

在 Windows、Mac 系统上使用 Docker Toolbox 的话,推荐做法是在创建 Linux 虚拟机的时候,就将加速器的地址配置进去。

docker-machine create --engine-registry-mirror=<your accelerate address> -d virtualbox default
docker-machine env default
eval "$(docker-machine env default)"
docker info     

国内较快的镜像原地址 :

#Docker 官方中国区
https://registry.docker-cn.com
#网易
http://hub-mirror.c.163.com
#ustc
https://docker.mirrors.ustc.edu.cn

方法一:

在拉取镜像时候指定镜像源地址

您可以使用以下命令直接从该镜像加速地址进行拉取
$ docker pull registry.docker-cn.com/myname/myrepo:mytag
例如:
$ docker pull registry.docker-cn.com/library/ubuntu:16.04

方法二:

使用 –registry-mirror 配置 Docker 守护进程 
您可以配置 Docker 守护进程默认使用 Docker 官方镜像加速。这样您可以默认通过官方镜像加速拉取镜像,而无需在每次拉取时指定 registry.docker-cn.com。

您可以在 Docker 守护进程启动时传入 --registry-mirror 参数:
$ docker --registry-mirror=https://registry.docker-cn.com daemon

有效时间为当前的docker进程,重启docker服务后需要重新设置

方法三:

为了永久性保留更改,您可以修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

curl之采集QQ空间留言

主要流程解析

  • 首先,打开浏览器登录QQ空间并访问留言列表
  • 由于QQ空间的链接是https,curl方式请求https链接需要突破https认证,这就需要下载cacert.pem,下面请看cacert.pem的部署步骤
1、将下载的`cacert.pem`文件放至php安装目录下,比如:"D:\wamp\bin\php\php5.5.12";
2、在php.ini文件末尾追加以下配置

curl.cainfo="D:/wamp/bin/php/php5.5.12/cacert.pem"
openssl.cafile="D:/wamp/bin/php/php5.5.12/cacert.pem"
3、重启wamp服务器
4、上面步骤操作完毕,即可用curl方式访问QQ空间数据了

注意事项

  • 1、一定要设置时区为中国时区(避免cookie不同时区而自动过期)
  • 2、在PHP 的命令行模式下执行(避免超时问题)

扩展

通过QQ空间留言的采集,可以扩展下,比如采集空间日志、说说、图片,再比如,可以尝试刷留言(最好定时执行刷留言)。

完整代码示例

<?php

date_default_timezone_set('PRC');
//内存无限制
ini_set('limit_memory', -1);
//代码执行不超时
set_time_limit(0);

//爬取QQ空间留言url
$baseUrl = "https://user.qzone.qq.com/proxy/domain/m.qzone.qq.com/cgi-bin/new/get_msgb?";

////查找留言下一页规律
//第一页
//uin=928692509&hostUin=928692509&start=0&s=0.4852990803750179&format=jsonp&num=10&inCharset=utf-8&outCharset=utf-8&g_tk=1467544760&qzonetoken=e1fa4e2c8b873a4bf33b86e6f4838942ed7a538c10b5b8cb52e2bf4a959d253f90691c5ed8b045ada7&g_tk=1467544760
//第二页
//uin=928692509&hostUin=928692509&start=10&s=0.4852990803750179&format=jsonp&num=10&inCharset=utf-8&outCharset=utf-8&g_tk=1467544760&qzonetoken=e1fa4e2c8b873a4bf33b86e6f4838942ed7a538c10b5b8cb52e2bf4a959d253f90691c5ed8b045ada7&g_tk=1467544760

//爬取QQ空间留言(自己或QQ好友)
$hostUinArr = [
        '1270612806'=>'飞得更高', '928692509'=>'Burning', '2075425089'=>'怒放的生命'
    ];

//遍历采集QQ好友空间留言
foreach($hostUinArr as $hostUin=>$qqName) {
    downloadHostUinMessage($baseUrl, $hostUin, $qqName);
}

//以好友名称为目录,将下载下来的留言单独存放
function downloadHostUinMessage($baseUrl, $hostUin, $qqName){
    $qqName = iconv('UTF-8', 'GBK', $qqName);
    $dir = './qqMessage/'.$qqName;
    
    if(!is_dir($dir)) {
        mkdir($dir, 0777, true);
    }
    
    $totalPages = 1;
    
    for($i=0; $i<$totalPages; $i++){
        $start = $i*10;
        $params = "uin=928692509&hostUin={$hostUin}&start={$start}&s=0.4852990803750179&format=jsonp&num=10&inCharset=utf-8&outCharset=utf-8&g_tk=1467544760&qzonetoken=e1fa4e2c8b873a4bf33b86e6f4838942ed7a538c10b5b8cb52e2bf4a959d253f90691c5ed8b045ada7&g_tk=1467544760";
        
        $url = $baseUrl . $params;
        $iContent = qqCommentCurl($url);
        
        $iContent = str_replace('_Callback(', '', $iContent);
        $iContent = trim(substr($iContent, 0, -2));
        //计算总页数,保证留言采集完
        if($totalPages == 1) {
            $iContentObj = json_decode($iContent);
            if(isset($iContentObj->code) && $iContentObj->code == 0) {
                $dataObj = $iContentObj->data;
                $totalPages = ceil($dataObj->total/10);
            } else {
                //结束
                return false;
            }
        }
        
        file_put_contents($dir.'/'.$hostUin.'_'.$i.'.txt', $iContent);
    }
}

/**
 * @author RenZhicai
 * QQ空间留言请求curl
 * @param type $url
 * @return type
 */
function qqCommentCurl($url='')
{
    $ch = curl_init();
    //需要获取的 URL 地址,也可以在curl_init() 初始化会话的时候。
    curl_setopt($ch, CURLOPT_URL, $url);
    //TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    if(preg_match('/http:\/\//', $url)) {
        //FALSE 禁止 cURL 验证对等证书(peer's certificate)。要验证的交换证书可以在 CURLOPT_CAINFO 选项中设置,或在 CURLOPT_CAPATH中设置证书目录。
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //这个是重点。
    }
    
    //启用时会将头文件的信息作为数据流输出。
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    //TRUE 时将会根据服务器返回 HTTP 头中的 "Location: " 重定向。(注意:这是递归的,"Location: " 发送几次就重定向几次,除非设置了 CURLOPT_MAXREDIRS,限制最大重定向次数。)。
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 这样能够让cURL支持页面链接跳转

    //header头信息
    $headerArr = [
        "accept-language: zh-CN,zh;q=0.8",
        "user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
    ];
    //设置 HTTP 头字段的数组。格式: array('Content-type: text/plain', 'Content-length: 100')
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArr);
    
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    
    //设置新的cookie,忽略之前会话时存的cookie
    curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
    //包含 cookie 数据的文件名
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'daoyancookiefile');
    //连接结束后,比如,调用 curl_close 后,保存 cookie 信息的文件。
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'daoyancookiefile');

    //登录后的cookie信息  
    $cookieStr = "cookie: pgv_pvi=9803880448; tvfe_boss_uuid=7aa8e6046d68c6a2; RK=qBcndcbOTD; eas_sid=K1s5q0V8H8N5B4c1j9e2L0D8W3; pgv_pvid=8596381360; o_cookie=928692509; __Q_w_s_hat_seed=1; __Q_w_s__QZN_TodoMsgCnt=1; ptcz=dab5485d33e04f8612e84673ce0609bdcae13f792156f92dccf5a9784988a16a; uin=o0928692509; skey=@CgmH4oeQ8; pt2gguin=o0928692509; p_uin=o0928692509; pt4_token=Lub2nMWbTLfbx0TYxH*uyDBOU4tEBXvKvv0JNQRQuGo_; p_skey=MxE5cMJA2xHQ8BXgpbVqSL3hgeoEfcq-quN1kvcUrcQ_; pgv_info=ssid=s7150557986; Loading=Yes; qz_screen=1366x768; qqmusic_uin=; qqmusic_key=; qqmusic_fromtag=; qzmusicplayer=qzone_player_928692509_1509368391144; QZ_FE_WEBP_SUPPORT=1; cpu_performance_v8=6";
    //设定 HTTP 请求中"Cookie: "部分的内容。多个 cookie 用分号分隔,分号后带一个空格(例如, "fruit=apple; colour=red")。
    curl_setopt($ch, CURLOPT_COOKIE, $cookieStr);

    $output = curl_exec($ch);
    if($output === false){
                //记录curl请求失败的详情
        $errorInfo = "cURL Error: ".curl_error($ch);
        file_put_contents('curl_error_'.date('YmdHis').'.txt', $errorInfo);
    }
    
    curl_close($ch);

    return $output;
}

采集效果一览