数据结构与算法
文章平均质量分 78
十谷夫
这个作者很懒,什么都没留下…
展开
-
2021-04-25
channel主要是为了实现go的并发特性,用于并发通信的,也就是在不同的协程单元goroutine之间同步通信。下面主要从三个方面来讲解:make channel,主要也就是hchan的数据结构原型;发送和接收数据时,goroutine会怎么调度;设计思考;1.1 make channel我们创建channel时候有两种,一种是带缓冲的channel一种是不带缓冲的channel。创建方式分别如下:// bufferedch := make(chan Task, 3)// unbuffe原创 2021-04-25 22:37:42 · 217 阅读 · 0 评论 -
2021-04-18
什么是协程对于进程、线程,都是有内核进行调度,有CPU时间片的概念,进行抢占式调度。协程,又称微线程,纤程。英文名Coroutine。协程的调用有点类似子程序,如程序A调用了子程序B,子程序B调用了子程序C,当子程序C结束了返回子程序B继续执行之后的逻辑,当子程序B运行结束了返回程序A,直到程序A运行结束。但是和子程序相比,协程有挂起的概念,协程可以挂起跳转执行其他协程,合适的时机再跳转回来。线程调度原理N:1模型,多个用户空间线程在1个内核空间线程上运行。优势是上下文切换非常快,因为这些线程都在内核原创 2021-04-18 23:05:15 · 650 阅读 · 0 评论 -
Mongodb事务
在前一篇《理解数据库的事务,ACID,CAP和一致性》我已经将数据库的一些基本概念包括事务,ACID,CAP,一致性,隔离性等都深入的介绍了一遍,而此篇主要是针对MongoDB数据库系统做一下深入的了解,主要希望弄清楚如下几个问题:MongoDB是如何实现事务的?有哪些局限?MongoDB的一致性是如何保证的?MongoDB的事务首先我们需要知道MongoDB是有多种存储引擎的,不同的存储引擎在实现ACID的时候,使用不同的机制。而Mongodb从3.0开始默认使用的是WiredTiger引擎,本文原创 2021-03-21 20:56:10 · 1550 阅读 · 0 评论 -
算法题
1.二维数组中的查找题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。**思路:**遍历每一行,查找该元素是否在该行之中。class Solution:# array 二维列表def Find(self, target, array):# write code herefor line in array:if target in line:r原创 2021-01-31 20:39:30 · 102 阅读 · 0 评论 -
哈希算法
计算与数据结构篇 - 哈希算法 (Hash)哈希算法的定义和原理非常简单,基本上一句话就可以概括了。将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。构成哈希算法的条件:从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法)对输入数据非常敏感,哪怕原始数据只修改了一个 Bit,最后得到的哈希值也大不相同;散列冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小;哈希算法的执行效率要尽量高效,针对较长的文原创 2021-01-23 21:13:17 · 502 阅读 · 0 评论 -
《数据结构与算法》
《数据结构与算法》数据结构指的是“一组数据的存储结构”,算法指的是“操作数据的一组方法”。数据结构是为算法服务的,算法是要作用再特定的数据结构上的。最常用的数据结构预算法:数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Tire树算法: 递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法复杂度分析法则1)单段代码看高频:比如循环。2)多段代码取最大:比如一段代码中有单循环和多重循环,那么取多重循环的复杂度。3)嵌套代码求乘积:比如递归原创 2020-12-19 14:52:09 · 149 阅读 · 1 评论