Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
flink_warehouse_rt
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
data
flink_warehouse_rt
Commits
2863b3ed
Commit
2863b3ed
authored
Jan 16, 2020
by
刘喆
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update bitmapfunction
parent
2a7f4b8d
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
136 additions
and
21 deletions
+136
-21
PreciseAccumulator.java
...inct/src/main/java/com/gmei/cache/PreciseAccumulator.java
+17
-0
BitMapFunction.java
...tinct/src/main/java/com/gmei/function/BitMapFunction.java
+35
-18
BlPreciseExposureKeySelector.java
.../java/com/gmei/function/BlPreciseExposureKeySelector.java
+1
-1
HyperLogLogFunction.java
.../src/main/java/com/gmei/function/HyperLogLogFunction.java
+9
-0
PreciseExposureStreaming.java
...ain/java/com/gmei/streaming/PreciseExposureStreaming.java
+5
-1
BitMapFunctionTest.java
...t/src/test/java/com/gmei/function/BitMapFunctionTest.java
+47
-0
DateUtilTest.java
...d_distinct/src/test/java/com/gmei/utils/DateUtilTest.java
+21
-0
MyProducter.java
..._dimen_d_rt/src/test/java/com/gmei/kafka/MyProducter.java
+1
-1
No files found.
bl_et_pe_preciseexposure_inc_d_distinct/src/main/java/com/gmei/cache/PreciseAccumulator.java
View file @
2863b3ed
...
@@ -15,10 +15,23 @@ import org.roaringbitmap.longlong.Roaring64NavigableMap;
...
@@ -15,10 +15,23 @@ import org.roaringbitmap.longlong.Roaring64NavigableMap;
public
class
PreciseAccumulator
{
public
class
PreciseAccumulator
{
private
Roaring64NavigableMap
bitmap
;
private
Roaring64NavigableMap
bitmap
;
public
Roaring64NavigableMap
getBitmap
()
{
return
bitmap
;
}
public
void
setBitmap
(
Roaring64NavigableMap
bitmap
)
{
this
.
bitmap
=
bitmap
;
}
public
PreciseAccumulator
(){
public
PreciseAccumulator
(){
bitmap
=
new
Roaring64NavigableMap
();
bitmap
=
new
Roaring64NavigableMap
();
}
}
public
PreciseAccumulator
(
long
defaultValue
)
{
bitmap
=
new
Roaring64NavigableMap
();
bitmap
.
addLong
(
defaultValue
);
}
public
void
add
(
long
id
){
public
void
add
(
long
id
){
bitmap
.
addLong
(
id
);
bitmap
.
addLong
(
id
);
}
}
...
@@ -35,4 +48,8 @@ public class PreciseAccumulator {
...
@@ -35,4 +48,8 @@ public class PreciseAccumulator {
bitmap
.
clear
();
bitmap
.
clear
();
}
}
@Override
public
String
toString
()
{
return
bitmap
.
toString
();
}
}
}
bl_et_pe_preciseexposure_inc_d_distinct/src/main/java/com/gmei/function/BitMapFunction.java
View file @
2863b3ed
...
@@ -2,55 +2,72 @@ package com.gmei.function;
...
@@ -2,55 +2,72 @@ package com.gmei.function;
import
com.gmei.bean.bl.BlPreciseExposureBean
;
import
com.gmei.bean.bl.BlPreciseExposureBean
;
import
com.gmei.cache.PreciseAccumulator
;
import
com.gmei.cache.PreciseAccumulator
;
import
com.gmei.utils.DateUtil
;
import
com.gmei.utils.MurmurHash
;
import
com.gmei.utils.MurmurHash
;
import
com.google.common.hash.BloomFilter
;
import
org.apache.flink.api.common.state.StateTtlConfig
;
import
com.google.common.hash.Funnels
;
import
org.apache.flink.api.common.state.ValueState
;
import
org.apache.flink.api.common.state.ValueStateDescriptor
;
import
org.apache.flink.api.common.time.Time
;
import
org.apache.flink.api.common.typeinfo.TypeInformation
;
import
org.apache.flink.configuration.Configuration
;
import
org.apache.flink.configuration.Configuration
;
import
org.apache.flink.streaming.api.functions.KeyedProcessFunction
;
import
org.apache.flink.streaming.api.functions.KeyedProcessFunction
;
import
org.apache.flink.util.Collector
;
import
org.apache.flink.util.Collector
;
import
org.roaringbitmap.longlong.Roaring64NavigableMap
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
java.nio.charset.Charset
;
public
class
BitMapFunction
extends
KeyedProcessFunction
<
String
,
BlPreciseExposureBean
,
BlPreciseExposureBean
>
{
public
class
BitMapFunction
extends
KeyedProcessFunction
<
String
,
BlPreciseExposureBean
,
BlPreciseExposureBean
>
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
BitMapFunction
.
class
);
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
BitMapFunction
.
class
);
private
volatile
PreciseAccumulator
bitMap
;
// private volatile PreciseAccumulator bitMap;
private
PreciseAccumulator
defaultValue
;
private
ValueState
<
PreciseAccumulator
>
bitMapState
;
private
ValueStateDescriptor
<
PreciseAccumulator
>
bitMapStateDesc
;
@Override
@Override
public
void
onTimer
(
long
timestamp
,
OnTimerContext
ctx
,
Collector
<
BlPreciseExposureBean
>
out
)
throws
Exception
{
public
void
onTimer
(
long
timestamp
,
OnTimerContext
ctx
,
Collector
<
BlPreciseExposureBean
>
out
)
throws
Exception
{
super
.
onTimer
(
timestamp
,
ctx
,
out
);
super
.
onTimer
(
timestamp
,
ctx
,
out
);
// long s = System.currentTimeMillis();
bitMapState
.
clear
();
bitMap
=
new
PreciseAccumulator
();
// bitMap = new PreciseAccumulator();
// long e = System.currentTimeMillis();
// LOGGER.info("Timer triggered & resetted BitMap, time cost: " + (e - s));
}
}
@Override
@Override
public
void
open
(
Configuration
parameters
)
throws
Exception
{
public
void
open
(
Configuration
parameters
)
throws
Exception
{
super
.
open
(
parameters
);
super
.
open
(
parameters
);
// long s = System.currentTimeMillis();
// bitMap = new PreciseAccumulator();
bitMap
=
new
PreciseAccumulator
();
//设置ValueState的TTL的生命周期为24个小时,自动会清除ValueState的里内容
// long e = System.currentTimeMillis();
StateTtlConfig
ttlConfig
=
StateTtlConfig
// LOGGER.info("Created BitMap, time cost: " + (e - s));
.
newBuilder
(
Time
.
days
(
1
))
.
setUpdateType
(
StateTtlConfig
.
UpdateType
.
OnCreateAndWrite
)
.
setStateVisibility
(
StateTtlConfig
.
StateVisibility
.
NeverReturnExpired
)
.
build
();
bitMapStateDesc
=
new
ValueStateDescriptor
<
PreciseAccumulator
>(
"bitMap"
,
TypeInformation
.
of
(
PreciseAccumulator
.
class
));
bitMapStateDesc
.
enableTimeToLive
(
ttlConfig
);
bitMapState
=
getRuntimeContext
().
getState
(
bitMapStateDesc
);
}
}
@Override
@Override
public
void
close
()
throws
Exception
{
public
void
close
()
throws
Exception
{
super
.
close
();
super
.
close
();
bitMap
.
clear
();
// bitMap.clear();
bitMapState
.
clear
();
}
}
@Override
@Override
public
void
processElement
(
BlPreciseExposureBean
blPreciseExposureBean
,
Context
context
,
Collector
<
BlPreciseExposureBean
>
collector
)
throws
Exception
{
public
void
processElement
(
BlPreciseExposureBean
blPreciseExposureBean
,
Context
context
,
Collector
<
BlPreciseExposureBean
>
collector
)
throws
Exception
{
String
blPreciseExposureBeanId
=
blPreciseExposureBean
.
getJson
();
String
blPreciseExposureBeanId
=
blPreciseExposureBean
.
getJson
();
long
hashCode
=
MurmurHash
.
hash64
(
blPreciseExposureBeanId
);
long
hashCode
=
MurmurHash
.
hash64
(
blPreciseExposureBeanId
);
if
(!
bitMap
.
contains
(
hashCode
))
{
if
(
this
.
bitMapState
.
value
()
==
null
)
{
defaultValue
=
new
PreciseAccumulator
(
0
);
defaultValue
.
add
(
0
);
bitMapState
.
update
(
defaultValue
);
}
PreciseAccumulator
bitMapValue
=
this
.
bitMapState
.
value
();
if
(!
bitMapValue
.
contains
(
hashCode
))
{
bitMapValue
.
add
(
hashCode
);
bitMapState
.
update
(
bitMapValue
);
// bitMap.add(hashCode);
collector
.
collect
(
blPreciseExposureBean
);
collector
.
collect
(
blPreciseExposureBean
);
bitMap
.
add
(
hashCode
);
}
}
context
.
timerService
().
registerProcessingTimeTimer
(
DateUtil
.
tomorrowZeroTimestampMs
(
Double
.
valueOf
(
blPreciseExposureBean
.
getGm_nginx_timestamp
()).
longValue
()
*
1000
,
8
)
+
1
);
//
context.timerService().registerProcessingTimeTimer(DateUtil.tomorrowZeroTimestampMs(Double.valueOf(blPreciseExposureBean.getGm_nginx_timestamp()).longValue() * 1000, 8) + 1);
}
}
}
}
bl_et_pe_preciseexposure_inc_d_distinct/src/main/java/com/gmei/function/BlPreciseExposureKeySelector.java
View file @
2863b3ed
...
@@ -16,6 +16,6 @@ import org.apache.flink.api.java.functions.KeySelector;
...
@@ -16,6 +16,6 @@ import org.apache.flink.api.java.functions.KeySelector;
public
class
BlPreciseExposureKeySelector
implements
KeySelector
<
BlPreciseExposureBean
,
String
>
{
public
class
BlPreciseExposureKeySelector
implements
KeySelector
<
BlPreciseExposureBean
,
String
>
{
@Override
@Override
public
String
getKey
(
BlPreciseExposureBean
blPreciseExposureBean
)
throws
Exception
{
public
String
getKey
(
BlPreciseExposureBean
blPreciseExposureBean
)
throws
Exception
{
return
blPreciseExposureBean
.
get
Json
();
return
blPreciseExposureBean
.
get
Gm_nginx_time_day
();
}
}
}
}
bl_et_pe_preciseexposure_inc_d_distinct/src/main/java/com/gmei/function/HyperLogLogFunction.java
View file @
2863b3ed
...
@@ -4,8 +4,10 @@ import com.gmei.bean.bl.BlPreciseExposureBean;
...
@@ -4,8 +4,10 @@ import com.gmei.bean.bl.BlPreciseExposureBean;
import
com.gmei.utils.DateUtil
;
import
com.gmei.utils.DateUtil
;
import
com.gmei.utils.HyperLogLog
;
import
com.gmei.utils.HyperLogLog
;
import
net.agkn.hll.HLL
;
import
net.agkn.hll.HLL
;
import
org.apache.flink.api.common.state.StateTtlConfig
;
import
org.apache.flink.api.common.state.ValueState
;
import
org.apache.flink.api.common.state.ValueState
;
import
org.apache.flink.api.common.state.ValueStateDescriptor
;
import
org.apache.flink.api.common.state.ValueStateDescriptor
;
import
org.apache.flink.api.common.time.Time
;
import
org.apache.flink.api.common.typeinfo.Types
;
import
org.apache.flink.api.common.typeinfo.Types
;
import
org.apache.flink.configuration.Configuration
;
import
org.apache.flink.configuration.Configuration
;
import
org.apache.flink.streaming.api.functions.KeyedProcessFunction
;
import
org.apache.flink.streaming.api.functions.KeyedProcessFunction
;
...
@@ -44,8 +46,15 @@ public class HyperLogLogFunction extends KeyedProcessFunction<String, BlPreciseE
...
@@ -44,8 +46,15 @@ public class HyperLogLogFunction extends KeyedProcessFunction<String, BlPreciseE
@Override
@Override
public
void
open
(
Configuration
parameters
)
throws
Exception
{
public
void
open
(
Configuration
parameters
)
throws
Exception
{
super
.
open
(
parameters
);
super
.
open
(
parameters
);
//设置ValueState的TTL的生命周期为24个小时,自动会清除ValueState的里内容
StateTtlConfig
ttlConfig
=
StateTtlConfig
.
newBuilder
(
Time
.
days
(
1
))
.
setUpdateType
(
StateTtlConfig
.
UpdateType
.
OnCreateAndWrite
)
.
setStateVisibility
(
StateTtlConfig
.
StateVisibility
.
NeverReturnExpired
)
.
build
();
blPreciseExposureBeanHLL
=
new
HyperLogLog
(
HLL_FALSE_POSITIVE_RATE
);
blPreciseExposureBeanHLL
=
new
HyperLogLog
(
HLL_FALSE_POSITIVE_RATE
);
hllStateDescriptor
=
new
ValueStateDescriptor
(
"hll"
,
Types
.
OBJECT_ARRAY
(
Types
.
LONG
));
hllStateDescriptor
=
new
ValueStateDescriptor
(
"hll"
,
Types
.
OBJECT_ARRAY
(
Types
.
LONG
));
hllStateDescriptor
.
enableTimeToLive
(
ttlConfig
);
hllState
=
getRuntimeContext
().
getState
(
hllStateDescriptor
);
hllState
=
getRuntimeContext
().
getState
(
hllStateDescriptor
);
}
}
...
...
bl_et_pe_preciseexposure_inc_d_distinct/src/main/java/com/gmei/streaming/PreciseExposureStreaming.java
View file @
2863b3ed
...
@@ -145,18 +145,22 @@ public class PreciseExposureStreaming {
...
@@ -145,18 +145,22 @@ public class PreciseExposureStreaming {
BL层数据下发
BL层数据下发
*/
*/
blPreciseExposureStreamBF
blPreciseExposureStreamBF
// .print();
.
addSink
(
new
BlPreciseExposureMysqlSink
(
sinkJdbcUrl
,
sinkBFBlTableName
))
.
addSink
(
new
BlPreciseExposureMysqlSink
(
sinkJdbcUrl
,
sinkBFBlTableName
))
.
uid
(
"id_blpreciseexposurebf_sink"
)
.
uid
(
"id_blpreciseexposurebf_sink"
)
.
setParallelism
(
parallelism
);
.
setParallelism
(
parallelism
);
blPreciseExposureStreamHLL
blPreciseExposureStreamHLL
// .print();
.
addSink
(
new
BlPreciseExposureMysqlSink
(
sinkJdbcUrl
,
sinkHLLBlTableName
))
.
addSink
(
new
BlPreciseExposureMysqlSink
(
sinkJdbcUrl
,
sinkHLLBlTableName
))
.
uid
(
"id_blpreciseexposurehll_sink"
)
.
uid
(
"id_blpreciseexposurehll_sink"
)
.
setParallelism
(
parallelism
);
.
setParallelism
(
parallelism
);
blPreciseExposureStreamBM
blPreciseExposureStreamBM
// .print();
.
addSink
(
new
BlPreciseExposureMysqlSink
(
sinkJdbcUrl
,
sinkBMBlTableName
))
.
addSink
(
new
BlPreciseExposureMysqlSink
(
sinkJdbcUrl
,
sinkBMBlTableName
))
.
uid
(
"id_blpreciseexposurebm_sink"
).
setParallelism
(
parallelism
);
.
uid
(
"id_blpreciseexposurebm_sink"
)
.
setParallelism
(
parallelism
);
// //测试打印
// //测试打印
// blPreciseExposureStreamBF.print();
// blPreciseExposureStreamBF.print();
// blPreciseExposureStreamHLL.print();
// blPreciseExposureStreamHLL.print();
...
...
bl_et_pe_preciseexposure_inc_d_distinct/src/test/java/com/gmei/function/BitMapFunctionTest.java
0 → 100644
View file @
2863b3ed
package
com
.
gmei
.
function
;
import
com.gmei.cache.PreciseAccumulator
;
import
com.gmei.utils.MurmurHash
;
import
org.junit.Test
;
/**
* ClassName: BitMapFunctionTest
* Function: TODO ADD FUNCTION.
* Reason: TODO ADD REASON.
* Date: 2020/1/15 下午8:33
*
* @author liuzhe
* @since JDK 1.8
*/
public
class
BitMapFunctionTest
{
@Test
public
void
bitMapFunction
()
{
PreciseAccumulator
preciseAccumulator
=
new
PreciseAccumulator
();
String
json1
=
"{\"@raw\":\"{\\\"create_at\\\":\\\"1578746235\\\",\\\"gm_nginx_timestamp\\\":1578746258.895,\\\"user_id\\\":\\\"31293003\\\",\\\"version\\\":\\\"110\\\",\\\"params\\\":{\\\"down_loading_times\\\":0,\\\"up_slide_times\\\":96,\\\"referrer_link\\\":{},\\\"tab_name\\\":\\\"\\\",\\\"down_slide_times\\\":4,\\\"page_name\\\":\\\"question_detail\\\",\\\"up_loading_times\\\":1,\\\"is_exposure\\\":\\\"1\\\",\\\"referrer\\\":null,\\\"exposure_cards\\\":[{\\\"absolute_position\\\":7,\\\"in_page_pos\\\":\\\"recommend\\\",\\\"card_content_type\\\":\\\"answer\\\",\\\"transaction_type\\\":\\\"-1\\\",\\\"card_type\\\":\\\"card\\\",\\\"card_style\\\":\\\"cascade\\\",\\\"relative_position\\\":5,\\\"card_id\\\":\\\"783034\\\"},{\\\"absolute_position\\\":8,\\\"in_page_pos\\\":\\\"recommend\\\",\\\"card_content_type\\\":\\\"user_post\\\",\\\"transaction_type\\\":\\\"-1\\\",\\\"card_type\\\":\\\"card\\\",\\\"card_style\\\":\\\"cascade\\\",\\\"relative_position\\\":6,\\\"card_id\\\":\\\"79248\\\"}],\\\"business_id\\\":\\\"230926\\\",\\\"referrer_id\\\":null},\\\"app_session_id\\\":\\\"39B82FF5-DB3F-4CE6-BE35-10115051A859\\\",\\\"app\\\":{\\\"name\\\":\\\"gengmei_user\\\",\\\"grey_type\\\":\\\"{\\\\n \\\\\\\"face_detect_result\\\\\\\" : \\\\\\\"B\\\\\\\",\\\\n \\\\\\\"search_result_welfare\\\\\\\" : false,\\\\n \\\\\\\"post_detail\\\\\\\" : \\\\\\\"0\\\\\\\",\\\\n \\\\\\\"home\\\\\\\" : \\\\\\\"0\\\\\\\",\\\\n \\\\\\\"face_scan\\\\\\\" : 0,\\\\n \\\\\\\"search_gray\\\\\\\" : false,\\\\n \\\\\\\"video_steep\\\\\\\" : 0,\\\\n \\\\\\\"launch_gray\\\\\\\" : false,\\\\n \\\\\\\"report_result\\\\\\\" : 0\\\\n}\\\",\\\"current_city_id\\\":\\\"shanghai\\\",\\\"version\\\":\\\"7.20.0\\\",\\\"user_type\\\":{\\\"config_type\\\":1},\\\"serial_id\\\":17,\\\"channel\\\":\\\"App Store\\\"},\\\"gm_nginx_key\\\":5,\\\"device\\\":{\\\"idfv\\\":\\\"F421E310-5A13-4694-9E6B-5B3EC8228E25\\\",\\\"sys_version\\\":\\\"13.3\\\",\\\"lng\\\":120.74191122379,\\\"is_WiFi\\\":\\\"1\\\",\\\"manufacturer\\\":\\\"Apple\\\",\\\"device_id\\\":\\\"B7A61B8E-5423-4CCB-8BAE-1260BFBDF7D0\\\",\\\"idfa\\\":\\\"B7A61B8E-5423-4CCB-8BAE-1260BFBDF7D0\\\",\\\"lat\\\":31.331567703747,\\\"device_type\\\":\\\"ios\\\",\\\"ip\\\":\\\"10.10.205.62\\\",\\\"model\\\":\\\"iPhone11,8\\\"},\\\"type\\\":\\\"page_precise_exposure\\\"}\"}"
;
String
json2
=
"{\"@raw\":\"{\\\"create_at\\\":\\\"1578746235\\\",\\\"gm_nginx_timestamp\\\":1578746258.895,\\\"user_id\\\":\\\"31293003\\\",\\\"version\\\":\\\"110\\\",\\\"params\\\":{\\\"down_loading_times\\\":0,\\\"up_slide_times\\\":96,\\\"referrer_link\\\":{},\\\"tab_name\\\":\\\"\\\",\\\"down_slide_times\\\":4,\\\"page_name\\\":\\\"question_detail\\\",\\\"up_loading_times\\\":1,\\\"is_exposure\\\":\\\"1\\\",\\\"referrer\\\":null,\\\"exposure_cards\\\":[{\\\"absolute_position\\\":7,\\\"in_page_pos\\\":\\\"recommend\\\",\\\"card_content_type\\\":\\\"answer\\\",\\\"transaction_type\\\":\\\"-1\\\",\\\"card_type\\\":\\\"card\\\",\\\"card_style\\\":\\\"cascade\\\",\\\"relative_position\\\":5,\\\"card_id\\\":\\\"783034\\\"},{\\\"absolute_position\\\":8,\\\"in_page_pos\\\":\\\"recommend\\\",\\\"card_content_type\\\":\\\"user_post\\\",\\\"transaction_type\\\":\\\"-1\\\",\\\"card_type\\\":\\\"card\\\",\\\"card_style\\\":\\\"cascade\\\",\\\"relative_position\\\":6,\\\"card_id\\\":\\\"79248\\\"}],\\\"business_id\\\":\\\"230926\\\",\\\"referrer_id\\\":null},\\\"app_session_id\\\":\\\"39B82FF5-DB3F-4CE6-BE35-10115051A859\\\",\\\"app\\\":{\\\"name\\\":\\\"gengmei_user\\\",\\\"grey_type\\\":\\\"{\\\\n \\\\\\\"face_detect_result\\\\\\\" : \\\\\\\"B\\\\\\\",\\\\n \\\\\\\"search_result_welfare\\\\\\\" : false,\\\\n \\\\\\\"post_detail\\\\\\\" : \\\\\\\"0\\\\\\\",\\\\n \\\\\\\"home\\\\\\\" : \\\\\\\"0\\\\\\\",\\\\n \\\\\\\"face_scan\\\\\\\" : 0,\\\\n \\\\\\\"search_gray\\\\\\\" : false,\\\\n \\\\\\\"video_steep\\\\\\\" : 0,\\\\n \\\\\\\"launch_gray\\\\\\\" : false,\\\\n \\\\\\\"report_result\\\\\\\" : 0\\\\n}\\\",\\\"current_city_id\\\":\\\"shanghai\\\",\\\"version\\\":\\\"7.20.0\\\",\\\"user_type\\\":{\\\"config_type\\\":1},\\\"serial_id\\\":17,\\\"channel\\\":\\\"App Store\\\"},\\\"gm_nginx_key\\\":5,\\\"device\\\":{\\\"idfv\\\":\\\"F421E310-5A13-4694-9E6B-5B3EC8228E25\\\",\\\"sys_version\\\":\\\"13.3\\\",\\\"lng\\\":120.74191122379,\\\"is_WiFi\\\":\\\"1\\\",\\\"manufacturer\\\":\\\"Apple\\\",\\\"device_id\\\":\\\"B7A61B8E-5423-4CCB-8BAE-1260BFBDF7D0\\\",\\\"idfa\\\":\\\"B7A61B8E-5423-4CCB-8BAE-1260BFBDF7D0\\\",\\\"lat\\\":31.331567703747,\\\"device_type\\\":\\\"ios\\\",\\\"ip\\\":\\\"10.10.205.62\\\",\\\"model\\\":\\\"iPhone11,8\\\"},\\\"type\\\":\\\"page_precise_exposure\\\"}\"}"
;
String
json3
=
"{\"@raw\":\"{\\\"create_at\\\":\\\"1578746235\\\",\\\"gm_nginx_timestamp\\\":1578746258.895,\\\"user_id\\\":\\\"31293003\\\",\\\"version\\\":\\\"110\\\",\\\"params\\\":{\\\"down_loading_times\\\":0,\\\"up_slide_times\\\":96,\\\"referrer_link\\\":{},\\\"tab_name\\\":\\\"\\\",\\\"down_slide_times\\\":4,\\\"page_name\\\":\\\"question_detail\\\",\\\"up_loading_times\\\":1,\\\"is_exposure\\\":\\\"1\\\",\\\"referrer\\\":null,\\\"exposure_cards\\\":[{\\\"absolute_position\\\":7,\\\"in_page_pos\\\":\\\"recommend\\\",\\\"card_content_type\\\":\\\"answer\\\",\\\"transaction_type\\\":\\\"-1\\\",\\\"card_type\\\":\\\"card\\\",\\\"card_style\\\":\\\"cascade\\\",\\\"relative_position\\\":5,\\\"card_id\\\":\\\"783034\\\"},{\\\"absolute_position\\\":8,\\\"in_page_pos\\\":\\\"recommend\\\",\\\"card_content_type\\\":\\\"user_post\\\",\\\"transaction_type\\\":\\\"-1\\\",\\\"card_type\\\":\\\"card\\\",\\\"card_style\\\":\\\"cascade\\\",\\\"relative_position\\\":6,\\\"card_id\\\":\\\"79248\\\"}],\\\"business_id\\\":\\\"230926\\\",\\\"referrer_id\\\":null},\\\"app_session_id\\\":\\\"39B82FF5-DB3F-4CE6-BE35-10115051A859\\\",\\\"app\\\":{\\\"version\\\":\\\"7.20.0\\\",\\\"grey_type\\\":\\\"{\\\\n \\\\\\\"face_detect_result\\\\\\\" : \\\\\\\"B\\\\\\\",\\\\n \\\\\\\"search_result_welfare\\\\\\\" : false,\\\\n \\\\\\\"post_detail\\\\\\\" : \\\\\\\"0\\\\\\\",\\\\n \\\\\\\"home\\\\\\\" : \\\\\\\"0\\\\\\\",\\\\n \\\\\\\"face_scan\\\\\\\" : 0,\\\\n \\\\\\\"search_gray\\\\\\\" : false,\\\\n \\\\\\\"video_steep\\\\\\\" : 0,\\\\n \\\\\\\"launch_gray\\\\\\\" : false,\\\\n \\\\\\\"report_result\\\\\\\" : 0\\\\n}\\\",\\\"current_city_id\\\":\\\"shanghai\\\",\\\"name\\\":\\\"gengmei_user\\\",\\\"user_type\\\":{\\\"config_type\\\":1},\\\"serial_id\\\":17,\\\"channel\\\":\\\"App Store\\\"},\\\"gm_nginx_key\\\":5,\\\"device\\\":{\\\"idfv\\\":\\\"F421E310-5A13-4694-9E6B-5B3EC8228E25\\\",\\\"sys_version\\\":\\\"13.3\\\",\\\"lng\\\":120.74191122379,\\\"is_WiFi\\\":\\\"1\\\",\\\"manufacturer\\\":\\\"Apple\\\",\\\"device_id\\\":\\\"B7A61B8E-5423-4CCB-8BAE-1260BFBDF7D0\\\",\\\"ip\\\":\\\"10.10.205.62\\\",\\\"lat\\\":31.331567703747,\\\"device_type\\\":\\\"ios\\\",\\\"idfa\\\":\\\"B7A61B8E-5423-4CCB-8BAE-1260BFBDF7D0\\\",\\\"model\\\":\\\"iPhone11,8\\\"},\\\"type\\\":\\\"page_precise_exposure\\\"}\"}"
;
long
jsonHash1
=
MurmurHash
.
hash64
(
json1
);
long
jsonHash2
=
MurmurHash
.
hash64
(
json2
);
long
jsonHash3
=
MurmurHash
.
hash64
(
json3
);
System
.
out
.
println
(
jsonHash1
);
System
.
out
.
println
(
jsonHash2
);
System
.
out
.
println
(
jsonHash3
);
preciseAccumulator
.
add
(
jsonHash1
);
System
.
out
.
println
(
"1:"
+
preciseAccumulator
.
getCardinality
());
if
(!
preciseAccumulator
.
contains
(
jsonHash3
))
{
System
.
out
.
println
(
"---"
+
preciseAccumulator
.
getCardinality
());
preciseAccumulator
.
add
(
jsonHash2
);
System
.
out
.
println
(
preciseAccumulator
.
getCardinality
()+
"---"
);
}
// preciseAccumulator.add(jsonHash2);
// preciseAccumulator.add(jsonHash2);
// preciseAccumulator.add(jsonHash2);
// preciseAccumulator.add(jsonHash2);
System
.
out
.
println
(
"2:"
+
preciseAccumulator
.
getCardinality
());
preciseAccumulator
.
add
(
jsonHash3
);
System
.
out
.
println
(
"3:"
+
preciseAccumulator
.
getCardinality
());
}
}
bl_et_pe_preciseexposure_inc_d_distinct/src/test/java/com/gmei/utils/DateUtilTest.java
0 → 100644
View file @
2863b3ed
package
com
.
gmei
.
utils
;
import
org.junit.Test
;
/**
* ClassName: DateUtilTest
* Function: TODO ADD FUNCTION.
* Reason: TODO ADD REASON.
* Date: 2020/1/16 下午4:10
*
* @author liuzhe
* @since JDK 1.8
*/
public
class
DateUtilTest
{
@Test
public
void
tomorrowZeroTimestampMsTest
()
{
long
time
=
DateUtil
.
tomorrowZeroTimestampMs
(
Double
.
valueOf
(
"1578502215.724"
).
longValue
()
*
1000
,
8
);
System
.
out
.
println
(
time
);
}
}
ml_c_et_pe_preciseexposure_dimen_d_rt/src/test/java/com/gmei/kafka/MyProducter.java
View file @
2863b3ed
...
@@ -56,7 +56,7 @@ public class MyProducter {
...
@@ -56,7 +56,7 @@ public class MyProducter {
// ProducerConfig config = new ProducerConfig(props);
// ProducerConfig config = new ProducerConfig(props);
//创建生产这对象
//创建生产这对象
Producer
<
String
,
String
>
producer
=
new
KafkaProducer
<
String
,
String
>(
props
);
Producer
<
String
,
String
>
producer
=
new
KafkaProducer
<
String
,
String
>(
props
);
String
json
=
"{\"create_at\":\"1576854504\",\"gm_nginx_timestamp\":157
8502215
.724,\"user_id\":\"\",\"version\":\"110\",\"params\":{\"down_loading_times\":0,\"up_slide_times\":0,\"is_popup\":\"0\",\"exposure_cards\":[{\"absolute_position\":\"0\",\"transaction_type\":\"\",\"card_content_type\":\"function_entrance\",\"relative_position\":\"0\",\"card_id\":2},{\"absolute_position\":\"0\",\"target_name\":\"\",\"transaction_type\":\"-1\",\"card_type\":\"card\",\"card_content_type\":\"gadget\",\"relative_position\":\"\",\"card_id\":923},{\"absolute_position\":\"1\",\"transaction_type\":\"\",\"card_content_type\":\"function_entrance\",\"relative_position\":\"1\",\"card_id\":2},{\"absolute_position\":\"2\",\"transaction_type\":\"\",\"card_content_type\":\"function_entrance\",\"relative_position\":\"2\",\"card_id\":2},{\"target_name\":\"鼻部-双旦大促-banner\",\"absolute_position\":\"2\",\"card_content_type \":\"新专题聚合\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"relative_position\":\"\",\"in_page_pos\":\"top\",\"card_id\":46},{\"absolute_position\":\"3\",\"transaction_type\":\"\",\"card_content_type\":\"function_entrance\",\"relative_position\":\"3\",\"card_id\":2},{\"absolute_position\":\"4\",\"transaction_type\":\"\",\"card_content_type\":\"function_entrance\",\"relative_position\":\"4\",\"card_id\":2}],\"tab_name\":\"\",\"down_slide_times\":0,\"page_name\":\"home\",\"up_loading_times\":0,\"is_exposure\":\"1\",\"referrer\":\"\",\"business_id\":\"\",\"referrer_id\":\"\"},\"app_session_id\":\"CCA64F08-C9F1-47FE-87ED-2B2993ADD067\",\"app\":{\"name\":\"gengmei_user\",\"grey_type\":\"{\\n \\\"report_result\\\" : 0,\\n \\\"face_detect_result\\\" : \\\"B\\\",\\n \\\"home\\\" : \\\"0\\\",\\n \\\"post_detail\\\" : \\\"0\\\",\\n \\\"video_steep\\\" : 0,\\n \\\"face_scan\\\" : 0\\n}\",\"current_city_id\":\"worldwide\",\"version\":\"7.19.1\",\"user_type\":{\"config_type\":1},\"serial_id\":75,\"channel\":\"App Store\"},\"gm_nginx_key\":1,\"device\":{\"idfv\":\"EB72DED5-75C3-410E-A759-388261BD232B\",\"sys_version\":\"13.3\",\"lng\":0,\"is_WiFi\":\"1\",\"manufacturer\":\"Apple\",\"device_id\":\"EB72DED5-75C3-410E-A759-388261BD232B\",\"lat\":0,\"ip\":\"192.168.0.167\",\"idfa\":\"00000000-0000-0000-0000-000000000000\",\"device_type\":\"ios\",\"model\":\"iPhone9,3\"},\"type\":\"page_precise_exposure\"}"
;
String
json
=
"{\"create_at\":\"1576854504\",\"gm_nginx_timestamp\":157
9165739
.724,\"user_id\":\"\",\"version\":\"110\",\"params\":{\"down_loading_times\":0,\"up_slide_times\":0,\"is_popup\":\"0\",\"exposure_cards\":[{\"absolute_position\":\"0\",\"transaction_type\":\"\",\"card_content_type\":\"function_entrance\",\"relative_position\":\"0\",\"card_id\":2},{\"absolute_position\":\"0\",\"target_name\":\"\",\"transaction_type\":\"-1\",\"card_type\":\"card\",\"card_content_type\":\"gadget\",\"relative_position\":\"\",\"card_id\":923},{\"absolute_position\":\"1\",\"transaction_type\":\"\",\"card_content_type\":\"function_entrance\",\"relative_position\":\"1\",\"card_id\":2},{\"absolute_position\":\"2\",\"transaction_type\":\"\",\"card_content_type\":\"function_entrance\",\"relative_position\":\"2\",\"card_id\":2},{\"target_name\":\"鼻部-双旦大促-banner\",\"absolute_position\":\"2\",\"card_content_type \":\"新专题聚合\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"relative_position\":\"\",\"in_page_pos\":\"top\",\"card_id\":46},{\"absolute_position\":\"3\",\"transaction_type\":\"\",\"card_content_type\":\"function_entrance\",\"relative_position\":\"3\",\"card_id\":2},{\"absolute_position\":\"4\",\"transaction_type\":\"\",\"card_content_type\":\"function_entrance\",\"relative_position\":\"4\",\"card_id\":2}],\"tab_name\":\"\",\"down_slide_times\":0,\"page_name\":\"home\",\"up_loading_times\":0,\"is_exposure\":\"1\",\"referrer\":\"\",\"business_id\":\"\",\"referrer_id\":\"\"},\"app_session_id\":\"CCA64F08-C9F1-47FE-87ED-2B2993ADD067\",\"app\":{\"name\":\"gengmei_user\",\"grey_type\":\"{\\n \\\"report_result\\\" : 0,\\n \\\"face_detect_result\\\" : \\\"B\\\",\\n \\\"home\\\" : \\\"0\\\",\\n \\\"post_detail\\\" : \\\"0\\\",\\n \\\"video_steep\\\" : 0,\\n \\\"face_scan\\\" : 0\\n}\",\"current_city_id\":\"worldwide\",\"version\":\"7.19.1\",\"user_type\":{\"config_type\":1},\"serial_id\":75,\"channel\":\"App Store\"},\"gm_nginx_key\":1,\"device\":{\"idfv\":\"EB72DED5-75C3-410E-A759-388261BD232B\",\"sys_version\":\"13.3\",\"lng\":0,\"is_WiFi\":\"1\",\"manufacturer\":\"Apple\",\"device_id\":\"EB72DED5-75C3-410E-A759-388261BD232B\",\"lat\":0,\"ip\":\"192.168.0.167\",\"idfa\":\"00000000-0000-0000-0000-000000000000\",\"device_type\":\"ios\",\"model\":\"iPhone9,3\"},\"type\":\"page_precise_exposure\"}"
;
// String json = "{\"create_at\":\"1578102778\",\"gm_nginx_timestamp\":1578102780.541,\"user_id\":\"32085659\",\"version\":\"147\",\"params\":{\"down_loading_times\":0,\"business_id\":\"\",\"exposure_cards\":[{\"is_cpc\":1,\"result_status\":\"1\",\"card_id\":\"5754050\",\"absolute_position\":0,\"transaction_type\":\"-1\",\"card_type\":\"card\",\"relative_position\":0,\"card_content_type\":\"service\",\"cpc_referer\":\"0\"},{\"is_cpc\":1,\"result_status\":\"1\",\"card_id\":\"5760019\",\"absolute_position\":1,\"transaction_type\":\"-1\",\"card_type\":\"card\",\"relative_position\":1,\"card_content_type\":\"service\",\"cpc_referer\":\"0\"},{\"is_cpc\":1,\"result_status\":\"1\",\"card_id\":\"5833115\",\"absolute_position\":2,\"transaction_type\":\"-1\",\"card_type\":\"card\",\"relative_position\":2,\"card_content_type\":\"service\",\"cpc_referer\":\"0\"}],\"up_loading_times\":0,\"referrer_link\":[\"home\",\"search_home\"],\"tab_name\":\"美购\",\"down_slide_times\":0,\"query\":\"眼综合\",\"filter\":\"综合排序\",\"is_exposure\":\"1\",\"referrer\":\"search_result_more\",\"up_slide_times\":0,\"referrer_id\":\"\",\"page_name\":\"search_result_welfare\"},\"app_session_id\":\"dc92c61b-f9bf-4378-8ca1-e6c0d9bee116\",\"app\":{\"version\":\"7.20.1\",\"grey_type\":\"{\\\"video_steep\\\":0,\\\"post_detail\\\":\\\"0\\\",\\\"face_detect_result\\\":\\\"B\\\",\\\"home\\\":\\\"0\\\",\\\"face_scan\\\":0,\\\"report_result\\\":0}\",\"current_city_id\":\"jincheng\",\"user_type\":{\"config_type\":\"1\"},\"name\":\"gengmei_user\",\"serial_id\":25,\"channel\":\"oppo\"},\"gm_nginx_key\":1,\"device\":{\"android_device_id\":\"androidid_c60514a82b1f4f68\",\"sys_version\":\"7.1.1\",\"lng\":\"112.31146\",\"is_WiFi\":\"0\",\"lat\":\"35.622659\",\"device_id\":\"861271049370690\",\"manufacturer\":\"OPPO\",\"net_type\":\"4G\",\"device_type\":\"android\",\"ip\":\"10.102.127.227\",\"model\":\"OPPOA83\"},\"type\":\"page_precise_exposure\"}";
// String json = "{\"create_at\":\"1578102778\",\"gm_nginx_timestamp\":1578102780.541,\"user_id\":\"32085659\",\"version\":\"147\",\"params\":{\"down_loading_times\":0,\"business_id\":\"\",\"exposure_cards\":[{\"is_cpc\":1,\"result_status\":\"1\",\"card_id\":\"5754050\",\"absolute_position\":0,\"transaction_type\":\"-1\",\"card_type\":\"card\",\"relative_position\":0,\"card_content_type\":\"service\",\"cpc_referer\":\"0\"},{\"is_cpc\":1,\"result_status\":\"1\",\"card_id\":\"5760019\",\"absolute_position\":1,\"transaction_type\":\"-1\",\"card_type\":\"card\",\"relative_position\":1,\"card_content_type\":\"service\",\"cpc_referer\":\"0\"},{\"is_cpc\":1,\"result_status\":\"1\",\"card_id\":\"5833115\",\"absolute_position\":2,\"transaction_type\":\"-1\",\"card_type\":\"card\",\"relative_position\":2,\"card_content_type\":\"service\",\"cpc_referer\":\"0\"}],\"up_loading_times\":0,\"referrer_link\":[\"home\",\"search_home\"],\"tab_name\":\"美购\",\"down_slide_times\":0,\"query\":\"眼综合\",\"filter\":\"综合排序\",\"is_exposure\":\"1\",\"referrer\":\"search_result_more\",\"up_slide_times\":0,\"referrer_id\":\"\",\"page_name\":\"search_result_welfare\"},\"app_session_id\":\"dc92c61b-f9bf-4378-8ca1-e6c0d9bee116\",\"app\":{\"version\":\"7.20.1\",\"grey_type\":\"{\\\"video_steep\\\":0,\\\"post_detail\\\":\\\"0\\\",\\\"face_detect_result\\\":\\\"B\\\",\\\"home\\\":\\\"0\\\",\\\"face_scan\\\":0,\\\"report_result\\\":0}\",\"current_city_id\":\"jincheng\",\"user_type\":{\"config_type\":\"1\"},\"name\":\"gengmei_user\",\"serial_id\":25,\"channel\":\"oppo\"},\"gm_nginx_key\":1,\"device\":{\"android_device_id\":\"androidid_c60514a82b1f4f68\",\"sys_version\":\"7.1.1\",\"lng\":\"112.31146\",\"is_WiFi\":\"0\",\"lat\":\"35.622659\",\"device_id\":\"861271049370690\",\"manufacturer\":\"OPPO\",\"net_type\":\"4G\",\"device_type\":\"android\",\"ip\":\"10.102.127.227\",\"model\":\"OPPOA83\"},\"type\":\"page_precise_exposure\"}";
// String json = "{\"create_at\":\"1577447031\",\"gm_nginx_timestamp\":1577447032.059,\"user_id\":\"\",\"version\":\"147\",\"params\":{\"down_loading_times\":0,\"up_slide_times\":0,\"is_popup\":0,\"exposure_cards\":[{\"absolute_position\":0,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":1,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":2,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":3,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":4,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"target_name\":\"\",\"relative_position\":0,\"transaction_type\":\"-1\",\"card_type\":\"card\",\"absolute_position\":0,\"card_content_type\":\"gadget\",\"card_id\":923},{\"target_name\":\"眼部双旦-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":1,\"card_content_type \":\"新专题聚合\",\"card_id\":38},{\"target_name\":\"鼻部-双旦大促-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":2,\"card_content_type \":\"新专题聚合\",\"card_id\":46},{\"absolute_position\":0,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":1,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":2,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":3,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":4,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"target_name\":\"\",\"relative_position\":0,\"transaction_type\":\"-1\",\"card_type\":\"card\",\"absolute_position\":0,\"card_content_type\":\"gadget\",\"card_id\":923},{\"target_name\":\"12.26社区\",\"relative_position\":0,\"transaction_type\":\"operation\",\"card_type\":\"card\",\"in_page_pos\":\"top\",\"card_content_type \":\"指定网页\",\"absolute_position\":3},{\"target_name\":\"吸脂填充-双旦\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":4,\"card_content_type \":\"新专题聚合\",\"card_id\":42},{\"target_name\":\"美肤三针双旦-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":5,\"card_content_type \":\"新专题聚合\",\"card_id\":39},{\"target_name\":\"轮廓双旦banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":6,\"card_content_type \":\"新专题聚合\",\"card_id\":36},{\"target_name\":\"齿科-双旦大促-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":7,\"card_content_type \":\"新专题聚合\",\"card_id\":41}],\"tab_name\":\"\",\"down_slide_times\":0,\"page_name\":\"home\",\"up_loading_times\":0,\"referrer_id\":\"\",\"referrer\":\"\",\"is_exposure\":\"1\",\"business_id\":\"\"},\"app_session_id\":\"168871fb-1471-43ac-b4da-e07009d88be7\",\"app\":{\"version\":\"7.19.2\",\"grey_type\":\"{\\\"video_steep\\\": 1, \\\"post_detail\\\": \\\"0\\\", \\\"face_detect_result\\\": \\\"B\\\", \\\"home\\\": \\\"0\\\", \\\"face_scan\\\": 0, \\\"report_result\\\": 0}\",\"current_city_id\":\"\",\"user_type\":{\"config_type\":\"1\"},\"name\":\"gengmei_user\",\"serial_id\":31,\"channel\":\"yiba5202\"},\"gm_nginx_key\":1,\"device\":{\"android_device_id\":\"androidid_80a2a60d59729bda\",\"sys_version\":\"8.0.0\",\"lng\":\"0.0\",\"is_WiFi\":\"0\",\"lat\":\"0.0\",\"device_id\":\"869712034003715\",\"manufacturer\":\"HUAWEI\",\"net_type\":\"4G\",\"device_type\":\"android\",\"ip\":\"10.138.25.16\",\"model\":\"LDN-AL20\"},\"type\":\"page_precise_exposure\"}";
// String json = "{\"create_at\":\"1577447031\",\"gm_nginx_timestamp\":1577447032.059,\"user_id\":\"\",\"version\":\"147\",\"params\":{\"down_loading_times\":0,\"up_slide_times\":0,\"is_popup\":0,\"exposure_cards\":[{\"absolute_position\":0,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":1,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":2,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":3,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":4,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"target_name\":\"\",\"relative_position\":0,\"transaction_type\":\"-1\",\"card_type\":\"card\",\"absolute_position\":0,\"card_content_type\":\"gadget\",\"card_id\":923},{\"target_name\":\"眼部双旦-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":1,\"card_content_type \":\"新专题聚合\",\"card_id\":38},{\"target_name\":\"鼻部-双旦大促-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":2,\"card_content_type \":\"新专题聚合\",\"card_id\":46},{\"absolute_position\":0,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":1,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":2,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":3,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"absolute_position\":4,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":1},{\"target_name\":\"\",\"relative_position\":0,\"transaction_type\":\"-1\",\"card_type\":\"card\",\"absolute_position\":0,\"card_content_type\":\"gadget\",\"card_id\":923},{\"target_name\":\"12.26社区\",\"relative_position\":0,\"transaction_type\":\"operation\",\"card_type\":\"card\",\"in_page_pos\":\"top\",\"card_content_type \":\"指定网页\",\"absolute_position\":3},{\"target_name\":\"吸脂填充-双旦\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":4,\"card_content_type \":\"新专题聚合\",\"card_id\":42},{\"target_name\":\"美肤三针双旦-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":5,\"card_content_type \":\"新专题聚合\",\"card_id\":39},{\"target_name\":\"轮廓双旦banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":6,\"card_content_type \":\"新专题聚合\",\"card_id\":36},{\"target_name\":\"齿科-双旦大促-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":7,\"card_content_type \":\"新专题聚合\",\"card_id\":41}],\"tab_name\":\"\",\"down_slide_times\":0,\"page_name\":\"home\",\"up_loading_times\":0,\"referrer_id\":\"\",\"referrer\":\"\",\"is_exposure\":\"1\",\"business_id\":\"\"},\"app_session_id\":\"168871fb-1471-43ac-b4da-e07009d88be7\",\"app\":{\"version\":\"7.19.2\",\"grey_type\":\"{\\\"video_steep\\\": 1, \\\"post_detail\\\": \\\"0\\\", \\\"face_detect_result\\\": \\\"B\\\", \\\"home\\\": \\\"0\\\", \\\"face_scan\\\": 0, \\\"report_result\\\": 0}\",\"current_city_id\":\"\",\"user_type\":{\"config_type\":\"1\"},\"name\":\"gengmei_user\",\"serial_id\":31,\"channel\":\"yiba5202\"},\"gm_nginx_key\":1,\"device\":{\"android_device_id\":\"androidid_80a2a60d59729bda\",\"sys_version\":\"8.0.0\",\"lng\":\"0.0\",\"is_WiFi\":\"0\",\"lat\":\"0.0\",\"device_id\":\"869712034003715\",\"manufacturer\":\"HUAWEI\",\"net_type\":\"4G\",\"device_type\":\"android\",\"ip\":\"10.138.25.16\",\"model\":\"LDN-AL20\"},\"type\":\"page_precise_exposure\"}";
// String json = "{\"create_at\":\"1577364648\",\"gm_nginx_timestamp\":1577364646.542,\"user_id\":\"\",\"version\":\"147\",\"params\":{\"down_loading_times\":0,\"up_slide_times\":0,\"is_popup\":0,\"exposure_cards\":[{\"absolute_position\":0,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":2},{\"absolute_position\":1,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":2},{\"absolute_position\":2,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":2},{\"absolute_position\":3,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":2},{\"absolute_position\":4,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":2},{\"target_name\":\"\",\"relative_position\":0,\"transaction_type\":\"-1\",\"card_type\":\"card\",\"absolute_position\":0,\"card_content_type\":\"gadget\",\"card_id\":923},{\"target_name\":\"12月新人专场\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":0,\"card_content_type\":\"福利专题列表\",\"card_id\":6377},{\"target_name\":\"双旦大促-主会场-华西\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":1,\"card_content_type\":\"福利专题列表\",\"card_id\":6565},{\"target_name\":\"眼部双旦-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":2,\"card_content_type\":\"新专题聚合\",\"card_id\":38},{\"target_name\":\"鼻部-双旦大促-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":3,\"card_content_type\":\"新专题聚合\",\"card_id\":46},{\"target_name\":\"12.26社区\",\"relative_position\":0,\"transaction_type\":\"operation\",\"card_type\":\"card\",\"in_page_pos\":\"top\",\"card_content_type\":\"指定网页\",\"absolute_position\":4},{\"target_name\":\"吸脂填充-双旦\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":5,\"card_content_type\":\"新专题聚合\",\"card_id\":42},{\"target_name\":\"美肤三针双旦-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":6,\"card_content_type\":\"新专题聚合\",\"card_id\":39},{\"target_name\":\"轮廓双旦banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":7,\"card_content_type\":\"新专题聚合\",\"card_id\":36},{\"target_name\":\"12月新人专场\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":0,\"card_content_type\":\"福利专题列表\",\"card_id\":6377},{\"target_name\":\"双旦大促-主会场-华西\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":1,\"card_content_type\":\"福利专题列表\",\"card_id\":6565},{\"target_name\":\"眼部双旦-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":2,\"card_content_type\":\"新专题聚合\",\"card_id\":38},{\"target_name\":\"鼻部-双旦大促-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":3,\"card_content_type\":\"新专题聚合\",\"card_id\":46},{\"target_name\":\"12.26社区\",\"relative_position\":0,\"transaction_type\":\"operation\",\"card_type\":\"card\",\"in_page_pos\":\"top\",\"card_content_type\":\"指定网页\",\"absolute_position\":4},{\"target_name\":\"吸脂填充-双旦\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":5,\"card_content_type\":\"新专题聚合\",\"card_id\":42},{\"target_name\":\"美肤三针双旦-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":6,\"card_content_type\":\"新专题聚合\",\"card_id\":39},{\"target_name\":\"轮廓双旦banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":7,\"card_content_type\":\"新专题聚合\",\"card_id\":36},{\"target_name\":\"12月新人专场\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":0,\"card_content_type\":\"福利专题列表\",\"card_id\":6377},{\"target_name\":\"双旦大促-主会场-华西\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":1,\"card_content_type\":\"福利专题列表\",\"card_id\":6565},{\"target_name\":\"眼部双旦-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":2,\"card_content_type\":\"新专题聚合\",\"card_id\":38}],\"tab_name\":\"\",\"down_slide_times\":0,\"page_name\":\"home\",\"up_loading_times\":0,\"referrer_id\":\"\",\"referrer\":\"\",\"is_exposure\":\"1\",\"business_id\":\"\"},\"app_session_id\":\"6d167db8-147d-4ded-b7a8-0d9f176f91a1\",\"app\":{\"version\":\"7.19.2\",\"grey_type\":\"unknown\",\"current_city_id\":\"chongqing\",\"user_type\":{},\"name\":\"gengmei_user\",\"serial_id\":1,\"channel\":\"huawei\"},\"gm_nginx_key\":1,\"device\":{\"android_device_id\":\"androidid_99a0301553dc4f12\",\"sys_version\":\"10\",\"lng\":\"106.56958\",\"is_WiFi\":\"1\",\"lat\":\"29.680635\",\"device_id\":\"864674045613095\",\"manufacturer\":\"HUAWEI\",\"net_type\":\"wifi\",\"device_type\":\"android\",\"ip\":\"192.168.0.100\",\"model\":\"VOG-AL00\"},\"type\":\"page_precise_exposure\"}";
// String json = "{\"create_at\":\"1577364648\",\"gm_nginx_timestamp\":1577364646.542,\"user_id\":\"\",\"version\":\"147\",\"params\":{\"down_loading_times\":0,\"up_slide_times\":0,\"is_popup\":0,\"exposure_cards\":[{\"absolute_position\":0,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":2},{\"absolute_position\":1,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":2},{\"absolute_position\":2,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":2},{\"absolute_position\":3,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":2},{\"absolute_position\":4,\"transaction_type\":\"\",\"relative_position\":0,\"card_content_type\":\"function_entrance\",\"card_id\":2},{\"target_name\":\"\",\"relative_position\":0,\"transaction_type\":\"-1\",\"card_type\":\"card\",\"absolute_position\":0,\"card_content_type\":\"gadget\",\"card_id\":923},{\"target_name\":\"12月新人专场\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":0,\"card_content_type\":\"福利专题列表\",\"card_id\":6377},{\"target_name\":\"双旦大促-主会场-华西\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":1,\"card_content_type\":\"福利专题列表\",\"card_id\":6565},{\"target_name\":\"眼部双旦-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":2,\"card_content_type\":\"新专题聚合\",\"card_id\":38},{\"target_name\":\"鼻部-双旦大促-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":3,\"card_content_type\":\"新专题聚合\",\"card_id\":46},{\"target_name\":\"12.26社区\",\"relative_position\":0,\"transaction_type\":\"operation\",\"card_type\":\"card\",\"in_page_pos\":\"top\",\"card_content_type\":\"指定网页\",\"absolute_position\":4},{\"target_name\":\"吸脂填充-双旦\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":5,\"card_content_type\":\"新专题聚合\",\"card_id\":42},{\"target_name\":\"美肤三针双旦-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":6,\"card_content_type\":\"新专题聚合\",\"card_id\":39},{\"target_name\":\"轮廓双旦banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":7,\"card_content_type\":\"新专题聚合\",\"card_id\":36},{\"target_name\":\"12月新人专场\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":0,\"card_content_type\":\"福利专题列表\",\"card_id\":6377},{\"target_name\":\"双旦大促-主会场-华西\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":1,\"card_content_type\":\"福利专题列表\",\"card_id\":6565},{\"target_name\":\"眼部双旦-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":2,\"card_content_type\":\"新专题聚合\",\"card_id\":38},{\"target_name\":\"鼻部-双旦大促-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":3,\"card_content_type\":\"新专题聚合\",\"card_id\":46},{\"target_name\":\"12.26社区\",\"relative_position\":0,\"transaction_type\":\"operation\",\"card_type\":\"card\",\"in_page_pos\":\"top\",\"card_content_type\":\"指定网页\",\"absolute_position\":4},{\"target_name\":\"吸脂填充-双旦\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":5,\"card_content_type\":\"新专题聚合\",\"card_id\":42},{\"target_name\":\"美肤三针双旦-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":6,\"card_content_type\":\"新专题聚合\",\"card_id\":39},{\"target_name\":\"轮廓双旦banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":7,\"card_content_type\":\"新专题聚合\",\"card_id\":36},{\"target_name\":\"12月新人专场\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":0,\"card_content_type\":\"福利专题列表\",\"card_id\":6377},{\"target_name\":\"双旦大促-主会场-华西\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":1,\"card_content_type\":\"福利专题列表\",\"card_id\":6565},{\"target_name\":\"眼部双旦-banner\",\"relative_position\":0,\"in_page_pos\":\"top\",\"transaction_type\":\"operation\",\"card_type\":\"card\",\"absolute_position\":2,\"card_content_type\":\"新专题聚合\",\"card_id\":38}],\"tab_name\":\"\",\"down_slide_times\":0,\"page_name\":\"home\",\"up_loading_times\":0,\"referrer_id\":\"\",\"referrer\":\"\",\"is_exposure\":\"1\",\"business_id\":\"\"},\"app_session_id\":\"6d167db8-147d-4ded-b7a8-0d9f176f91a1\",\"app\":{\"version\":\"7.19.2\",\"grey_type\":\"unknown\",\"current_city_id\":\"chongqing\",\"user_type\":{},\"name\":\"gengmei_user\",\"serial_id\":1,\"channel\":\"huawei\"},\"gm_nginx_key\":1,\"device\":{\"android_device_id\":\"androidid_99a0301553dc4f12\",\"sys_version\":\"10\",\"lng\":\"106.56958\",\"is_WiFi\":\"1\",\"lat\":\"29.680635\",\"device_id\":\"864674045613095\",\"manufacturer\":\"HUAWEI\",\"net_type\":\"wifi\",\"device_type\":\"android\",\"ip\":\"192.168.0.100\",\"model\":\"VOG-AL00\"},\"type\":\"page_precise_exposure\"}";
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment