-----------------来自小马哥的故事 ---- 第一部分:Java 数据结构 要理解Java数据结构,必须能清楚何为数据结构?...在Java里面可以去广义的去理解为实现了Collection接口的类都叫集合。 树 树形结构,作者觉得它是一种特殊的链形数据结构。最少有一个根节点组成,可以有多个子节点。...最大的特性是:不同的对象,不同的值有可能计算出来的hashCode可能是一样的。 Hash表: Java中数据存储方式最底层的两种结构,一种是数组,另一种就是链表。...第二部分:Java基本算法 ---- 理解了Java数据结构,还必须要掌握一些常见的基本算法。...理解算法之前必须要先理解的几个算法的概念: 空间复杂度:一句来理解就是,此算法在规模为n的情况下额外消耗的储存空间。
假设检验简单来说,就是下面4步的推理逻辑: 为了你更容易理解,我还是从一个生活中的例子开始聊起。...这个例子里举王宝强和马蓉的例子并没有恶意,只是想说明假设检验的背后逻辑,而这个例子更容易让你理解清楚。 有一天,宝强怀疑妻子有可能出轨,但是自己逻辑能力太弱,于是就请了我这个侦探来帮他破案。...对应这个例子里,如果我能找到足够强的证据来否定零假设(也就是马蓉没有出轨),那么我就能有效的说明零假设不成立,那么备选假设成立。 好了,接下来的问题就是:如何找到证据了。...根据这些样本数据显示出来的证据,我利用自己的统计概率知识,计算出了,在零假设成立的前提下,马蓉没有出轨的概率。 不算不知道,一算吓一跳。...在零假设成立的前提下,样本数据计算出马蓉没有出轨的概率是0.01% 这个概率值在统计概率中有个专门的术语叫p值。也就是,在零假设成立的前提下,得到样本观察结果出现的概率。
循环就是反复的做一件事情,尽管每次都可能一模一样 也有可能略有差别。 无论是打扑克、还是打麻将,其实都是符合循环这个概念。...譬如说,打斗地主的时候我们每次都要不停的从牌堆中抓一张牌,大家分别取一张,直到牌堆里的牌只剩3张。 每一次的抓牌就是循环的一个过程。 那么for循环和while循环的差别是什么呢?...如果用女人可以理解的方式来说的话,那么 for循环是 曾经有一份真诚的爱情放在我的面前....... 我希望是 10000年 while循环是 山无棱、天地合,乃敢与君绝
2、app = FastAPI() 这行也比较好理解,就是将FastAPI类进行实例化,并且将值赋给app。...3、@app.get("/items/{item_id}") 熟悉Python的朋友应该知道@代表的是装饰器的意思,如果你不懂装饰器,可以先去谷歌一下,其实你也可以理解它就是一个函数。...item_id: int ,大家可能会发现这个与我们上面所讲的 @app.get("/items/{item_id}") 中定义的 {item_id} 是一样的名字,我们的路径操作函数就是通过这样来传输用户所输入的路径的...我们在以后的项目当中,这一部分就是我们api返回的结果。 好了,到这里相信大家能够对这段代码有所理解了,这里K哥给大家留下一个作业。...如果我们想要制作一个博客,我们对于博客的首页、某一个博客内容页面、关于我的页面、搜索功能... 该如何设置路径参数呢?该返回哪些内容呢?
对于 JS 初学者,理解链表可能是一项比较困难的任务,因为 JS 没有提供内置的链表。...在像 JS 这样的高级语言中,我们需要从头开始实现此数据结构,如果你不熟悉此数据结构的工作方式,则实现部分会变得更加困难 ?。...在本文中,我们将讨论如何将链表存储在数据库中,实现链表的添加和删除,查找以及反转链表等操作。 在实现链表之前,需要知道相比数组和对象,链表的优点是什么。...这是链表引出的原因。 那么什么是链表呢 ? 从名字本身可以看出它是一个以某种方式链表。 那么它是如何链接的,列表包含什么呢? 链表由具有两个属性的节点组成:数据和指针。...为了实现这个函数,我们需要理解它需要执行的一些操作: image.png 从上图中,我们可以通过以下方式实现append函数: append (value) { const newNode
中函数的参数,虽然在函数定义的时候无法指定对象的类型,但是调用该函数的时候,也并不是什么对象都可以传入的,比如我们查看sum的帮助文档,其描述了可接受的第一个参数是可迭代对象(包括迭代器,list,tuple...那么函数究竟是如何访问参数的呢?...参数和函数都是对象,函数对象内还包含了函数内部变量,我把这些内部变量理解为“函数内部对象”, 相对于“函数内部对象”,我认为 函数参数 属于”函数需要访问的外部对象“, 这里简称为“外部对象”....,传递的不是全局对象,那么就会使用上面描述的第二个”外部对象“; 而如果函数调用时,根本没有传递任何的参数(只适用于定义时指定了默认值的情形), 那么会使用上面描述的第一个”外部变量“ 下面用一个例子来验证上面的看法...: 无论如何调用,只要没有指定s的值,那么这个对象一直是同一个140276684076680; 通过把全局对象c 作为参数进行传递,在函数中l 对象(140276683958752)其实就是c 对象(140276683958752
这些平台的目标是以一种更加灵活的方式传播科学知识,跳过验证过程中通常需要的等待时间。这是机器学习的关键之一,以及开放的文化,它让这个领域以近年来的速度发展。...作为附件,下面引用的有关如何阅读论文的论文确实有用,它提出了有关如何阅读我个人经常使用的论文的策略,并为我大大简化了过程: https://web.stanford.edu/class/cs244/papers...我们倾向于认为,作为科学文件的论文都是按照严格的方式生产的,它们遵循公认的惯例和方法,并且不会偏离事实很远。...其中一个例子是在机器学习领域存在的文章,能够做将复杂的内容变得容易理解和展现(例如配图),做到到通俗易懂才是关键。 我个人认为,论文是一种传播知识的工具,它并没有更新为21世纪可用的新资源。...Distill.pub页面就是一个成功的例子,该页面除了非常清晰地介绍概念之外,还包含许多交互式元素,这些元素使访问此页面的任何读者都可以通过更易于访问的方式来访问知识。
这篇教程憋了很久,其实算是3个月前leaflet在线地图系列的进阶篇,但是因为当时对于leaflet地图的数据源结构理解有限,技能勉强操控shp数据源,对于json数据源所知甚少,一直拖了这么久才更新。...随着近期在json数据结构的理解不断加深,对于list结构和向量化运算的掌握也多有提高,这才能熟练的在leaflet系统中操控json数据。...本篇主要分为两大部分: 如何自如的操纵json数据来打造leaflet所能识别的数据源和style属性; 如何操控leaflet控制台版面中的地图图层和数据图层。...想要很好的理解本文,你需先对leaflet系统基础语法有所掌握(其实可视化的图层语法都大同小异,leaflet属于JavaScript语言打造的在线地图库,同D3、plotly、Rcharts以及Highcharts...以下数据导入json原生数据格式的三种方式:(2,3两种是没啥区别的,但是simplifyVector=FALSE参数设定与否则至关重要,他决定着输入的json数据是经过平整的向量化数据还是原生的list
文章目录 一、参考资料: 二、总结、底层 [^注释]: 三、结构: 1、逻辑结构: 2、物理结构: 3、存储结构(我认为应属物理结构): 一、参考资料: 一片百度百科文章说明数据结构 二、总结、底层 1...: 落实到磁盘层面思考角度让问题更复杂: 1、同属线性结构的数组、栈、列队和链表有巨大的区别:数组在元素插入时要移动硬盘的存储单元,链表不用,所以链表在插入、删除有大优势 2、同样是树结构,b树就是考虑到磁盘的实际存储方式...(2-3树是特殊的b树,是一种极限思维的结果,可以很好的理解b树) 3、b+树 = b树 + 链接(指针,这个指针不同b树的指针,是为数据内容做指针),也是在考虑磁盘的使用方式。...Queue) 链表( Linked List) 树( Tree) 图(Graph) 堆(Heap) 散列表(Hash) 3、存储结构(我认为应属物理结构): 以后就用底层来代表基础、核心内容的意思...因为我认为万事万物都有隐藏在底层的一条核心脉络。 ↩︎
解释定义 数据结构: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。再简单描述一下:数据结构就是描述对象间逻辑关系的学科。 如果还是不太清楚下面会举例说明的。...数据存储结构: 简单的讲就是数据在计算机中的存储方式。 常用的数据存储方式有两种:顺序存储,非顺序存储。顺序存储就是把数据存储在一块联系的存储介质(硬盘或内存等)中。反之就是非顺序存储咯。...所以单向链表的最后一个节点是指向Null的。 数组、链表、栈和队列是最基本的数据结构,任何程序语言都会涉及到其中的一种或多种。 数组 数组是数据结构中很基本的结构,很多编程语言都内置数组。...所有的数据结构都支持几个基本操作:读取、插入、删除。 因为数组在存储数据时是按顺序存储的,存储数据的内存也是连续的,所以他的特点就是寻址读取数据比较容易,插入和删除比较困难。...由于链表是以这种方式保存数据,所以链表在插入和删除时比较容易,读取数据时比较麻烦。
如果进程是跨机器运行的,则通常是由网络连接在一起。 实现方式可以有多种多样。原则上,任何跨进程的数据交换都可以称为进程间通信。...常见的几种进程间通信方式 共享内存(Shared Memory) 共享内存是一种常见的进程间通信机制。由于两个进程可以直接访问同一块儿内存区域,减少了数据的复制操作,因而在速度上的优势比较明显。...管道的局限性 生命周期是随进程结束而完结 只能用于具有亲缘关系的进程通信 管道是匿名的,没有名字 为了克服管道上述的局限性,可以使用命名管道(Named Pipe)。...它具有管道所有的功能,并且没有管道的上述局限。 套接字(Socket) 其实网络通信中所使用的API与跨进程使用的是完全一样的。 两种角色:服务器与客户端。...消息队列(Message Queue) 信号(Signal) 信号量(Semophore) 参考 Java进程通信 Linux进程间通信方式–本地socket 进程间通信——socket 版权声明:本文内容由互联网用户自发贡献
,一般如何使用呢?...同步 调用方需要等待结果 异步 不需要等待结果 代码里如何实现异步?...异步场景挺多,比如TCP协议本身是异步的,日常的RPC调用,在TCP协议层面,发送完RPC请求后,线程不会等待RPC响应结果。 是不是好奇了,明明日常使用的RPC调用都是同步的呀?...本来发送请求是异步的,但是调用线程却阻塞了,说明Dubbo帮我们做了异步转同步的事情。...通知机制,即管程的实现方案。
顺序表的定义 顺序表也就是用顺序存储的方式实现线性表。 顺序存储。把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。...---- 顺序表的实现 静态分配 在静态分配时,由于数组的大小和空间事先已经固定,一旦空间占满,再加入新的数据就会产生溢出,进而导致程序崩溃。...如果刚开始就声明一个很大的内存空间是没有必要的,这样会浪费存储资源。...动态分配 使用动态分配时,存储数组的空间是在程序执行过程中通过动态存储分配语句分配的,一旦数组空间占满,就另外开辟一块更大的存储空间,替换原来的存储空间,而不需要为线性表一次性地划分所有空间。...InitSize:malloc 函数的参数,指明要分配多大的连续内存空间。
通过哈希函数产生了哈希碰撞,应该如何处理?在学习完哈希碰撞的解决方式之后,我们就可以完整地认识哈希表这种数据结构了。最后,我会带你来了解一个哈希表的常用高级应用——BloomFilter。...哈希碰撞的情况 先来看看哈希表的定义,在概念上哈希表可以定义为是一个根据键(Key)而直接访问在内存中存储位置的值(Value)的数据结构。...那下面我们就以一个具体例子来说明一下,不同的哈希碰撞其解决方式所带来的底层存储键值对操作的差异。...刚开始的时候,因为这个数据结构并没有存储任何信息,所以数据结构内存结构图如下图所示: 假设第一个输入的键值对是(Tom:123456),表示好友的名字叫 Tom,电话号码为 123456。...下面我就介绍一下常用的两种解决哈希碰撞的方式。 开放寻址法(Open Addressing) 开放寻址法本质上是在数组中寻找一个还未被使用的位置,将新的值插入。
目录 string list hash set zset string 存储方式 key-value,可支持数字,性能高, 用处 微博数,粉丝数 基本命令 set key value get key...getrange key start end #返回key中字符串值的从start到end的字符 mget key1 key2 key3… #获取一个或多个key的值 setex key seconds...存放直播间的在线用户列表,以及用户送的礼物,弹幕消息等。...skiplist 跳表(具有层次结构的链表),可支持范围查询 查找和插入的时间复杂度都是log(n) 使用一个dict保存每个值对应的score 查找时,从开始查找,知道找到大于或者null的然后指向节点的下一层...新增时,为了保证每层的数量能够满足要求,需要随机产生该数的层数,并保证概率。 删除时,需要考虑前驱的next节点改变,同时考虑最大level是否变化。
简介 本文将会讲解Pandas中基本的数据类型Series和DataFrame,并详细讲解这两种类型的创建,索引等基本行为。...我们使用下面的方法来创建一个Series: >>> s = pd.Series(data, index=index) 这里的data可以是Python的字典,np的ndarray,或者一个标量。...label的数据结构,它是由Series组成的,你可以把DataFrame看成是一个excel表格。...DataFrame可以由下面几种数据来创建: 一维的ndarrays, lists, dicts, 或者 Series 结构化数组创建 2维的numpy.ndarray 其他的DataFrame 从Series.../03-python-pandas-data-structures/ 最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
小勤:上次对PQ的数据结构做了一个总体的介绍,那在PQ里怎样取到一行、一列,甚至一个“单元格”里的值呢?...首先是行的,用大括号括住行标(从0开始),比如要取第1行的内容,我们添加个自定义列显示出来=合并的查询{0}: 结果如下,添加的列里面每个“单元格”的内容都是一个Record,都是第1行的内容: 我们如果要去某列的内容...,则用中括号括住列名即可,如我们添加个自定义列取“合并的查询”结果表的产品列来体验一下,公式=合并的查询[产品] 结果如下,新添加的列里每一个“单元格”里都是一个List,即合并查询表里的产品列所有内容...就是行跟列取法的组合,比如我们取合并的查询里第1行产品列的内容=合并的查询{0}[产品]: 结果里每一个“单元格”的内容都是第1行产品的内容。...小勤:嗯,大概理解了,但现在都是取某一个固定行的,怎么动态地去取呢?比如我要取当前行的内容。
在了解JavaScript栈和列队之前,我们先了解下栈和列队的基本概念,栈和队列都是动态的集合,在栈中,栈实现了后进先出。在队列中,队列实现了先进先出的策略。...栈是一种LIFO(Last-In-First-Out,后进先出)的数据结构,也就是最新添加的项最早被移除。而栈中项的插入(叫做推入)和移除(叫做弹出),只发生在一个位置,那就是栈的顶部。...items = [] } this.print = function(){ console.log(items.toString()) } } ES6方式实现...队列是一种FIFO(Fist-In-First-Out,先进先出)的数据结构,队列在列表的末端添加项,从列表的前端移除项。就好像排队买票,取餐,先来的,最先买票,取餐。...items = [] } this.print = function () { console.log(items.toString()) } } ES6方式实现
php echo 123 查看Network 可以看到获取到服务端的数据但这种方式虽然能获取到数据,我们并不能使用。 如果服务端返回的是一段js代码 <?...,但这种方式也有缺点。..."(123)";//拼接函数 //结果输出 123 通过这种方式我们可以自定义函数名,只要保持与传递给服务器的函数名一致即可,但是我们传递的参数名必须与服务端一致,比如服务端接收的参数是callback...那么你可以用callback=funcName的方式传递函数,如果服务端接收的参数是_cb那么你传递参数时必须 _cb=funcName。...jsonp允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了 看到这里你应该理解了
因此,None 比较容易理解,就是一种空类型。...但是使用过 NumPy 的肯定都会接触到 nan 这种类型,它的其他写法:NaN或 NAN,查看其类型却发现是 float 类型: In [63]: type(np.nan)...这就要知道计算机是如何表示浮点数的,IEEE754 标准中规定 float 单精度浮点数,在机器中表示用 1 位表示数字的符号,用 8 位表示指数,用 23 位表示尾数,即小数部分,如下图所示: ?...当指数等于255,并且小数点后至少一位不为 0,规定此浮点数为 nan,表达的含义:not a number ,不是一个数 以上就是 NumPy 中 nan 的解释,弄清楚本质后,再来看几个关于它的运算...(a)) # 返回结果 # (array([1, 3]),) 更多关于NumPy的用法,可参考我之前推过的一个100 页 NumPy 精华PDF,很不错,还没看到的可以微信我,备注:精华 不必打赏
领取专属 10元无门槛券
手把手带您无忧上云