Scrapy在Windows下的坑爹安装

今天要装一个Scrapy来爬点内容,因为连到VPS上去搞有点麻烦,就说本地装一个吧。加速开启,然后很easy的pip3 install scrapy,本来等它装好,结果一看powershell里,居然报红字了。 刚开始还以为是不是这东西需要管理员权限,开了个管理员窗口还是装不上,仔细看看错误,发现了这么一段 error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads 这意思是少东西呗,那咱也别废话,既然给了链接就打开看看得了。看报错应该就是少一个c++编译器而已。 好家伙,打开这网页懵逼了。这不是一个完整的VS2019么??这东西好久之前用过,大概有个15G差不多,难道我就装个Scrapy就要这么大动干戈么。 这东西装上我估摸着最多用一次。所以还是不要装这种有的没得了。 去StackOverflow上看大佬们怎么整,结果也只是给了一个什么说明都没有的vc++2005的包。觉得有点不靠谱。 最后去微软那边找了很久,找到了这个页面。https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/ 看起来很科学啊!!只是单独安装工具而已。实际下来以后还下载了大概1.5G的内容,感觉比之前的15G已经强多了。 装好这个重启以后终于能正常安装Scrapy了。

2020年11月21日

Java callback 回调学习

最近接触了一些前端 JavaScript 方面的东西,觉得 JS 最方便的地方便是各种回调函数,无论是 Ajax 还是与用户的前端交互,都是通过回调函数的形式实现的。于是乎来到 Java 中搜索了一下有关回调的相关内容,结果发现还真的有。查了很多文章,总算是弄清楚了 Java 中回调的使用方法,然而大部分讲解都没有说到其实际的用途,于是便再次进行记录,也是给自己一个备忘。 什么是回调 接触过 JS 或者做过服务端接口的人应该都会对回调十分熟悉。按我的理解,假设有 A 和 B 两个模块,A 调用 B 来执行某一个功能,这个功能执行可能会花费一些时间,而且 A 希望在 B 执行完之后得到通知,那么 B 执行完相关功能之后再对 A 进行通知的这个过程,就叫做回调。通俗来讲就是甲乙两个人,甲需要一把梯子来换灯泡,让乙去拿来,乙把梯子拿来以后需要告诉甲:梯子已经到了,可以换灯泡了。 在 JS 中的回调十分便捷,只要将收到回调后需要执行的方法传入调用的方法中即可,这种回调方式的调用不仅限于 JS,Ruby 中也有类似的语法,然而对于 Java 来说,实现回调虽然有些麻烦,但是仍然有着解决办法。 Java 中的回调 在 Java 中实现一个回调不像脚本语言那样简洁优雅,但是会有一种更加规范的感觉。 此处还是用之前提到的的 A 和 B,生命这两个模块为两个类,主要归结为以下步骤: 定义一个 Callback 接口,用来指明回调时候需要执行的方法。 让 A 类实现 callback 接口,并且 A 类需要持有一个 B 的实例对象 b(因为只有持有才能调用)。 让 B 类中实现一个参数带有 callback 接口参数的方法 f(Callback callback, Object args)。 A 类的实例对象 a 调用 b.f,并且将 a 自身作为 callback 参数传入。 b.f 此时可以通过 callback 调用 A 中定义的 Callback 接口中的问题。 乍看下来感觉整个人都不好了,乱七八糟的,其实结合代码的话会看着很简单。此处以刚才说到的甲让乙搬梯子,然后甲用梯子换灯泡的情景,写一个 Demo。 ...

2016年6月28日