期末复习-大数据技术原理与应用

news2025/4/17 3:12:26

大数据技术原理与应用

  • 大数据基础
    • 什么促进了大数据时代的诞生?
    • 大数据的发展进程
    • 大数据的 4V 概念
    • 大数据的计算模式
    • 云计算
    • Hadoop
    • Hadoop的生态系统
    • Hadoop 安装和使用
  • 大数据存储和管理
    • 分布式文件系统DFS
    • HDFS 数据块
    • 计算集群中元数据需要的内存
  • HBase shell基本命令
  • NoSQL数据库
    • NoSQL数据库的简介和兴起的原因
    • 非关系型数据库和关系型数据库的区别
    • NoSQL 的四大数据类型
    • NoSQL 三大基石
  • World Count的MapReduce处理
    • Flink的容错机制
    • Flink是如何实现End-To-End Exactly-once的?
  • Spark 计算 Pi

大数据基础

什么促进了大数据时代的诞生?

  • 第三次信息化浪潮

  • 信息科技为大数据时代提供技术支撑,具体是存储容量增大,CPU处理速度提高,网络带宽的提高

  • 数据生产方式的变革,运营式系统阶段,用户原则内容阶段,感知式系统阶段

大数据的发展进程

20世纪90年代到21世纪初的萌芽阶段,21世纪前10年的成熟期,2010年之后的大规模应用期

大数据的 4V 概念

4V 就是数据量大Volume,数据类型繁多Variety,处理速度快Velocity,价值密度低Value
数据真实性Veracity

大数据的计算模式

  • 批处理计算

  • 流计算

  • 图计算

  • 查询分析计算

云计算

云计算的概念,以虚拟化技术为核心,低成本为目标的动态可扩展的网络基础应用,是近几年来最具代表的网络计算技术和模式

云计算包含了三种服务模式

  • IaaS,基础设施即服务

  • Paas,平台设施即服务

  • SaaS,软件即服务,把软件作为服务进行出租

云计算的关键技术,虚拟化,分布式存储,分布式计算,多租户等

Hadoop

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop的框架最核心的设计就是:HDFSMapReduce

核心组件,HDFSMapReduceYARN

优点

1.高可靠性。Hadoop按位存储和处理数据

2.高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中

3.高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快

4.高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配

5.低成本。hadoop是开源的,项目的软件成本因此会大大降低

6.运行在Linux系统上

7.支持多种编程语言

Hadoop的生态系统

在这里插入图片描述

HDFS

Hadoop Distributed File System 缩写 HDFS,它存储 Hadoop 集群中所有存储节点上的文件。基于GoogleGFS文件系统开发的,作为Hadoop的底层数据存储

HBase

HBase是一个高可靠的,高性能,可伸缩,实时读写,分布式的列式数据库

MapReduce

Hadoop MapReduce 是针对谷歌的 MapReduce 实现,是一种编程模型,用于大规模数据集的复杂的并行运算。使用到了两个函数 Map() 函数 Reduce() 函数,Map 映射函数,用来把一组键值对映射成一组新的键值对,指定并发的 Reduce 归约函数,用来保证所有映射的键值对中的每一个共享相同的键组。

Hive

hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。

hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。学习成本低,适合对数据仓库进行统计分析。

zookeeper

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是GoogleChubby一个开源的实现,是HadoopHBase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

ZooKeeper包含一个简单的原语集,提供JavaC的接口。

Hadoop 安装和使用

  • 创建Hadoop 用户

  • 安装java的环境

  • 安装并且设置SSH登录权限

  • 单机安装配置

  • 伪分布式安装配置

大数据存储和管理

分布式文件系统DFS

目前应用广泛的分布式文件系统主要有GFSHDFS,分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点主要分成两类,一类是主节点Master Node 也叫作NameNode名称节点,一类是由Slave Node 也叫作DataNode 数据节点。

NameNode 主要负责文件和目录的创建、删除和重命名,同时管理者数据节点和文件块的映射关系,因此Client只需要访问NameNode节点才可以找到请求的文件块所在的位置,进而从位置读取所需的文件块。

DataNode 主要负责的是数据的存储和读取,在存储时候,由NameNode分配存储位置,Client将数据写入到相应的数据节点。在读取数据时候,ClientNameNode获取到DataNode和文件块的映射关系,就可以根据相对应的位置访问到对应的文件块。

HDFS 是Hadoop的分布式文件系统,实现的目标是,兼容廉价的硬件设备,流数据的读写,大数据集,简单的文件模型,强大的跨平台兼容性。

缺点,不适合低延迟数据访问,无法高效的存储大量小文件,不支持多用户的写入和任意文件的修改。

HDFS 数据块

文件被切分成为固定大小的数据块,默认数据块大小是128MB,Hadoop2.7.3之间是64MB,可配置

数据块大是为了数据传输超过寻道时间,高吞吐量

一个文件按大小切分成为若干个Block,存储到不同的节点上,默认情况下每个块具有三个副本。

Block副本放置的策略

副本1,同Client的节点上

副本2,不同机架的节点上

副本3,与第二个副本同一机架的另一个节点上

计算集群中元数据需要的内存

在这里插入图片描述

10600000 * 250Bytes + 310000 * 290Bytes +13300000 * 368Bytes = 7.11GB

  • 可扩展性,支持热拔插,可动态的添加和删除DataNode,都会通知NameNode及时更新metedata

  • 容错性,多次的数据备份

  • 数据局部性,不适合小文件,不能实时的处理实时数据,处理速度慢,缓存效率低下

  • 可靠性,冗余副本机制,心跳机制,安全模式,回收站,元数据保护,快照机制

  • 高可用性,消除单点故障,防止单个节点宕机之后,造成服务的不可用,保证集群的可用

HBase shell基本命令

https://blog.csdn.net/vbirdbest/article/details/88236575

  • 进入Base Shell程序
hbase shell
  • help ‘命名名称’ 来查看命令行的具体使用,包括命令的作用和用法。
help 'base'
  • 显示集群状态
// 默认 'summary'
status 
  • 查看数据库版本
version
  • 显示当前用户与组
whoami
  • 查看操作表的命令
table_help
  • 退出HBase Shell
 exit
  • 创建表
create '表名', {NAME => '列族名1'}, {NAME => '列族名2'}, {NAME => '列族名3'}
// 此种方式是上面的简写方式,使用上面方式可以为列族指定更多的属性,如VERSIONS、TTL、BLOCKCACHE、CONFIGURATION等属性
// 推荐
create '表名', '列族名1', '列族名2', '列族名3'
create 'tbl_user', 'info', 'detail'
  • 列出所有的表
list
  • 修改表的结构
alter '表名', '列族名'

alter 'tbl_user', 'address'
  • 删除一个列族
alter '表名', {NAME=> '列族名', METHOD=> 'delete'}

alter 'tbl_user', {NAME=> 'address', METHOD=> 'delete'}
  • 获取表的描述
describe 'table_name'
  • 表是否存在
exists '表名'

exists 'tbl_user'
  • 启用表和禁用表
enabled 'table_name'

disabled 'table_name'

查看表是否被禁用

is_enabled 'table_name'

is_disabled 'table_name'
  • 删除表

先禁用,再删除

disable 'tbl_user'
drop 'tbl_user'
  • 插入和修改数据
# 第一行数据
put 'tbl_user', 'mengday', 'info:id', '1'
put 'tbl_user', 'mengday', 'info:name', '张三'
put 'tbl_user', 'mengday', 'info:age', '28'

put 'tbl_user', 'mengday', 'detail:birthday', '1990-06-26'
put 'tbl_user', 'mengday', 'detail:email', 'abc@163.com'
put 'tbl_user', 'mengday', 'detail:create_time', '2019-03-04 14:26:10'

put 'tbl_user', 'mengday', 'address', '上海市'

# 第二行数据
put 'tbl_user', 'vbirdbest', 'info:id', '2'
put 'tbl_user', 'vbirdbest', 'info:name', '李四'
put 'tbl_user', 'vbirdbest', 'info:age', '27'

put 'tbl_user', 'vbirdbest', 'detail:birthday', '1990-06-27'
put 'tbl_user', 'vbirdbest', 'detail:email', 'xxx@gmail.com'
put 'tbl_user', 'vbirdbest', 'detail:create_time', '2019-03-05 14:26:10'

put 'tbl_user', 'vbirdbest', 'address', '北京市'

# 第一行数据
put 'tbl_user', 'xiaoming', 'info:id', '3'
put 'tbl_user', 'xiaoming', 'info:name', '王五'
put 'tbl_user', 'xiaoming', 'info:age', '26'

put 'tbl_user', 'xiaoming', 'detail:birthday', '1990-06-28'
put 'tbl_user', 'xiaoming', 'detail:email', 'xyz@qq.com'
put 'tbl_user', 'xiaoming', 'detail:create_time', '2019-03-06 14:26:10'

put 'tbl_user', 'xiaoming', 'address', '杭州市'

在这里插入图片描述

  • 全表扫描
scan 'table_name'
  • 扫描表的列簇
scan 'table_name', {COLUMN=>'info'}
  • 扫描列簇的某个列
scan 'tbl_user', {COLUMN=>'info:age'}
  • 获取簇数据和获取簇中的列数据
get '表名', '行键'

get '表名', '行键', '列族名'
  • 删除列族的某个列
delete '表名', '行键', '列族名:列名'
  • 删除某行数据
deleteall '表名' '行键'
  • 清空表的数据
truncate 'table_name' 
  • 查询表有多少行
count 'table_name'
  • 时间范围
# 语法
scan '表名',{TIMERANGE=>[timestamp1, timestamp2]}

# 示例
scan 'tbl_user',{TIMERANGE=>[1551938004321, 1551938036450]}

NoSQL数据库

NoSQL数据库的简介和兴起的原因

NoSQL,泛指非关系型的数据库。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。

特点,灵活可扩展,灵活的数据模型,与云计算紧密相连

兴起的原因,海量数据的需求,数据高并发的需求,无法满足可扩展和高可用性的需求

非关系型数据库和关系型数据库的区别

NoSQL 的四大数据类型

  • 键值对数据类型

哈希表,这个表中有一个特定的键和一个指针指向特定的数据。
比如,Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB

  • 列存储数据库

通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.

  • 文档型数据库

灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。在处理网页等复杂数据时,文档型数据库比传统键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。

  • 图形型数据库

是使用灵活的图形模型,并且能够扩展到多个服务器上

在这里插入图片描述

NoSQL 三大基石

三大基石是,CAPBASE理论,最终一致性

  • CAP

C,Consistency 一致性,分布式系统的所有数据备份中,在同一时刻是否相同的值

A,Availability 可用性,保证每一个请求不管成功还是失败都具有响应

P,Partition toleration 分区容错性,系统中任意信息的对视或者失败都不会影响系统的继续运行

CAP原则就是这三个元素最多只能实现两个,不可能三者兼顾

  • BASE理论

BASEBasically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写

基本可用(Basically Available
指一个分布式系统的一部分发生问题变得不可用时,其他部分仍然可以正常使用,也就是允许分区失败的情况出现。

例如:一个数据库系统部署了很多节点,有可能一两个节点出现了失败,但是整个系统依然是可用的

软状态(Soft State):
与硬状态是对应的,指状态可以有一段时间不同步,具有不同步的时间窗口,具有一定滞后性。

补充:硬状态(Hard State):数据库状态必须一直保持数据库状态一致性,就是指任意时刻数据必须时正确的。

最终一致性(Eventual Consistency
一致性的类型包括“强一致性”和“弱一致性”,两者的主要区别在于高并发的数据访问操作下,后续操作是否能够获取最新的数据。最终一致性是为弱一致性的一种特例。

强一致性:一般要求,执行完一个更新之后,后续的其他操作都能够读到你更新的数据
弱一致性:反之,执行一个更新操作之后,后续的读操作不能保证马上读到你刚写入的数据

  • 最终一致性

最终一致性为弱一致性的一种特例。根据后台各个进程访问到数据的时间和方式不同,可以区分为

因果一致性

进程A更新了数据,通知B进程,B进程就可以访问到更新的值,没有通知,最终可以访问到,不是马上就访问到

读自己之所写

进程A更新的值后,A进程访问数据是更新过后的值

单调读写一致性

进程A看到过数据对象的某个值,那么后续访问都不会返回在那个之前的旧值

会话一致性

读自己所写的一致性

单调写一致性

保证来自同一进程的写操作按照顺序执行

World Count的MapReduce处理

在这里插入图片描述统计单词个数

    public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{

        private final static IntWritable one = new IntWritable(1);
        private Text word = new Text();

        public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
            StringTokenizer itr = new StringTokenizer(value.toString());
            while (itr.hasMoreTokens()) {
                word.set(itr.nextToken());
                context.write(word, one);
            }
        }
    }

    public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> {
        private IntWritable result = new IntWritable();

        public void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {
            int sum = 0;
            for (IntWritable val : values) {
                sum += val.get();
            }
            result.set(sum);
            context.write(key, result);
        }
    }

统计单词的长度数量,map函数和reduce函数

    public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {
        private final static IntWritable one = new IntWritable(1);
        private Text category = new Text();

        public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
            StringTokenizer itr = new StringTokenizer(value.toString()," ,:?;\\.\t\n\r\f" ); //
            while (itr.hasMoreTokens()) {
                String w = itr.nextToken();
                int length = w.length();
                String c;
                //w="come" -->"small"
                if(length == 1){				//w.startsWith("C") w.length() == 4
                    c ="tiny";
                }
                else if(length >= 2 && length <=4){				//w.startsWith("C") w.length() == 4
                    c ="small";
                }
                else if(length >= 5 && length <=9){				//w.startsWith("C") w.length() == 4
                    c ="medium";
                }
                else
                {
                    c ="big";
                }
                category.set(c);
                context.write(category, one);
            }
        }
    }
    public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
        private IntWritable result = new IntWritable();

        public void reduce(Text key, Iterable<IntWritable> values,
                           Context context) throws IOException, InterruptedException {
            int sum = 0;
            for (IntWritable val : values) {
                sum += val.get();
            }
            result.set(sum);
            context.write(key, result);
        }
    }

Flink的容错机制

Exactly once,是指每条 event 会且只会对 state产生一次影响,这里的“一次”并非端到端的严格一次,而是指在Flink内部只处理一次,不包括source sink的处理。

At least once,是指每条event 会对state产生最少一次影响,也就是存在重复处理的可能。

At most once,是指每条event 会对state产生最多一次影响,就是状态可能会在出错时丢失。

Flink是如何实现End-To-End Exactly-once的?

Flink通过状态和两次提交协议来保证了端到端的exactly-once语义 Source支持数据的replay,如Kafkaoffset

Transformation:借助于checkpoint

Sink: Checkpoint+两阶段事务提交

Spark 计算 Pi

idea 中编写spark计算Pi

object ScalaPi {
  def main(args: Array[String]) {
    //创建一个Config
    val conf =
      new SparkConf()
        .setAppName("ScalaPI")
        .setMaster("local")

    //核心创建SparkContext对象
    val sc = new SparkContext(conf)

    //计算PI
    val count = sc.parallelize(1 to 10000).filter { _ =>
      val x = math.random
      val y = math.random
      x * x + y * y < 1
    }.count()
    println(s"Pi is roughly ${4.0 * count / 10000}")

    //停止SparkContext对象
    sc.stop()
  }
}

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

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

相关文章

敲开社科院与杜兰大学金融管理硕士项目的大门,开启在职读研的快乐时光

随着23考研的到来&#xff0c;备考的你做好准备了吗&#xff1f;2023年考研人数预计超过520万&#xff0c;达到历史新高&#xff0c;前段时间还有人热议&#xff0c;不久的将来研究生学历将成为各大国有企业入职的起步门槛。随着各个行业对人才要求的提高&#xff0c;考研热度持…

hadoop项目实战——奥运会数据分析

大三学期项目 hadoop MapReduce 奥运会数据分析结果&#xff1a; 有没需要详细实现方法的小伙伴呀&#xff1f;可以在评论区评论一下。 如果人多&#xff0c;那么后续会详细更新实现方法。

微服务保护

一、初识Sentinel 1. 雪崩问题及解决方案 微服务调用链路中的某个服务故障&#xff0c;引起整个链路中的所有微服务都不可用&#xff0c;这就是雪崩。 解决雪崩问题的常见方式有四种&#xff1a; &#xff08;1&#xff09;超时处理&#xff1a;设定超时时间&#xff0c;请求超…

【JVM】StringTable

String的基本特性 String&#xff1a;字符串&#xff0c;使用一对 ”” 引起来表示 String s1 “mogublog” ; // 字面量的定义方式String s2 new String(“moxi”); string声明为final的&#xff0c;不可被继承String实现了Serializable接口&#xff1a;表示字符串是支持序…

软件测试:随机测试

随机测试流程&#xff0c;自我积累&#xff0c;暂时作为base模板&#xff0c;后续会继续优化 ps&#xff1a;后续目标&#xff0c;可以完成随机测试-APP-模块初稿 1.发起随机测试 项目负责人发起随机测试&#xff0c;明确项目背景&#xff0c;筛选测试目标模块 随机测试的模…

计算机毕业设计php+vue基于微信小程序的音乐云系统-音乐播放系统

项目介绍 随着计算机技术的高速发展,现代计算机系统已经从以计算为中心向以信息化处理为中心的方向发展。如何充分利用互联网,这是大家共同关心的问题。本文主要介绍了关于音乐云微信小程序的实现方法,设计规划了音乐云微信小程序的网页,以互联网的形式将分散的用户进行统一管理…

数据库大作业——学生选课系统(基于SpringBoot+Mysql)

文章目录一、需求分析1、项目背景2、项目目标二、系统功能分析1、多角色划分2、模块功能详述三、系统架构1、技术选型2、系统分析3、架构设计4、系统演变四、数据库设计1、概念结构设计2、逻辑结构设计3、物理结构设计五、系统优化1、缓存2、池化技术3、读写分离4、后续优化3、…

Java项目中集成Redis提升系统的性能

概述 安装Redis 安装 启动Rocky Linux 9.0&#xff0c;在浏览器中打开web console. 如果没有安装Web console&#xff0c;按以下步骤安装启用&#xff1a; 安装命令&#xff1a; # dnf install cockpit 启用并运行服务 # systemctl enable --now cockpit.socket 开通防火墙&…

Xinlei cheng报告学习

上面是 下面是momuten encoder 关键词 variance 方差 asymmetric不对称 momentum encoder 动量 dimension维度 convergence收敛 symmetrizationsy均衡 contrastive learning 对比学习 autoregressive自回归 distillation蒸馏 没有 fc layer +bn 裁剪后variance方差变大 cum…

canvas截取多个视频的第一帧,第n秒画面

业务涉及视频预览&#xff0c;不点击视频则不播放而是先展示视频的画面给到用户 “因为本人特别喜欢梅艳芳&#xff0c;所以也留存了很多她的视频&#xff0c;这里就以她的视频做测试了” 截取多个视频的第一帧&#xff0c;使用&#xff1a;Promiseloadeddata事件canvas Pro…

如何提高测试的质量

一、需求与测试需求方面 1.应从产品人员手中获取需求&#xff0c;尽量要求产品人员对需求进行讲解(需求评审) 2.我们要做测试需求分析&#xff0c;并应用相对应的方法论&#xff0c;还要进行需求串讲 3.测试需求分析的方法&#xff1a;分解功能点&#xff0c;然后对每一个功…

数据分析思维(二)|相关思维

1、概念 相关思维是数据分析中最常见的思维之一&#xff0c;在我们观察指标变化的时候&#xff0c;往往需要观察指标之间的相关关系&#xff0c;比如观察自己身高和体重的变化&#xff0c;这就是一种相关思维的体现。 衡量指标之间的相关关系&#xff0c;常见的相关性分析方法…

[Linux打怪升级之路]-重定向

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 目录 一、文件描述符 1、初…

步步详解IntelliJ IDEA创建springboot项目并运行

1. SpringBoot 简介 SpringBoot 是由 Pivotal 团队提供的全新框架&#xff0c;其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。 我们在学习 Spring 的时候说过 Spring 框架是为了简化开发的&#xff0c;而 SpringBoot 是为了简化 Spring 开发的&#xff0c; 由此…

easylabel | 完美拯救手残党不会标注突出重点!(Label!~ Label!~)

1写在前面 我们在画图的时候经常需要标记某个值, 如散点图中的某个具体的点, 火山图中的某个基因, 但对于代码不太熟悉的小白来说, 还是有一定难度的.&#x1f92a; 本期和大家介绍一个基于shiny轻松进行label的包, 即easylabel包, 轻松实现交互式label, 麻麻再也不用担心你的画…

全国青少年软件编程(Scratch)等级考试二级考试真题2021年12月——持续更新.....

电子学会202112Scratc二级真题及参考答案 1.舞台上有3个角色,小猫的程序如下图所示,另外两个角色没有程序。点击绿旗,下列选项正确的是? A.小猫随鼠标移动,可能会遮挡其他两个角色 B.小猫随鼠标移动,可能会被其他两个角色遮挡 C.小猫不会随鼠标移动,更不会被遮挡 D.…

一睹风采,见证郁锦香酒店遍布全球核心城市的百变姿态

随着消费需求的不断升级&#xff0c;酒店消费场景也进行着多元化的发展&#xff0c;城市高端度假品牌正积极溯源消费需求&#xff0c;寻得品牌文化延伸的可靠路径。同时&#xff0c;各大酒店品牌也加快在市场布局的脚步&#xff0c;希望通过布局城市核心区域获得可持续发展的更…

企业微信-自建应用二:消息发送测试

1.开发过程 要测试企微自建应用的消息发送功能 企业微信开发者中心-调试工具 建立连接 corpsecret即是自建应用的Secret 输入参数&#xff0c;调用接口&#xff0c;即可拿到返回的token 发送应用消息 填写token&#xff0c;以及body消息体 {"touser": "Us…

Birdboot第二天

目录 V4 HttpServletRequest保存请求内容 1.此类专门处理请求 把获取请求的readline()和拆分代码移动过来 2.ClientHandler客户端处理器实例化HttpServletRequest 3. 拆分的信息从局部变量 变成属性 4.建方法 解析请求行 消息头 消息正文 V5 发送响应 1.在客户端处理器 …

非洲秃鹫优化算法:求解全局优化问题的一种新的自然启发元启发式算法(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 元启发式在解决优化问题中起着至关重要的作用。大多数此类算法的灵感来自于自然界中生物的集体智能和觅食。本文以非洲秃鹫的生…