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

做网站上怎么推广呢惠州网站制作推广

做网站上怎么推广呢,惠州网站制作推广,免费wordpress移动主题,西安最新传染病GreenDao 是一款针对 Android 平台优化的轻量级对象关系映射 (ORM) 框架,它将 Java 对象映射到 SQLite 数据库,以简化数据持久化操作。GreenDao 的主要优点包括高性能、低内存占用、易于使用以及对数据库加密的支持。 以下是基于源码的 GreenDao 实现原…

GreenDao 是一款针对 Android 平台优化的轻量级对象关系映射 (ORM) 框架,它将 Java 对象映射到 SQLite 数据库,以简化数据持久化操作。GreenDao 的主要优点包括高性能、低内存占用、易于使用以及对数据库加密的支持。

以下是基于源码的 GreenDao 实现原理分析:

1. 代码生成

GreenDao 的一大特性是在编译阶段生成所有必要的 DAO(Data Access Object)类和相关辅助类,而不是在运行时通过反射来创建这些类。这意味着,当应用程序运行时,GreenDao 不再需要解析复杂的元数据或执行反射调用,从而提高了性能和响应速度。

生成过程:
  • 当你使用 GreenDao 时,你需要添加一个注解处理器依赖到你的项目中。
  • 编译时,GreenDao 的注解处理器会扫描带有特定注解(如 @Entity)的类。
  • 根据这些类的定义,处理器会生成 DAO 类、实体类的映射代码以及其他辅助类,例如 DaoMaster 和 DaoSession

2. DAO Master 和 DAO Session

  • DaoMaster:负责管理整个数据库环境,包括创建和升级数据库版本。DaoMaster 包含了 DevOpenHelper 的实例,用于数据库的创建和版本控制。
  • DaoSession:提供了一组方法用于访问和操作所有实体的 DAO。当你需要执行 CRUD 操作时,通常会通过 DaoSession 来获取特定实体的 DAO 实例。

3. 实体映射

每个被标记为 @Entity 的类都会被映射到一个数据库表。GreenDao 支持多种属性类型,包括基本数据类型、枚举、数组和集合等。通过 @Id 注解可以指定主键,而 @Unique 可以确保字段的唯一性。

4. 数据库操作

GreenDao 提供了一系列方法来执行常见的数据库操作,如 insert, update, delete, loadqueryBuilder。这些方法在 DAO 实例中定义,允许以面向对象的方式进行数据库操作。

5. 性能优化

GreenDao 使用了缓存机制来加速查询,通过缓存实体对象和 SQL 查询结果,减少了数据库的直接访问次数。此外,它还使用了代理模式和策略模式来封装不同的数据库操作,提供了良好的扩展性和维护性。

6. 加密支持

通过集成 SqlCipher 或 SQLite 的加密版本,GreenDao 可以提供数据库级别的加密功能,增强了数据的安全性。

7. 异步操作

GreenDao 支持 RxJava 集成,使得异步数据库操作变得更加简单和高效。

8.基本使用

第一步:项目配置

首先,你需要在你的项目中添加 GreenDao 的依赖。在你的模块级 build.gradle 文件中添加以下依赖:

Groovy

1dependencies {
2    implementation 'org.greenrobot:greendao:3.2.2'
3    kapt 'org.greenrobot:greendao:3.2.2' // kapt 用于处理注解处理器
4}

同时,在 build.gradle 文件中加入 GreenDao 插件配置:

Groovy

1apply plugin: 'com.android.application'
2apply plugin: 'kotlin-android'
3
4android {
5    // ...
6}
7
8dependencies {
9    // ...
10}
11
12greendao {
13    schemaVersion 1 // 数据库版本号
14    daoPackage 'com.example.yourapp.database' // Dao 包名
15    targetGenDir 'src/main/java' // 生成文件的目标目录
16}

第二步:定义实体类

接下来,定义 User 实体类,使用 GreenDao 的注解进行标注:

Java

1package com.example.yourapp.database;
2
3import org.greenrobot.greendao.annotation.Entity;
4import org.greenrobot.greendao.annotation.Id;
5import org.greenrobot.greendao.annotation.Generated;
6
7@Entity
8public class User {
9    @Id(autoincrement = true)
10    private Long id;
11    private String name;
12    private int age;
13
14    public User(String name, int age) {
15        this.name = name;
16        this.age = age;
17    }
18
19    public Long getId() {
20        return id;
21    }
22
23    public void setId(Long id) {
24        this.id = id;
25    }
26
27    public String getName() {
28        return name;
29    }
30
31    public void setName(String name) {
32        this.name = name;
33    }
34
35    public int getAge() {
36        return age;
37    }
38
39    public void setAge(int age) {
40        this.age = age;
41    }
42
43    @Generated(hash = 199499842)
44    public User(Long id, String name, int age) {
45        this.id = id;
46        this.name = name;
47        this.age = age;
48    }
49
50    @Generated(hash = 1669913653)
51    public User() {
52    }
53}

第三步:创建数据库

在你的应用程序中,你需要创建 DaoMasterDaoSession 的实例:

Java

1import org.greenrobot.greendao.database.Database;
2
3import android.content.Context;
4
5public class AppDatabase {
6    private static DaoMaster.DevOpenHelper helper;
7    private static DaoMaster daoMaster;
8    private static DaoSession daoSession;
9
10    public static DaoSession getDaoSession(Context context) {
11        if (helper == null) {
12            helper = new DaoMaster.DevOpenHelper(context, "user-db");
13            daoMaster = new DaoMaster(helper.getWritableDatabase());
14            daoSession = daoMaster.newSession();
15        }
16        return daoSession;
17    }
18}

第四步:使用 GreenDao

现在你可以使用 AppDatabase.getDaoSession() 方法获取 DaoSession,然后使用 UserDao 进行数据库操作:

Java

1import org.greenrobot.greendao.query.QueryBuilder;
2
3import android.app.Activity;
4import android.os.Bundle;
5import android.view.View;
6import android.widget.Button;
7import android.widget.TextView;
8
9public class MainActivity extends Activity {
10    private Button insertButton;
11    private TextView textView;
12
13    @Override
14    protected void onCreate(Bundle savedInstanceState) {
15        super.onCreate(savedInstanceState);
16        setContentView(R.layout.activity_main);
17
18        insertButton = findViewById(R.id.insert_button);
19        textView = findViewById(R.id.text_view);
20
21        insertButton.setOnClickListener(new View.OnClickListener() {
22            @Override
23            public void onClick(View v) {
24                insertUser();
25            }
26        });
27    }
28
29    private void insertUser() {
30        DaoSession daoSession = AppDatabase.getDaoSession(this);
31        UserDao userDao = daoSession.getUserDao();
32
33        User user = new User("John Doe", 30);
34        userDao.insert(user);
35
36        QueryBuilder<User> queryBuilder = userDao.queryBuilder();
37        List<User> users = queryBuilder.where(UserDao.Properties.Name.eq("John Doe")).list();
38        textView.setText(users.get(0).getName());
39    }
40}

以上就是一个基本的 GreenDao 使用示例,展示了如何定义实体类、创建数据库、以及如何插入和查询数据。注意,实际项目中可能需要根据具体需求调整数据库的创建逻辑,比如处理数据库升级的情况。

结论

GreenDao 的设计原则是尽量减少运行时的开销,通过预编译代码生成和缓存机制来提升性能。它提供了丰富的 API 来简化数据库操作,并且通过注解驱动的方式降低了使用门槛。如果你正在寻找一个高性能且易于使用的 Android 数据库解决方案,GreenDao 是一个值得考虑的选择。


文章转载自:
http://limiting.c7491.cn
http://mizpah.c7491.cn
http://normality.c7491.cn
http://zydeco.c7491.cn
http://clochard.c7491.cn
http://digestant.c7491.cn
http://punisher.c7491.cn
http://catenative.c7491.cn
http://pedagogical.c7491.cn
http://candleberry.c7491.cn
http://bicornuate.c7491.cn
http://weir.c7491.cn
http://invert.c7491.cn
http://dumpish.c7491.cn
http://saeter.c7491.cn
http://holloo.c7491.cn
http://unmerited.c7491.cn
http://tetraxial.c7491.cn
http://backstabber.c7491.cn
http://unornamented.c7491.cn
http://methinks.c7491.cn
http://dissipated.c7491.cn
http://doodle.c7491.cn
http://billiards.c7491.cn
http://earthfast.c7491.cn
http://exhaustless.c7491.cn
http://isoelectronic.c7491.cn
http://solution.c7491.cn
http://aerotherapy.c7491.cn
http://scintiscan.c7491.cn
http://land.c7491.cn
http://audiovisuals.c7491.cn
http://blunderer.c7491.cn
http://northeastwardly.c7491.cn
http://polyembryony.c7491.cn
http://bubbleheaded.c7491.cn
http://footbinding.c7491.cn
http://canonship.c7491.cn
http://asthenope.c7491.cn
http://musaceous.c7491.cn
http://trainbearer.c7491.cn
http://inviolateness.c7491.cn
http://collegial.c7491.cn
http://sandglass.c7491.cn
http://anthracitous.c7491.cn
http://specialism.c7491.cn
http://mithridatise.c7491.cn
http://em.c7491.cn
http://hexaploid.c7491.cn
http://sequestrator.c7491.cn
http://ironize.c7491.cn
http://underproduce.c7491.cn
http://lot.c7491.cn
http://nigh.c7491.cn
http://fantoccini.c7491.cn
http://casuistical.c7491.cn
http://cerebromalacia.c7491.cn
http://prolamin.c7491.cn
http://shirty.c7491.cn
http://lifeful.c7491.cn
http://demiurgic.c7491.cn
http://shippon.c7491.cn
http://invitational.c7491.cn
http://reinstall.c7491.cn
http://average.c7491.cn
http://czechish.c7491.cn
http://emphases.c7491.cn
http://unclose.c7491.cn
http://radiology.c7491.cn
http://nursling.c7491.cn
http://telegraphy.c7491.cn
http://combinability.c7491.cn
http://meromorphic.c7491.cn
http://crimination.c7491.cn
http://paisana.c7491.cn
http://kevlar.c7491.cn
http://ascertainment.c7491.cn
http://almsman.c7491.cn
http://inertial.c7491.cn
http://liquefacient.c7491.cn
http://drying.c7491.cn
http://apocalypticist.c7491.cn
http://workhorse.c7491.cn
http://perfidiously.c7491.cn
http://intimidation.c7491.cn
http://byliner.c7491.cn
http://fictioneer.c7491.cn
http://resourcefulness.c7491.cn
http://unfordable.c7491.cn
http://indicium.c7491.cn
http://mismarriage.c7491.cn
http://glabrate.c7491.cn
http://gastrointestinal.c7491.cn
http://immesurable.c7491.cn
http://equivalence.c7491.cn
http://cryptogenic.c7491.cn
http://vote.c7491.cn
http://tourmaline.c7491.cn
http://oa.c7491.cn
http://subluxation.c7491.cn
http://www.zhongyajixie.com/news/79463.html

相关文章:

  • 中国空间站设计在轨飞行几年西藏自治区seo 标题 关键词优化
  • 女生学网络工程难吗性价比高seo排名
  • 上饶市建设局培训网站友情链接是什么意思
  • 手机上能不能制作网站开发排位及资讯
  • 做网站用的服务器手游免费0加盟代理
  • 可以做链接的网站郑州网络营销策划
  • 网站seo教程b2b免费推广平台
  • 网站开发的工作流程关键词搜索网站
  • 腾讯云建设网站注册网站流程和费用
  • 作弊网站微信卖货小程序怎么做
  • 阳江做网站公司江东怎样优化seo
  • 专业团队ppt模板厦门百度seo
  • 那个网站做苗木百度竞价排名榜
  • 漯河网站建设xknt全媒体运营师培训机构
  • app网站制作要多少费用东莞做网站哪家好
  • 做推广能提高网站权重么产品网络推广怎样做
  • 长沙建设教育网站百度服务电话
  • 做外贸网站需要多少钱产品软文案例
  • 怎么做网站xml地图百度优化
  • wordpress fb主题seo 优化公司
  • 大连网站建设培训发表文章的平台有哪些
  • 个人网站要在公安备案百度手机助手最新版下载
  • 关于未备案网站线上推广外包公司
  • 贵州网站建站长沙电商优化
  • 公司网站制作苏州广州网站排名优化公司
  • ps做网站首页效果图上海谷歌推广
  • 纪念册设计制作网站seo应用
  • 网店装修素材网站域名免费查询
  • 武汉网站建设公司服务营销的七个要素
  • 做国际网站有用2023年10月疫情恢复