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

大数据技术之——zeppelin数据清洗

一、zeppelin的安装

zeppelin解压后进入到conf配置文件界面。

  1. 修改zeppelin-site.xml

[root@hadoop02 conf]# cp zeppelin-site.xml.template zeppelin-site.xml
[root@hadoop02 conf]# vim zeppelin-site.xml

将IP地址和端口号设置成自己的

  1. 修改 zeppelin-env.sh

export JAVA HOME=/opt/soft/jdk180
export HADOOP HOME=/opt/soft/hadoop313
export HADOOP CONF DIR=/opt/soft/hadoop313/etc/hadoop

  1. 将hive-site.xml拷贝到zeppelin中

[root@hadoop02 conf]# cp /opt/soft/hive312/conf/hive-site.xml /opt/soft/zeppelin/conf

  1. 添加jar包

路径切换到/opt/soft/zeppelin/interpreter/jdbc下,添加如下jar包:

[root@hadoop02 jdbc]# cp /opt/soft/hadoop313/share/hadoop/common/hadoop/common-3.1.3.jar ./
[root@hadoop02 jdbc]# cp /opt/soft/hive312/lib/curator-client-2.12.0.jar ./
[root@hadoop02 jdbc]# cp /opt/soft/hive312/lib/guava-27.0-jre.jar ./
[root@hadoop02 jdbc]# cp /opt/soft/hive312/lib/hive-jdbc-3.1.2.jar ./
[root@hadoop02 jdbc]# cp /opt/soft/hive312/lib/hive-serde-3.1.2.jar ./
[root@hadoop02 jdbc]# cp /opt/soft/hive312/lib/hive-service-3.1.2.jar ./
[root@hadoop02 jdbc]# cp /opt/soft/hive312/lib/hive-service-rpc-3.1.2.jar ./
[root@hadoop02 jdbc]# cp /opt/soft/hive312/lib/libthrift-0.9.3.jar ./
[root@hadoop02 jdbc]# cp /opt/soft/hive312/lib/protobuf-java-2.5.0jar ./

添加外部jar包:

  1. 配置profile文件

# ZEPPELIN_HOME
export ZEPPELIN_HOME=/opt/soft/zeppelin
export PATH=$PATH:$ZEPPELIN_HOME/bin

  1. 启动zeppelin

[root@hadoop02 jdbc]# zeppelin-daemon.sh start

打开浏览器

二、数据结构

  1. 数据准备

表数据存放在本地的/opt/stufile/storetransaction中。

1. 检查行数
[root@hadoop02 storetransaction]# wc -l customer_details.csv
501 customer_details.csv2. 查看文件header行
[root@hadoop02 storetransaction]# head -n 2 customer_details.csv 
customer_id,first_name,last_name,email,gender,address,country,language,job,credit_type,credit_no
1,Spencer,Raffeorty,sraffeorty0@dropbox.com,Male,9274 Lyons Court,China,Khmer,Safety Technician III,jcb,3589373385487669
  1. 创建对应目录

1. 创建数据库
drop database if exists shopping cascade;
create database if not exists shopping;2. hdfs中创建目录,用于保存数据表
hdfs dfs -mkdir -p /shopping/data/customer
hdfs dfs -mkdir -p /shopping/data/store
hdfs dfs -mkdir -p /shopping/data/review
hdfs dfs -mkdir -p /shopping/data/transcation3. 将本地数据上传到hdfs
hdfs dfs -put ./customer_details.csv /shopping/data/customer
hdfs dfs -put ./store_details.csv /shopping/data/store
hdfs dfs -put ./store_review.csv /shopping/data/review
hdfs dfs -put ./transaction_details.csv /shopping/data/transcation4. 查看hdfs目录中保存的文件
hdfs dfs -ls /shopping/data/customer
hdfs dfs -ls /shopping/data/review
hdfs dfs -ls /shopping/data/store
hdfs dfs -ls /shopping/data/transcation

  1. 建表语句

创建外部表,表相关信息存储在hdfs中。

1. 顾客详细表
create external table if not exists ext_customer_details(customer_id string,first_name  string,last_name   string,email       string,gender      string,address     string,country     string,language    string,job         string,credit_type string,credit_no   string
)
row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
location '/shopping/data/customer'
tblproperties('skip.header.line.count'='1');2. 交易信息表
create external table if not exists ext_transaction_details(transaction_id  string,customer_id     string,store_id        string,price           decimal(8,2),product         string,purchase_date            string,purchase_time            string
)
row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
location '/shopping/data/transcation'
tblproperties('skip.header.line.count'='1');3. 店铺信息表
create external table if not exists ext_store_details(store_id        string,store_name      string,employee_number string
)
row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
location '/shopping/data/store'
tblproperties('skip.header.line.count'='1');4. 评分表
create external table if not exists ext_review_details(transaction_id  string,store_id        string,review_score    string
)
row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
location '/shopping/data/review'
tblproperties('skip.header.line.count'='1');

三、数据清洗

数据脱敏

在customer表中,email字段、address字段、credit_no字段不希望被显示为明文,需要对其进行加密。

drop view if exists vw_customer_details;
create view if not exists vw_customer_details as
select 
customer_id,first_name,unbase64(last_name) as last_name,
unbase64(email) as email, gender,unbase64(address) as address,
country,job,credit_type,
unbase64(concat(unbase64(credit_no),'hello')) as credit_no
from  ext_customer_details;

去除重复值

with
basetb as (select  row_number()over(partition by transaction_id) as rn,transaction_id,customer_id,store_id,price,product,purchase_date,purchase_time,substr(purchase_date,0,7) purchase_month from ext_transaction_details),
basetb2 as (select if(rn=1,transaction_id,concat(transaction_id,'_fix',rn)) transaction_id ,customer_id,store_id,price,product,purchase_date,purchase_time,purchase_month from basetb)
select * from basetb2 where transaction_id like '%fix%' limit 100;

过滤掉缺失内容

create view if not exists vm_store_review as
select * from ext_store_review where review_score <> '';

四、数据分析

Customer分析

  • 1.1 找出顾客最常用的信用卡

select credit_type, count(customer_id)
from ext_customer_details group by credit_type;

  • 1.2 找出客户资料中排名前五的职位名称

selectcredit_type,count(credit_type) count_credit_type
from  vw_customer_details group by credit_type order by credit_type having gender='female';

  • 1.3 在美国女性最常用的信用卡

selectcredit_type,count(credit_type) count_credit_type
from  vw_customer_details 
where gender='Female' and country='United States' 
group by credit_type  
order by count_credit_type desc limit 3 ;

  • 1.4 按性别和国家进行客户统计

selectgender,country,count(*)
from  vw_customer_details group by gender,country;

Transaction分析

  • 2.1 计算每月总收入

selectpurchase_month,sum(price)
from transaction_details group by purchase_month;

  • 2.2 计算每个季度的总收入

with t2 as (select concat_ws('-',cast(year(purchase_date) as string),cast(ceil(month(purchase_date)/3) as string)) as concat_quarter1,price
from transaction_details)
select concat_quarter1,sum(price) from t2 group by concat_quarter1;或者直接使用季度函数
with t2 as (select concat_ws('-',cast(year(purchase_date) as string),cast(ceil(month(purchase_date)/3) as string)) as concat_quarter1,price
from transaction_details)
select concat_quarter1,sum(price) from t2 group by concat_quarter1;

  • 2.3 按年计算总收入

selectyear(purchase_date),sum(price)
from transaction_details group by year(purchase_date);

  • 2.4 按工作日计算总收入

selectdayofweek(purchase_date) week_day,sum(price)
from transaction_details 
where dayofweek(purchase_date) between 1 and 5
group by dayofweek(purchase_date);

  • 按照工作日、月、季度、年计算总收入

with basetb as(
SELECTprice,dayofweek(purchase_date) as weekday,month(purchase_date) as month,concat_ws('-',cast(year(purchase_date) as string),cast(ceil(month(purchase_date)/3) as string)) as quarter,year(purchase_date) as year
from transaction_details)
select sum(price) as sumMoney,weekday,month,quarter,year from basetb group by weekday,month,quarter,year

  • 2.5 按时间段计算总收入(需要清理数据)

这里的时间格式不统一,有24时记时,也有12时记时,需要对数据进行整合。

解体思路:

按时间段计算总收入

early morning(5:00-8:00)

morning(8:00-11:00)

noon(11:00-13:00)

afternoon(13:00-18:00)

evening(18:00-22:00)

night(22:00-5:00)

1. 将12时转换为24时
selectif(purchase_time like '%M',from_unixtime(unix_timestamp(purchase_time,'hh:mm aa'),'HH:mm'),purchase_time) as time_form
from transaction_details;2.分段进行分析
with
basetb as (
selectprice,purchase_time,if(purchase_time like '%M',from_unixtime(unix_timestamp(purchase_time,'hh:mm aa'),'HH:mm'),purchase_time) as time_format
from transaction_details),
basetb2 as (
select price,purchase_time,time_format,cast(split(time_format,':')[0] as decimal(4,2)) +cast(split(time_format,':')[1] as decimal(4,2))/60 as `purchase_time_num`
from basetb
)
select price,purchase_time,if(purchase_time_num>5 and purchase_time_num<=8,'early morning',if(purchase_time_num>8 and purchase_time_num<=11,'morning',if(purchase_time_num>11 and purchase_time_num<=13,'noon',if(purchase_time_num>13 and purchase_time_num<=18,'afternoon',if(purchase_time_num>18 and purchase_time_num<=22,'evening','night'))))) as time_bucket
from basetb2;3. 对数据进行分析
select time_bucket1,sum(price) from basetb3
group by time_bucket1;

  • 2.6 按时间段计算平均消费

select time_bucket1,avg(price) from basetb3
group by time_bucket1;

  • 2.7 按工作日计算平均消费

selectdayofweek(purchase_date),avg(price)
from  transaction_details 
where dayofweek(purchase_date) between 1 and 5
group by dayofweek(purchase_date)

  • 2.8 计算年、月、日的交易总数

selectcount(1) over(partition by year(purchase_date)) year,count(1) over(partition by year(purchase_date),month(purchase_date)) month,count(1) over(partition by year(purchase_date),month(purchase_date),day(purchase_date)) day
from  transaction_details 

  • 2.9 找出交易量最大的10个客户

selectcustomer_id,count(1) a
from transaction_details group by customer_id order by a desc limit 10

  • 2.10 找出消费最多的前10位顾客

selectcustomer_id,sum(price) a
from transaction_details group by customer_id order by a desc limit 10

  • 2.11 统计该期间交易数量最少的用户

selectcustomer_id,count(1) a
from transaction_details group by customer_id order by a asc limit 5

  • 2.12 计算每个季度的独立客户总数

1. 每个季度的用户总数
select count(1),year(purchase_date),quarter(purchase_date)
from transaction_details group by year(purchase_date),quarter(purchase_date)2. 去除掉重复的用户
select count(1),year(purchase_date),quarter(purchase_date)
from(select row_number() over (partition by customer_id,year(purchase_date),quarter(purchase_date)) rm1 ,* from transaction_details) t1where t1.rm1=1 group by year(purchase_date),quarter(purchase_date)

  • 2.13 计算每周的独立客户总数

select count(1),weekofyear(purchase_date)
from(select row_number() over (partition by customer_id,year(purchase_date),quarter(purchase_date)) rm1 ,* from transaction_details) t1where t1.rm1=1 group by weekofyear(purchase_date)

  • 2.14 计算整个活动客户平均花费的最大值

select customer_id,max(tb.avg1) from(select customer_id,avg(price) avg1 from transaction_details group by customer_id) tb;

  • 2.15 统计每月花费最多的客户

with t1 as ( selectpurchase_month,customer_id,sum(price) sp
from transaction_details group by purchase_month,customer_id )
select purchase_month,max(sp) from t1 group by purchase_month

  • 2.16 统计每月访问次数最多的客户

with t1 as (
selectpurchase_month,customer_id,count(price) cp,rank() over (partition by purchase_month order by count(price) desc) rk
from transaction_details group by purchase_month,customer_id)
select purchase_month,customer_id,cp from t1 where rk=1;

  • 2.17 按总价找出最受欢迎的5种产品

select product,sum(price) sp from transaction_details 
group by product 
order by sp desc limit 5;

  • 2.18根据购买频率找出最畅销的5种产品

select product,count(price) cp from transaction_details 
group by product 
order by cp desc limit 5;

  • 2.19根据客户数量找出最受欢迎的5种产品

select product,count(distinct customer_id) cp from transaction_details 
group by product 
order by cp desc limit 5;

  • 2.20 验证前5个details

Store分析

  • 3.1 按客流量找出最受欢迎的商店

selectstore_name,count(distinct customer_id) as visit
from transaction_details td join ext_store_details sd on td.store_id=sd.store_id
group by store_name order by visit

  • 3.2 根据顾客消费价格找出最受欢迎的商店

selectstore_name,sum(price) as visit
from transaction_details td join ext_store_details sd on td.store_id=sd.store_id
group by store_name order by visit

  • 3.3 根据顾客交易情况找出最受欢迎的商店

selectstore_name,count(customer_id) as c
from  transaction_details td join ext_store_details sd on td.store_id=sd.store_id
group by store_name order by c desc

  • 3.4 根据商店和唯一的顾客id获取最受欢迎的产品

with t1 as(
selectstore_name,product,count(distinct customer_id) cdc
from  transaction_details td join ext_store_details sd on td.store_id=sd.store_id
group by store_name,product having cdc>3 order by cdc desc
),
t2 as(
select store_name,product,cdc,row_number() over (partition by store_name order by  cdc desc ) rn from t1
)
select store_name,product,cdc from t2 where rn=1;

  • 3.5 获取每个商店的员工与顾客比

with 
t1 as ( select count(1) c1,store_idfrom transaction_details tdgroup by td.store_id )
select concat(substring(cast(esd.employee_number/t1.c1 as decimal(9,8))*100.0,0,4),'%'),t1.store_id,esd.store_name from t1 
join shopping.ext_store_details esd on t1.store_id=esd.store_id

  • 3.6 按年和月计算每家店的收入

with t1 as (select year(purchase_date) year, month(purchase_date) month, store_id si, sum(price) spfrom transaction_detailsgroup by year(purchase_date), month(purchase_date), store_id
)
select esd.store_id,esd.store_name,t1.year,t1.month,t1.sp from t1 
join shopping.ext_store_details esd on t1.si=esd.store_id

  • 3.7 按店铺制作总收益饼图

selectstore_id,sum(price)
from transaction_details group by store_id

  • 3.8 找出每个商店最繁忙的时间段

with t1 as(
selectprice,purchase_time,store_id,if(purchase_time like '%M',from_unixtime(unix_timestamp(purchase_time,'hh:mm aa'),'HH:mm'),from_unixtime(unix_timestamp(purchase_time,'HH:mm'),'HH:mm')) time1
from transaction_details
),t2 as (
selectprice,purchase_time,store_id,time1,cast(split(time1,':')[0] as int)+cast(split(time1,':')[1] as decimal(4,2))/60 time2
from t1),t3 as (
selectprice,purchase_time,store_id,time1,case when time2>5 and time2<=8 then 'early morning'when time2<=11 and time2>8 then 'morning'when time2<=13 and time2>11 then 'noon'when time2<=18 and time2>13 then 'afternoon'when time2<=22 and time2>18 then 'evening'else 'night' end time3
from t2)select store_id,time3,count(1) sp from t3 group by time3,store_id order by sp desc;

  • 3.9 找出每家店的忠实顾客

with t1 as ( selectrow_number() over (partition by customer_id,store_id) ro,*from transaction_details )
select customer_id,store_id,count(1) c from t1 
group by customer_id,store_id having c>=8

  • 3.10 根据每位员工的最高收入找出明星商店

select distinct td.store_id,esd.store_name,esd.employee_number,t1.sp/esd.employee_number rk from transaction_details tdjoin ext_store_details esd on td.store_id = esd.store_idjoin (select store_id,sum(price) sp from transaction_details group by store_id) t1 on td.store_id=t1.store_id
order by rk desc

Review分析

  • 4.1 在ext_store_review中找出存在冲突的交易映射关系

with basetb as(
select row_number() over (partition by transaction_id) as row_number1,* from ext_review_details
)
select row_number1,a.transaction_id,a.store_id,b.store_id,a.review_score,b.review_score from basetb a
join ext_review_details b on a.transaction_id=b.transaction_id
where row_number1 >1

  • 4.2 了解客户评价的覆盖率

with t1 as (
select count(1) c1 from ext_review_details where review_score <> ''),
t2 as (
select count(1) c2 from ext_review_details where review_score = ''
)
select concat(cast((c1-c2)/c1*100 as decimal(4,2)),'%') from t1 join t2

  • 4.3 根据评分了解客户的分布情况

select c.country,r.review_score,count(price) from ext_review_details rjoin transaction_details t on r.transaction_id=t.transaction_idjoin ext_customer_details c on t.customer_id = c.customer_id
group by review_score,c.country;

  • 4.4 根据交易了解客户的分布情况

selectcountry,sum(price),count(price)
from transaction_details tdjoin ext_customer_details cd on td.customer_id = cd.customer_id
group by cd.country

  • 4.5 客户给出的最佳评价是否总是同一家门店

相关文章:

大数据技术之——zeppelin数据清洗

一、zeppelin的安装zeppelin解压后进入到conf配置文件界面。修改zeppelin-site.xml[roothadoop02 conf]# cp zeppelin-site.xml.template zeppelin-site.xml[roothadoop02 conf]# vim zeppelin-site.xml将IP地址和端口号设置成自己的修改 zeppelin-env.shexport JAVA HOME/opt/…...

Barra模型因子的构建及应用系列五之NonLinear Size因子

一、摘要 在前期的Barra模型系列文章中&#xff0c;我们构建了Size因子、Beta因子、Momentum因子和Residual Volatility因子&#xff0c;并分别创建了对应的单因子策略&#xff0c;本节文章在该系列下进一步构建NonLinear Size因子。从回测结果看&#xff0c;自2022年以来&…...

C++ 常用命令行开发工具(Linux)

文章目录1、简介2、gcc / g2.1 system&#xff08;执行shell 命令&#xff09;2.2 popen&#xff08;建立管道I/O&#xff09;2.3 vforkexec&#xff08;新建子进程&#xff09;3、clang3.1 下载和安装clang3.2 clang和gcc比较3.2.1 gcc3.2.2 clang3.2.3 LLVM4、make4.1 例子14…...

java基础学习 day47(抽象类,抽象方法)

1. 抽象方法 将共性的行为&#xff08;方法&#xff09;抽取到父类之后&#xff0c;由于每一个子类执行的内容是不一样的&#xff0c;所以&#xff0c;在父类中不能确定具体的方法体&#xff0c;该方法就可以定义为抽象方法。抽象方法定义格式&#xff1a; public abstract 返…...

Java代码弱点与修复之——Open redirect(开放重定向)

弱点描述 Open redirect , 开放重定向,是一种常见的安全漏洞,也被称为“重定向漏洞”。该漏洞通常出现在 Web 应用程序中,攻击者可以利用它将用户重定向到恶意站点,从而进行钓鱼攻击、恶意软件传播、诱骗等活动。 在 Java 中,通过重定向 HTTP 请求来实现应用程序中的跳转…...

Go 指针

指针在编程中&#xff0c;一个内存地址用来定位一段内存。通常地&#xff0c;一个内存地址用一个操作系统原生字&#xff08;native word&#xff09;来存储。 一个原生字在32位操作系统上占4个字节&#xff0c;在64位操作系统上占8个字节。 所以&#xff0c;32位操作系统上的理…...

shardingsphere5.1.1分表分库yaml配置 自定义策略

前言通过阅读官方稳定给出示例 https://shardingsphere.apache.org/document一、基本配置示例spring:sharding:datasource:names: ds0, ds1ds0:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/db0username: rootpassword: rootds1:driver-class-na…...

“探索未来:VR全景直播技术引领新媒体时代”

随着虚拟现实技术的不断发展&#xff0c;VR全景直播已经成为了越来越受欢迎的直播形式。VR全景直播可以让观众通过虚拟现实设备亲临直播现场&#xff0c;享受身临其境的观看体验。VR全景直播是什么&#xff1f; VR全景直播是虚拟现实技术和直播的结合。相对于传统直播&#xff…...

Spring Cloud(微服务)学习篇(六)

Spring Cloud(微服务)学习篇(六) 2 Sentinel实现流量规则(控制台版) 2.1 变更pom.xml(shop-user-server项目)代码 2.1.1 加入如下依赖 <!--熔断限流--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-…...

MATLAB-Scatter3-三维散点图投影至XYZ三个平面

MATLAB-Scatter3函数可以绘制立体的三维散点图&#xff0c;但有时候需要在该立体图中分析X-Y-Z三者的关系&#xff0c;即1副图呈现出4个信息&#xff0c;XYZ综合信息、XY信息、XZ信息、YZ信息。现有的Scatter3无法实现该功能&#xff0c;本文可实现Scatter3三维立体散点图在三个…...

Unity/C#------委托与事件(一篇文章彻底搞懂...)

一&#xff1a;委托 所有的代码语言创造者母语都是英语&#xff0c;我们从英语翻译到中文的过程中难免会存在一些不太能还原本意的词&#xff0c;比如我之前一直不理解构造函数和析构函数&#xff0c;只知道这俩货作用相反&#xff0c;直到我看到了它的英文意思&#xff0c;Con…...

别再为 Jenkins 安装烦恼,Docker 帮你轻松解决

前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓月&#xff0c;本文收录与云原生相关的专栏&#xff0c;以下是我的简介&#xff1a; &#x1f3e0;个人主页&#xff1a;我是沐风晓月 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是沐风晓月&#xff0c;双…...

汇编语言程序设计(一)

前言 在学习汇编语言之前&#xff0c;我们应该要知道汇编语言他是一门怎么样的语言。汇编语言是直接工作在硬件上的一门编程语言&#xff0c;学习汇编语言之前最好先了解一下计算机硬件系统的结构和工作原理。学习汇编语言的重点是学习如何利用硬件系统的编程结构和指令集进而…...

【uni-app教程】四、UniAPP 路由配置及页面跳转

四、UniAPP 路由配置及页面跳转 (1) 路由配置 uni-app页面路由为框架统一管理&#xff0c;开发者需要在pages.json里配置每个路由页面的路径及页面样式。类似小程序在 app.json 中配置页面路由一样。所以 uni-app 的路由用法与 Vue Router 不同&#xff0c;如仍希望采用 Vue …...

ROS从入门到精通系列(二十八)-- ROS控制器图形化界面开发

ROS (Robot Operating System, 机器人操作系统) 作为机器人软件中的通信及控制中间件,提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。ROS遵循BSD开源许可协议。 随着机器人智…...

Submodule命令:android如何将自己项目中的某个Module作为gitlab中第三方公共库

一、创建远程公共库 1、Android Studio创建本地仓库 创建一个新的module 在新建module中添加代码(此处示例代码) 右击新建的module&#xff0c;打开新建module的命令行界面&#xff0c; 因为我们只上传这个module的代码&#xff0c;而不是整个项目的代码 命令行中输入以下命令…...

MySQL索引事务

1.索引1.1概念索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引&#xff0c;并指定索引的类型&#xff0c;各类索引有各自的数据结果实现。&#xff08;这里只用通俗的语言和图片进行介绍&#xff09;1.2作用数据库中的表…...

ISO27001信息安全管理体系认证

​ISO信息安全管理体系认证 一、什么是ISO信息安全管理体系认证&#xff1f; ISO是信息安全管理体系认证&#xff0c;是由国际标准化组织&#xff08;ISO&#xff09;采纳英国标准协会BS-2标准后实施的管理体系&#xff0c;成为了“信息安全管理”的国际通用语言&#xff0c;企…...

Linux应用GUI开发C++ 之gtkmm4(1)

目录概述GTKgtkmm安装gtkmm4hello,worldcodelite配置代码解释概述 GTK GTK是一个小部件工具包。GTK创建的每个用户界面都由小部件组成。这是在C语言中使用GObject实现的&#xff0c;GObject是一个面向对象的C语言框架。窗口小部件是主容器。然后通过向窗口中添加按钮、下拉菜…...

选课系统的设计与实现

技术&#xff1a;Java等摘要&#xff1a;目前国内各高校的规模越来越大&#xff0c;进而造成教师教学管理等工作量日趋加大。然而&#xff0c;现代教育的信息化、网络化已经成为教育发展的一个重要方向&#xff0c;同时也为解决高校教学管理效率低下的现状&#xff0c;使管理突…...

关于安卓的一些残缺笔记

安卓笔记Android应用项目的开发过程Android的调试Android项目文档结构Intent的显式/隐式调用Activity的生命周期1个Activity界面涉及到生命周期的情况2个Activity界面涉及到生命周期的情况Android布局的理论讲解Activity界面布局ContentProvider是如何实现数据共享Android整体架…...

MySQL 中的锁有哪些类型,MySQL 中加锁的原则

锁的类型MySQL 找那个根据加锁的范围&#xff0c;大致可以分成全局锁&#xff0c;表级锁和行级锁。全局锁全局锁&#xff0c;就是对整个数据库加锁。加锁flush tables with read lock解锁unlock tables全局锁会让整个库处于只读状态&#xff0c;之后所有的更新操作都会被阻塞&a…...

Winform中操作Sqlite数据增删改查、程序启动时执行创建表初始化操作

场景 Sqlite数据库 SQLite是一个进程内的库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。 它是一个零配置的数据库&#xff0c;这意味着与其他数据库不一样&#xff0c;您不需要在系统中配置。 就像其他数据库&#xff0c;SQLite 引擎不…...

2023最新版本RabbitMQ下载安装教程

一、RabbitMQ简介 RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。主要用于在进程、应用程序和服务器之间交换数据&#xff0c;可以通过插件支持进行扩展&#xff0c;支持许多协议&#xff0c;并提供高性能、可靠性、集群和高可用队列。 AMQP &#xff1a;Advanced Me…...

如何使用码匠连接 Elasticsearch

目录 在码匠中集成 Elasticsearch 在码匠中使用 Elasticsearch 关于码匠 Elasticsearch 是一个开源的分布式搜索和分析引擎&#xff0c;常用于处理大规模数据集的搜索、实时数据分析和数据挖掘任务。它支持多种数据源&#xff0c;包括关系型数据库&#xff08;如 MySQL、Pos…...

jmeter学习笔记二(jmeter函数与后置处理器)

Jmeter重要的函数 ${__counter(,)} 计数器 ​ ${__counter(TRUE,)} 默认加1; TRUE&#xff0c;每个用户有自己的计数器&#xff1b;FALSE&#xff0c;使用全局计数器 ​ 计数器元件&#xff0c;可以设置起始值&#xff0c;间隔值&#xff0c;最大值。运行结果超过最大值时&a…...

【独家】华为OD机试提供C语言题解 - 子序列长度

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明子序…...

Java之注解

注解1.1 注解的概念1.2 内置注解1.3 元注解1.4 自定义注解1.1 注解的概念 Annotation 是从JDK5.0 开始引入的新技术 Annotation的作用&#xff1a; 不是程序本身&#xff0c;可以对程序做出解释&#xff08;这一点和注释comment没什么区别&#xff09;可以被其他程序&#xff…...

【C++】string

【C修炼秘籍】string 目录 【C修炼秘籍】string 文章目录 前言 一、标准库里的string 二、string常用接口功能简介&#xff08;具体使用和底层转到模拟实现&#xff09; 1、string类的常见构造函数 2、string类对象的容量操作 3、string类对象的访问及遍历操作 4、 string类对象…...

JVM详解——执行引擎

如果有兴趣了解更多相关内容&#xff0c;欢迎来我的个人网站看看&#xff1a;耶瞳空间 一&#xff1a;执行引擎介绍 “虚拟机”是一个相对于“物理机”的概念&#xff0c;这两种机器都有代码执行能力&#xff0c;其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和…...

网站排名快速提升/百度怎么创建自己的网站

源地址&#xff1a;http://devliangel.blog.51cto.com/469347/674244 构建企业服务之windows 2008 负载均衡服务器部署 项目环境&#xff1a; 两台Windows Server 2008 均为双网卡 IP地址 192.168.19.100(外网1) 99.99.99.99(内网1专用) 192.168.19.101(外网2) 99.99.99.100(内…...

网站备案在哪查/友情链接软件

本书第一章提出了一个看似简单的问题&#xff0c;有最多1000万条不同的整型数据存在于硬盘的文件中&#xff0c;如何在1M内存的情况下对其进行尽可能快的排序。 每个数字用4byte&#xff0c;1M即可存储250 000个数据&#xff0c;显然&#xff0c;只要每次对250 000个数据排序&a…...

静海的做网站/网络营销成功案例分析

【多选题】地层压力的表示方法有( )。A. 用压力的单位表示B. 用压力梯度表示C. 用当量钻井液密度表示D. 用压力系数表示【填空题】(第六章)现在工业上将黄铜和白铜之外的铜合金均称为 。【判断题】亚马逊服饰鞋包钟表首饰类商品信息检查表规定,Brand Name 是必填项,并且要将Bra…...

wordpress 产品视频上传/app 推广

修改鼠标滚轮方向&配置MacBook触控板的多指快捷操作背景&#xff1a;问题描述&#xff1a;解决办法&#xff1a;参考链接&#xff1a;软件下载&#xff1a;几点经验&#xff1a;背景&#xff1a; 从 macOS 转到 windows 系统最不适应的就是鼠标的滚轮方向&#xff0c;用久了…...

安徽省政府网站建设/百度网盘首页

cocos2d-x最新支持了webp图片格式&#xff0c;google在2010年发布的这个图片格式具备比jpg和png更高的压缩比&#xff0c;并且支持alpha通道。 图片体积对比&#xff1a; 原始图片&#xff08;map_008_BG_2.png 1024*1024的一张背景图&#xff09; 大小910k 压缩为png8 369k …...

wordpress 手机模版/线上推广宣传方式有哪些

Sublime Text 3与Sublime Text 2的不同 其实有不少人写过如何让Sublime Text 2支持GB2312和GBK编码&#xff0c;例如这篇。基本原理就是先装好Package Control&#xff0c;然后再通过这个安装ConvertToUTF8的Package。 但是文中的方法在Sublime Text 3时代行不通了&#xff0c;…...