- 博客(30)
- 资源 (4)
- 收藏
- 关注
原创 Go语言进阶之路:并发爬虫,爬取空姐网所有相册图片
上次聊到了《Go语言正则表达式》和《Go语言手撸一个LRU缓存》,这次利用正则表达式来编写一个并发爬虫。说到爬虫,不得不提到前面写的《Python网络爬虫requests、bs4爬取空姐网图片》。这个爬虫很简洁,使用requests库发送http请求,使用bs4来解析html元素,获取所有图片地址。但是这个爬虫是单线程爬虫,速度太慢,一分钟只能爬下来300多张图片。所以,编写了Go语言的...
2020-05-02 23:28:51 987
原创 Go语言进阶之路:手撸一个LRU缓存
一 什么是LRU缓存二 为什么我们要自己实现LRU缓存三 要实现LRU缓存,我们的诉求是什么四 怎么来实现4.1 设计Entry4.2 设计缓存
2020-04-25 10:32:00 635 1
原创 爬虫进阶:CrawlSpider爬取169ee全站美女图片
CrawlSpider前面,我们用了scrapy中的CrawlSpider爬取了糗事百科中大量段子数据。但是,qiubai这个爬虫没有充分利用CrawlSpider的优点。其实,在qiubai这个爬虫里面我们只是把CrawlSpider当做普通的Spider用而已。CrawlSpider继承自Spider,提供了Rule和LinkExtractor,使得爬虫框架能够自动按照规则提取Response中
2020-01-29 12:05:25 26286 2
原创 Python网络爬虫requests、bs4爬取空姐网图片
如之前的几篇文章(Python爬虫框架之Scrapy详解、Python爬虫框架Scrapy之爬取糗事百科大量段子数据),使用了Scrapy框架并且爬取了糗事百科的段子存入MongoDB中。Scrapy框架很好,也提供了很多扩展点,可以自己编写中间件处理Scrapy的Request和Response。但是可定制化或者可掌控性来说,还是自己写的爬虫更加强一些。如果写简单更加可控的爬虫,还是建议使用Pyt
2017-05-26 21:08:46 8169
原创 Python爬虫框架Scrapy之爬取糗事百科大量段子数据
如上篇文章《Python爬虫框架之Scrapy详解》(传送门:Python爬虫框架之Scrapy详解)所述。首先,准备scrapy环境:安装Python,pip,使用pip安装lxml和scrapy。scrapy startproject qiubai新建一个名为qiubai的scrapy爬虫项目。新建qiubai爬虫项目使用PyCharm打开,项目结构如图:定义QiubaiItem:新建项目
2017-05-24 13:27:39 6065
原创 Go语言进阶之路(九):时间处理和格式化输出
日期和时间是任何语言都必须处理好的事情。我们知道,在MySQL中,日期部分有date类型,时间部分有time类型,日期和时间都包含的类型有datetime类型(时间戳有timestamp类型)。比如,“2020-05-18 08:53:34.083”的日期部分就是“2020-05-18”,时间部分就是“08:53:34.083”。
2020-05-23 23:52:05 1645
原创 Go语言进阶之路(八):正则表达式
为什么要学正则表达式?因为利用正则表达式可以非常方便的匹配我们想要的任何字符串。比如,在一大堆字符串中,我们想找包含“Go语言”并且以“架构师”结尾的所有字符串,利用正则表达式就能非常方便快速的查找出来:
2020-04-29 09:12:20 2437
原创 Go语言进阶之路(七)文件读写os、io、bufio、ioutil
Go内置库中io.Reader/Writer是比较常用的接口。很多原生的接口都围绕这个系列的接口展开,在实际的开发过程中,你会发现通过这个接口可以在多种不同的io类型之间进行过渡和转化。围绕io.Reader/Writer,Go语言中有几个常用的实现: net.Conn, os.Stdin, os.File: 网络、标准输入输出、文件的流读取 strings.Reader:...
2020-04-19 14:19:23 3076
原创 Go语言进阶之路(六):内置JSON库和开源库gjson
Go语言内置了部分JSON函数,可以方便地在Go语言结构体实例和JSON字符串之间互相转换。这可比Java强多了。不过Go语言内置的json库功能比较鸡肋,只能在结构体和JSON之间相互转换,没办法满足在JSON字符串中进行条件匹配和搜索的功能。本文先介绍Go语言内置的json库,随后介绍了功能更强大的gjson库。
2020-04-18 16:13:24 828
原创 Go语言进阶之路(五):通道和goroutine、GPM
goroutine和channel的存在,让Go语言在并发编程很多情况下不需要考虑锁机制以及由此带来的各种问题。和Java多线程一样,Go应用能非常有效的利用多核CPU,并发执行的性能好。
2020-04-05 18:48:11 563
原创 Go语言进阶之路(三):函数和接口
Go语言的函数用关键字func来定义,函数可以有返回值也可以没有返回值,有返回值的话,返回值写在函数参数的后面
2020-03-29 16:09:26 276
原创 Go语言进阶之路(二):字符串和指针
上一篇文章《Go语言进阶之路(一):变量、类型、数组、切片、字典和结构体》我们学习了Go语言基础的一些变量和条件控制语句,结构体等。这一篇主要学习一下Go语言中的字符串和指针。
2020-03-24 22:41:01 3641
原创 有哪些必学的Python标准库和第三方库
Python正在成为时下最好最热门的数据挖掘、数据分析的编程语言。Python的的标准库又是Python学习中的重中之重。来看一下有哪些一定要学的Python标准库,有哪些建议学的Python第三方库(第三方框架)。这些标准库和第三方库一定会成为你学习Python路上的得力助手!必学标准库什么是标准库?就是Python语言自带的一些函数库。装好Python环境就能直接用的库。itert...
2020-02-26 21:26:53 1548
原创 聊聊Java BIO(同步阻塞IO)、NIO(非阻塞IO)、AIO(异步IO)
Java中有阻塞IO、非阻塞IO。阻塞IO可以理解为“一个连接对应于一线程”。非阻塞IO可以理解为“一个请求(一个请求里面可能会有多个连接【长连接短连接】)对应于一线程”。BIOJava中BIO也成为同步阻塞IO。同步阻塞IO模式下,服务器实现模式为一个连接对应一个线程,即:有连接请求从客户端发起时,服务器端就需要创建一个线程进行处理,如果有大量连接时,服务器就需要创建大量线程进行处理。当然...
2020-02-25 08:02:18 999
转载 当在浏览器中输入 google.com 并且按下回车之后发生了什么
大致流程URL 解析 DNS 查询 TCP 连接 处理请求 接受响应 渲染页面一、URL 解析地址解析:首先判断你输入的是一个合法的 URL 还是一个待搜索的关键词,并且根据你输入的内容进行自动完成、字符编码等操作。HSTS由于安全隐患,会使用 HSTS 强制客户端使用 HTTPS 访问页面。详见:你所不知道的 HSTS。其他操作浏览器还会进行一些额外的操作...
2020-01-18 21:43:07 760
原创 Java的异常类在使用时有哪些坑?
异常类使用时的坑在catch中捕获到异常然后再把该异常重新抛出,则外层的catch捕获到的还是最原始的那个异常对象,如果在内部catch中,对异常对象调用 fillInStackTrace()方法,则调用这个方法的那一行变成了异常的新发生地。如,(看一下这两个throw的区别)想要在捕获到一个异常后抛出另一个异常,并且希望保留下原始的异常信息,这就是异常链。要实现异常链,Erro...
2020-01-17 22:53:45 299
原创 Java动态代理的原生实现和Spring AOP的实现
Java中的动态代理动态代理是动态地创建代理并动态地处理对所代理方法的调用。实现动态代理需要实现InvocationHandler接口,实现其invoke(object, method, args[])函数,传递的是一个代理实例(Proxy类库的$Proxy0)、方法和参数。Java动态代理的创建动态代理对象是用静态方法Proxy.newProxyInstance()方法创建的:...
2020-01-17 22:46:34 527
原创 Python爬虫框架之Scrapy详解
scrapy爬虫安装:首先,安装Python,pip,然后使用pip安装lxml和scrapy,这样就可以新建scrapy项目了。然后,在命令行使用scrapy startproject xxx命令新建一个名为xxx的scrapy爬虫项目。scrapy爬虫内部处理流程:我们在使用scrapy写爬虫,一般要继承scrapy.spiders.Spider类,在这个类中,有个数组类型的变量start
2017-05-20 23:25:27 11061 2
原创 Spring源码之JdbcTemplate分析
JdbcTemplate用过Spring开发的,ORM框架一般选择MyBatis或者Hibernate,不过,Spring对JDBC API的封装工具JdbcTemplate,也提供了很方便的操作,不需要再在使用jdbc api时捕获那么多受检异常,忍受那么多样板式的代码了。JdbcTemplate主要提供以下几类方法:execute方法:用于执行任何SQL语句,一般用于执行DDL语句;upda
2017-05-17 22:56:41 523
原创 Java多线程并发器之AbstractQueuedSynchronizer分析
AbstractQueuedSynchronizerAbstractQueuedSynchronizer是Java并发工具包中最重要的工具,它是一个抽象类,为Java的各种同步器,锁等提供了并发抽象,是由大名鼎鼎的Doug Lea完成。java.util.concurrent提供了很多并发工具类,其中很多都是基于AbstractQueuedSynchronizer实现的。如,ReentrantLoc
2017-05-17 08:33:15 631
原创 Java进程Runtime、Process、ProcessBuilder调用外部程序
通过Java执行系统命令,与cmd中或者终端上一样执行shell命令,最典型的用法就是使用Runtime.getRuntime().exec(command)或者new ProcessBuilder(cmdArray).start()。让我们看看Runtime、ProcessBuilder的详细解析和详细用法。RuntimeRuntime类是Java程序的运行时环境。不能new出一个Runtime对
2017-05-15 09:01:24 33591 1
原创 Java多线程之深入了解读写锁
背景和意义java.util.concurrent中有很多的同步工具类,比如ReentrantLock、Semaphore、CountLatch、CyclicBarrier、BlockingQueue、ConcurrentLinkedQueue等等,其中,很多使用的是排他锁的实现,即,同一时间只有一个线程能够访问共享的变量或临界区。因此,在某些场景下,大部分的同步工具类的性能都不尽人意。想想一下这种
2017-05-14 09:57:28 536
原创 Java项目中根据相对路径和绝对路径获取文件的方法 getResource(name)
首先,项目中文件分布情况如下,innerFile.txt位于test.test包下,innerInnerFile.txt位于test.test.inner包下,outterFile.txt位于包的根目录下,那么,在App类里,如何根据相对路径、绝对路径获取innerFile.txt、innerInnerFile.txt和outterFile.txt呢?class.getResource(name)先
2017-05-14 09:08:55 80184 4
原创 OkHttp详细用法
引入依赖<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.1.0</version></dependency>发起GET请求首先,根据url和参数构建get请求的完整url:private String builderGetUrl(S
2017-05-14 08:50:30 2058
原创 Java进程 vs 线程、线程池
Java进程 vs 线程、线程池1. 进程Java进程中Runtime类封装了进程运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用。一旦得到了一个当前的Runtime对象的引用,
2017-03-08 14:38:29 623
转载 win10启用管理员账户
故障现象:Win10系统内置的管理员账户被禁用,如何修复?解决方案:1、进入WINDOWS PE ,能正常访问到系统盘;2、进入到C:/WINDOWS/SYSTEM32/文件夹下,找到当前目录下的sethc.exe;3、把sethc.exe改名成sethc.exe.bak(备份这个文件);4、然后复制cmd.exe到当前目录并改名为sethc
2015-09-05 22:31:07 2461
转载 TeXworks中文乱码问题
转载自:http://blog.csdn.net/lydyangliu/article/details/8714151指定texworks的encoding是件要注意的事情。缺省是utf8,打开文件若发现乱码,千万不要修改并保存(结果就成了UTF8编码的文件了)。找个能够正常打开的编辑器,如Notepad++,在文件开头加入双引号之间的内容:"% !TEX encoding = S
2014-06-11 11:00:49 2313
spark学习 Spark: Cluster Computing withWorking Sets Matei
2014-04-21
asp.net(c#)的flv播放器(附整个工程)(Flvplayer.swf)
2011-12-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人