【大数据学习篇12】 Spark项目实战-数据可视化

news2024/11/16 11:31:24

学习目标/Target

了解数据可视化系统架构

掌握Phoenix集成HBase

 熟悉建立Phoenix与HBase表映射

了解Spring Boot项目的创建

掌握Java Web项目中实体类的创建

掌握Java Web项目中数据库访问接口的创建

掌握Java Web项目中控制器类的创建

熟悉Java Web项目中HTML页面的创建

 熟悉如何运行Spring Boot项目

概述

        数据可视化是指将数据或信息表示为图形中的可视对象来传达数据或信息的技术,目标是清晰有效地向用户传达信息,以便用户可以轻松了解数据或信息中的复杂关系。用户可以通过图形中的可视对象直观地看到数据分析结果,从而更容易理解业务变化趋势或发现新的业务模式。数据可视化是数据分析中的一个重要步骤。本章将详细讲解如何搭建数据可视化系统,展示本项目的分析结果数据。

1. 系统概述

1.1  技术选取

        SpringBoot 的设计目的是为了简化Spring应用的初始搭建以及开发过程,摆脱复杂的手动配置,能迅速搭建起一个Java Web项目。

        MyBatis是一个开源的数据持久层框架,其内部封装了JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射。

         Echarts是一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,提供了多种丰富的可视化类型。

多学一招:Phoenix查询引擎与MyBatis

        MyBatis是一个支持SQL查询的数据持久层框架,而项目所用到的HBase数据库是不支持JDBC访问和SQL语句查询的,这就导致我们搭建的数据可视化系统无法使用MyBatis框架访问HBase数据库。因此,需要借助Apache Phoenix查询引擎使得HBase支持通过JDBC的方式进行访问,并将SQL查询转成 HBase的相关操作。 

 1.2  系统架构

 离线数据可视化展示

 

 实时数据可视化展示

2. 数据表设计与实现

2.1  数据表介绍

热门品类Top10分析结果表user_session_top10

字段名称

数据类型

相关说明

ROW

varchar

主键(对应HBase表中的RowKey)

cartcount

varchar

品类中商品被加入购物车的总次数

category_id

varchar

品类id

purchasecount

varchar

品类中商品被购买的总次数

viewcount

varchar

品类中商品被查看的总次数

各区域热门商品Top3分析结果表user_session_top3

字段名称

数据类型

相关说明

ROW

varchar

主键(对应HBase表中的RowKey)

product_id

varchar

商品id

viewcount

varchar

商品被查看的总次数

area

varchar

区域名称

页面单跳转化率统计表conversion

字段名称

数据类型

相关说明

ROW

varchar

主键(对应HBase表中的RowKey)

convert_page

varchar

转换页面(网页切片)

convert_rage

varchar

转换率

用户广告点击流实时统计表adstream

字段名称

数据类型

相关说明

ROW

varchar

主键(对应HBase表中的RowKey)

city

varchar

城市名称

ad_count

varchar

广告点击次数

ad_id

varchar

广告id

2.2  Phoenix集成HBase

 在虚拟机Spark01中安装Phoenix并集成HBase。

STEP  01

下载Phoenix安装包:

        访问Phoenix官网下载Linux操作系统的Phoenix安装包apache-phoenix-4.14.1-HBase-1.2-bin.tar.gz。

STEP  02

上传Phoenix安装包:

        使用SecureCRT远程连接工具连接虚拟机Spark01,在存放应用安装包的目录/export/software/下执行“rz”命令上传Phoenix安装包。

STEP  03
安装Phoenix:

         通过解压缩的方式安装Phoenix,将Phoenix安装到存放应用的目录/export/servers/。

tar -zxvf /export/software/apache-phoenix-4.14.1-HBase-1.2-bin.tar.gz -C /export/servers/

STEP  04
Phoenix集成HBase(拷贝jar包):

        进入Phoenix安装目录,将phoenix-core-4.14.1-HBase-1.2.jar和phoenix-4.14.1-HBase-1.2-client.jar拷贝到HBase安装目录的lib目录下。

$ cd /export/servers/apache-phoenix-4.14.1-HBase-1.2-bin/

$ cp {phoenix-core-4.14.1-HBase-1.2.jar,phoenix-4.14.1-HBase-1.2-client.jar} /export/servers/hbase-1.2.1/lib/

STEP  05

Phoenix集成HBase(关闭HBase集群):

        执行“stop-hbase.sh”命令关闭HBase集群。

STEP  06

Phoenix集成HBase(修改HBase配置文件):

        进入HBase安装目录下的conf目录,执行“vi hbase-site.xml”命令编辑hbase-site.xml文件,添加命名空间映射配置。

<property>

    <name>phoenix.schema.isNamespaceMappingEnabled</name>

    <value>true</value>

</property>

<property>

    <name>phoenix.schema.mapSystemTablesToNamespace</name>

    <value>true</value>

</property>

STEP  07
Phoenix集成HBase(分发文件):

        将HBase安装目录分发到集群中的其它两台虚拟机Spark02和Spark03。

scp -r /export/servers/hbase-1.2.1/ root@spark02:/export/servers/

scp -r /export/servers/hbase-1.2.1/ root@spark03:/export/servers/

STEP  08

Phoenix集成HBase(复制HBase配置文件):

        进入HBase安装目录下的conf目录,将hbase-site.xml文件复制到Phoenix安装目录下的bin目录。

cp hbase-site.xml /export/servers/apache-phoenix-4.14.1-HBase-1.2-bin/bin/

STEP  09

Phoenix集成HBase(启动HBase集群):

        执行“start-hbase.sh”命令启动HBase集群。

        在启动HBase集群前应确保Hadoop和Zookeeper集群正常启动,且保证集群各服务间时间一致,若出现时间不一致情况,则需要在各服务器执行“systemctl restart chronyd”命令重启chronyd服务进行时间同步。

2.3  建立Phoenix与HBase表映射

 

        操作Phoenix,建立Phoenix与HBase表映射。

         Phoenix提供三种操作方式,即命令行界面、JDBC和Squirrel,其中命令行界面是Phoenix默认提供的交互工具sqlline;JDBC是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口;Squirrel是Phoenix的客户端工具提供可视化操作窗口。

 

 连接Phoenix:
         在Phoenix安装目录的bin目录中存在Python脚本文件sqlline.py用于启动sqlline,在启动sqlline时需要输入Zookeeper集群地址及端口号连接Phoenix。

#进入Phoenix安装目录 $ cd /export/servers/apache-phoenix-4.14.1-HBase-1.2-bin

#启动sqlline

$ bin/sqlline.py spark01,spark02,spark03:2181

 
查看Phoenix表及视图:

         在sqlline中执行“!table”命令查看Phoenix表及视图。

 

 

 建立表映射(top10):

        通过CREATE语句在Phoenix中创建表top10建立与HBase数据库中表top10 的映射。

> create table "top10"

> (

> "ROW" varchar primary key,

> "top10_category"."cartcount" varchar,

> "top10_category"."category_id" varchar ,

> "top10_category"."purchasecount" varchar ,

> "top10_category"."viewcount" varchar

> ) column_encoded_bytes=0;

        建立表映射(top3)。 通过CREATE语句在Phoenix中创建表top3建立与HBase数据库中表top3 的映射。 

> create table "top3"

> (

> "ROW" varchar primary key,

> "top3_area_product"."product_id" varchar,

> "top3_area_product"."viewcount" varchar,

> "top3_area_product"."area" varchar

> ) column_encoded_bytes=0;

建立表映射(conversion):

        通过CREATE语句在Phoenix中创建表conversion建立与HBase数据库中表conversion的映射。 

> create table "conversion"

> (

> "ROW" varchar primary key,

> "page_conversion"."convert_page" varchar,

> "page_conversion"."convert_rage" varchar

> ) column_encoded_bytes=0;

 建立表映射(adstream):        

         通过CREATE语句在Phoenix中创建表adstream建立与HBase数据库中表adstream的映射。

> create table "adstream"

> (

> "ROW" varchar primary key,

> "area_ads_count"."city" varchar,

> "area_ads_count"."ad_count" varchar,

> "area_ads_count"."ad_id" varchar

> ) column_encoded_bytes=0; 

        Phoenix的命令区分大小写,如果不加双引号,则默认为大写,因此在Phoenix中执行创建表的命令时需要在表名、列族名和列名处添加双引号。 

        若在Phoenix中执行删除表操作,则HBase中具有映射关系的表也会一同被删除,导致数据丢失。如果Phoenix中创建的映射表只是用于查询操作,则建议使用创建视图的方式建立映射,建立视图映射的方式与建立表映射的方式一致,这里以建立视图adstream的映射为例。

> create view "adstream"

> ( > "ROW" varchar primary key,

> "area_ads_count"."city" varchar,

> "area_ads_count"."ad_count" varchar,

> "area_ads_count"."ad_id" varchar

> );

        如果想要删除Phoenix中的表,又不想在删除Phoenix表的同时删除HBase中的映射表,造成数据的丢失,那么可以在Phoenix中执行删除表操作前,在HBase中创建映射表的快照。

disable '映射表'

#关闭表 snapshot '映射表', '快照名称'

#创建快照

        在Phoenix中执行删除表操作后,在HBase中通过创建的快照恢复映射表。

list_snapshots  #查询所有快照

clone_snapshot '快照名称', '映射表'   #克隆快照赋予新的表

3. 创建Spring Boot项目

通过IntelliJ IDEA开发工具创建并配置Spring Boot项目,为数据可视化系统的实现奠定基础。

步骤一:创建项目

        打开IntelliJ IDEA开发工具,使用Spring Initializr初始化Spring Boot项目,构建Spring Boot项目结构。

选择使用的JDK版本

步骤二:配置项目信息

在“Project Metadata”界面配置项目基本信息。

项目组织唯一标识符

项目唯一的标识符

JDK版本

 步骤三:配置项目依赖关系

在“Dependencles”界面配置项目依赖关系。

选择使用Spring Boot的版本

添加Spring Web依赖

步骤四:配置项目名称和目录 

配置项目名称

配置项目目录

步骤五:初始化项目

步骤六:初始化完成后的目录结构 

Spring Boot项目默认会生成项目启动类

静态资源文件夹(static)

模板页面文件夹(templates)

项目全局配置文件(application.properties)

Spring Boot项目默认会生成项目测试类

步骤七:调整项目目录结构 

        为了便于区分项目中不同类的功能,这里对项目默认的目录结构进行调整,在包“cn.itcast.sparkweb”下创建用于存放实体类的包entity、存放数据访问接口的包dao和存放控制器类的包controller。

 步骤八:配置项目依赖

        本项目所需要的依赖包括Thymeleaf、Tomcat、Phoenix、MyBatis和Joda-Time。其中Thymeleaf是一个模板引擎用于Java Web应用程序开发;Tomcat是Web容器用于运行Java Web应用程序;Phoenix用于在项目中通过Java API操作Phoenix;MyBatis用于在项目中使用MyBatis框架;Joda-Time是Java日期时间处理库。

 步骤八:配置项目全局配置文件

在项目的resources目录配置全局配置文件application.properties,添加如下配置内容:

#设置连接Phoenix的JDBC驱动器

spring.datasource.driver-class-name=org.apache.phoenix.jdbc.PhoenixDriver

#设置Phoenix连接地址及端口号 spring.datasource.url=jdbc:phoenix:192.168.121.132,192.168.121.133,192.168.121.134:2181 #设置Thymeleaf模板路径

spring.thymeleaf.prefix=classpath:/templates/

# 设置Thymeleaf模板后缀名

spring.thymeleaf.suffix=.html

4. 实现热门品类Top10数据可视化

4.1  创建实体类Top10Entity

        为了便于热门品类Top10分析结果数据的传递,在项目的entity包中创建实体类Top10Entity,存储Phoenix中表top10的数据。

public class Top10Entity {

    private String cartcount;

    private String category_id;

    private String purchasecount;

    private String viewcount;

    //实现属性的getter/setter方法

    ...

}

4.2  创建数据库访问接口Top10Dao

        在项目的dao包中创建一个数据库访问接口Top10Dao,读取Phoenix中表top10的数据。

import cn.itcast.sparkweb.entity.Top10Entity;

import org.apache.ibatis.annotations.Mapper;

import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper

public interface Top10Dao {

    @Select("select \"cartcount\",\"category_id\",\"purchasecount\",\"viewcount\" from \"top10\"")

    List<Top10Entity> getTop10();

}

4.3  创建控制器类Top10Controller

        在项目的controller包中创建控制器类Top10Controller,用于实现接口Top10Dao中的方法getTop10()读取表top10的数据,通过Model对象向HTML传递数据。

@Controller public class Top10Controller {

    @Autowired

    private Top10Dao top10Dao;

    @RequestMapping(value = "/top10",produces = "text/html;charset=utf-8")

    public String top10(Model model) {

        List<Top10Entity> top10 = top10Dao.getTop10();         model.addAttribute("top10",top10);

        return  "top10";

    }

}

        若在Top10Controller中的接口上添加Autowired注解时,程序报错,报错的内容为“Could not autowire. No beans of ‘ Top10Dao’ type found.”,这是IntelliJ IDEA内置的检查工具导致,并不影响程序的启动和编译,可以参照如图所示内容消除此问题。 

4.4  创建HTML文件top10.html 

        在项目中的templates目录下创建HTML文件top10.html,在该文件中通过jQuery获取Model对象传递到HTML的热门品类Top10的数据,并将获取到的数据填充到ECharts柱状图模板中,实现热门品类Top10数据的可视化展示。

<!DOCTYPE html>

<html lang="en" xmlns:th="http://www.thymeleaf.org">

<head>

    <meta charset="UTF-8">

    <title>top10</title>

    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>

    <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>

</head>

<body> …… </body>

</html>

4.5 运行项目实现热门品类Top10数据可视化

        为了避免JDBC无法操作Phoenix的问题,在运行项目前需要在项目的resources目录下创建Hbase-site.xml文件,在文件中添加开启命名空间和支持二级索引配置。

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

    <name>phoenix.schema.isNamespaceMappingEnabled</name>

    <value>true</value>

    <description>开启命名空间</description>

</property>

<property>

    <name>hbase.regionserver.wal.codec</name>

<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>

    <description>支持二级索引</description>

</property>

</configuration>

单击IntelliJ IDEA中的【启动】按钮运行项目。

在IntelliJ IDEA控制台可查看项目的启动信息。

 在浏览器中输入“http://localhost:8080/top10”查看热门品类Top10数据可视化的展示效果。

        首先,通过解压缩的方式在Windows操作系统中安装Hadoop;然后,将Hadoop添加到系统环境变量中,如图所示。

        在Windows操作系统的C:\Windows\System32\drivers\etchost目录下编辑映射文件host,添加如下内容。

192.168.121.132 spark01

192.168.121.133 spark02

192.168.121.134 spark03

5. 实现各区域热门商品Top3数据可视化

5.1  创建实体类Top3Entity

        为了便于各区域热门商品Top3分析结果数据的传递,在项目的entity包中创建实体类Top3Entity,存储Phoenix中表top3的数据。

public class Top3Entity {

    private String product_id;

    private String viewcount;

    private String area;

   //实现属性的getter和setter方法

   ...

}

5.2  创建数据库访问接口Top3Dao

        在项目的dao包中创建一个数据库访问接口Top3Dao,读取Phoenix中表top3的数据。

import cn.itcast.sparkweb.entity.Top3Entity;

import org.apache.ibatis.annotations.Mapper;

import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper

public interface Top3Dao {

    @Select("select \"product_id\",\"viewcount\",\"area\" from \"top3\"")

    List<Top3Entity> getTop3();

}

5.3  创建控制器类Top3Controller

        在项目的controller包中创建控制器类Top3Controller,用于实现接口Top3Dao中的方法getTop3()读取表top3的数据,通过Model对象向HTML传递数据。

@Controller

public class Top3Controller {

    @Autowired

    private Top3Dao top3Dao;

    @RequestMapping(value = "/top3",produces = "text/html;charset=utf-8")

    public String top3(Model model) {

     List<Top3Entity> top3 = top3Dao.getTop3();

     model.addAttribute("top3",top3);

     return  "top3";

    }

}

5.4  创建HTML文件top3.html

        在项目中的templates目录下创建HTML文件top3.html,在该文件中通过jQuery获取Model对象传递到HTML的各区域热门商品Top3的数据,并将获取到的数据填充到ECharts柱状图模板中,实现各区域热门商品Top3数据的可视化展示。

<!DOCTYPE html>

<html lang="en" xmlns:th="http://www.thymeleaf.org">

<head>

    <meta charset="UTF-8">

    <title>top3</title>

    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>

    <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>

</head>

<body>

……

</body>

</html>

5.5    运行项目实现各区域热门商品Top3数据可视化

        在IntelliJ IDEA中单击【启动】按钮运行项目,项目启动成功后,在浏览器中输入“http://localhost:8080/top3”查看各区域热门商品Top3数据可视化的展示效果。

6. 实现页面单跳转化率数据可视化

6.1  创建实体类ConversionEntity

        为了便于页面单跳转化率数据的传递,在项目的entity包中创建实体类ConversionEntity,存储Phoenix中表conversion的数据。

public class ConversionEntity {

    private String convert_page;

    private String convert_rage;

    //实现属性的getter和setter方法

    ...

}

6.2  创建数据库访问接口ConversionDao

        在项目的dao包中创建一个数据库访问接口ConversionDao,读取Phoenix中表conversion的数据。

import cn.itcast.sparkweb.entity.ConversionEntity;

import org.apache.ibatis.annotations.Mapper;

import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper

public interface ConversionDao {

    @Select("select \"convert_page\",\"convert_rage\" from \"conversion\"")     List<ConversionEntity> getConversion();

}

6.3  创建控制器类ConversionController

        在项目的controller包中创建控制器类ConversionController,用于实现接口ConversionDao中的方法conversion()读取表conversion的数据,通过Model对象向HTML传递数据。

@Controller public class ConversionController {

    @Autowired

    private ConversionDao conversionDao;

    @RequestMapping(value = "/conversion",produces = "text/html;charset=utf-8")

    public String conversion(Model model){

        List<ConversionEntity> conversion = conversionDao.getConversion();

        model.addAttribute("conversion",conversion);

        return "conversion";

    }

}

6.4  创建HTML文件conversion.html

        在项目中的templates目录下创建HTML文件conversion.html,在该文件中通过jQuery获取Model对象传递到HTML的页面单跳转化率数据,并将获取到的数据填充到ECharts柱状图模板中,实现页面单跳转化率数据的可视化展示。

<!DOCTYPE html>

<html lang="en" xmlns:th="http://www.thymeleaf.org">

<head>

    <meta charset="UTF-8">

    <title>conversion</title>

    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>

    <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>

</head>

<body>

……

</body>

</html>

6.5    运行项目实现页面单跳转化率数据可视化

        在IntelliJ IDEA中单击【启动】按钮运行项目,项目启动成功后,在浏览器中输入“http://localhost:8080/conversion”查看页面单跳转化率数据可视化的展示效果。

7. 实现广告点击流实时统计可视化

7.1  创建实体类AdsEntity

        为了便于广告点击流实时统计结果数据的传递,在项目的entity包中创建实体类AdsEntity,存储Phoenix中表adstream的数据。

public class AdsEntity {

    private String city;

    private String ad_count;

    private String ad_id;

    //实现属性的getter和setter方法

    ...

}

7.2  创建数据库访问接口ConversionDao

        在项目的dao包中创建一个数据库访问接口AdsDao,读取Phoenix中表adstream的数据。

import cn.itcast.sparkweb.entity.AdsEntity;

import org.apache.ibatis.annotations.Mapper;

import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper public interface AdsDao {

    @Select("select \"city\",\"ad_count\",\"ad_id\" from \"adstream\"")

    List<AdsEntity>

ads();

}

7.3  创建控制器类AdsController

        在项目的controller包中创建控制器类AdsController,用于实现接口AdsDao中的方法adsData ()读取表adstream的数据,将此数据作为方法的返回值传递到HTML。

@Controller public class AdsController {

    @Autowired

    private AdsDao adsDao;

    @RequestMapping(value = "/adsdata",method = RequestMethod.POST)     @ResponseBody

    public List<AdsEntity> adsData(){

        List<AdsEntity> ads = adsDao.ads();

        return ads;

    }

}

7.4  创建HTML文件ads.html

        在项目中的templates目录下创建HTML文件ads.html,在该文件中通过jQuery的Ajax处理控制器类AdsController中adsData()方法返回的广告点击流实时统计数据,并将获取到的数据实时填充到ECharts柱状图模板中,实现广告点击流实时统计的可视化展示。

<!DOCTYPE html>

<html lang="en" xmlns:th="http://www.thymeleaf.org">

<head>

    <meta charset="UTF-8">

    <title>ads</title>

    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>

    <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>

</head>

<body>

……

</body>

</html>

7.5    运行项目实现广告点击流实时统计可视化

        在项目sparkweb的主界面中单击【启动】按钮运行项目,项目启动成功后,在浏览器中输入“http://localhost:8080/ads”查看广告点击流实时统计可视化的展示效果。 

小结

        本文主要讲解了如何实现数据的可视化展示,首先,对实现可视化的技术以及系统架构进行详细讲解,使读者对实现数据可视化有了初步认知。接着,通过集成Phoenix与HBase实现将HBase中的数据映射到Phoenix,通过JDBC连接Phoenix获取分析结果。然后,讲解如何创建和配置Spring Boot项目。最后,在Spring Boot项目中编写相关类、接口以及HTML页面实现各区域热门商品Top3、热门品类Top10、页面单跳转化率以及广告点击流实时统计的可视化。通过本章的学习,读者应掌握Phoenix的使用,以及如何通过Spring Boot项目实现数据可视化展示。

求关注,点赞,一建三连!!!

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

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

相关文章

23种设计模式之模板方法模式(Template Method Pattern)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将23种设计模式中的模板方法模式&#xff0c;此篇文章为一天学习一个设计模式系列文章&#xff0c;后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大…

第十九章行为型模式—中介者模式

文章目录 中介者模式解决的问题结构实例存在的问题适用场景 中介者模式和代理模式的区别代理模式中介模式桥接模式总结 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务&#xff0c;它涉及算法…

day0 -- Mysql专业名词认识部分

数据库(database)/资料库 常见的数据库/资料库且以物理形式存在的&#xff0c;比如图书馆&#xff0c;再比如书柜。 是一种有组织的存放资料/数据的容器。 数据库管理系统(DBMS) 创建数据库和管理数据库的系统&#xff0c;可以对数据库进行组织、管理、访问、修改等操作的一套…

真的被00后卷麻了,还好我很会划水~

前情提要 鉴于目前测试就业越来越严峻&#xff0c;内卷也成了测试领域的代名词了。我的一个HR朋友告诉我&#xff0c;现在测试岗的投递比已经将近1000&#xff0c;也就是一个岗位差不多有千份简历投进来&#xff0c;实在是恐怖&#xff01; 前段时间我也去面试了一些公司&…

C4D 必备的 7 个素材网站!

C4D近几年来是一个非常热门的专业/职业&#xff0c;特别是在建模行业大多数时候都会选择使用C4D进行&#xff0c;相信也有很多粉丝朋友喜欢C4D这个类别。 但是我在一些网站上&#xff0c;经常会看到有人说想要一些C4D的素材&#xff0c;但是不知道去哪里找&#xff0c;也不知道…

redis 数据结构String之SDS

redis字符串(String)内存结构&#xff1a; 字符串对象底层数据结构实现为简单动态字符串&#xff08;SDS&#xff09;和直接存储&#xff0c;但其编码方式可以是int、raw或者embstr&#xff0c;区别在于内存结构的不同。 int编码 字符串保存的是整数值&#xff0c;并且这个正式…

iOS 16 UI 设计系统免费在线使用方法

1、iOS 16 UI 设计系统中有什么&#xff1f; iOS 16 UI 设计系统通常包含以下组件和元素&#xff1a; 1. 按钮&#xff1a;包括操作按钮、图标按钮、导航按钮、滚动按钮、切换按钮、单选按钮、复选框按钮、呼叫按钮等各种类型的按钮。 2. 窗口和 UI 控件&#xff1a;包括标签…

JAVA变量在不同情况下未赋值与默认初始值

目录 一、默认初始值 二、本地变量 代码 运行结果 二、实例变量 代码 运行结果 三、本地变量和实例变量的区别 1.作用域 2.生命周期 3.初始化 一、默认初始值 数据类型初始值数据类型初始值byte0long0Lchar‘u0000’float0.0fshort0double0.0int0booleanfalse引用nul…

人工智能-机器学习人工神经网络

机器学习 机器学习部分主要学习的内容是朴素贝叶斯算法和决策树算法。 决策树算法 决策树算法是机器学习中常用的一种分类算法&#xff0c;在决策树中&#xff0c;使用各个属性进行分类&#xff0c;选取每次分类的属性的方式有多种。最简单的是ID3算法&#xff0c;使用信息增…

【论文阅读】Robust Object-based SLAM for High-speed Autonomous Navigation

一、问题概述 这篇文章是在QuadricSLAM的基础上进行的改进&#xff0c;也就是说依然使用了椭球对物体进行描述&#xff0c;论文中提到使用椭球本身是因为椭球其参数化表示可以完全通过相机的检测框来进行约束&#xff0c;二次曲面与对偶二次曲面可以参考链接&#xff0c;文章使…

uniapp-前端 二维码、扫码、长按、识别等问题

一&#xff1a;识别&#xff1a;图片二维码url&#xff1a; 后端返回二维码的图片url&#xff0c;则直接展示&#xff0c;做长按手势识别&#xff0c;再调用方法即可。 <mage>标签长按识别实现&#xff08;微信版本>2.7.0&#xff09; <image show-menu-by-long…

JS数组题

从0到1&#xff1a;JavaScript快速上手第六章课后习题 一、单选题1&#xff0e;下面有一个数组&#xff0c;该数组中数值最小和数值最大的元素的下标分别是&#xff08; &#xff09;。 var arr[3,9,1,12,36,50,21] A&#xff0e;2, 5 B&#xff0e;3, 6 C&#xff0e;2, 6 D&…

【刷题】144. 二叉树的前序遍历

144. 二叉树的前序遍历 一、题目描述二、示例三、实现总结 144. 二叉树的前序遍历 一、题目描述 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 二、示例 示例1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3] 示例 2&#…

第十五章行为性模式—命令模式

文章目录 命令模式解决的问题结构实例存在的问题适用场景 JDK 源码 - Runnable 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。行为型模式分为类…

OW-DETR: Open-world Detection Transformer(论文翻译)

文章目录 OW-DETR: Open-world Detection Transformer摘要1.介绍2.开放世界检测的transformer2.1整体架构2.2.多尺度上下文编码2.3.注意力驱动的伪标签2.4 新类分类2.5.前景物体2.6.训练与推理 3.实验3.1.最新技术水平比较3.2.增量目标检测3.3 消融实验 4.与现有技术的关系5.结…

【干货收藏】 隔离驱动SLMi335/SLMi335H 电路方案分享

数明深力科SLMi33X系列SLMi335/SLMi335H首款单通道带DESAT保护功能的IGBT/SiC隔离驱动器。内置快速去饱和(DESAT) 故障检测功能、米勒钳位功能、漏极开路故障反馈、软关断功能以及可选择的自恢复模式&#xff0c;兼容光耦隔离驱动器。 SLMi33X系列SLMi335/SLMi335H的DESAT阈值…

如何搭建高质量的 B 端产品帮助体系?

在B2B市场中&#xff0c;产品的质量和支持服务对于企业的成功至关重要。帮助中心是B2B企业提供优质支持服务的重要组成部分。那么&#xff0c;如何搭建高质量的B端产品帮助体系呢&#xff1f;本文将为大家介绍一些关键的步骤和方法。 一、了解用户需求 首先&#xff0c;要搭建…

【ZYNQ】QSPI Flash 固化程序全攻略

普通的 FPGA 一般是可以从 Flash 启动&#xff0c;或者被动加载&#xff0c;ZYNQ 的启动是由 ARM 主导的&#xff0c;包括 FPGA 程序的加载&#xff0c;ZYNQ 启动一般为最少两个步骤&#xff0c;在 UG585 中也有介绍。 Stage 0&#xff1a;BootROM 阶段 在 ZYNQ 上电复位或者热…

前端异步请求并解决跨域问题(Ajax+axios框架)、后端响应多个数据(JSON)

目录 一、前后端同步异步请求 1.同步请求&#xff1a; 2.异步请求&#xff1a; 3.跨域问题&#xff08;前端问题&#xff09; 4.axios框架&#xff08;封装后&#xff09; 二、后端向前端响应多个数据-JSON 一、前后端同步异步请求 1.同步请求&#xff1a; 发送一个请求…

【Java多线程进阶】CAS机制

前言 CAS指的是Compare-And-Swap&#xff08;比较与交换&#xff09;&#xff0c;它是一种多线程同步的技术&#xff0c;常用于实现无锁算法&#xff0c;从而提高多线程程序的性能和扩展性。本篇文章具体讲解如何使用 CAS 的机制以及 CAS 机制带来的问题。 目录 1. 什么是CAS&…