1. 1
  2. 2
  • 利用puppeteer采集百度数据,并写入json文件

    利用puppeteer采集百度数据,并写入json文件

    RainNight 2021-04-7 Puppeteer

    139°

    # 利用puppeteer采集百度数据,并写入json文件 --- ## 代码篇,属于日常采集篇,后期会mongdb来存贮数据 ---- ``` const puppeteer = require("puppeteer"); const fs = require('fs'); (async()=>{ try{ const browser = await puppeteer.launch({ headless:true, args: [ '–disable-gpu', // GPU硬件加速 '–d
  • 使用golang结合goquery抓取数据的爬虫

    使用golang结合goquery抓取数据的爬虫

    RainNight 2021-04-6 爬虫

    165°

    ### 简介 --- goquery是用 Go 语言编写的一个类似于 jQuery 的库。它基于 HTML 解析库net/html和 CSS 库cascadia,提供与 jQuery 相近的接口。Go 著名的爬虫框架colly就是基于 goquery 的。 ### 快速使用 --- 本文代码使用 Go Modules。 创建目录并初始化: ``` $ mkdir goquery && cd goquery $ go mod init github.com/darjun/go-daily-lib/
  • 深入Go的Map使用和实现原理

    深入Go的Map使用和实现原理

    RainNight 2021-04-5 Golang

    174°

    # 开篇语 > Map是一种常用的kv数据结构,程序设计中经常使用,且作为一种最基础的数据结构,很多编程语言本身提供的api都会有实现,Go也不例外,今天我们将从一下三个方面为大家分析Go中的Map。 > 什么是Map? > Go中如何使用Map? > 以及Go的Map实现机制是什么样?希望通过这几个方面的讲解,让大家真正理解Go的Map使用和实现。 ## 什么是Map ### key,value存储 > 最通俗的话说Map是一种通过key来获取value的一个数据结构,其底层存储方式为数组,在
  • GMP 原理与调度

    GMP 原理与调度

    RainNight 2021-04-5 Golang

    135°

    # 一、Golang “调度器” 的由来? --- ## (1) 单进程时代不需要调度器 我们知道,一切的软件都是跑在操作系统上,真正用来干活 (计算) 的是 CPU。早期的操作系统每个程序就是一个进程,知道一个程序运行完,才能进行下一个进程,就是 “单进程时代” 一切的程序只能串行发生。 ![file](/static/upload/bigpic/20210405/1617623979497918968.png) 早期的单进程操作系统,面临 2 个问题: 单一的执行流程,计算机只能一个任务一个
  • 基于golang实现的并发爬虫,爬取图片

    基于golang实现的并发爬虫,爬取图片

    RainNight 2021-04-5 爬虫

    130°

    # 基于golang实现的并发爬虫,爬取图片 ---- ## 代码篇 --- ``` package main import ( "fmt" "io/ioutil" "net/http" "regexp" "strconv" "strings" "sync" "time" ) // 并发爬思路: // 1.初始化数据管道 // 2.爬虫写出:26个协程向管道中添加图片链接 // 3.任务统计协程:检查26个任务是否都完成,完成则关闭数据管道 // 4.下载协程:从管道里读取链接并下载 var (
  • 基于golang的爬虫,爬取QQ邮箱号、链接、手机号、身份证号

    基于golang的爬虫,爬取QQ邮箱号、链接、手机号、身份证号

    RainNight 2021-04-5 爬虫

    129°

    # 基于golang的爬虫,爬取QQ邮箱号、链接、手机号、身份证号 --- ## 爬虫基础方案,基本的接口封装和使用,并为使用并发的处理 ---- ### 代码篇 ---- ``` package main import ( "fmt" "io/ioutil" "log" "net/http" "regexp" ) var ( // w代表大小写字母+数字+下划线 reEmail = `\w+@\w+\.\w+` // s?有或者没有s // +代表出1次或多次 //\s\S各种字符 // +?
  • 基于golang的小爬虫,爬取QQ邮箱号和QQ号

    基于golang的小爬虫,爬取QQ邮箱号和QQ号

    RainNight 2021-04-5 爬虫

    132°

    # 基于golang的小爬虫,爬取QQ邮箱号和QQ号 ---- ## 这个只是一个简单的版本只是获取QQ邮箱并且没有进行封装操作,另外爬出来的数据也没有进行去重操作 --- ``` package main import ( "fmt" "io/ioutil" "log" "net/http" "regexp" ) //这个只是一个简单的版本只是获取QQ邮箱并且没有进行封装操作,另外爬出来的数据也没有进行去重操作 var ( // \d是数字 reQQEmail = `(\d+)@qq.com`
  • [并发Goroutine&Channel]第006节:临界资源安全问题

    [并发Goroutine&Channel]第006节:临界资源安全问题

    RainNight 2021-04-4 Golang

    140°

    ### 一、临界资源 --- 临界资源: 指并发环境中多个进程/线程/协程共享的资源。 但是在并发编程中对临界资源的处理不当, 往往会导致数据不一致的问题。 示例代码: ``` package main import ( "fmt" "time" ) func main() { a := 1 go func() { a = 2 fmt.Println("子goroutine。。",a) }() a = 3 time.Sleep(1) fmt.Println("main goroutine。。",
  • [并发Goroutine&Channel]第005节:runtime包

    [并发Goroutine&Channel]第005节:runtime包

    RainNight 2021-04-4 Golang

    113°

    官网文档对runtime包的介绍: ``` Package runtime contains operations that interact with Go's runtime system, such as functions to control goroutines. It also includes the low-level type information used by the reflect package; see reflect's documentation for th
  • [并发Goroutine&Channel]第004节:Go语言的并发模型

    [并发Goroutine&Channel]第004节:Go语言的并发模型

    RainNight 2021-04-4 Golang

    104°

    Go 语言相比Java等一个很大的优势就是可以方便地编写并发程序。Go 语言内置了 goroutine 机制,使用goroutine可以快速地开发并发程序, 更好的利用多核处理器资源。接下来我们来了解一下Go语言的并发原理。 ### 一、线程模型 --- 在现代操作系统中,线程是处理器调度和分配的基本单位,进程则作为资源拥有的基本单位。每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成。线程是进程内部的一个执行单元。 每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统
Collect from 雨夜的博客 雨夜的博客