SQLite JSON1 扩展有一些非常巧妙的功能。但是,我无法弄清楚如何更新或插入单个 JSON 属性值。
这是一个例子
CREATE TABLE keywords
(
id INTEGER PRIMARY KEY,
lang INTEGER NOT NULL,
kwd TEXT NOT NULL,
locs TEXT NOT NULL DEFAULT '{}'
);
CREATE INDEX kwd ON keywords(lang,kwd);
Run Code Online (Sandbox Code Playgroud)
我使用此表来存储关键字搜索并记录对象中启动搜索的位置locs。此数据库表中的示例条目如下所示
id:1,lang:1,kwd:'stackoverflow',locs:'{"1":1,"2":1,"5":1}'
Run Code Online (Sandbox Code Playgroud)
这里的位置对象属性是存储在其他地方的实际位置的索引。
现在想象一下以下场景
stackoverflow从位置索引“2”开始搜索。在这种情况下,我只想增加该索引处的值,以便在操作之后相应的行读取
id:1,lang:1,kwd:'stackoverflow',locs:'{"1":1,"2": 2 ,"5":1}'
从先前未知的位置索引“7”开始搜索stackoverflow,在这种情况下,更新后的相应行必须读取
id:1,lang:1,kwd:'stackoverflow',locs:'{"1":1,"2":1,"5":1, "7":1 }'
我不清楚这实际上是否可以做到。我尝试了一些类似的事情
UPDATE keywords json_set(locs,'$.2','2') WHERE kwd = 'stackoverflow';
Run Code Online (Sandbox Code Playgroud)
这给出了错误消息error near json_set。我非常感谢任何能够告诉我如何/是否应该/可以完成此操作的人。
今天早上我遇到了优秀的jstree jQuery UI插件.总之 - 太棒了!它易于使用,易于打造风格,并在盒子上做到了.我还没有想到的一件事是 - 在我的应用程序中,我想确保在任何给定时间只扩展一个节点.即,当用户单击+按钮并展开节点时,任何先前展开的节点都应该静默折叠.我需要做的部分是为了防止容器div为一个相当冗长的树视图在溢出时创建一个丑陋的滚动条,并避免用户"选择重载".
我想有一些方法可以做到这一点但是好的但相当简洁的jstree文档并没有帮助我找到正确的方法来做到这一点.我非常感谢任何帮助.
我有一个简单的函数来测试字符串是否是整数
func testInt(str string, m map[bool]) int {
_,e := strconv.ParseInt(str, 0, 64);
return m[nil == e] * 7;
}
Run Code Online (Sandbox Code Playgroud)
传递的地图包含的地方m[true] = 1,m[false] = 0.但是,当我试图运行这个Go抱怨时
1: syntax error: unexpected )
Run Code Online (Sandbox Code Playgroud)
我不能以这种方式传递地图作为参数,否则我这样做完全错了.无论如何,我非常感谢一些帮助
我看到的几乎所有关于 Android 通知的示例代码似乎都使用 NotificationCompat。我已经使用 Notification.Builder 编写了自己的代码。我不清楚使用 NotificationCompat.Builder 可能有什么好处(如果有的话)。我希望这里有人能够解释这些差异。
我正在努力使我的Android应用程序成为后Android M世界的好公民,这对设备进入打瞌睡时应用程序可以/不能做什么施加了严格限制.我对所涉问题的理解仍然相当零碎,所以我希望这里有人可以填补空白.
打瞌睡的持续时间
我在这里的实证研究结果
这些是官方的Android打瞌睡时期还是仅仅是一个经验观察.
以上所有在Android N设备上.
在打盹模式下测试应用程序
adb shell dumpsys battery unplugadb shell dumpsys battery reset 进入/退出打盹
屏幕关闭且设备未移动时发生
据推测,这会使用手机中的运动传感器,因此静静地坐在非常平稳行驶的火车上的电话仍会进入打瞌睡状态?
如果我拿起一个打瞌睡的电话并开始随意走动而没有与之交互,它会自动退出打瞌睡吗?
假设我的应用程序在其主机设备进入打盹时不在前台.然后我再次开始使用该设备,但没有访问该应用程序.它会自动重新开始"工作",即
它的广播接收器将成为功能?
它的处理程序将开始工作?
它的预定工作setRequiresDeviceIdle(true)将停止被调用?
打盹和作业调度的各种模式
根据我的理解,有两种打盹模式LIGHT&DEEP.它们都有子模式
LIGHT:活动,空闲,空闲_维护,覆盖.我不明白各种模式的作用.从亚行我发布step light了屏幕并看到了返回值ACTIVE.随着屏幕关闭step light返回IDLE.
DEEP:活动,IDLE_PENDING,SENSING,LOCATING,IDLE,IDLE_MAINTENANCE,屏幕也会返回,ACTIVE但屏幕关闭则返回IDLE_PENDING.那么当其他子模式完全正确时,IDLE,SENSING ......会发生吗?
我认为IDLE_MAINTENANCE当设备从DOZE进入维护窗口并尝试从各种应用程序运行挂起的作业请求时会发生这种情况.
但是,如果是这样的话,当我在我的应用程序中的计划作业运行时检查它们时,为什么会这样,PowerManager.isDeviceIdleMode()并且PowerManger.isPowerSaveMode() 总是返回false …
我是第一次测试Proguard的混淆功能。为此,我做了以下工作
" This is top secret"发出的问候语中对其进行修改cordova create ...platforms\android\project.properties通过附加修改文件proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-custom.txtcordova build --release我proguard-custom.txt几乎没有处理过文件。其内容如下所示
-keepclassmembers class * {@android.webkit.JavascriptInterface <methods>;}
#AddedThis
-adaptresourcefilenames **.json,**.gif,**.jpg
-adaptresourcefilecontents **.json,META-INF/MANIFEST.MF
-keep class com.android.vending.licensing.ILicensingService
-keepattributes *Annotation*
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepattributes InnerClasses
-keep class **.R
-keep class **.R$* {<fields>;}
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-keep class org.apache.cordova.** { *; }
-keep public …Run Code Online (Sandbox Code Playgroud) 在我创建的混合 Android/Cordova 游戏中,我让用户以表情符号 + 字母数字的形式提供标识符 - 即 0..9,A..Z,a..z - 名称。例如
??堆栈溢出
服务器端存储用户标识符时,Emoji 和 Name 部分分开存储,仅 Name 部分需要唯一。游戏不时显示“联赛表”,以便用户可以查看与其他玩家相比他们的表现如何。为此,服务器发回由表情符号、名称和分数组成的十个“高分”值的序列。
然后在一个包含三列的表格中向用户呈现 - 表情符号、名称和分数各一列。这就是我遇到一个小问题的地方。最初我很天真地认为我可以通过简单地查看handle.codePointAt(0). 当我意识到表情符号实际上可以是一个或多个 16 位 Unicode 值的序列时,我将代码更改如下
第 1 部分:剖析用户提供的“句柄”
var i,username,
codepoints = [],
handle = "??StackOverflow",
len = handle,length;
while ((i < len) && (255 < handle.codePointAt(i)))
{codepoints.push(handle.codePointAt(i));i += 2;}
username = handle.substring(codepoints.length + 1);
Run Code Online (Sandbox Code Playgroud)
在这一点上,我有“解剖”句柄
codepoints = [128587, 8205, 65039];
username = 'Stackoverflow;
Run Code Online (Sandbox Code Playgroud)
对上述i += 2和使用的解释说明handle.length。 这篇文章建议
由于在bzcompress中实现,因此在PHP中创建bzip2归档数据非常容易.在我目前的应用程序中,我完全不能简单地将输入文件读入字符串然后调用bzcompress或bzwrite.PHP文档没有说清楚对bzwrite相对少量数据的连续调用是否会产生与一次压缩整个文件时相同的结果.我的意思是一些东西
$data = file_get_contents('/path/to/bigfile');
$cdata = bzcompress($data);
Run Code Online (Sandbox Code Playgroud)
我使用下面显示的例程尝试了零碎的bzcompression
function makeBZFile($infile,$outfile)
{
$fp = fopen($infile,'r');
$bz = bzopen($outfile,'w');
while (!feof($fp))
{
$bytes = fread($fp,10240);
bzwrite($bz,$bytes);
}
bzclose($bz);
fclose($fp);
}
function unmakeBZFile($infile,$outfile)
{
$bz = bzopen($infile,'r');
while (!feof($bz))
{
$str = bzread($bz,10240);
file_put_contents($outfile,$str,FILE_APPEND);
}
}
set_time_limit(1200);
makeBZFile('/tmp/test.rnd','/tmp/test.bz');
unmakeBZFile('/tmp/test.bz','/tmp/btest.rnd');
Run Code Online (Sandbox Code Playgroud)
为了测试这段代码,我做了两件事
makeBZFile和unmakeBZFile压缩然后解压缩SQLite数据库 - 这是我最终需要做的.dd if=/dev/urandom of='/tmp.test.rnd bs=50M count=1在这两种情况下,我都进行了一次diff original.file decompressed.file,发现两者是相同的.
一切都很好,但我不清楚为什么这是有效的.PHP文档声明bzread(bzpointer,length)读取UNCOMPRESSED数据的最大 …
我正在从 MariaDB 切换到 Postgres 的过程中,遇到了一个小问题。有时我需要在进行 INSERT 之前建立下一个 AUTO_INCRMENT 值。这是因为 INSERT 对其他一些表有影响,如果完成后 INSERT 本身的修复,这些表将变得非常混乱。在 mySQL/MariaDB 中这很容易。我只是做了
"SELECT AUTO_INCREMENT
FROM information_schema.tables
WHERE table_name = 'users'
AND table_schema = DATABASE( ) ;";
Run Code Online (Sandbox Code Playgroud)
并在进行实际插入之前使用返回的值预先更正其他表。我知道 pgSQL 可以与RETURNINGSELECT、INSERT 和 UPDATE 语句一起使用。然而,这需要对其他表进行插入后更正,这反过来又会破坏已经测试并证明有效的代码。我想有一种方法可以找到下一个 AUTO_INCRMENT 但我一直找不到它。除其他外,我尝试过nextval('users_id_seq')但没有做任何有用的事情。
为了将我的原始 MariaDB 模式移植到 Postgres,我使用 MariaDB 版本编辑了 Adminer 发出的 SQL,以确保它可以与 Postgres 一起使用。这主要涉及将 INT(11) 更改为 INTEGER,将 TINYINT(3) 更改为 SMALL INT,将 VARCHAR 更改为 CHARACTER VARYING 等。通过自动增量列,我读了一下并得出结论,我需要使用 SERIAL。所以我提供给 Postgres 的典型 SQL 是这样的
CREATE TABLE "users"
(
"id" SERIAL NOT NULL,
"bid" INTEGER NOT …Run Code Online (Sandbox Code Playgroud) 当我准备发布 Android/Cordova 应用程序时,我刚刚完成了第一个发布版本cordova build android --release。构建发生后,Cordova 会按platforms/android/app/build/outputs/apk/release预期在文件夹中发布 apk。
然而,当它这样做时,它会发出一系列“错误”消息,类似于
drawable-land-ldpi 中的可绘制“屏幕”在基本可绘制文件夹或可绘制密度dpi 文件夹中没有声明;当在与此限定符不匹配的配置中查询可绘制对象时,这可能会导致崩溃 [MissingDefaultResource]
再往下,它以以下形式提供了一些令人放心的限定:
“MissingDefaultResource”类型问题的说明:如果资源仅在带有 -land 或 -en 等限定符的文件夹中定义,并且基本文件夹中没有默认声明(布局或值等),则应用程序将崩溃在设备上访问资源,该设备的配置缺少给定的限定符。
作为一种特殊情况,不必在基本文件夹中指定可绘制对象;如果密度文件夹(例如drawable-mdpi)中有匹配的图像,则将使用并缩放该图像。但请注意,如果您仅在诸如drawable-en-hdpi之类的文件夹中指定可绘制对象,则应用程序将在非英语语言环境中崩溃。
我在文件夹中提供我的图像资源app/src/main/res/drawable-land-???dpi。我限制我的应用程序仅在横向模式下工作,并且我没有任何app/src/main/res/drawable-port-???dpi文件夹。默认/app/src/main/res/drawable文件夹存在但为空。
我这样做是为了避免使用大量从未使用过的图形来拖累应用程序。我不会,也不打算提供特定于地区/地区的资源。我的应用程序中使用的 UI 字符串的本地化是按照我自己的方式在内部处理的。
我的问题 - 考虑到上述情况,我是否可能会面临“崩溃”的风险,因为在发出上述保证之前,错误消息最初会宣布?
android ×3
cordova ×3
android-doze ×1
apk ×1
bzip2 ×1
emoji ×1
go ×1
java ×1
javascript ×1
json ×1
jstree ×1
large-files ×1
obfuscation ×1
php ×1
postgresql ×1
release ×1
sql-update ×1
sqlite ×1
sqlite-json1 ×1
utf-16 ×1