目前,我们有以下 Dao 和模型类。
@Query("SELECT * FROM note")
public abstract LiveData<List<Note>> getAllNotes();
Run Code Online (Sandbox Code Playgroud)
@Entity(
tableName = "note"
)
public class Note {
@ColumnInfo(name = "title")
private String title;
// Can contain a huge String.
@ColumnInfo(name = "body")
private String body;
}
Run Code Online (Sandbox Code Playgroud)
但是,在某些情况下,我们只对加载感兴趣title。
一次加载所有Note带有大body字符串的s ,可能会导致OutOfMemoryException
有什么办法,我们可以创建另一个 POJO 如下?
public class SimpleNote {
private String title;
}
Run Code Online (Sandbox Code Playgroud)
然后,我们可以返回SimpleNotefrom 的列表NoteDao?
@Query("???")
public abstract LiveData<List<SimpleNote>> getAllSimpleNotes();
Run Code Online (Sandbox Code Playgroud) 在 Android Developer Console 中,我看到了这条消息
您的用户目前无法重新订阅,因为您的应用并未在所有有效 APK 中使用 Billing Library 2.0
但是,我很纳闷。目前,我们使用的是 Billing Library 1.2.2。
这就是我们决定是否向用户显示订阅按钮的方式。
List<Purchase> purchases = PurchasesResult.getPurchasesList(). 如果在 中找不到订阅的 SKU purchases,我们将显示订阅按钮。如果没有,我们将隐藏订阅按钮。purchases. 因此,他将看到订阅按钮,并允许再次订阅。purchases也没有!!!因此,他将看到订阅按钮,并允许再次订阅同一个 sku。如您所见,即使使用旧的 Billing Library 1.2.2,我们仍然允许用户再次重新订阅相同的 SKU,以重新订阅他之前取消的订阅。
如果是这样,为什么Billing Library 2.0 中有一个名为“重新订阅”(https://developer.android.com/google/play/billing/subs#resubscribe)的特殊功能?它与我们当前的 Billing Library 1.2.2 流程有何不同?
目前,我有一个 Room 实体,它看起来像
@Entity(
tableName = "holiday_country",
indices = {
@Index(value = "code", unique = true)
}
)
public class HolidayCountry
Run Code Online (Sandbox Code Playgroud)
这相当于有索引
CREATE UNIQUE INDEX `index_holiday_country_code` ON `holiday_country` (`code`)
Run Code Online (Sandbox Code Playgroud)
但是,我还需要有以下第二个索引,因为有时我会执行不区分大小写的查询。
CREATE UNIQUE INDEX `index_holiday_country_code_nocase` ON `holiday_country` (`code` COLLATE NOCASE)
Run Code Online (Sandbox Code Playgroud)
如果是这样,应该如何在 Room 实体中声明这样的索引?
通常需要有后台上下文来执行写操作。
// Set automaticallyMergesChangesFromParent to true
persistentContainer.viewContext.automaticallyMergesChangesFromParent = true
persistentContainer.performBackgroundTask { backgroundcontext in
// Do your work...
let object = backgroundContext.object(with: restaurant.objectID)
backgroundContext.delete(object)
// Save changes to persistent store, update viewContext and notify fetched results controller
try? backgroundContext.save()
}
Run Code Online (Sandbox Code Playgroud)
我对 很困惑automaticallyMergesChangesFromParent。
viewContext因为,我对(与主队列关联的托管对象上下文) 和进行了以下观察backgroundContext。
viewContext.parent为零backgroundContext.parent为零我的问题是
viewContext.automaticallyMergesChangesFromParent = true,以便viewContext接收来自 的更改backgroundContext,这是否意味着backgroundContext是 的父级viewContext?viewContext.automaticallyMergesChangesFromParent = true指的是哪位家长?我们一直在使用已弃用的Google 移动广告同意 SDK
它ConsentStatus让我们知道是否应该展示个性化广告或非个性化广告。
public enum ConsentStatus {
@SerializedName("unknown")
UNKNOWN,
@SerializedName("non_personalized")
NON_PERSONALIZED,
@SerializedName("personalized")
PERSONALIZED,
}
Run Code Online (Sandbox Code Playgroud)
Google 强烈建议我们迁移User Messaging Platform SDK
但是,我们注意到没有办法知道我们是否可以展示个性化广告或非个性化广告。新ConsentStatus外观如下。
public @interface ConsentStatus {
int UNKNOWN = 0;
int NOT_REQUIRED = 1;
int REQUIRED = 2;
int OBTAINED = 3;
}
Run Code Online (Sandbox Code Playgroud)
请问,如果我们应用User Messaging Platform SDK,我们应该使用什么样的逻辑来确定是否允许展示个性化广告或非个性化广告?
目前,我使用独立的GUI工具DbSchema来设计我的数据库模式.
我喜欢它,因为它可以
替代文字http://sites.google.com/site/yanchengcheok/Home/PostgreSQL.png
但是,我意识到DbSchema生成的SQL代码没有被PostgreSQL识别.
CREATE TABLE lot (
lot_id serial AUTO_INCREMENT NOT NULL,
operator_name text,
machine_name text,
timestamp timestamp,
CONSTRAINT pk_lot_id PRIMARY KEY(lot_id))
CREATE TABLE unit (
unit_id serial AUTO_INCREMENT NOT NULL,
fk_lot_id serial NOT NULL,
CONSTRAINT pk_unit_id PRIMARY KEY(unit_id),
CONSTRAINT fk_lot_id FOREIGN KEY( fk_lot_id ) REFERENCES lot ( lot_id ))
Run Code Online (Sandbox Code Playgroud)
我收到错误:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "AUTO_INCREMENT"
Run Code Online (Sandbox Code Playgroud)
是否有任何替代"正常工作"免费工具,我可以使用PostgreSQL,提供以上2个功能?
下面的代码适用于Visual C++ 2008.但是,当涉及到Visual C++ 6时,我收到以下错误.我可以知道为什么,以及如何解决错误,但仍然使析构函数保持私有状态.
class X
{
public:
static X& instance()
{
static X database;
return database;
}
private:
X() {} // Private constructor
~X() {} // Private destructor
X(const X&); // Prevent copy-construction
X& operator=(const X&); // Prevent assignment
};
int main()
{
X::instance();
}
Run Code Online (Sandbox Code Playgroud)
C:\ Projects\ttt6\main.cpp(178):错误C2248:'X :: ~X':无法访问类'X'中声明的私有成员C:\ Projects\ttt6\main.cpp(175):请参阅'X ::〜X'的声明
我曾经混淆了一段时间:
在阅读了所有贡献者的评论后,再加上:
看一篇旧文章(2001年):http://www.hastingsresearch.com/net/04-unicode-limitations.shtml,讨论unicode:
是一个16位字符定义,允许理论总数超过65,000个字符.但是,世界上完整的字符集总计超过170,000个字符.
并查看当前的"现代"文章:http://en.wikipedia.org/wiki/Unicode
最常用的编码是UTF-8(对于所有ASCII字符使用1个字节,与标准ASCII编码使用相同的代码值,对于其他字符使用最多4个字节),现在已过时的UCS-2(它使用2个字节表示所有字符,但不包括Unicode标准中的每个字符),以及UTF-16(扩展UCS-2,使用4个字节编码UCS-2中缺少的字符).
似乎在VC2008的编译选项中,字符集下的"Unicode"选项实际上意味着"在UCS-2中编码的Unicode"(或UTF-16?我不确定)
我尝试通过在VC2008下运行以下代码来验证这一点
#include <iostream>
int main()
{
// Use unicode encoded in UCS-2?
std::cout << sizeof(L"???") << std::endl;
// Use unicode encoded in UCS-2?
std::cout << sizeof(L"abc") << std::endl;
getchar();
// Compiled using options Character Set : Use Unicode Character Set.
// print out 8, 8
// Compiled using options Character Set : Multi-byte Character Set.
// print out 8, 8
}
Run Code Online (Sandbox Code Playgroud)
似乎在使用Unicode字符集选项进行编译时,结果与我的假设相符.
但是多字节字符集怎么样?多字节字符集在当前"现代"世界中意味着什么?:)
Postgresql:使用每个具有 1 个模式的多个数据库更好,还是使用具有多个模式的 1 个数据库更好?
我是 PostgreSQL 模式概念的新手。
对于上述场景,我想知道
谁能给我提供一个真实的案例场景,单数据库、多模式将非常有用,并且无法通过传统的单数据库、单模式来解决。
我正在阅读教程
http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ
它指出
请记住 - 您绝不能依赖于cookie标头中发送到服务器的sessionID; 只查看您的GWT应用程序在消息的有效负载中明确发送到您的服务器的sessionID.
用于防止http://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics
有了这个神话,是否足以防止上述攻击?
android ×4
android-room ×2
c++ ×2
postgresql ×2
sqlite ×2
admob ×1
core-data ×1
database ×1
gwt ×1
ios ×1
security ×1
swift ×1
unicode ×1
visual-c++ ×1