【跟小嘉学习区块链】一、区块链基础知识与关键技术解析

系列文章目录

【跟小嘉学习区块链】一、区块链基础知识与关键技术解析

文章目录

  • 系列文章目录
    • @[TOC](文章目录)
  • 前言
  • 一、区块链基础
    • 1.1、区块链的来龙去脉
      • 1.1.1、区块链技术起源
      • 1.1.2、核心技术发展脉络
    • 1.2、比特币产生的背景与现状
      • 1.2.1、现行货币体系存在的问题
      • 1.2.2、数字货币的概念
      • 1.2.3、设计数字货币的问题核心问题:防伪和双花问题
      • 1.2.3、比特网络
      • 1.2.4、防伪方案:公钥、密钥和比特币地址
      • 1.2.5、记账方案:UTXO(Unspend Transaction Output)
        • 1.2.5.1、传统的记账方案:基于账号的记账方式(Account based)
        • 1.2.5.2、UTXO(Unspend Transaction Output):未花费的交易输出
      • 1.2.6、区块结构
        • 1.2.6.1、宏观结构
        • 1.2.6.2、微观结构
        • 1.2.6.3、Merkle树
      • 1.2.7、挖矿原理
        • 1.2.7.1、区块的产生流程
        • 1.2.7.2、工作量证明机制(Pow, Poor of Work)
        • 1.2.7.3、挖矿原理:Pow过程
      • 1.2.8、比特币存在问题
    • 1.3、区块链概念与产业现状
      • 1.3.1、区块链技术演进
        • 1.3.1.1、区块链技术演进
        • 1.3.1.2、联盟链
        • 1.3.1.3、区块链产品
        • 1.3.1.4、区块链的三种形态
      • 1.3.2、区块链概念与特征
        • 1.3.2.1、区块链定义
        • 1.3.2.2、区块链的三大特征
        • 1.3.2.3、智能合约
      • 1.3.3、区块链关键技术
        • 1.3.3.1、区块链技术架构
        • 1.3.3.2、共识层
      • 1.3.4、了解区块链产业现状
        • 1.3.4.1、市场容量估算
        • 1.3.4.2、发展态势
        • 1.3.4.3、区块链产业生态图谱
        • 1.3.4.4、区块链技术社区
        • 1.3.4.5、国内区块链组织
  • 总结

前言

本系列章节主要讲解区块链原理以及开发区块链应用;


一、区块链基础

1.1、区块链的来龙去脉

1.1.1、区块链技术起源

  • 分布式系统:弱中心化是区块链思想的核心;
  • P2P网络:为区块链提供了网络层基础架构
  • 共识算法:区块链技术 的核心,实现了数据的一致存储;
  • 密码学:为区块链数据的传输和访问安全性、完整性和无法抵赖性提供了技术支撑
  • 分布式数据库:区块链的物理载体
  • 智能合约:为区块链应用提供了无限可能
  • 电子现金 将近20多年的解决方案研发基础

1.1.2、核心技术发展脉络

  • 1982年Lamport提出了拜占庭将军问题(Byzantine Generals Problem),这是分布式计算领域的问题,是把建立具有容错性的分布式系统,即在一个存在故障节点和错误信息的分布式系统中保证正常节点不死,保持信息传递的一致性,对于这个问题的解答在理论上和实际上都具有很高的价值;
  • 1985年提出的椭圆曲线密码学(Elliptic curve cryptography,ECC),第一次将椭圆曲线用于密码学中,为区块链的安全性提供了保障;
  • 1990年出现的eCash实现了一个不可追溯的密码学网络支付系统;
  • 1990年Lamport针对自己在1982年提出的拜占庭将军问题,给出了一个解决方案,即Paxos算法,Paxos共识算法能在分布式系统中达成高容错性的全网一致性。
  • 1991年出现的时间戳技术可以保证数位文件的安全;
  • 1992年基于ECC提出了性能更好的椭圆曲线数位签章演算法(Elliptic Curve Digital Signature Algorithm,ECDSA)
  • 1997年发明了hashcash算法,在此之后出现了工作量证明(Proof of Work,POW)的共识算法,其借鉴的就是hashcash算法,依赖散列函数的不可逆性达到容易被验证,但是很难被破解的特性,POW是公有链中最常见的共识算法,包括比特币在内的区块链系统都是基于这种算法。
  • 1998年发表匿名的分布式电子现金系统B-money引入了工作量证明机制;
  • 2005年提出了可重复使用的工作量证明机制(Randomized Proof of Work,RPOW);
  • 2008年中本聪发表《比特币:一种点对点的电子现金系统》比特币;

1.2、比特币产生的背景与现状

先有的比特币系统,再有的区块链理论,所以我们先来了解比特币的产生背景,以及比特币的现状。那么为什么第一个区块链系统会是以数字货币的形式出现呢?为什么比特币会获得成功?

1.2.1、现行货币体系存在的问题

  1. 政府信用担保发行(货币滥发会引起通货膨胀和贬值);
  2. 银行体系提供金融服务(金融危机);

金融危机频繁出现导致人们对政府不信任,加速了以电子货币寻求解决方案的步伐。比特币的诞生正值全球金融危机,人们对政府和银行对于货币的管理能力十分失望。

2008年,中本聪(Satoshi Nakamoto),发表了《比特币:一种点对点的电子现金系统》,比特币系统作为一种去中心化的系统,不受任何政府控制,发行总量恒定,总共将发行2100万个比特币,目前已经生成1600多万,目前总市场规模在1400+亿美元左右;

2009年1月3日,中本聪创造第一个区块,即创世区块。泰晤士报头版标题《TheTimes 03/Jan/2009 Chancellor on brink of secondbailout for banks》,这一句话被写在创始区块之中被永久保留下来。

比特币的出现也是一个比较神秘的事件,到目前为止,中本聪是谁仍然是一个谜,有人说他是日本人,有人说他是美国人,也有人说他是外星人,也有人说他不是一个人。

比特币系统是迄今为止最成功的区块链应用,10年来没有出现过任何一次服务暂停,任何交易均可被追溯,但是交易者地址是可公开的,但是身份却是匿名的;

1.2.2、数字货币的概念

比特币是第一种数字货币,那么究竟什么样的货币才是数字货币呢?无现金系统是否是数字货币?

在当前国内金融环境中,无现金交易已经十分普及,包括支付宝、微信支付等支付手段,包括传统的银行卡刷卡,这些都是无现金支付。

一般来说,我们现在提到我们现在提到的数字货币都是密码货币,这里提到的支付宝、微信支付或者银行卡可以认为是电子货币,本质上还是对应法币,和数字货币有本质的区别。

电子货币民间数字货币
定价方式以主权货币计价以其自身价值计价
价值属性受到货币政策影响由供需决定(在中国被视为大宗商品)
发行央行算法
记账多个账本(需要对账确保数据一致性,在复杂商业活动中会是很大的工作量)单个账本(数据一致性由区块链平台底层保证,减少工作量和出差错的可能)
流通信息流和资金流分离信息流和资金流合一
具体案例微信支付、支付宝钱包等比特币

1.2.3、设计数字货币的问题核心问题:防伪和双花问题

这两个问题其实也是其他的货币系统所要解决的问题,只是在不同的货币系统中有不同的解决方案和解决难度。

  • 防伪:主要是身份的真实性、载体的真实性;在传统的银行系统中,你的交易要通过各种识别是你本人,然后进行交易,并在店里消费的时候,需要校验现金货币的真实性。
  • 双花(Double spending):所谓双花就是双重支付,如果同一笔钱(数字货币)被重复支付两次,可以被拷贝复制的问题;

在传统的货币系统中,都是存在中心化的记账机构,你需要证明你是账户的所有者,银行在一笔交易完成前会冻结这笔资金,确保不会被重复使用。

但是在区块链的世界里,并不存在这样的中心化记账机构,所有的数据是通过全部节点共同维护的,在这种条件下解决防伪和双花问题面临的难度会比传统环境中更加高,更加复杂。

1.2.3、比特网络

比特币网络
比特币区块链网络,我们可以看到网络是有不同的节点组成的,每个节点可以简单理解成是安装了比特币客户端软件的计算机,我们平常使用的计算机也可以安装软件后作为节点加入挖矿,但是很少有人这样做,这样做很难挖到比特币,即使挖到了币了也不够电费,专业的需要专门的挖矿机器来参与才有可能有利可图。

  • 矿工:以挖坑为目的的参与比特币网络的是矿工
  • 普通用户:参与比特币转账和支付,不参与挖矿的为普通用户

1.2.4、防伪方案:公钥、密钥和比特币地址

防伪方案主要是解决发送到区块链网络中的消息可信性的问题,这里主要使用到了密码学里面的非对称加密算法。

  • 私钥:私有的密钥,只有持有者本人知道,不对外公开(256位随机数字),唯一证明使用其拥有比特币的凭证,如果不小心遗失了这个私钥,那么这个私钥对应的比特币就永远也找不回来了。
  • 公钥:对外发布的,任何人都可以获得,通过椭圆曲线乘法可以从私钥计算得到公钥;
  • 地址:可公开的精简字符串

1.2.5、记账方案:UTXO(Unspend Transaction Output)

1.2.5.1、传统的记账方案:基于账号的记账方式(Account based)

比特币的记账方案与传统的金融系统的记账方案不太一样,传统的金融系统是基于账户进行记账的,用户首选需要在银行里开一个账户,资金的转入转出都是跟账户关联,在进行查询的也是会使用账户进行查询余额、转账记录等历史交易。

现在银行、信用卡、证券交易系统、互联网第三方支付系统,其核心都是基于账户(account based)的设计,由关系数据库支撑。

1.2.5.2、UTXO(Unspend Transaction Output):未花费的交易输出

在比特币系统中,比特币的区块链账本里面记录的是一笔又一笔的交易。记账方案为UTXO(未花费过的交易输出),每笔交易都有若干交易输入,也就是资金来源,也都有若干笔交易输出,也就是资金去向。 一般来说,每笔交易都要花费(spend)一笔输入,产生一笔输出,而其所产生的输出,就是UTXO。

UTXO(Unspend Transaction Output)是未花费的交易输出,它是比特币交易生成及验证的一个核心概念,交易构成了一组链式结构,所有的合法的比特币交易都可以追溯到前向一个或多个交易的输出,这些链条的源头都是挖矿奖励,末尾则是当前未花费的交易输出。
UTXO
比特币交易遵守如下几个规则

  1. 除了coinbase交易之外,所有的资金来源都必须来自前面某个或几个交易的UTXO,就像接水管一样,一个接一个,资金就在交易之间流动起来了;
  2. 任何一笔交易的交易输入总量必须等于交易输出总量,等式两边必须配平;

我们在比特币钱包中所看到的账户余额,实际上是钱包通过扫描区块链并聚会所有属于该用户的UTXO计算得来的。

UTXO记录方式的优点

  • 可追溯,可以方便的查询到比特币的来龙去脉
  • 用户不会在银行随便开很多账户,在比特币的世界里,用户会开很多账户, 很多时候,账户只使用一次就被抛弃,所以在比特币系统存在很多废弃的账户,如果要使用账户作为查询的入口,那么每个节点都要保存所有账户的信息,会消耗的非常大的存储空间,非常不经济,而且没有必要;

1.2.6、区块结构

1.2.6.1、宏观结构

区块链底层都是以链式的方式进行存储,一个接着一个区块,每个区块都会指向前一个区块,这也是区块链名字的由来。在比特币系统里大概每10分钟就会产生一个区块,新生成的区块会被挂到链条的最后。
宏观结构
在图上,我们可以看到区块4之后产生了两个区块,都是指向区块4,这个就叫做分叉,基于POW共识算法的区块链系统都会发生这种事情,简单的说,分叉是不同的节点分别产生了新的区块引起的,具体的细节,在我们学习了POW原理的时候,才能理解。

1.2.6.2、微观结构

围观结构
每个区块由两部分组成:区块头和区块(block),区块体比较简单,内容是交易数据的列表,区块头包含版本信息、随机数(跟区块产生有关)、前一个区块Hash、时间戳、Merkle值(记录了所有交易的hash)。

我们都知道区块链有一个很重要的特性:**不可篡改性,**如果你修改了某个区块的哪怕一个bit的值都会导致这个区块的Hash值与原来完全不同。

1.2.6.3、Merkle树

Markle树
按照中本聪的原文,SPV(支付验证)会在区块链查找交易(为了验证支付),并且需要连接到一个全节点来检索必要的数据,这个机制允许在运行一个全节点的情况下有多个轻钱包,为了实现PSV,是需要有一个方式来检查是否一个区块包含了某笔交易,而无需下载整个区块,这就是Markle树所要完成的事情。

从根节点形成的过程可以看出根节点的hash值综合了所有叶子的节点的hash,也就是说任何一个叶子节点的交易记录被改动任何一个bit都会导致根节点的hash完全不同。所以知道了根节点的所有hash值之后,就可以验证了这笔交易是否为这个区块所包含的交易。

在比特币的网络里不是每个节点都有能力存储完整的区块链数据,受限于存储空间的限制,有些节点只下载了区块头,利用Merkle树的性质也可以验证交易的真实性。

1.2.7、挖矿原理

1.2.7.1、区块的产生流程

区块产生流程
首先在区块链比特币网络里,用户在持续发起交易发送到各个节点,每个节点收到交易后会把记录存放在自己的Memory pool中,在验证了交易记录的真实性之后,节点就会尝试把这些记录打包成一个新的区块,如果打包能成功,节点就会这个打包结果(也就是新的区块)发送给其他节点,其他节点在收到新的区块,其他节点也会进行验证,如果确认没有问题,就会把这个区块加入到区块链中,并且已经打包到新区块中的交易从自己的Memory pool中剔除。

对于打包成功的节点来说,他就是挖出了新的区块,能够获得一定数额的比特币的奖励。

1.2.7.2、工作量证明机制(Pow, Poor of Work)

挖矿原理:Pow
整个共识算法的核心,整个共识算法的核心是哈希函数在进行计算,函数的输入是区块头的一些值(包括markle值、时间戳、随机数等),输出的是一个固定长度的数值,但是并不是每一个输出都是一个正确的解(正确的解有一个固定的范围,要求前面几位都是0,0的数量越多,求解的难度就越大,每多一个0,计算的难度翻倍)。究竟有几个0是动态调整的,如果比特币网络算力不断的增加,0的个数也会随之变多,最终达到大概每十分求出一个解的频率。

在这个哈希函数,只有随机数是变化的,所以挖矿的过程就是不断变化随机数的值来求得哈希函数结果,直到最终算出一个正确的解。

1.2.7.3、挖矿原理:Pow过程

生成交易,并与其他所有准备打包进区块的交易组成交易列表,通过Merkle Tree 算法生成Merkle Root Hash。

把Merkle Root Hash及其他相关字段组装成区块头,将区块头的80字节数据(Block Header)作为工作量证明的输入。

不停的变更区块头中的随机数即nonce的数值,并对每次变更后的区块头做双重SHA256运算(即SHA256(SHA256(Block_Header))),将结果值与当前网络的目标值做对比,如果小于目标值,则解题成功,工作量证明完成。

1.2.8、比特币存在问题

  • 资源消耗严重:所有基于PoW算法都存在都问题,因为pow算法要求挖矿来保证系统的安全,参与的算力越多,系统越安全,但是另一外面,比特币网络消耗的电力已经超过许多中小型国家,有些人觉得这些计算并没有产生实际的价值,纯属浪费;
  • 分叉问题:因为比特币网络中每个节点都在无时不刻挖矿,有可能会在同一时间或者相近时间内不同节点(A,B)都求得正确的解并发送给其他节点,由于网络传输有时间差,有些节点会记录A的结果继续计算,而另外一些节点会记录B的结果继续计算,这样就会形成两条不同的链,一般来说分叉不会带来太大的问题,因为在一段时间后,比特币网络会选择比较长都链作为主链,各个节点又会回到主链上进行挖矿;
  • 算力垄断:著名的51%攻击,假如有一个组织可以控制一半以上的比特币网络,那么它就有能力操控整个比特币网络,比如它可以从任何一个历史节点开始重新挖矿,一定时间后就会超过原来主链的长度,意味着这个节点之后都所有交易都被推翻了,如果出现这种攻击,那么对区块链系统就是灾难性的;
  • 效率问题:比特币系统每秒只能进行7笔交易,吞吐量非常小;

1.3、区块链概念与产业现状

1.3.1、区块链技术演进

1.3.1.1、区块链技术演进

从上述的讲解过程中,我们可以了解到区块链的最早来源于比特币系统,可以说先有比特币再有区块链的概念。

很多人把发币和区块链也混为一谈,但并不是所有的区块链系统都需要发币的。区块链是当前的风口,大家对区块链的期望也很高,认为它是下一代的基础设施、价值传输的网络,有可能改造、甚至颠覆各个行业。

但是比特币系统显然本身并不具备这种能力。

以太坊是第二代区块链系统,也是公有链,所以具有公有链的一般特征。与比特币相比,以太坊最大的改变是可编程能力,意味着其能够支持的应用场景更加丰富了。这种通用化的编程能力是通过智能合约来实现的。

智能合约是一种图灵完备的编程语言,支持丰富的程序逻辑,我们可以通过智能合约来开发区块链上的票据应用、应收账款应用、业务节点等各种产品。从性能指标上来看,以太坊也有很大的提升。最后,以太坊也是需要发币的,一般来说公有链系统都是需要发币的,因为公有链吸引用户参与需要一种激励机制,这种激励一般都是通过发币来实现,如果公有链不发币很难激励用户参与进来。

2015年出现了新一代的区块链系统,区块链技术已经跟特定的公有链脱离开来,大家发现区块链技术的潜力远远不止发行数字货币,可以被应用到金融、医疗、贸易、版权等各个行业。但在企业级应用的场景中,对区块链平台的要求不同于公有链,比如在共识机制上要求有更高的确定性,而不需要通过挖矿竞争,在性能上、隐私保护等方面要求也会更高,在这种要求下,新一代的区块链系统就应运而生了。

1.3.1.2、联盟链

联盟链的典型代表:开源平台Fabric趣链(Hyperchain)
联盟链主要提供企业级的解决方案。
联盟链的核心技术:准入机制、高效共识、权限控制、隐私保护等。

我们讲到区块链的时候都会讲到去中心化,但确切地来说去中心化是公有链的特征。

1.3.1.3、区块链产品

对比

1.3.1.4、区块链的三种形态
  • 公有链:公有链是去中心化的系统,主要解决陌生人生之间的信任问题,其次它是完全公开的,任何节点都可以自由加入参与共识,另外还有账本完全公开、匿名性等特点;
  • 联盟链:联盟链是多中心化的系统,联盟链是监管友好的技术,监管机构也可以作为一个节点参与进来,从而实现穿透性的监管。参与人为预先根据一定特征所设定。系统内交易确认节点为实现设定,并通过共识机制确认,一般不需要数字货币提供交易验证机制。联盟链容易进行节点权限设定,拥有更高应用可扩展性。联盟链可大幅降低异地结算成本和时间,比现有系统更简单、效率更高,同时继承去中心化的优点减轻垄断压力(例如全球银行加入R3),采用PBFT共识算法
  • 私有链:私有链没有去中心化,但是分布式特点,中心控制者指定可参与和进行交易验证成员范围,系统内不需要虚拟货币提供奖励(例:中国银行可以联合其全球各城市分行,完成内部数据传输被封、转账等业务)

对比2

1.3.2、区块链概念与特征

1.3.2.1、区块链定义

区块链是一种以非堆成加密技术对交易进行数字签名,通过共识机制达成多节点一致(拜占庭容错),数据以链式区块形式组织存储的分布式账簿系统。

1.3.2.2、区块链的三大特征
  • 多中心:多个参与机构在区块链网络中相互监督,实时对账
  • 自动化:智能合约自动化经济活动与契约;
  • 可信任:记录不可篡改,无需第三方可信中介;
1.3.2.3、智能合约

智能合约是内嵌于区块链上的自定义程序逻辑,智能合约可以持有数字货币,在所有验证节点上运行,当满足一定条件,区块中的程序逻辑会被触发执行合同约定的指令(比如资产清算、赔偿、交割等)。

现在商业合作一般都是通过法律协议来约定权利和义务,规定甲方和乙方在规定时间内应该做什么事情,违约后应该怎么样处理这些条款,现在这些协议都是文本式,具体的执行还是大量依赖人工介入,比如一方拖欠款项,另一方需要向法院起诉获得赔偿,具体执行又要涉及到公安、财产征信机构等各种服务机构,效率比较低,成本比较高,但是如果未来区块链成为普遍的基础设施以后,商业合作就可以通过智能合约来进行,智能合约可以说是可执行的法律协议,可以极大的提升社会协作的效率。

1.3.3、区块链关键技术

1.3.3.1、区块链技术架构

区块链技术架构

1.3.3.2、共识层
  • POW(工作量证明机制)诞生于1997年Adam Back设计出Hashcrash系统,它最初被创造出来的目的是为了应用于邮件系统中预防漫天遍地的垃圾邮件的
  • **POS(股权证明机制)**不需要用户在不受限制的空间中找到一个随机数,而是要求人们证明货币数量的所有权;
  • **DPOS(股份授权机制)**由比特股(Bitshares)项目组发明,类似于现代企业董事会制度,比特股系统将代币持有者称为股东,由股东投票选出101名代表,然后由这些代表负责生成和验证区块;
  • **PBFT(实用拜占庭容错算法)**最初出现在MIT的Miguel和Barbara Liskov的学术论文中,该算法可以应用于吞吐量不大但需要处理大量事件的数字资产平台

1.3.4、了解区块链产业现状

1.3.4.1、市场容量估算
  • 区块链技术可以简化证券的清算结算,每年为美国资本市场节省20亿美元,为全球资本市场节省60亿美元——高盛投资研究部门
  • 采用区块链技术,全球每年可以节约5500亿美金的支付成本——Jeremy Almond
  • 区块链技术有机会为企业改善结算延迟以及提高系统的安全性,而区块链应用市场的规模最终将以万亿美元计算。——Blythe Masters
1.3.4.2、发展态势
  • 国家战略:截止到2017年末,全球9成的政府已经或者正在规划区块链产业发展与投资。
  • 银行体系:2016年以来,全球各国银行在区块链业务上的布局不断加快,从地域上来看,欧洲存在区域一体化的政经同盟而具备技术推广应用上的天然优势,美国在技术方面也走在前列,中国近一年多也密集上线银行区块链应用。
  • 企业:大公司和创业公司纷纷入局,上百个公司加入区块链联盟。
  • 知识产权:截止到2018年Q1,产生了3000+的区块链相关专利;
1.3.4.3、区块链产业生态图谱

区块链产业生态图谱

1.3.4.4、区块链技术社区
  • 比特币网络:经典区块链网络
  • HyperLeger:
    • IBM等大型企业推动的开源联盟,Linux基金会
    • Top down design,for business
  • Ehtereum:
    • 天才和极客推动开源公有链平台
    • Bottom up design
1.3.4.5、国内区块链组织
  • 北京
    • 中国区块链研究联盟
    • 中关村区块链产业发展联盟
    • ChinaLedger
    • 区块链微金融产业联盟
    • 中国区块链技术和产业发展论坛
    • 中国区块链技术创新与应用联盟
    • 金融区块链合作联盟
    • 金融区块链技术创新与应用联盟
    • 北京区块链合作联盟
    • 北京区块链技术应用协会
    • 可信区块链联盟
  • 上海
    • 上海间市场区块链技术研究组
    • 陆家嘴区块链金融发展联盟
    • 上海协同创新中心(区块链产业基地)
    • 上海区块链技术应用联盟
  • 深圳
    • 金融区块链合作联盟
    • 前海国际区块链联盟
    • 中国深圳FinTech数字货币联盟
    • 区块链研究院
  • 杭州
    • 浙江省区块链技术应用协会
    • 杭州区块链技术与应用联合会
  • 其他
    • 中国互联网金融协会区块链研究工作组
    • 广州市区块链产业协会
    • 贵阳区块链发展联合组织

总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/87003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的Qt作品(19)使用Qt写一个轻量级的视觉框架---第2章,仿海康VM实现思维导图拖拽方式的算法流程图

上次写的第1章介绍了主界面的设计。 https://blog.csdn.net/libaineu2004/article/details/130277151 本次是第2章,主要介绍流程图的运行。 目前市面上视觉框架很多,主要有列表图方式和流程图方式。海康VM的流程图方式比较受用户的喜爱和欢迎&#xf…

2023华为杯研究生数学建模研赛E题出血脑卒中完整论文(含28个详细预处理数据及结果表格)

大家好呀,从发布赛题一直到现在,总算完成了全国研究生数学建模竞赛(数模研赛)E题完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。…

万字总结HTML超文本标记语言

一、前言:什么是网页? 网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合。网页是网站中的一“页”,通常是 HTML 格式的文件,它要通过浏览器来阅读。 网页是构成网站的基本元素,它通常由图片、链接、文字、声音、视频等元素组成。通常…

c#:System.Text.Json 的使用三(从Newtonsoft迁移)

环境: .net 6.0vs2022 系列篇: 《c#:System.Text.Json 的使用一》 《c#:System.Text.Json 的使用二》 《c#:System.Text.Json 的使用三(从Newtonsoft迁移)》 参考: 《MSDN: 从 Newt…

数据库——理论基础

目录 1.1 什么是数据库 1.2 数据库管理系统(DBMS) 1.3 数据库和文件系统的区别 1.4 数据库的发展史 1.5常见的数据库 1.5.1关系型数据库 1.5.2 非关系型数据库 1.6 DBMS支持的数据模型 1.1 什么是数据库 数据:描述事物的符号记录 数…

基于springboot+vue的客户关系管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

MySQL备份与恢复

MySQL备份与恢复一、备份1、数据备份的重要性2、数据备份分类2.1 物理备份2.2 逻辑备份 3、数据库备份策略4、常用的备份方法和工具5、数据库上云迁移 二、数据库完全备份1、简介2、物理冷备份与恢复2.1 物理冷备份2.2 备份恢复2.3 补充知识date 3、mysqldump备份与恢复3.1 完全…

文件系统之程序是怎么打开文件进行操作的

本篇文章自顶向下,从文件系统的上层出发讲到磁盘,帮助理解程序是如何打开文件并进行后序的读写操作的,读到后面,前面的一些疑惑就得到解决 介绍相关概念 注意,目录也是文件 文件描述符 每个进程都有一个指针*files…

【深度学习】BLIP: 用于统一的视觉-语言理解和生成的引导式语言图像预训练

BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation BLIP:用于统一的视觉-语言理解和生成的引导式语言图像预训练 论文:https://arxiv.org/abs/2201.12086 代码:https://github.…

NotePad++ 在行前/行后添加特殊字符内容方法

我们在处理数据时,会遇到需要在每行数据前面、后面、开头、结尾添加各种不一样的字符 如果数据不多,我们可以自己手动的去添加,但如果达到了成百上千行,此时再机械的手动添加是不现实的 这里教给大家如何快速的在数据每行的前后…

QT 绘画功能的时钟

.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPaintEvent> #include <QDebug> //信息调试类 #include <QPainter> #include <QPixmap> //图像引擎类 #include <QTime> #include <QTimer> …

一文读懂 Redis 缓存系统

【摘要】本文介绍了Redis缓存原理、详细解析了缓存模型、缓存一致性和缓存异常场景。 【作者】李杰&#xff0c;专注于Java虚拟机技术、云原生技术领域的探索与研究。 尽管&#xff08;关系型&#xff09;数据库系统 (SQL) 带来了许多出色的属性&#xff0c;例如 ACID&#x…

【算法】排序——插入排序及希尔排序

目录 前言 一、排序的概念及其应用 1.1排序的概念 1.2排序的应用 1.3常见的排序算法 二、插入排序的实现 基于插入排序的优化——希尔排序&#xff08;缩小增量排序 个人主页 代码仓库 C语言专栏 初阶数据结构专栏 Linux专栏 LeetCode刷题 算法专栏 前言 这…

多进程编程- POSIX命名信号量(named semaphore)

POSIX命名信号量是POSIX标准下的一个进程间同步原语&#xff0c;允许多个进程共享同一个信号量&#xff0c;从而实现进程间的同步和通信。这与无名信号量不同&#xff0c;无名信号量主要用于线程之间的同步&#xff0c;而不是进程之间。 命名信号量是“命名”的&#xff0c;因…

Kubernetes集群+Keepalived+Nginx+防火墙 实例

目录 实验前期规划 1.拓扑图结构 2.实验要求 3.实验环境规划 一.kubeadm 部署 K8S 集群架构 1.环境准备 2.三个节点安装docker 3.三个节点安装kubeadm&#xff0c;kubelet和kubectl 4.部署K8S集群 &#xff08;1&#xff09;初始化 4.部署K8S集群 &#xff08;1&am…

java微服务 Dubbo面试题/SpringCloud面试题

java微服务面试题 Q:为什么要用微服务&#xff1f;微服务有哪些优势&#xff1f; 单体应用把所有功能都堆放在一起&#xff0c;改动影响大&#xff0c;风险高。 微服务具有以下优势&#xff1a; 针对特定服务发布&#xff0c;影响小&#xff0c;风险小&#xff0c;成本低。 频…

【一、虚拟机vmware安装】

安装虚拟机 下载 官方下载地址&#xff1a;https://www.vmware.com/cn.html 大概流程就是&#xff0c;最重要的事最后一步

【openwrt学习笔记】miniupnpd学习笔记

目录 一、参考资料二、upnp基本概念三、miniupnpd3.1参数说明3.1.1 config upnp 的配置参数表3.1.2 config perm_rule 许可设置配置参数表 3.2 windows上使用miniupnpc工具3.3 关于开启upnp功能后无法添加端口 四、其它知识补充4.1 NAT4.1.1 NAT概念4.1.2 NAT的分类 4.2 NAT穿透…

Linux下git安装及使用

Linux下Git使用 1. git的安装 sudo apt install git安装完&#xff0c;使用git --version查看git版本 2. 配置git git config --global user.name "Your Name“ ##配置用户 git config --global user.email emailexample.com ##配置邮箱git config --global --list …

深入理解C#中委托的使用及不同类型委托的应用示例

在C#中&#xff0c;委托是一种强大而灵活的机制&#xff0c;可以引用一个或多个方法&#xff0c;并允许以类似函数指针的方式进行调用。委托在事件处理、回调函数和多线程编程等场景中非常有用。本文将深入探讨C#中委托的使用&#xff0c;并介绍不同类型委托的应用示例。 目录…