2021-07-12

一、数据仓库概念

在这里插入图片描述

二、项目需求及架构设计

2.1 项目需求分析

在这里插入图片描述

2.2 项目框架

2.2.1 技术选型

在这里插入图片描述

2.2.2 系统数据流程设计

在这里插入图片描述

2.2.3 框架版本选型

在这里插入图片描述

2.2.4服务器选型

在这里插入图片描述

三、数据生成模块

3.1 埋点数据基本格式

公共字段:基本所有安卓手机都包含的字段
业务字段:埋点上报的字段,有具体的业务类型

3.2 事件日志数据

3.2.1 商品列表页(loading)

在这里插入图片描述

3.2.2 商品点击(display)

在这里插入图片描述

3.2.3 商品详情页(newsdetail)

在这里插入图片描述

3.2.4 广告(ad)

在这里插入图片描述

3.2.5 消息通知(notification)

在这里插入图片描述

3.2.6 用户前台活跃(active_foreground)

在这里插入图片描述

3.2.7 用户后台活跃(active_background)

在这里插入图片描述

3.2.8 评论(comment)

在这里插入图片描述
在这里插入图片描述

3.2.9 收藏(favorites)

在这里插入图片描述

3.2.10 点赞(praise)

在这里插入图片描述

3.4 数据生成脚本

在这里插入图片描述

3.4.1 创建Maven工程

1)创建log-collector
2)创建一个包名:com.atguigu.appclient
3)在com.atguigu.appclient包下创建一个类,AppMain。
4)在pom.xml文件中添加如下内容

<!--版本号统一-->
<properties>
    <slf4j.version>1.7.20</slf4j.version>
    <logback.version>1.0.7</logback.version>
</properties>

<dependencies>
    <!--阿里巴巴开源json解析框架-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.51</version>
    </dependency>

    <!--日志生成框架-->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${logback.version}</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
    </dependency>
</dependencies>

<!--编译打包插件-->
<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-assembly-plugin </artifactId>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>com.atguigu.appclient.AppMain</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

3.4.2 公共字段Bean

1)创建包名:com.atguigu.bean
2)在com.atguigu.bean包下依次创建如下bean对象
在这里插入图片描述

四、maven

4.1目前的技术在开发中存在的问题

①一个项目就是一个工程
如果一个项目非常庞大,就不适合继续使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作
借助于maven就可以将一个项目拆分成多个工程
②项目中需要的jar包必须手动复制,粘贴到WEB-INF/lib目录下
带来的问题是:同样的jar包文件重复出现在不同的项目工程中,一方面浪费存储空间,另外也让工程比较臃肿
借助maven,可以将jar包仅仅保存在仓库中,有需要使用的工程引用这个文件接口,并不需要真的把jar包复制过来。
③jar包需要别人替我们准备好,或到官网下载
不同技术的官网提供jar包下载的形式是五花八门的。
有些技术的官网就是通过maven或svn等专门的工具来提供下载的。
如果是以不规范的方式下载的jar包,那么其中的内容很可能也是不规范的。
借助于maven可以以一种规范的方式下载jar包,因为所有知名框架或第三方工具的jar包已经按照统一的规范存放在了 maven的中央仓库中。
以规范的方式下载的jar包,内容也是可靠的
Tips:“统一的规范”不仅是对IT开发领域非常重要,对于整个人类社会都是非常重要的。
④一个jar包依赖的其他jar包需要自己手动加到项目中
FileUpload组件–>IO组件。commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar。
如果所有jar包之间的依赖关系都需要程序员自己非常清楚的了解,那么就会极大的增加学习成本。
maven会自动的将被依赖的jar包导入进来。

4.2maven是什么

    ①maven是一款服务于Java平台的自动化构建工具。
         make-->Ant-->Maven-->Gradle
    ②构建:
               [1]概念:以“Java源文件”,“框架配置文件”,“JSP”,“HTML”,“图片”等资源为原材料去“生产”一个可以运行的项目的过程
               [2]编译:Java源文件[User.java]-->编译-->Class字节码文件[User.class]-->交给JVM去执行
               [3]部署:一个BS项目最终运行的并不是动态Web工程本身,而是这个动态Web工程“编译的结果”

五、TestFastJson

package com.atsyf;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/*
1.Gson:new Gson()返回一个Gson对象
        Gson.toJson():将Java对象转化为Json
        Gson.fromJson():将JSON字符串转化为Java对象
2.FastJson:
            JSON:z最核心的类
                toJSONString(Object):将Java对象转化为JSON
                parseObject(String,Class),将JSON转为Java对象
             JSONObject:代表一个JSON对象,本质使用Map实现
                       {属性名:属性值,...}
                       put:向对象中添加属性
                       get:查询指定的属性值
             JSONArray:代表一个JSON数组
             [{},{},{}]
             add:向array中添加元素
             get:通过索引来取出
 */
public class TestFastJson {
 public void testFastJson()throws Exception{
     JSONObject jsonObject = new JSONObject();
     jsonObject.put("name","jack");
     jsonObject.put("age",18);
     jsonObject.put("gender","male");
     System.out.println(jsonObject);
 }
    public void testFastJson1()throws Exception{
        String str="{\"gender\":\"male\",\"name\":\"jack\",\"age\":18}";
       Person p=new JSON(){}.parseObject(str,Person.class);
        System.out.println(p);
    }
    public void testFastJson2()throws Exception{
        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("name","jack");
        jsonObject1.put("age",18);
        jsonObject1.put("gender","male");
        JSONObject jsonObject2 = new JSONObject();
        jsonObject2.put("name","jack");
        jsonObject2.put("age",19);
        jsonObject2.put("gender","male");
        JSONArray jsonArray=new JSONArray();
        jsonArray.add(jsonObject1);
        jsonArray.add(jsonObject2);
        System.out.println(jsonArray);
    }
}
package com.atsyf;

public class Person {
    private String name;
    private Integer age;
    private String gender;

    public Person() {
    }

    public Person(String name, Integer age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值