【Golang】多线程排序 〇、前言本案例实现一个多线程排序算法,能够对给定的整数数组进行排序,使用 goroutines 对其进行并发化优化。 一、随机数生成器123456789101112131415func randProduce(randNums chan []int, wg *sync.WaitGroup) { for i := 0; i < 100; i++ { go rand1( 2023-05-08 Golang #算法 #开发语言 #golang
【Golang】多线程下载器的实现 〇、前言多线程下载,顾名思义就是对一个文件进行切片访问,等待所有的文件下载完成后在本地进行拼接成一个整体文件的过程。因此可以利用 golang 的多协程对每个分片同步下载,之后再合并且进行md5校验或者总长度校验。 一、请求资源下载文件的本质就是从服务器获取数据,更笼统地说就是向服务器发送 GET请求。 1.1 http1.1协议 HTTP1.1 协议(RFC2616)开始支持获取文件的部分内 2023-05-07 Golang #服务器 #golang #后端
【Golang】多线程爬虫的实现 〇、前言Golang 是一种并发友好的语言,使用 goroutines 和 channels 可以轻松地实现多线程爬虫。具体地说,实现的是多协程。协程是一种比线程更轻量化的最小逻辑可运行单位,它不受操作系统调度,由用户调度。因此对于协程并发的控制,有较高的要求。 一、goroutine(Go 协程)Go 协程(Goroutine)是与其他函数同时运行的函数。可以认为 Go 协程是轻量级的线程, 2023-05-05 Golang #开发语言 #golang #爬虫
【day11】链表高精度加法 题目 1:两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 2023-03-23 LeetCode #算法 #数据结构 #链表
【day10】链表的合并 题目 1:合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4] 思路:采用递归的方法: 12345678910111213class Solution { public ListNode 2023-03-22 LeetCode #算法 #数据结构 #链表
【day09】链表的旋转与反转 题目 1:旋转链表 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 1: 输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3] 思路 1:每次写后退一个,然后循环 k 次: 123456789101112131415161718192021222324252627struct ListNode* 2023-03-21 LeetCode #算法 #数据结构 #leetcode
【day08】移除与插入链表元素 题目 1:设计链表 你可以选择使用单链表或者双链表,设计并实现自己的链表。单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果是双向链表,则还需要属性 prev 以指示链表中的上一个节点。假设链表中的所有节点下标从 0 开始。实现 MyLinkedList 类:MyLinkedList() 初始化 MyLinke 2023-03-20 LeetCode #算法 #数据结构 #leetcode
【day07】二维数组及滚动数组 题目 1:杨辉三角 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 思路 1:利用多维数组模拟的方法: 123456789101112131415161718192 2023-03-19 LeetCode #算法 #数据结构 #leetcode
【day06】数组的遍历 题目 1:最大连续 1 的个数 给定一个二进制数组 nums , 计算其中最大连续 1 的个数。 示例 1: 输入:nums = [1,1,0,1,1,1]输出:3解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3. 思路 1:很简单,直接模拟: 1234567891011121314151617181920class Solution { 2023-03-13 LeetCode #算法 #数据结构 #leetcode
【day05】统计数组中的元素 题目1:错误的集合 集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。给定一个数组 nums 代表了集合 S 发生错误后的结果。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。 示例 1: 输入:nums = [1,2,2,4]输出:[2,3 2023-03-12 LeetCode #算法 #数据结构 #leetcode