StoneRiver Blog


  • 首页

  • 分类

  • 归档

  • 标签

常用算法:回溯算法

发表于 2020-11-17 | 分类于 理论学习

要用回溯算法解决问题需要将问题抽象为一个决策序列,一步步做决策,直到问题解决。如果发现某一步已经没有可以解决问题的决策了,或者决策序列已经到头但问题还未解决,就退回上一步进行其它的决策。

阅读全文 »

常用算法:贪心&分治

发表于 2020-11-16 | 分类于 理论学习

1 贪心算法

贪心算法一般解决在给定限制值和期望值的前提下,在满足限制值的情况下,期望值最大的问题。其思路很简单,每次优先选择期望值/限制值最大的选项,然后一步步往下进行选择,直至达到限制值的约束上限。

贪心算法的难点不在算法本身,而是如何证明一个问题是能够用贪心算法解决的。想要严格地证明贪心算法的正确性,是非常复杂的,需要涉及复杂的数学推理。通常我们会凭认知或者举例来判断其正确性,如果不信,那还是用其它的算法吧。

由于贪心算法本身并不复杂,编码也比较简单就不展开了。

阅读全文 »

图

发表于 2020-11-04 | 分类于 理论学习

1.图的一些基本概念

图是一种非线性数据结构。以下是一些图相关的基本概念:

  • 顶点:图中的元素称为顶点。
  • 边:图中的每个顶点可以与其它顶点建立链接关系,这种关系称为边.
  • 无向图:如果关系是双向的,这种图称为无向图。
  • 有向图:如果关系是单向的,就称为有向图。
  • 度:每个顶点相连接的边的个数,称为顶点的度。在有向图中度又分为入度和出度。
  • 带权图:如果这种关系还是带权重的, 就称为带权图。
    阅读全文 »

跳表

发表于 2020-11-03 | 分类于 理论学习

我们知道二分查找的效率非常高,一次对比就能将元数据规模缩小一半,最终在O(logn)的时间复杂度内完成有序数组中的特定元素查找。二分查找有一个局限是只能在数组完成该操作,因为其强依赖按下标的随机访问。需要按下标快速定位到中间元素。

如果数据存储在链表中,如何利用二分的思想完成数据查找呢?这种结构就是跳表。

阅读全文 »

数据结构-逻辑结构&存储结构

发表于 2020-11-02 | 分类于 理论学习

之前学习数据结构基本都是数组、链表、树、图一个个学过来。很少去总结他们的内在特点和联系。到底什么是数据结构呢?数据结构的三要素:

  1. 数据的逻辑结构。
  2. 数据的存储结构。
  3. 数据的运算。

这篇博客重点总结下数据的逻辑结构和存储和结构。

阅读全文 »

回车换行(CRLF)

发表于 2020-09-09 | 分类于 理论学习

工作中经常遇到CRLF,\r\n等描述,这里总结一下它们的由来。

阅读全文 »

HTTP权威指南读书笔记 (2) - URL与资源

发表于 2020-09-08 | 分类于 理论学习

1.资源标识符

URI(Uniform Resource Identifier)是更通用的资源标识符,有两个子集:URL和URI。URI并非是HTTP协议独有的,很多协议都使用URI作为协议的资源标识方式:

  • mailto:president@whitehouse.gov
  • ftp://ftp.lots-o-books.com/pub/complete-price-list.xls

虽说HTTP协议选择URI作为资源标识方式。但实际上,HTTP 应用程序处理的只是其子集URL。

阅读全文 »

HTTP权威指南读书笔记 (1) - 概述

发表于 2020-09-08 | 分类于 理论学习

HTTP协议构建在可靠的数据传输协议(TCP)至上。用于Web客户端向Web服务器请求Web资源。

1 媒体类型

Web资源可能是各种类型的静态文件,也可以是动态产生的内容数据。HTTP使用MIME type 区分这些数据的类型。

MIME type(Multipurpose Internet Mail Extension,多用途因特网邮件扩展)最初设计是为邮件报文服务的,后HTTP也采纳这一套类型管理方式。

HTTP服务器会为所有的HTTP对象附加一个MIME type,用于指导HTTP客户端处理收到的HTTP资源。比如:

阅读全文 »

字符编码

发表于 2020-09-07 | 分类于 理论学习

计算机内部,所有信息最终都是一个二进制值,称为一个bit。八个 bit 组成一个字节(byte)。一个字节一共可以表示256种不同的状态。

但二进制数据是不可读的,如何用二进制的数据来表示我们生活中的字符(A、B、C等),就是字符编码要解决的问题。

阅读全文 »

序列化与反序列化

发表于 2020-07-06 | 分类于 技术研究

1.序列化综述

  • 序列化: 将数据结构或对象转换成二进制串的过程
  • 反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程
    阅读全文 »
123…5
石河

石河

43 日志
9 分类
27 标签
© 2014 - 2023 石河 鄂ICP备 - 18004935号