业务场景中Hive解析Json常用案例
业务场景中Hive解析Json常用案例
json在线工具
- json格式转换在线工具
https://tool.lu/json/
- format格式互转:
// 格式化可以合并整行显示
{"name":"John Doe","age":35,"email":"john@example.com"}// 格式化可以展开显示,示例数据更清晰
{"name": "John Doe","age": 35,"email": "john@example.com"
}
- 转化常用yaml格式
工具提供了各种跨格式转化
age: 35
email: john@example.com
name: 'John Doe'
根据json串自动生成生成 Java 类等功能也非常实用
示例准备
需要Hive环境
- test测试表
-- 在Hive中建测试表
CREATE TABLE json_test_table (id INT,json_column STRING
) STORED AS TEXTFILE;
json_column 字段用来存储需要处理的 json 串
示例 1: 提取单个字段
假设 JSON 数据包含用户信息
{"name": "John Doe","age": 35,"email": "john@example.com"
}
- 样例数据
insert into json_test_table values (1,'{"name":"John Doe","age":35,"email":"john@example.com"}');select * from json_test_table where id = 1;
+------+---------------------------------------------------------+
| id | json_column |
+------+---------------------------------------------------------+
| 1 | {"name":"John Doe","age":35,"email":"john@example.com"} |
+------+---------------------------------------------------------+
使用 get_json_object
函数从 JSON 中提取字段:
SELECT get_json_object(json_column, '$.name') AS name FROM json_test_table where id = 1;+-----------+
| name |
+-----------+
| John Doe |
+-----------+
1 row selected (19.655 seconds)SELECT get_json_object(json_column, '$.name') AS name,get_json_object(json_column, '$.age') AS age FROM json_test_table where id = 1;
+-----------+------+
| name | age |
+-----------+------+
| John Doe | 35 |
+-----------+------+
1 row selected (19.396 seconds)
示例 2: 提取嵌套字段
在 JSON 数据中有嵌套字段的情况下:
{"user": {"name": "Alice","address": {"city": "New York","zipcode": "10001"}}
}
- 样例数据
insert into json_test_table values (2,'{"user":{"name":"Alice","address":{"city":"New York","zipcode":"10001"}}}');select * from json_test_table where id = 2;
+------+---------------------------------------------------------------------------+
| id | json_column |
+------+---------------------------------------------------------------------------+
| 2 | {"user":{"name":"Alice","address":{"city":"New York","zipcode":"10001"}}} |
+------+---------------------------------------------------------------------------+
提取嵌套字段的值:
SELECT get_json_object(json_column, '$.user.name') AS user_name,get_json_object(json_column, '$.user.address.city') AS city
FROM json_test_table where id = 2;+------------+-----------+
| user_name | city |
+------------+-----------+
| Alice | New York |
+------------+-----------+
1 row selected (19.38 seconds)
示例 3: 提取数组中的值
假设 JSON 数据包含一个数组:
{"tags": ["apple", "banana", "orange"]
}
- 样例数据
insert into json_test_table values (3,'{"tags":["apple","banana","orange"]}');select * from json_test_table where id = 3;
+------+--------------------------------------+
| id | json_column |
+------+--------------------------------------+
| 3 | {"tags":["apple","banana","orange"]} |
+------+--------------------------------------+
从数组中提取值:
SELECT get_json_object(json_column, '$.tags[0]') AS first_tag,get_json_object(json_column, '$.tags[1]') AS second_tag
FROM json_test_table where id = 3;+------------+-------------+
| first_tag | second_tag |
+------------+-------------+
| apple | banana |
+------------+-------------+
1 row selected (18.488 seconds)
示例 4: 提取数组列表长度
获取数组的长度:
-- 复用 示例3中样例数据
select * from json_test_table where id = 3;
+------+--------------------------------------+
| id | json_column |
+------+--------------------------------------+
| 3 | {"tags":["apple","banana","orange"]} |
+------+--------------------------------------+
-- 可以看到数组tags对应的值有3个SELECT size(split(get_json_object(json_column, '$.tags'), ',')) AS tags_length
FROM json_test_table
WHERE id = 3;+--------------+
| tags_length |
+--------------+
| 3 |
+--------------+
1 row selected (35.766 seconds)
示例 5:业务场景-解析公司基本信息案例
- 假设JSON数据包含公司的基本信息,比如公司名称、注册资本等字段
{"company_name": "wangting_company","registration": {"registered_capital": 1000000,"registered_date": "2020-01-01","registered_address": "123 Main St, City"}
}{"company_name":"wangting_company","registration":{"registered_capital":1000000,"registered_date":"2020-01-01","registered_address":"123 Main St, City"}}
-- 创建表
CREATE TABLE company_info (company_name STRING,registered_capital INT,registered_date STRING,registered_address STRING
) STORED AS TEXTFILE;-- 转化插入数据
INSERT INTO company_info
SELECTget_json_object(json_data, '$.company_name') AS company_name,get_json_object(json_data, '$.registration.registered_capital') AS registered_capital,get_json_object(json_data, '$.registration.registered_date') AS registered_date,get_json_object(json_data, '$.registration.registered_address') AS registered_address
FROM(SELECT '{"company_name": "wangting_company", "registration": {"registered_capital": 1000000, "registered_date": "2020-01-01", "registered_address": "123 Main St, City"}}' AS json_data) t;+----------------------------+----------------------------------+-------------------------------+----------------------------------+
| company_info.company_name | company_info.registered_capital | company_info.registered_date | company_info.registered_address |
+----------------------------+----------------------------------+-------------------------------+----------------------------------+
| wangting_company | 1000000 | 2020-01-01 | 123 Main St, City |
+----------------------------+----------------------------------+-------------------------------+----------------------------------+
1 row selected (0.411 seconds)
示例 6: 使用 LATERAL VIEW 解析数组
使用 LATERAL VIEW
和 explode
解析 JSON 数组:
-- 复用示例3样例数据
SELECT id, tag
FROM json_test_table
LATERAL VIEW explode(split(get_json_object(json_column, '$.tags'), ',')) exploded_tags AS tag
WHERE id = 3;+-----+------------+
| id | tag |
+-----+------------+
| 3 | ["apple" |
| 3 | "banana" |
| 3 | "orange"] |
+-----+------------+
3 rows selected (17.318 seconds)-- 仅展示解析数据,实际使用如需去除方括号,可以一并清洗
示例 7: 提取数组对象的值
如果数组包含对象,则提取对象的值:
{"users": [{"name": "Alice","age": 28},{"name": "Bob","age": 35}]
}{"users":[{"name":"Alice","age":28},{"name":"Bob","age":35}]}
- 样例数据
insert into json_test_table values (7,'{"users":[{"name":"Alice","age":28},{"name":"Bob","age":35}]}');select * from json_test_table where id = 7;
+------+---------------------------------------------------------------+
| id | json_column |
+------+---------------------------------------------------------------+
| 7 | {"users":[{"name":"Alice","age":28},{"name":"Bob","age":35}]} |
+------+---------------------------------------------------------------+
SELECT get_json_object(json_column, '$.users[0].name') AS user1_name,get_json_object(json_column, '$.users[1].name') AS user2_name
FROM json_test_table where id = 7;+-------------+-------------+
| user1_name | user2_name |
+-------------+-------------+
| Alice | Bob |
+-------------+-------------+
1 row selected (17.372 seconds)
示例 8: 处理日期
处理 JSON 中的日期字段:
{"event_date": "2023-11-21"
}{"event_date":"2023-11-21"}
- 样例数据
insert into json_test_table values (8,'{"event_date":"2023-11-21"}');select * from json_test_table where id = 8;
+------+-----------------------------+
| id | json_column |
+------+-----------------------------+
| 8 | {"event_date":"2023-11-21"} |
+------+-----------------------------+
SELECT get_json_object(json_column, '$.event_date') AS event_date
FROM json_test_table where id = 8;+-------------+
| event_date |
+-------------+
| 2023-11-21 |
+-------------+
1 row selected (17.436 seconds)SELECT id, CAST(get_json_object(json_column, '$.event_date') AS DATE) AS event_date,YEAR(CAST(get_json_object(json_column, '$.event_date') AS DATE)) AS event_year,MONTH(CAST(get_json_object(json_column, '$.event_date') AS DATE)) AS event_month
FROM json_test_table
WHERE id = 8;+-----+-------------+-------------+--------------+
| id | event_date | event_year | event_month |
+-----+-------------+-------------+--------------+
| 8 | 2023-11-21 | 2023 | 11 |
+-----+-------------+-------------+--------------+
1 row selected (17.363 seconds)
示例 9: 提取布尔值
提取 JSON 中的布尔字段:
{"is_active": true
}{"is_active":true}
- 样例数据
insert into json_test_table values (9,'{"is_active":true}');select * from json_test_table where id = 9;
+------+--------------------+
| id | json_column |
+------+--------------------+
| 9 | {"is_active":true} |
+------+--------------------+
SELECT get_json_object(json_column, '$.is_active') AS is_active
FROM json_test_table where id = 9;
+------------+
| is_active |
+------------+
| true |
+------------+
1 row selected (18.401 seconds)-- 使用WHERE子句根据布尔值进行条件过滤。
SELECT *
FROM json_test_table
WHERE get_json_object(json_column, '$.is_active') = 'true';+---------------------+------------------------------+
| json_test_table.id | json_test_table.json_column |
+---------------------+------------------------------+
| 9 | {"is_active":true} |
+---------------------+------------------------------+
1 row selected (17.327 seconds)
示例 10: json_tuple计算 JSON 对象数量
计算 JSON 对象中包含的键值对数量:
SELECT json_tuple(json_column, 'name', 'age') AS (name, age)
FROM json_test_table;+-----------+-------+
| name | age |
+-----------+-------+
| John Doe | 35 |
| NULL | NULL |
| NULL | NULL |
| NULL | NULL |
| NULL | NULL |
| NULL | NULL |
+-----------+-------+
6 rows selected (17.344 seconds)-- 只有id=1符合条件 不符合条件均为NULL
示例 11: 使用 json_tuple
提取值
从 JSON 对象中使用 json_tuple
提取多个字段:
{"name": "John","age": 30,"address": "New York"
}{"name":"John","age":30,"address":"New York"}
- 样例数据
insert into json_test_table values (11,'{"name":"John","age":30,"address":"New York"}');select * from json_test_table where id = 11;
+------+-----------------------------------------------+
| id | json_column |
+------+-----------------------------------------------+
| 11 | {"name":"John","age":30,"address":"New York"} |
+------+-----------------------------------------------+
SELECT json_tuple(json_column, 'name', 'age', 'address') AS (name, age, address)
FROM json_test_table where id = 11;+-------+------+-----------+
| name | age | address |
+-------+------+-----------+
| John | 30 | New York |
+-------+------+-----------+
1 row selected (17.414 seconds)
示例 12: 提取数字字段
从 JSON 中提取数字字段:
{"count": 50
}{"count":50}
- 样例数据
insert into json_test_table values (12,'{"count":50}');select * from json_test_table where id = 12;
+------+--------------+
| id | json_column |
+------+--------------+
| 12 | {"count":50} |
+------+--------------+
SELECT get_json_object(json_column, '$.count') AS count
FROM json_test_table where id = 12;+--------+
| count |
+--------+
| 50 |
+--------+
1 row selected (19.401 seconds)
示例 13: 使用 get_json_object
过滤数据
根据 JSON 中的字段值进行过滤:
SELECT *
FROM json_test_table
WHERE get_json_object(json_column, '$.age') > 30;+---------------------+----------------------------------------------------+
| json_test_table.id | json_test_table.json_column |
+---------------------+----------------------------------------------------+
| 1 | {"name":"John Doe","age":35,"email":"john@example.com"} |
+---------------------+----------------------------------------------------+
1 row selected (18.402 seconds)SELECT *
FROM json_test_table
WHERE get_json_object(json_column, '$.age') > 10;+---------------------+----------------------------------------------------+
| json_test_table.id | json_test_table.json_column |
+---------------------+----------------------------------------------------+
| 1 | {"name":"John Doe","age":35,"email":"john@example.com"} |
| 11 | {"name":"John","age":30,"address":"New York"} |
+---------------------+----------------------------------------------------+
2 rows selected (17.298 seconds)
示例 14: 处理空值
处理 JSON 数据中可能的空值:
{"status": null
}{"status":null}
- 样例数据
insert into json_test_table values (14,'{"status":null}');select * from json_test_table where id = 14;
+------+-----------------+
| id | json_column |
+------+-----------------+
| 14 | {"status":null} |
+------+-----------------+
SELECT get_json_object(json_column, '$.status') AS status
FROM json_test_table where id = 14;+---------+
| status |
+---------+
| NULL |
+---------+
1 row selected (17.345 seconds)-- 使用IS NULL或IS NOT NULL来检查字段是否为空
SELECT id, json_column
FROM json_test_table
WHERE id = 14 AND get_json_object(json_column, '$.status') IS NULL;+-----+------------------+
| id | json_column |
+-----+------------------+
| 14 | {"status":null} |
+-----+------------------+
1 row selected (17.47 seconds)-- 使用CASE语句对NULL值进行处理或者转换为其他值。
SELECT id, CASE WHEN get_json_object(json_column, '$.status') IS NULL THEN 'No Status' ELSE get_json_object(json_column, '$.status') END AS status
FROM json_test_table
WHERE id = 14;+-----+------------+
| id | status |
+-----+------------+
| 14 | No Status |
+-----+------------+
1 row selected (17.31 seconds)
示例 15: 使用 get_json_object
判断是否存在字段
判断 JSON 是否包含特定字段:
SELECT CASE WHEN get_json_object(json_column, '$.name') IS NOT NULL THEN 'Exists' ELSE 'Not Exists' END AS field_status
FROM json_test_table;
+---------------+
| field_status |
+---------------+
| Exists |
| Not Exists |
| Exists |
| Not Exists |
| Not Exists |
| Not Exists |
| Not Exists |
| Not Exists |
| Not Exists |
+---------------+SELECT CASE WHEN get_json_object(json_column, '$.age') IS NOT NULL THEN 'Exists' ELSE 'Not Exists' END AS field_status
FROM json_test_table;+---------------+
| field_status |
+---------------+
| Exists |
| Not Exists |
| Exists |
| Not Exists |
| Not Exists |
| Not Exists |
| Not Exists |
| Not Exists |
| Not Exists |
+---------------+SELECT CASE WHEN get_json_object(json_column, '$.aaaaaaaaa') IS NOT NULL THEN 'Exists' ELSE 'Not Exists' END AS field_status
FROM json_test_table;+---------------+
| field_status |
+---------------+
| Not Exists |
| Not Exists |
| Not Exists |
| Not Exists |
| Not Exists |
| Not Exists |
| Not Exists |
| Not Exists |
| Not Exists |
+---------------+
9 rows selected (17.337 seconds)
示例 16: 提取多层嵌套对象的值
从多层嵌套的 JSON 对象中提取值:
{"user": {"details": {"name": "Alice","age": 30}}
}{"user":{"details":{"name":"Alice","age":30}}}
- 样例数据
insert into json_test_table values (16,'{"user":{"details":{"name":"Alice","age":30}}}');select * from json_test_table where id = 16;
+------+------------------------------------------------+
| id | json_column |
+------+------------------------------------------------+
| 16 | {"user":{"details":{"name":"Alice","age":30}}} |
+------+------------------------------------------------+
SELECT get_json_object(json_column, '$.user.details.name') AS user_name,get_json_object(json_column, '$.user.details.age') AS user_age
FROM json_test_table where id = 16;+------------+-----------+
| user_name | user_age |
+------------+-----------+
| Alice | 30 |
+------------+-----------+
1 row selected (16.253 seconds)
示例 17: 提取嵌套对象数组的值
从嵌套的对象数组中提取值:
{"employees": [{"name": "Alice","department": "HR"},{"name": "Bob","department": "Engineering"}]
}{"employees":[{"name":"Alice","department":"HR"},{"name":"Bob","department":"Engineering"}]}
- 样例数据
insert into json_test_table values (17,'{"employees":[{"name":"Alice","department":"HR"},{"name":"Bob","department":"Engineering"}]}');select * from json_test_table where id = 17;
+------+----------------------------------------------------------------------------------------------+
| id | json_column |
+------+----------------------------------------------------------------------------------------------+
| 17 | {"employees":[{"name":"Alice","department":"HR"},{"name":"Bob","department":"Engineering"}]} |
+------+----------------------------------------------------------------------------------------------+
SELECT get_json_object(json_column, '$.employees[0].name') AS employee1_name,get_json_object(json_column, '$.employees[1].name') AS employee2_name
FROM json_test_table where id = 17;+-----------------+-----------------+
| employee1_name | employee2_name |
+-----------------+-----------------+
| Alice | Bob |
+-----------------+-----------------+
1 row selected (17.273 seconds)
示例 18: 提取数组对象的多个值
取数组对象的多个值
从数组对象中提取多个值:
{"items": [{"id": 1,"name": "Item 1"},{"id": 2,"name": "Item 2"}]
}{"items":[{"id":1,"name":"Item 1"},{"id":2,"name":"Item 2"}]}
- 样例数据
insert into json_test_table values (18,'{"items":[{"id":1,"name":"Item 1"},{"id":2,"name":"Item 2"}]}');select * from json_test_table where id = 18;
+------+---------------------------------------------------------------+
| id | json_column |
+------+---------------------------------------------------------------+
| 18 | {"items":[{"id":1,"name":"Item 1"},{"id":2,"name":"Item 2"}]} |
+------+---------------------------------------------------------------+
SELECT get_json_object(json_column, '$.items[0].id') AS item1_id,get_json_object(json_column, '$.items[0].name') AS item1_name,get_json_object(json_column, '$.items[1].id') AS item2_id,get_json_object(json_column, '$.items[1].name') AS item2_name
FROM json_test_table where id = 18;+-----------+-------------+-----------+-------------+
| item1_id | item1_name | item2_id | item2_name |
+-----------+-------------+-----------+-------------+
| 1 | Item 1 | 2 | Item 2 |
+-----------+-------------+-----------+-------------+
1 row selected (17.386 seconds)
示例19: json_serde解析映射数据文件的使用介绍
json_serde
库提供了一种在Hive中直接将JSON格式的数据解析成表的方式,可简化处理流程。
如果现在有一个json文件:
[app@ali-wangting wangt]$ cat wangt.json
{"name":"wangting01","age":21,"email":"wangting01@example.com"}
{"name":"wangting02","age":22,"email":"wangting02@example.com"}
{"name":"wangting03","age":23,"email":"wangting03@example.com"}
{"name":"wangting04","age":24,"email":"wangting04@example.com"}
{"name":"wangting05","age":25,"email":"wangting05@example.com"}
{"name":"wangting06","age":26,"email":"wangting06@example.com"}
{"name":"wangting07","age":27,"email":"wangting07@example.com"}
{"name":"wangting08","age":28,"email":"wangting08@example.com"}
现在希望建立一张表,使得表可以直接映射上数据文件
- hive中建表
CREATE TABLE IF NOT EXISTS wangt_666_json(name string,age int,email string
)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
stored as textfile;desc wangt_json_table;
+-----------+------------+--------------------+
| col_name | data_type | comment |
+-----------+------------+--------------------+
| name | string | from deserializer |
| age | int | from deserializer |
| email | string | from deserializer |
+-----------+------------+--------------------+
- 将json文件上传至建表对应hdfs路径
[app@ali-wangting wangt]$ hdfs dfs -ls /user/hive/warehouse/wangt.db/wangt_666_json/
[app@ali-wangting wangt]$ hdfs dfs -put wangt.json /user/hive/warehouse/wangt.db/wangt_666_json/
[app@ali-wangting wangt]$ hdfs dfs -ls /user/hive/warehouse/wangt.db/wangt_666_json/
Found 1 items
-rwxrwx--x+ 2 hive hive 512 2023-12-04 16:38 /user/hive/warehouse/wangt.db/wangt_666_json/wangt.json# 也可以通过hive的sql命令行直接load数据文件
load data local inpath '/home/wangt/wangt.json' into table wangt_666_json;
- 查看表数据验证
select * from wangt_666_json;
+----------------------+---------------------+-------------------------+
| wangt_666_json.name | wangt_666_json.age | wangt_666_json.email |
+----------------------+---------------------+-------------------------+
| wangting01 | 21 | wangting01@example.com |
| wangting02 | 22 | wangting02@example.com |
| wangting03 | 23 | wangting03@example.com |
| wangting04 | 24 | wangting04@example.com |
| wangting05 | 25 | wangting05@example.com |
| wangting06 | 26 | wangting06@example.com |
| wangting07 | 27 | wangting07@example.com |
| wangting08 | 28 | wangting08@example.com |
+----------------------+---------------------+-------------------------+
8 rows selected (0.5 seconds)
可以看到数据文件8行记录,成功映射对应了hive中wangt_666_json表的8条数据
相关文章:
业务场景中Hive解析Json常用案例
业务场景中Hive解析Json常用案例 json在线工具 json格式转换在线工具 https://tool.lu/json/format格式互转: // 格式化可以合并整行显示 {"name":"John Doe","age":35,"email":"johnexample.com"}// 格式化…...
垃圾回收与内存泄漏
前端面试大全JavaScript垃圾回收与内存泄漏 🌟经典真题 🌟什么是内存泄露 🌟JavaScript 中的垃圾回收 🌟标记清除 🌟引用计数 🌟真题解答 🌟总结 🌟经典真题 请介绍一下 Jav…...
SQL Server 2016(创建数据表)
1、需求描述。 在名为“class”的数据库中创建表,表名称为“course”,其中要包含序号、课程、课程编号、学分、任课教师、上课地点、开始时间、结束时间、备注等列。 设置各个字段的数据类型。其中,"序号"列为标识列,从…...
mysql配置文件低于8.0版本慎用(头部声明的路径请自行替换或删减)(干货)
[mysqld] character-set-server utf8mb4 collation-server utf8mb4_general_ci init_connectSET NAMES utf8mb4datadir/data/mysql/data socket/data/mysql/mysql.socklog-error/data/mysql/log/mysql_error.log pid-file/data/mysql/mysqld.pidserver_id1 #如果做集群不同my…...
给WordPress文章添加广告位
/* * WordPress 在文章内容中间插入广告//由www.wwttl.com提供学习 */ //在文章内容的第二段后面插入广告 add_filter( the_content, prefix_insert_post_ads ); function prefix_insert_post_ads( $content ) { $ad_code <div>广告代码放这里</div>;if ( is_sing…...
[GPT-1]论文实现:Improving Language Understanding by Generative Pre-Training
Efficient Graph-Based Image Segmentation 一、完整代码二、论文解读2.1 GPT架构2.2 GPT的训练方式Unsupervised pre_trainingSupervised fine_training 三、过程实现3.1 导包3.2 数据处理3.3 模型构建3.4 模型配置 四、整体总结 论文:Improving Language Understa…...
23种设计模式之C++实践(一)
23种设计模式之C++实践 1. 简介2. 基础知识3. 设计模式(一)创建型模式1. 单例模式——确保对象的唯一性1.2 饿汉式单例模式1.3 懒汉式单例模式比较IoDH单例模式总结2. 简单工厂模式——集中式工厂的实现简单工厂模式总结3. 工厂方法模式——多态工厂的实现工厂方法模式总结4.…...
华为OD机试 - 园区参观路径(Java JS Python C)
题目描述 园区某部门举办了Family Day,邀请员工及其家属参加; 将公司园区视为一个矩形,起始园区设置在左上角,终点园区设置在右下角; 家属参观园区时,只能向右和向下园区前进,求从起始园区到终点园区会有多少条不同的参观路径。 输入描述 第一行为园区的长和宽; 后…...
【ARM Trace32(劳特巴赫) 使用介绍 12 -- Trace32 常用命令之 d.dump | data.dump 介绍】
文章目录 Trace32 常用命令之 d.dump | data.dump 介绍1 字节显示 (Byte)4 字节显示(word)8 字节显示(通常long)十进制显示显示指定列数显示地址范围内的值 Trace32 常用命令之 d.dump | data.dump 介绍 在 TRACE32 调试环境中&a…...
【Git】Git撤销操作
记录一下,方便后续查找,不全,后续再做补充。 丢弃当前工作区未提交的修改 # 丢弃所有修改 git checkout .# 丢弃某个文件修改 git checkout 文件名丢弃本地已经提交的代码 (1)撤销最近一次提交 如果我们在最近一次提…...
改造python3中的http.server为简单的文件上传下载服务
改造 修改python3中的http.server.SimpleHTTPRequestHandler,实现简单的文件上传下载服务 simple_http_file_server.py: # !/usr/bin/env python3import datetime import email import html import http.server import io import mimetypes import os …...
Fiddler抓包工具之fiddler的composer可以简单发送http协议的请求
一,composer的详解 右侧Composer区域,是测试接口的界面: 相关说明: 1.请求方式:点开可以勾选请求协议是get、post等 2.url地址栏:输入请求的url地址 3.请求头:第三块区域可以输入请求头信息…...
14、pytest像用参数一样使用fixture
官方实例 # content of test_fruit.py import pytestclass Fruit:def __init__(self, name):self.name nameself.cubed Falsedef cube(self):self.cubed Trueclass FruitSalad:def __init__(self, *fruit_bowl):self.fruit fruit_bowlself._cube_fruit()def _cube_fruit(s…...
C++ Primer Plus第十三章笔记
目录 基类 构造函数:访问权限的考虑 1.2 派生类和基类之间的特殊关系 继承:is-a关系 多态公有继承 静态联编和动态联编 指针和引用类型的兼容性 虚成员函数和动态联编 虚函数的注意事项 构造函数 析构函数 友元 没有重新定义 重新定义将隐…...
【JavaEE】单例模式
作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&…...
第十五届蓝桥杯模拟赛(第二期 C++)
俺自己做的噢,还未核实答案,若有差错,望斧正。 第一题 小蓝要在屏幕上放置一行文字,每个字的宽度相同。小蓝发现,如果每个字的宽为 36 像素,一行正好放下 30 个字,字符之间和前后都没有任何空隙…...
关于Unity中字典在Inspector的显示
字典在Inspector的显示 方法一:实现ISerializationCallbackReceiver接口 《unity3D游戏开发第二版》记录 在编辑面板中可以利用序列化监听接口特性对字典进行序列化。 主要继承ISerializationCallbackReceiver接口 实现OnAfterDeserialize() OnBeforeSerialize() …...
使用Plex结合cpolar搭建本地私人媒体站并实现远程访问
文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频,已经算是生活中稀松平常的场景了,特别是各…...
svn合并冲突时每个选项的含义
合并冲突时每个选项的含义 - 这个图片是 TortoiseSVN(一个Subversion(SVN)客户端)的合并冲突解决对话框。当你尝试合并两个版本的文件并且出现差异时,你需要解决这些差异。这个对话框提供了几个选项来处理合并冲突&…...
指针、数组与函数例题3
1、字符串复制 题目描述 设计函数实现字符串复制功能,每个字符串长度不超过100,不要使用系统提供的strcpy函数 输入要求 从键盘读入一个字符串到数组b中,以换行符结束 输出要求 将内容复制到另一个数组a中,并分别输出数组a和…...
ThreeJs样例 webgl_shadow_contact 分析
webgl_shadow_contact 官方样例中,对阴影的渲染比较特殊,很值得借鉴,学习渲染阴影的思路;这个例子中对阴影的渲染,并没有使用任何光源,没有用shadowmap的常规方式 渲染阴影;而是使用了深度材质T…...
Nginx(缓冲区)
先来思考一个问题,接入Nginx的项目一般请求流程为:“客户端→Nginx→服务端”,在这个过程中存在两个连接:“客户端→Nginx、Nginx→服务端”,那么两个不同的连接速度不一致,就会影响用户的体验(…...
MQTT协议理解并实践
MQTT是一个轻量的发布订阅模式消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用设计 MQTT协议根据主题来分发消息进行通信,支持通配符匹配,可以低开销的使用数百万Topic进行一对一,一对多双向通信。 协议特点 1. 开放…...
实现一个简单的网络通信下(udp)
时间过去好久了,先回忆一下上一篇博客的代码!! 目前来看,我们客户端发一条消息,我服务器收到这一条消息之后呢,服务器也知道了是谁给我发来的消息,紧接这就把这条消息放进buffer当中,…...
Linux中office环境LibreOffice_7.6.2下载
阿里云盘:LibreOffice_7.6.2 使用:下载的文件为exe文件,双击exe文件即可获取到文件 LibreOffice_7.6.2安装: 解压:tar -zxvf LibreOffice_7.6.2_Linux_x86-64_rpm.tar.gz 移动到RPMS目录:cd LibreOffice_7…...
Linux快捷控制
Linux快捷控制 工具安装 yum -y install lrzsz wget curl net-tools git防火墙 systemctl status firewalld.service systemctl stop firewalld.service systemctl disable firewalld.service宝塔 yum install -y wget && wget -O install.sh https://download.bt.…...
免费插件集-illustrator插件-Ai插件-重复复制-单一对象页面排版
文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件>重复复制4.总结 1.介绍 本文介绍一款免费插件,加强illustrator使用人员工作效率,进行制卡专用分层分色。首先从下载网址下载这款插件 https://download.csdn.net/download/m0_67316550/8789050…...
GO基础之变量与常量
标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123。 关键字 关键…...
Docker Compose简单入门
Docker Compose 简介 Docker Compose 是一个编排多容器发布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止。 Docker Compose 真正的作用是在一个文件(docker-compose.yml)中定义并运…...
使用 PHPMailer 实现邮件的实时发送
💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 今天我们利用GitHub上20K星星的项目 PHPMailer…...
smluntan wordpress/地推拉新app推广怎么做
1、安装python2.7官网下载,安装,配置环境变量 path,命令行 执行python2、easy_install 安装 win7 64位必须使用ez_setup.py进行安装。方法是下载ez_setup.py后。在cmd下运行 python ez_setup.py,就可以自己主动安装setuptools。下…...
iapp怎么把网站做软件/最新国际新闻热点事件
众所周知,Go 在做依赖管理时会创建两个文件,go.mod 和 go.sum。相比于 go.mod,关于 go.sum 的资料明显少得多。自然,go.mod 的重要性不言而喻,这个文件几乎提供了依赖版本的全部信息。而 go.sum 看上去就是 go module …...
网站建设优点/网络营销公司全网推广公司
目录 RequestContext 和上下文处理器 auth debug i18n media static csrf request messages 自动转义 HTML 在单个变量中禁用 在模板中的块里禁用 RequestContext 和上下文处理器 首先,我们快速回顾一下前面介绍的几个术语: • 模板是文本文…...
企业建网站报价/百度推广关键词技巧定价
中关村在线消息:华为今日发布了2019年上半年业绩:上半年销售收入4013亿元,同比增长23.2%。其中消费者业务2208亿元,占比55%。华为今年上半年智能手机发货量(含荣耀)达到1.18亿台,同比增长24%。华为董事长梁华表示&…...
成都网站app开发/网络广告投放渠道有哪些
1、父组件传值给子组件------->子组件使用 props 属性接收 2、子组件传值给父组件-------->子组件通过$emit 传递(自定义事件传递),父组件通过属性名称接收 3、父组件,子组件,兄弟组件相互传值------>需要 …...
专业做毕业设计网站/新媒体seo指的是什么
一、记录详细操作 # [] 表示可选的 # {}表示必选的 # 增 # insert [into] 表名[字段名] value|values(字段值....); # into 可省略 # [字段名] 可选 # 如果写了 你后面的值 必须与 写的字段匹配 # 不写 后面的值 必须和表的结构完全匹配 # va…...