当前位置: 首页 > news >正文

大数据-237 离线数仓 - 广告业务 需求分析 ODS DWD UDF JSON 串解析

点一下关注吧!!!非常感谢!!持续更新!!!

Java篇开始了!

目前开始更新 MyBatis,一起深入浅出!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(已更完)
  • Elasticsearch(已更完)
  • DataX(已更完)
  • Tez(已更完)
  • 数据挖掘(已更完)
  • Prometheus(已更完)
  • Grafana(已更完)
  • 离线数仓(正在更新…)

章节内容

上节我们完成了如下的内容:

  • 会员活跃度 WDS 与 ADS 导出到 MySQL
  • 广告业务 需求分析

在这里插入图片描述

广告业务

基本介绍在上节已经完成,本节我们继续处理这块业务。

需求分析

事件日志数据样例:

{"wzk_event": [{"name": "goods_detail_loading","json": {"entry": "3","goodsid": "0","loading_time": "80","action": "4","staytime": "68","showtype": "4"},"time": 1596225273755}, {"name": "loading","json": {"loading_time": "18","action": "1","loading_type": "2","type": "3"},"time": 1596231657803}, ...

采集的信息包括:

  • 商品详情页加载:goods_detail_loading
  • 商品列表:loading
  • 消息通知:notification
  • 商品评论:comment
  • 收藏:favorites
  • 点赞:praise
  • 广告:ad

在广告的字段中,收集到的数据有:

  • action 用户行为 0曝光 1曝光后点击 2购买
  • duration 停留时长
  • shop_id 商家id
  • event_type “ad”
  • ad_type 1JPG 2PNG 3GIF 4SWF
  • show_style 0静态图 1动态图
  • product_id 产品id
  • place 广告位置 1首页 2左侧 3右侧 4列表页
  • sort 排序位置

需求指标

点击次数统计(分时统计)

  • 曝光次数、不同用户ID数、不同用户数
  • 点击次数、不同用户ID数、不同用户数
  • 购买次数、不同用户ID数、不同用户数

转化率-漏斗分析

  • 点击率 = 点击次数/曝光次数
  • 购买率 = 购买次数/点击次数

活动曝光效果评估
行为(曝光、点击、购买)、时间段、广告位、产品、统计对应的次数
时间段、广告位、商品,曝光次数最多的前N个

ODS层

建立新表

Hive启动之后,切换到 ods层,然后我们继续创建外部表,将数据映射到Hive中

use ods;
drop table if exists ods.ods_log_event;
CREATE EXTERNAL TABLE ods.ods_log_event(`str` string
) PARTITIONED BY (`dt` string)
STORED AS TEXTFILE
LOCATION '/user/data/logs/event';

执行结果如下图所示:
在这里插入图片描述

编写脚本

vim /opt/wzk/hive/ods_load_event_log.sh

编写脚本,写入内容如下:

#!/bin/bash
source /etc/profile
if [ -n "$1" ]
then
do_date=$1
else
do_date=`date -d "-1 day" +%F`
fi
sql="
alter table ods.ods_log_event add partition (dt='$do_date');
"
hive -e "$sql"

写入的内容如下所示:
在这里插入图片描述

DWD层

ODS:分区,事件的主要信息在JSON串中(JSON数组),公共信息在另外一个JSON串中
ODS:解析JSON,从JSON串中,提取JSONArray数据,将公共信息从JSON串中解析出来,所有事件的明细

所有事件的明细,包括:

  • 分区
  • 事件(JSON串)
  • 公共信息字段

所有事件的明细 => 广告JSON串即系 => 广告事件的明细
广告事件的明细:

  • 分区
  • 广告信息字段
  • 公共信息字段

建立新表

Hive启动之后,切换到 dwd 层,然后我们继续创建外部表,将数据映射到Hive中:
所有事件的明细表:

use dwd;
-- 所有事件明细
drop table if exists dwd.dwd_event_log;
CREATE EXTERNAL TABLE dwd.dwd_event_log(`device_id` string,`uid` string,`app_v` string,`os_type` string,`event_type` string,`language` string,`channel` string,`area` string,`brand` string,`name` string,`event_json` string,`report_time` string)
PARTITIONED BY (`dt` string)
stored as parquet;

运行结果如下图所示:
在这里插入图片描述
与广告点击明细:

use dwd;
-- 与广告点击明细
drop table if exists dwd.dwd_ad;
CREATE TABLE dwd.dwd_ad(`device_id` string,`uid` string,`app_v` string,`os_type` string,`event_type` string,`language` string,`channel` string,`area` string,`brand` string,`report_time` string,`duration` int,`ad_action` int,`shop_id` int,`ad_type` int,`show_style` smallint,`product_id` int,`place` string,`sort` int,`hour` string
)
PARTITIONED BY (`dt` string)
stored as parquet;

运行结果如下图所示:
在这里插入图片描述

UDF

UDF 是用户根据具体需求编写的自定义函数,用于处理 SQL 语言无法直接完成的复杂逻辑。数据仓库系统(如 Hive、Spark SQL、ClickHouse 等)内置了一些通用的函数,但当内置函数无法满足需求时,可以通过 UDF 实现自定义扩展。

UDF 的作用

实现复杂逻辑

通过 UDF,可以将复杂的业务逻辑封装成函数,以简化 SQL 代码。例如,根据自定义规则处理字符串、日期计算等。

提高代码复用性

将重复使用的逻辑封装成 UDF,便于在多个查询中调用,减少代码冗余。

扩展 SQL 的功能

内置函数的功能有限,通过自定义函数可以实现更复杂的计算,如机器学习模型的调用、特殊格式解析等。

优化性能

在某些场景下,使用 UDF 可以减少 SQL 中复杂逻辑的嵌套,从而优化查询性能。

JSON串解析

内建函数、UDF、SerDe(JSON是所有的信息)
详细内容参见 会员活跃度章节-JSON数据处理-UDF(处理JSONArray)

public class ParseJsonArray extends UDF {public ArrayList<String> evaluate(String jsonStr) {if (Strings.isNullOrEmpty(jsonStr)) {return null;}try{// 获取jsonArrayJSONArray jsonArray = JSON.parseArray(jsonStr);ArrayList<String> lst = new ArrayList<>();for(Object o: jsonArray) {lst.add(o.toString());}return lst;}catch (JSONException e){return null;}}
}

编写脚本

vim /opt/wzk/hive/dwd_load_event_log.sh

编写的脚本内容如下:

USE dwd;
add jar /opt/wzk/hive-parse-json-array-1.0-SNAPSHOT-jar-with-dependencies.jar;
CREATE temporary function wzk_json_array AS 'icu.wzk.ParseJsonArray';WITH tmp_start AS (SELECT SPLIT(str, ' ')[7] AS lineFROM ods.ods_log_eventWHERE dt='$do_date'
)-- 插入数据到目标表 dwd_event_log
INSERT OVERWRITE TABLE dwd.dwd_event_log
PARTITION (dt='$do_date')
SELECT device_id, uid,app_v,os_type,event_type,language,channel,area,brand,get_json_object(k, '$.name') AS name,get_json_object(k, '$.json') AS json,get_json_object(k, '$.time') AS time
FROM (SELECTget_json_object(line, '$.attr.device_id') AS device_id,get_json_object(line, '$.attr.uid') AS uid,get_json_object(line, '$.attr.app_v') AS app_v,get_json_object(line, '$.attr.os_type') AS os_type,get_json_object(line, '$.attr.event_type') AS event_type,get_json_object(line, '$.attr.language') AS language,get_json_object(line, '$.attr.channel') AS channel,get_json_object(line, '$.attr.area') AS area,get_json_object(line, '$.attr.brand') AS brand,get_json_object(line, '$.wzk_event') AS wzk_event,lineFROM tmp_start
) A 
LATERAL VIEW EXPLODE(wzk_json_array(line, 'wzk_event')) B AS k;
"# 执行 Hive SQL
hive -e "$sql"

对应的截图如下所示:
在这里插入图片描述
从全部的事件日志中获取广告点击事件:

vim /opt/wzk/hive/dwd_load_ad_log.sh

写入内容如下所示:

#!/bin/bash# 加载系统环境变量
source /etc/profile# 确定操作日期,默认为前一天
if [ -n "$1" ]; thendo_date=$1
elsedo_date=$(date -d "-1 day" +%F)
fi# Hive SQL语句
sql="
INSERT OVERWRITE TABLE dwd.dwd_ad
PARTITION (dt='$do_date')
SELECTdevice_id,uid,app_v,os_type,event_type,language,channel,area,brand,report_time,get_json_object(event_json, '$.duration') AS duration,get_json_object(event_json, '$.ad_action') AS ad_action,get_json_object(event_json, '$.shop_id') AS shop_id,get_json_object(event_json, '$.ad_type') AS ad_type,get_json_object(event_json, '$.show_style') AS show_style,get_json_object(event_json, '$.product_id') AS product_id,get_json_object(event_json, '$.place') AS place,get_json_object(event_json, '$.sort') AS sort,from_unixtime(ceil(report_time/1000), 'HH') AS report_hour
FROM dwd.dwd_event_log
WHERE dt='$do_date' AND name='ad';
"# 执行 Hive SQL
hive -e "$sql"

对应的截图如下所示:
在这里插入图片描述
日志 => Flume => ODS => 清洗、转换 => 广告事件详细信息。

相关文章:

大数据-237 离线数仓 - 广告业务 需求分析 ODS DWD UDF JSON 串解析

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…...

视觉语言模型(VLM)学习笔记

目录 应用场景举例 VLM 的总体架构包括&#xff1a; 深度解析&#xff1a;图像编码器的实现 图像编码器&#xff1a;视觉 Transformer 注意力机制 视觉-语言投影器 综合实现 训练及注意事项 总结 应用场景举例 基于文本的图像生成或编辑&#xff1a;你输入 “生成一张…...

Spring 自调用事务失效分析及解决办法

前言 博主在写公司需求的时候&#xff0c;有一个操作涉及到多次对数据库数据的修改。当时就想着要加 Transactional注解来声名事务。并且由于一个方法中有太多行了&#xff0c;于是就想着修改数据库的操作单独提取出来抽象成一个方法。但这个时候&#xff0c;IDEA 提示我自调用…...

【ROS2】Ubuntu22.04安装ROS humble

一. ROS简介 1.1 什么是ROS ROS 是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务&#xff0c;包括硬件抽象&#xff0c;底层设备控制&#xff0c;常用函数的实现&#xff0c;进程间消息传递&#xff0c;以及包管理。ROS的核心思想就是将机器人的软件功能做…...

免费开源的微信开发框架

请求参数 Header 参数 export interface ApifoxModel {"X-GEWE-TOKEN": string;[property: string]: any; } Body 参数application/json export interface ApifoxModel {/*** 设备ID*/appId: string;/*** 是否允许*/enabled: boolean;[property: string]: any; }…...

【第二讲】Spring Boot 3.4.0 新特性详解:新的依赖管理功能

Spring Boot 3.4.0 版本引入了一些显著的改进&#xff0c;其中之一就是新的依赖管理功能。这些改进不仅提升了依赖管理的便利性和一致性&#xff0c;还增强了项目的可维护性和可扩展性。本文将详细介绍 Spring Boot 3.4.0 中新的依赖管理功能&#xff0c;提供具体的使用示例和场…...

CSAPP Cache Lab(缓存模拟器)

前言 理解高速缓存对 C 程序性能的影响&#xff0c;通过两部分实验达成&#xff1a;编写高速缓存模拟器&#xff1b;优化矩阵转置函数以减少高速缓存未命中次数。Part A一开始根本不知道要做什么&#xff0c;慢慢看官方文档&#xff0c;以及一些博客&#xff0c;和B站视频&…...

Vue项目通过Nginx部署多个

1.将Vue项目部署到Nginx根 1.1 修改vue.config.js&#xff0c;默认可以不设置 module.exports {publicPath: / } 1.2 修改index.js&#xff0c;默认可以不设置 export default new Router({...base: "/"... }) 1.3 修改nginx.conf location / {root /usr/shar…...

【React】全局状态管理(Context, Reducer)

以下为知行小课学习笔记。 概述 Context 跨组件共享状态 在 Next 项目&#xff0c;封装 useContext。 AppContext.tsx "use client";import React, {createContext, Dispatch, ReactNode, SetStateAction, useContext, useMemo, useState} from react;type State …...

Docker容器ping不通外网问题排查及解决

Docker容器ping不通外网问题排查及解决 解决方案在最下面&#xff0c;不看过程的可直接拉到最下面。 一台虚拟机里突然遇到docker容器一直访问外网失败&#xff0c;网上看到这个解决方案&#xff0c;这边记录一下。 首先需要明确docker的网桥模式&#xff0c;网桥工作在二层…...

VTK的基本概念(一)

文章目录 三维场景的基本要素1.灯光2.相机3.颜色4.纹理映射 三维场景的基本要素 1.灯光 在三维渲染场景中&#xff0c;可以有多个灯光的存在&#xff0c;灯光和相机是三维渲染场景的必备要素&#xff0c;如果没有指定的话&#xff0c;vtkRenderer会自动创建默认的灯光和相机。…...

【动态规划】股票市场交易策略优化

文章目录 一、问题描述二、解决思路状态转移初始化最终结果 三、代码实现执行流程解析时间和空间复杂度 一、问题描述 我们要解决的是一个关于股票买卖的问题&#xff1a;给定一个股票价格数组 stocks&#xff0c;每一天的价格为数组中的一个元素。我们可以通过买入和卖出的操…...

docker-compose 升级

官方下载地址&#xff1a; https://github.com/docker/compose/releases 下载完放到kali root目录下 # mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose # chmod x /usr/local/bin/docker-compose # docker-compose --version...

node.js @ffmpeg-installer/ffmpeg 桌面推流

//安装npm install --save ffmpeg-installer/ffmpeg //stream.js // 引入所需模块 const ffmpeg require(ffmpeg-installer/ffmpeg); const { exec } require(child_process); // 设置 FFmpeg 路径 const ffmpegPath ffmpeg.path; const rtmpUrl "rtmp://localhost…...

电脑启动需要经历哪些过程?

传统BIOS启动流程 1. BIOS BIOS 启动&#xff0c;BIOS程序是烧进主板自带的ROM里的&#xff0c;所以无硬盘也可以启动。BIOS先进行自检&#xff0c;检查内存、显卡、磁盘等关键设备是否存在功能异常&#xff0c;会有蜂鸣器汇报错误&#xff0c;无错误自检飞快结束。 硬件自检…...

MobaXterm Sessions 批量录入导入,会话批量添加

此脚本用于将服务器批量录入到 MobaXterm 会话 使用方法&#xff1a; 1、将IP列定义在 sessions_ip_list 变量中&#xff08;ssh登录的IP&#xff09; 2、将登录用户定义在 sessions_user 变量中&#xff08;ssh登录的用户&#xff09; 3、将目录名称定义在 folder_name 变…...

ceph的用户管理和cephx认证

用户权限概述 用户格式 参考链接&#xff1a; 权限&#xff1a;https://docs.ceph.com/en/latest/rados/operations/user-management/#authorization-capabilities 用户&#xff1a;https://docs.ceph.com/en/reef/rados/operations/user-management/ ceph的用户格式TYPEID…...

【北京迅为】iTOP-4412全能版使用手册-第二十章 搭建和测试NFS服务器

iTOP-4412全能版采用四核Cortex-A9&#xff0c;主频为1.4GHz-1.6GHz&#xff0c;配备S5M8767 电源管理&#xff0c;集成USB HUB,选用高品质板对板连接器稳定可靠&#xff0c;大厂生产&#xff0c;做工精良。接口一应俱全&#xff0c;开发更简单,搭载全网通4G、支持WIFI、蓝牙、…...

MicroSoft Project2007 安装教程

一、安装教程 访问地址 二、安装链接 通过网盘分享的文件&#xff1a;Project2007CD 链接: https://pan.baidu.com/s/1Y8VnhVPiKjcmAEh8cIR5sQ?pwdp2hk 提取码: p2hk --来自百度网盘超级会员v6的分享...

怎样提高自己的能量

能量转换的基本原则是让别人需要你&#xff0c;而不是你去求对方。别人需要你&#xff0c;你的能量就高&#xff0c;你去求别人你的能量就低。 怎样提高自己的能量&#xff1f; 第一&#xff0c;留意你的气场和格局。气场不是说你表现的多么霸道&#xff0c;而是你的信念、决心…...

ScreenshotToCode安装教程

网页截图生成代码&#xff0c;我测试的效果一般 快速安装教程如下 1&#xff0c;首先你得有OpenAI的账号 国内用这个代理就可以&#xff1a; https://www.closeai-asia.com/ 充值一块钱&#xff0c;在本项目中可以生成两次 2&#xff0c;下载程序 下载程序压缩包&#xff1…...

工程企业如何做好成本控制?该如何入手?

工程企业的成本控制是企业管理中的核心工作&#xff0c;其直接关系到项目的盈利能力和市场竞争力。以下从几个关键方向阐述如何入手做好成本控制&#xff1a; 一、明确成本控制目标 成本控制的目标不仅是减少支出&#xff0c;更重要的是保证项目质量和工期&#xff0c;避免因低…...

详解桥接模式

引言 在开发过程中&#xff0c;可能会遇到系统设计有多种维度变化的情况&#xff0c;比如我们想画一幅五彩斑斓的画&#xff0c;需要用到12个颜色&#xff0c;但是需要粗细不同的线条&#xff08;粗、中、细&#xff09;&#xff0c;如果用蜡笔&#xff0c;就需要粗中细三种蜡笔…...

田忌赛马五局三胜问题matlab代码

问题描述&#xff1a;在可以随机选择出场顺序的情况下&#xff0c;如果把比赛规则从三局两胜制改为五局三胜制&#xff0c;齐王胜出的概率是上升了还是下降了&#xff1f;五局三胜的赛制下&#xff0c;大家的马重新分为5个等级。前提条件仍然是齐王每种等级的马都优于田忌同等级…...

Springboot 修改post请求接口入参或重新赋值

前言 很久之前写过一篇就是自动填充接口参数的&#xff0c;利用的 HandlerMethodArgumentResolver 自定义注解 Springboot Controller接口默认自动填充 业务实体参数值_springboot设置入参默认值-CSDN博客 现在这一篇也差不多&#xff0c;达到的目的就是重新去给post请求的参数…...

jmeter学习(7)命令行控制

jmeter -n -t E:\IOT\test2.jmx -l E:\IOT\output\output.jtl -j E:\IOT\output\jmeter.log -e -o E:\IOT\output\report IOT下创建output 文件夹&#xff0c;jmx文件名避免中文&#xff0c;再次执行output.jtl不能有数据要删除...

李春葆《数据结构》-查找-课后习题代码题

一&#xff1a;设计一个折半查找算法&#xff0c;求查找到关键字为 k 的记录所需关键字的比较次数。假设 k 与 R[i].key 的比较得到 3 种情况&#xff0c;即 kR[i].key&#xff0c;k<R[i].key 或者 k>R[i].key&#xff0c;计为 1 次比较&#xff08;在教材中讨论关键字比…...

Spring Boot教程之十: 使用 Spring Boot 实现从数据库动态下拉列表

使用 Spring Boot 实现从数据库动态下拉列表 动态下拉列表&#xff08;或依赖下拉列表&#xff09;的概念令人兴奋&#xff0c;但编写起来却颇具挑战性。动态下拉列表意味着一个下拉列表中的值依赖于前一个下拉列表中选择的值。一个简单的例子是三个下拉框&#xff0c;分别显示…...

Facebook的开源项目解析:推动开发者社区的技术进步

Facebook&#xff0c;作为全球领先的社交平台之一&#xff0c;其在技术领域的创新不仅体现在产品功能的实现上&#xff0c;也积极推动开源社区的发展。开源项目已经成为Facebook技术战略的重要组成部分&#xff0c;通过开源&#xff0c;Facebook不仅加速了技术进步&#xff0c;…...

以 SpringBoot 为基石的夕阳红公寓信息化管理系统设计理念

2 开发环境与技术 本章节对开发夕阳红公寓管理系统需要搭建的开发环境&#xff0c;还有夕阳红公寓管理系统开发中使用的编程技术等进行阐述。 2.1 Java语言 Java语言是当今为止依然在编程语言行业具有生命力的常青树之一。Java语言最原始的诞生&#xff0c;不仅仅是创造者感觉C…...

身份证OCR 识别 API 接口的发展前景

随着信息时代的到来&#xff0c;大量的身份证数据需要进行整理、存储和管理&#xff0c;OCR 识别技术可以将身份证信息转化为结构化的电子文本&#xff0c;方便后续的数据管理和分析&#xff0c;提高工作效率。 未来&#xff0c;随着人工智能和深度学习等技术的不断发展&#…...

使用vue3实现element-plus的主题切换特效

先看实现效果 实现过程 前提需要引入好 element-plus&#xff0c;并导入element的黑色主题CSS 示例&#xff0c;再 main.js 中引入 import ElementPlus from element-plus import element-plus/dist/index.css import element-plus/theme-chalk/dark/css-vars.css // 黑色主…...

深入了解决策树---机器学习中的经典算法

引言 决策树&#xff08;Decision Tree&#xff09;是一种重要的机器学习模型&#xff0c;以直观的分层决策方式和简单高效的特点成为分类和回归任务中广泛应用的工具。作为解释性和透明性强的算法&#xff0c;决策树不仅适用于小规模数据&#xff0c;也可作为复杂模型的基石&…...

深度优先算法(DFS)和广度优先算法(BFS)

一、深度优先算法 深度优先搜索属于图算法的一种&#xff0c;是一个针对图和树的遍历算法&#xff0c;英文缩写为DFS即Depth First Search。深度优先搜索是图论中的经典算法&#xff0c;利用深度优先搜索算法可以产生目标图的相应拓扑排序表&#xff0c;利用拓扑排序表可以方便…...

Linux进程信号

信号量 本质是一个计数器&#xff0c;用来表示系统资源中&#xff0c;资源数量多少的问题。 公共资源:能被多个进程同时访问的资源。 访问没有被保护的资源&#xff0c;可能会出现数据不一致问题。 让不同进程看到同一个资源的目的是想通信。 为了解决进程具有独立性无法 …...

东风破捉妖师横空出世

一.异动拉升实时监测 东风破就像是一个大盘监测平台&#xff0c;是现实版的捉妖师&#xff0c;一旦妖股横空出世&#xff0c;就会在东风破面前原形毕露。东风破AI算法逻辑是监测存在异动拉升的股票&#xff0c;实时分析上证&#xff0c;深证&#xff0c;创业和科创板的股票数据…...

初窥门径:React中的事件机制

React中的事件机制 什么是合成事件&#xff1f;使用合成事件的好处事件委托事件池 React事件执行顺序 什么是合成事件&#xff1f; 在React中&#xff0c;合成事件&#xff08;Synthetic Events&#xff09; 是一种跨浏览器的事件包装机制&#xff0c;旨在统一浏览器的事件处理…...

【Android、IOS、Flutter、鸿蒙、ReactNative 】实现 MVP 架构

Android Studio 版本 Android Java MVP 模式 参考 模型层 model public class User {private String email;private String password;public User(String email, String password) {this.email = email;this.password = password;}public String getEmail() {return email;}…...

DroneCAN 最新开发进展,Andrew在Ardupilot开发者大会2024的演讲

本文是Andrew演讲的中文翻译&#xff0c;你可以直接观看视频了解演讲的全部内容&#xff0c;此演讲视频的中文版本已经发布在Ardupilot社区的Blog板块&#xff0c;你可以在 Arudpilot官网&#xff08;https://ardupilot.org) 获取该视频&#xff1a; 你也可以直接通过Bilibili链…...

从 App Search 到 Elasticsearch — 挖掘搜索的未来

作者&#xff1a;来自 Elastic Nick Chow App Search 将在 9.0 版本中停用&#xff0c;但 Elasticsearch 拥有你构建强大的 AI 搜索体验所需的一切。以下是你需要了解的内容。 生成式人工智能的最新进展正在改变用户行为&#xff0c;激励开发人员创造更具活力、更直观、更引人入…...

如何给GitHub的开源项目贡献PR

&#x1f3af;导读&#xff1a;本文详细介绍了如何向开源项目“代码随想录”贡献自己的题解。首先&#xff0c;需要Fork原项目的仓库至个人GitHub账户&#xff0c;然后解决克隆仓库时可能遇到的SSH密钥问题。接着&#xff0c;按照标准流程对本地仓库进行代码或文档的修改&#…...

架构-微服务-服务配置

文章目录 前言一、配置中心介绍1. 什么是配置中心2. 解决方案 二、Nacos Config入门三、Nacos Config深入1. 配置动态刷新2. 配置共享 四、nacos服务配置的核心概念 前言 服务配置--Nacos Config‌ 微服务架构下关于配置文件的一些问题&#xff1a; 配置文件相对分散。在一个…...

鱼眼相机模型-MEI

参考文献&#xff1a; Single View Point Omnidirectional Camera Calibration from Planar Grids 1. 相机模型如下&#xff1a; // 相机坐标系下的点投影到畸变图像// 输入&#xff1a;相机坐标系点坐标cam 输出&#xff1a; 畸变图像素点坐标disPtvoid FisheyeCamAdapter::…...

设计模式——抽象工厂模式

定义与概念 抽象工厂模式是一种创建型设计模式。它提供了一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类。简单来说&#xff0c;抽象工厂就像是一个工厂的抽象蓝图&#xff0c;这个蓝图定义了生产一组产品的方法&#xff0c;但具体怎么生产这些产…...

大语言模型(LLM)不平衡的内存使用问题;训练过程中 Transformer层1和Transformer层2的反向传播计算量差异

目录 大语言模型(LLM)不平衡的内存使用问题 一、不平衡的内存使用概述 二、不平衡的内存使用举例 嵌入层与Transformer层之间的内存差异: 不同Transformer层之间的内存差异: 输入数据对内存使用的影响: 三、不平衡的内存使用带来的问题 四、解决方案 大语言模型的…...

AI需求条目化全面升级!支持多格式需求,打破模板限制!

AI需求条目化全面升级&#xff01;支持多格式需求&#xff0c;打破模板限制&#xff01; 一、多格兼济 标准立成 1、功能揭秘 预览未来 平台需求板块的AI需求条目化功能迎来全面升级。它支持多种需求格式&#xff0c;不再受限于模板文件&#xff0c;能够一键自动快速且灵活地生…...

C#:时间与时间戳的转换

1、将 DateTime 转换为 Unix 时间戳&#xff08;秒&#xff09; public static long DateTimeToUnixTimestamp(DateTime dateTime) {// 定义UTC纪元时间DateTime epochStart new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);// 计算从UTC纪元时间到指定时间的总秒数Tim…...

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。-多语言

目录 C 语言实现 Python 实现 Java 实现 Js 实现 Ts 实现 题目&#xff1a;输入一行字符&#xff0c;分别统计出其中英文字母、空格、数字和其它字符的个数。 程序分析&#xff1a;利用while语句,条件为输入的字符不为\n。 C 语言实现 #include <stdio.h>int mai…...

贪心-区间问题——acwing

题目一&#xff1a;最大不相交区间数量 908. 最大不相交区间数量 - AcWing题库 分析 跟区间选点一样。区间选点&#xff1a;贪心——acwing-CSDN博客 代码 #include<bits/stdc.h> using namespace std;const int N 1e510;struct Range {int l, r;// 重载函数bool op…...

OpenCV相机标定与3D重建(8)相机标定函数calibrateCamera()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 从校准图案的多个视图中找到相机的内参和外参参数. cv::calibrateCamera 是 OpenCV 中用于相机标定的一个非常重要的函数。它通过一系列已知的世…...